<?php
require_once('startinclude.php');

$camara=parametro('camara',0);
$boton_tag=parametro('boton_tag',"");
$accion=parametro('accion',"");
include "lib_form.php";
require_once "util_db.php";
include "lecturadb_slow.php";

$camaras_actual=array();
$camaras=array();
leer_camaras($camaras);
leer_camaras_actual($camaras_actual);

$num_proceso=$camaras_actual[$camara]["proceso_actual"];

echo cabecera("titulo",1);



?>
<SCRIPT LANGUAGE="JavaScript">
var tamlinea=6;
var maxlinea=50;

function actualizar(campo) {
	var i;
	var ver1,ver2;
	var valorinicial=campo.selectedIndex;
	var largo=campo.id.length;
	var num=parseInt(campo.id.substring(1,largo));
	var inicio_linea=parseInt(num / tamlinea)*tamlinea ;
	var delta=num-inicio_linea;
	var inicio=inicio_linea+tamlinea; // comenzamos en la linea siguiente a la ingresada.
	var e;
	var fin=tamlinea*maxlinea;
	
	//alert(campo.getAttribute("tag"));
	campo.setAttribute("tag",true);
	
	
	for (i=inicio; i<fin; i=i+tamlinea){
		
	 if (document.getElementById("k"+i)) {
		 e=i+delta;
		 ver1 = document.getElementById("k"+i).value;
		 //alert(ver1);
		 
		 ver2 = document.getElementById("k"+e).getAttribute("tag");
		 //document.getElementById("p"+i).selectedIndex=valorinicial;
		 
		 if ( ver1!='' && ver2!='true' ) {		
			document.getElementById("k"+e).selectedIndex=valorinicial;		
		 } else {
			break;
		 }
	 }
	 //alert(ver1);
	 //alert(ver2);
	}
}

function actualizartexto(campo) {
	var i;
	var ver1,ver2;
	var valorinicial=document.getElementById(campo.id).value;
	var largo=campo.id.length;
	var num=parseInt(campo.id.substring(1,largo));
	var inicio_linea=parseInt(num / tamlinea)*tamlinea ;
	var delta=num-inicio_linea;
	var inicio=inicio_linea+tamlinea; // comenzamos en la linea siguiente a la ingresada.
	
	var e;
	var fin=tamlinea*maxlinea;
	
	//alert(document.getElementById(campo.id).value);
	
	campo.setAttribute("tag",true);
	
	for (i=inicio; i<fin; i=i+tamlinea){
		if (document.getElementById("k"+i)) {
			 e=i+delta;
			
			 ver1 = document.getElementById("k"+i).value;
			 //alert(ver1);
			 
			 ver2 = document.getElementById("k"+e).getAttribute("tag");
			 

			 if (ver1!='' && ver2!='true') {		
				document.getElementById("k"+e).value=valorinicial;		
			 } else {
				break;
			 }
		 }
	 
	 //alert(ver1);
	 //alert(ver2);
	}
}



</script>
	
	<body>
<?php

/*

1-Especie (combo - opcional)
2-Cantidad Pallets (text obligatorio)
3-Cantidad Puchos (text obligatorio)
4-Cantidad bins. (text obligatorio)
5-Mediciones (combo obligatorio)
5-origen
6-Destino.
7-Encargado.
8-envase
9-condicion.
10-fecha y hora de inicio.

*/

$campos="";
$camposhidden="";
$descripcion="";
$lck=array(0,0,0,0,0,0,0,0,0,1,1,0);
$boton=array("Iniciar","OK","","Cancelar","NO","");
$leyenda="Inicio de Proceso";
$titulo="";
leerarreglo(&$c);
$estado_codigo=$camaras_actual[$camara]["estado_actual"];

switch($estado_codigo) {
	case "V":$estadotxt="Libre"; break;
	case "H":$estadotxt="Detenido"; break;
	case "P":$estadotxt="En Proceso"; break;
	case "N":$estadotxt="Desabilitada"; break;
	default:$estadotxt="Desconocido"; break;
}

switch ($accion) {

case "START":
	$titulo="";
	$leyenda="Inicio de Proceso";

	$lck=array(0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,1);
	$boton=array("Iniciar","OK","","Cancelar","NO","");

	if ($boton_tag!="NO") {			
		leerarreglo(&$c);
	} else {
		$c=array(0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1);
	}
	if ($estado_codigo!="V") {
		// si no esta activa entonces solo se puede ver.
		$boton=array("Aceptar","NO","");
		leer_proceso($c,$camaras_actual[$camara]["proceso_actual"]);
		
		$lck=array(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
	}
	
	break;
case "MOD":
	switch ($estado_codigo) {	
		case "P":		
		case "H":		
			$titulo="";
			$leyenda="Modificar carga del Proceso";
			$lck=array(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
			$boton=array("Modificar","MOD","","Cancelar","NO","");
			if ($boton_tag=="MOD") {			
				// aqui ejecutamos el cambio de estado...
				leer_proceso($c,$camaras_actual[$camara]["proceso_actual"]);
			}
			if ($estado_codigo!="P") {
				// si no esta activa entonces solo se puede ver.
				$boton=array("Modificar","MOD","");
				leer_proceso($c,$camaras_actual[$camara]["proceso_actual"]);				
			}
			break;
		default:		
			// si no esta activa entonces solo se puede ver.
			$boton=array("Aceptar","NO","");
			leer_proceso($c,$camaras_actual[$camara]["proceso_actual"]);
			$lck=array(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
			break;
	} // estado_codigo
	break;
case "PAUSE":
	switch ($estado_codigo) {
	
		case "P":		
			$titulo="";
			$leyenda="Suspender el proceso";
			$lck=array(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
			$boton=array("Suspender","HOLD","","Cancelar","NO","");
			if ($boton_tag=="HOLD") {			
				// aqui ejecutamos el cambio de estado...
				leer_proceso($c,$camaras_actual[$camara]["proceso_actual"]);
			}
			if ($estado_codigo!="P") {
				// si no esta activa entonces solo se puede ver.
				$boton=array("Aceptar","NO","");
				leer_proceso($c,$camaras_actual[$camara]["proceso_actual"]);				
			}
			break;
		case "H":		
			$titulo="";
			$leyenda="Continuar el proceso detenido";
			$lck=array(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
			$boton=array("Continuar","CONT","","Cancelar","NO","");
			if ($boton_tag!="CONT") {			
				leer_proceso($c,$camaras_actual[$camara]["proceso_actual"]);
			}
			break;
		default:		
			// si no esta activa entonces solo se puede ver.
			$boton=array("Aceptar","NO","");
			leer_proceso($c,$camaras_actual[$camara]["proceso_actual"]);
			$lck=array(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
			break;
	} // estado_codigo
	break;
CASE "STOP":
	$leyenda="Finalizar el proceso";
	switch ($estado_codigo) {
		case "P":	
			$titulo="";
			$lck=array(1,1,1,1,1,1,1,1,1,1,1,1,0,0);
			$boton=array("Finalizar","END","","Cancelar","NO","");
			leer_proceso($c,$camaras_actual[$camara]["proceso_actual"]);
			break;
		default:
			// si no esta activa entonces solo se puede ver.
			$boton=array("Aceptar","NO","");
			leer_proceso($c,$camaras_actual[$camara]["proceso_actual"]);
			$lck=array(1,1,1,1,1,1,1,1,1,1,1,1,0,0);
			break;
	}	// estado_codigo
	break;
} // accion
$resultado="";

//$arreglo=array(3600,"1 Hora",7200,"2 Horas",14400,"4 Horas",28800,"8 Horas",57600,"16 Horas",86400,"24 Horas");

$arreglo=array();
$sql="select * from pf_especies order by id_especie";
$campo_texto="nombre_especie";
$campo_valor="id_especie";
$texto_defecto="--seleccione especie--";
$campos[0]="";
$campos[1]="";
generar_combo($sql,$campo_valor,$campo_texto,&$arregloespecie,$texto_defecto);


$sql="select * from pf_envase order by nombre_envase";
$campo_texto="nombre_envase";
$campo_valor="id_envase";
$texto_defecto="--seleccione envase--";
generar_combo($sql,$campo_valor,$campo_texto,&$arregloenvase,$texto_defecto);

$campos[0].=campoformulario("c9","Fecha Inicio",20,$c[9],"",$lck[9]);
$campos[1].=campoformulario("c10","Fecha Ultimo Cambio",20,$c[10],"",$lck[10]);
$c[0]=0;
//$campos[0].=campocombo("c0","Especie",20,$c[0],$arreglo,"spformRequired",$lck[0]);
//$campos[1].=campoformulario("c1","Cantidad Pallets",20,$c[1],"spformRequired",$lck[1]);
$c[1]=0;
//$campos[0].=campoformulario("c2","Cantidad Puchos",20,$c[2],"spformRequired",$lck[2]);
$c[2]=0;
//$campos[1].=campoformulario("c3","Cantidad Bins",20,$c[3],"spformRequired",$lck[3]);		
$c[3]=0;
$arreglo=array("","--Seleccione Mediciones--",1,"Cada 1 Minuto","2","Cada 2 Minutos","3","Cada 3 Minutos","5","Cada 5 Minutos",10,"Cada 10 Minutos",30,"Cada Media Hora",60,"Cada Hora",120,"Cada 2 horas");
$campos[0].=campocombo("c4","Mediciones",20,$c[4],$arreglo,"spformRequired",$lck[4]);
$campos[1].=campoformulario("c5","Origen",30,$c[5],"spformRequired",$lck[5]);
$campos[0].=campoformulario("c6","Destino",30,$c[6],"spformRequired",$lck[6]);
/*	$sql="select * from pf_envase order by nombre_envase";
	$campo_texto="nombre_envase";
	$campo_valor="id_envase";
	$texto_defecto="--seleccione envase--";
generar_combo($sql,$campo_valor,$campo_texto,&$arreglo,$texto_defecto);
$campos[1].=campocombo("c7","Envase",20,$c[7],$arreglo,"spformRequired",$lck[7]);
*/
$c[7]="";
$campos[1].=campoformulario("cx","Estado",30,$estadotxt,"spformRequired",1);		
$campos[0].=campoformulario("c11","Operador Inicial",30,$c[11],"spformRequired",$lck[11]);		
$campos[0].=campoformulario("c8","Condicion Inicial",30,$c[8],"spformRequired",$lck[8],"AREA");		

if ($accion=="STOP") {
	
	$campos[1].=@campoformulario("c18","Operador Final",30,$c[18],"spformRequired",$lck[18]);		
	$campos[1].=@campoformulario("c19","Condicion Final",30,$c[19],"spformRequired",$lck[19],"AREA");		
} else {
	$c[18]="";
	$c[19]="";
}


$inicio_epoch=mktime("0","0","0","1","1","2005",0);
$hoy=(mktime()-$inicio_epoch)/60;
$camposhidden.=campohidden("accion",$accion);
$camposhidden.=campohidden("camara",$camara);
$camposhidden.=campohidden("ventanan",@$ventanan);

$extracampo[0]=array();
/*
$extracampo[$p]=array();
$extracampo[2]=array();
$extracampo[3]=array();	
*/
@$extracampo[0][0].=campoformulario("c12","Inicio Vuelta 1",20,$c[12],"",1);
@$extracampo[0][1].=campoformulario("c13","Fin Vuelta 1",20,$c[13],"",1);
@$extracampo[0][0].=campoformulario("c14","Inicio Vuelta 2",20,$c[14],"",1);
@$extracampo[0][1].=campoformulario("c15","Fin Vuelta 2",20,$c[15],"",1);
@$extracampo[0][0].=campoformulario("c16","Inicio Vuelta 3",20,$c[16],"",1);
@$extracampo[0][1].=campoformulario("c17","Fin Vuelta 3",20,$c[17],"",1);
/*
for ($i=0;$i<24;$i++) {
	$x=$i%3;
	$y=$i-($x*3);
	@$extracampo[$p][$x].=campobotongrafico("c7","P$i","images/Shipping.gif","");
}
for ($i=0;$i<24;$i++) {
	$x=$i%3;
	$y=$i-($x*3);
	@$extracampo[2][$x].=campobotongrafico("c7","P$i","images/Shipping 2.gif","");
}
for ($i=0;$i<24;$i++) {
	$x=$i%3;
	$y=$i-($x*3);
	@$extracampo[3][$x].=campobotongrafico("c7","P$i","images/Money Box.gif","");
}	
*/
//$extracampo[0][1]=campoformulario("c8","Condicion",50,$c[8],"spformRequired",$lck[8]);		
$extracampo["titulo0"]="Giros";
/*
$extracampo["titulo1"]="Pallets";
$extracampo["titulo2"]="Puchos";
$extracampo["titulo3"]="Bins";
*/
$num_item=$camaras[$camara]["maxpallet"];



$num_pagina=ceil($num_item/50);

$lckk=0;

$arreglotipo=array("","-Seleccione tipo-","1","Pallets","2","Puchos","3","Bins","4","Otros");

for ($p=1;$p<=$num_pagina;$p++) {
	if ($p==$num_pagina) {
		$pfinal=$num_item-1;
		
	} else {
		$pfinal=($p*50)-1;
	}
	$pinicial=($p*50)-50;
	$extracampo["titulo".$p]="Pallets ".($pinicial+1)." al ".($pfinal+1);
	$extracampo[$p][0][0]="N. Serie";
	$extracampo[$p][1][0]="Especie";
	$extracampo[$p][2][0]="N. Cajas";
	$extracampo[$p][3][0]="Envase";
	$extracampo[$p][4][0]="Tipo";
	$extracampo[$p][5][0]="Proveedor";



	
	for ($i2=$pinicial;$i2<=$pfinal;$i2++) {
		$i=$i2-$pinicial;
		$e=$i*6+$pinicial;
		
		$extracampo[$p][0][$i+1]=sprintf("%03d", ($i+1+$pinicial))." ".campoformulario("k".$e,"",20,$c[12],"spformNoRequired",$lckk,"TEXTO",99);;
		$extracampo[$p][1][$i+1]=campocombo("k".($e+1),"",20,$c[0],$arregloespecie,"spformNoRequired",$lckk,$camposhidden,"actualizar(this);");
		//$extracampo[$p][1][$i+1]=campoformulario("k".($e+1),"",20,$c[12],"spformNoRequired",0,"TEXTO",99,"onkeyup ='actualizartexto(this);'");
		$extracampo[$p][2][$i+1]=campoformulario("k".($e+2),"",20,$c[12],"spformNoRequired",$lckk,"TEXTO",99,"onkeyup ='actualizartexto(this);'");
		
		$extracampo[$p][3][$i+1]=campocombo("k".($e+3),"",20,$c[0],$arregloenvase,"spformNoRequired",$lckk,$camposhidden,"actualizar(this);");
		//$extracampo[$p][3][$i+1]=campoformulario("k".($e+3),"",20,$c[12],"spformNoRequired",$lckk,"TEXTO",99,"onkeyup ='actualizartexto(this);'");
		
		
		$extracampo[$p][4][$i+1]=campocombo("k".($e+4),"",20,$c[0],$arreglotipo,"spformNoRequired",$lckk,$camposhidden,"actualizar(this);");
		//$extracampo[$p][4][$i+1]=campoformulario("k".($e+4),"",20,$c[12],"spformNoRequired",$lckk,"TEXTO",99,"onkeyup ='actualizartexto(this);'");
		$extracampo[$p][5][$i+1]=campoformulario("k".($e+5),"",20,$c[12],"spformNoRequired",$lckk,"TEXTO",99,"onkeyup ='actualizartexto(this);'");
	}
}
	
	
switch ($accion) {

case "START":
	// INICIO DEL PROCESO******************************************************************************
	switch($boton_tag) {
		case "OK":
			$datos=array($hoy,$camaras[$camara]["id_camara"],"P",$c[4],$c[11]
				,$c[1],$c[2],$c[3],$c[5],$c[6]
				,$c[0],$c[7],$c[8]			
				,"*RESULTADO*","*RESULTADO*");
			$nc=array('in_fecha_inicio','in_id_camara','in_estado','in_frecuencia','in_creador_inicial'
				,'in_pallets','in_puchos','in_bins','in_origen','in_destino'
				,'in_id_especie','in_id_envase','in_condicion_inicial'
				,'out_id_proceso','resultado');
			$tc=array('int','int','vc200','int','vc200'
				,'int','int','int','vc200','vc200'
				,'int','int','vc200'
				,'outputi','output');
			ejecutarprocedimiento('crear_proceso',$datos,$nc,$tc);	
			$camaras_actual[$camara]["estado_actual"]="P";
			$camaras_actual[$camara]["proceso_actual"]=$num_proceso;
			apc_store_udt('camaras_actual',$camaras_actual);				
			$num_proceso=$datos[13];
			echo mensajeformulario("Proceso Iniciado","images/about.gif","El proceso numero $num_proceso ha iniciado.");
			break;
		default:
			if ($estado_codigo!="V")
				echo mensajeformulario("Error","images/about.gif","La camara esta en estado <b>$estadotxt</b> y por lo tanto no es posible iniciar un nuevo proceso.");
			echo mostrarformulario($titulo,$leyenda,$descripcion,$campos,$camposhidden,$boton,$numform=1,$resultado="",$resultadohtm="",$extracampo);
		break;			
	}		
	break;
case "PAUSE":
	// DETENER EL PROCESO******************************************************************************
	switch($boton_tag) {
		case "HOLD":		
			$datos=array($num_proceso,"H"
				,$c[18],$c[19],$c[1],$c[2],$c[3]
				,"*RESULTADO*");
			$nc=array('in_proceso','in_estado'
				,'in_creador_final','in_condicion_final','in_pallets','in_puchos','in_bins'
				,'resultado');
			$tc=array('int','vc200'
				,'vc200','vc200','int','int','int'
				,'output');
			
			
			ejecutarprocedimiento('modificar_proceso',$datos,$nc,$tc);	
			$camaras_actual[$camara]["estado_actual"]="H";
			$camaras_actual[$camara]["proceso_actual"]=$num_proceso;
			apc_store_udt('camaras_actual',$camaras_actual);	
			if ($estado_codigo!="P" and $estado_codigo!="H")
				echo mensajeformulario("Error","images/about.gif","La camara esta en estado <b>$estadotxt</b> y por lo tanto no es posible detener el proceso.");
			
			echo mensajeformulario("Proceso Detenido","images/about.gif","El proceso numero $num_proceso se ha detenido.");
			break;
		case "CONT":		
			$datos=array($num_proceso,"C"
				,$c[18],$c[19],$c[1],$c[2],$c[3]			
				,"*RESULTADO*");
			$nc=array('in_proceso','in_estado'
				,'in_creador_final','in_condicion_final','in_pallets','in_puchos','in_bins'
				,'resultado');
			$tc=array('int','vc200'
				,'vc200','vc200','int','int','int'
				,'output');
			ejecutarprocedimiento('modificar_proceso',$datos,$nc,$tc);	
			$camaras_actual[$camara]["estado_actual"]="P";
			$camaras_actual[$camara]["proceso_actual"]=$num_proceso;
			apc_store_udt('camaras_actual',$camaras_actual);	
			if ($estado_codigo!="P" and $estado_codigo!="H")
				echo mensajeformulario("Error","images/about.gif","La camara esta en estado <b>$estadotxt</b> y por lo tanto no es posible reanudar el proceso.");			
			echo mensajeformulario("Proceso continuado","images/about.gif","El proceso numero $num_proceso se ha continuado.");
			break;			
		default:
			echo mostrarformulario($titulo,$leyenda,$descripcion,$campos,$camposhidden,$boton,$numform=1,$resultado="",$resultadohtm="",$extracampo);
		break;			
	}		
	break;	
CASE "STOP":
	// DETENER EL PROCESO******************************************************************************
	switch($boton_tag) {
		case "END":		
			$datos=array($num_proceso,"F"
				,$c[18],$c[19],$c[1],$c[2],$c[3]				
				,"*RESULTADO*");
			$nc=array('in_proceso','in_estado'
				,'in_creador_final','in_condicion_final','in_pallets','in_puchos','in_bins'
				,'resultado');
			$tc=array('int','vc200'
				,'vc200','vc200','int','int','int'
				,'output');
			ejecutarprocedimiento('modificar_proceso',$datos,$nc,$tc);	
			$camaras_actual[$camara]["estado_actual"]="V";
			$camaras_actual[$camara]["proceso_actual"]="0";
			apc_store_udt('camaras_actual',$camaras_actual);				
			echo mensajeformulario("Proceso Finalizado","images/about.gif","El proceso numero $num_proceso ha finalizado.");
			break;
		default:
			echo $boton_tag;
			if ($estado_codigo!="P") {
				if (!$num_proceso) {
					echo mensajeformulario("No es posible finalizar el proyecto","images/about.gif","No hay ningun proceso activo.");
				} else {
					echo mensajeformulario("No es posible finalizar el proyecto","images/about.gif","El proceso numero $num_proceso no se puede detener.");
				}
			} else {
				echo mostrarformulario($titulo,$leyenda,$descripcion,$campos,$camposhidden,$boton,$numform=1,$resultado="",$resultadohtm="",$extracampo);
			}
		break;			
	}		
	break;	
CASE "MOD":
	// DETENER EL PROCESO******************************************************************************
	switch($boton_tag) {
		case "END":		
			$datos=array($num_proceso,"F"
				,$c[18],$c[19],$c[1],$c[2],$c[3]				
				,"*RESULTADO*");
			$nc=array('in_proceso','in_estado'
				,'in_creador_final','in_condicion_final','in_pallets','in_puchos','in_bins'
				,'resultado');
			$tc=array('int','vc200'
				,'vc200','vc200','int','int','int'
				,'output');
			ejecutarprocedimiento('modificar_proceso',$datos,$nc,$tc);	
			$camaras_actual[$camara]["estado_actual"]="V";
			$camaras_actual[$camara]["proceso_actual"]="0";
			apc_store_udt('camaras_actual',$camaras_actual);				
			echo mensajeformulario("Proceso Finalizado","images/about.gif","El proceso numero $num_proceso ha finalizado.");
			break;
		default:
			echo $boton_tag;
			if ($estado_codigo!="P") {
				if (!$num_proceso) {
					echo mensajeformulario("No es posible finalizar el proyecto","images/about.gif","No hay ningun proceso activo.");
				} else {
					echo mensajeformulario("No es posible finalizar el proyecto","images/about.gif","El proceso numero $num_proceso no se puede detener.");
				}
			} else {
				echo mostrarformulario($titulo,$leyenda,$descripcion,$campos,$camposhidden,$boton,$numform=1,$resultado="",$resultadohtm="",$extracampo);
			}
		break;			
	}		
	break;	
}
	



	/*
	1 2 3 9 10
CREATE procedure crear_proceso
       @in_fecha_inicio int, --
       @in_id_camara smallint, --
       @in_estado char(1), --
       @in_frecuencia smallint,4
       @in_creador varchar(100), 11
       @in_pallets int, 1
       @in_puchos int, 2
       @in_bins int, 3
       @in_origen varchar(50), 5
       @in_destino varchar(50), 6
       @in_id_especie smallint, 0
       @in_id_envase smallint, 7
       @in_condicion varchar(50), 8
       @out_id_proceso smallint OUTPUT,
       @resultado nvarchar(200) OUTPUT
			 

*/


?>	
</body>
