<?php
include("categorias.php");
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('memory_limit', '512M');
date_default_timezone_set('Europe/Madrid');
//include("conexion.php");
$discordchannel="935430617842196601";

$bdd_usuario="icf";
$bdd_contrasena="6k4mkb9LWT3Zr5A";
$bdd_servidor="212.129.50.120";
$bdd_base_datos="icf";


function acentos($str) {
  $a = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'Ð', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', '?', '?', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 'L', 'l', '?', '?', 'L', 'l', 'N', 'n', 'N', 'n', 'N', 'n', '?', 'O', 'o', 'O', 'o', 'O', 'o', 'Œ', 'œ', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'Š', 'š', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y', 'y', 'Ÿ', 'Z', 'z', 'Z', 'z', 'Ž', 'ž', '?', 'ƒ', 'O', 'o', 'U', 'u', 'A', 'a', 'I', 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?');
  $b = array('A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 's', 'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'D', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'IJ', 'ij', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'l', 'l', 'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o', 'O', 'o', 'O', 'o', 'OE', 'oe', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y', 'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's', 'f', 'O', 'o', 'U', 'u', 'A', 'a', 'I', 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'A', 'a', 'AE', 'ae', 'O', 'o', '?', 'a', '?', 'e', '?', '?', 'O', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?');
  return str_replace($a, $b, $str);
}


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

$connPrestashop=false;
$retries=0;
while(!$connPrestashop && $retries<3){
	$connPrestashop = new mysqli($bdd_servidor, $bdd_usuario, $bdd_contrasena, $bdd_base_datos);
	$retries++;
}


if( $connPrestashop ) {
	 echo "Conexion establecida con Prestashop.\r\n";
}else{
	 echo "Conexion no se pudo establecer con Prestashop.\r\n";
	 die( print_r( sqlsrv_errors(), true));
}

$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 "Conexion establecida con Navision.\r\n";
}else{
	 echo "Conexion no se pudo establecer con Navision.\r\n";
	 die( print_r( sqlsrv_errors(), true));
}





$sql = 'SELECT id_order FROM fcorders WHERE date_add>="'.date('Y-m-d 00:00:00', strtotime('-4 day')).'" AND module="aliexpress_payment" AND current_state=2';
//$sql = 'SELECT id_order FROM fcorders WHERE id_order="53102"';
//$pedidos_hoy_aliexpress = mysqli_query($connPrestashop, $sql);
$result = mysqli_query($connPrestashop, $sql);

while($row=mysqli_fetch_object($result)){
	
	$id_pedido=$row->id_order;
	
	echo "Pedido: ".$id_pedido."<br>";
	$sql = 'SELECT * FROM [Ind. Campollano Ferretería S.L$ICF_FrasCab]
			WHERE [CodPedidoPS]=\''.$id_pedido.'\'';
	//$sql = 'SELECT * FROM [Ind. Campollano Ferretería S.L$ICF_FrasCab]
	// 	WHERE [CodPedidoPS]=\'2\'';
		
	$stmt = sqlsrv_query( $connNavision, $sql);

	
	if($row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)) 
	{
		
		echo "El pedido ".$id_pedido." ya se encuentra en frascab<br>";
	
	}
	else{	
		echo "El pedido ".$id_pedido." no ha sido encontrado en frascab<br>";
		
			
	

		$sql='SELECT o.id_order, o.reference, o.id_customer, c.id_customer_icf, c.terminos_pago, o.id_address_delivery, o.date_add, c.cif cif, o.id_address_invoice, c.id_default_group, c.firstname, c.lastname, c.email, c.empresa empresa, b.address1 inv_address1, b.address2 inv_address2, b.city inv_city, b.postcode inv_postcode, b.phone inv_phone, b.phone_mobile inv_mobile, a.address1, a.address2, a.city, a.postcode, a.phone tel_fijo, a.phone_mobile tel_movil, o.carrier_tax_rate, o.current_state, o.total_discounts_tax_excl, o.total_paid, o.total_paid_tax_incl, o.total_paid_tax_excl, o.payment, o.module, o.codfee,
					o.total_shipping_tax_excl, o.payment_fee, a.city, s.name provincia, s2.name inv_provincia, carrier.name carrier, car.delay, st.name estado, th.id_customer_thread, mes.message
					FROM fcorders o
					LEFT JOIN fccustomer c
						ON c.id_customer=o.id_customer
					LEFT JOIN fcorder_state_lang st
						ON o.current_state=st.id_order_state
						AND st.id_lang=1
					LEFT JOIN fccarrier_lang car
						ON car.id_carrier=o.id_carrier
							AND car.id_lang=1
					LEFT JOIN fccarrier carrier
						ON o.id_carrier=carrier.id_carrier
					LEFT JOIN fcaddress a
						 ON o.id_address_delivery=a.id_address
					LEFT JOIN fcaddress b
						 ON o.id_address_invoice=b.id_address
					LEFT JOIN fcstate s
						 ON s.id_state=a.id_state
					LEFT JOIN fcstate s2
						 ON s2.id_state=b.id_state
					LEFT JOIN fccustomer_thread th
						 ON th.id_order=o.id_order
					LEFT JOIN fccustomer_message mes
						ON mes.id_customer_thread=th.id_customer_thread
					WHERE o.id_order='.$id_pedido;
	//	echo $sql."<br>";
		$result = mysqli_query($connPrestashop, $sql);
		
		if($row=mysqli_fetch_object($result)){
			//echo "<pre>".print_r($row,true)."</pre>";
			//Insertamos cabecera del pedido en ICF_FrasCab

			//echo "entra aqui\n";

			
			$payment_method='ALIEXPRESS';
			$id_cliente_navision='C11000';
			//echo "<br><br>".$id_cliente_navision."<br><br>";
			
			
			$terminospago="00C";
			
			
			
			if(strlen($row->message)>230){
				$observaciones="";
				
			}
			
			else{
				$observaciones=$row->message;
				
			}
			
			$observaciones=$observaciones." ".$payment_method;
				
			
			$telefono=NULL;
			
			if($row->tel_fijo=="")
			{
				
				$telefono=$row->tel_movil;
				
			}
			
			else{
				
				if($row->tel_movil!="")	$telefono=$row->tel_fijo."/".$row->tel_movil;
				else $telefono=$row->tel_fijo;
			}
			
			$empresa=acentos(mssql_escape($row->empresa));
			
			$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($row->date_add))."',
				'".date("1754-01-01 H:i:s.000", strtotime($row->date_add))."',
				'".$row->id_customer."',
				'".mssql_escape($row->firstname)."',
				'".mssql_escape($row->lastname)."',
				' ',
				'".mssql_escape($row->inv_address1)."',
				'".mssql_escape($row->inv_address2)."',
				'".mssql_escape($row->inv_postcode)."',
				'".mssql_escape($row->inv_city)."',
				'".mssql_escape($row->inv_provincia)."',
				' ',
				'".mssql_escape($terminospago)."',
				'".$payment_method."',
				'".date("d-m-Y", strtotime($row->date_add))."',
				'".date("d-m-Y", strtotime($row->date_add))."',
				' ',
				'".mssql_escape($row->cif)."',
				'".mssql_escape($telefono)."',
				'".mssql_escape($row->id_customer)."',
				'".mssql_escape($row->firstname)."',
				'".mssql_escape($row->lastname)."',
				' ',
				' ',
				0,
				'".mssql_escape($row->carrier)."',
				'".mssql_escape($row->address1)."',
				'".mssql_escape($row->address2)."',
				'".mssql_escape($row->postcode)."',
				'".mssql_escape($row->city)."',
				'".mssql_escape($row->provincia)."',
				".$id_pedido.",
				'".mssql_escape($observaciones)."',
				'".mssql_escape($id_cliente_navision)."',
				'".mssql_escape($row->id_order)."',
				'".strtoupper($empresa)."',
				'".strtoupper($empresa)."',
				'".mssql_escape($row->email)."',
				'',
				0,
				0,
				0,
				0		
				
				);";
				
				
			
				//echo $sql."<br><br><br>";


				$stmt = sqlsrv_query( $connNavision, $sql );
	/*			
				if( $stmt === false) {
					die( print_r( sqlsrv_errors(), true) );
				}
			
			*/
				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 del pedido de AliExpress ".$id_pedido));
					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( $stmt === false) {
					die( print_r( sqlsrv_errors(), true) );
				}
				$row_max = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC);
				$Cod_FrasCab=$row_max["Cod_FrasCab"];

			


			//Creamos las líneas del Documento y las relacionamos con la linea de PS
			$sql='SELECT d.*, l.name, IFNULL(al.name,\'\') Variante, p.cantidad_pedido_minimo cantidad_pedido_minimo, p.id_product id_product FROM fcorder_detail d
			LEFT JOIN fcproduct_lang l	ON l.id_product=d.product_id AND l.id_lang=1 AND l.id_shop=1
			LEFT JOIN fcproduct p ON p.id_product=d.product_id
			LEFT JOIN fcproduct_attribute_combination ac	ON ac.id_product_attribute=d.product_attribute_id AND ac.id_product_attribute <> 0
			LEFT JOIN fcattribute_lang al ON al.id_attribute=ac.id_attribute AND al.id_lang=1 AND al.id_attribute <> 0 WHERE d.id_order='.$id_pedido;
			//echo $sql."<br>";
			$result = mysqli_query($connPrestashop, $sql);
			$linea=1;
			while($row_detail=mysqli_fetch_object($result)){
			
				if($row_detail->name=="J'HAYBER") $nombre="JHAYBER";
				else $nombre=$row_detail->name;
				
				
				if($row_detail->cantidad_pedido_minimo>1){
					$cantidad=($row_detail->product_quantity*$row_detail->cantidad_pedido_minimo);
					$precio_unitario=($row_detail->unit_price_tax_excl/$row_detail->cantidad_pedido_minimo);
				}
				
				else{
					$cantidad=$row_detail->product_quantity;
					$precio_unitario=$row_detail->unit_price_tax_excl;
				}
				
				if($row_detail->Variante!=""){
					$sql='SELECT reference FROM fcproduct WHERE id_product='.$row_detail->id_product;
					$result_ref = mysqli_query($connPrestashop, $sql);
					$row_ref=mysqli_fetch_object($result_ref);					
					$product_reference=$reference=$row_ref->reference;
						
				}	
		
				else $product_reference=$row_detail->product_reference;
				
			
				$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.",
					".$linea.",
					'".$product_reference."',
					'".$cantidad."',
					'".$nombre."',
					'".$precio_unitario."',
					'21',
					'".$row_detail->reduction_amount."',
					'".$row_detail->total_price_tax_excl."',
					0,
					'".mssql_escape($row_detail->Variante)."',
					0,
					0,
					0
				);";
				
			//	echo $sql."<br>";
				$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 linea del pedido de AliExpress ".$id_pedido));
					die;
				}

				$linea++;
				//echo "Comenzamos nueva linea ".$linea."<br>";
			}
			
				
				if(($row->total_shipping_tax_excl*1)>0){
					$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.",
						".$linea.",
						'29004',
						'1',
						'Gastos de envio y manipulacion',
						".($row->total_shipping_tax_excl*1).",
						'21',
						'0',
						".($row->total_shipping_tax_excl*1).",
						0,
						'',
						0,
						0,
						0
					);";
					//echo $sql;
					$stmt = sqlsrv_query( $connNavision, $sql );
					if( $stmt === false) {
						die( print_r( sqlsrv_errors(), true) );
					}
					
					$linea++;
				}		
				
				//creamos una nueva linea en el pedido para los descuentos. En este caso, 
				//hemos creado en Navision el artículo 99DTOWEB y lo metemos con -1 y el importe del dto. correspondiente.
			
				//echo "linea de descuento:".($row->total_discounts_tax_excl);
				
				
				if($row->total_discounts_tax_excl>0){
				
					$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.",
							".$linea.",
							'99DTOWEB',
							'-1',
							'Descuento Web',
							".($row->total_discounts_tax_excl*1).",
							'21',
							'0',
							".($row->total_discounts_tax_excl*1).",
							0,
							'',
							0,
							0,
							0
					);";
					//echo $sql;
					$stmt = sqlsrv_query( $connNavision, $sql );
					if( $stmt === false) {
						die( print_r( sqlsrv_errors(), true) );
					}
					$linea++;
				}
				
				
				
				//creamos una nueva linea en el pedido para las comisiones de Paypal. En este caso, 
				//aprovechamos el artículo 99DTOWEB de Navision y lo metemos en este caso con +1 y el importe de la tasa correspondiente.
			
				//echo "linea de descuento:".($row->total_discounts_tax_excl);
				
				if($row->payment_fee>0){
				
					$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.",
							".$linea.",
							'99COMPAYPAL',
							'1',
							'Comisión Paypal',
							".(($row->payment_fee*1)/1.21).",
							'21',
							'0',
							".(($row->payment_fee*1)/1.21).",
							0,
							'',
							0,
							0,
							0
					);";
					$stmt = sqlsrv_query( $connNavision, $sql );
					if( $stmt === false) {
						die( print_r( sqlsrv_errors(), true) );
					}
				}
				
				
			
		}
		
		
		
		
	}

}


?>
