<?php 
	include_once('xml/XMLS.php'); 	

	//Anula la salida de errores y warnings
	//$old = error_reporting();
	//error_reporting(0);	
	
	$errorNro = 0;
	$errorDesc = "";	
	$OK = true;
	
	

	
	//Obtener datos para la apertura de la base
    $rHandle = fopen("../conexion.txt", 'r');
    if (!$rHandle){     
     	GenerarError(99,"No se pudo leer el archivo de conexion");
		die();
    }
    $sData = '';
     while(!feof($rHandle))
            $sData .= fread($rHandle,100);
     fclose($rHandle);
     
     list($hostname, $database, $username, $password) = split('&', $sData);
	
	
	//Abre base de datos
	//conecta a la base
	$dbdatabase = mysql_connect($hostname, $username, $password);
	if ( !dbdatabase) {			
		GenerarError(4,"No se pudo abrir base de datos" );
		die();		
	}
	
	//Si no hubo error selecciona el esquema 
	if($errorNro ==0){
		if (!mysql_select_db($database, $dbdatabase)) {			
			$errorNro = 5;		
			$errorDesc = "No se pudo seleccionar el esquema";
			GenerarError(5,"No se pudo seleccionar el esquema");
			die();		
		}
			
	}			
	
	
	
	//Obtener parametros
	$modoget = false;
	$comando = "".$_POST['comando']."";
	if ($comando==""){
		$comando = "".$_GET['comando']."";
		if ($comando == ""){
			GenerarError(1,"No se recibió comando");
			die();
		}else{
			$modoget = true;
			$sucursal = "".$_GET['sucursal']."";
		}		
	}else{
		$sucursal = "".$_POST['sucursal']."";	
	}
	if ($sucursal == ""){
		GenerarError(3,"No se especifico sucursal");
		die();
	} 
	
	if ($errorNro == 0)	{
		switch ($comando){
		
		Case "ClientesObtener":
			ObtieneClientes($dbdatabase, $sucursal);
			break;
		case "ConceptosObtener":
			ObtieneConceptos($dbdatabase, $sucursal);
			break;
		case "GuiasObtener":
			ObtieneGuias($dbdatabase, $sucursal);
			break;
		case "AeropuertosObtener":
			ObtieneAeropuertos($dbdatabase, $sucursal);
			break;
		case "ConceptoSincronizado":
			if ($modoget){
				$codigo = "".$_GET['codigo']."";
			}else{
				$codigo = "".$_POST['codigo']."";
			}
			if ($codigo==""){
				GenerarError(6,"No se especifico código de concepto");
			}else{
				ConceptoSincronizado($dbdatabase, $sucursal, $codigo);
			}			
			break;
		case "ClienteSincronizado":
			if ($modoget){
				$codigo = "".$_GET['codigo']."";
			}else{
				$codigo = "".$_POST['codigo']."";
			}
			if ($codigo==""){
				GenerarError(8,"No se especifico código de cliente");
			}else{
				ClienteSincronizado($dbdatabase, $sucursal, $codigo);
			}			
			break;
		case "AeropuertoSincronizado":
			if ($modoget){
				$codigo = "".$_GET['codigo']."";
			}else{
				$codigo = "".$_POST['codigo']."";
			}
			if ($codigo==""){
				GenerarError(10,"No se especifico código de aeropuerto");
			}else{
				AeropuertoSincronizado($dbdatabase, $sucursal, $codigo);
			}			
			break;
		case "GuiaSincronizado":
			if ($modoget){
				$codigo = "".$_GET['codigo']."";
			}else{
				$codigo = "".$_POST['codigo']."";
			}
			if ($codigo==""){
				GenerarError(12,"No se especifico Nro de Guía");
			}else{
				GuiaSincronizado($dbdatabase, $sucursal, $codigo);
			}			
			break;
			
		default:
			GenerarError(2,"Comando invalido");
			die();
		}	
	}
	
	die();

	
	
	function GenerarError($nro, $desc){
	
		//Genera la salida en XML (El resultado)
		$result = new XML();
		$result->AgregarNodo("Resultado");		
		$result->AgregarItem("Estado",utf8_encode("Error"));
		$result->AgregarItem("ErrorNro",$nro);
		$result->AgregarItem("ErrorDesc",utf8_encode($desc));		
		$result->CerrarNodo("Resultado");			
		echo $result->GetXML();
	}	
	function GenerarOk(){
	
		//Genera la salida en XML (El resultado)
		$result = new XML();
		$result->AgregarNodo("Resultado");		
		$result->AgregarItem("Estado",utf8_encode("Ok"));
		$result->AgregarItem("ErrorNro","");
		$result->AgregarItem("ErrorDesc","");		
		$result->CerrarNodo("Resultado");			
		echo $result->GetXML();
	}		
	function ObtieneConceptos($dbdatabase, $sucursal){
		$strSql = "select * from ac_conceptos where id_sucursal = " . $sucursal . " AND !sincronizado ";
		$rst = mysql_query($strSql, $dbdatabase);				
		if (!$rst) {						
			GenerarError( mysql_errno(),mysql_error());					 
			die();
		}
		$result = new XML();
		$result->AgregarNodo("Resultado");
		$result->AgregarItem("Estado",utf8_encode("Ok"));
		$result->AgregarItem("ErrorNro","");
		$result->AgregarItem("ErrorDesc","");
		$result->AgregarItem("CantidadRegistros",mysql_num_rows($rst) );		
		
		//Agregar la cada uno de los registros que corresponden a la instruccion SQL actual
		while ($row = mysql_fetch_assoc($rst)) {
			$result->AgregarNodoConAtributos("Concepto","Codigo='". $row['id_concepto'] ."'");
			$result->AgregarItem("Codigo",$row['id_concepto'] );
			$result->AgregarItem("Descripcion",$row['nombre'] );
			$result->AgregarItem("Abreviatura",$row['abreviatura'] );
			$result->AgregarItem("Activo",$row['activo'] );			
			$result->CerrarNodo("Concepto");			
		}
		
		// Libere los recursos asociados con el resultset
		// Esto es ejecutado automáticamente al finalizar el script.
		mysql_free_result($rst);
		
		$result->CerrarNodo("Resultado");
		echo $result->GetXML();		
	}
	
	function ObtieneClientes($dbdatabase, $sucursal){
		$strSql = "select * from ac_entidades where id_sucursal = " . $sucursal . " AND !sincronizado and agente ";
		$rst = mysql_query($strSql, $dbdatabase);				
		if (!$rst) {						
			GenerarError( mysql_errno(),mysql_error());					 
			die();
		}
		$result = new XML();
		$result->AgregarNodo("Resultado");
		$result->AgregarItem("Estado",utf8_encode("Ok"));
		$result->AgregarItem("ErrorNro","");
		$result->AgregarItem("ErrorDesc","");
		$result->AgregarItem("CantidadRegistros",mysql_num_rows($rst) );		
		
		//Agregar la cada uno de los registros que corresponden a la instruccion SQL actual
		while ($row = mysql_fetch_assoc($rst)) {
			$result->AgregarNodoConAtributos("Cliente","Codigo='". $row['id_entidad'] ."'");
			$result->AgregarItem("Codigo",$row['id_entidad'] );
			$result->AgregarItem("Nombre",$row['nombre'] );
			$result->AgregarItem("Cuit",$row['cuit'] );
			$result->AgregarItem("ResponsableInscripto",$row['responsable_inscripto'] );
			$result->AgregarItem("Activo",$row['activo'] );			
			$result->CerrarNodo("Cliente");			
		}
		
		// Libere los recursos asociados con el resultset
		// Esto es ejecutado automáticamente al finalizar el script.
		mysql_free_result($rst);
		
		$result->CerrarNodo("Resultado");
		echo $result->GetXML();		
	}	
	
	function ObtieneAeropuertos($dbdatabase, $sucursal){
		$strSql = "select * from ac_aeropuertos where !sincronizado ";
		$rst = mysql_query($strSql, $dbdatabase);				
		if (!$rst) {						
			GenerarError( mysql_errno(),mysql_error());					 
			die();
		}
		$result = new XML();
		$result->AgregarNodo("Resultado");
		$result->AgregarItem("Estado",utf8_encode("Ok"));
		$result->AgregarItem("ErrorNro","");
		$result->AgregarItem("ErrorDesc","");
		$result->AgregarItem("CantidadRegistros",mysql_num_rows($rst) );		
		
		//Agregar la cada uno de los registros que corresponden a la instruccion SQL actual
		while ($row = mysql_fetch_assoc($rst)) {
			$result->AgregarNodoConAtributos("Aeropuerto","Codigo='". $row['id_aeropuerto'] ."'");
			$result->AgregarItem("Codigo",$row['id_aeropuerto'] );
			$result->AgregarItem("Nombre",$row['nombre'] );
			$result->AgregarItem("Activo",$row['activo'] );			
			$result->CerrarNodo("Aeropuerto");			
		}
		
		// Libere los recursos asociados con el resultset
		// Esto es ejecutado automáticamente al finalizar el script.
		mysql_free_result($rst);
		
		$result->CerrarNodo("Resultado");
		echo $result->GetXML();		
	}	
	
	function ObtieneGuias($dbdatabase, $sucursal){
		$result = new XML();
		$result->AgregarNodo("Resultado");
		$result->AgregarItem("Estado",utf8_encode("Ok"));
		$result->AgregarItem("ErrorNro","");
		$result->AgregarItem("ErrorDesc","");
		$result->AgregarItem("CantidadRegistros","2" );		

		//Gguia 1 de prueba
		$result->AgregarNodoConAtributos("Guia","MAWB='510-24103461'");
		$result->AgregarItem("cia_aerea","510" );
		$result->AgregarItem("AWB","24103461" );
		$result->AgregarItem("Cliente","000002" );
		$result->AgregarItem("Origen","EZE");
		$result->AgregarItem("Destino","ASU");
		$result->AgregarItem("Fecha_Vuelo","2011-07-27" );
		$result->AgregarItem("Bultos","10" );
		$result->AgregarItem("Volumen","15.50" );
		$result->AgregarItem("Kilos_Brutos","250.00" );
		$result->AgregarItem("Kilos_Aforados","230.00" );
		$result->AgregarItem("Nro_Vuelo","QL100" );
		$result->AgregarNodo("Conceptos");
			$result->AgregarNodoConAtributos("Concepto","Codigo='001'");
			$result->AgregarItem("Codigo","001" );
			$result->AgregarItem("Codigo_abr","FSC" );
			$result->AgregarItem("Descripcion","Flete" );
			$result->AgregarItem("Condicion","PP" );
			$result->AgregarItem("Importe","24.30" );
			$result->AgregarItem("Divisa","USD" );
			$result->CerrarNodo("Concepto");
			
			$result->AgregarNodoConAtributos("Concepto","Codigo='002'");
			$result->AgregarItem("Codigo","002" );
			$result->AgregarItem("Codigo_abr","SCC" );
			$result->AgregarItem("Descripcion","Security" );
			$result->AgregarItem("Condicion","PP" );
			$result->AgregarItem("Importe","24.30" );
			$result->AgregarItem("Divisa","USD" );
			$result->CerrarNodo("Concepto");
		$result->CerrarNodo("Conceptos");		
		$result->AgregarItem("Activo",$row['activo'] );					
		$result->CerrarNodo("Guia");			
		

		//Gguia 1 de prueba
		$result->AgregarNodoConAtributos("Guia","MAWB='510-24103472'");
		$result->AgregarItem("cia_aerea","510" );
		$result->AgregarItem("AWB","24103472" );
		$result->AgregarItem("Cliente","000001" );
		$result->AgregarItem("Origen","MVD");
		$result->AgregarItem("Destino","EZE");
		$result->AgregarItem("Fecha_Vuelo","2011-07-27" );
		$result->AgregarItem("Bultos","15" );
		$result->AgregarItem("Volumen","30.54" );
		$result->AgregarItem("Kilos_Brutos","340.00" );
		$result->AgregarItem("Kilos_Aforados","350.00" );
		$result->AgregarItem("Nro_Vuelo","QL100" );
		$result->AgregarNodo("Conceptos");
			$result->AgregarNodoConAtributos("Concepto","Codigo='001'");
			$result->AgregarItem("Codigo","001" );
			$result->AgregarItem("Codigo_abr","FSC" );
			$result->AgregarItem("Descripcion","Flete" );
			$result->AgregarItem("Condicion","CC" );
			$result->AgregarItem("Importe","35.20" );
			$result->AgregarItem("Divisa","USD" );
			$result->CerrarNodo("Concepto");
			
			$result->AgregarNodoConAtributos("Concepto","Codigo='003'");
			$result->AgregarItem("Codigo","002" );
			$result->AgregarItem("Codigo_abr","PFT" );
			$result->AgregarItem("Descripcion","Profit Share" );
			$result->AgregarItem("Condicion","CC" );
			$result->AgregarItem("Importe","15.00" );
			$result->AgregarItem("Divisa","USD" );
			$result->CerrarNodo("Concepto");
		$result->CerrarNodo("Conceptos");		
		$result->AgregarItem("Activo",$row['activo'] );					
		$result->CerrarNodo("Guia");			
		
		
		$result->CerrarNodo("Resultado");
		echo $result->GetXML();		
	}
	
	
	
	function ConceptoSincronizado($dbdatabase, $sucursal, $codigo){
		// verifica que exista en la base el concepto
		$strSql = "select id_concepto  from ac_conceptos where id_sucursal = " . $sucursal . " AND id_concepto = '" . $codigo . "'";
		$rst = mysql_query($strSql, $dbdatabase);				
		if (!$rst) {						
			GenerarError( mysql_errno(),mysql_error());					 
			die();
		}
		if (mysql_num_rows($rst) != 1){
			GenerarError( 7,"Código de concepto inexistente");					 
			die();		
		}	
	
		// Actualiza el campo sincronizado
		$strSql = "update ac_conceptos set sincronizado = 1 where id_sucursal = " . $sucursal . " AND id_concepto = '" . $codigo . "'";
		$rst = mysql_query($strSql, $dbdatabase);				
		if (!$rst) {						
			GenerarError( mysql_errno(),mysql_error());					 
			die();
		}		

		
		// Devuelve acuse de confirmacion
		GenerarOk();
	
	}
	
	function ClienteSincronizado($dbdatabase, $sucursal, $codigo){
		// verifica que exista en la base el concepto
		$strSql = "select id_entidad  from ac_entidades where id_sucursal = " . $sucursal . " AND id_entidad = " . $codigo . " AND agente";
		$rst = mysql_query($strSql, $dbdatabase);				
		if (!$rst) {						
			GenerarError( mysql_errno(),mysql_error());					 
			die();
		}
		if (mysql_num_rows($rst) != 1){
			GenerarError( 9,"Código de cliente inexistente");					 
			die();		
		}	
	
		// Actualiza el campo sincronizado
		$strSql = "update ac_entidades set sincronizado = 1 where id_sucursal = " . $sucursal . " AND id_entidad = " . $codigo . " AND agente ";
		$rst = mysql_query($strSql, $dbdatabase);				
		if (!$rst) {						
			GenerarError( mysql_errno(),mysql_error());					 
			die();
		}		

		
		// Devuelve acuse de confirmacion
		GenerarOk();
	
	}	
	
	function AeropuertoSincronizado($dbdatabase, $sucursal, $codigo){
		// verifica que exista en la base el concepto
		$strSql = "select id_aeropuerto  from ac_aeropuertos where id_aeropuerto = '" . $codigo . "' ";
		$rst = mysql_query($strSql, $dbdatabase);				
		if (!$rst) {						
			GenerarError( mysql_errno(),mysql_error());					 
			die();
		}
		if (mysql_num_rows($rst) != 1){
			GenerarError( 11,"Código de aeropuerto inexistente");					 
			die();		
		}	
	
		// Actualiza el campo sincronizado
		$strSql = "update ac_aeropuerto set sincronizado = 1 where id_aeropuerto = '" . $codigo . "' ";
		$rst = mysql_query($strSql, $dbdatabase);				
		if (!$rst) {						
			GenerarError( mysql_errno(),mysql_error());					 
			die();
		}		

		
		// Devuelve acuse de confirmacion
		GenerarOk();
	
	}		
	
	function GuiaSincronizado($dbdatabase, $sucursal, $codigo){
		GenerarError("98","Este comando todavía no fue implementado");
		die();	
	}	
	
	
	
		
	function codificar($string)
	{
	    $hex='';
	    for ($i=0; $i < strlen($string); $i++)
	    {
	        $hex .= dechex(ord($string[$i])). " ";
	    }
	    return $hex;
	}
	
	function decodificar($hex)
	{
		$buffer = split(" ",$hex);
	    $string='';
	    
	    foreach ($buffer as $valor)    
	    {
	        $string .= chr(hexdec($valor));
	    }
	    return $string;
	}
	
	
	function SacarMayoresYMenores($texto){
		
		// saca los <
		$res = str_replace("<","@ÊHH1Ê@",$texto);
		$res = str_replace(">","@ÊHH2Ê@",$res);
		return $res;
	}
	
?>
