<?php
header("Content-Type: text/html;charset=utf-8");

class cls_Producto_Stock {

	protected $db_mensaje = "";
	protected $db_nombre_tabla = "vista_producto_stock";
	protected $db_nombres_columnas = "*";
	protected $db_filtro = "1";
	protected $db_agrupar = "";
	protected $db_orden_columna = "producto_nombre";
	protected $db_orden_direccion = "ASC";
	protected $db_cantidad = 0;
	protected $db_filtro_datos = array();
	protected $db_filas = array();
	
	public function __construct(){
		$this->db_nombres_columnas = "tienda_id, tienda_nombre, tienda_imagen, tienda_ubicacion, tienda_telefono, tienda_observaciones, producto_id, producto_nombre, producto_nombre_alternativo, producto_imagen, producto_codigo, producto_codigo_barras, producto_codigo_almacen, categoria_id, unidad_medida_id, fabricante, modelo, serie, stock_minimo, estado, almacen_tienda_id, almacen_general_id, movimiento_producto_id, moneda_codigo, igv_porcentaje, precio_compra, precio_venta, unidades, ubicacion, tipo_movimiento, moneda_nombre, moneda_simbolo, moneda_cambio, fecha_venta";
		$this->db_orden_columna = "producto_nombre";
	}

	static public function Buscar($buscar="", $ordendireccion="ASC", $ordencolumna="producto_nombre", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Producto_Stock();
		$l_buscar = explode(" ", $buscar);
		$current->db_filtro = "";
		for ($idx=0; $idx<count($l_buscar); $idx++){
			array_push($current->db_filtro_datos, "%".$l_buscar[$idx]."%" );
			$current->db_filtro .= "CONCAT(producto_codigo, ' ', producto_nombre, ' ', producto_nombre_alternativo) LIKE ? AND ";
		}
		if (strlen($current->db_filtro) == 0){
			$current->db_filtro = "1";
		}
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		$current->db_agrupar = $agrupar;
		$current->db_cantidad = $conn->contar_filas( $current->db_nombre_tabla, $current->db_filtro, $current->db_filtro_datos, $current->db_agrupar );
		$current->db_mensaje = $conn->getMensaje();
		return $current;
	}
	static public function TiendaBajoMinimo($tienda, $buscar="", $ordendireccion="ASC", $ordencolumna="producto_nombre", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Producto_Stock();
		$l_buscar = explode(" ", $buscar);
		$current->db_filtro = "";
		for ($idx=0; $idx<count($l_buscar); $idx++){
			array_push($current->db_filtro_datos, "%".$l_buscar[$idx]."%" );
			$current->db_filtro .= "CONCAT(producto_codigo, ' ', producto_nombre, ' ', producto_nombre_alternativo) LIKE ? AND ";
		}
		array_push($current->db_filtro_datos, $tienda );
		$current->db_filtro .= "tienda_id = ? AND unidades < stock_minimo";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		$current->db_agrupar = $agrupar;
		$current->db_cantidad = $conn->contar_filas( $current->db_nombre_tabla, $current->db_filtro, $current->db_filtro_datos, $current->db_agrupar );
		$current->db_mensaje = $conn->getMensaje();
		return $current;
	}
	static public function TiendaBajoMinimoFecha($tienda, $buscar, $fecha, $filtro_rango, $ordendireccion="ASC", $ordencolumna="producto_nombre", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Producto_Stock();
		$l_buscar = explode(" ", $buscar);
		$current->db_filtro = "";
		for ($idx=0; $idx<count($l_buscar); $idx++){
			array_push($current->db_filtro_datos, "%".$l_buscar[$idx]."%" );
			$current->db_filtro .= "CONCAT(producto_codigo, ' ', producto_nombre, ' ', producto_nombre_alternativo) LIKE ? AND ";
		}
		array_push($current->db_filtro_datos, $tienda );
		array_push($current->db_filtro_datos, $fecha );
		array_push($current->db_filtro_datos, $filtro_rango );
		array_push($current->db_filtro_datos, $fecha );
		array_push($current->db_filtro_datos, $filtro_rango );
		array_push($current->db_filtro_datos, $filtro_rango );
		$current->db_filtro .= "tienda_id = ? AND ((DATE(fecha_venta) = DATE(?) AND ? LIKE 'dia') || (DATE(fecha_venta) >= DATE(?) AND ? LIKE 'rango') || (? LIKE 'todos')) AND unidades < stock_minimo";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		$current->db_agrupar = $agrupar;
		$current->db_cantidad = $conn->contar_filas( $current->db_nombre_tabla, $current->db_filtro, $current->db_filtro_datos, $current->db_agrupar );
		$current->db_mensaje = $conn->getMensaje();
		return $current;
	}
	static public function TiendaSobreMinimo($tienda, $buscar="", $ordendireccion="ASC", $ordencolumna="producto_nombre", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Producto_Stock();
		$l_buscar = explode(" ", $buscar);
		$current->db_filtro = "";
		for ($idx=0; $idx<count($l_buscar); $idx++){
			array_push($current->db_filtro_datos, "%".$l_buscar[$idx]."%" );
			$current->db_filtro .= "CONCAT(producto_codigo, ' ', producto_nombre, ' ', producto_nombre_alternativo) LIKE ? AND ";
		}
		array_push($current->db_filtro_datos, $tienda );
		$current->db_filtro .= "tienda_id = ? AND unidades > stock_minimo";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		$current->db_agrupar = $agrupar;
		$current->db_cantidad = $conn->contar_filas( $current->db_nombre_tabla, $current->db_filtro, $current->db_filtro_datos, $current->db_agrupar );
		$current->db_mensaje = $conn->getMensaje();
		return $current;
	}
	public function cargar_datos( $offset, $cantidad ){
		$conn = new cls_Conexion();
		$this->db_filas = $conn->listar_filas( $this->db_nombre_tabla, $this->db_nombres_columnas, $this->db_orden_columna, $this->db_orden_direccion, $this->db_filtro, $this->db_filtro_datos, $offset, $cantidad, $this->db_agrupar );
		$this->db_mensaje = $conn->GetMensaje();
	}
	public function get_cantidad_cargados(){
		return count($this->db_filas);
	}
	public function get_cantidad(){
		return $this->db_cantidad;
	}
	public function get_tienda_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["tienda_id"];
			return $val;
		}
		return 0;
	}
	public function get_tienda_nombre($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["tienda_nombre"];
			return $val;
		}
		return "";
	}
	public function get_tienda_imagen($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["tienda_imagen"];
			return $val;
		}
		return "";
	}
	public function get_tienda_ubicacion($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["tienda_ubicacion"];
			return $val;
		}
		return false;
	}
	public function get_tienda_telefono($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["tienda_telefono"];
			return $val;
		}
		return false;
	}
	public function get_tienda_observaciones($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["tienda_observaciones"];
			return $val;
		}
		return false;
	}
	public function get_producto_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["producto_id"];
			return $val;
		}
		return false;
	}
	public function get_producto_nombre($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["producto_nombre"];
			return $val;
		}
		return false;
	}
	public function get_producto_nombre_alternativo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["producto_nombre_alternativo"];
			return $val;
		}
		return false;
	}
	public function get_producto_imagen($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["producto_imagen"];
			return $val;
		}
		return false;
	}
	public function get_producto_codigo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["producto_codigo"];
			return $val;
		}
		return false;
	}
	public function get_producto_codigo_barras($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["producto_codigo_barras"];
			return $val;
		}
		return false;
	}
	public function get_producto_codigo_almacen($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["producto_codigo_almacen"];
			return $val;
		}
		return false;
	}
	public function get_categoria_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["categoria_id"];
			return $val;
		}
		return false;
	}
	public function get_unidad_medida_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["unidad_medida_id"];
			return $val;
		}
		return false;
	}
	public function get_producto_fabricante($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["fabricante"];
			return $val;
		}
		return false;
	}
	public function get_producto_modelo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["modelo"];
			return $val;
		}
		return false;
	}
	public function get_producto_serie($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["serie"];
			return $val;
		}
		return false;
	}
	public function get_producto_stock_minimo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["stock_minimo"];
			return $val;
		}
		return false;
	}
	public function get_producto_estado($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["estado"];
			return $val;
		}
		return false;
	}
	public function get_almacen_tienda_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["almacen_tienda_id"];
			return $val;
		}
		return false;
	}
	public function get_almacen_general_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["almacen_general_id"];
			return $val;
		}
		return false;
	}
	public function get_movimiento_producto_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["movimiento_producto_id"];
			return $val;
		}
		return false;
	}
	public function get_moneda_codigo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["moneda_codigo"];
			return $val;
		}
		return false;
	}
	public function get_igv_porcentaje($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["igv_porcentaje"];
			return $val;
		}
		return false;
	}
	public function get_precio_compra($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["precio_compra"];
			return $val;
		}
		return false;
	}
	public function get_precio_venta($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["precio_venta"];
			return $val;
		}
		return false;
	}
	public function get_unidades($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["unidades"];
			return $val;
		}
		return false;
	}
	public function get_ubicacion($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["ubicacion"];
			return $val;
		}
		return false;
	}
	public function get_tipo_movimiento($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["tipo_movimiento"];
			return $val;
		}
		return false;
	}
	public function get_moneda_nombre($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["moneda_nombre"];
			return $val;
		}
		return false;
	}
	public function get_moneda_simbolo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["moneda_simbolo"];
			return $val;
		}
		return false;
	}
	public function get_moneda_cambio($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["moneda_cambio"];
			return $val;
		}
		return false;
	}
	public function get_fecha_venta($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["fecha_venta"];
			return $val;
		}
		return false;
	}
	
};
?>		
