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

class cls_Venta {

	private $db_nombretabla = "venta";
	private $db_nombrevista = "vista_venta";
	private $db_filas = "*";
	private $venta_id = 0;
	private $tienda_id = 0;
	private $venta_base_id = 0;
	private $venta_derivado_id = 0;
	private $base_comprobante = "";
	private $base_serie = "";
	private $tienda_nombre = "";
	private $tienda_imagen = "";
	private $tienda_ubicacion = "";
	private $tienda_telefono = "";
	private $tienda_observaciones = "";
	private $vendedor_id = 0;
	private $vendedor_tipo = "";
	private $vendedor_usuario = "";
	private $vendedor_foto = "";
	private $vendedor_nombres = "";
	private $vendedor_documento_tipo = "DNI";
	private $vendedor_documento_numero = "";
	private $vendedor_telefono = "";
	private $vendedor_correo = "";
	private $vendedor_direccion = "";
	private $fecha = "";
	private $hora = "";
	private $cliente_nombre = "";
	private $cliente_documento_tipo = "";
	private $cliente_documento_numero = "";
	private $comprobante = "";
	private $serie = "";
	private $tipo_pago = "";
	private $moneda_codigo = "";
	private $moneda_simbolo = "";
	private $moneda_cambio = 1.0;
	private $igv_porcentaje = 0.00;
	private $observaciones = "";
	private $subtotal = 0.00;
	private $igv = 0.00;
	private $total = 0.00;
	private $estado_registro = "";
	private $usuario_modificacion = 0;
	private $fecha_creacion = "";
	private $fecha_modificacion = "";
	private $activo = true;
	
	public function __construct(){
		$this->db_filas = "venta_id, tienda_id, tienda_nombre, tienda_imagen, tienda_ubicacion, tienda_telefono, tienda_observaciones, venta_base_id, venta_derivado_id, base_comprobante, base_serie, vendedor_id, vendedor_tipo, vendedor_usuario, vendedor_foto, vendedor_nombres, vendedor_documento_tipo, vendedor_documento_numero, vendedor_telefono, vendedor_correo, vendedor_direccion, fecha, hora, cliente_nombre, cliente_documento_tipo, cliente_documento_numero, comprobante, serie, tipo_pago, moneda_codigo, moneda_simbolo, moneda_cambio, igv_porcentaje, observaciones, subtotal, igv, total, estado_registro, usuario_modificacion, fecha_creacion, fecha_modificacion, activo";
	}

	public function Duplicar(){
		$current = new cls_Venta();
		$current->venta_id = 0;
			$current->tienda_id = $this->tienda_id;
			$current->tienda_nombre = $this->tienda_nombre;
			$current->tienda_imagen = $this->tienda_imagen;
			$current->tienda_ubicacion = $this->tienda_ubicacion;
			$current->tienda_telefono = $this->tienda_telefono;
			$current->tienda_observaciones = $this->tienda_observaciones;
			$current->venta_base_id = $this->venta_base_id;
			$current->venta_derivado_id = $this->venta_derivado_id;
			$current->base_comprobante = $this->base_comprobante;
			$current->base_serie = $this->base_serie;
			$current->vendedor_id = $this->vendedor_id;
			$current->vendedor_tipo = $this->vendedor_tipo;
			$current->vendedor_usuario = $this->vendedor_usuario;
			$current->vendedor_foto = $this->vendedor_foto;
			$current->vendedor_nombres = $this->vendedor_nombres;
			$current->vendedor_documento_tipo = $this->vendedor_documento_tipo;
			$current->vendedor_documento_numero = $this->vendedor_documento_numero;
			$current->vendedor_telefono = $this->vendedor_telefono;
			$current->vendedor_correo = $this->vendedor_correo;
			$current->vendedor_direccion = $this->vendedor_direccion;
			$current->fecha = $this->fecha;
			$current->hora = $this->hora;
			$current->cliente_nombre = $this->cliente_nombre;
			$current->cliente_documento_tipo = $this->cliente_documento_tipo;
			$current->cliente_documento_numero = $this->cliente_documento_numero;
			$current->comprobante = $this->comprobante;
			$current->serie = $this->serie;
			$current->tipo_pago = $this->tipo_pago;
			$current->moneda_codigo = $this->moneda_codigo;
			$current->moneda_simbolo = $this->moneda_simbolo;
			$current->moneda_cambio = $this->moneda_cambio ;
			$current->igv_porcentaje = $this->igv_porcentaje;
			$current->observaciones = $this->observaciones;
			$current->subtotal = $this->subtotal;
			$current->igv = $this->igv;
			$current->total = $this->total;
			$current->estado_registro = $this->estado_registro;
			$current->activo = true;
		return $current;
	}
	static public function Indice($codigo){
		$current = new cls_Venta();
		$conn = new cls_Conexion();
		$filtro = "venta_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->venta_id = $lista[$indice]["venta_id"];
			$current->tienda_id = $lista[$indice]["tienda_id"];
			$current->tienda_nombre = $lista[$indice]["tienda_nombre"];
			$current->tienda_imagen = $lista[$indice]["tienda_imagen"];
			$current->tienda_ubicacion = $lista[$indice]["tienda_ubicacion"];
			$current->tienda_telefono = $lista[$indice]["tienda_telefono"];
			$current->tienda_observaciones = $lista[$indice]["tienda_observaciones"];
			$current->venta_base_id = $lista[$indice]["venta_base_id"];
			$current->venta_derivado_id = $lista[$indice]["venta_derivado_id"];
			$current->base_comprobante = $lista[$indice]["base_comprobante"];
			$current->base_serie = $lista[$indice]["base_serie"];
			$current->vendedor_id = $lista[$indice]["vendedor_id"];
			$current->vendedor_tipo = $lista[$indice]["vendedor_tipo"];
			$current->vendedor_usuario = $lista[$indice]["vendedor_usuario"];
			$current->vendedor_foto = $lista[$indice]["vendedor_foto"];
			$current->vendedor_nombres = $lista[$indice]["vendedor_nombres"];
			$current->vendedor_documento_tipo = $lista[$indice]["vendedor_documento_tipo"];
			$current->vendedor_documento_numero = $lista[$indice]["vendedor_documento_numero"];
			$current->vendedor_telefono = $lista[$indice]["vendedor_telefono"];
			$current->vendedor_correo = $lista[$indice]["vendedor_correo"];
			$current->vendedor_direccion = $lista[$indice]["vendedor_direccion"];
			$current->fecha = $lista[$indice]["fecha"];
			$current->hora = $lista[$indice]["hora"];
			$current->cliente_nombre = $lista[$indice]["cliente_nombre"];
			$current->cliente_documento_tipo = $lista[$indice]["cliente_documento_tipo"];
			$current->cliente_documento_numero = $lista[$indice]["cliente_documento_numero"];
			$current->comprobante = $lista[$indice]["comprobante"];
			$current->serie = $lista[$indice]["serie"];
			$current->tipo_pago = $lista[$indice]["tipo_pago"];
			$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->observaciones = $lista[$indice]["observaciones"];
			$current->subtotal = $lista[$indice]["subtotal"];
			$current->igv = $lista[$indice]["igv"];
			$current->total = $lista[$indice]["total"];
			$current->estado_registro = $lista[$indice]["estado_registro"];
			$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_venta_id() { return $this->venta_id; }
	public function get_tienda_id() { return $this->tienda_id; }
	public function get_tienda_nombre() { return $this->tienda_nombre; }
	public function get_tienda_imagen() { return $this->tienda_imagen; }
	public function get_tienda_ubicacion() { return $this->tienda_ubicacion; }
	public function get_tienda_telefono() { return $this->tienda_telefono; }
	public function get_tienda_observaciones() { return $this->tienda_observaciones; }
	public function get_venta_base_id() { return $this->venta_base_id; }
	public function get_venta_derivado_id() { return $this->venta_derivado_id; }
	public function get_base_comprobante() { return $this->base_comprobante; }
	public function get_base_serie() { return $this->base_serie; }
	public function get_vendedor_id() { return $this->vendedor_id; }
	public function get_vendedor_tipo() { return $this->vendedor_tipo; }
	public function get_vendedor_usuario() { return $this->vendedor_usuario; }
	public function get_vendedor_foto() { return $this->vendedor_foto; }
	public function get_vendedor_nombres() { return $this->vendedor_nombres; }
	public function get_vendedor_dni() { return $this->vendedor_documento_numero; }
	public function get_vendedor_documento_tipo() { return $this->vendedor_documento_tipo; }
	public function get_vendedor_documento_numero() { return $this->vendedor_documento_numero; }
	public function get_vendedor_telefono() { return $this->vendedor_telefono; }
	public function get_vendedor_correo() { return $this->vendedor_correo; }
	public function get_vendedor_direccion() { return $this->vendedor_direccion; }
	public function get_fecha() { return $this->fecha; }
	public function get_hora() { return $this->hora; }
	public function get_cliente_nombre() { return $this->cliente_nombre; }
	public function get_cliente_documento_tipo() { return $this->cliente_documento_tipo; }
	public function get_cliente_documento_numero() { return $this->cliente_documento_numero; }
	public function get_comprobante_tipo() { return $this->comprobante; }
	public function get_comprobante_numero() { return $this->serie; }
	public function get_tipo_pago() { return $this->tipo_pago; }
	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_observaciones() { return $this->observaciones; }
	public function get_costo_subtotal() { return $this->subtotal; }
	public function get_costo_igv() { return $this->igv; }
	public function get_costo_total() { return $this->total; }
	public function get_estado_registro() { return $this->estado_registro; }
	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_venta_id($venta_id){ $this->venta_id = $venta_id; }
	public function set_tienda_id($tienda_id){ $this->tienda_id = $tienda_id; }
	public function set_vendedor_id($vendedor_id){ $this->vendedor_id = $vendedor_id; }
	public function set_venta_base_id($venta_base_id){ $this->venta_base_id = $venta_base_id; }
	public function set_venta_derivado_id($venta_derivado_id){ $this->venta_derivado_id = $venta_derivado_id; }
	public function set_fecha($fecha){ $this->fecha = $fecha; }
	public function set_hora($hora){ $this->hora = $hora; }
	public function set_cliente_nombre($cliente_nombre){ $this->cliente_nombre = $cliente_nombre; }
	public function set_cliente_documento_tipo($cliente_documento_tipo){ $this->cliente_documento_tipo = $cliente_documento_tipo; }
	public function set_cliente_documento_numero($cliente_documento_numero){ $this->cliente_documento_numero = $cliente_documento_numero; }
	public function set_comprobante_tipo($comprobante){ $this->comprobante = $comprobante; }
	public function set_comprobante_numero($serie){ $this->serie = $serie; }
	public function set_tipo_pago($tipo_pago){ $this->tipo_pago = $tipo_pago; }
	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_observaciones($observaciones){ $this->observaciones = $observaciones; }
	public function set_costo_subtotal($subtotal){ $this->subtotal = $subtotal; }
	public function set_costo_igv($igv){ $this->igv = $igv; }
	public function set_costo_total($total){ $this->total = $total; }
	public function set_estado_registro($estado_registro){ $this->estado_registro = $estado_registro; }
	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->venta_id == 0 ){ // REGISTER
			array_push($values, $this->tienda_id);
			array_push($values, $this->vendedor_id);
			array_push($values, $this->venta_base_id);
			array_push($values, $this->venta_derivado_id);
			array_push($values, $this->fecha);
			array_push($values, $this->hora);
			array_push($values, $this->cliente_nombre);
			array_push($values, $this->cliente_documento_tipo);
			array_push($values, $this->cliente_documento_numero);
			array_push($values, $this->comprobante);
			array_push($values, $this->serie);
			array_push($values, $this->tipo_pago);
			array_push($values, $this->moneda_codigo);
			array_push($values, $this->igv_porcentaje);
			array_push($values, $this->observaciones);
			array_push($values, $this->subtotal);
			array_push($values, $this->igv);
			array_push($values, $this->total);
			array_push($values, $this->estado_registro);
			array_push($values, $usuario_editor);
			$respuesta = $conn->nuevo_registro($this->db_nombretabla, $values);
			$this->db_mensaje = $conn->GetMensaje();
			if ( $respuesta ){
				$this->venta_id = $conn->getlastId();
			}
		} else { // UPDATE
			array_push($values, $this->tienda_id);
			array_push($values, $this->vendedor_id);
			array_push($values, $this->venta_base_id);
			array_push($values, $this->venta_derivado_id);
			array_push($values, $this->fecha);
			array_push($values, $this->hora);
			array_push($values, $this->cliente_nombre);
			array_push($values, $this->cliente_documento_tipo);
			array_push($values, $this->cliente_documento_numero);
			array_push($values, $this->comprobante);
			array_push($values, $this->serie);
			array_push($values, $this->tipo_pago);
			array_push($values, $this->moneda_codigo);
			array_push($values, $this->igv_porcentaje);
			array_push($values, $this->observaciones);
			array_push($values, $this->subtotal);
			array_push($values, $this->igv);
			array_push($values, $this->total);
			array_push($values, $this->estado_registro);
			array_push($values, $usuario_editor);
			array_push($values, $this->venta_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->venta_id);
			array_push($values, $this->tienda_id);
			array_push($values, $this->vendedor_id);
			array_push($values, $this->venta_base_id);
			array_push($values, $this->venta_derivado_id);
			array_push($values, $this->fecha);
			array_push($values, $this->hora);
			array_push($values, $this->cliente_nombre);
			array_push($values, $this->cliente_documento_tipo);
			array_push($values, $this->cliente_documento_numero);
			array_push($values, $this->comprobante);
			array_push($values, $this->serie);
			array_push($values, $this->tipo_pago);
			array_push($values, $this->moneda_codigo);
			array_push($values, $this->igv_porcentaje);
			array_push($values, $this->observaciones);
			array_push($values, $this->subtotal);
			array_push($values, $this->igv);
			array_push($values, $this->total);
			array_push($values, $this->estado_registro);
			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->tienda_id);
			array_push($values, $this->vendedor_id);
			array_push($values, $this->venta_base_id);
			array_push($values, $this->venta_derivado_id);
			array_push($values, $this->fecha);
			array_push($values, $this->hora);
			array_push($values, $this->cliente_nombre);
			array_push($values, $this->cliente_documento_tipo);
			array_push($values, $this->cliente_documento_numero);
			array_push($values, $this->comprobante);
			array_push($values, $this->serie);
			array_push($values, $this->tipo_pago);
			array_push($values, $this->moneda_codigo);
			array_push($values, $this->igv_porcentaje);
			array_push($values, $this->observaciones);
			array_push($values, $this->subtotal);
			array_push($values, $this->igv);
			array_push($values, $this->total);
			array_push($values, $this->estado_registro);
			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->venta_id = $conn->getlastId();
		};
		return $respuesta;
	}

	public function eliminar( $usuario_editor ){
		$conn = new cls_Conexion();
		$respuesta = false;
		$values = array();
		if ($this->venta_id > 0){ // DELETE
			array_push($values, $usuario_editor);
			array_push($values, $this->venta_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_Venta {

	protected $db_mensaje = "";
	protected $db_nombre_tabla = "vista_venta";
	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 = "venta_id, tienda_id, tienda_nombre, tienda_imagen, tienda_ubicacion, tienda_telefono, tienda_observaciones, venta_base_id, venta_derivado_id, base_comprobante, base_serie, vendedor_id, vendedor_tipo, vendedor_usuario, vendedor_foto, vendedor_nombres, vendedor_documento_tipo, vendedor_documento_numero, vendedor_telefono, vendedor_correo, vendedor_direccion, fecha, hora, cliente_nombre, cliente_documento_tipo, cliente_documento_numero, comprobante, serie, tipo_pago, moneda_codigo, moneda_simbolo, moneda_cambio, igv_porcentaje, observaciones, subtotal, igv, total, estado_registro, usuario_modificacion, fecha_creacion, fecha_modificacion, activo";
		$this->db_orden_columna = "fecha";
	}

	static public function Export($fecha_min, $fecha_max, $ordendireccion="ASC", $ordencolumna="venta_id", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Venta();
		$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="fecha, hora", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Venta();
		$buscar = "%".$buscar."%";
		$current->db_filtro = "venta_id = ? AND vendedor_nombres LIKE ? AND activo = true";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		$current->db_agrupar = $agrupar;
		array_push($current->db_filtro_datos, $tienda );
		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;
	}
	static public function VentaBase($buscar="0", $ordendireccion="ASC", $ordencolumna="fecha, hora", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Venta();
		$current->db_filtro = "venta_base_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;
	}
	static public function VentaDerivado($buscar="0", $ordendireccion="ASC", $ordencolumna="fecha, hora", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Venta();
		$current->db_filtro = "venta_derivado_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;
	}
	static public function TiendaEstado($tienda, $estado_registro="Todos", $ordendireccion="ASC", $ordencolumna="fecha, hora", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Venta();
		$current->db_filtro = "(tienda_id = ? OR ? = -1) AND (estado_registro LIKE ? OR ? LIKE 'Todos') AND activo = true";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		$current->db_agrupar = $agrupar;
		array_push($current->db_filtro_datos, $tienda );
		array_push($current->db_filtro_datos, $tienda );
		array_push($current->db_filtro_datos, $estado_registro );
		array_push($current->db_filtro_datos, $estado_registro );
		$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 RangoFecha($tienda, $buscar, $fecha_min, $fecha_max, $ordendireccion="ASC", $ordencolumna="fecha, hora", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Venta();
		$current->db_filtro = "(tienda_id = ? OR ? = 0) AND vendedor_nombres LIKE ? AND DATE(fecha) >= DATE(?) AND DATE(fecha) <= DATE(?) AND activo = true";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		$current->db_agrupar = $agrupar;
		array_push($current->db_filtro_datos, $tienda );
		array_push($current->db_filtro_datos, $tienda );
		array_push($current->db_filtro_datos, "%".$buscar."%" );
		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 RangoFechaEstado($tienda, $buscar, $fecha_min, $fecha_max, $estado_registro="Todos", $ordendireccion="ASC", $ordencolumna="fecha, hora", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Venta();
		$current->db_filtro = "(tienda_id = ? OR ? = 0) AND serie LIKE ? AND DATE(fecha) >= DATE(?) AND DATE(fecha) <= DATE(?) AND (estado_registro LIKE ? OR ? LIKE 'Todos') AND activo = true";
		$current->db_orden_columna = $ordencolumna;
		$current->db_orden_direccion = $ordendireccion;
		$current->db_agrupar = $agrupar;
		array_push($current->db_filtro_datos, $tienda );
		array_push($current->db_filtro_datos, $tienda );
		array_push($current->db_filtro_datos, "%".$buscar."%" );
		array_push($current->db_filtro_datos, $fecha_min );
		array_push($current->db_filtro_datos, $fecha_max );
		array_push($current->db_filtro_datos, $estado_registro );
		array_push($current->db_filtro_datos, $estado_registro );
		$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_venta_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["venta_id"];
			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 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 "";
	}
	public function get_tienda_telefono($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["tienda_telefono"];
			return $val;
		}
		return "";
	}
	public function get_tienda_observaciones($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["tienda_observaciones"];
			return $val;
		}
		return "";
	}
	public function get_venta_base_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["venta_base_id"];
			return $val;
		}
		return 0;
	}
	public function get_venta_derivado_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["venta_derivado_id"];
			return $val;
		}
		return "";
	}
	
	public function get_base_comprobante($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["base_comprobante"];
			return $val;
		}
		return "";
	}
	public function get_base_serie($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["base_serie"];
			return $val;
		}
		return "";
	}
	
	public function get_vendedor_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["vendedor_id"];
			return $val;
		}
		return 0;
	}
	public function get_vendedor_tipo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["vendedor_tipo"];
			return $val;
		}
		return "";
	}
	public function get_vendedor_usuario($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["vendedor_usuario"];
			return $val;
		}
		return "";
	}
	public function get_vendedor_foto($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["vendedor_foto"];
			return $val;
		}
		return "";
	}
	public function get_vendedor_nombres($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["vendedor_nombres"];
			return $val;
		}
		return "";
	}
	public function get_vendedor_dni($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["vendedor_documento_numero"];
			return $val;
		}
		return "";
	}
	public function get_vendedor_documento_tipo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["vendedor_documento_tipo"];
			return $val;
		}
		return "";
	}
	public function get_vendedor_documento_numero($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["vendedor_documento_numero"];
			return $val;
		}
		return "";
	}
	public function get_vendedor_telefono($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["vendedor_telefono"];
			return $val;
		}
		return "";
	}
	public function get_vendedor_correo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["vendedor_correo"];
			return $val;
		}
		return "";
	}
	public function get_vendedor_direccion($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["vendedor_direccion"];
			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_cliente_nombre($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["cliente_nombre"];
			return $val;
		}
		return "";
	}
	public function get_cliente_documento_tipo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["cliente_documento_tipo"];
			return $val;
		}
		return "";
	}
	public function get_cliente_documento_numero($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["cliente_documento_numero"];
			return $val;
		}
		return "";
	}
	public function get_comprobante_tipo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["comprobante"];
			return $val;
		}
		return "";
	}
	public function get_comprobante_numero($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["serie"];
			return $val;
		}
		return "";
	}
	public function get_tipo_pago($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["tipo_pago"];
			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_observaciones($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["observaciones"];
			return $val;
		}
		return "";
	}
	public function get_costo_subtotal($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["subtotal"];
			return $val;
		}
		return "";
	}
	public function get_costo_igv($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["igv"];
			return $val;
		}
		return "";
	}
	public function get_costo_total($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["total"];
			return $val;
		}
		return "";
	}
	public function get_estado_registro($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["estado_registro"];
			return $val;
		}
		return "";
	}
	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 "";
	}
};
?>		
