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

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

include($rutaPhp.$rutaHtml.'/librerias/teclado.php');
include($rutaPhp.$rutaHtml.'/librerias/calculadora.php');


include($rutaPhp.$rutaHtml.'/librerias/funciones-gs1.php');


$mostrarMasterCases=($_SESSION['parametrosSGA']['GestionTrazabilidadTabacoMasterCase']=='S');

$simulaPantallaSecundaria=false;

unset($_SESSION['errores']);

if($_GET['traza']=='si') {
	print_r($_POST);
	echo '<p>CifrarIdsTTT: '.$_SESSION['parametrosSGA']['CifrarIdsTTT'].'</p>';
}

if($_POST['lecturaFinalDesagregado']) $lectura=$_POST['lecturaFinalDesagregado'];
else if($_POST['lecturaFinal']) $lectura=$_POST['lecturaFinal'];
else {
	unset($_SESSION['productos']);
}

//echo '<p>LECTURA FINAL: '.$lectura.'</p>';



//07-06-2024
if($_POST['anularLecturas']){

	if($_GET['traza']=='si') {
		echo '<p>Todos los post:</p>';
		print_r($_POST);
	}
	
	foreach($_SESSION['productos'] as $producto) {

		$codigosYaDesagregados=arreglaArrayPXMobileProxiumResult($producto['IDsDesagregados']);
		
		$cadenaLiberacion='';
		
		foreach($codigosYaDesagregados as $item) {
		
			if($_GET['traza']=='si') {
				echo '<p>'.$item['Id'].' / codificado: '.base64_encode($item['Id']).'</p>';
				echo '<p>POST: '.$_POST['liberar-'.base64_encode($item['Id'])].'</p>';
			}
		
			//Los ids de los checks de las lecturas ya leidos, SIEMPRE están en base64 para evitar errores
			if( $_POST['liberar-'.base64_encode($item['Id'])] ) {
			
				if($_GET['traza']=='si') echo '<p>Se ha pedido liberar</p>';
				
				if($cadenaLiberacion!='') $cadenaLiberacion.='@';
				///21-10-2024 Parametrizado posible Base64
				$cadenaLiberacion.=codificaTTT($item['CodigoEscaneado']);
			}
		
		}
		
		if($cadenaLiberacion!='') {
		
			$peticion='TPDTTrazabilidad#'.$_SESSION['empresa'].'#'.$_SESSION['usuario']['Usuario'].'#ANULACIONDESAGREGACION#'.$lectura.';'.$cadenaLiberacion;
	
			$resultado=PedirDatos($wsUsuario,$wsClave,$wsEmpresa,$peticion);
			
			if($_GET['traza']=='si') {
				echo "<p>Proceso de cancelación de ids para desagregar</p>";
				echo "<p>".$peticion."</p>";
				print_r($resultado);
			}
		
		}
		
	}
	
}




if($_POST['confirmacionEnvioDesagregacion']) {

	if($_GET['traza']=='si') {
		echo "<p>Proceso de desagregación del id: ".$_POST['lecturaFinalDesagregado']."</p>";
		print_r($_POST);
	}
	
	// EMP#USU#LISTADESAGREGAR#ID;LECTURAS
	// LECTURAS ->  PRODUCTO,NUMERO DE ENTRADA,LINEA DE ENTRADA,IDLEIDO,FORMATO,CANTIDAD  separados por @
		
	$lecturasEnviar='';
	foreach( explode('|||',$_POST['cadenaLecturasActuales']) as $item ) {
		if($item!='') {
		
			//Las lecturas actuales SIEMPRE están codificadas en base64 para eviatar errores, lo hace el javascript cuando rellena cadenaLecturasActuales
			$item=base64_decode($item);
			$item=codificaTTT($item); //Posible codificacion por parametro
		
			$lecturaIndividual=$_POST['producto'].','.$_POST['entrada'].','.$_POST['lineaEntrada'].','.$item.','.$_POST['formato'].','.$_POST['cantidad']; ///Parametrizado posible Base64
			$lecturasEnviar.=$lecturaIndividual.'@';
		}
	}
	
	$lecturasEnviar=substr($lecturasEnviar,0,-1);
	
	if($_GET['traza']=='si') {
		echo '<p>Lecturas a enviar:</p>';
		print_r($lecturasEnviar);
	}
	
	///21-10-2024 Parametrizado posible Base64
	/// $lecturasEnviar ya contiene una cadena con separadores, y los ids incluidos dentro, que ya están codificados o no, en el bucle anterior
	
	$peticion='TPDTTrazabilidad#'.$_SESSION['empresa'].'#'.$_SESSION['usuario']['Usuario'].'#LISTADESAGREGAR#'.$_POST['lecturaFinalDesagregado'].';'.$lecturasEnviar;
	
	$resultado=PedirDatos($wsUsuario,$wsClave,$wsEmpresa,$peticion);

	if($_GET['traza']=='si') {
		echo "<p>Cadena final enviada para desagregacion:</p>";
		echo "<p>".$peticion."</p>";
		echo "<p>Resultado devuelto por ws:</p>";
		print_r($resultado);
		echo '<hr>';
	}
	
	$devolucion=$resultado[0]['Error'];
	$valores=explode('#',$devolucion);
	
	if($valores[0]=='0') {
		unset($_SESSION['productos']);
		?>
        <script>
			alert('<?php echo $valores[1]; ?>',null,'ok')
			.done(function(){
				$('#lecturaGS1').focus();
			});
		</script>
        <?php
		if($valores[1]=='Desagregación completada') $desagregacionCompleta=true;
	}
	else if($valores[0]=='3') {
		$cadenaError=$valores[1].'<br>';
		$ids=explode(',',$valores[2]);
		foreach($ids as $id) {
			$cadenaError.='<br>'.$id;
		}
		?>
        <script>
			alert('Atención: <?php echo $cadenaError; ?>',null,'error')
			.done(function(){
				$('#lecturaGS1').focus();
			});
		</script>
        <?php
	}
	else {
		?>
        <script>
			alert('Atención: <?php echo $valores[1]; ?>',null,'error')
			.done(function(){
				$('#lecturaGS1').focus();
			});
		</script>
        <?php
	}

}


if( !$desagregacionCompleta && ( $_POST['lecturaFinal'] || $_POST['lecturaFinalDesagregado'] ) ) { //En cualquier caso, venga de la lectura inicial o del form desagregado, la carga se hace igualmente
	
	///21-10-2024 Parametrizado posible Base64
	//$lectura=codificaTTT($lectura);  >>>>> esta lectura al ser P, C o M no debería incluir los caracteres especiales de las unidades, que dan todos los problemas
	
	$peticion='TPDTTrazabilidad#'.$_SESSION['empresa'].'#'.$_SESSION['usuario']['Usuario'].'#PETICIONDESAGREGAR#'.$lectura;
	
	$resultado=PedirDatos($wsUsuario,$wsClave,$wsEmpresa,$peticion);
	
	if($_GET['traza']=='si') {
		echo "<p>Proceso de lectura de id inicial: ".$lectura."</p>";
		echo "<p>".$peticion."</p>";
		print_r($resultado);
		echo '<hr>';
	}
	
	$devolucion=$resultado[0]['Error'];
	$valores=explode('#',$devolucion);
	if($valores[0]==1) {
		$error=$valores[1];
		?>
        <script>
			alert('ERROR: <?php echo $error; ?>',null,'error')
			.done(function(){
				$('#lecturaGS1').focus();
			});
		</script>
        <?php
	}
	else {
		$_SESSION['productos']=$resultado;
		//Cogemos del primer producto el formato del id, ya que está en cada linea de producto
		$formato=$_SESSION['productos'][0]['Formato'];
		if($formato=='U') {
		?>
        <script>
			alert('Atención: Este identificador está en formato Unidad,<br>por lo que no puede desagregarse.',null,'advertencia');
		</script>
        <?php
		}
	}

}
else if($desagregacionCompleta) {
}





?>

<h2>Desagregación de trazabilidad de tabaco</h2>

<?php if($error) { ?>
<script>
	alert('ERROR: <?php echo $error; ?>',null,'error')
	.done(function(){
		$('#lecturaGS1').focus();
	});
</script>
<?php } ?>

<?php if( !isset($_SESSION['productos']) && !$simulaPantallaSecundaria ) { ?>

<form id="formularioLectura" name="formularioLectura" method="post" action="" enctype="multipart/form-data">
  <input type="hidden" name="lecturaFinal" id="lecturaFinal" style="width:600px" />
</form>

<div id="bloqueContenedor" class="bloqueContenedorGS1">

  <p>Lectura de Id.:</p>
    
    <div id="bloqueLectura" class="campoOrdenPreparacionBloque">
      <img src="<?php echo DIR_IMAGENES; ?>/teclado.png" alt="Mostrar teclado" class="iconoTeclado" id="tecladoLectura" /><input name="lecturaGS1" type="text" class="campo campoOrdenPreparacion campoLecturaGS1" id="lecturaGS1" value="<?php echo $lectura; ?>" autocomplete="off"/>
        <img src="<?php echo DIR_IMAGENES; ?>/x.png" alt="Borrar" id="borrarLectura" class="campoOrdenPreparacionBorrar campoOrdenPreparacionBorrarGS1" contador="1" />
  </div>

</div>
                
<?php } else { ?>

<h2><?php echo $lectura; ?></h2>
<p>Formato: 
<?php
	$arrayTemp=unserialize(FORMATOS_TRAZABILIDAD);
	echo $arrayTemp[$formato];
?>
</p>

<div id="popupTrazabilidad" class="popup" style="display:none"></div>
<div id="popupTrazabilidadContenido" class="popupContenidoScroll" style="display:none;width:950px">
	
    <form id="formularioDesagregacion" name="formularioDesagregacion" method="post" action="">
    
	<h2 id="popupTrazabilidadTitulo"></h2>

	<input type="<?php if($_GET['traza']=='si') { ?>text<?php } else { ?>hidden<?php } ?>" name="lecturaFinalDesagregado" id="lecturaFinalDesagregado" value="<?php echo $lectura; ?>"/>
    <input type="hidden" name="producto" id="producto" />
    <input type="hidden" name="entrada" id="entrada" />
    <input type="hidden" name="lineaEntrada" id="lineaEntrada" />
    
    <input type="hidden" name="cadenaLecturasGrabadas" id="cadenaLecturasGrabadas" style="width:900px"/>
    <input type="<?php if($_GET['traza']=='si') { ?>text<?php } else { ?>hidden<?php } ?>" name="cadenaLecturasActuales" id="cadenaLecturasActuales" style="width:900px"/>
    <input type="hidden" name="contador" id="contador" value="1"/>
    <input type="hidden" name="confirmacionEnvioDesagregacion" id="confirmacionEnvioDesagregacion" value="" />
    
    
    
	<p style="font-size:1em">Lectura de Identificadores:</p>
    
    <div id="bloqueContenedorLectura-1" contador="1" class="bloqueContenedorGS1">
        <div id="bloqueLectura-1" class="campoOrdenPreparacionBloque" >
            <img src="<?php echo DIR_IMAGENES; ?>/teclado.png" alt="Mostrar teclado" class="tecladoLectura iconoTeclado" id="tecladoLectura-1" /><input name="lectura-1" type="text" class="campoLectura campo campoOrdenPreparacion campoLecturaGS1" id="lectura-1" />
            <img src="<?php echo DIR_IMAGENES; ?>/x.png" alt="Borrar" id="borrarLectura-1" class="borrarLectura campoOrdenPreparacionBorrar campoOrdenPreparacionBorrarGS1" />
        </div>
        <div id="bloqueLecturaAdicional-1"></div>
    </div>
    
    <div id="bloqueFormatoCantidad" style="display:none">
                
		<p>
		<?php foreach(unserialize(FORMATOS_TRAZABILIDAD) as $tipo=>$descripcion) {?>
        
			<?php $mostrarFormato=false; ?>
            <?php if($tipo=='U' && ($formato=='P' || $formato=='C' || $formato=='M') ) $mostrarFormato=true; ?>
            <?php if($tipo=='M' && ($formato=='P') && $mostrarMasterCases) $mostrarFormato=true; ?>
            <?php if($tipo=='C' && ($formato=='P' || $formato=='M') ) $mostrarFormato=true; ?>
            
            <?php if( $mostrarFormato ) {?>
            <label><input type="radio" name="formato" id="formato<?php echo $tipo; ?>" value="<?php echo $tipo; ?>" class="checkGrande formato"/> <?php echo $descripcion;?></label>
            <?php } ?>
        
        <?php } ?>
        </p>
        
		<p class="sinMargen">Cantidad por Identificador:</p>
		<div class="campoOrdenPreparacionBloque">
			<input name="cantidad" type="text" class="campo cantidad campoOrdenPreparacion" id="cantidad" style="margin-left:255px" readonly/><img src="<?php echo DIR_IMAGENES; ?>/x.png" alt="Borrar" id="borrarCantidad" class="campoOrdenPreparacionBorrar" style="right:-260px;display:none"/>
		</div>
                
	</div>
    
    <table style="width:450px;margin: 20px auto;text-align:left">
    <tr>
    <td>Cantidad total pendiente de leer:</td><td><input type="text" name="cantidadPendiente" id="cantidadPendiente" readonly class="campo" style="width:50px;text-align:right"/></td></tr>
    <td>Número de identificadores leídos:</td><td><input type="text" name="cuantosLeidos" id="cuantosLeidos" readonly class="campo" style="width:50px;text-align:right" value="0"/></td></tr>
    <td>Cantidad que se comunicará en este proceso:</td><td><input type="text" name="cantidadComunicar" id="cantidadComunicar" readonly class="campo" style="width:50px;text-align:right" value="0"/></td></tr>
    </table>
    
    <p><input type="button" name="botonEnviarTrazabilidad" id="botonEnviarTrazabilidad" value="Enviar identificadores" class="boton" style="display:none"/></p>
    <p><input type="button" name="botonCancelarTrazabilidad" id="botonCancelarTrazabilidad" value="Cancelar" class="boton reducido"/></p>

	</form>
      
</div>


<form id="formularioAnulacion" name="formularioAnulacion" method="post" action="">
        
<input type="hidden" name="lecturaFinalDesagregado" id="lecturaFinalDesagregado" value="<?php echo $lectura; ?>"/>
<input type="hidden" name="anularLecturas" id="anularLecturas" value=""/>

<?php

foreach($_SESSION['productos'] as $producto) {

	$codigosYaDesagregados=arreglaArrayPXMobileProxiumResult($producto['IDsDesagregados']);
	$cadenaDeCodigosYaDesagregados='';
	
	$total=0;
	$cantidadLeida=0;
	foreach($codigosYaDesagregados as $item) $cantidadLeida+=$item['Cantidad'];
	
	?>

    <div style="margin:40px 0 70px 0">
    
    <table class="tablaFormateada anchoMaximo">
        <tr>
            <th>Código</th>
            <th>Descripción</th>
            <th>Cantidad</th>
            <th>Leido</th>
        </tr>
        <tr>
            <td><?php echo $producto['Producto']; ?></td>
            <td><?php echo $producto['DescripcionProducto']; ?></td>
            <td><?php echo $producto['Cantidad']; ?></td>
            <td><?php echo $cantidadLeida; ?></td>
        </tr>
    </table>
    
    <?php

	if(count($codigosYaDesagregados)>0) {
	
		?>
		<div style="font-size:0.8em">
		
		<p>Resumen de lecturas para desagregación ya registradas:</p>
			
        
        
            
		<table class="tablaFormateada">
			<tr>
				<th>Id</th>
				<th>Formato</th>
				<th>Cantidad</th>
			    <th>Anular</th>
			</tr>
			<?php foreach($codigosYaDesagregados as $item) { ?>
            	<?php $cadenaDeCodigosYaDesagregados.=base64_encode($item['CodigoEscaneado']).'|||'; ?>
				<tr>
					<td align="left"><?php echo formateaTTT($item['CodigoEscaneado']); ?></td>
					<td>
                    <?php
					$arrayTemp=unserialize(FORMATOS_TRAZABILIDAD);
					echo $arrayTemp[$item['Formato']];
					?>                    </td>
					<td align="right"><?php echo $item['Cantidad']; ?></td>
				    <td align="center">
                    <!--<input type="checkbox" name="liberar-<?php echo base64_encode($item['Id']); ?>" id="liberar-<?php echo base64_encode($item['Id']); ?>" class="checkGrande liberar" value="<?php echo base64_encode($item['Id']); ?>"/>-->
                    <input type="checkbox" name="liberar-<?php echo base64_encode($item['Id']); ?>" id="liberar-<?php echo base64_encode($item['Id']); ?>" class="checkGrande liberar"/>
                    </td>
				</tr>
				<?php $total+=(int)$item['Cantidad']; ?>
			<?php } ?>
			<tr>
				<td colspan="2" align="right">Total lecturas registradas:</td>
				<td align="right"><strong><?php echo $total; ?></strong></td>
			    <td align="right"><input type="button" id="botonAnular" name="botonAnular" class="boton reducido botonAnular" value="Anular"/></td>
			</tr>
		</table>
        
        <?php if($total<$producto['Cantidad']) { ?>
		<p><strong>Nota informativa:</strong> Hasta que no se completen las lecturas equivalentes a la cantidad total de <strong><?php echo $producto['Cantidad']; ?> unidades</strong>, la desagregación no podrá hacerse efectiva en Proxium.</p>
        <?php } ?>
        
		</div>
	
	<?php } ?>

	<?php if($producto['Formato']!='U' && $producto['Cantidad']>$cantidadLeida ) { ?>
    <p><input type="button" name="botonTrazabilidad-<?php echo $producto['Entrada']; ?>-<?php echo $producto['LineaEntrada']; ?>" id="botonTrazabilidad-<?php echo $producto['Entrada']; ?>-<?php echo $producto['LineaEntrada']; ?>" value="Registrar <?php if($cantidadLeida>0) echo "más "; ?>Identificadores" class="boton reducido botonTrazabilidad" codigo="<?php echo $producto['Producto']; ?>" descripcion="<?php echo $producto['DescripcionProducto']; ?>" cantidad="<?php echo (int)$producto['Cantidad']-(int)$total; ?>" entrada="<?php echo $producto['Entrada']; ?>" lineaentrada="<?php echo $producto['LineaEntrada']; ?>" codigosgrabados="<?php echo $cadenaDeCodigosYaDesagregados; ?>"/></p>
    <?php } ?>

	</div>

<?php } //Fin foreach productos?>

</form>

<script>
		
	$(document).ready(function(){
	
		$('.botonAnular').on('click',function(){
			var haySeleccionados=false;
			$('.liberar').each(function(){
				if($(this).is(':checked')) haySeleccionados=true;
			});
			if(haySeleccionados) {
				confirm('Se va a proceder a cancelar las lecturas seleccionadas.<br>¿Deseas proceder con la cancelación?')
				.done(function(){
					$('#popupCargando').show();
					$('#anularLecturas').val(1);
					$('#formularioAnulacion').submit();
				});
			}
			else {
				confirm('No has seleccionado ningún ID de trazabilidad para anular.<br>¿Deseas anular TODAS las lecturas completamente?','advertencia')
				.done(function(){
					$('.liberar').prop('checked',true);
					$('#popupCargando').show();
					$('#anularLecturas').val(1);
					$('#formularioAnulacion').submit();
				});
			}
		});
	
	});

</script>

<?php } ?>


<script>


////////////////////////////////////Procedimiento de interpretación de códigos

var lecturaScanner=new Array(); //array global para almacenar las pulsaciones de teclas obtenidas desde el scanner, cuando se comporta así (scanner externo bluetooth como teclado)
var cadenaLectura='';
var esLecturaGS1Correcta=false;

//17-01-2020 Controlamos las longitudes de las lecturas secundarias
var longitudCorrecta=0;

function reiniciaLectura(error) {
	
	lecturaScanner=new Array();
	cadenaLectura='';
	esLecturaGS1Correcta=false;
	
	if(error) {
		$('#lecturaGS1').addClass('error');
	}
	else {
		$('#lecturaGS1').removeClass('error');
		$('#lecturaFinal').val('');
		$('#lecturaGS1').val('');
	}
	
	$('#lecturaGS1').focus();
}

function reiniciaLecturaDinamica(error,contador) {
	
	lecturaScanner=new Array();
	cadenaLectura='';
	esLecturaGS1Correcta=false;
	
	if(error) {
		$("#lectura-"+contador).addClass('error');
	}
	else {
		$("#lectura-"+contador).removeClass('error');
		$("#lectura-"+contador).val('');
	}
	
	if( $('#cadenaLecturasActuales').val()=='' ) $('#botonEnviarTrazabilidad').hide();
	else $('#botonEnviarTrazabilidad').show();
	
}

////////////////////////////////////


function rellenaCampoLecturasActuales() {

	var cadenaLecturas='';
	$('.campoLectura').each(function(){
		if( $(this).val()!='' ) cadenaLecturas+=btoa($(this).val())+'|||';
	});
	$('#cadenaLecturasActuales').val(cadenaLecturas);
}

function calculaCantidades() {

	if(parseInt($('#cuantosLeidos').val())>0 && parseInt($('#cantidad').val())>0) {
	
		console.log('cuantosLeidos: '+$('#cuantosLeidos').val());
		console.log('cantidad: '+$('#cantidad').val());
	
		$('#cantidadComunicar').val( parseInt($('#cuantosLeidos').val()) * parseInt($('#cantidad').val()) );
		
		console.log('cantidadComunicar: '+$('#cantidadComunicar').val());
		console.log('cantidadPendiente: '+$('#cantidadPendiente').val());
		
		if( parseInt($('#cantidadComunicar').val()) > parseInt($('#cantidadPendiente').val()) ) {
			alert('ATENCION: No queda tanta cantidad pendiente de comunicar. Revisa las cantidades.',null,'error');
			$('#botonEnviarTrazabilidad').hide();
		}
		else $('#botonEnviarTrazabilidad').show();
	}
	else $('#botonEnviarTrazabilidad').hide();
	
}


$(document).ready(function() {
	
	
	/////////////////////////////////////////////////////Gestion campo lectura ID pantalla inicial

	$('#tecladoLectura').on('click',function(){
		$('#teclado').show();
		$('#valor').val( $('#lecturaGS1').val() );
		$('#valorOculto').val( $('#lecturaGS1').val() );
		$('#enter').attr('campoValor','lecturaGS1');
		$('#enter').attr('forzarEnter','si');
	});
	
	<?php if(!$desactivaScannerBluetooth) { ?>
	
	$('#lecturaGS1').on('keydown',function(e){
	
		e.preventDefault();
		var resultado='';
		
		if(e.which==13 || e.key=='Enter') {
			$('#lecturaGS1').trigger('change');
		}
		else lecturaScanner.push( [ String.fromCharCode(e.which) , e.which , e.key ] );
	}); 
	
	<?php } ?>	
	
	$('#lecturaGS1').on('change',function(e){
		
		e.preventDefault();
		
		//Método que detecta que se ha hecho una nueva lectura.
		//tenemos que comprobar si procede del scanner o procede del teclado emergente
				


		//27-9-2021 Version ultima con escaneres integrados sin separadores

		var lecturaFinal='';

		<?php if( ($desactivaScannerBluetooth || $lecturaEspecial) && !$lecturaSinSeparadores ) { ?>
		
		console.log('TRAZA TTT 1: desactivaScannerBluetooth || lecturaEspecial || lecturaSinSeparadores');
		
		lecturaFinal=transformaLecturaManualAlFormatoScanner( $('#lecturaGS1').val() );
		
		<?php } else if($lecturaSinSeparadores) { ?>
			if( $('#lecturaGS1').val().indexOf('(')!=-1 ) { 
				lecturaFinal=transformaLecturaManualAlFormatoScanner( $('#lecturaGS1').val() );
			}
			else {
				<?php if($caracterSeparadorGs1){ ?>
				lecturaFinal=extraeBloquesSinSeparadorCaracterSeparador( $('#lecturaGS1').val() , <?php echo $caracterSeparadorGs1; ?> );
				<?php } else { ?>
				lecturaFinal=extraeBloquesSinSeparador( $('#lecturaGS1').val() );
				<?php } ?>
			}
		<?php } else { ?>
		if(lecturaScanner.length > 0) {
			lecturaFinal=limpiaLecturaDesdeScanner( lecturaScanner );
		}
		else {
			lecturaFinal=transformaLecturaManualAlFormatoScanner( $('#lecturaGS1').val() );
		}
		<?php } ?>
		
		var resultado=pintaLecturaHumana( lecturaFinal );


		
		console.log('PUNTO CONTROL TRAS PROCESO: lecturaFinal -> '+lecturaFinal+' / resultado (tras pintaLecturaHumana) -> '+resultado);
	
		if(resultado=='error')  {
			alert('Error en la lectura. Código GS1-128 no reconocido.',null,'error')
			.done(function(){
				reiniciaLectura();
			});
		}
		else if ( ! gs1ValidoConTTT(resultado) ){
			alert('Error en el código.<br>GS1-128 correcto pero que no contiene TTT válido.',null,'advertencia')
			.done(function(){
				reiniciaLectura();
			});
		}
		else {
			
			$('#lecturaGS1').val( resultado );
			$('#lecturaFinal').val( resultado );
			$('#popupCargando').show();
			$('#formularioLectura').submit();
		
		}
		
	});
			
	$('#borrarLectura').on('click',function(e){
		e.preventDefault();
		reiniciaLectura();
	});
	
	//////////////////// Botones principales para el popup de las lecturas secundarias dinámicas
	
	$('.botonTrazabilidad').on('click',function(){
		
		$('#cantidadPendiente').val( $(this).attr('cantidad') );
		$('#popupTrazabilidadTitulo').html( $(this).attr('codigo')+' - '+$(this).attr('descripcion') );
		
		$('#producto').val( $(this).attr('codigo') );
		$('#entrada').val( $(this).attr('entrada') );
		$('#lineaEntrada').val( $(this).attr('lineaentrada') );
		
		$('#cadenaLecturasGrabadas').val( $(this).attr('codigosgrabados') );
		
		$('#popupTrazabilidad').show();
		$('#popupTrazabilidadContenido').show();
		
		var posicion=$(document).scrollTop();
		$('#popupTrazabilidadContenido').offset({ top: posicion+20 });
			
		$('#lectura-1').focus();
		
	});
	
	$('#botonCancelarTrazabilidad').on('click',function(){
		$('#popupTrazabilidad').hide();
		$('#popupTrazabilidadContenido').hide();
	});
	
	///////////////////////////// Gestion campo lectura Id dinámico, puede haber varios!!
	
	$(document).on('click','.tecladoLectura',function(){
	
		var contador=$(this).parent().parent().attr('contador');
	
		$('#teclado').show();
		$('#valor').val( $('#lectura-'+contador).val() );
		$('#valorOculto').val( $('#lectur-'+contador).val() );
		$('#enter').attr('campoValor','lectura-'+contador);
		$('#enter').attr('forzarEnter','si');
	});
	
	
	<?php if(!$desactivaScannerBluetooth) { ?>
	
	
	$(document).on('keydown','.campoLectura',function(e){
	
		var contador=$(this).parent().parent().attr('contador');
	
		e.preventDefault();
		var resultado='';
		
		if(e.which==13 || e.key=='Enter') {
			$('#lectura-'+contador).trigger('change');
		}
		else lecturaScanner.push( [ String.fromCharCode(e.which) , e.which , e.key ] );
				
		//lecturaScanner.push( [ String.fromCharCode(e.which) , e.which ] );
		
		console.log( [ String.fromCharCode(e.which) , e.which ] );
		
		//Si los ultimos caracteres leidos son Enter+Control+J, los quitamos del array y lanzamos el trigger "change"
		var longitud=lecturaScanner.length;
		if( lecturaScanner[longitud-1][1]==74 && lecturaScanner[longitud-2][1]==17 && lecturaScanner[longitud-3][1]==13 ) {
			lecturaScanner.splice(longitud-3,3);
			$('#lectura-'+contador).trigger('change');
		}

		
	}); 
	
	<?php } ?>	
	
	$(document).on('change','.campoLectura',function(e){
		
		console.log('traza 2');
		
		e.preventDefault();
		
		var contador=$(this).parent().parent().attr('contador');
				
		

		//27-9-2021 Version ultima con escaneres integrados sin separadores

		var lecturaFinal='';

		<?php if( ($desactivaScannerBluetooth || $lecturaEspecial) && !$lecturaSinSeparadores ) { ?>
		lecturaFinal=transformaLecturaManualAlFormatoScanner( $('#lectura-'+contador).val() );
		<?php } else if($lecturaSinSeparadores) { ?>
			if( $('#lectura-'+contador).val().indexOf('(')!=-1 ) { 
				lecturaFinal=transformaLecturaManualAlFormatoScanner( $('#lectura-'+contador).val() );
			}
			else {
				<?php if($caracterSeparadorGs1){ ?>
				lecturaFinal=extraeBloquesSinSeparadorCaracterSeparador( $('#lectura-'+contador).val() , <?php echo $caracterSeparadorGs1; ?> );
				<?php } else { ?>
				lecturaFinal=extraeBloquesSinSeparador( $('#lectura-'+contador).val() );
				<?php } ?>
			}
		<?php } else { ?>
		if(lecturaScanner.length > 0) {
			lecturaFinal=limpiaLecturaDesdeScanner( lecturaScanner );
		}
		else {
			lecturaFinal=transformaLecturaManualAlFormatoScanner( $('#lectura-'+contador).val() );
		}
		<?php } ?>

		var resultado=pintaLecturaHumana( lecturaFinal );


		console.log('LECTURA FINAL: '+lecturaFinal);
		console.log('RESULTADO: '+resultado);


	
		if(resultado=='error')  {
			alert('Error en la lectura. Código GS1-128 no reconocido.',null,'error')
			.done(function(){
				reiniciaLecturaDinamica(false,contador);
				$('#lectura-'+$('#contador').val()).focus();
			});
		}
		else if ( ! gs1ValidoConTTT(resultado) ){
			alert('Error en el código.<br>GS1-128 correcto pero que no contiene TTT válido.',null,'advertencia')
			.done(function(){
				reiniciaLecturaDinamica(false,contador);
				$('#lectura-'+$('#contador').val()).focus();
			});
		}
		else {
		
			resultadoBase64=btoa(resultado)
			
			var lecturasActuales=$('#cadenaLecturasActuales').val().split('|||');
			var lecturasGrabadas=$('#cadenaLecturasGrabadas').val().split('|||');
			var encontrado=false;
			
			for(i=0;i<lecturasActuales.length;i++) {
				if( resultadoBase64==lecturasActuales[i] ) encontrado=true;
			}
			for(i=0;i<lecturasGrabadas.length;i++) {
				if( resultadoBase64==lecturasGrabadas[i] ) encontrado=true;
			}
			
			if(encontrado) {
			
				alert('Error. Este identificador ya ha sido leido en este proceso.',null,'error')
				.done(function(){
					reiniciaLecturaDinamica(false,contador);
					$('#lectura-'+$('#contador').val()).focus();
				});
			
			}
			else {
				
				//Se desactiva el campo actual
				$('#lectura-'+contador).prop('readonly',true);
				$('#tecladoLectura-'+contador).hide();
				
				$('#lectura-'+contador).val( resultado );
				
				var nuevoContador=parseInt(contador)+1;
				$('#contador').val(nuevoContador);
				
				var nuevoContenido='<div id="bloqueContenedorLectura-'+nuevoContador+'" contador="'+nuevoContador+'" class="bloqueContenedorGS1"><div id="bloqueLectura-'+nuevoContador+'" class="campoOrdenPreparacionBloque" ><img src="<?php echo DIR_IMAGENES; ?>/teclado.png" alt="Mostrar teclado" class="tecladoLectura iconoTeclado" id="tecladoLectura-'+nuevoContador+'" /><input name="lectura-'+nuevoContador+'" type="text" class="campoLectura campo campoOrdenPreparacion campoLecturaGS1" id="lectura-'+nuevoContador+'" /><img src="<?php echo DIR_IMAGENES; ?>/x.png" alt="Borrar" id="borrarLectura-'+nuevoContador+'" class="borrarLectura campoOrdenPreparacionBorrar campoOrdenPreparacionBorrarGS1" /></div><div id="bloqueLecturaAdicional-'+nuevoContador+'"></div></div>'
				
				$('#bloqueLecturaAdicional-'+contador).html(nuevoContenido);
				
				$('#lectura-'+nuevoContador).focus();
				$('html, body').animate({
					scrollTop: $('#lectura-'+nuevoContador).offset().top-150
				}, 500);
				
				
				rellenaCampoLecturasActuales();
				reiniciaLecturaDinamica(false,nuevoContador);
				
				$('#bloqueFormatoCantidad').show();
				
				$('#cuantosLeidos').val( parseInt($('#cuantosLeidos').val())+1 );
				
				calculaCantidades();
				
				//////////////////////////////////////////////////////////////////////////////////////////
				//17-01-2020 Se controla las longitudes de todas las lecturas para detectar posibles errores

				var longitudLecturas=new Array();
				$('.campoLectura').each(function(){
					if($(this).val().length>0) longitudLecturas.push( $(this).val().length );
				});
				
				var longitudLecturasSumas={};
				for(var i=0;i<longitudLecturas.length;i++) {
					if( longitudLecturasSumas[longitudLecturas[i]]>=1 ) longitudLecturasSumas[longitudLecturas[i]]++;
					else longitudLecturasSumas[longitudLecturas[i]]=1;
				}
				
				var cantidadMaxima=0;
				var longitudCorrecta=0;
				for(var longitud in longitudLecturasSumas ) {
					if( longitudLecturasSumas[longitud] > cantidadMaxima ) {
						cantidadMaxima=longitudLecturasSumas[longitud];
						longitudCorrecta=longitud;
					}
				}
				
				//Aplicamos
				$('.campoLectura').each(function(){
					if($(this).val().length>0 && $(this).val().length!=longitudCorrecta) {
						$(this).addClass('error');
						$(this).addClass('campoError');
					}
					else {
						$(this).removeClass('error');
						$(this).removeClass('campoError');
					}
				});
				
				//////////////////////////////////////////////////////////////////////////////////////////
				
			}
		
		}
		
	});
			
	$(document).on('click','.borrarLectura',function(e){
		
		e.preventDefault();
		
		var contador=$(this).parent().parent().attr('contador');
		
		if($('#lectura-'+contador).val()!='') {
		
			reiniciaLecturaDinamica(false,contador);
			$('#bloqueLectura-'+contador).hide();
				
			rellenaCampoLecturasActuales();
				
			//if(parseInt($('#cuantosLeidos').val())>0 && parseInt($('#cantidad').val())>0) $('#cantidadComunicar').val( parseInt($('#cuantosLeidos').val()) * parseInt($('#cantidad').val()) );
		}
		
		$('#lectura-'+$('#contador').val()).focus();
		
		if( parseInt($('#cuantosLeidos').val())>0 ) $('#cuantosLeidos').val( parseInt($('#cuantosLeidos').val())-1 );
		else $('#cuantosLeidos').val(0);
		
		if( parseInt($('#cantidad').val())>0 ) $('#cantidadComunicar').val( parseInt($('#cuantosLeidos').val()) * parseInt($('#cantidad').val()) );
		else $('#cantidadComunicar').val(0);
		
		calculaCantidades();
		
	});
	
	/////////////////////////////////////////////////////Gestion campo Formato
	
			$('.formato').on('change',function(e) {
			
				e.preventDefault;
				
				if($('#cadenaLecturasActuales').val()=='') {
				
					alert('Primero debes realizar alguna lectura de identificadores',$('#lectura-1'));
					$('input:radio[name=formato]').each(function () { $(this).prop('checked', false); });
					$('#cantidad').val('');
				}
				else {
				
					$('#cantidad').val('');
					
					var valor=$('input:radio[name=formato]:checked').val();
					
					if(valor=='U') {
						$('#cantidad').val(1);
						$('#cantidad').prop('readonly',true);
						$('#borrarCantidad').hide();
					}
					else if(valor=='C' || valor=='M') {
						
						if(valor=='C') $('#cantidad').val('<?php echo $producto['EmbalajePrimarioCaja']; ?>');
						else if(valor=='M') $('#cantidad').val('<?php echo $producto['CajasEnMasterCase']*$producto['EmbalajePrimarioCaja']; ?>');
						
						$('#cantidad').prop('readonly',false);
						$('#borrarCantidad').show();
						$('#cantidad').trigger('click');
					}
					
					if(parseInt($('#cuantosLeidos').val())>0 && parseInt($('#cantidad').val())>0) $('#cantidadComunicar').val( parseInt($('#cuantosLeidos').val()) * parseInt($('#cantidad').val()) );
					
					calculaCantidades();
				}
			});
	
	/////////////////////////////////////////////////////Gestion campo Cantidad

			$('#cantidad').on('click',function(e) {
				if($(this).prop('readonly')==false) {
					$('#calculadora').show();
					$('#valorCalculadora').val( $('#cantidad').val() );
					$('#enterCalculadora').attr('campoValor','cantidad');
					$('#enterCalculadora').attr('forzarEnter','si');
				}
			});
			
			$('#borrarCantidad').on('click',function(){
				$('#cantidad').val('');
				calculaCantidades();
			});
			
			$('#cantidad').on('change',function(){
				calculaCantidades();
			});
	
	$('#botonEnviarTrazabilidad').on('click',function(){
	
		var hayPosiblesErrores=false;
		
		$('.campoLectura').each(function(){
			if( $(this).hasClass('error') ) hayPosiblesErrores=true;
		});
	
		if(hayPosiblesErrores) {
			mensaje='ATENCION: Hay posibles errores en las lecturas.<br>Acepta para continuar o cancela para revisarlas.';
			icono='advertencia';
		}
		else {
			mensaje='Se va a proceder a enviar Proxium las lecturas actuales.<br>¿Deseas continuar?';
			icono='';
		}
				
		confirm(mensaje,icono)
		.done(function(){
	
			$('#popupCargando').show();
			$('#confirmacionEnvioDesagregacion').val(1);
			$('#formularioDesagregacion').submit();
			
		});
		
	});
	
	reiniciaLectura('<?php echo $error; ?>');
	
	<?php if($simulaPantallaSecundaria) { ?>
	$('#popupTrazabilidad').show();
	$('#popupTrazabilidadContenido').show();
	$('#bloqueFormatoCantidad').show();
	$('#lectura-1').focus();
	$('#cantidadPendiente').val(100);
	<?php } ?>
	
});

</script>

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