<?php
header("Content-Type: text/html;charset=utf-8");
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

require_once("../data/Conexion.php");
require_once("../data/Tablas.php");
require_once("../clases/cls_producto.php");
require_once("../clases/cls_almacen_general.php");

function producto_lista(){
		$respuestas = array("estado"=>"error", "mensaje"=>"", "datos"=>array());
		if (isset($_POST["buscar"])){
			$items_pagina = 0;
			$items_cantidad = 0;
			$buscar = $_POST["buscar"];
			$ordendireccion = "ASC";
			$extra_precios = false;
			if (isset($_POST["orden"])){
				$ordendireccion = $_POST["orden"];
			}
			if (isset($_POST["items_pagina"])){
				$items_pagina = $_POST["items_pagina"];
			}
			if (isset($_POST["items_cantidad"])){
				$items_cantidad = $_POST["items_cantidad"];
			}
			if (isset($_POST["extra_precios"])){
				$extra_precios = $_POST["extra_precios"];
			}
			$datos = cls_Group_Producto::Buscar($buscar, $ordendireccion);
			if (isset($_POST["filtro_tipo"]) && $_POST["filtro_tipo"] == "filtro_barras"){
				$datos = cls_Group_Producto::CodigoBarras($buscar, $ordendireccion);
			}
			$datos->cargar_datos($items_pagina, $items_cantidad);
			$lista = array();
			for ($idx=0; $idx<$datos->get_cantidad_cargados(); $idx++){
				$precio_compra = 0;
				$precio_venta = 0;
				$precio_minimo = 0;
				$moneda_codigo = "";
				$moneda_simbolo = "";
				$moneda_cambio = 1.0;
				$moneda_codigo = "";
				if ($extra_precios == true){
					$producto_precios = cls_Almacen_General::Producto($datos->get_producto_id($idx));
					$precio_compra = $producto_precios->get_precio_compra();
					$precio_venta = $producto_precios->get_precio_venta();
					$precio_minimo = $producto_precios->get_precio_minimo();
					$moneda_simbolo = $producto_precios->get_moneda_simbolo();
					$moneda_cambio = $producto_precios->get_moneda_cambio();
					$moneda_codigo = $producto_precios->get_moneda_codigo();
				}
				array_push($lista, array(
					"producto_id"=>$datos->get_producto_id($idx),
					"nombre"=>$datos->get_nombre($idx),
					"nombre_alternativo"=>$datos->get_nombre_alternativo($idx),
					"imagen"=>$datos->get_imagen($idx),
					"fabricante"=>$datos->get_fabricante($idx),
					"modelo"=>$datos->get_modelo($idx),
					"serie"=>$datos->get_serie($idx),
					"codigo"=>$datos->get_codigo($idx),
					"codigo_barras"=>$datos->get_codigo_barras($idx),
					"codigo_almacen"=>$datos->get_codigo_almacen($idx),
					"categoria_id"=>$datos->get_categoria_id($idx),
					"unidad_medida_id"=>$datos->get_unidad_medida_id($idx),
					"fabricante"=>$datos->get_fabricante($idx),
					"modelo"=>$datos->get_modelo($idx),
					"serie"=>$datos->get_serie($idx),
					"peso"=>$datos->get_peso($idx),
					"stock_minimo"=>$datos->get_stock_minimo($idx),
					"producto_unitario_id"=>$datos->get_producto_unitario_id($idx),
					"producto_unitario_nombre"=>$datos->get_producto_unitario_nombre($idx),
					"producto_fracciones"=>$datos->get_producto_fracciones($idx),
					"estado"=>$datos->get_estado($idx),
					"precio_compra"=>$precio_compra,
					"precio_venta"=>$precio_venta,
					"precio_minimo"=>$precio_minimo,
					"moneda_simbolo"=>$moneda_simbolo,
					"moneda_cambio"=>$moneda_cambio,
					"moneda_codigo"=>$moneda_codigo,
				));
			}
			$respuestas["datos"] = $lista;
			$respuestas["estado"]  = "ok";
			$respuestas["mensaje"]  = "Los datos se cargaron correctamente";
		} else {
			$respuestas["mensaje"]  = "Ocurrió un error recibiendo los datos.";
		}
		echo(json_encode($respuestas));
}
function producto_datos(){
		$respuestas = array("estado"=>"error", "mensaje"=>"", "datos"=>array());
		if (isset($_POST["buscar"])){
			$codigo = $_POST["buscar"];
			$datos = cls_Producto::Indice($codigo);
			$respuestas["datos"] = array(
					"producto_id"=>$datos->get_producto_id(),
					"nombre"=>$datos->get_nombre(),
					"nombre_alternativo"=>$datos->get_nombre_alternativo(),
					"imagen"=>$datos->get_imagen(),
					"codigo"=>$datos->get_codigo(),
					"codigo_barras"=>$datos->get_codigo_barras(),
					"codigo_almacen"=>$datos->get_codigo_almacen(),
					"categoria_id"=>$datos->get_categoria_id(),
					"categoria_codigo"=>$datos->get_categoria_codigo(),
					"categoria_nombre"=>$datos->get_categoria_nombre(),
					"unidad_medida_id"=>$datos->get_unidad_medida_id(),
					"fabricante"=>$datos->get_fabricante(),
					"modelo"=>$datos->get_modelo(),
					"serie"=>$datos->get_serie(),
					"peso"=>$datos->get_peso(),
					"stock_minimo"=>$datos->get_stock_minimo(),
					"producto_unitario_id"=>$datos->get_producto_unitario_id(),
					"producto_unitario_nombre"=>$datos->get_producto_unitario_nombre(),
					"producto_fracciones"=>$datos->get_producto_fracciones(),
					"estado"=>$datos->get_estado(),
			);
			$respuestas["estado"]  = "ok";
			$respuestas["mensaje"]  = "Los datos se cargaron correctamente";
		} else {
			$respuestas["mensaje"]  = "Ocurrió un error recibiendo los datos.";
		}
		echo(json_encode($respuestas));
}
function producto_registrar(){
		$respuestas = array("estado"=>"error", "mensaje"=>"", "codigo"=>0);
		$usuario_editor = 0;
		$codigo = 0;
		$activo = true;
		if (isset($_SESSION["usuario_editor"])){
			$usuario_editor = $_SESSION["usuario_editor"];
		}
		if (isset($_POST["txt_codigo"])){
			$codigo = $_POST["txt_codigo"];
		}
		if (isset($_POST["activo"])){
			$activo = $_POST["activo"];
		}
		$nombre = $_POST["txt_prod_nombre"];
		$nombre_alternativo = $_POST["txt_prod_nombre_alternativo"];
		$imagen = $_POST["txt_prod_imagenes"];
		$cod_codigo = $_POST["txt_prod_cod_codigo"];
		$cod_barras = $_POST["txt_prod_cod_barras"];
		$cod_almacen = $_POST["txt_prod_cod_almacen"];
		$categoria_id = $_POST["txt_prod_categoria"];
		$unidad_medida_id = $_POST["txt_prod_unidad_medida"];
		$fabricante = $_POST["txt_prod_fabricante"];
		$modelo = $_POST["txt_prod_modelo"];
		$serie = $_POST["txt_prod_serie"];
		$peso = $_POST["txt_prod_peso"];
		$stock_minimo = $_POST["txt_prod_stock_minimo"];
		$producto_unitario_id = $_POST["txt_prod_unitario_id"];
		$producto_fracciones = $_POST["txt_prod_fracciones"];
		$estado = $_POST["txt_prod_estado"];
		$registrar = true;
		$datos = cls_Producto::Indice($codigo);
		if ($registrar === true){
			$datos->set_nombre($nombre);
			$datos->set_nombre_alternativo($nombre_alternativo);
			$datos->set_imagen($imagen);
			$datos->set_codigo($cod_codigo);
			$datos->set_codigo_barras($cod_barras);
			$datos->set_codigo_almacen($cod_almacen);
			$datos->set_categoria_id($categoria_id);
			$datos->set_unidad_medida_id($unidad_medida_id);
			$datos->set_fabricante($fabricante);
			$datos->set_modelo($modelo);
			$datos->set_serie($serie);
			$datos->set_peso($peso);
			$datos->set_stock_minimo($stock_minimo);
			$datos->set_producto_unitario_id($producto_unitario_id);
			$datos->set_producto_fracciones($producto_fracciones);
			$datos->set_estado($estado);
			$datos->set_activo($activo);
			if ($datos->registrar($usuario_editor)){
				$respuestas["codigo"] = $datos->get_producto_id();
				$respuestas["estado"]  = "ok";
				$respuestas["mensaje"]  = "Los datos se cargaron correctamente";
			} else {
				$respuestas["mensaje"]  = "Ocurrió un error registrando los datos.";
			}
		}
		echo(json_encode($respuestas));
}
function producto_registrar_masivo(){
	$respuestas = array("estado"=>"error", "mensaje"=>"");
	if (isset($_POST["datos"]) && isset($_SESSION["usuario_editor"])){
		$usuario_editor = $_SESSION["usuario_editor"];
		$datos = json_decode($_POST["datos"], true);
		for ($idx=0; $idx<count($datos); $idx++){
			$datos_almacen = cls_Producto::Indice($datos[$idx]["producto"]);
			$datos_almacen->set_stock_minimo($datos[$idx]["stock_minimo"]);
			$datos_almacen->set_estado($datos[$idx]["estado"]);
			$datos_almacen->registrar($usuario_editor);
		}
		$respuestas["estado"]  = "ok";
		$respuestas["mensaje"]  = "Los datos se cargaron correctamente";
	} else {
		$respuestas["mensaje"]  = "Ocurrió un error recibiendo los datos.";
	}
	echo(json_encode($respuestas));
}
function producto_eliminar(){
		$respuestas = array("estado"=>"error", "mensaje"=>"");
		if (isset($_POST["buscar"])){
			$usuario_editor = 0;
			if (isset($_SESSION["usuario_editor"])){
				$usuario_editor = $_SESSION["usuario_editor"];
			}
			$codigo = $_POST["buscar"];
			$datos = cls_Producto::Indice($codigo);
			if ($datos->eliminar($usuario_editor)){
				$respuestas["estado"]  = "ok";
				$respuestas["mensaje"]  = "Los datos se eliminaron correctamente";
			} else {
				$respuestas["mensaje"]  = "No se pudo eliminar los datos correctamente";
			}
		} else {
			$respuestas["mensaje"]  = "Ocurrió un error recibiendo los datos.";
		}
		echo(json_encode($respuestas));
}
function fabricantes(){
		$respuestas = array("estado"=>"error", "mensaje"=>"");
		if (isset($_POST["buscar"])){
			$items_pagina = 0;
			$items_cantidad = 0;
			$buscar = $_POST["buscar"];
			$ordendireccion = "ASC";
			if (isset($_POST["items_pagina"])){
				$items_pagina = $_POST["items_pagina"];
			}
			if (isset($_POST["items_cantidad"])){
				$items_cantidad = $_POST["items_cantidad"];
			}
			$datos = cls_Group_Producto::Fabricantes($buscar, $ordendireccion);
			$datos->cargar_datos($items_pagina, $items_cantidad);
			$lista = array();
			for ($idx=0; $idx<$datos->get_cantidad_cargados(); $idx++){
				array_push($lista, array(
					"nombre"=>$datos->get_fabricante($idx),
				));
			}
			$respuestas["datos"] = $lista;
			$respuestas["estado"]  = "ok";
			$respuestas["mensaje"]  = "Los datos se cargaron correctamente";
		} else {
			$respuestas["mensaje"]  = "Ocurrió un error recibiendo los datos.";
		}
		echo(json_encode($respuestas));
}
function modelos(){
		$respuestas = array("estado"=>"error", "mensaje"=>"");
		if (isset($_POST["buscar"])){
			$items_pagina = 0;
			$items_cantidad = 0;
			$buscar = $_POST["buscar"];
			$ordendireccion = "ASC";
			if (isset($_POST["items_pagina"])){
				$items_pagina = $_POST["items_pagina"];
			}
			if (isset($_POST["items_cantidad"])){
				$items_cantidad = $_POST["items_cantidad"];
			}
			$datos = cls_Group_Producto::Modelos($buscar, $ordendireccion);
			$datos->cargar_datos($items_pagina, $items_cantidad);
			$lista = array();
			for ($idx=0; $idx<$datos->get_cantidad_cargados(); $idx++){
				array_push($lista, array(
					"nombre"=>$datos->get_modelo($idx),
				));
			}
			$respuestas["datos"] = $lista;
			$respuestas["estado"]  = "ok";
			$respuestas["mensaje"]  = "Los datos se cargaron correctamente";
		} else {
			$respuestas["mensaje"]  = "Ocurrió un error recibiendo los datos.";
		}
		echo(json_encode($respuestas));
}
function series(){
		$respuestas = array("estado"=>"error", "mensaje"=>"");
		if (isset($_POST["buscar"])){
			$items_pagina = 0;
			$items_cantidad = 0;
			$buscar = $_POST["buscar"];
			$ordendireccion = "ASC";
			if (isset($_POST["items_pagina"])){
				$items_pagina = $_POST["items_pagina"];
			}
			if (isset($_POST["items_cantidad"])){
				$items_cantidad = $_POST["items_cantidad"];
			}
			$datos = cls_Group_Producto::Series($buscar, $ordendireccion);
			$datos->cargar_datos($items_pagina, $items_cantidad);
			$lista = array();
			for ($idx=0; $idx<$datos->get_cantidad_cargados(); $idx++){
				array_push($lista, array(
					"nombre"=>$datos->get_serie($idx),
				));
			}
			$respuestas["datos"] = $lista;
			$respuestas["estado"]  = "ok";
			$respuestas["mensaje"]  = "Los datos se cargaron correctamente";
		} else {
			$respuestas["mensaje"]  = "Ocurrió un error recibiendo los datos.";
		}
		echo(json_encode($respuestas));
}

if (isset($_POST["accion"])){
    if ($_POST["accion"] == "lista"){
		producto_lista();
	} else if ($_POST["accion"] == "datos"){
		producto_datos();
    } else if ($_POST["accion"] == "registrar"){
		producto_registrar();
    } else if ($_POST["accion"] == "registrar_masivo"){
		producto_registrar_masivo();
    } else if ($_POST["accion"] == "eliminar"){
		producto_eliminar();
    } else if ($_POST["accion"] == "fabricantes"){
		fabricantes();
    } else if ($_POST["accion"] == "modelos"){
		modelos();
    } else if ($_POST["accion"] == "series"){
		series();
	}
}
?>
