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

class cls_Producto {

	private $db_mensaje = "";
	private $db_nombretabla = "producto";
	private $db_nombrevista = "producto";
	private $db_filas = "*";
	private $producto_id = 0;
	private $nombre = "";
	private $nombre_alternativo = "";
	private $imagen = "";
	private $codigo = "";
	private $codigo_barras = "";
	private $codigo_almacen = "";
	private $categoria_id = 0;
	private $categoria_codigo = 0;
	private $categoria_nombre = 0;
	private $unidad_medida_id = 0;
	private $fabricante = "";
	private $modelo = "";
	private $serie = "";
	private $peso = 0.00;
	private $stock_minimo = 0;
	private $producto_unitario_id = 0;
	private $producto_unitario_nombre = "";
	private $producto_fracciones = 0;
	private $estado = "";
	private $usuario_modificacion = 0;
	private $fecha_creacion = "";
	private $fecha_modificacion = "";
	private $activo = true;

	public function __construct(){
		$this->db_filas = "producto.producto_id, producto.nombre, producto.nombre_alternativo, producto.imagen, producto.codigo, producto.codigo_barras, producto.codigo_almacen, producto.categoria_id, IFNULL(categoria.nombre,'') AS categoria_nombre, IFNULL(categoria.codigo,'') AS categoria_codigo, producto.unidad_medida_id, producto.fabricante, producto.modelo, producto.serie, producto.peso, producto.stock_minimo, producto.producto_unitario_id, IFNULL(C.nombre, '') AS producto_unitario_nombre, producto.producto_fracciones, producto.usuario_modificacion, producto.fecha_creacion, producto.fecha_modificacion, producto.estado, producto.activo";
		$this->db_nombrevista = "producto LEFT JOIN categoria ON producto.categoria_id=categoria.categoria_id LEFT JOIN producto AS C ON producto.producto_unitario_id=C.producto_id AND C.activo = 1";
	}

	static public function Indice($codigo){
		$current = new cls_Producto();
		$conn = new cls_Conexion();
		$filtro = "producto.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->producto_id = $lista[$indice]["producto_id"];
			$current->nombre = $lista[$indice]["nombre"];
			$current->nombre_alternativo = $lista[$indice]["nombre_alternativo"];
			$current->imagen = $lista[$indice]["imagen"];
			$current->codigo = $lista[$indice]["codigo"];
			$current->codigo_barras = $lista[$indice]["codigo_barras"];
			$current->codigo_almacen = $lista[$indice]["codigo_almacen"];
			$current->categoria_id = $lista[$indice]["categoria_id"];
			$current->categoria_codigo = $lista[$indice]["categoria_codigo"];
			$current->categoria_nombre = $lista[$indice]["categoria_nombre"];
			$current->unidad_medida_id = $lista[$indice]["unidad_medida_id"];
			$current->fabricante = $lista[$indice]["fabricante"];
			$current->modelo = $lista[$indice]["modelo"];
			$current->serie = $lista[$indice]["serie"];
			$current->peso = $lista[$indice]["peso"];
			$current->stock_minimo = $lista[$indice]["stock_minimo"];
			$current->producto_unitario_id = $lista[$indice]["producto_unitario_id"];
			$current->producto_unitario_nombre = $lista[$indice]["producto_unitario_nombre"];
			$current->producto_fracciones = $lista[$indice]["producto_fracciones"];
			$current->estado = $lista[$indice]["estado"];
			$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;
	}
	static public function BuscarFabricanteModeloSerie($producto_codigo, $producto_nombre, $fil_fabricante, $fil_modelo, $fil_serie){
		$current = new cls_Producto();
		$conn = new cls_Conexion();
		$filtro = "TRIM(producto.codigo) = ? AND TRIM(producto.nombre) LIKE ? AND TRIM(producto.fabricante) LIKE ? AND TRIM(producto.modelo) LIKE ? AND TRIM(producto.serie) LIKE ?";
		$values = array();
		array_push($values, trim($producto_codigo) );
		array_push($values, trim($producto_nombre) );
		array_push($values, trim($fil_fabricante) );
		array_push($values, trim($fil_modelo) );
		array_push($values, trim($fil_serie) );
		$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->producto_id = $lista[$indice]["producto_id"];
			$current->nombre = $lista[$indice]["nombre"];
			$current->nombre_alternativo = $lista[$indice]["nombre_alternativo"];
			$current->imagen = $lista[$indice]["imagen"];
			$current->codigo = $lista[$indice]["codigo"];
			$current->codigo_barras = $lista[$indice]["codigo_barras"];
			$current->codigo_almacen = $lista[$indice]["codigo_almacen"];
			$current->categoria_id = $lista[$indice]["categoria_id"];
			$current->categoria_codigo = $lista[$indice]["categoria_codigo"];
			$current->categoria_nombre = $lista[$indice]["categoria_nombre"];
			$current->unidad_medida_id = $lista[$indice]["unidad_medida_id"];
			$current->fabricante = $lista[$indice]["fabricante"];
			$current->modelo = $lista[$indice]["modelo"];
			$current->serie = $lista[$indice]["serie"];
			$current->peso = $lista[$indice]["peso"];
			$current->stock_minimo = $lista[$indice]["stock_minimo"];
			$current->producto_unitario_id = $lista[$indice]["producto_unitario_id"];
			$current->producto_unitario_nombre = $lista[$indice]["producto_unitario_nombre"];
			$current->producto_fracciones = $lista[$indice]["producto_fracciones"];
			$current->estado = $lista[$indice]["estado"];
			$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;
	}
	static public function BuscarMax($producto_codigo, $producto_nombre, $categoria_codigo){
		$current = new cls_Producto();
		$conn = new cls_Conexion();
		$filtro = "producto.codigo = ? AND producto.nombre LIKE ? AND categoria.codigo LIKE ?";
		$values = array();
		array_push($values, $producto_codigo );
		array_push($values, $producto_nombre );
		array_push($values, $categoria_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->producto_id = $lista[$indice]["producto_id"];
			$current->nombre = $lista[$indice]["nombre"];
			$current->nombre_alternativo = $lista[$indice]["nombre_alternativo"];
			$current->imagen = $lista[$indice]["imagen"];
			$current->codigo = $lista[$indice]["codigo"];
			$current->codigo_barras = $lista[$indice]["codigo_barras"];
			$current->codigo_almacen = $lista[$indice]["codigo_almacen"];
			$current->categoria_id = $lista[$indice]["categoria_id"];
			$current->categoria_codigo = $lista[$indice]["categoria_codigo"];
			$current->categoria_nombre = $lista[$indice]["categoria_nombre"];
			$current->unidad_medida_id = $lista[$indice]["unidad_medida_id"];
			$current->fabricante = $lista[$indice]["fabricante"];
			$current->modelo = $lista[$indice]["modelo"];
			$current->serie = $lista[$indice]["serie"];
			$current->peso = $lista[$indice]["peso"];
			$current->stock_minimo = $lista[$indice]["stock_minimo"];
			$current->producto_unitario_id = $lista[$indice]["producto_unitario_id"];
			$current->producto_unitario_nombre = $lista[$indice]["producto_unitario_nombre"];
			$current->producto_fracciones = $lista[$indice]["producto_fracciones"];
			$current->estado = $lista[$indice]["estado"];
			$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_producto_id() { return $this->producto_id; }
	public function get_nombre() { return $this->nombre; }
	public function get_nombre_alternativo() { return $this->nombre_alternativo; }
	public function get_imagen() { return $this->imagen; }
	public function get_codigo() { return $this->codigo; }
	public function get_codigo_barras() { return $this->codigo_barras; }
	public function get_codigo_almacen() { return $this->codigo_almacen; }
	public function get_categoria_id() { return $this->categoria_id; }
	public function get_categoria_codigo() { return $this->categoria_codigo; }
	public function get_categoria_nombre() { return $this->categoria_nombre; }
	public function get_unidad_medida_id() { return $this->unidad_medida_id; }
	public function get_fabricante() { return $this->fabricante; }
	public function get_modelo() { return $this->modelo; }
	public function get_serie() { return $this->serie; }
	public function get_peso() { return $this->peso; }
	public function get_stock_minimo() { return $this->stock_minimo; }
	public function get_producto_unitario_id() { return $this->producto_unitario_id; }
	public function get_producto_unitario_nombre() { return $this->producto_unitario_nombre; }
	public function get_producto_fracciones() { return $this->producto_fracciones; }
	public function get_estado() { return $this->estado; }
	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_producto_id($producto_id){ $this->producto_id = $producto_id; }
	public function set_nombre($nombre){ $this->nombre = $nombre; }
	public function set_nombre_alternativo($nombre_alternativo){ $this->nombre_alternativo = $nombre_alternativo; }
	public function set_imagen($imagen){ $this->imagen = $imagen; }
	public function set_codigo($codigo){ $this->codigo = $codigo; }
	public function set_codigo_barras($codigo_barras){ $this->codigo_barras = $codigo_barras; }
	public function set_codigo_almacen($codigo_almacen){ $this->codigo_almacen = $codigo_almacen; }
	public function set_categoria_id($categoria_id){ $this->categoria_id = $categoria_id; }
	public function set_unidad_medida_id($unidad_medida_id){ $this->unidad_medida_id = $unidad_medida_id; }
	public function set_fabricante($fabricante){ $this->fabricante = $fabricante; }
	public function set_modelo($modelo){ $this->modelo = $modelo; }
	public function set_serie($serie){ $this->serie = $serie; }
	public function set_peso($peso){ $this->peso = $peso; }
	public function set_stock_minimo($stock_minimo){ $this->stock_minimo = $stock_minimo; }
	public function set_producto_unitario_id($producto_unitario_id){ $this->producto_unitario_id = $producto_unitario_id; }
	public function set_producto_fracciones($producto_fracciones){ $this->producto_fracciones = $producto_fracciones; }
	public function set_estado($estado){ $this->estado = $estado; }
	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->producto_id == 0 ){ // REGISTER
			array_push($values, $this->nombre);
			array_push($values, $this->nombre_alternativo);
			array_push($values, $this->imagen);
			array_push($values, $this->codigo);
			array_push($values, $this->codigo_barras);
			array_push($values, $this->codigo_almacen);
			array_push($values, $this->categoria_id);
			array_push($values, $this->unidad_medida_id);
			array_push($values, $this->fabricante);
			array_push($values, $this->modelo);
			array_push($values, $this->serie);
			array_push($values, $this->peso);
			array_push($values, $this->stock_minimo);
			array_push($values, $this->producto_unitario_id);
			array_push($values, $this->producto_fracciones);
			array_push($values, $this->estado);
			array_push($values, $usuario_editor);
			$respuesta = $conn->nuevo_registro($this->db_nombretabla, $values);
			$this->db_mensaje = $conn->GetMensaje();
			if ( $respuesta ){
				$this->producto_id = $conn->getlastId();
			}
		} else { // UPDATE
			array_push($values, $this->nombre);
			array_push($values, $this->nombre_alternativo);
			array_push($values, $this->imagen);
			array_push($values, $this->codigo);
			array_push($values, $this->codigo_barras);
			array_push($values, $this->codigo_almacen);
			array_push($values, $this->categoria_id);
			array_push($values, $this->unidad_medida_id);
			array_push($values, $this->fabricante);
			array_push($values, $this->modelo);
			array_push($values, $this->serie);
			array_push($values, $this->peso);
			array_push($values, $this->stock_minimo);
			array_push($values, $this->producto_unitario_id);
			array_push($values, $this->producto_fracciones);
			array_push($values, $this->estado);
			array_push($values, $usuario_editor);
			array_push($values, $this->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->producto_id);
			array_push($values, $this->nombre);
			array_push($values, $this->nombre_alternativo);
			array_push($values, $this->imagen);
			array_push($values, $this->codigo);
			array_push($values, $this->codigo_barras);
			array_push($values, $this->codigo_almacen);
			array_push($values, $this->categoria_id);
			array_push($values, $this->unidad_medida_id);
			array_push($values, $this->fabricante);
			array_push($values, $this->modelo);
			array_push($values, $this->serie);
			array_push($values, $this->peso);
			array_push($values, $this->stock_minimo);
			array_push($values, $this->producto_unitario_id);
			array_push($values, $this->producto_fracciones);
			array_push($values, $this->estado);
			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->nombre);
			array_push($values, $this->nombre_alternativo);
			array_push($values, $this->imagen);
			array_push($values, $this->codigo);
			array_push($values, $this->codigo_barras);
			array_push($values, $this->codigo_almacen);
			array_push($values, $this->categoria_id);
			array_push($values, $this->unidad_medida_id);
			array_push($values, $this->fabricante);
			array_push($values, $this->modelo);
			array_push($values, $this->serie);
			array_push($values, $this->peso);
			array_push($values, $this->stock_minimo);
			array_push($values, $this->producto_unitario_id);
			array_push($values, $this->producto_fracciones);
			array_push($values, $this->estado);
			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->producto_id = $conn->getlastId();
		};
		return $respuesta;
	}

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

	protected $db_mensaje = "";
	protected $db_nombre_tabla = "producto";
	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 = "producto_id, nombre, nombre_alternativo, imagen, codigo, codigo_barras, codigo_almacen, categoria_id, unidad_medida_id, fabricante, modelo, serie, peso, stock_minimo, estado, usuario_modificacion, fecha_creacion, fecha_modificacion, activo";
		$this->db_nombres_columnas = "producto.producto_id, producto.nombre, producto.nombre_alternativo, producto.imagen, producto.codigo, producto.codigo_barras, producto.codigo_almacen, producto.categoria_id, IFNULL(categoria.nombre,'') AS categoria_nombre, IFNULL(categoria.codigo,'') AS categoria_codigo, producto.unidad_medida_id, producto.fabricante, producto.modelo, producto.serie, producto.peso, producto.stock_minimo, producto.producto_unitario_id, IFNULL(C.nombre, '') AS producto_unitario_nombre, producto.producto_fracciones, producto.usuario_modificacion, producto.fecha_creacion, producto.fecha_modificacion, producto.estado, producto.activo";
		$this->db_nombre_tabla = "producto LEFT JOIN categoria ON producto.categoria_id=categoria.categoria_id LEFT JOIN producto AS C ON producto.producto_unitario_id=C.producto_id AND C.activo = 1";
		$this->db_orden_columna = "producto.nombre";
	}

	static public function Export($fecha_min, $fecha_max, $ordendireccion="ASC", $ordencolumna="producto.producto_id", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Producto();
		$current->db_filtro = "DATE(producto.fecha_creacion) > DATE(?) AND DATE(producto.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($buscar="", $ordendireccion="ASC", $ordencolumna="producto.nombre", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_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(producto.codigo, ' ', producto.nombre, ' ', producto.nombre_alternativo) LIKE ? AND ";
		}
		$current->db_filtro .= "producto.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 CodigoBarras($buscar="", $ordendireccion="ASC", $ordencolumna="producto.codigo_barras", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_Producto();
		//$buscar = "%".$buscar."%";
		$current->db_filtro = "producto.codigo_barras LIKE ? AND producto.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 BuscarCategoriaFabricante($buscar="", $categoria="Todos", $fabricante="Todos", $ordendireccion="ASC", $ordencolumna="producto.nombre", $agrupar=""){
		$conn = new cls_Conexion();
		$current = new cls_Group_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(producto.codigo, ' ', producto.nombre, ' ', producto.nombre_alternativo) LIKE ? AND ";
		}
		array_push($current->db_filtro_datos, $categoria );
		array_push($current->db_filtro_datos, $categoria );
		array_push($current->db_filtro_datos, "%".$fabricante."%" );
		array_push($current->db_filtro_datos, $fabricante );
		$current->db_filtro .= "(producto.categoria_id = ? OR ? = 0) AND (producto.fabricante LIKE ? OR ? LIKE 'Todos') AND producto.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 Fabricantes($buscar="", $ordendireccion="ASC"){
		$conn = new cls_Conexion();
		$current = new cls_Group_Producto();
		$buscar = "%".$buscar."%";
		$current->db_filtro = "producto.fabricante LIKE ? AND producto.activo = true";
		$current->db_orden_columna = "producto.fabricante";
		$current->db_orden_direccion = "producto.fabricante";
		$current->db_agrupar = "producto.fabricante";
		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 Modelos($buscar="", $ordendireccion="ASC"){
		$conn = new cls_Conexion();
		$current = new cls_Group_Producto();
		$buscar = "%".$buscar."%";
		$current->db_filtro = "producto.modelo LIKE ? AND producto.activo = true";
		$current->db_orden_columna = "producto.modelo";
		$current->db_orden_direccion = "producto.modelo";
		$current->db_agrupar = "producto.modelo";
		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 Series($buscar="", $ordendireccion="ASC"){
		$conn = new cls_Conexion();
		$current = new cls_Group_Producto();
		$buscar = "%".$buscar."%";
		$current->db_filtro = "producto.serie LIKE ? AND producto.activo = true";
		$current->db_orden_columna = "producto.serie";
		$current->db_orden_direccion = "producto.serie";
		$current->db_agrupar = "producto.serie";
		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_producto_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["producto_id"];
			return $val;
		}
		return 0;
	}
	public function get_nombre($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["nombre"];
			return $val;
		}
		return "";
	}
	public function get_nombre_alternativo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["nombre_alternativo"];
			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_categoria_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["categoria_id"];
			return $val;
		}
		return "";
	}
	public function get_categoria_codigo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["categoria_codigo"];
			return $val;
		}
		return "";
	}
	public function get_categoria_nombre($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["categoria_nombre"];
			return $val;
		}
		return "";
	}
	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 "";
	}
	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_peso($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["peso"];
			return $val;
		}
		return "";
	}
	public function get_stock_minimo($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["stock_minimo"];
			return $val;
		}
		return "";
	}
	public function get_producto_unitario_id($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["producto_unitario_id"];
			return $val;
		}
		return 0;
	}
	public function get_producto_unitario_nombre($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["producto_unitario_nombre"];
			return $val;
		}
		return "";
	}
	public function get_producto_fracciones($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["producto_fracciones"];
			return $val;
		}
		return 0;
	}
	public function get_estado($indice){
		if ($indice >= 0 && count($this->db_filas) > $indice){
			$val = $this->db_filas[$indice]["estado"];
			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 "";
	}
};
?>		
