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

class cls_Proforma_Producto {

	private $db_nombretabla = "proforma_producto";
	private $db_nombrevista = "vista_proforma_producto";
	private $db_filas = "*";
	private $proforma_producto_id = 0;
	private $proforma_id = 0;
	private $moneda_codigo = "";
	private $moneda_simbolo = "";
	private $moneda_cambio = 1.0;
	private $igv_porcentaje = 0.00;
	private $almacen_id = 0;
	private $almacen_tienda_id = 0;
	private $producto_id = 0;
	private $unidades = 0;
	private $precio_almacen = 0.00;
	private $precio_venta = 0.00;
	private $precio_subtotal = 0.00;
	private $stock = 0;
	private $comprobante = "";
	private $usuario_modificacion = 0;
	private $fecha_creacion = "";
	private $fecha_modificacion = "";
	private $activo = true;
	
	public function __construct(){
		$this->db_filas = "proforma_producto_id, proforma_id, tienda_id, tienda_nombre, comprobante, fecha, hora, moneda_codigo, moneda_simbolo, moneda_cambio, igv_porcentaje, almacen_id, almacen_tienda_id, producto_id, nombre, imagen, codigo, codigo_barras, codigo_almacen, fabricante, modelo, serie, unidades, precio_almacen, precio_venta, precio_subtotal, stock, usuario_modificacion, fecha_creacion, fecha_modificacion, activo";
	}

	static public function Indice($codigo){
		$current = new cls_Proforma_Producto();
		$conn = new cls_Conexion();
		$filtro = "proforma_producto_id = ?";
		$values = array();
		array_push($values, $codigo );
		$lista = $conn->buscar_datos($current->db_nombrevista, $current->db_filas, $filtro, $values, "");
		$current->db_mensaje = $conn->getMensaje();
		for ($indice=0; $indice<count($lista); $indice++){
			$current->proforma_producto_id = $lista[$indice]["proforma_producto_id"];
			$current->proforma_id = $lista[$indice]["proforma_id"];
			$current->moneda_codigo = $lista[$indice]["moneda_codigo"];
			$current->moneda_simbolo = $lista[$indice]["moneda_simbolo"];
			$current->moneda_cambio = $lista[$indice]["moneda_cambio"];
			$current->igv_porcentaje = $lista[$indice]["igv_porcentaje"];
			$current->almacen_id = $lista[$indice]["almacen_id"];
			$current->almacen_tienda_id = $lista[$indice]["almacen_tienda_id"];
			$current->producto_id = $lista[$indice]["producto_id"];
			$current->unidades = $lista[$indice]["unidades"];
			$current->precio_almacen = $lista[$indice]["precio_almacen"];
			$current->precio_venta = $lista[$indice]["precio_venta"];
			$current->precio_subtotal = $lista[$indice]["precio_subtotal"];
			$current->stock = $lista[$indice]["stock"];
			$current->comprobante = $lista[$indice]["comprobante"];
			$current->usuario_modificacion = $lista[$indice]["usuario_modificacion"];
			$current->fecha_creacion = $lista[$indice]["fecha_creacion"];
			$current->fecha_modificacion = $lista[$indice]["fecha_modificacion"];
			$current->activo = $lista[$indice]["activo"];
		}
		return $current;
	}

	public function get_proforma_producto_id() { return $this->proforma_producto_id; }
	public function get_proforma_id() { return $this->proforma_id; }
	public function get_moneda_codigo() { return $this->moneda_codigo; }
	public function get_moneda_simbolo() { return $this->moneda_simbolo; }
	public function get_moneda_cambio() { return $this->moneda_cambio; }
	public function get_igv_porcentaje() { return $this->igv_porcentaje; }
	public function get_almacen_id() { return $this->almacen_id; }
	public function get_almacen_tienda_id() { return $this->almacen_tienda_id; }
	public function get_producto_id() { return $this->producto_id; }
	public function get_unidades() { return $this->unidades; }
	public function get_precio_almacen() { return $this->precio_almacen; }
	public function get_precio_venta() { return $this->precio_venta; }
	public function get_precio_subtotal() { return $this->precio_subtotal; }
	public function get_comprobante() { return $this->comprobante; }
	public function get_stock() { return $this->stock; }
	public function get_usuario_modificacion(){  return $this->usuario_modificacion; }
	public function get_fecha_creacion(){  return $this->fecha_creacion; }
	public function get_fecha_modificacion(){  return $this->fecha_modificacion; }
	public function get_activo() { return $this->activo; }
	
	public function set_proforma_producto_id($proforma_producto_id){ $this->proforma_producto_id = $proforma_producto_id; }
	public function set_proforma_id($proforma_id){ $this->proforma_id = $proforma_id; }
	public function set_moneda_codigo($moneda_codigo){ $this->moneda_codigo = $moneda_codigo; }
	public function set_igv_porcentaje($igv_porcentaje){ $this->igv_porcentaje = $igv_porcentaje; }
	public function set_almacen_id($almacen_id){ $this->almacen_id = $almacen_id; }
	public function set_almacen_tienda_id($almacen_tienda_id){ $this->almacen_tienda_id = $almacen_tienda_id; }
	public function set_producto_id($producto_id){ $this->producto_id = $producto_id; }
	public function set_unidades($unidades){ $this->unidades = $unidades; }
	public function set_precio_almacen($precio_almacen){ $this->precio_almacen = $precio_almacen; }
	public function set_precio_venta($precio_venta){ $this->precio_venta = $precio_venta; }
	public function set_precio_subtotal($precio_subtotal){ $this->precio_subtotal = $precio_subtotal; }
	public function set_usuario_modificacion($usuario_modificacion){ $this->usuario_modificacion = $usuario_modificacion; }
	public function set_fecha_creacion($fecha_creacion){ $this->fecha_creacion = $fecha_creacion; }
	public function set_fecha_modificacion($fecha_modificacion){ $this->fecha_modificacion = $fecha_modificacion; }
	public function set_activo($activo){ $this->activo = $activo; }
	
	public function registrar( $usuario_editor ){
		$conn = new cls_Conexion();
		$respuesta = false;
		$values = array();
		if ( $this->proforma_producto_id == 0 ){ // REGISTER
			array_push($values, $this->proforma_id);
			array_push($values, $this->moneda_codigo);
			array_push($values, $this->igv_porcentaje);
			array_push($values, $this->almacen_id);
			array_push($values, $this->almacen_tienda_id);
			array_push($values, $this->producto_id);
			array_push($values, $this->unidades);
			array_push($values, $this->precio_almacen);
			array_push($values, $this->precio_venta);
			array_push($values, $this->precio_subtotal);
			array_push($values, $usuario_editor);
			$respuesta = $conn->nuevo_registro($this->db_nombretabla, $values);
			$this->db_mensaje = $conn->GetMensaje();
			if ( $respuesta ){
				$this->proforma_producto_id = $conn->getlastId();
			}
		} else { // UPDATE
			array_push($values, $this->proforma_id);
			array_push($values, $this->moneda_codigo);
			array_push($values, $this->igv_porcentaje);
			array_push($values, $this->almacen_id);
			array_push($values, $this->almacen_tienda_id);
			array_push($values, $this->producto_id);
			array_push($values, $this->unidades);
			array_push($values, $this->precio_almacen);
			array_push($values, $this->precio_venta);
			array_push($values, $this->precio_subtotal);
			array_push($values, $usuario_editor);
			array_push($values, $this->proforma_producto_id);
			$respuesta = $conn->editar_registro($this->db_nombretabla, $values);
			$this->db_mensaje = $conn->GetMensaje();
		}
		return $respuesta;
	}
	
	public function importar( $usuario_editor ){
		$conn = new cls_Conexion();
		$respuesta = false;
		$values = array();
			array_push($values, $this->proforma_producto_id);
			array_push($values, $this->proforma_id);
			array_push($values, $this->moneda_codigo);
			array_push($values, $this->igv_porcentaje);
			array_push($values, $this->almacen_id);
			array_push($values, $this->almacen_tienda_id);
			array_push($values, $this->producto_id);
			array_push($values, $this->unidades);
			array_push($values, $this->precio_almacen);
			array_push($values, $this->precio_venta);
			array_push($values, $this->precio_subtotal);
			array_push($values, $this->usuario_modificacion);
			array_push($values, $this->fecha_creacion);
			array_push($values, $this->fecha_modificacion);
			array_push($values, $this->activo);
			
			array_push($values, $this->proforma_id);
			array_push($values, $this->moneda_codigo);
			array_push($values, $this->igv_porcentaje);
			array_push($values, $this->almacen_id);
			array_push($values, $this->almacen_tienda_id);
			array_push($values, $this->producto_id);
			array_push($values, $this->unidades);
			array_push($values, $this->precio_almacen);
			array_push($values, $this->precio_venta);
			array_push($values, $this->precio_subtotal);
			array_push($values, $this->usuario_modificacion);
			array_push($values, $this->fecha_creacion);
			array_push($values, $this->fecha_modificacion);
			array_push($values, $this->activo);
		$respuesta = $conn->importar_registro($this->db_nombretabla, $values);
		$this->db_mensaje = $conn->GetMensaje();
		if ( $respuesta ){
			$this->proforma_producto_id = $conn->getlastId();
		};
		return $respuesta;
	}

	public function eliminar( $usuario_editor ){
		$conn = new cls_Conexion();
		$respuesta = false;
		$values = array();
		if ($this->proforma_producto_id > 0){ // DELETE
			array_push($values, $usuario_editor);
			array_push($values, $this->proforma_producto_id );
			$respuesta = $conn->eliminar_registro($this->db_nombretabla, $values);
			$this->db_mensaje = $conn->GetMensaje();
		} else {
			$this->db_mensaje = "No se puede realizar este proceso";
		}
		return $respuesta;
	}
}

class cls_Group_Proforma_Producto {

	protected $db_mensaje = "";
	protected $db_nombre_tabla = "vista_proforma_producto";
	protected $db_nombres_columnas = "*";
	protected $db_filtro = "1";
	protected $db_agrupar = "";
	protected $db_orden_columna = "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 = "proforma_producto_id, proforma_id, tienda_id, tienda_nombre, comprobante, fecha, hora, moneda_codigo, moneda_simbolo, moneda_cambio, igv_porcentaje, almacen_id, almacen_tienda_id, producto_id, nombre, imagen, codigo, codigo_barras, codigo_almacen, fabricante, modelo, serie, unidades, precio_almacen, precio_venta, precio_subtotal, stock, usuario_modificacion, fecha_creacion, fecha_modificacion, activo";
		$this->db_orden_columna = "nombre";
	}

	static public function Export($fecha_min, $fecha_max, $ordendireccion="ASC", $ordencolumna="proforma_producto_id", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Proforma_Producto();
		$current->db_filtro = "DATE(fecha_creacion) > DATE(?) AND DATE(fecha_creacion) <= DATE(?)";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		$current->db_agrupar = $agrupar;
		array_push($current->db_filtro_datos, $fecha_min);
		array_push($current->db_filtro_datos, $fecha_max);
		$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 Buscar($tienda, $buscar="", $ordendireccion="ASC", $ordencolumna="proforma_producto_id", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Proforma_Producto();
		$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(codigo, ' ', nombre, ' ', nombre_alternativo) LIKE ? AND ";
		}
		array_push($current->db_filtro_datos, $tienda );
		$current->db_filtro .= "tienda_id = ? AND activo = true";
		$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 Proforma($buscar="0", $ordendireccion="ASC", $ordencolumna="proforma_producto_id", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Proforma_Producto();
		$current->db_filtro = "proforma_id = ? AND activo = true";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		$current->db_agrupar = $agrupar;
		array_push($current->db_filtro_datos, $buscar );
		$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_proforma_producto_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["proforma_producto_id"];
			return $val;
		}
		return 0;
	}
	public function get_proforma_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["proforma_id"];
			return $val;
		}
		return "";
	}
	public function get_moneda_codigo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["moneda_codigo"];
			return $val;
		}
		return "";
	}
	public function get_moneda_simbolo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["moneda_simbolo"];
			return $val;
		}
		return "";
	}
	public function get_moneda_cambio($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["moneda_cambio"];
			return $val;
		}
		return "1";
	}
	public function get_igv_porcentaje($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["igv_porcentaje"];
			return $val;
		}
		return "0";
	}
	public function get_tienda_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["tienda_id"];
			return $val;
		}
		return "";
	}
	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_comprobante($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["comprobante"];
			return $val;
		}
		return "";
	}
	public function get_fecha($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["fecha"];
			return $val;
		}
		return "";
	}
	public function get_hora($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["hora"];
			return $val;
		}
		return "";
	}
	public function get_almacen_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["almacen_id"];
			return $val;
		}
		return "";
	}
	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 "";
	}
	public function get_producto_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["producto_id"];
			return $val;
		}
		return "";
	}
	public function get_producto_nombre($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["nombre"];
			return $val;
		}
		return "";
	}
	public function get_imagen($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["imagen"];
			return $val;
		}
		return "";
	}
	public function get_codigo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["codigo"];
			return $val;
		}
		return "";
	}
	public function get_codigo_barras($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["codigo_barras"];
			return $val;
		}
		return "";
	}
	public function get_codigo_almacen($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["codigo_almacen"];
			return $val;
		}
		return "";
	}
	public function get_fabricante($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["fabricante"];
			return $val;
		}
		return "";
	}
	public function get_modelo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["modelo"];
			return $val;
		}
		return "";
	}
	public function get_serie($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["serie"];
			return $val;
		}
		return "";
	}
	public function get_unidades($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["unidades"];
			return $val;
		}
		return "";
	}
	public function get_precio_almacen($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["precio_almacen"];
			return $val;
		}
		return "";
	}
	public function get_precio_venta($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["precio_venta"];
			return $val;
		}
		return "";
	}
	public function get_precio_subtotal($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["precio_subtotal"];
			return $val;
		}
		return "";
	}
	public function get_stock($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["stock"];
			return $val;
		}
		return 0;
	}
	public function get_usuario_modificacion($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["usuario_modificacion"];
			return $val;
		}
		return 0;
	}
	public function get_fecha_creacion($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["fecha_creacion"];
			return $val;
		}
		return "";
	}
	public function get_fecha_modificacion($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["fecha_modificacion"];
			return $val;
		}
		return "";
	}
	public function get_activo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["activo"];
			return $val;
		}
		return "";
	}
};
?>		
