<?php
error_reporting(E_ALL);
ini_set('display_errors', 0);
ini_set('memory_limit', '-1');
set_time_limit(0);
date_default_timezone_set('Europe/Madrid');
//include("conexion.php");
if(isset($_REQUEST["code"])){ //Numero de pedido del que buscaremos el factura en FrasCab
	$code=$_REQUEST["code"];
	if (strtoupper($code[0]) === 'N') {
		// Elimina la primera letra
		$code = substr($code, 1);
	}
}else{
	echo json_encode(["result"=>-1, "text"=>"Es necesario indicar el numero de pedido"]);
	die();
}
$maxretries=60;
if(isset($_REQUEST["maxretries"])){ //Numero de pedido del que buscaremos el albaran en FrasCab
	$maxretries=$_REQUEST["maxretries"];
}

$serverName = "localhost";
$connectionInfo = array( "Database"=>"ICF", "UID"=>"VAIO", "PWD"=>"VAIO");

$connNavision=false;
$retries=0;

while(!$connNavision && $retries<3){
	$connNavision = sqlsrv_connect( $serverName, $connectionInfo);
	$retries++;
}
if(!$connNavision){
	echo json_encode(["result"=>-2, "text"=>"No se pudo conectar con Navision"]);
	die();
}
//Intentamos 60 veces obtener el numero de factura a la espera de que el CodeUnit asigne numeracin al factura
$retries=0;
while($retries<$maxretries){
	$sql = 'SELECT fc.[NoAlbaran],fc.[CodFacturaReg],ih.[Hora registro], ih.[Document Date]
			FROM [dbo].[Ind. Campollano Ferreterķa S.L$ICF_FrasCab] fc 
			LEFT JOIN [dbo].[Ind. Campollano Ferreterķa S.L$Sales Invoice Header] ih ON ih.[No.]=fc.[CodFacturaReg]
			WHERE [CodFacturaTemp]=\''.$code.'\'';
	$smtp=sqlsrv_query( $connNavision, $sql );
	if($row = sqlsrv_fetch_array( $smtp, SQLSRV_FETCH_ASSOC)){
		if($row['CodFacturaReg']!=null && $row['CodFacturaReg']!='' && $row['CodFacturaReg']!=0){
			echo json_encode(["result"=>1, "data"=>["deliveryNoteCode"=>$row['NoAlbaran'],"invoiceCode"=>$row['CodFacturaReg'], "invoiceDate"=>$row['Document Date']->format('Y-m-d').' '.$row['Hora registro']->format('H:i:s')]]);
			die();
		}		
	}
	usleep(500000);
	$retries++;
	
}
echo json_encode(["result"=>-3, "text"=>"No se pudo obtener el numero de factura"]);
die();

?>
