<?php
session_start();
include('config.php');
include($rutaPhp.$rutaHtml.'/maqueta/includes.php');

//ini_set('display_errors', 1);
//ini_set('display_startup_errors', 1);
//error_reporting(E_ALL);

$OP_bloqueo_multioperario_noDesbloquear=true;

include($rutaPhp.$rutaHtml.'/acceso/control.php');

$noConectar=true;
$esPantallaOP=true;
include($rutaPhp.$rutaHtml.'/maqueta/arriba.php');

$esperarCarga=true;


$LecturadeIDsdeTTTdesdelapreparacion=( $_SESSION['parametrosSGA']['LecturadeIDsdeTTTdesdelapreparacion']=='S' );

$traza=(isset($_GET['traza']) && $traza);
$trazaSiNo=(isset($_GET['traza']) && $_GET['traza']=='sino');

if($traza) {
	print_r($_SESSION['orden']);
	echo '<p>informarPaletDestino: '.$informarPaletDestino.'</p>';
}



//8-11-2024 informar palet destino
//RECARGA CABECERA ORDEN
if($_GET['orden']) $pregargaOrden=$_GET['orden']; else if($_POST['orden']) $pregargaOrden=$_POST['orden'];
if($_GET['empresa']) $precargaEmpresa=$_GET['empresa']; else if($_POST['empresa']) $precargaEmpresa=$_POST['empresa']; 
if($pregargaOrden && $precargaEmpresa) {
	$peticion='SGAPreparar#'.$_SESSION['empresa'].'#'.$_SESSION['usuario']['Usuario'].'#DETALLEORDENPREP#'.$_SESSION['almacen'].';'.$precargaEmpresa.';'.$pregargaOrden;
	$resultado=PedirDatos($wsUsuario,$wsClave,$wsEmpresa,$peticion);
	if($traza || $trazaSiNo) {
		echo '<hr>';
		echo "<p>".$peticion."</p>";
		print_r($resultado);
		echo '<hr>';
	}
	$_SESSION['orden']=$resultado[0];
}
	
	

//07-01-2025
$GestionNumSerieSalida=($_SESSION['orden']['GestionNumSerieSalida']); //Puede ser C u otro valor, pero aqui no importa

	
$informarPaletDestino=($_SESSION['orden']['PaletDestinoAlAnularLecturas']=='S');


if($_POST['orden'] && $_POST['empresa'] && $_POST['liberarConfirmacion']=='1') {

	$orden=$_POST['orden'];
	$empresa=$_POST['empresa'];
	

	$hayProductosLiberar=false;
	$hayAlbaranesLiberar=false;
	$errorProductosLiberar=false;
	$errorAlbaranesLiberar=false;
	
	$peticion='SGAPreparar#'.$_SESSION['empresa'].'#'.$_SESSION['usuario']['Usuario'].'#DETALLEORDENPREPNSERIE#'.$_SESSION['almacen'].';'.$_POST['empresa'].';'.$_POST['orden'];
	$resultado=PedirDatos($wsUsuario,$wsClave,$wsEmpresa,$peticion);
	
	$ordenDetallada=$resultado[0];
	
	if($traza || $trazaSiNo) {
		echo "<p>".$peticion."</p>";
		print_r($resultado);
	}
	
	//24-05-2022 Multioperario
	$gestionMultiOperario=($_SESSION['parametrosSGA']['GestionMultioperario']=='S' && $ordenDetallada['Multioperario']=='S');
	
	$cadenaEnvio='';
	$contador=0;
	
	$arrayAlbaranes=array();
	
	foreach(arreglaArrayPXMobileProxiumResult($ordenDetallada['Productos']) as $producto) {
			 
		$contador++;
		
		
		
		 //07-01-2025
		 if($producto['NumerosSerieSalida']) $NumerosSerieSalida=explode('¬',$producto['NumerosSerieSalida']);
		 else $NumerosSerieSalida=array();
		 
		 if( isset($NumerosSerieSalida) && is_array($NumerosSerieSalida) && count($NumerosSerieSalida)>0 ) {
					 
			$cuantasLineas=count($NumerosSerieSalida);
		 
		 }
		 else $cuantasLineas=1;
		 
		 
		
		for($i=1;$i<=$cuantasLineas;$i++) {
		
			//07-01-2025
			$numeroSeriePintar='';
			if( isset($NumerosSerieSalida) && is_array($NumerosSerieSalida) && $NumerosSerieSalida[$i-1] ) {
				$numeroSeriePintar=$NumerosSerieSalida[$i-1];
			}
			
			if(!$numeroSeriePintar) $identificadorUnico=$contador;
			else $identificadorUnico=$contador.'-'.$i;
						
		
			if( $_POST['liberar'.$identificadorUnico]>0 || $_POST['liberarCargaRapida'.$identificadorUnico]>0 || $hayTTTCheckeado ) {
			
				$hayProductosLiberar=true;
				
				if($_POST['trazabilidad'.$identificadorUnico]) $listadeIds=$_POST['trazabilidad'.$identificadorUnico];
				else $listadeIds='';
			
				if($_POST['cajas'.$identificadorUnico]) $cantidad=$_POST['EmbalajePrimarioCaja'.$identificadorUnico]*$_POST['liberar'.$identificadorUnico];
				else $cantidad=$_POST['liberar'.$identificadorUnico];
			
				$cadenaEnvio.='*PXTmpDesbloqueoSGAOrden'.PHP_EOL;
				$cadenaEnvio.='Empresa='.$empresa.PHP_EOL;
				$cadenaEnvio.='Orden='.$orden.PHP_EOL;
				
				//Da igual que sea caja o palet, que esté en primer nivel o segundo. Cada linea está asociada a un id Contenedor
				$cadenaEnvio.='Contenedor='.$producto['Contenedor'].PHP_EOL;
				
				$cadenaEnvio.='Producto='.$producto['Codigo'].PHP_EOL;
				$cadenaEnvio.='Ubicacion='.$producto['Ubicacion'].PHP_EOL;
				
				$datos=arreglaArrayPXMobileProxiumResult($producto['Datos']);
				
				foreach(array('Idioma','Precinta','Lote','FechaCaducidad','NumSerie') as $datoVariable) {
					foreach($_SESSION['comportamientosGlobales'] as $comportamiento) {
						if($comportamiento['NombreSQL']==$datoVariable) {
							$etiqueta=$comportamiento['Codigo'];
							$valor='-';
							reset($datos);
							foreach($datos as $dato) if($dato['Codigo']==$etiqueta) { $valor=$dato['Valor']; break; }
							break;
						}
					}
					
					//07-01-2025
					if($datoVariable=='NumSerie' && $numeroSeriePintar) $valor=$numeroSeriePintar;
					
					$cadenaEnvio.=$datoVariable.'='.$valor.PHP_EOL;
				}
				
				$cadenaEnvio.='NumEntrada='.$producto['NumeroEntrada'].PHP_EOL;
				$cadenaEnvio.='LinEntrada='.$producto['LineaEntrada'].PHP_EOL;
				
				
				
				//25-05-2022 se añade tras el desarrollo de OP Multiusuario
				$cadenaEnvio.='Usuario='.$_SESSION['usuario']['Usuario'].PHP_EOL;
				
				//5-11-2024 informar palet destino
				if($informarPaletDestino) {
					$cadenaEnvio.='Contenedordestinoliberacion='.$_POST['contenedor'].PHP_EOL;
				}
				
				if($listadeIds) $cadenaEnvio.='ListadeIds='.$listadeIds.PHP_EOL;
				
				$cadenaEnvio.='Cantidad='.$cantidad.PHP_EOL;
				
				//6-11-21024 condicionamos el fin en el caso de picking previo, porque da problemas cuando es el mismo contenedor
				if(!$informarPaletDestino) $cadenaEnvio.='*FIN'.PHP_EOL;
			
			}
			else if($_POST['liberarCrossDocking'.$identificadorUnico]) {
			
				$hayAlbaranesLiberar=true;
				if(!in_array($_POST['liberarCrossDocking'.$identificadorUnico],$arrayAlbaranes)) $arrayAlbaranes[]=$_POST['liberarCrossDocking'.$identificadorUnico];
			
			}
			
		}

	}
	
	//6-11-21024 condicionamos el fin en el caso de picking previo, porque da problemas cuando es el mismo contenedor
	if($informarPaletDestino) $cadenaEnvio.='*FIN'.PHP_EOL;
	
	
	if($traza || $trazaSiNo) echo '<p>hayProductosLiberar: '.$hayProductosLiberar.'</p>';
	
	if($hayProductosLiberar) {
	
		if(!$trazaSiNo) {
			$resultado=EnviarDatos($wsUsuario,$wsClave,base64_encode(utf8_decode($cadenaEnvio)));
		}
				
		if($traza || $trazaSiNo) {
			echo nl2br($cadenaEnvio);
			echo "<p>RESULTADO OBTENIDO</p>";
			print_r($resultado['EnviarDatosResult']);
		}
		
		$resultadoEvaluar=explode("#",$resultado['EnviarDatosResult']);
		
		if($resultadoEvaluar[0]!=1) {
		
			$errorProductosLiberar=$resultadoEvaluar[1];
			//$errorProductosLiberar=utf8_encode($resultadoEvaluar[1]);
			//$errorProductosLiberar=mb_convert_encoding($resultadoEvaluar[1],'UTF-8','ISO-8859-1');
		}
		else {
		
			if($informarPaletDestino && $_SESSION['seleccionTipoPalet'] && $_POST['tipoPalet']) {
			
				$cadenaPalet=$_POST['contenedor'].','.$_POST['tipoPalet'].',';
			
				$peticion='SGATipificarPalets#'.$_SESSION['empresa'].'#'.$_SESSION['usuario']['Usuario'].'#'.$_SESSION['almacen'].'#'.$cadenaPalet;
				$resultado=PedirDatos($wsUsuario,$wsClave,$wsEmpresa,$peticion);
				
				if($traza) {
					echo "<p>".$peticion."</p>";
					print_r($resultado);
				}
			
			}
		
		}
		
	}
	
	if($traza || $trazaSiNo) echo '<p>hayAlbaranesLiberar: '.$hayAlbaranesLiberar.'</p>';
	
	if($hayAlbaranesLiberar) {
	
		$cadenaAlbaranes='';
		foreach($arrayAlbaranes as $albaran) {
			if($cadenaAlbaranes!='') $cadenaAlbaranes.=',';
			$cadenaAlbaranes.=$albaran;
		}
	
		$peticion='SGAPreparar#'.$_SESSION['empresa'].'#'.$_SESSION['usuario']['Usuario'].'#LIBERARCROSSDOCKING#'.$_SESSION['almacen'].';'.$_POST['empresa'].';'.$_POST['orden'].';'.$cadenaAlbaranes;
		$resultado=PedirDatos($wsUsuario,$wsClave,$wsEmpresa,$peticion);
	
		if($traza || $trazaSiNo) {
			echo "<p>".$peticion."</p>";
			print_r($resultado);
		}
		
		$resultadoEvaluar=explode('#',$resultado[0]['Error']);
		
		if($resultadoEvaluar[0]==1) $errorAlbaranesLiberar=$resultadoEvaluar[1];
		
	}
	
	
	//Gestion de los mensajes
	
	$mensajeOk='';
	$mensajeError='';
	$mensajeAdvertencia='';
	
	if($hayProductosLiberar && $hayAlbaranesLiberar) {
	
		if(!$errorProductosLiberar && !$errorAlbaranesLiberar) $mensajeOk='Todos los productos y albaranes han sido liberados correctamente.';
		else if($errorProductosLiberar) $mensajeAdvertencia=$errorProductosLiberar;
		else $mensajeAdvertencia=$errorAlbaranesLiberar;
		
	}
	else if($hayProductosLiberar) { //Solo productos
	
		if($errorProductosLiberar) $mensajeError=$errorProductosLiberar;
		else $mensajeOk='Productos liberados correctamente.';
	
	}
	else if($hayAlbaranesLiberar) { //Solo albaranes
	
		if($errorAlbaranesLiberar) $mensajeError=$errorAlbaranesLiberar;
		else $mensajeOk='Albaranes liberados correctamente.';
	
	}
	
	if($mensajeError) {
	
		if(!$trazaSiNo) {
			?><script>alert('ERROR: <?php echo $mensajeError; ?>',null,'error');</script><?php
		}
		else echo '<p>MENSAJE ERROR: '.$mensajeError.'</p>';
	
	}
	else if($mensajeAdvertencia) {
	
		if(!$trazaSiNo) {
			?><script>alert('ATENCION: El liberado se ha realizado parcialmente.<br><br><?php echo $mensajeAdvertencia; ?>',null,'advertencia');</script><?php
		}
		else echo '<p>MENSAJE ADVERTENCIA: '.$mensajeAdvertencia.'</p>';
	}
	else if($mensajeOk) {
	
		if(!$trazaSiNo) {
			?>
			<script>
			alert('<?php echo $mensajeOk; ?>',null,'ok').done( function(){
				$('#popupCargando').show();
				<?php if($_GET['procedencia']=='ordenPreparacion') { ?>
				window.location="<?php echo $rutaHtml; ?>/orden-preparacion-<?php echo $_SESSION['tipoGestion']; ?>.php?orden=<?php echo $orden; ?>&empresa=<?php echo $empresa; ?>";
				<?php } else { ?>
				window.location="<?php echo $rutaHtml.$archivoInicio; ?>";
				<?php } ?>		
			});
			</script>
			<?php
		}
		else echo '<p>OK: '.$mensajeOk.'</p>';
	}
	
} //Fin si hay POST

?>

<?php include($rutaPhp.$rutaHtml.'/librerias/teclado.php'); ?>

<h2>Liberar productos preparados</h2>

<p>Orden de Preparación:<br />

<input type="text" name="orden" id="orden" class="campo" value="<?php if(isset($_GET['orden'])) echo $_GET['orden']; ?>" autocomplete="off"/><img src="<?php echo DIR_IMAGENES; ?>/x.png" alt="Borrar" class="boton-x" id="borrarOrden"/></p>

<?php if(count($_SESSION['empresasGrupo'])>1) { ?>
    <p>Empresa:<br />
    <select name="empresa" id="empresa" class="campo">
    	<option value="" selected="selected">---</option>
        <?php foreach($_SESSION['empresasGrupo'] as $empresa) { ?>
        <option value="<?php echo $empresa['Codigo']; ?>" <?php if($empresa['Codigo']==$_GET['empresa']) { ?>selected<?php } ?>><?php echo $empresa['Nombre']; ?></option>
		<?php } ?>
	</select>
    </p>
<?php } else { ?>
	<input type="hidden" name="empresa" id="empresa" value="<?php echo $_SESSION['empresa']; ?>"/>
<?php } ?>

<p><input type="submit" name="botonCarga" id="botonCarga" value="Cargar Orden" class="boton"/></p>

<div id="popupTrazabilidad" class="popup" style="display:none"></div>
<div id="popupTrazabilidadContenido" class="popupContenidoScroll" style="display:none"></div>

<div id="detalleOrden">
</div>

<?php if($_GET['procedencia']=='ordenPreparacion') { ?>
<p><input type="button" name="botonVolver" id="botonVolver" value="Volver" class="boton reducido"/></p>
<?php } ?>

<script>

function cargar() {
	
	if($("#orden").val()!='' && $("#empresa").val()!='') {
	
		$('#popupCargando').show();
		
		$.post( "<?php echo $rutaHtml; ?>/contenidos/orden-preparacion-listado-liberar.php<?php if($traza || $trazaSiNo) { ?>?traza=si<?php } ?>", { orden : $("#orden").val() , empresa : $("#empresa").val() , <?php if($informarPaletDestino) { ?>'informarPaletDestino' : true<?php } ?> })
			.done(function(data) {
				$('#popupCargando').hide();
				if(data) $('#detalleOrden').html(data);
		});
	
	}
}

$(document).ready(function() {

	$('#popupCargando').hide();
	$("#orden").focus();
	
	$('#borrarOrden').on("click",function(){
		$("#orden").val('');
		$("#detalleOrden").empty();
		$("#orden").focus();
	});
	
	$('#borrarEmpresa').on("click",function(){
		$("#empresa").val('');
		$("#detalleOrden").empty();
		$("#empresa").focus();
	});
	
	$('#orden').on("click",function(){
		$('#teclado').show();
		$('#valor').val( $('#orden').val() );
		$('#valorOculto').val( $('#orden').val() );
		$('#enter').attr('campoValor','orden');
	});
	
	$('#botonCarga').on("click",function(){
		cargar();
	});
	
	
	$('#botonVolver').on('click',function(){
		$('#popupCargando').show();
		window.location="<?php echo $rutaHtml; ?>/orden-preparacion-<?php echo $_SESSION['tipoGestion']; ?>.php?orden=<?php if(isset($_GET['orden'])) echo $_GET['orden']; ?>&empresa=<?php if(isset($_GET['empresa'])) echo $_GET['empresa']; ?>";
	});
	
	
	
	
	if($("#orden").val()!='' && $("#empresa").val()!='') {
		cargar();
	}
	
	
	<?php if($LecturadeIDsdeTTTdesdelapreparacion) { ?>
	
	$(document).on('click','.verTrazabilidad',function(){
	
		$('#popupCargando').show();
		
		let contador=$(this).attr('contador');
		let numeros=$(this).attr('numeros');
		
		let seleccionados='';
		if($('#trazabilidad'+contador).val()) seleccionados=$('#trazabilidad'+contador).val().replaceAll('@',';');
	
		$.post('<?php echo $rutaHtml; ?>/contenidos/trazabilidad-tabaco-ids.php' , { 'numeros' : numeros , 'accion' : 1 , 'contador' : contador , 'seleccionados' : seleccionados })
		.done(function(data) {
		
			$('#popupCargando').hide();
		
			$('#popupTrazabilidadContenido').html(data);
			$('#popupTrazabilidad').show();
			$('#popupTrazabilidadContenido').show();
			
			var posicion=$(document).scrollTop();
			$('#popupTrazabilidadContenido').offset({ top: posicion+20 });
		});
		
	});
	
	$(document).on('click','#botonAceptarTrazabilidad',function(){
	
		let cadena='';
		let contador=$(this).attr('contador');
		let cantidad=0;
	
		$('.checkIdTrazabilidad').each(function(){
			if($(this).is(':checked')) {
				if(cadena!='') cadena+='@';
				cadena+=$(this).attr('codigo');
				cantidad+=parseInt($(this).attr('cantidad'));
			}
		});
		
		$('#trazabilidad'+contador).val(cadena);
		if(cantidad>0) $('#liberar'+contador).val(cantidad);
		else $('#liberar'+contador).val('');
		
		let maximo=parseInt($('#liberar'+contador).attr('maximo'));
		if(cantidad>maximo) {
			alert('ERROR: Has seleccionado más Ids o más cantidad de la preparada en esa linea de producto',null,'error');
			$('#liberar'+contador).addClass('campoError');
		}	
		else $('#liberar'+contador).removeClass('campoError');
		
		$('#popupTrazabilidad').hide();
		$('#popupTrazabilidadContenido').hide();
		
		
	});
	
	<?php } ?>
	

});

</script>

<?php
include($rutaPhp.$rutaHtml.'/maqueta/abajo.php');
?>
