 <?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('memory_limit', '512M');
date_default_timezone_set('Europe/Madrid');
header('Content-Type: application/json');
$discordchannel="883046233017552956";

function mssql_escape($str)
{
    if(get_magic_quotes_gpc()){
        $str= stripslashes($str);
    }
    return str_replace("'", "''", $str);
}

function utf8_converter($array)
{
    array_walk_recursive($array, function(&$item, $key){
        if(mb_detect_encoding($item, 'utf-8', true)){
                $item = utf8_decode($item);
				//$item = str_replace("'", "''", $item );
				//$item = str_replace("/", "//", $item );
        }
    });
 
    return $array;
}


if(isset($_POST["json"])) {
	$json=json_decode($_POST["json"], true); 
	$json=utf8_converter($json);

}else{
    file_get_contents("https://icfbot.ferreteriacampollano.com/message.php?channel=".$discordchannel."&msg=".urlencode(":sos:"."SCRIPT ".basename(__FILE__, '.php').": Faltan parametros en la llamada a Navision"));
	echo json_encode(["result"=>-10, "text"=>"Faltan parametros en la llamada a Navision"]);
	die;
}

$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 ) {

}else{
     file_get_contents("https://icfbot.ferreteriacampollano.com/message.php?channel=".$discordchannel."&msg=".urlencode(":sos:"."SCRIPT ".basename(__FILE__, '.php').": No se pudo establecer la conexion con Navision"));
	 echo json_encode(["result"=>-11 , "text"=>"No se pudo conectar con Navision"]);
	 die;
}

	
	$sql = "INSERT INTO ".'[Ind. Campollano Ferretería S.L$ICF_FrasCab]'."(
			FechaModificacion,
			HoraModificacion,
			CodClientePS,
			Nombre,
			Apellido1,
			Apellido2,
			Direccion1,
			Direccion2,
			CP,
			Poblacion,
			Provincia,
			Contacto,
			TerminosPago,
			FormaPago,
			FechaRegistro,
			FechaVencimiento,
			TextoRegistro,
			DNI,
			Telefono,
			CodClientePagadorPS,
			NombrePagador,
			Apellido1Pagagor,
			Apellido2Pagagor,
			CodFacturaTemp,
			Procesado,
			ConceptoGastoEnvio,
			Direccion1Envio,
			Direccion2Envio,
			CPEnvio,
			PoblacionEnvio,
			ProvinciaEnvio,
			CodPedidoPS,
			Observaciones,
			CodCliente,
			RefPedidoPS,
			EmpresaPagador,
			EmpresaEnvios,
			Email,
			[Texto Error],
			Solucionado,
			Error,
			ProcesarAlbaran,
			NoAlbaran
			
	) VALUES (
		'".date("d-m-Y", strtotime($json["Fecha"]))."',
		'".date("1754-01-01 H:i:s.000", strtotime($json["Fecha"]))."',
		'".mssql_escape($json["CodCliente"])."',
		'".mssql_escape($json["EmpresaEnvios"])."',
		'',
		'',
		'".mssql_escape($json["Direccion1"])."',
		'".mssql_escape($json["Direccion2"])."',
		'".mssql_escape($json["CP"])."',
		'".mssql_escape($json["Poblacion"])."',
		'".mssql_escape($json["Provincia"])."',
		'".mssql_escape($json["Contacto"])."',
		'".mssql_escape($json["TerminosPago"])."',
		'".mssql_escape($json["FormaPago"])."',
		'".date("d-m-Y", strtotime($json["Fecha"]))."',
		'".date("d-m-Y", strtotime($json["Fecha"]))."',
		' ',
		'".mssql_escape($json["DNI"])."',
		'".mssql_escape($json["Telefono"])."',
		'".mssql_escape($json["CodClientePagadorPS"])."',
		'".mssql_escape($json["NombrePagador"],'utf-8')."',
		'".mssql_escape($json["Apellido1Pagagor"])."',
		'".mssql_escape($json["Apellido2Pagagor"])."',
		' ',
		0,
		' ',
		'".mssql_escape($json["Direccion1Envio"])."',
		'".mssql_escape($json["Direccion2Envio"])."',
		'".mssql_escape($json["CPEnvio"])."',
		'".mssql_escape($json["PoblacionEnvio"])."',
		'".mssql_escape($json["ProvinciaEnvio"])."',
		'".mssql_escape($json["CodPedidoPS"])."',
		'".mssql_escape($json["Observaciones"])."',
		'".mssql_escape($json["CodCliente"])."',
		'".mssql_escape($json["CodPedidoPS"])."',
		'".mssql_escape($json["EmpresaPagador"],'utf-8')."',
		'".mssql_escape($json["EmpresaEnvios"],'utf-8')."',
		'".mssql_escape($json["Email"])."',
		'',
		0,
		0,
		0,
		0		
		);";
		
		$stmt = sqlsrv_query( $connNavision, $sql );
		if(sqlsrv_errors(SQLSRV_ERR_ERRORS)!==NULL) {
            echo json_encode(["result"=>-12, "text"=>"1 Ocurrio un error en la consulta SQL de Navision"]);
            file_get_contents("https://icfbot.ferreteriacampollano.com/message.php?channel=".$discordchannel."&msg=".urlencode(":sos:"."SCRIPT ".basename(__FILE__, '.php').": No se pudo insertar la cabecera en FrasCab"));
			die;
		}
        
		//Obtener el id que se acaba de insertar
		$sql="SELECT MAX(Cod_FrasCab) Cod_FrasCab FROM ".'[Ind. Campollano Ferretería S.L$ICF_FrasCab]';
		$stmt = sqlsrv_query( $connNavision, $sql );
		if(sqlsrv_errors(SQLSRV_ERR_ERRORS)!==NULL) {
            echo json_encode(["result"=>-12, "text"=>"1 Ocurrio un error en la consulta SQL de Navision"]);
            file_get_contents("https://icfbot.ferreteriacampollano.com/message.php?channel=".$discordchannel."&msg=".urlencode(":sos:"."SCRIPT ".basename(__FILE__, '.php').": No se pudo obtener el valor máximo de cabecera FrasCab"));
			die;
		}
		$row_max = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC);
		$Cod_FrasCab=$row_max["Cod_FrasCab"];

		
	foreach($json["Lineas"] as $linea){
		
		
			$sql = "SELECT I.[CantidadPedidoWeb] as cantidadpedidoweb FROM Item I WHERE I.[No.]='".$linea["Cod_NAV"]."'";
			$stmt = sqlsrv_query( $connNavision, $sql );
		
			if(sqlsrv_errors(SQLSRV_ERR_ERRORS)!==NULL) {
				die;
			}
			if( $stmt === false) {
				die( print_r( sqlsrv_errors(), true) );
			}
			
			$cantidadpedidoweb=1;
			//$precio=$linea["PrecioVenta"]
			if($row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)) {
				$cantidadpedidoweb=floatval($row["cantidadpedidoweb"]);
			}
			
		
			if($cantidadpedidoweb>1){ 
			$cantidad=strval($cantidadpedidoweb*floatval($linea["Cantidad"]));
			$precio=strval(floatval($linea["PrecioVenta"])/$cantidadpedidoweb);
			}
			else {
				$cantidad=strval($linea["Cantidad"]);
				$precio=$linea["PrecioVenta"];
			}
			
		
			$sql = "INSERT INTO ".'[Ind. Campollano Ferretería S.L$ICF_FrasLinea]'."(
					Cod_FrasCab,
					NLinea,
					Cod_NAV,
					Cantidad,
					Descripcion,
					PrecioVenta,
					GrupoIVA,
					Descuento,
					ImporteLinea,
					Procesado,
					Variante,
					ProcesaAlbaran,
					CantidadAProcesar,
					CantidadProcesada
			) VALUES (
				".$Cod_FrasCab.",
				'".mssql_escape($linea["NLinea"])."',
				'".mssql_escape($linea["Cod_NAV"])."',
				'".mssql_escape($cantidad)."',
				'".mssql_escape($linea["Descripcion"])."',
				'".mssql_escape($precio)."',
				'".mssql_escape($linea["GrupoIVA"])."',
				'".mssql_escape($linea["Descuento"])."',
				'".mssql_escape($linea["ImporteLinea"])."',
				0,
				'".mssql_escape($linea["Variante"])."',
				0,
				0,
				0
			);";
			
			$stmt = sqlsrv_query( $connNavision, $sql );
            if(sqlsrv_errors(SQLSRV_ERR_ERRORS)!==NULL) {
                echo json_encode(["result"=>-12, "text"=>"1 Ocurrio un error en la consulta SQL de Navision", "sql"=>$sql]);
                file_get_contents("https://icfbot.ferreteriacampollano.com/message.php?channel=".$discordchannel."&msg=".urlencode(":sos:"."SCRIPT ".basename(__FILE__, '.php').": No se pudo insertar linea en FrasCab"));
                die;
            }
    }
    echo json_encode(["result"=>1]);

?>
