<?php
/**   ------------------------------------------------------------
		CAMBIA EL ALMACEN DE UN PEDIDO DE VENTA EN NAVISION
	  ------------------------------------------------------------
*/ 
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('memory_limit', '512M');
date_default_timezone_set('Europe/Madrid');

$code=null;
$store=null;
if(isset($_REQUEST["store"]))
	$store=$_REQUEST["store"]; 
else{
	echo json_encode(["result"=>-1 , "text"=>"Se debe proporcionar un codigo de almacen desde donde se enviara el pedido"]);
	die;
}

if(isset($_REQUEST["code"]))
	$code=$_REQUEST["code"]; 
else{
	echo json_encode(["result"=>-2 , "text"=>"Se debe proporcionar un codigo de pedido"]);
	die;
}

//Precargamos los datos de los almacenes para no tener que buscarlos en base de datos
$stores=[
		"ALM01"=>["name"=>"ALMACEN 01 CAMPOLLANO", "name2"=>"", "address"=>"Parque empresarial Campollano c/G, 35", "address2"=>"C/G Nº 35", "postcode"=>"02007", "city"=>"ALBACETE", "county"=>"ALBACETE", "country"=>"ES"], 
		"ALM02"=>["name"=>"ALMACEN 02 ROMICA", "name2"=>"", "address"=>"POLIG.IND.DE ROMICA AVENIDA A Nº34", "address2"=>"", "postcode"=>"02007", "city"=>"ALBACETE", "county"=>"Albacete", "country"=>"ES"]
];

if(!isset($stores[$store])){
	echo json_encode(["result"=>-3 , "text"=>"Almacen de cambio incorrecto"]);
	die;
}

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

$connNavision=false;
$retries=0;
while(!$connNavision && $retries<3){
	$connNavision = sqlsrv_connect( $serverName, $connectionInfo);
	$retries++;
}

if( $connNavision ) {
	 //echo "Conexion establecida con Navision.\r\n";
}else{
	echo json_encode(["result"=>-4 , "text"=>"No se pudo conectar con Navision"]);
	die;
}
//Comprobamos que el pedido exista en navision
$sql='SELECT [No.] FROM [Ind. Campollano Ferretería S.L$Sales Header] WHERE [No.]=\''.$code.'\'';
$stmt_searchOrder = sqlsrv_query( $connNavision, $sql);
if(sqlsrv_errors(SQLSRV_ERR_ERRORS)!==NULL) {
	echo json_encode(["result"=>-5 , "text"=>"Error al buscar el pedido de venta"]);
	die;
}
if( $stmt_searchOrder !== false) {
	if (!$row_searchOrder = sqlsrv_fetch_array( $stmt_searchOrder, SQLSRV_FETCH_ASSOC)){
		echo json_encode(["result"=>-6 , "text"=>"No existe el pedido proporcionado"]);
		die;	
	}
}
$responseErrors=[];
//Procedemos con el cambio, empezamos con las líneas
$sql='UPDATE [Ind. Campollano Ferretería S.L$Sales Line] SET [Location Code]=\''.$store.'\' WHERE [Document No.]=\''.$code.'\'';
$stmt_changeLines = sqlsrv_query( $connNavision, $sql);
if(sqlsrv_errors(SQLSRV_ERR_ERRORS)!==NULL) {
	$responseErrors[]="Error en cambio de linea";
}
//Procedemos con el cambio de la cabecera
$sql='UPDATE [Ind. Campollano Ferretería S.L$Sales Header] SET [Location Code]=\''.$store.'\' WHERE [No.]=\''.$code.'\'';
$stmt_changeHeader = sqlsrv_query( $connNavision, $sql);
if(sqlsrv_errors(SQLSRV_ERR_ERRORS)!==NULL) {
	$responseErrors[]="Error en cabecera";
}
if(count($responseErrors)===0)
	echo json_encode(["result"=>1]);
else echo json_encode(["result"=>-7,"text"=>"Ocurrieron algunos errores en el cambio de almacen","data"=>$responseErrors]);
?>