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

use Shuchkin\SimpleXLSX;
require_once '../SimpleXLSX/SimpleXLSX.php';

require_once("../data/Conexion.php");
require_once("../data/Tablas.php");
require_once("../clases/cls_usuario.php");
require_once("../clases/cls_categoria.php");
require_once("../clases/cls_unidad_medida.php");
require_once("../clases/cls_moneda.php");
require_once("../clases/cls_proveedor.php");
require_once("../clases/cls_responsable.php");
require_once("../clases/cls_producto.php");
require_once("../clases/cls_tienda.php");
require_once("../clases/cls_compra.php");
require_once("../clases/cls_compra_producto.php");
require_once("../clases/cls_movimiento.php");
require_once("../clases/cls_movimiento_producto.php");
require_once("../clases/cls_almacen_general.php");
require_once("../clases/cls_almacen_tienda.php");
require_once("../clases/cls_control_movimiento.php");
require_once("../clases/cls_proforma.php");
require_once("../clases/cls_proforma_producto.php");
require_once("../clases/cls_venta.php");
require_once("../clases/cls_venta_producto.php");

function importar_documento(){
		$respuestas = array("estado"=>"error", "mensaje"=>"", "datos"=>array());
		if ($_FILES['filter_import_excel']['error'] === UPLOAD_ERR_OK) {
			$uploadDirectory = "../uploads/";
			if (!file_exists($uploadDirectory) && !is_dir($uploadDirectory)) {
				if (!mkdir($uploadDirectory, 0755, true)) {
					$respuestas["mensaje"] = 'Error al crear el directorio de carga.';
					exit;
				}
			}
			$tmpfilesize = isset($_FILES["filter_import_excel"]["size"]) ? $_FILES["filter_import_excel"]["size"] : 0;
			$tmpfilename = isset($_FILES["filter_import_excel"]["tmp_name"]) ? $_FILES["filter_import_excel"]["tmp_name"] : 0;
			$tmpfiletype = isset($_FILES["filter_import_excel"]["type"]) ? $_FILES["filter_import_excel"]["type"] : 0;
			$file_upload = "file_temp";
			if (move_uploaded_file($tmpfilename, $uploadDirectory.$file_upload.".xlsx")) {
				$respuestas["mensaje"] = 'Archivo Excel cargado y guardado';
			} else {
				$respuestas["mensaje"] = 'Error al mover el archivo al directorio de carga.';
			}
			// Realiza el procesamiento del archivo Excel aquí
			$xlsx_json = array();
			if ($xlsx = SimpleXLSX::parse('../uploads/'.$file_upload.".xlsx")) {
				$totalfilas = count($xlsx->rows());
				$prettyJsonString = json_encode($xlsx->rows(), JSON_PRETTY_PRINT);
				$myfile = fopen($uploadDirectory.$file_upload.".json", "w") or die("Unable to open file!");
				fwrite($myfile, $prettyJsonString);
				fclose($myfile);
				
				
				$strJsonFileContents = file_get_contents('../uploads/'.$file_upload.".json");
				$xlsx = json_decode($strJsonFileContents, true);
				$totalfilas = count($xlsx);
				$rows = array();
				for ($i=0; $i<$totalfilas; $i++){
					$row = $xlsx[$i];
					array_push($rows, $row);
				}
				$respuestas["datos"] = $rows;
				$respuestas["estado"] = "ok";
				$respuestas["totalfilas"] = $totalfilas;
				unlink('../uploads/'.$file_upload.".xlsx");
			} else {
				$respuestas["mensaje"] = "Error cargando el archivo";
			}
			$respuestas["mensaje"] = 'Archivo Excel cargado correctamente.';
		} else {
			$respuestas["mensaje"] = 'Se produjo un error al cargar el archivo.';
		}
		echo(json_encode($respuestas));
}
function importar_datos_almacen_general(){
	$respuestas = array("estado"=>"error", "mensaje"=>"", "codigo"=>"0");
	$usuario_editor = 0;
	$import_codigo = $_POST["codigo"];
	if (isset($_SESSION["usuario_editor"])){
		$usuario_editor = $_SESSION["usuario_editor"];
	}
	$import_registro = cls_Compra::Indice($import_codigo);
	if ($import_registro->get_compra_id() == 0){
		$import_registro->set_fecha($_POST["fecha"]);
		$import_registro->set_operacion("Importación de productos de almacen");
		$import_registro->set_comprobante("Sin Documento");
		$import_registro->set_numero("");
		$import_registro->set_proveedor_id(0);
		$import_registro->set_responsable_id(0);
		$import_registro->set_moneda_codigo("USD");
		$import_registro->set_igv_porcentaje(18);
		$import_registro->set_estado_registro("Almacenado");
		$import_registro->set_observaciones("");
		$import_registro->set_costo_total(0.00);
		$import_registro->registrar( $usuario_editor );
	}
	$respuestas["codigo"] = $import_registro->get_compra_id();
	$lote = json_decode($_POST["lote"], true);
	$filas_procesadas = 0;
	$base_moneda = cls_Moneda::Codigo("USD");
	$moneda_codigo = "";
	$moneda_cambio = $base_moneda->get_cambio();
	if (isset($_POST["import_val_tipo_moneda"]) && intval($_POST["import_val_tipo_moneda"]) >= 0){
		$moneda_codigo = floatval($_POST["import_val_tipo_moneda"]);
	}
	if (isset($_POST["import_val_cambio_moneda"]) && intval($_POST["import_val_cambio_moneda"]) >= 0){
		$moneda_cambio = floatval($_POST["import_val_cambio_moneda"]);
	}
	for ($idx=0; $idx<count($lote); $idx++){
		$producto_codigo = "";
		$producto_nombre = "";
		$producto_nombre_alternativo = "";
		$codigo_barras = "";
		$codigo_almacen = "";
		$categoria_codigo = "";
		$categoria_nombre = "";
		$fabricante = "";
		$modelo = "";
		$serie = "";
		$peso = "0";
		$unidadmedida_simbolo = "";
		$precio_compra = "0.00";
		$precio_venta = "0.00";
		$precio_minimo = "0.00";
		$stock_minimo = 1;
		$unidades = 0;
		$estado = "Activo";
		$igv_valor = 0;
		/*$compra_producto->set_precio_compra($precio_compra * ($moneda_cambio/$base_moneda->get_cambio()));
		$compra_producto->set_precio_venta($precio_venta * ($moneda_cambio/$base_moneda->get_cambio()));
		$compra_producto->set_precio_minimo($precio_minimo * ($moneda_cambio/$base_moneda->get_cambio()));*/
		if (isset($_POST["import_col_producto_codigo"]) && intval($_POST["import_col_producto_codigo"]) >= 0){
			$producto_codigo = $lote[$idx][intval($_POST["import_col_producto_codigo"])];
		}
		if (isset($_POST["import_col_producto_nombre"]) && intval($_POST["import_col_producto_nombre"]) >= 0){
			$producto_nombre = $lote[$idx][intval($_POST["import_col_producto_nombre"])];
		}
		if (isset($_POST["import_col_producto_nombre_alternativo"]) && intval($_POST["import_col_producto_nombre_alternativo"]) >= 0){
			$producto_nombre_alternativo = $lote[$idx][intval($_POST["import_col_producto_nombre_alternativo"])];
		}
		if (isset($_POST["import_col_codigo_barras"]) && intval($_POST["import_col_codigo_barras"]) >= 0){
			$codigo_barras = $lote[$idx][intval($_POST["import_col_codigo_barras"])];
		}
		if (isset($_POST["import_col_codigo_almacen"]) && intval($_POST["import_col_codigo_almacen"]) >= 0){
			$codigo_almacen = $lote[$idx][intval($_POST["import_col_codigo_almacen"])];
		}
		if (isset($_POST["import_col_categoria_codigo"]) && intval($_POST["import_col_categoria_codigo"]) >= 0){
			$categoria_codigo = $lote[$idx][intval($_POST["import_col_categoria_codigo"])];
		}
		if (isset($_POST["import_col_categoria_nombre"]) && intval($_POST["import_col_categoria_nombre"]) >= 0){
			$categoria_nombre = $lote[$idx][intval($_POST["import_col_categoria_nombre"])];
		}
		if (isset($_POST["import_col_fabricante"]) && intval($_POST["import_col_fabricante"]) >= 0){
			$fabricante = $lote[$idx][intval($_POST["import_col_fabricante"])];
		}
		if (isset($_POST["import_col_modelo"]) && intval($_POST["import_col_modelo"]) >= 0){
			$modelo = $lote[$idx][intval($_POST["import_col_modelo"])];
		}
		if (isset($_POST["import_col_serie"]) && intval($_POST["import_col_serie"]) >= 0){
			$serie = $lote[$idx][intval($_POST["import_col_serie"])];
		}
		if (isset($_POST["import_col_peso"]) && intval($_POST["import_col_peso"]) >= 0){
			$peso = $lote[$idx][intval($_POST["import_col_peso"])];
			if (strlen(trim($peso))==0){$peso = 0;}
		}
		if (isset($_POST["import_col_medida_simbolo"]) && intval($_POST["import_col_medida_simbolo"]) >= 0){
			$unidadmedida_simbolo = $lote[$idx][intval($_POST["import_col_medida_simbolo"])];
		}
		if (isset($_POST["import_col_precio_compra"]) && intval($_POST["import_col_precio_compra"]) >= 0){
			$precio_compra = $lote[$idx][intval($_POST["import_col_precio_compra"])];
			if (strlen(trim($precio_compra))==0){$precio_compra = 0.0;}
			$precio_compra =  floatval($precio_compra) * ($moneda_cambio/$base_moneda->get_cambio());
		}
		if (isset($_POST["import_col_precio_venta"]) && intval($_POST["import_col_precio_venta"]) >= 0){
			$precio_venta = $lote[$idx][intval($_POST["import_col_precio_venta"])];
			if (strlen(trim($precio_venta))==0){$precio_venta = 0.0;}
			$precio_venta = floatval($precio_venta) * ($moneda_cambio/$base_moneda->get_cambio());
		}
		if (isset($_POST["import_col_precio_minimo"]) && intval($_POST["import_col_precio_minimo"]) >= 0){
			$precio_minimo = $lote[$idx][intval($_POST["import_col_precio_minimo"])];
			if (strlen(trim($precio_minimo))==0){$precio_minimo = 0.0;}
			$precio_minimo =  floatval($precio_minimo) * ($moneda_cambio/$base_moneda->get_cambio());
		}
		if (isset($_POST["import_col_stock_minimo"]) && intval($_POST["import_col_stock_minimo"]) >= 0){
			$stock_minimo = $lote[$idx][intval($_POST["import_col_stock_minimo"])];
			if (strlen(trim($stock_minimo))==0){$stock_minimo = 1;}
		}
		if (isset($_POST["import_col_unidades"]) && intval($_POST["import_col_unidades"]) >= 0){
			$unidades = $lote[$idx][intval($_POST["import_col_unidades"])];
			if (strlen(trim($unidades))==0){$unidades = 0;}
		}
		if (isset($_POST["import_col_igv_valor"]) && intval($_POST["import_col_igv_valor"]) >= 0){
			$igv_valor = $lote[$idx][intval($_POST["import_col_igv_valor"])];
			if (strlen(trim($igv_valor))==0){$igv_valor = 0;}
		}
		if (isset($_POST["import_col_estado"]) && intval($_POST["import_col_estado"]) >= 0){
			$estado = $lote[$idx][intval($_POST["import_col_estado"])];
			if (strlen(trim($estado))==0){$estado = 0;}
		}
		if ($precio_compra <= 0){
			$precio_compra = $precio_venta;
		}
		if (strlen(trim($producto_nombre)) > 0){
			$imp_codigo = cls_Categoria::Codigo($categoria_codigo);
			if ($imp_codigo->get_categoria_id() == 0 && strlen($categoria_codigo) > 0 && strlen($categoria_nombre) > 0){
				$imp_codigo->set_codigo($categoria_codigo);
				$imp_codigo->set_nombre($categoria_nombre);
				$imp_codigo->registrar( $usuario_editor );
			}
			$imp_moneda = cls_Moneda::Codigo($moneda_codigo);
			if ($imp_moneda->get_moneda_id() == 0 && strlen($moneda_codigo) > 0){
				/*$imp_moneda->set_nombre("");
				$imp_moneda->set_codigo($moneda_codigo);
				$imp_moneda->set_simbolo("");
				$imp_moneda->set_cambio($moneda_cambio);
				$imp_moneda->registrar( $usuario_editor );*/
				$imp_moneda = cls_Moneda::Codigo("USD");
			}
			$imp_medida = cls_Unidad_Medida::Simbolo($unidadmedida_simbolo);
			if ($imp_medida->get_unidad_medida_id() == 0 && strlen($unidadmedida_simbolo) > 0){
				$imp_medida->set_nombre($unidadmedida_simbolo);
				$imp_medida->set_simbolo($unidadmedida_simbolo);
				$imp_medida->registrar( $usuario_editor );
			}
			$imp_producto = cls_Producto::BuscarFabricanteModeloSerie($producto_codigo, $producto_nombre, $fabricante, $modelo, $serie);
			//$imp_producto = cls_Producto::BuscarMax($producto_codigo, $producto_nombre, $categoria_codigo);
			if ($imp_producto->get_producto_id() == 0){
				$imp_producto->set_nombre(trim($producto_nombre));
				$imp_producto->set_nombre_alternativo($producto_nombre_alternativo);
				//$imp_producto->set_imagen($imagen);
				$imp_producto->set_codigo(trim($producto_codigo));
				$imp_producto->set_codigo_barras(trim($codigo_barras));
				$imp_producto->set_codigo_almacen($codigo_almacen);
				$imp_producto->set_categoria_id($imp_codigo->get_categoria_id());
				$imp_producto->set_unidad_medida_id($imp_medida->get_unidad_medida_id());
				$imp_producto->set_fabricante(trim($fabricante));
				$imp_producto->set_modelo(trim($modelo));
				$imp_producto->set_serie(trim($serie));
				$imp_producto->set_peso($peso);
				$imp_producto->set_stock_minimo($stock_minimo);
				$imp_producto->set_activo(true);
				$imp_producto->set_estado("Activo");
				$imp_producto->registrar( $usuario_editor );
			} else {
				$reg = false;
				if ($imp_producto->get_stock_minimo() < $stock_minimo){
					$imp_producto->set_stock_minimo($stock_minimo);
					$reg = true;
				}
				$t_nombre_alternativo = $imp_producto->get_nombre_alternativo();
				if (!strstr($t_nombre_alternativo, $producto_nombre_alternativo)) {
					if (strlen($t_nombre_alternativo) == 0){
						$imp_producto->set_nombre_alternativo($producto_nombre_alternativo);
					} else {
						$t_nombre_alternativo = explode($t_nombre_alternativo, ",");
						array_push($t_nombre_alternativo, $producto_nombre_alternativo);
						$imp_producto->set_nombre_alternativo(implode(",",$t_nombre_alternativo));
					}
					$reg = true;
				}
				$imp_producto->registrar( $usuario_editor );
			}
			
			$compra_producto = new cls_Compra_Producto();
			$compra_producto->set_compra_id($import_registro->get_compra_id());
			$compra_producto->set_producto_id($imp_producto->get_producto_id());
			$compra_producto->set_moneda_codigo("USD");
			$compra_producto->set_igv_porcentaje($igv_valor);
			
			$compra_producto->set_precio_compra($precio_compra);
			$compra_producto->set_precio_venta($precio_venta);
			$compra_producto->set_precio_minimo($precio_minimo);
			
			$compra_producto->set_unidades($unidades);
			$compra_producto->set_ubicacion('{"ganancia_porcentaje":"0.0","ganancia_moneda":"0.0","cambio_moneda":"'.$base_moneda->get_cambio().'"}');
			$compra_producto->registrar( $usuario_editor );
			
			$f_producto_id = $imp_producto->get_producto_id();
			$f_precio_venta = $precio_venta;
			$f_precio_minimo = $precio_minimo;
			
			//$imp_almacen = cls_Almacen_General::ProductoPrecios($f_producto_id, $f_precio_venta, $f_precio_minimo);
			$imp_almacen = cls_Almacen_General::Producto($f_producto_id);
			if ($imp_almacen->get_almacen_general_id() > 0){
				if ($imp_almacen->get_precio_compra() < $precio_compra){
					$imp_almacen->set_precio_compra($precio_compra);
				}
				if ($imp_almacen->get_precio_venta() < $precio_venta){
					$imp_almacen->set_precio_venta($precio_venta);
				}
			} else {
				$imp_almacen->set_producto_id($imp_producto->get_producto_id());
				$imp_almacen->set_moneda_codigo("USD");
				$imp_almacen->set_igv_porcentaje($igv_valor);
				$imp_almacen->set_precio_compra($precio_compra);
				$imp_almacen->set_precio_venta($precio_venta);
				$imp_almacen->set_precio_minimo($precio_minimo);
				$imp_almacen->set_ubicacion("");
			}
			$imp_almacen->set_compra_id($import_registro->get_compra_id());
			$imp_almacen->set_compra_producto_id($compra_producto->get_compra_producto_id());
			$imp_almacen->set_unidades($imp_almacen->get_unidades() + $unidades);
			$imp_almacen->set_tipo_movimiento("Actualización Almacen");
			if ($imp_almacen->registrar($usuario_editor)){
						$control = new cls_Control_Movimiento();
						$control->set_control_movimiento_id(0);
						$control->set_tienda_id(0);
						$control->set_origen_id(-1);
						$control->set_almacen_general_id($imp_almacen->get_almacen_general_id());
						$control->set_almacen_tienda_id(-1);
						$control->set_movimiento_id($import_registro->get_compra_id());
						$control->set_movimiento_producto_id($compra_producto->get_compra_producto_id($idx));
						$control->set_producto_id($imp_almacen->get_producto_id());
						$control->set_unidades($imp_almacen->get_unidades());
						$control->set_tipo_movimiento("Importación");
						$control->set_estado("Ingreso");
						$control->set_movimiento_fecha($import_registro->get_fecha());
						$control->registrar($usuario_editor);
			
			}
		}
		$filas_procesadas++;
	}
	$respuestas["mensaje"] = "Filas procesadas: ".$filas_procesadas;
	echo(json_encode($respuestas));
}
function importar_datos_almacen_tienda(){
	$respuestas = array("estado"=>"error", "mensaje"=>"", "codigo"=>"0");
	$usuario_editor = 0;
	$import_codigo = $_POST["codigo"];
	$import_almacen = $_POST["import_almacen"];
	if (isset($_SESSION["usuario_editor"])){
		$usuario_editor = $_SESSION["usuario_editor"];
	}
	$import_registro = cls_Movimiento::Indice($import_codigo);
	if ($import_registro->get_movimiento_id() == 0){
		$import_registro->set_origen_id(-1);
		$import_registro->set_fecha($_POST["fecha"]);
		$import_registro->set_hora("00:00:00");
		$import_registro->set_tipo_movimiento("Importación de productos de almacen");
		$import_registro->set_destino_id($import_almacen);
		$import_registro->set_estado_registro("Almacenado");
		$import_registro->registrar( $usuario_editor );
	}
	$respuestas["codigo"] = $import_registro->get_movimiento_id();
	$lote = json_decode($_POST["lote"], true);
	$filas_procesadas = 0;
	$base_moneda = cls_Moneda::Codigo("USD");
	$moneda_codigo = "";
	$moneda_cambio = $base_moneda->get_cambio();
	if (isset($_POST["import_val_tipo_moneda"]) && intval($_POST["import_val_tipo_moneda"]) >= 0){
		$moneda_codigo = floatval($_POST["import_val_tipo_moneda"]);
	}
	if (isset($_POST["import_val_cambio_moneda"]) && intval($_POST["import_val_cambio_moneda"]) >= 0){
		$moneda_cambio = floatval($_POST["import_val_cambio_moneda"]);
	}
	for ($idx=0; $idx<count($lote); $idx++){
		$producto_codigo = "";
		$producto_nombre = "";
		$producto_nombre_alternativo = "";
		$codigo_barras = "";
		$codigo_almacen = "";
		$categoria_codigo = "";
		$categoria_nombre = "";
		$fabricante = "";
		$modelo = "";
		$serie = "";
		$peso = "0";
		$unidadmedida_simbolo = "";
		$precio_compra = "0.00";
		$precio_venta = "0.00";
		$precio_minimo = "0.00";
		$stock_minimo = 1;
		$unidades = 0;
		$estado = "Activo";
		$igv_valor = 0;
		
		if (isset($_POST["import_col_producto_codigo"]) && intval($_POST["import_col_producto_codigo"]) >= 0){
			$producto_codigo = $lote[$idx][intval($_POST["import_col_producto_codigo"])];
		}
		if (isset($_POST["import_col_producto_nombre"]) && intval($_POST["import_col_producto_nombre"]) >= 0){
			$producto_nombre = $lote[$idx][intval($_POST["import_col_producto_nombre"])];
		}
		if (isset($_POST["import_col_producto_nombre_alternativo"]) && intval($_POST["import_col_producto_nombre_alternativo"]) >= 0){
			$producto_nombre_alternativo = $lote[$idx][intval($_POST["import_col_producto_nombre_alternativo"])];
		}
		if (isset($_POST["import_col_codigo_barras"]) && intval($_POST["import_col_codigo_barras"]) >= 0){
			$codigo_barras = $lote[$idx][intval($_POST["import_col_codigo_barras"])];
		}
		if (isset($_POST["import_col_codigo_almacen"]) && intval($_POST["import_col_codigo_almacen"]) >= 0){
			$codigo_almacen = $lote[$idx][intval($_POST["import_col_codigo_almacen"])];
		}
		if (isset($_POST["import_col_categoria_codigo"]) && intval($_POST["import_col_categoria_codigo"]) >= 0){
			$categoria_codigo = $lote[$idx][intval($_POST["import_col_categoria_codigo"])];
		}
		if (isset($_POST["import_col_categoria_nombre"]) && intval($_POST["import_col_categoria_nombre"]) >= 0){
			$categoria_nombre = $lote[$idx][intval($_POST["import_col_categoria_nombre"])];
		}
		if (isset($_POST["import_col_fabricante"]) && intval($_POST["import_col_fabricante"]) >= 0){
			$fabricante = $lote[$idx][intval($_POST["import_col_fabricante"])];
		}
		if (isset($_POST["import_col_modelo"]) && intval($_POST["import_col_modelo"]) >= 0){
			$modelo = $lote[$idx][intval($_POST["import_col_modelo"])];
		}
		if (isset($_POST["import_col_serie"]) && intval($_POST["import_col_serie"]) >= 0){
			$serie = $lote[$idx][intval($_POST["import_col_serie"])];
		}
		if (isset($_POST["import_col_peso"]) && intval($_POST["import_col_peso"]) >= 0){
			$peso = $lote[$idx][intval($_POST["import_col_peso"])];
			if (strlen(trim($peso))==0){$peso = 0;}
		}
		if (isset($_POST["import_col_medida_simbolo"]) && intval($_POST["import_col_medida_simbolo"]) >= 0){
			$unidadmedida_simbolo = $lote[$idx][intval($_POST["import_col_medida_simbolo"])];
		}
		if (isset($_POST["import_col_precio_compra"]) && intval($_POST["import_col_precio_compra"]) >= 0){
			$precio_compra = $lote[$idx][intval($_POST["import_col_precio_compra"])];
			if (strlen(trim($precio_compra))==0){$precio_compra = 0.0;}
			$precio_compra =  floatval($precio_compra) * ($moneda_cambio/$base_moneda->get_cambio());
		}
		if (isset($_POST["import_col_precio_venta"]) && intval($_POST["import_col_precio_venta"]) >= 0){
			$precio_venta = $lote[$idx][intval($_POST["import_col_precio_venta"])];
			if (strlen(trim($precio_venta))==0){$precio_venta = 0.0;}
			$precio_venta = floatval($precio_venta) * ($moneda_cambio/$base_moneda->get_cambio());
		}
		if (isset($_POST["import_col_precio_minimo"]) && intval($_POST["import_col_precio_minimo"]) >= 0){
			$precio_minimo = $lote[$idx][intval($_POST["import_col_precio_minimo"])];
			if (strlen(trim($precio_minimo))==0){$precio_minimo = 0.0;}
			$precio_minimo =  floatval($precio_minimo) * ($moneda_cambio/$base_moneda->get_cambio());
		}
		if (isset($_POST["import_col_stock_minimo"]) && intval($_POST["import_col_stock_minimo"]) >= 0){
			$stock_minimo = $lote[$idx][intval($_POST["import_col_stock_minimo"])];
			if (strlen(trim($stock_minimo))==0){$stock_minimo = 0;}
		}
		if (isset($_POST["import_col_unidades"]) && intval($_POST["import_col_unidades"]) >= 0){
			$unidades = $lote[$idx][intval($_POST["import_col_unidades"])];
			if (strlen(trim($unidades))==0){$unidades = 0;}
		}
		if (isset($_POST["import_col_igv_valor"]) && intval($_POST["import_col_igv_valor"]) >= 0){
			$igv_valor = $lote[$idx][intval($_POST["import_col_igv_valor"])];
			if (strlen(trim($igv_valor))==0){$igv_valor = 0;}
		}
		if (isset($_POST["import_col_estado"]) && intval($_POST["import_col_estado"]) >= 0){
			$estado = $lote[$idx][intval($_POST["import_col_estado"])];
			if (strlen(trim($estado))==0){$estado = 0;}
		}
		if ($precio_compra <= 0){
			$precio_compra = $precio_venta;
		}
		if (strlen(trim($producto_nombre)) > 0){
			$imp_codigo = cls_Categoria::Codigo($categoria_codigo);
			if ($imp_codigo->get_categoria_id() == 0){
				$imp_codigo->set_codigo($categoria_codigo);
				$imp_codigo->set_nombre($categoria_nombre);
				$imp_codigo->registrar( $usuario_editor );
			}
			$imp_moneda = cls_Moneda::Codigo($moneda_codigo);
			if ($imp_moneda->get_moneda_id() == 0){
				/*$imp_moneda->set_nombre("");
				$imp_moneda->set_codigo($moneda_codigo);
				$imp_moneda->set_simbolo("");
				$imp_moneda->set_cambio(1);
				$imp_moneda->registrar( $usuario_editor );*/
				$imp_moneda = cls_Moneda::Codigo("USD");
			}
			$imp_medida = cls_Unidad_Medida::Simbolo($unidadmedida_simbolo);
			if ($imp_medida->get_unidad_medida_id() == 0){
				$imp_medida->set_nombre($unidadmedida_simbolo);
				$imp_medida->set_simbolo($unidadmedida_simbolo);
				$imp_medida->registrar( $usuario_editor );
			}
			$imp_producto = cls_Producto::BuscarFabricanteModeloSerie($producto_codigo, $producto_nombre, $fabricante, $modelo, $serie);
			//$imp_producto = cls_Producto::BuscarMax($producto_codigo, $producto_nombre, $categoria_codigo);
			if ($imp_producto->get_producto_id() == 0){
				$imp_producto->set_nombre(trim($producto_nombre));
				$imp_producto->set_nombre_alternativo($producto_nombre_alternativo);
				//$imp_producto->set_imagen($imagen);
				$imp_producto->set_codigo(trim($producto_codigo));
				$imp_producto->set_codigo_barras(trim($codigo_barras));
				$imp_producto->set_codigo_almacen($codigo_almacen);
				$imp_producto->set_categoria_id($imp_codigo->get_categoria_id());
				$imp_producto->set_unidad_medida_id($imp_medida->get_unidad_medida_id());
				$imp_producto->set_fabricante(trim($fabricante));
				$imp_producto->set_modelo(trim($modelo));
				$imp_producto->set_serie(trim($serie));
				$imp_producto->set_peso($peso);
				$imp_producto->set_stock_minimo($stock_minimo);
				$imp_producto->set_estado("Activo");
				$imp_producto->set_activo(true);
				$imp_producto->registrar( $usuario_editor );
			} else {
				$reg = false;
				if ($imp_producto->get_stock_minimo() < $stock_minimo){
					$imp_producto->set_stock_minimo($stock_minimo);
					$reg = true;
				}
				$t_nombre_alternativo = $imp_producto->get_nombre_alternativo();
				if (!strstr($t_nombre_alternativo, $producto_nombre_alternativo)) {
					if (strlen($t_nombre_alternativo) == 0){
						$imp_producto->set_nombre_alternativo($producto_nombre_alternativo);
					} else {
						$t_nombre_alternativo = explode($t_nombre_alternativo, ",");
						array_push($t_nombre_alternativo, $producto_nombre_alternativo);
						$imp_producto->set_nombre_alternativo(implode(",",$t_nombre_alternativo));
					}
					$reg = true;
				}
				$imp_producto->registrar( $usuario_editor );
			}
			
			$compra_producto = new cls_Movimiento_Producto();
			$compra_producto->set_movimiento_id($import_registro->get_movimiento_id());
			$compra_producto->set_almacen_id(0);
			$compra_producto->set_producto_id($imp_producto->get_producto_id());
			$compra_producto->set_moneda_codigo("USD");
			$compra_producto->set_igv_porcentaje($igv_valor);
			$compra_producto->set_precio_compra($precio_compra);
			$compra_producto->set_precio_venta($precio_venta);
			$compra_producto->set_precio_minimo($precio_minimo);
			$compra_producto->set_unidades($unidades);
			$compra_producto->set_fecha_vencimiento("1990-01-01");
			$compra_producto->registrar( $usuario_editor );
			
			$f_producto_id = $imp_producto->get_producto_id();
			$f_precio_venta = $precio_venta;
			$f_precio_minimo = $precio_minimo;
			//$grl_almacen = cls_Almacen_General::ProductoPrecios($f_producto_id, $f_precio_venta, $f_precio_minimo);
			$grl_almacen = cls_Almacen_General::Producto($f_producto_id);
			if ($grl_almacen->get_almacen_general_id() > 0){
				if ($grl_almacen->get_precio_compra() < $precio_compra){
					$grl_almacen->set_precio_compra($precio_compra);
				}
				if ($grl_almacen->get_precio_venta() < $precio_venta){
					$grl_almacen->set_precio_venta($precio_venta);
				}
			} else {
				$grl_almacen->set_producto_id($imp_producto->get_producto_id());
				$grl_almacen->set_moneda_codigo("USD");
				$grl_almacen->set_igv_porcentaje($igv_valor);
				$grl_almacen->set_precio_compra($precio_compra);
				$grl_almacen->set_precio_venta($precio_venta);
				$grl_almacen->set_precio_minimo($precio_minimo);
				$grl_almacen->set_unidades(0);
				$grl_almacen->set_ubicacion("");
			}
			$grl_almacen->set_compra_id(0);
			$grl_almacen->set_compra_producto_id(0);
			$grl_almacen->set_tipo_movimiento("Actualización Almacen");
			$grl_almacen->registrar($usuario_editor);
			
			
			//$imp_almacen = cls_Almacen_Tienda::ProductoPrecios($import_almacen, $f_producto_id, $f_precio_venta, $f_precio_minimo);
			$imp_almacen = cls_Almacen_Tienda::Producto($import_almacen, $f_producto_id);
			$imp_almacen->set_almacen_general_id($grl_almacen->get_almacen_general_id());
			$imp_almacen->set_movimiento_producto_id($compra_producto->get_movimiento_id());
			$imp_almacen->set_moneda_codigo("USD");
			$imp_almacen->set_igv_porcentaje($igv_valor);
			$imp_almacen->set_tienda_id($import_almacen);
			$imp_almacen->set_producto_id($imp_producto->get_producto_id());
			$imp_almacen->set_precio_compra($precio_compra);
			$imp_almacen->set_precio_venta($precio_venta);
			$imp_almacen->set_precio_minimo($precio_minimo);
			$imp_almacen->set_unidades($imp_almacen->get_unidades() + $unidades);
			$imp_almacen->set_fecha_vencimiento($compra_producto->get_fecha_vencimiento());
			$imp_almacen->set_ubicacion("");
			$imp_almacen->set_tipo_movimiento("Actualización Almacen");
			if($imp_almacen->registrar($usuario_editor)){
						$control = new cls_Control_Movimiento();
						$control->set_control_movimiento_id(0);
						$control->set_tienda_id($import_almacen);
						$control->set_origen_id(-1);
						$control->set_almacen_general_id($imp_almacen->get_almacen_general_id());
						$control->set_almacen_tienda_id($imp_almacen->get_almacen_tienda());
						$control->set_movimiento_id($import_registro->get_compra_id());
						$control->set_movimiento_producto_id($compra_producto->get_compra_producto_id($idx));
						$control->set_producto_id($imp_almacen->get_producto_id());
						$control->set_unidades($imp_almacen->get_unidades());
						$control->set_tipo_movimiento("Importación");
						$control->set_estado("Ingreso");
						$control->set_movimiento_fecha($import_registro->get_fecha());
						$control->registrar($usuario_editor);
			}
		}
		$filas_procesadas++;
	}
	$respuestas["mensaje"] = "Filas procesadas: ".$filas_procesadas;
	echo(json_encode($respuestas));
}
function autoload_documento(){
	$respuestas = array("estado"=>"error", "mensaje"=>"", "datos"=>array());
	if ($_FILES['autoload_excel']['error'] === UPLOAD_ERR_OK) {
		$uploadDirectory = "../uploads/";
		if (!file_exists($uploadDirectory) && !is_dir($uploadDirectory)) {
			if (!mkdir($uploadDirectory, 0755, true)) {
				$respuestas["mensaje"] = 'Error al crear el directorio de carga.';
				exit;
			}
		}
		$tmpfilesize = isset($_FILES["autoload_excel"]["size"]) ? $_FILES["autoload_excel"]["size"] : 0;
		$tmpfilename = isset($_FILES["autoload_excel"]["tmp_name"]) ? $_FILES["autoload_excel"]["tmp_name"] : 0;
		$tmpfiletype = isset($_FILES["autoload_excel"]["type"]) ? $_FILES["autoload_excel"]["type"] : 0;
		$file_upload = "file_autoload_temp";
		if (move_uploaded_file($tmpfilename, $uploadDirectory.$file_upload.".xlsx")) {
			$respuestas["mensaje"] = 'Archivo Excel cargado y guardado';
		} else {
			$respuestas["mensaje"] = 'Error al mover el archivo al directorio de carga.';
		}
		// Realiza el procesamiento del archivo Excel aquí
		$xlsx_json = array();
		if ($xlsx = SimpleXLSX::parse('../uploads/'.$file_upload.".xlsx")) {
			$totalfilas = count($xlsx->rows());
			$prettyJsonString = json_encode($xlsx->rows(), JSON_PRETTY_PRINT);
			$myfile = fopen($uploadDirectory.$file_upload.".json", "w") or die("Unable to open file!");
			fwrite($myfile, $prettyJsonString);
			fclose($myfile);
			$strJsonFileContents = file_get_contents('../uploads/'.$file_upload.".json");
			$xlsx = json_decode($strJsonFileContents, true);
			$totalfilas = count($xlsx);
			$rows = array();
			for ($i=0; $i<$totalfilas; $i++){
				$row = $xlsx[$i];
				array_push($rows, $row);
			}
			$respuestas["datos"] = $rows;
			$respuestas["estado"] = "ok";
			$respuestas["totalfilas"] = $totalfilas;
			unlink('../uploads/'.$file_upload.".xlsx");
		} else {
			$respuestas["mensaje"] = "Error cargando el archivo";
		}
		$respuestas["mensaje"] = 'Archivo Excel cargado correctamente.';
	} else {
		$respuestas["mensaje"] = 'Se produjo un error al cargar el archivo.';
	}
	echo(json_encode($respuestas));
}
function autoload_datos(){
	$respuestas = array("estado"=>"error", "mensaje"=>"", "codigo"=>"0");
	if (isset($_POST["lote"])){
		$lote = json_decode($_POST["lote"], true);
		$filas_procesadas = 0;
		$lista_preparados = array();
		$base_moneda = cls_Moneda::Codigo("USD");
		if (isset($_POST["import_val_tipo_moneda"]) && $_POST["import_val_tipo_moneda"] != "USD"){
			$base_moneda = cls_Moneda::Codigo($_POST["import_val_tipo_moneda"]);
		}
		$moneda_cambio = $base_moneda->get_cambio();
		for ($idx=0; $idx<count($lote); $idx++){
			$producto_codigo = "";
			$producto_nombre = "";
			$fabricante = "";
			$modelo = "";
			$serie = "";
			$precio_compra = "0.00";
			$precio_compra_cambio = "0.00";
			$unidades = 0;
			$customdata = true;
			if (isset($_POST["customdata"])){
				$customdata = $_POST["customdata"];
			}
			if (isset($_POST["import_col_producto_codigo"]) && intval($_POST["import_col_producto_codigo"]) >= 0){
				$producto_codigo = $lote[$idx][intval($_POST["import_col_producto_codigo"])];
			}
			if (isset($_POST["import_col_producto_nombre"]) && intval($_POST["import_col_producto_nombre"]) >= 0){
				$producto_nombre = $lote[$idx][intval($_POST["import_col_producto_nombre"])];
			}
			if (isset($_POST["import_col_fabricante"]) && intval($_POST["import_col_fabricante"]) >= 0){
				$fabricante = $lote[$idx][intval($_POST["import_col_fabricante"])];
			}
			if (isset($_POST["import_col_modelo"]) && intval($_POST["import_col_modelo"]) >= 0){
				$modelo = $lote[$idx][intval($_POST["import_col_modelo"])];
			}
			if (isset($_POST["import_col_serie"]) && intval($_POST["import_col_serie"]) >= 0){
				$serie = $lote[$idx][intval($_POST["import_col_serie"])];
			}
			if (isset($_POST["import_col_precio_compra"]) && intval($_POST["import_col_precio_compra"]) >= 0){
				$precio_compra = $lote[$idx][intval($_POST["import_col_precio_compra"])];
				if (strlen(trim($precio_compra))==0){$precio_compra = 0.0;}
				$precio_compra_cambio =  floatval($precio_compra) * ($moneda_cambio/$base_moneda->get_cambio());
			}
			if (isset($_POST["import_col_unidades"]) && intval($_POST["import_col_unidades"]) >= 0){
				$unidades = $lote[$idx][intval($_POST["import_col_unidades"])];
				if (strlen(trim($unidades))==0){$unidades = 0;}
			}
			$imp_producto = cls_Producto::BuscarFabricanteModeloSerie($producto_codigo, $producto_nombre, $fabricante, $modelo, $serie);
			if ($imp_producto->get_producto_id() <= 0){
				array_push($lista_preparados, array(
					"producto_id"=>0,
					"producto_codigo"=>$producto_codigo,
					"producto_nombre"=>$producto_nombre,
					"producto_fabricante"=>$fabricante,
					"producto_modelo"=>$modelo,
					"producto_serie"=>$serie,
					"precio_compra"=>$precio_compra,
					"precio_compra_cambio"=>$precio_compra_cambio,
					"unidades"=>$unidades,
					"almacen_general_id"=>0,
				));
			} else {
				$precio_venta = 0;
				$precio_venta_cambio = 0;
				$producto_almacen = cls_Almacen_General::Producto($imp_producto->get_producto_id());
				$precio_venta = $producto_almacen->get_precio_venta();
				$precio_venta_cambio = $producto_almacen->get_precio_venta()*$precio_compra_cambio;
				array_push($lista_preparados, array(
					"producto_id"=>$imp_producto->get_producto_id(),
					"producto_codigo"=>$imp_producto->get_codigo(),
					"producto_nombre"=>$imp_producto->get_nombre(),
					"producto_fabricante"=>$imp_producto->get_fabricante(),
					"producto_modelo"=>$imp_producto->get_modelo(),
					"producto_serie"=>$imp_producto->get_serie(),
					"precio_compra"=>$precio_compra,
					"precio_compra_cambio"=>$precio_compra_cambio,
					"precio_venta"=>$precio_venta,
					"precio_venta_cambio"=>$precio_venta_cambio,
					"unidades"=>$unidades,
					"almacen_general_id"=>$producto_almacen->get_almacen_general_id(),
				));
			}
			$filas_procesadas++;
		}
		$respuestas["estado"] = "ok";
		$respuestas["lista"] = $lista_preparados;
		$respuestas["mensaje"] = "Filas procesadas: ".$filas_procesadas;
	} else {
		$respuestas["mensaje"] = "Ocurrió un error recibiendo los datos";
	}
	echo(json_encode($respuestas));
}

if (isset($_POST["accion"])){
    if ($_POST["accion"] == "importar_documento"){
		importar_documento();
	} else if ($_POST["accion"] == "importar_datos"){
		if ($_POST["import_almacen"] <= 0){
			importar_datos_almacen_general();
		} else {
			importar_datos_almacen_tienda();
		}
	} else if ($_POST["accion"] == "autoload_documento"){
		autoload_documento();
	} else if ($_POST["accion"] == "autoload_datos"){
		autoload_datos();
	}
}
?>
