<?php
class Auxiliar extends CI_Controller{
	function __construct(){
		parent::__construct();
	}
	function prouctos_entrada_periodo(){
		$sql =  "SELECT * FROM entrada_productos LEFT JOIN presentaciones ON entrada_productos.id_producto = presentaciones.id_producto WHERE fecha_entrada >= '2022-12-01 00:00:00' AND fecha_entrada <= '2023-04-30 23:59:59' AND presentaciones.tipo_presentacion=0 GROUP BY entrada_productos.id_producto";
		$res= $this->Generic_model->sql_custom($sql);
		echo "<table>";
		echo "<thead><tr><th>ID</th><th>ID PRE</th><th>SKU</th><th>DESC</th></tr></thead>";
		foreach($res as $rs){
			echo "<tr><td>".$rs->id_producto."</td>";
			echo "<td>".$rs->id_presentacion."</td>";
			echo "<td>".$rs->sku_presentacion."</td>";
			echo "<td>".$rs->desc_presentacion."</td></tr>";
		}
		echo "</table>";
	}
	function prouctos_salida_periodo(){
		$sql =  "SELECT * FROM salida_productos LEFT JOIN presentaciones ON salida_productos.id_producto = presentaciones.id_producto WHERE fecha_salida >= '2022-12-01 00:00:00' AND fecha_salida <= '2023-04-30 23:59:59' AND presentaciones.tipo_presentacion=0 GROUP BY salida_productos.id_producto";
		$res= $this->Generic_model->sql_custom($sql);
		echo "<table>";
		echo "<thead><tr><th>ID</th><th>ID PRE</th><th>SKU</th><th>DESC</th></tr></thead>";
		foreach($res as $rs){
			echo "<tr><td>".$rs->id_producto."</td>";
			echo "<td>".$rs->id_presentacion."</td>";
			echo "<td>".$rs->sku_presentacion."</td>";
			echo "<td>".$rs->desc_presentacion."</td></tr>";
		}
		echo "</table>";
	}
	function reporte_inventario_cp(){
		ini_set('max_execution_time', 500);
		ini_set('memory_limit', '-1');
		$fecha = date("Y-m-d H:i:s", strtotime($this->input->get("d")." 23:59:59"));
		/*$fecha = date("Y-m-d H:i:s", strtotime($this->input->get("d")." 00:00:00"));*/
		$incAgotados = filter_var($this->input->get("ia"), FILTER_VALIDATE_BOOLEAN);
		$incNegativos = filter_var($this->input->get("in"), FILTER_VALIDATE_BOOLEAN);

		$productos=$this->Generic_model->get("productos","*","","","",array("presentaciones"=>"presentaciones.id_producto=productos.id_producto AND presentaciones.tipo_presentacion=0"));
		$iteration=0;
		$total = 0;


		$nombreComercial = "DLC Moraz&aacute;n";
		$razonSocial = "Saida Bonilla Echeverria";


		echo "<div style='text-align:center'>";
		/**Header */
		echo "<div style='text-align:center'>";
		echo "<h3>".$nombreComercial."</h3>";
		echo "<span>".$razonSocial."</span>";
		echo "<h3>Reporte de inventario al ".date("d/m/Y", strtotime($fecha))."</h3>";
		echo "</div>";


		/**----Encabezado de la tabla ----*/
		echo "<table border='1' cellspacing='0'>";
		echo "<tr>";
		echo "<th>#</th>";
		echo "<th>ID PROD.</th>";
		echo "<th>ID PRE.</th>";
		echo "<th>SKU</th>";
		echo "<th>Descripci&oacute;n</th>";
		echo "<th>Existencias</th>";
		echo "<th>Costo<br> promedio</th>";
		echo "<th>Costo Total</th>";
		echo "<th>Nombre</th>";
		echo "<th>Negativo</th>";
		echo "<th>Max Negativo</th>";
		echo "<th>E. Minima</th>";
		echo "<th>Saldo ini</th>";
		echo "<th>Operaciones Periodo</th>";
		echo "<th>Kardex</th>";
		echo "</tr>";
	
		/**----/Encabezado de la tabla ----*/
		foreach($productos as $producto){
			/*$sqlStmt="(SELECT  '0' as indx, 'entrada' as trans, id_entrada as id, DATE(fecha_entrada) as fecha, concepto_entrada as concepto, (cant_entrada*unidades_representativas) as entrada, '0'                                    as salida, (costo_entrada/unidades_representativas) as costo, ventas.documento_venta as documentov, resoluciones_caja.serie_autorizada as seriev, ventas.num_documento_venta as numdocv, c.documento_compra as documentoc,  c.num_doc_compra as numdocc, prov.nombre_proveedor as proveedor FROM entrada_productos LEFT JOIN compras c ON entrada_productos.id_compra = c.id_compra LEFT JOIN proveedores prov ON c.id_proveedor = prov.id_proveedor  LEFT JOIN devoluciones ON entrada_productos.id_devolucion=devoluciones.id_devolucion LEFT JOIN ventas ON devoluciones.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=entrada_productos.id_presentacion WHERE entrada_productos.id_producto = '". $producto->id_producto."'".($fecha ? " AND fecha_entrada < '".$fecha."'" : "").")";
			$sqlStmt.=" UNION ALL ";
			$sqlStmt.="(SELECT '1' as indx, 'salida' as trans, id_salida as id,  DATE(fecha_salida) as fecha,  concepto_salida as concepto, '0'                                      as entrada, (cant_salida*unidades_representativas) as salida, 0                                        as costo, ventas.documento_venta as documentov, resoluciones_caja.serie_autorizada as seriev, ventas.num_documento_venta as numdocv, '-'                as documentoc,  '-'              as numdocc,  ''                   as proveedor FROM salida_productos  LEFT JOIN ventas ON salida_productos.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=salida_productos.id_presentacion WHERE salida_productos.id_producto = '". $producto->id_producto. "'".($fecha ? " AND fecha_salida <= '".$fecha."'" : "").")";
			$sqlStmt .=" ORDER BY fecha, indx";*/
			/*$sqlStmt="(SELECT  '0' as indx, 'entrada' as trans, id_entrada as id, DATE(fecha_entrada) as fecha, concepto_entrada as concepto, (cant_entrada*unidades_representativas) as entrada, '0'                                    as salida, (costo_entrada/unidades_representativas) as costo, ventas.documento_venta as documentov, resoluciones_caja.serie_autorizada as seriev, ventas.num_documento_venta as numdocv, c.documento_compra as documentoc,  c.num_doc_compra as numdocc, prov.nombre_proveedor as proveedor, c.folio_compra as folio, c.linea_compra as linea FROM entrada_productos LEFT JOIN compras c ON entrada_productos.id_compra = c.id_compra LEFT JOIN proveedores prov ON c.id_proveedor = prov.id_proveedor  LEFT JOIN devoluciones ON entrada_productos.id_devolucion=devoluciones.id_devolucion LEFT JOIN ventas ON devoluciones.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=entrada_productos.id_presentacion WHERE entrada_productos.id_producto = '". $producto->id_producto."'".($fecha ? " AND fecha_entrada < '".$fecha."'" : "").")";
			$sqlStmt.=" UNION ALL ";
			$sqlStmt.="(SELECT '1' as indx, 'salida' as trans, id_salida as id,  DATE(fecha_salida) as fecha,  concepto_salida as concepto, '0'                                      as entrada, (cant_salida*unidades_representativas) as salida, 0                                        as costo, salida_productos.doc_facturacion as documentov, resoluciones_caja.serie_autorizada as seriev, salida_productos.num_doc_facturacion as numdocv, '-'                as documentoc,  '-'              as numdocc,  ''                   as proveedor, ''             as folio, ''             as linea FROM salida_productos  LEFT JOIN ventas ON salida_productos.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=salida_productos.id_presentacion WHERE salida_productos.id_producto = '". $producto->id_producto. "'".($fecha ? " AND fecha_salida < '".$fecha."'" : "").")";
			$sqlStmt .=" ORDER BY fecha, indx";*/
			/**Query  FOR DIST. SANDI PORPUSE*/	
			$sqlStmt="(SELECT  '0' as indx, 'entrada' as trans, id_entrada as id, (fecha_entrada) as fecha, concepto_entrada as concepto, (cant_entrada*unidades_representativas) as entrada, '0'                                    as salida, (costo_entrada/unidades_representativas) as costo,            ventas.documento_venta as documentov, resoluciones_caja.serie_autorizada as seriev,           ventas.num_documento_venta as numdocv, c.documento_compra as documentoc,  c.num_doc_compra as numdocc, prov.nombre_proveedor as proveedor, dev.doc_devolucion as documentod, resoluciones_caja.serie_autorizada as seried, dev.num_doc_devolucion as numdocd, '' as folio, '' as linea FROM entrada_productos LEFT JOIN compras c ON entrada_productos.id_compra = c.id_compra LEFT JOIN proveedores prov ON c.id_proveedor = prov.id_proveedor  LEFT JOIN devoluciones dev ON entrada_productos.id_devolucion=dev.id_devolucion LEFT JOIN ventas ON dev.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=entrada_productos.id_presentacion WHERE entrada_productos.id_producto = '". $producto->id_producto."'".($fecha ? " AND fecha_entrada <= '".$fecha."'" : "").")";
			$sqlStmt.=" UNION ALL ";
			$sqlStmt.="(SELECT '1' as indx, 'salida' as trans, id_salida as id,  (fecha_salida) as fecha,  concepto_salida as concepto, '0'                                       as entrada, (cant_salida*unidades_representativas) as salida, 0                                         as costo, salida_productos.doc_facturacion as documentov, resoluciones_caja.serie_autorizada as seriev, salida_productos.num_doc_facturacion as numdocv, '-'                as documentoc,  '-'              as numdocc,  ''                   as proveedor, ''                 as documentod, ''                                 as seried, ''                     as numdocd, '' as folio, '' as linea FROM salida_productos  LEFT JOIN ventas ON salida_productos.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=salida_productos.id_presentacion WHERE salida_productos.id_producto = '". $producto->id_producto. "'".($fecha ? " AND fecha_salida <= '".$fecha."'" : "").")";
			$sqlStmt .=" ORDER BY fecha";


			$trans= $this->Generic_model->sql_custom($sqlStmt);
			$inventarioInicial=0;
			$tuboExistenciasNegativas = false;
			$operacionesPeriodo = 0;
			$saldoAFecha = 0;
			$existenciaMinimaPeriodo = 0;
			

			/** */
			if(count($trans)){
				$total_entradas_producto=0;
				$total_salidas_producto=0;
				$total_existencia_producto=0;
				
				$costos_compra_totales_producto=0;
				$cantidad_compra_totales_producto=0;
				$primera_entrada=true;
				
				$costo_promedio_producto =0;
				$maxNegativo = 0;

				
				foreach($trans as $tran){
					$saldoAnterior = $total_existencia_producto;
					$total_entradas_producto+=$tran->entrada;
					/*$total_salidas_producto+=$tran->salida;*/
					$salidaCant = $tran->salida;


					
					$total_salidas_producto+=$salidaCant;

					$total_existencia_producto=$total_entradas_producto-$total_salidas_producto;
					
					/*Calculo del coste*/
					if($tran->trans=='entrada'){
						switch($tran->concepto){
							case 0: /**Inventario inicial */
								if($inventarioInicial==0){
									$inventarioInicial=1;
									$costo_promedio_producto=round($tran->costo, 4);
								}
							break;
							case 1: /**Compra */
								/**Calculo de costo*/
								if($total_existencia_producto-$tran->entrada>0){
									$costo_promedio_producto=round(((($total_existencia_producto-$tran->entrada)*$costo_promedio_producto)+($tran->entrada*$tran->costo))/$total_existencia_producto, 4);
									if($costo_promedio_producto<0)
										$costo_promedio_producto=round($tran->costo, 4);
								}else{
									$costo_promedio_producto=round($tran->costo, 4);
								}	



							break;
						}

						
						/*if($primera_entrada){
							$primera_entrada=false;
							if(/*$tran->concepto==1*//* || $tran->concepto==0  /*|| $tran->concepto==9*//*){ /*primera entrada*/
								/*$costo_promedio_producto=round($tran->costo, 4);
								$costo_ultimacompra_producto=$tran->costo;
							}
						}else{
							if($tran->concepto==1){ /*Compras*//*
								$costo_total_anterior=($total_existencia_producto-$tran->entrada)*$costo_promedio_producto;
								$costo_transaccion_actual=$tran->costo*$tran->entrada;
								if($total_existencia_producto>0){
									$costo_promedio_producto=round(($costo_total_anterior+$costo_transaccion_actual)/$total_existencia_producto, 4);
								}else{
									$costo_promedio_producto=round($tran->costo, 4);
								}
								$costo_ultimacompra_producto=$tran->costo;
							}
						}	*/


					}
					if($total_existencia_producto < 0){

					}

					if((date('Y-m-d', strtotime($tran->fecha)) >= date('Y-m-d', strtotime('2022-12-01'))) && (date('Y-m-d', strtotime($tran->fecha)) <= date('Y-m-d', strtotime('2023-07-31')))){
						$operacionesPeriodo += 1;
						if($operacionesPeriodo == 1){
							$saldoAFecha = $saldoAnterior;
							$existenciaMinimaPeriodo = $saldoAnterior;
						}

						if($total_existencia_producto < 0){
							if($total_existencia_producto < $maxNegativo)
							{
								$maxNegativo = $total_existencia_producto;
							} 
							$tuboExistenciasNegativas = true;
						}
						/** */
						if($total_existencia_producto < $existenciaMinimaPeriodo){
							$existenciaMinimaPeriodo = $total_existencia_producto;
						}

					}
				}

				$mostrar_producto = true;

				if($total_existencia_producto == 0  && !$incAgotados){
					$mostrar_producto = false;
				}
				if($total_existencia_producto < 0  && !$incNegativos){
					$mostrar_producto = false;
				}
				if($operacionesPeriodo == 0){
					$mostrar_producto = false;
				}
				if($mostrar_producto){
					$costo_promedio_producto = round($costo_promedio_producto, 4);
					$costo_total = round($total_existencia_producto * $costo_promedio_producto,4);
					$total += $costo_total;
					/** ROW de la tabla */
					$iteration+=1;
					echo "<tr>";
					echo "<td>".$iteration."</td>";
					echo "<td>".$producto->id_producto."</td>";
					echo "<td>".$producto->id_presentacion."</td>";
					echo "<td>".$producto->sku_presentacion."</td>";
					echo "<td>".$producto->desc_presentacion."</td>";
					echo "<td>".$total_existencia_producto."</td>";
					echo "<td>".number_format($costo_promedio_producto,4)."</td>";
					echo "<td>".number_format($costo_total,4)."</td>";
					echo "<td>".$producto->sku_presentacion."-".str_replace(array('~', '"', "'", '#', '%', '&', '*', ':', '<', '>', '?', '/', '{', '|', '}'), array('',  ' pulg.', "", 'N', 'porcent.', ' ', 'x ', ' ', ' ', ' ', ' ', '-', '(', ' ', ')'),$producto->desc_presentacion)."</td>";
					echo "<td>".($tuboExistenciasNegativas ? "SI" : "NO")."</td>";
					echo "<td>".$maxNegativo."</td>";
					echo "<td>".$existenciaMinimaPeriodo."</td>";
					echo "<td>".$saldoAFecha."</td>";
					echo "<td>".$operacionesPeriodo."</td>";
					echo "<td><a href='http://localhost/vet_mata/online/auxiliar/kardex_inventario?id=".$producto->id_producto."&inicio=01-12-2022&final=31-07-2023' target='_blank'>Exportar</a></td>";
					echo "</tr>";
				}
			}
		}
		/**----Final de la tabla ----*/
		echo "<tr><td colspan=\"7\">TOTAL</td><td>$".$total."</td></tr></table>";
		echo "</div>";
	
	}



	/** */
	function kardex_inventario(){
		$producto=$this->input->get("id");
		$inicio = ($this->input->get('inicio') && $this->input->get('inicio') != "" ?  date('Y-m-d H:i:s', strtotime($this->input->get('inicio')." 00:00:00")) : null);
		$final 	= ($this->input->get('final') && $this->input->get('final') != "" ? date('Y-m-d H:i:s', strtotime($this->input->get('final')." 23:59:59")) : null);

		$nombreComercial = $this->Generic_model->get('configuraciones','valor_config as valor',array('campo_config' => 'NombreEmpresa'));
		$nombreComercial = $nombreComercial[0]->valor;
		$razonSocial = $this->Generic_model->get('configuraciones','valor_config as valor',array('campo_config' => 'RazonSocialEmpresa'));
		$razonSocial = $razonSocial[0]->valor;
		$nit = $this->Generic_model->get('configuraciones','valor_config as valor',array('campo_config' => 'NITEmpresa'));
		$nit = $nit[0]->valor;
		$ncr = $this->Generic_model->get('configuraciones','valor_config as valor',array('campo_config' => 'NRCEmpresa'));
		$ncr = $ncr[0]->valor;

		/**Valores */
		$conceptos_entrada = array(
			"0" => "Inventario Inicial",
			"1" => "Compra",
			"2" => "Devoluci&oacute;n",
			"8" => "Traslado desde sucursal",
			"9" => "Ajuste por conteo de inventario",
		);
		$conceptos_salida = array(
			"0" => "Venta",
			"1" => "Pedido",
			"2" => "Da&ntilde;o / vencimiento",
			"3" => "Perdida / extrav&iacute;o",
			"4" => "Devoluci&oacute;n a proveedor",
			"5" => "Consumo interno",
			"7" => "Anulaci&oacute;n de compra",
			"8" => "Traslado hacia sucursal",
			"9" => "Ajuste por conteo de inventario"
		);
		$doc_compra = array(
			"0" => "CCF",
			"1" => "Factura",
			"2" => "Nota de remisi&oacute;n",
			"3" => "Nota de cr&eacute;dito",
		);
		$doc_venta = array(
			"0" => "S / Doc",
			"1" => "Factura",
			"2" => "CCF",
			"3" => "Ticket",
			"4" => "Nota de remisi&oacute;n",
			"5" => "Nota de env&iacute;o",
			"8" => "Comp. Pago",
		);
		/**Productos info */
		$prodInfo = $this->Generic_model->get('presentaciones', 'presentaciones.sku_presentacion, presentaciones.desc_presentacion, productos.unidad_medida_producto',array('presentaciones.id_producto' => $producto, 'tipo_presentacion' => 0),'','',array('productos' => 'productos.id_producto = presentaciones.id_producto'));
		$prodInfo = $prodInfo[0];
		/**Query REGULAR*/	
		/*$sqlStmt="(SELECT  'entrada' as trans, id_entrada as id, DATE(fecha_entrada) as fecha, concepto_entrada as concepto, (cant_entrada*unidades_representativas) as entrada, '0'                                    as salida, (costo_entrada/unidades_representativas) as costo, ventas.documento_venta as documentov, resoluciones_caja.serie_autorizada as seriev, ventas.num_documento_venta as numdocv, c.documento_compra as documentoc,  c.num_doc_compra as numdocc, prov.nombre_proveedor as proveedor, c.folio_compra as folio, c.linea_compra as linea FROM entrada_productos LEFT JOIN compras c ON entrada_productos.id_compra = c.id_compra LEFT JOIN proveedores prov ON c.id_proveedor = prov.id_proveedor  LEFT JOIN devoluciones ON entrada_productos.id_devolucion=devoluciones.id_devolucion LEFT JOIN ventas ON devoluciones.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=entrada_productos.id_presentacion WHERE entrada_productos.id_producto = '". $producto."'".($final ? " AND fecha_entrada <= '".$final."'" : "").")";
		$sqlStmt.=" UNION ALL ";
		$sqlStmt.="(SELECT  'salida' as trans, id_salida as id,  DATE(fecha_salida) as fecha,  concepto_salida as concepto, '0'                                      as entrada, (cant_salida*unidades_representativas) as salida, 0                                        as costo, ventas.documento_venta as documentov, resoluciones_caja.serie_autorizada as seriev, ventas.num_documento_venta as numdocv, '-'                as documentoc,  '-'              as numdocc,  ''                   as proveedor, ''             as folio, ''             as linea FROM salida_productos  LEFT JOIN ventas ON salida_productos.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=salida_productos.id_presentacion WHERE salida_productos.id_producto = '". $producto. "'".($final ? " AND fecha_salida <= '".$final."'" : "").")";
		$sqlStmt .=" ORDER BY fecha";*/

		/**Query  FOR DLC PORPUSE*/	
		/*$sqlStmt="(SELECT  '0' as indx, 'entrada' as trans, id_entrada as id, DATE(fecha_entrada) as fecha, concepto_entrada as concepto, (cant_entrada*unidades_representativas) as entrada, '0'                                    as salida, (costo_entrada/unidades_representativas) as costo, ventas.documento_venta as documentov, resoluciones_caja.serie_autorizada as seriev, ventas.num_documento_venta as numdocv, c.documento_compra as documentoc,  c.num_doc_compra as numdocc, prov.nombre_proveedor as proveedor, c.folio_compra as folio, c.linea_compra as linea FROM entrada_productos LEFT JOIN compras c ON entrada_productos.id_compra = c.id_compra LEFT JOIN proveedores prov ON c.id_proveedor = prov.id_proveedor  LEFT JOIN devoluciones ON entrada_productos.id_devolucion=devoluciones.id_devolucion LEFT JOIN ventas ON devoluciones.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=entrada_productos.id_presentacion WHERE entrada_productos.id_producto = '". $producto."'".($final ? " AND fecha_entrada <= '".$final."'" : "").")";
		$sqlStmt.=" UNION ALL ";
		$sqlStmt.="(SELECT '1' as indx, 'salida' as trans, id_salida as id,  DATE(fecha_salida) as fecha,  concepto_salida as concepto, '0'                                      as entrada, (cant_salida*unidades_representativas) as salida, 0                                        as costo, salida_productos.doc_facturacion as documentov, resoluciones_caja.serie_autorizada as seriev, salida_productos.num_doc_facturacion as numdocv, '-'                as documentoc,  '-'              as numdocc,  ''                   as proveedor, ''             as folio, ''             as linea FROM salida_productos  LEFT JOIN ventas ON salida_productos.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=salida_productos.id_presentacion WHERE salida_productos.id_producto = '". $producto. "'".($final ? " AND fecha_salida <= '".$final."'" : "").")";
		$sqlStmt .=" ORDER BY fecha, indx";*/


		/**Query  FOR DIST. SANDI PORPUSE*/	
		$sqlStmt="(SELECT  '0' as indx, 'entrada' as trans, id_entrada as id, (fecha_entrada) as fecha, concepto_entrada as concepto, (cant_entrada*unidades_representativas) as entrada, '0'                                    as salida, (costo_entrada/unidades_representativas) as costo,            ventas.documento_venta as documentov, resoluciones_caja.serie_autorizada as seriev,           ventas.num_documento_venta as numdocv, c.documento_compra as documentoc,  c.num_doc_compra as numdocc, prov.nombre_proveedor as proveedor, dev.doc_devolucion as documentod, resoluciones_caja.serie_autorizada as seried, dev.num_doc_devolucion as numdocd, '' as folio, '' as linea FROM entrada_productos LEFT JOIN compras c ON entrada_productos.id_compra = c.id_compra LEFT JOIN proveedores prov ON c.id_proveedor = prov.id_proveedor  LEFT JOIN devoluciones dev ON entrada_productos.id_devolucion=dev.id_devolucion LEFT JOIN ventas ON dev.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=entrada_productos.id_presentacion WHERE entrada_productos.id_producto = '". $producto."'".($final ? " AND fecha_entrada <= '".$final."'" : "").")";
		$sqlStmt.=" UNION ALL ";
		$sqlStmt.="(SELECT '1' as indx, 'salida' as trans, id_salida as id,  (fecha_salida) as fecha,  concepto_salida as concepto, '0'                                       as entrada, (cant_salida*unidades_representativas) as salida, 0                                         as costo, salida_productos.doc_facturacion as documentov, resoluciones_caja.serie_autorizada as seriev, salida_productos.num_doc_facturacion as numdocv, '-'                as documentoc,  '-'              as numdocc,  ''                   as proveedor, ''                 as documentod, ''                                 as seried, ''                     as numdocd, '' as folio, '' as linea FROM salida_productos  LEFT JOIN ventas ON salida_productos.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=salida_productos.id_presentacion WHERE salida_productos.id_producto = '". $producto. "'".($final ? " AND fecha_salida <= '".$final."'" : "").")";
		$sqlStmt .=" ORDER BY fecha";

		/*$sqlStmt="(SELECT  'entrada' as trans, id_entrada as id, DATE(fecha_entrada) as fecha, concepto_entrada as concepto, (cant_entrada*unidades_representativas) as entrada, '0'                                    as salida, (costo_entrada/unidades_representativas) as costo, ventas.documento_venta as documentov, resoluciones_caja.serie_autorizada as seriev, ventas.num_documento_venta as numdocv, c.documento_compra as documentoc,  c.num_doc_compra as numdocc, prov.nombre_proveedor as proveedor FROM entrada_productos LEFT JOIN compras c ON entrada_productos.id_compra = c.id_compra LEFT JOIN proveedores prov ON c.id_proveedor = prov.id_proveedor  LEFT JOIN devoluciones ON entrada_productos.id_devolucion=devoluciones.id_devolucion LEFT JOIN ventas ON devoluciones.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=entrada_productos.id_presentacion WHERE entrada_productos.id_producto = '". $producto."'".($final ? " AND fecha_entrada <= '".$final."'" : "").")";
		$sqlStmt.=" UNION ALL ";
		$sqlStmt.="(SELECT  'salida' as trans, id_salida as id,  DATE(fecha_salida) as fecha,  concepto_salida as concepto, '0'                                      as entrada, (cant_salida*unidades_representativas) as salida, 0                                        as costo, ventas.documento_venta as documentov, resoluciones_caja.serie_autorizada as seriev, ventas.num_documento_venta as numdocv, '-'                as documentoc,  '-'              as numdocc,  ''                   as proveedor FROM salida_productos  LEFT JOIN ventas ON salida_productos.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=salida_productos.id_presentacion WHERE salida_productos.id_producto = '". $producto. "'".($final ? " AND fecha_salida <= '".$final."'" : "").")";
		$sqlStmt .=" ORDER BY fecha";*/
		
		/**Query */
		/*$sqlStmt =  "(SELECT 'entrada' as trans, id_entrada as id, fecha_entrada as fecha, concepto_entrada as concepto,(cant_entrada*unidades_representativas) as entrada, '0' as salida, '-' as documentov, '-' as seriev, '-' as numdocv, c.documento_compra as documentoc, c.num_doc_compra as numdocc, prov.nombre_proveedor as proveedor, dev.doc_devolucion as documentod, resoluciones_caja.serie_autorizada as seried, dev.num_doc_devolucion as numdocd FROM entrada_productos JOIN presentaciones ON presentaciones.id_presentacion=entrada_productos.id_presentacion LEFT JOIN compras c ON entrada_productos.id_compra = c.id_compra LEFT JOIN proveedores prov ON c.id_proveedor = prov.id_proveedor LEFT JOIN devoluciones dev ON entrada_productos.id_devolucion=dev.id_devolucion LEFT JOIN resoluciones_caja ON dev.id_resolucion=resoluciones_caja.id_resolucion WHERE entrada_productos.id_producto = '".$prod."'".($end ? " AND fecha_entrada < '".$end."'" : "").")";
		$sqlStmt .= " UNION ALL "; 
		$sqlStmt .= "(SELECT  'salida' as trans, id_salida  as id, fecha_salida  as fecha, concepto_salida  as concepto,'0' as entrada, (cant_salida*unidades_representativas)  as salida, ventas.documento_venta as documentov, resoluciones_caja.serie_autorizada as seriev, ventas.num_documento_venta as numdocv, '-' as documentoc, '-' numdocc, '' as proveedor, '-' as documentod, '-' as seried, '-' as numdocd FROM salida_productos JOIN presentaciones ON presentaciones.id_presentacion=salida_productos.id_presentacion LEFT JOIN ventas ON salida_productos.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion WHERE salida_productos.id_producto = '".$prod."'".($end ? " AND fecha_salida < '".$end."'" : "").")";
		$sqlStmt .=" ORDER BY fecha";*/

		$trans= $this->Generic_model->sql_custom($sqlStmt);
		/** */
		$inventarioInicial=0;
		$costoPromedio=0;

		echo "<html><head><title>".$prodInfo->sku_presentacion."-".str_replace(array('~', '"', "'", '#', '%', '&', '*', ':', '<', '>', '?', '/', '{', '|', '}'), array('',  ' pulg.', "", 'N', 'porcent.', ' ', 'x ', ' ', ' ', ' ', ' ', '-', '(', ' ', ')'),$prodInfo->desc_presentacion)."</title></head><body>";

		/**Header */
		echo "<div style='text-align:center'>";
		echo "<h1 style='font-family: arial; margin-bottom: 5px;'>".$nombreComercial."</h1>";
		echo "<h3 style='font-family: arial; margin: 0 auto 5px auto;'>".$razonSocial."</h3>";
		echo "<span style='font-family: arial; margin: 5px;'><b>NIT:</b> ".$nit." <b>NRC:</b> ".$ncr."</span>";
		echo "<h3 style='font-family: arial; margin: 5px;'>KARDEX DE PRODUCTOS ".( $inicio ? "DEL ".date("d/m/Y", strtotime($inicio)) : "").( $final ? " AL ".date("d/m/Y", strtotime($final)) : "")."</h3>";
		echo "<span style='font-family: arial; margin: 5px;'>Costo promedio</span>";
		echo "<hr>";
		echo "<div style='width:100%; text-align:left; font-family:arial; margin:15px;'>";
		echo "<div style='float:left; width:10%'><label><b>SKU:</b> ".$prodInfo->sku_presentacion."</div> ";
		echo "<div style='float:left; width:70%'><label><b>Producto:</b> ".$prodInfo->desc_presentacion."</div> ";
		/*echo "<div style='float:left; width:20%'><label><b>Unidad: </b> ".$prodInfo->unidad_medida_producto."</label></div>";*/
		echo "<div style='float:left; width:20%'><label><b>Unidad: </b> UNIDAD</label></div>";
		echo "<div style='clear: both;'></div>";
		echo "</div>";
		echo "</div>";
		if(count($trans)){
			$countTrans = (count($trans));
			$hiddensTrans = 0;
			$saldoInicial=0;
			$saldo=0;
			$inicialbroker=false;
			$correlativo = 1;
			
			echo "<table border='1' cellspacing='0' style='margin-top:10px;font-family:arial;font-size:9.5pt;'>";
			echo "<thead><tr><th rowspan='2'>#</th><th rowspan='2'>ID</th><th rowspan='2'>fecha</th><th rowspan='2'>Concepto</th><th rowspan='2'>Proveedor</th><th rowspan='2'>Nacionalidad</th><th rowspan='2'>Referencia</th><th colspan='3'>Entradas</th><th colspan='3'>Salidas</th><th colspan='3'>Existencias</th></tr> <tr><th>Unidad</th><th>Costo Unit.</th><th>Costo Total</th><th>Unidad</th><th>Costo Unit.</th><th>Costo Total</th><th>Unidad</th><th>Costo Unit.</th><th>Costo Total</th></tr></thead>";
			echo "<tbody>";
			foreach($trans as $tran){
				$valid = true;

				if($tran->trans=="salida" && $tran->concepto == 0 && ($tran->documentov != 1 && $tran->documentov != 2 && $tran->documentov != 3)){
					$valid = false;
				}
				if($producto == 61){ /**Anulacion a venta sin doc */
					if($tran->trans == "salida"){
						if($tran->id == 968828 || $tran->id == 992309 || $tran->id == 1008324){ /**CCF incoheren || venta duplicada || anulacion de compra*/
							$valid = false;
						}
					}
					if($tran->trans == "entrada"){
						if($tran->id == 54168){ /**compra anulada*/
							$valid = false;
						}
					}
				}

				if($producto == 268){
					if($tran->trans == "salida"){
						if($tran->id == 1000695 || $tran->id == 1000696 || $tran->id == 1000697 || $tran->id == 1000698 || $tran->id ==1000699 || $tran->id ==1066585  || $tran->id ==1066586){ /**anulacion de compra*/
							$valid = false;
						}
					}
					if($tran->trans == "entrada"){
						if($tran->id == 53618 || $tran->id == 53619 || $tran->id == 53620 || $tran->id == 53621 || $tran->id ==53622 || $tran->id ==59381 || $tran->id ==59382){ /**compra anulada*/
							$valid = false;
						}
					}
				}


				if($producto == 273){
					if($tran->trans == "salida"){
						if($tran->id == 994954 || $tran->id == 994956 || $tran->id == 994961 || $tran->id ==  994962 || $tran->id == 1032513){ /**anulacion de compra*/
							$valid = false;
						}
					}
					if($tran->trans == "entrada"){
						if($tran->id == 52700 || $tran->id == 52702 || $tran->id == 52707 || $tran->id == 52708 || $tran->id == 56984){ /**compra anulada*/
							$valid = false;
						}
					}
				}


				if($producto == 232){
					if($tran->trans == "salida"){
						if($tran->id == 993463 ){ /**anulacion de compra*/
							$valid = false;
						}
					}
					if($tran->trans == "entrada"){
						if($tran->id == 53181 ){ /**compra anulada*/
							$valid = false;
						}
					}
				}

				
				if($producto == 93){
					if($tran->trans == "salida"){
						if($tran->id == 1000700 ){ /**anulacion de compra*/
							$valid = false;
						}
					}
					if($tran->trans == "entrada"){
						if($tran->id == 53768 ){ /**compra anulada*/
							$valid = false;
						}
					}
				}

				if($valid){
					$proveedor = "";
					$nacProveedor = "";


					$saldo=$saldo + $tran->entrada - $tran->salida;

					if($tran->trans=="entrada"){ /**Entradas */
						$concepto = isset($conceptos_entrada[$tran->concepto]) ? $conceptos_entrada[$tran->concepto] : " Desconocido (".$tran->concepto.")";
						switch($tran->concepto){
							case 0: /**Inventario inicial */
								if($inventarioInicial==0){
									$inventarioInicial=1;
									$costoPromedio=round($tran->costo, 4);
								}
							break;
							case 1: /**Compra */
								$concepto .= isset($doc_compra[$tran->documentoc]) ? " ".$doc_compra[$tran->documentoc] : " Desconocido (".$tran->documentoc.")";
								$concepto .= $tran->numdocc !="" ? " No. ".$tran->numdocc : "";
								$proveedor = $tran->proveedor;
								$nacProveedor = "Salvadore&ntilde;a";

								if($tran->costo == 0){
									$concepto .= "(Bonificaci&oacute;n)";
								}

								/**Calculo de costo*/
								if($saldo-$tran->entrada>0){
									$costoPromedio=round(((($saldo-$tran->entrada)*$costoPromedio)+($tran->entrada*$tran->costo))/$saldo, 4);
									if($costoPromedio<0)
										$costoPromedio=round($tran->costo, 4);
								}else{
									$costoPromedio=round($tran->costo, 4);
								}		
							break;
							case 2: /**Devolucion */
								$concepto .= isset($doc_venta[$tran->documentod]) ? " ".$doc_venta[$tran->documentod] : " Desconocido (".$tran->documentod.")";
								/*$concepto .= $tran->numdocd !="" ? " No. ".$tran->seried." ".$tran->numdocd : "";	*/	
								$concepto .= $tran->numdocd !="" ? " No. ".$tran->seried." ".$tran->numdocd : "";		
								$tran->costo = $costoPromedio;
							break;
						}
					}
					if($tran->trans=="salida"){ /**Salidas */
						$concepto = isset($conceptos_salida[$tran->concepto]) ? $conceptos_salida[$tran->concepto] : " Desconocido (".$tran->concepto.")";
						if($tran->concepto == 0){
							$concepto .= isset($doc_venta[$tran->documentov]) ? " ".$doc_venta[$tran->documentov] :  " Desconocido (".$tran->documentov.")";
							/*$concepto .= $tran->numdocv !="" ? " No. ".$tran->seriev." ".$tran->numdocv : "";*/
							$concepto .= $tran->numdocv !="" ? " No. ".$tran->seriev." ".$tran->numdocv : "";
						}
					}


					if($inicio && date('Y-m-d', strtotime($tran->fecha)) < date('Y-m-d',  strtotime($inicio))){
						$inicialbroker=true;
						$saldoInicial=$saldoInicial+$tran->entrada-$tran->salida;
						$hiddensTrans += 1;
						$costoPromAnt = $costoPromedio;

					}else{
						if($inicialbroker){
							echo "<tr>";
							echo "<td></td>";
							echo "<td></td>";/**ID */
							echo "<td>".date("d-m-Y", strtotime($inicio))."</td>";
							echo "<td>Existencias a la fecha</td>";
							echo "<td></td>";
							echo "<td></td>";
							echo "<td></td>";
							echo "<td>".number_format($saldoInicial,4)."</td>";
							echo "<td>".($saldoInicial > 0 ? number_format($costoPromAnt,4) : 0.0000)."</td>";
							echo "<td>".number_format(($saldoInicial * $costoPromAnt), 4)."</td>";
							echo "<td></td>";
							echo "<td></td>";
							echo "<td></td>";
							echo "<td>".number_format($saldoInicial,4)."</td>";
							echo "<td>".number_format($costoPromAnt,4)."</td>";
							echo "<td>".number_format(($saldoInicial * $costoPromAnt), 4)."</td>";
							echo "</tr>";
							/*$saldo+=$saldoInicial;*/
							$inicialbroker=false;
						}
						
						
						/**-------------- TABLA -------------*/
						echo "<tr>";
						echo "<td>".$correlativo."</td>";
						echo "<td>".$tran->id."</td>";/**ID */
						echo "<td>".date("d/m/Y",strtotime($tran->fecha))."</td>";
						echo "<td>".$concepto/*$tran->concepto*/."</td>";
						echo "<td>".$proveedor."</td>";
						echo "<td>".$nacProveedor."</td>";
						echo "<td>".($tran->folio !="" ? "Libro compras folio: ".$tran->folio: "").($tran->linea != "" ? ", linea: ".$tran->linea : "")."</td>";
						echo "<td>".($tran->entrada>0?number_format($tran->entrada,4):"")."</td>";
						echo "<td>".($tran->entrada>0?number_format($tran->costo,4):"")."</td>";
						echo "<td>".($tran->entrada>0?number_format(($tran->entrada*$tran->costo),4):"")."</td>";
						echo "<td>".($tran->salida>0?number_format($tran->salida,4):"")."</td>";
						echo "<td>".($tran->salida>0?number_format($costoPromedio,4):"")."</td>";
						echo "<td>".($tran->salida>0?number_format(($tran->salida*$costoPromedio),4):"")."</td>";
						echo "<td>".number_format($saldo,4)."</td>";
						echo "<td>".number_format($costoPromedio,4)."</td>";
						echo "<td>".number_format(($saldo*$costoPromedio),4)."</td>";
						echo "</tr>";

						$correlativo++;
					}
				}
			}
			if($hiddensTrans == $countTrans){
				echo "<tr>";
				echo "<td></td>";
				echo "<td>".date("d-m-Y", strtotime($inicio))."</td>";
				echo "<td>Existencias a la fecha</td>";
				echo "<td></td>";
				echo "<td></td>";
				echo "<td></td>";
				echo "<td>".number_format($saldoInicial,4)."</td>";
				echo "<td>".number_format($costoPromedio,4)."</td>";
				echo "<td>".number_format(($saldoInicial * $costoPromedio), 4)."</td>";
				echo "<td></td>";
				echo "<td></td>";
				echo "<td></td>";
				echo "<td>".number_format($saldoInicial,4)."</td>";
				echo "<td>".number_format($costoPromedio,4)."</td>";
				echo "<td>".number_format(($saldoInicial * $costoPromedio), 4)."</td>";
				echo "</tr>";

			}

			echo "</tbody></table>";  
			echo "<div style='width:100%'>";
			echo "<div style='float: left; margin-top:25px; width:50%; text-align:center;'>F: _________________________________ <br> __________________________________ <br>Propietario/a, representante legal o apoderado/a.</div>";
			echo "<div style='float: left; margin-top:25px; width:50%; text-align:center;'>F: _________________________________ <br> __________________________________ <br>Contador/a.</div>";
			echo "</div>";
			echo "</body>";
		}
			
	}



	/** */
	function kardex_inventario_bk(){
		$producto=$this->input->get("id");
		$inicio = ($this->input->get('inicio') && $this->input->get('inicio') != "" ?  date('Y-m-d H:i:s', strtotime($this->input->get('inicio')." 00:00:00")) : null);
		$final 	= ($this->input->get('final') && $this->input->get('final') != "" ? date('Y-m-d H:i:s', strtotime($this->input->get('final')." 23:59:59")) : null);
		/**Valores */
		$conceptos_entrada = array(
			"0" => "Inventario Inicial",
			"1" => "Compra",
			"2" => "Devoluci&oacute;n",
			"8" => "Traslado desde sucursal",
			"9" => "Ajuste por conteo de inventario",
		);
		$conceptos_salida = array(
			"0" => "Venta",
			"1" => "Pedido",
			"2" => "Da&ntilde;o / vencimiento",
			"3" => "Perdida / extrav&iacute;o",
			"4" => "Devoluci&oacute;n a proveedor",
			"5" => "Consumo interno",
			"7" => "Anulaci&oacute;n de compra",
			"8" => "Traslado hacia sucursal",
			"9" => "Ajuste por conteo de inventario"
		);
		$doc_compra = array(
			"0" => "CCF",
			"1" => "Factura",
			"2" => "Nota de remisi&oacute;n",
			"3" => "Nota de cr&eacute;dito",
		);
		$doc_venta = array(
			"0" => "S / Doc",
			"1" => "Factura",
			"2" => "CCF",
			"3" => "Ticket",
			"4" => "Nota de remisi&oacute;n",
			"5" => "Nota de env&iacute;o",
			"8" => "Comp. Pago",
		);
		/**Productos info */
		$prodInfo = $this->Generic_model->get('presentaciones', 'presentaciones.sku_presentacion, presentaciones.desc_presentacion, productos.unidad_medida_producto',array('presentaciones.id_producto' => $producto, 'tipo_presentacion' => 0),'','',array('productos' => 'productos.id_producto = presentaciones.id_producto'));
		$prodInfo = $prodInfo[0];
		/**Query */	
		$sqlStmt="(SELECT  'entrada' as trans, id_entrada as id, DATE(fecha_entrada) as fecha, concepto_entrada as concepto, (cant_entrada*unidades_representativas) as entrada, '0'                                    as salida, (costo_entrada/unidades_representativas) as costo, ventas.documento_venta as documentov, resoluciones_caja.serie_autorizada as seriev, ventas.num_documento_venta as numdocv, c.documento_compra as documentoc,  c.num_doc_compra as numdocc, prov.nombre_proveedor as proveedor, c.folio_compra as folio, c.linea_compra as linea FROM entrada_productos LEFT JOIN compras c ON entrada_productos.id_compra = c.id_compra LEFT JOIN proveedores prov ON c.id_proveedor = prov.id_proveedor  LEFT JOIN devoluciones ON entrada_productos.id_devolucion=devoluciones.id_devolucion LEFT JOIN ventas ON devoluciones.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=entrada_productos.id_presentacion WHERE entrada_productos.id_producto = '". $producto."'".($final ? " AND fecha_entrada <= '".$final."'" : "").")";
		$sqlStmt.=" UNION ALL ";
		$sqlStmt.="(SELECT  'salida' as trans, id_salida as id,  DATE(fecha_salida) as fecha,  concepto_salida as concepto, '0'                                      as entrada, (cant_salida*unidades_representativas) as salida, 0                                        as costo, ventas.documento_venta as documentov, resoluciones_caja.serie_autorizada as seriev, ventas.num_documento_venta as numdocv, '-'                as documentoc,  '-'              as numdocc,  ''                   as proveedor, ''             as folio, ''             as linea FROM salida_productos  LEFT JOIN ventas ON salida_productos.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=salida_productos.id_presentacion WHERE salida_productos.id_producto = '". $producto. "'".($final ? " AND fecha_salida <= '".$final."'" : "").")";
		$sqlStmt .=" ORDER BY fecha";
		/*$sqlStmt="(SELECT  'entrada' as trans, id_entrada as id, DATE(fecha_entrada) as fecha, concepto_entrada as concepto, (cant_entrada*unidades_representativas) as entrada, '0'                                    as salida, (costo_entrada/unidades_representativas) as costo, ventas.documento_venta as documentov, resoluciones_caja.serie_autorizada as seriev, ventas.num_documento_venta as numdocv, c.documento_compra as documentoc,  c.num_doc_compra as numdocc, prov.nombre_proveedor as proveedor FROM entrada_productos LEFT JOIN compras c ON entrada_productos.id_compra = c.id_compra LEFT JOIN proveedores prov ON c.id_proveedor = prov.id_proveedor  LEFT JOIN devoluciones ON entrada_productos.id_devolucion=devoluciones.id_devolucion LEFT JOIN ventas ON devoluciones.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=entrada_productos.id_presentacion WHERE entrada_productos.id_producto = '". $producto."'".($final ? " AND fecha_entrada <= '".$final."'" : "").")";
		$sqlStmt.=" UNION ALL ";
		$sqlStmt.="(SELECT  'salida' as trans, id_salida as id,  DATE(fecha_salida) as fecha,  concepto_salida as concepto, '0'                                      as entrada, (cant_salida*unidades_representativas) as salida, 0                                        as costo, ventas.documento_venta as documentov, resoluciones_caja.serie_autorizada as seriev, ventas.num_documento_venta as numdocv, '-'                as documentoc,  '-'              as numdocc,  ''                   as proveedor FROM salida_productos  LEFT JOIN ventas ON salida_productos.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=salida_productos.id_presentacion WHERE salida_productos.id_producto = '". $producto. "'".($final ? " AND fecha_salida <= '".$final."'" : "").")";
		$sqlStmt .=" ORDER BY fecha";*/
		
		/**Query */
		/*$sqlStmt =  "(SELECT 'entrada' as trans, id_entrada as id, fecha_entrada as fecha, concepto_entrada as concepto,(cant_entrada*unidades_representativas) as entrada, '0' as salida, '-' as documentov, '-' as seriev, '-' as numdocv, c.documento_compra as documentoc, c.num_doc_compra as numdocc, prov.nombre_proveedor as proveedor, dev.doc_devolucion as documentod, resoluciones_caja.serie_autorizada as seried, dev.num_doc_devolucion as numdocd FROM entrada_productos JOIN presentaciones ON presentaciones.id_presentacion=entrada_productos.id_presentacion LEFT JOIN compras c ON entrada_productos.id_compra = c.id_compra LEFT JOIN proveedores prov ON c.id_proveedor = prov.id_proveedor LEFT JOIN devoluciones dev ON entrada_productos.id_devolucion=dev.id_devolucion LEFT JOIN resoluciones_caja ON dev.id_resolucion=resoluciones_caja.id_resolucion WHERE entrada_productos.id_producto = '".$prod."'".($end ? " AND fecha_entrada < '".$end."'" : "").")";
		$sqlStmt .= " UNION ALL "; 
		$sqlStmt .= "(SELECT  'salida' as trans, id_salida  as id, fecha_salida  as fecha, concepto_salida  as concepto,'0' as entrada, (cant_salida*unidades_representativas)  as salida, ventas.documento_venta as documentov, resoluciones_caja.serie_autorizada as seriev, ventas.num_documento_venta as numdocv, '-' as documentoc, '-' numdocc, '' as proveedor, '-' as documentod, '-' as seried, '-' as numdocd FROM salida_productos JOIN presentaciones ON presentaciones.id_presentacion=salida_productos.id_presentacion LEFT JOIN ventas ON salida_productos.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion WHERE salida_productos.id_producto = '".$prod."'".($end ? " AND fecha_salida < '".$end."'" : "").")";
		$sqlStmt .=" ORDER BY fecha";*/

		$trans= $this->Generic_model->sql_custom($sqlStmt);
		/** */
		$inventarioInicial=0;
		$costoPromedio=0;

		/**Header */
		echo "<div style='text-align:center'>";
		echo "<h1 style='font-family: arial; margin-bottom: 5px;'>Agroferretería y Clinica Veterinaria Mata</h1>";
		echo "<h3 style='font-family: arial; margin: 0 auto 5px auto;'> 	Dr. Miguel Angel Mata Flores</h3>";
		echo "<span style='font-family: arial; margin: 5px;'><b>NIT:</b> 1319-200462-001-7 <b>NRC:</b> 37454-7</span>";
		echo "<h3 style='font-family: arial; margin: 5px;'>KARDEX DE PRODUCTOS ".( $inicio ? "DEL ".date("d/m/Y", strtotime($inicio)) : "").( $final ? " AL ".date("d/m/Y", strtotime($final)) : "")."</h3>";
		echo "<span style='font-family: arial; margin: 5px;'>Costo promedio</span>";
		echo "<hr>";
		echo "<div style='width:100%; text-align:left; font-family:arial; margin:15px;'>";
		echo "<div style='float:left; width:10%'><label><b>SKU:</b> ".$prodInfo->sku_presentacion."</div> ";
		echo "<div style='float:left; width:70%'><label><b>Producto:</b> ".$prodInfo->desc_presentacion."</div> ";
		echo "<div style='float:left; width:20%'><label><b>Unidad: </b> ".$prodInfo->unidad_medida_producto."</label></div>";
		echo "<div style='clear: both;'></div>";
		echo "</div>";
		echo "</div>";
		if(count($trans)){
			$saldoInicial=0;
			$saldo=0;
			$inicialbroker=false;
			$correlativo = 1;
			
			echo "<table border='1' cellspacing='0' style='margin-top:10px;font-family:arial;font-size:9.5pt;'>";
			echo "<thead><tr><th rowspan='2'>#</th><th rowspan='2'>fecha</th><th rowspan='2'>Concepto</th><th rowspan='2'>Proveedor</th><th rowspan='2'>Nacionalidad</th><th rowspan='2'>Referencia</th><th colspan='3'>Entradas</th><th colspan='3'>Salidas</th><th colspan='3'>Existencias</th></tr> <tr><th>Unidad</th><th>Costo Unit.</th><th>Costo Total</th><th>Unidad</th><th>Costo Unit.</th><th>Costo Total</th><th>Unidad</th><th>Costo Unit.</th><th>Costo Total</th></tr></thead>";
			echo "<tbody>";
			foreach($trans as $tran){
				$proveedor = "";
				if($inicio && $tran->fecha < $inicio){
					$inicialbroker=true;
					$saldoInicial=$saldoInicial+$tran->entrada-$tran->salida;


					

				}else{
					if($inicialbroker){
						echo "<tr>";
						echo "<td></td>";
						echo "<td>".date("d-m-Y", strtotime($inicio))."</td>";
						echo "<td>Existencias a la fecha</td>";
						echo "<td></td>";
						echo "<td></td>";
						echo "<td></td>";
						echo "<td>".$saldoInicial."</td>";
						echo "<td>-</td>";
						echo "<td>".$saldoInicial."</td>";
						echo "</tr>";
						$saldo+=$saldoInicial;
						$inicialbroker=false;
					}
					$saldo=$saldo+$tran->entrada-$tran->salida;
					
					if($tran->trans=="entrada"){ /**Entradas */
						$concepto = isset($conceptos_entrada[$tran->concepto]) ? $conceptos_entrada[$tran->concepto] : " Desconocido (".$tran->concepto.")";
						switch($tran->concepto){
							case 0: /**Inventario inicial */
								if($inventarioInicial==0){
									$inventarioInicial=1;
									$costoPromedio=round($tran->costo, 4);
								}
							break;
							case 1: /**Compra */
								$concepto .= isset($doc_compra[$tran->documentoc]) ? " ".$doc_compra[$tran->documentoc] : " Desconocido (".$tran->documentoc.")";
								$concepto .= $tran->numdocc !="" ? " No. ".$tran->numdocc : "";
								$proveedor = $tran->proveedor;
								/**Calculo de costo*/
								if($saldo-$tran->entrada>0){
									$costoPromedio=round(((($saldo-$tran->entrada)*$costoPromedio)+($tran->entrada*$tran->costo))/$saldo, 4);
									if($costoPromedio<0)
										$costoPromedio=round($tran->costo, 4);
								}else{
									$costoPromedio=round($tran->costo, 4);
								}		
							break;
							case 2: /**Devolucion */
								$concepto .= isset($doc_venta[$tran->documentod]) ? " ".$doc_venta[$tran->documentod] : " Desconocido (".$tran->documentod.")";
                                $concepto .= $tran->numdocd !="" ? " No. ".$tran->seried." ".$tran->numdocd : "";		
							break;
						}
					}
					if($tran->trans=="salida"){ /**Salidas */
						$concepto = isset($conceptos_salida[$tran->concepto]) ? $conceptos_salida[$tran->concepto] : " Desconocido (".$tran->concepto.")";
						if($tran->concepto == 0){
							$concepto .= isset($doc_venta[$tran->documentov]) ? " ".$doc_venta[$tran->documentov] :  "Desconocido (".$tran->documentov.")";
							$concepto .= $tran->numdocv !="" ? " No. ".$tran->seriev." ".$tran->numdocv : "";
						}
					}





					/**-------------- TABLA -------------*/
					echo "<tr>";
					echo "<td>".$correlativo."</td>";
					echo "<td>".date("d/m/Y",strtotime($tran->fecha))."</td>";
					echo "<td>".$concepto/*$tran->concepto*/."</td>";
					echo "<td>".$proveedor."</td>";
					echo "<td>Salvadore&ntilde;o</td>";
					echo "<td>".($tran->folio !="" ? "Libro compras folio: ".$tran->folio: "").($tran->linea != "" ? " linea: ".$tran->linea : "")."</td>";
					echo "<td>".($tran->entrada>0?number_format($tran->entrada,4):"")."</td>";
					echo "<td>".($tran->entrada>0?number_format($tran->costo,4):"")."</td>";
					echo "<td>".($tran->entrada>0?number_format(($tran->entrada*$tran->costo),4):"")."</td>";
					echo "<td>".($tran->salida>0?number_format($tran->salida,4):"")."</td>";
					echo "<td>".($tran->salida>0?number_format($costoPromedio,4):"")."</td>";
					echo "<td>".($tran->salida>0?number_format(($tran->salida*$costoPromedio),4):"")."</td>";
					echo "<td>".number_format($saldo,4)."</td>";
					echo "<td>".number_format($costoPromedio,4)."</td>";
					echo "<td>".number_format(($saldo*$costoPromedio),4)."</td>";
					echo "</tr>";

					$correlativo++;
				}
			}
			echo "</tbody></table>";  
			echo "<div style='width:100%'>";
			echo "<div style='float: left; margin-top:25px; width:50%; text-align:center;'>F: _________________________________ <br> __________________________________ <br>Propietario/a, representante legal o apoderado/a.</div>";
			echo "<div style='float: left; margin-top:25px; width:50%; text-align:center;'>F: _________________________________ <br> __________________________________ <br>Contador/a.</div>";
			echo "</div>";
		}
			
	}



	function kardex_inventario_exportar(){
		$producto=$this->input->get("id");
		$inicio = ($this->input->get('inicio') && $this->input->get('inicio') != "" ?  $this->input->get('inicio') : null);
		$final 	= ($this->input->get('final') && $this->input->get('final') != "" ? date('Y-m-d H:i:s', strtotime($this->input->get('final')." 23:59:59")) : null);
		/**Valores*/
		$UIData['conceptos_entrada'] = array(
			"0" => "Inventario Inicial",
			"1" => "Compra",
			"2" => "Devoluci&oacute;n",
			"8" => "Traslado desde sucursal",
			"9" => "Ajuste por conteo de inventario",
		);
		$UIData['conceptos_salida'] = array(
			"0" => "Venta",
			"1" => "Pedido",
			"2" => "Da&ntilde;o / vencimiento",
			"3" => "Perdida / extrav&iacute;o",
			"4" => "Devoluci&oacute;n a proveedor",
			"5" => "Consumo interno",
			"7" => "Anulaci&oacute;n de compra",
			"8" => "Traslado hacia sucursal",
			"9" => "Ajuste por conteo de inventario"
		);
		$UIData['doc_compra'] = array(
			"0" => "CCF",
			"1" => "Factura"
		);
		$UIData['doc_venta'] = array(
			"0" => "S / Doc",
			"1" => "Factura",
			"2" => "CCF",
			"3" => "Ticket",
			"4" => "Nota de remisi&oacute;n",
			"5" => "Nota de env&iacute;o",
			"8" => "Comp. Pago",
		);
		$UIData['nombreComercial'] = "Agroferretería y Clinica Veterinaria Mata";
		$UIData['razonSocial'] = "Dr. Miguel Angel Mata Flores";
		$UIData['nit'] = "1319-200462-001-7";
		$UIData['nrc'] = "37454-7";
		$UIData['inicio'] = $inicio;
		$UIData['final'] = $final;
		/**QUERYS */
		/**Productos info */
		$prodInfo = $this->Generic_model->get('presentaciones', 'presentaciones.sku_presentacion, presentaciones.desc_presentacion, productos.unidad_medida_producto',array('presentaciones.id_producto' => $producto, 'tipo_presentacion' => 0),'','',array('productos' => 'productos.id_producto = presentaciones.id_producto'));
		$prodInfo = $prodInfo[0];

		/** */
		$UIData['productoSku'] = $prodInfo->sku_presentacion;
		$UIData['productoDesc'] = $prodInfo->desc_presentacion;
		$UIData['productoUMed'] = $prodInfo->unidad_medida_producto;
		/**Trasnsacciones */	
		$sqlStmt="(SELECT  'entrada' as trans, id_entrada as id, DATE(fecha_entrada) as fecha, concepto_entrada as concepto, (cant_entrada*unidades_representativas) as entrada, '0'                                    as salida, (costo_entrada/unidades_representativas) as costo, ventas.documento_venta as documentov, resoluciones_caja.serie_autorizada as seriev, ventas.num_documento_venta as numdocv, c.documento_compra as documentoc,  c.num_doc_compra as numdocc, prov.nombre_proveedor as proveedor, c.folio_compra as folio, c.linea_compra as linea FROM entrada_productos LEFT JOIN compras c ON entrada_productos.id_compra = c.id_compra LEFT JOIN proveedores prov ON c.id_proveedor = prov.id_proveedor  LEFT JOIN devoluciones ON entrada_productos.id_devolucion=devoluciones.id_devolucion LEFT JOIN ventas ON devoluciones.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=entrada_productos.id_presentacion WHERE entrada_productos.id_producto = '". $producto."'".($final ? " AND fecha_entrada <= '".$final."'" : "").")";
		$sqlStmt.=" UNION ALL ";
		$sqlStmt.="(SELECT  'salida' as trans, id_salida as id,  DATE(fecha_salida) as fecha,  concepto_salida as concepto, '0'                                      as entrada, (cant_salida*unidades_representativas) as salida, 0                                        as costo, ventas.documento_venta as documentov, resoluciones_caja.serie_autorizada as seriev, ventas.num_documento_venta as numdocv, '-'                as documentoc,  '-'              as numdocc,  ''                   as proveedor, ''             as folio, ''             as linea FROM salida_productos  LEFT JOIN ventas ON salida_productos.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=salida_productos.id_presentacion WHERE salida_productos.id_producto = '". $producto. "'".($final ? " AND fecha_salida <= '".$final."'" : "").")";
		$sqlStmt .=" ORDER BY fecha";

		/** */
		$UIData['transacciones']= $this->Generic_model->sql_custom($sqlStmt);
		$this->load->view('auxiliar/kardex_view.php', $UIData);

	}


	function reporte_inventario(){
			ini_set('max_execution_time', 300);
		/*Obtener productos*/
		$productos=$this->Generic_model->get("productos","*","","","",array("presentaciones"=>"presentaciones.id_producto=productos.id_producto AND presentaciones.tipo_presentacion=0"));
		echo "<table border='1' cellspacing='0'>";
		echo "<tr>";
		echo "<th></th>";
		echo "<th>ID</th>";
		echo "<th>REF</th>";
		echo "<th>SKU</th>";
		echo "<th>Producto</th>";
	/* 	echo "<th>Kardex<br> 31 dic.</th>";
		echo "<th>Ajuste <br> Aplicacion</th>";
		echo "<th>Ajuste <br> Informal</th>"; */
		echo "<th>Existencias</th>";
		echo "<th>Costo<br> promedio</th>";
		echo "<th>Costo Total</th>";
		/*echo "<th>Precio</th>";*/
		echo "</tr>";
		$iteration=0;
		foreach($productos as $producto){
			$sqlStmt="(SELECT  'entrada' as trans, id_entrada as id,fecha_entrada as fecha,concepto_entrada as concepto,(cant_entrada*unidades_representativas) as entrada, '0' as salida,(costo_entrada/unidades_representativas) as costo, ventas.documento_venta as documentov, resoluciones_caja.serie_autorizada as seriev, ventas.num_documento_venta as numdocv, 0 as venta FROM entrada_productos LEFT JOIN devoluciones ON entrada_productos.id_devolucion=devoluciones.id_devolucion LEFT JOIN ventas ON devoluciones.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=entrada_productos.id_presentacion WHERE entrada_productos.id_producto = '". $producto->id_producto. "')";
			$sqlStmt.=" UNION ALL "; 
			$sqlStmt.="(SELECT  'salida' as trans,id_salida as id,fecha_salida as fecha,concepto_salida as concepto,'0' as entrada,(cant_salida*unidades_representativas) as salida,0 as costo, ventas.documento_venta as  documentov, resoluciones_caja.serie_autorizada as seriev, ventas.num_documento_venta as numdocv, salida_productos.id_venta as venta FROM salida_productos LEFT JOIN ventas ON salida_productos.id_venta=ventas.id_venta LEFT JOIN resoluciones_caja ON ventas.id_resolucion=resoluciones_caja.id_resolucion LEFT JOIN presentaciones ON presentaciones.id_presentacion=salida_productos.id_presentacion WHERE salida_productos.id_producto = '". $producto->id_producto. "')";
			$sqlStmt.=" ORDER BY fecha"; 
			$trans= $this->Generic_model->sql_custom($sqlStmt);
			if(count($trans)){
				$total31Entrada=0;
				$total31Salida=0;
				$totalAjusteEntrada=0;
				$totalAjusteSalida=0;
				$totalAjusteInformalEntrada=0;
				$totalAjusteInformalSalida=0;
				
				$inventarioInicial=0;
				$costoPromedio=0;
				$costoPromedio2=0;
				
				$precios=$this->Generic_model->get("preciosxpresentacion","*",array("id_presentacion"=>$producto->id_presentacion));
			
				foreach($trans as $tran){
					if(strtotime($tran->fecha)<strtotime('2022-12-31 23:59:59')){/*Saldo al 31 dic.*/
						$total31Entrada+=$tran->entrada;
						$total31Salida+=$tran->salida;
						/*Calculo del coste*/
						if($tran->trans=='entrada'){
							if($tran->concepto==0){ /*inventario inicial*/
								if($inventarioInicial==0){
									$inventarioInicial=1;
									$costoPromedio=$tran->costo;
								}
							}
							if($tran->concepto==1){ /*Compras*/
								if((($total31Entrada-$total31Salida)-$tran->entrada) >0){
									$costoPromedio=(((($total31Entrada-$total31Salida)-$tran->entrada)*$costoPromedio)+($tran->entrada*$tran->costo))/($total31Entrada-$total31Salida);
									if($costoPromedio<0)
										$costoPromedio=$tran->costo;
								}
								else{
									$costoPromedio=$tran->costo;
								}
							}
						}
						
					}else{
						/* if($tran->concepto==9){/*Transacciones de ajuste por aplicación de conteo*//*
							$totalAjusteEntrada+=$tran->entrada;
							$totalAjusteSalida+=$tran->salida;
						}
						if($tran->trans=='entrada'){
							if($tran->concepto==0) /*Transacciones de ajuste informal (Inventario inicial)*//*
								$totalAjusteInformalEntrada+=$tran->entrada;
							if($tran->concepto==1) /*Compras*//*
								$costoPromedio2=$tran->costo;
								
						}else{
							if($tran->concepto==0){/*Transacciones de ajuste informal (Ventas )*//*
								switch((int)$tran->venta){
									case 40463:
										$totalAjusteInformalSalida+=$tran->salida;
									break;
									case 40360:
										$totalAjusteInformalSalida+=$tran->salida;
									break;
									case 40023:
										$totalAjusteInformalSalida+=$tran->salida;
									break;
								}
							}
						} */
					}
					
				}
				/*Totales por producto*/
				$total31=$total31Entrada-$total31Salida;
				$totalAjuste=$totalAjusteEntrada-$totalAjusteSalida;
				$totalAjusteInformal=$totalAjusteInformalEntrada-$totalAjusteInformalSalida;
				$totalAjustado=(($total31Entrada+$totalAjusteEntrada+$totalAjusteInformalEntrada)-($total31Salida+$totalAjusteSalida+$totalAjusteInformalSalida));
				
				if($costoPromedio==0 && $costoPromedio2>0){
					$costoPromedio=$costoPromedio2;
				}
				
				/* if($totalAjustado>0){ */
					$iteration+=1;
					echo "<tr>";
					echo "<td>".$iteration."</td>";
					echo "<td>".$producto->id_producto."</td>";
					echo "<td>".$producto->ref_presentacion."</td>";
					echo "<td>".$producto->sku_presentacion."</td>";
					echo "<td>".$producto->desc_presentacion."</td>";
					/* echo "<td>".$total31."</td>";
					echo "<td>".$totalAjuste."</td>";
					echo "<td>".$totalAjusteInformal."</td>"; */
					echo "<td>".$totalAjustado."</td>";
					echo "<td>".number_format($costoPromedio,4)."</td>";
					echo "<td>".number_format(($totalAjustado*$costoPromedio),4)."</td>";
					/*echo "<td>".($costoPromedio>$precios[0]->precio_presentacion?number_format(($precios[0]->precio_presentacion),4):"")."</td>";*/
					echo "</tr>";
				/* } */
			}
		}
	}
	function reporte_existencias(){
		$existencias=0;/*Escribir 0 para productos sin existencias o existencias negaticas*/
		$sql="SELECT productos.id_producto as id, presentaciones.sku_presentacion as sku, presentaciones.desc_presentacion as descrip FROM productos LEFT JOIN presentaciones ON presentaciones.id_producto=productos.id_producto AND presentaciones.tipo_presentacion=0 WHERE productos.exist_act_producto >=0";
		$productos= $this->Generic_model->sql_custom($sql);
		echo "<table border='1' cellspacing='0'>";
		echo "<tr>";
		echo "<th></th>";
		echo "<th>ID</th>";
		echo "<th>SKU</th>";
		echo "<th>Producto</th>";
		echo "<th>Conteo</th>";
		echo "<th>C. Unitario</th>";
		echo "</tr>";
		$iteration=0;
		foreach($productos as $producto){
			echo "<tr>";
			echo "<td>".$iteration."</td>";
			echo "<td>".$producto->id."</td>";
			echo "<td>".$producto->sku."</td>";
			echo "<td>".$producto->descrip."</td>";
			echo "<td></td>";
			echo "<td></td>";
			echo "</tr>";
			$iteration+=1;
		}
		echo "</table>";
	}

	function verificarInventario(){
		$just=$this->input->get("view");
		$just="BOTH";
		$productos=$this->Generic_model->get("productos","*",array("tipo_presentacion"=>0),"","",array("presentaciones"=>"presentaciones.id_producto=productos.id_producto"));
		$counter=0;
		echo "<table>";
		echo "<tr>";
		echo "<th>No.</th>";
		echo "<th>ID</th>";
		echo "<th>SKU</th>";
		echo "<th>Desc</th>";
		echo "<th>Kardex</th>";
		echo "<th>Inventario</th>";
		echo "<th>Diferencia</th>";
		echo "<th>Entradas</th>";
		echo "<th>Salidas</th>";
		echo "<th>Trans</th>";
		echo "<th>Mayor</th>";
		echo "<th>Concep. Entradas</th>";
		echo "<th>Concep. Salidas</th>";
		echo "</tr>";
		$max1=0;
		$max2=0;
		$max3=0;
		$max4=0;
		$max5=0;
		$countKardex=0;
		$countInventario=0;
		foreach($productos as $producto){
			/*SALIDAS*/
			$salidaSource=$this->Generic_model->get("salida_productos","(cant_salida*unidades_representativas) as totalSalida,concepto_salida as concepto",array("salida_productos.id_producto"=>$producto->id_producto),"","",array("presentaciones"=>"presentaciones.id_presentacion=salida_productos.id_presentacion"));
			$salidasCount=count($salidaSource);
			$totalSalida=0;
			$tipo_salidas=array();
			if($salidasCount>0){
				foreach($salidaSource as $salida){
					$totalSalida+=$salida->totalSalida;
					if(!in_array($salida->concepto,$tipo_salidas)){
						$tipo_salidas[]=$salida->concepto;
					}
				}
			}
			/*ENTRADAS*/
			$entradaSource=$this->Generic_model->get("entrada_productos","(cant_entrada*unidades_representativas) as totalEntrada,concepto_entrada as concepto",array("entrada_productos.id_producto"=>$producto->id_producto),"","",array("presentaciones"=>"presentaciones.id_presentacion=entrada_productos.id_presentacion"));
			$entradasCount=count($entradaSource);
			$totalEntrada=0;
			$tipo_entradas=array();
			if($entradasCount>0){
				foreach($entradaSource as $entrada){
					$totalEntrada+=$entrada->totalEntrada;
					if(!in_array($entrada->concepto,$tipo_entradas)){
						$tipo_entradas[]=$entrada->concepto;
					}
				}
			}
			/*Calculo de diferencias*/			
			$kardex=round(($totalEntrada-$totalSalida),4);
			$inventario=round($producto->exist_act_producto,4);
			$diferencia=$kardex-$inventario;
			$view=false;
			if(abs($diferencia)>0){ 
				if($kardex>$inventario){
					$mayor="KARDEX";
					$countKardex+=1;
					
				}else{
					$mayor="INVENTARIO";
					$countInventario+=1;
					
				}	
				if($just && $just=="BOTH"){
					$view=true;
				}else if($just && $just==="KARDEX" && $mayor==="KARDEX"){
					$view=true;
				}else if($just && $just==="INVENTARIO" && $mayor==="INVENTARIO"){
					$view=true;
				}
				
				if($view){
				
					echo "<tr>";
					echo "<td>".$counter."</td>";
					echo "<td>".$producto->id_producto."</td>";
					echo "<td>".$producto->sku_presentacion."</td>";
					echo "<td>".$producto->desc_presentacion."</td>";
					echo "<td>".$kardex."</td>";
					echo "<td>".$inventario."</td>";
					echo "<td>".$diferencia."</td>";
					echo "<td>".$entradasCount."</td>";
					echo "<td>".$salidasCount."</td>";
					echo "<td>".($entradasCount+$salidasCount)."</td>";
					echo "<td>".$mayor."</td>";
					echo "<td>".implode(",",$tipo_entradas)."</td>";
					echo "<td>".implode(",",$tipo_salidas)."</td>";
					echo "</tr>";
					$counter+=1;
				}
			}	
			if(($entradasCount+$salidasCount)>$max1){			
				$max5=$max4;
				$max4=$max3;
				$max3=$max2;
				$max2=$max1;
				$max1=($entradasCount+$salidasCount);
			}
		}
		echo "</table>";
		
		echo "Inventario mayor: ".$countInventario. "<br>";
		echo "Kardex mayor: ".$countKardex. "<br>";
		
		echo "Maximo 1 trans: ".$max1. "<br>";
		echo "Maximo 2 trans: ".$max2. "<br>";
		echo "Maximo 3 trans: ".$max3. "<br>";
		echo "Maximo 4 trans: ".$max4. "<br>";
		echo "Maximo 5 trans: ".$max5. "<br>";
		echo "PROMEDIO: ".(($max5+$max4+$max3+$max2+$max1)/10). "<br>";
	}
	function rectificarInventario(){
		$productos=$this->Generic_model->get("productos","*",array("tipo_presentacion"=>0),"","",array("presentaciones"=>"presentaciones.id_producto=productos.id_producto"));
		echo "<table>";
		echo "<tr>";
		echo "<th>ID</th>";
		echo "<th>SKU</th>";
		echo "<th>Desc</th>";
		echo "<th>Entrada</th>";
		echo "<th>Salida</th>";
		echo "</tr>";
		foreach($productos as $producto){
			$totalSalida=0;
			$totalEntrada=0;
			/*SALIDAS*/
			$salidaSource=$this->Generic_model->get("salida_productos","(cant_salida*unidades_representativas) as totalSalida,concepto_salida as concepto",array("salida_productos.id_producto"=>$producto->id_producto),"","",array("presentaciones"=>"presentaciones.id_presentacion=salida_productos.id_presentacion"));
			$salidasCount=count($salidaSource);
			if($salidasCount>0){
				foreach($salidaSource as $salida){
					$totalSalida+=$salida->totalSalida;
				}
			}
			/*ENTRADAS*/
			$entradaSource=$this->Generic_model->get("entrada_productos","(cant_entrada*unidades_representativas) as totalEntrada,concepto_entrada as concepto",array("entrada_productos.id_producto"=>$producto->id_producto),"","",array("presentaciones"=>"presentaciones.id_presentacion=entrada_productos.id_presentacion"));
			$entradasCount=count($entradaSource);
			if($entradasCount>0){
				foreach($entradaSource as $entrada){
					$totalEntrada+=$entrada->totalEntrada;
				}
			}
			/*Calculo de diferencias*/			
			$kardex=$totalEntrada-$totalSalida;
			$inventario=$producto->exist_act_producto;
			$diferencia=$kardex-$inventario;
				
			if($diferencia<0){
				$this->Generic_model->disminuir("productos","id_producto",$producto->id_producto,"exist_act_producto",abs($diferencia));
				echo "<tr>";
				echo "<td>".$producto->id_producto."</td>";
				echo "<td>".$producto->sku_presentacion."</td>";
				echo "<td>".$producto->desc_presentacion."</td>";
				echo "<td>-</td>";
				echo "<td>".$diferencia."</td>";
				echo "</tr>";
			}else if($diferencia>0){
				$this->Generic_model->aumentar("productos","id_producto",$producto->id_producto,"exist_act_producto",abs($diferencia));
				echo "<tr>";
				echo "<td>".$producto->id_producto."</td>";
				echo "<td>".$producto->sku_presentacion."</td>";
				echo "<td>".$producto->desc_presentacion."</td>";
				echo "<td>".$diferencia."</td>";
				echo "<td>-</td>";
				echo "</tr>";
			}
		}
	}

	function ajuste(){
		$productos = array(
			array(	"desc"=>"POLLITA PONEDORA NEGRA", "entrada" =>	1600	),
			array(	"desc"=>"POLLITO BLANCO PLB", "entrada" =>	6000	),
			array(	"desc"=>"CONCENTRADO ALIENGORDE 1", "entrada" =>	150	),
			array(	"desc"=>"ABONO BLAUCOR LIBRAS", "entrada" =>	250	),
			array(	"desc"=>"18-46-0 DAP GR DISAGRO LB", "entrada" =>	200	),
			array(	"desc"=>"ACOPLES MAN", "entrada" =>	10	),
			array(	"desc"=>"ALPO RECETAS CACERAS LIBRAS", "entrada" =>	150	),
			array(	"desc"=>"AMINOTONIC DE 500CC", "entrada" =>	6	),
			array(	"desc"=>"AMISTAR SOBRE", "entrada" =>	18	),
			array(	"desc"=>"ANXOCARE HIMALAYA", "entrada" =>	6	),
			array(	"desc"=>"ARGOLLA CERRADA 23*110", "entrada" =>	50	),
			array(	"desc"=>"ARTRO TABS TABLETAS", "entrada" =>	100	),
			array(	"desc"=>"BASCULA DE PLATO 20KG/44LB MEJOR CALIDAD IML", "entrada" =>	3	),
			array(	"desc"=>"BAYGON AEROSOL 400ML", "entrada" =>	10	),
			array(	"desc"=>"BOLSA DE PROPAC 2.5KG", "entrada" =>	26	),
			array(	"desc"=>"BOMBA GUARANI MATA HORMIGAS", "entrada" =>	2	),
			array(	"desc"=>"BOSAL #3", "entrada" =>	6	),
			array(	"desc"=>"BRAVECTO 1400 MG", "entrada" =>	6	),
			array(	"desc"=>"BRAVECTO 20-40KG", "entrada" =>	4	),
			array(	"desc"=>"BRONCOWEL DE 100GR", "entrada" =>	50	),
			array(	"desc"=>"CALABACIN CASERTA ONZAS", "entrada" =>	50	),
			array(	"desc"=>"CALCIPETS TABS TABLETAS", "entrada" =>	150	),
			array(	"desc"=>"CALCIO GLUCONATO 250 ML VACA CAIDA", "entrada" =>	2	),
			array(	"desc"=>"CALFODEM DE 500CC", "entrada" =>	3	),
			array(	"desc"=>"CALFODEX 500ML", "entrada" =>	3	),
			array(	"desc"=>"CALFON FUERTE DE 100ML", "entrada" =>	6	),
			array(	"desc"=>"CAMPEON ADULTO 44LB", "entrada" =>	3	),
			array(	"desc"=>"CAMPEON CACHORRO 50LB", "entrada" =>	3	),
			array(	"desc"=>"CANI-TABS DAILY MULTIPUPPY TABLETAS", "entrada" =>	18	),
			array(	"desc"=>"CEFALAB 180 DE 50ML", "entrada" =>	10	),
			array(	"desc"=>"CEFALEXIN PET TABLETAS", "entrada" =>	20	),
			array(	"desc"=>"CEFALONG 50MG TABLETAS", "entrada" =>	104	),
			array(	"desc"=>"CHAPA BIR", "entrada" =>	12	),
			array(	"desc"=>"COMPLEJO YODADO 50ML", "entrada" =>	6	),
			array(	"desc"=>"COMPLEJO YODADO 20M", "entrada" =>	6	),
			array(	"desc"=>"CONCENTRADO CAMPEON CACHORRO 2KILOS", "entrada" =>	2	),
			array(	"desc"=>"DECTOMAX DE 20ML", "entrada" =>	3	),
			array(	"desc"=>"DEXAVET 20ML", "entrada" =>	3	),
			array(	"desc"=>"DEXABIOTIC 12 MILLONES", "entrada" =>	3	),
			array(	"desc"=>"DIPIRONA 20% 100ML", "entrada" =>	3	),
			array(	"desc"=>"DIURIDE 500 X 20M", "entrada" =>	5	),
			array(	"desc"=>"DOLFEN DE 50ML", "entrada" =>	6	),
			array(	"desc"=>"ENDOVET CES INY 100M", "entrada" =>	12	),
			array(	"desc"=>"ENROFLOXACINA 20% 100ML", "entrada" =>	12	),
			array(	"desc"=>"ENRROBIOTIC 50GR", "entrada" =>	100	),
			array(	"desc"=>"FLOXATYL LBV 1000 ML", "entrada" =>	5410	),
			array(	"desc"=>"FOCO TRANSPARENTE 7.5W", "entrada" =>	50	),
			array(	"desc"=>"FORMULA 20-20-20 LIBRAS", "entrada" =>	200	),
			array(	"desc"=>"FUMIXIN 57GE TUBO 3 PASTILLAS", "entrada" =>	1000	),
			array(	"desc"=>"GALLINAZA 1 QQ", "entrada" =>	12	),
			array(	"desc"=>"GENTAMICINA 20ML", "entrada" =>	6	),
			array(	"desc"=>"HIERRO MAX DE 100ML", "entrada" =>	6	),
			array(	"desc"=>"HIPRAGUMBORO CH-80 1000DOSIS", "entrada" =>	6	),
			array(	"desc"=>"HORTAFLOR RABANO SHAMPION ONZAS", "entrada" =>	12	),
			array(	"desc"=>"INOVOMICINA DE 10GR", "entrada" =>	40	),
			array(	"desc"=>"MACHOTE R8L", "entrada" =>	100	),
			array(	"desc"=>"PIEL Y PELO TABLETAS", "entrada" =>	200	),
			array(	"desc"=>"PROPLAN LIBRAS", "entrada" =>	100	),
			array(	"desc"=>"PROPAC LIBRAS", "entrada" =>	50	),
			array(	"desc"=>"REFLECTORES SYLVANIA 100W", "entrada" =>	20	),
			array(	"desc"=>"SANDIA SHARLESTON GREY ONZAS", "entrada" =>	50	),
			array(	"desc"=>"SELEVIT E DE 50ML", "entrada" =>	12	),
			array(	"desc"=>"SHAMPOO CAMPEON DE 250ML", "entrada" =>	30	),
			array(	"desc"=>"SHOPER CAN CACHORRO LIBRAS", "entrada" =>	100	),
			array(	"desc"=>"SHOPER CAN CLASICO LIBRAS", "entrada" =>	100	),
			array(	"desc"=>"SPORMIX HIGH PROTEIN LB", "entrada" =>	700	),
			array(	"desc"=>"SPRAY EASY COLOR METAL AZUL", "entrada" =>	10	),
			array(	"desc"=>"SULFA TRIMETHOPRIM LH INY DE 50ML", "entrada" =>	6	),
			array(	"desc"=>"TABLETAS MICOFIN", "entrada" =>	100	),
			array(	"desc"=>"TABLETAS NEFROTEC", "entrada" =>	100	),
			array(	"desc"=>"TABLETAS U*DERM OMEGA", "entrada" =>	600	),
			array(	"desc"=>"TABLETAS PREDNISONA", "entrada" =>	200	),
			array(	"desc"=>"TETRACICLINA 150 GRAMOS", "entrada" =>	20	),
			array(	"desc"=>"TIJERA DE PODAR BELLOTA 3501-24", "entrada" =>	3	),
			array(	"desc"=>"TIRRO BLANCO DE 3/4", "entrada" =>	6	),
			array(	"desc"=>"VACUNA DEFENSOR 1 RABIA", "entrada" =>	100	),
			array(	"desc"=>"VACUNA DOBLE AVIAR NEWCASTLE + BROQUITIS 1000 DOSIS", "entrada" =>	10	),
			array(	"desc"=>"VACUNA LEUCOPENIA FELINA", "entrada" =>	6	),
			array(	"desc"=>"VACUNA EMULVAC 25 DOSIS", "entrada" =>	25	),
			array(	"desc"=>"VACUNA NEWCASTLE DE 1000 DOSIS", "entrada" =>	12	),
			array(	"desc"=>"VACUNA PARVOVIRUS", "entrada" =>	25	),
			array(	"desc"=>"VACUNA VIRUELA AVIAR 1000 DOSIS", "entrada" =>	6	),
			array(	"desc"=>"VACUNAS NEWCASTLE DE 150 DOSIS", "entrada" =>	20	),
			array(	"desc"=>"VAMPIGEL 120GR", "entrada" =>	18	),
			array(	"desc"=>"VENTOSA PARA INODORO KIKA", "entrada" =>	6	),
			array(	"desc"=>"VERMIMAX TABLETAS", "entrada" =>	100	),
			array(	"desc"=>"VITA DUNKEL 50ML", "entrada" =>	6	),
			array(	"desc"=>"VITADUNKEL 250ML", "entrada" =>	3	),
			array(	"desc"=>"VITACERDO GESTACION QQ", "entrada" =>	2	),
			array(	"desc"=>"YARDAS DE ESTAÃ‘O 60/40", "entrada" =>	20	),
		);
		echo "<table><tr><th>pro</th><th>pre</th><th>cant</th><th>desc</th><th>Existencias</th></tr>";

		foreach($productos as $producto){
			$prod = $this->Generic_model->get("presentaciones","presentaciones.id_producto, presentaciones.id_presentacion, productos.exist_act_producto", array("desc_presentacion" => $producto["desc"]), "", "", array("productos" => "productos.id_producto = presentaciones.id_producto"));
			$prod = ($prod && count($prod) ? $prod[0] : null);
			echo "<tr>";
			echo "<td>".($prod ? $prod->id_producto : "")."</td>";
			echo "<td>".($prod ? $prod->id_presentacion : "")."</td>";
			echo "<td>".$producto["entrada"]."</td>";
			echo "<td>".$producto["desc"]."</td>";
			echo "<td>".($prod ? $prod->exist_act_producto : "")."</td>";
			echo "</tr>";
		}
		echo "</table>";
		
	}



	/**Traslape de bases de datos AGROVET MATA: Compara las transacciones de entrada  de las bases de datos. */
	function contador_entradas(){
		$this->load->model('Online_model');
		$prodsInOnline = $this->Online_model->sql_custom('SELECT id_producto FROM productos');

		echo "Productos en inventario en linea: ".count($prodsInOnline)."<br>";
		echo "<hr>";
		echo "<table border='1' cellspacing='0'>";
		echo "<tr>";
		echo "<th>#</th>";
		echo "<th>id</th>";
		echo "<th>desc</th>";
		echo "<th>E. Local</th>";
		echo "<th>E. Online</th>";
		echo "<th>Dif.</th>";
		echo "<th></th>";
		echo "</tr>";
		$counter = 1;
		foreach($prodsInOnline as $prodOnline){
			$prodInLocal = $this->Generic_model->sql_custom("SELECT productos.id_producto, presentaciones.desc_presentacion FROM productos LEFT JOIN presentaciones ON productos.id_producto = presentaciones.id_producto WHERE productos.id_producto = '".$prodOnline->id_producto."' AND presentaciones.tipo_presentacion = 0");

			if($prodInLocal && count($prodInLocal)){
				$prodLocal = $prodInLocal[0];
				$limitDate = "2023-04-30 23:59:59";
				/**Entradas en Local */
				$entriesInLocal = $this->Generic_model->sql_custom("SELECT id_entrada, SUM(cant_entrada*unidades_representativas) as total_entrada FROM entrada_productos LEFT JOIN presentaciones ON presentaciones.id_presentacion=entrada_productos.id_presentacion WHERE entrada_productos.id_producto = ".$prodLocal->id_producto." AND fecha_entrada <= '".$limitDate."'");
				/**Entradas en Online */
				$entriesInOnline = $this->Online_model->sql_custom("SELECT id_entrada, SUM(cant_entrada*unidades_representativas) as total_entrada FROM entrada_productos LEFT JOIN presentaciones ON presentaciones.id_presentacion=entrada_productos.id_presentacion WHERE entrada_productos.id_producto = ".$prodLocal->id_producto." AND fecha_entrada <= '".$limitDate."'");
				
				$cantLocalEntries = isset($entriesInLocal[0]->total_entrada) ? $entriesInLocal[0]->total_entrada : 0;
				$cantOnlineEntries = isset($entriesInOnline[0]->total_entrada) ? $entriesInOnline[0]->total_entrada : 0;
				$difAtEntries = $cantLocalEntries - $cantOnlineEntries;
				
				if($difAtEntries != 0){
					echo "<tr>";
					echo "<td>".$counter."</td>";
					echo "<td>".$prodLocal->id_producto."</td>";
					echo "<td>".$prodLocal->desc_presentacion."</td>";
					echo "<td>".$cantLocalEntries."</td>";
					echo "<td>".$cantOnlineEntries."</td>";
					echo "<td style='".($difAtEntries != 0 ? 'background-color: red;' : '')."'>".$difAtEntries."</td>";
					echo "<td><a href='".base_url()."auxiliar/comparar_entradas?prod=".$prodLocal->id_producto."&to=".$limitDate."&v=2' target='_blank'>Verificar</a></td>";
					echo "<tr>";
				}

			}
			$counter ++;
		}
		echo "</table>";

	}
	/**Traslape de bases de datos AGROVET MATA: Compara las transacciones de entrada y salida de las bases de datos. */
	function comparar_entradas(){
		$this->load->model('Online_model');
		echo "<!DOCTYPE HTML><html lang='en'><head><meta charset='utf-8'>";
		echo "</head>";
		echo "<link href='https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css' rel='stylesheet' integrity='sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC' crossorigin='anonymous'>";
		echo "<body>";
		$producto = $this->input->get('prod');
		$final = $this->input->get('to');
		$sqlStmt="(SELECT  '0' as indx, 'entrada' as trans, id_entrada as id, DATE(fecha_entrada) as fecha, concepto_entrada as concepto, (cant_entrada*unidades_representativas) as entrada, (costo_entrada/unidades_representativas) as costo FROM entrada_productos LEFT JOIN presentaciones ON presentaciones.id_presentacion=entrada_productos.id_presentacion WHERE entrada_productos.id_producto = '". $producto."'".($final ? " AND fecha_entrada <= '".$final."'" : "").")";
		$localEntries =  $this->Generic_model->sql_custom($sqlStmt);
		$onlineEntries =  $this->Online_model->sql_custom($sqlStmt);

		$totalLocalEntry = 0;
		$totalOnlineEntry = 0;
		echo "<div class='row'>";
		/** Local*/
		echo "<div class='col-sm-6'><h1>Local</h1>";
		echo "<table class='table table-striped'>";
		echo "<thead><tr> <th>#</th> <th>ID</th> <th>Fecha</th> <th>concepto</th> <th>Cantidad</th> <th></th></tr></thead><tbody>";
		if(count($localEntries)){
			$localCounter = 1;
			$totalLocalEntry = 0;
			foreach($localEntries as $localEntry){
				echo "<tr>";
				echo "<td>".$localCounter."</td>";
				echo "<td>".$localEntry->id."</td>";
				echo "<td>".$localEntry->fecha."</td>";
				echo "<td>".$localEntry->concepto."</td>";
				echo "<td>".$localEntry->entrada."</td>";
				echo "<td><a class='btn btn-primary btn-sm py-0' href='".base_url()."auxiliar/trasladar_entrada?in=online&id=".$localEntry->id."&prod=".$producto."&to=".$final."'>Trasladar</a></td>";
				echo "</tr>";
				$totalLocalEntry += $localEntry->entrada;
				$localCounter ++;
			}
		}
		echo "</tbody></table>";
		echo "</div>";
	
		/** Online*/
		echo "<div class='col-sm-6'><h1>Online</h1>";
		echo "<table class='table table-striped'>";
		echo "<thead><tr> <th>#</th> <th>ID</th> <th>Fecha</th> <th>concepto</th> <th>Cantidad</th> <th></th> </tr></thead><tbody>";
		if(count($onlineEntries)){
			$onlineCounter = 1;
			$totalOnlineEntry = 0;
			
			foreach($onlineEntries as $onlineEntry){
				echo "<tr>";
				echo "<td>".$onlineCounter."</td>";
				echo "<td>".$onlineEntry->id."</td>";
				echo "<td>".$onlineEntry->fecha."</td>";
				echo "<td>".$onlineEntry->concepto."</td>";
				echo "<td>".$onlineEntry->entrada."</td>";
				echo "<td><a class='btn btn-danger btn-sm py-0' href='".base_url()."auxiliar/eliminar_entrada?from=online&id=".$onlineEntry->id."&prod=".$producto."&to=".$final."'>Eliminar</a></td>";
				echo "</tr>";
				$totalOnlineEntry += $onlineEntry->entrada;
				$onlineCounter ++;
			}
		}
		echo "</tbody></table>";
		echo "</div>";

		echo "<div>";
		/**Totales */
		echo "<div class='row'>";
		echo "<div class='col-sm-6 text-center'>TOTAL:".$totalLocalEntry."</div>";
		echo "<div class='col-sm-6 text-center'>TOTAL:".$totalOnlineEntry."</div>";
		echo "</div>";
		echo "<div class='text-center'><h3>Diferencia: ",$totalLocalEntry - $totalOnlineEntry."</h3></div>";


		echo "</body></html>";
	}
	function eliminar_entrada(){
		$db = $this->input->get('from');
		$id = $this->input->get('id');
		$prod = $this->input->get('prod');
		$to = $this->input->get('to');
		/*$sqlStmt = "DELETE FROM entrada_productos WHERE id_entrada = ".$id;*/
		if($db == 'online'){
			$this->load->model('Online_model');
			$this->Online_model->delete('entrada_productos', 'id_entrada', $id);
			redirect(base_url('auxiliar/comparar_entradas?prod='.$prod.'&to='.$to));
		}
	}
	function trasladar_entrada(){
		$this->load->model('Online_model');

		$id = $this->input->get('id');
		$in = $this->input->get('in');
		$prod = $this->input->get('prod');
		$to = $this->input->get('to');

		$sqlStmt = "SELECT * FROM entrada_productos WHERE id_entrada = ".$id;
		if($in == "online"){
			$entrada = $this->Generic_model->sql_custom($sqlStmt);
			$entrada = json_decode(json_encode($entrada[0]), true);
			
			unset($entrada['id_entrada']);
			$this->Online_model->save('entrada_productos', $entrada);

			redirect(base_url('auxiliar/comparar_entradas?prod='.$prod.'&to='.$to));
		}
	}
	

	/**Traslape de bases de datos AGROVET MATA: Compara las transacciones de salida  de las bases de datos. */
	function contador_salidas(){
		$this->load->model('Online_model');
		$prodsInOnline = $this->Online_model->sql_custom('SELECT id_producto FROM productos');

		echo "Productos en inventario en linea: ".count($prodsInOnline)."<br>";
		echo "<hr>";
		echo "<table border='1' cellspacing='0'>";
		echo "<tr>";
		echo "<th>#</th>";
		echo "<th>id</th>";
		echo "<th>desc</th>";
		echo "<th>E. Local</th>";
		echo "<th>E. Online</th>";
		echo "<th>Dif.</th>";
		echo "<th></th>";
		echo "</tr>";
		$counter = 1;
		foreach($prodsInOnline as $prodOnline){
			$prodInLocal = $this->Generic_model->sql_custom("SELECT productos.id_producto, presentaciones.desc_presentacion FROM productos LEFT JOIN presentaciones ON productos.id_producto = presentaciones.id_producto WHERE productos.id_producto = '".$prodOnline->id_producto."' AND presentaciones.tipo_presentacion = 0");

			if($prodInLocal && count($prodInLocal)){
				$prodLocal = $prodInLocal[0];
				$limitDate = "2023-04-30 23:59:59";
				/**Salidas en Local */
				$outsInLocal = $this->Generic_model->sql_custom("SELECT id_salida, SUM(cant_salida*unidades_representativas) as total_salida FROM salida_productos LEFT JOIN presentaciones ON presentaciones.id_presentacion=salida_productos.id_presentacion WHERE salida_productos.id_producto = ".$prodLocal->id_producto." AND fecha_salida <= '".$limitDate."'");
				/**Salidas en Online */
				$outsInOnline = $this->Online_model->sql_custom("SELECT id_salida, SUM(cant_salida*unidades_representativas) as total_salida FROM salida_productos LEFT JOIN presentaciones ON presentaciones.id_presentacion=salida_productos.id_presentacion WHERE salida_productos.id_producto = ".$prodLocal->id_producto." AND fecha_salida <= '".$limitDate."'");
				
				$cantLocalOutputs = isset($outsInLocal[0]->total_salida) ? $outsInLocal[0]->total_salida : 0;
				$cantOnlineOutputs = isset($outsInOnline[0]->total_salida) ? $outsInOnline[0]->total_salida : 0;
				$difAtOutputs = $cantLocalOutputs - $cantOnlineOutputs;
				
				/*if($difAtOutputs != 0){*/
					echo "<tr>";
					echo "<td>".$counter."</td>";
					echo "<td>".$prodLocal->id_producto."</td>";
					echo "<td>".$prodLocal->desc_presentacion."</td>";
					echo "<td>".$cantLocalOutputs."</td>";
					echo "<td>".$cantOnlineOutputs."</td>";
					echo "<td style='".($difAtOutputs != 0 ? 'background-color: red;' : '')."'>".$difAtOutputs."</td>";
					echo "<td><a href='".base_url()."auxiliar/comparar_salidas?prod=".$prodLocal->id_producto."&to=".$limitDate."&v=2' target='_blank'>Verificar</a></td>";
					echo "<tr>";
				/*}*/

			}
			$counter ++;
		}
		echo "</table>";

	}




	function concatenar_entradas(){
		$this->load->model('Online_model');
		/**Obtener entradas del sistema online*/
		$compras = $this->Online_model->sql_custom('SELECT * FROM compras');
		foreach($compras as $compra){
			/**Buscar entrada en base de datos local*/
			$existEntrada = $this->Generic_model->sql_custom('SELECT fecha_entrada FROM entrada_productos WHERE fecha_entrada = "'.$entrada->fecha_entrada.'"');
			$foundEntrada = ($existEntrada && count($existEntrada) ? true : false);
			/** */
			if(!$foundEntrada){
				echo '<b>Procesando entrada: '.$entrada->id_entrada.' - '.$entrada->fecha_entrada."</b><br>";
				/**Si es una compra */
				switch($entrada->concepto_entrada){
					case 0: /**Inventario inicial */
						echo '<i>Tipo de entrada: Inventario Inicial</i><br>';
					break;
					case 1: /**Compra */
						echo '<i>Tipo de entrada: Compra</i><br>';
					break;
					case 2: /**Devolucion */
						echo '<i>Tipo de entrada: Devolucion</i><br>';
					break;
					default:
						echo '<i>Desconocida ('.$entrada->concepto_entrada.')</i><br>';
					break;
				}
				
			}
		}
	}

	function concatenar_salidas(){
		ini_set('max_execution_time', 500);
		$this->load->model('Online_model');
		/**Obtener entradas del sistema online*/
		$ventas = $this->Online_model->sql_custom('SELECT * FROM ventas');
		foreach($ventas as $venta){
			/**Buscar entrada en base de datos local*/
			$existVenta = $this->Generic_model->sql_custom('SELECT id_venta, fecha_venta FROM ventas WHERE id_venta = "'.$venta->id_venta.'"');
			$foundVenta = ($existVenta && count($existVenta) ? true : false);
			/** */
			if(!$foundVenta){
				echo '<b>Procesando venta: '.$venta->id_venta.' - '.$venta->fecha_venta."</b><br>";
				
			
				
			}
		}
	}
}
?>