<?php
//---------------------------------------------------------------------------------------------------------
// 17/Dicembre/2018
// Versión 1.0 Del fichero que genera los ficheros de exportación de sinlib a la web paar la versión 2.5 de WS
//---------------------------------------------------------------------------------------------------------

//Nos empezamos asegurando de que los códigos de Sinlib de los clientes se propaguen a los pedidos
PedidoCliente::associateEmptyClientsCode()

//Ahora generamos los clientes, para ello componemos la select de clientes

//---------------------------------------------------------------------------------------------------------
	// 02/Marzo/2015
	// Versión 2.0 Del fichero que genera los ficheros de exportación de sinlib a la web
	//---------------------------------------------------------------------------------------------------------
//Incluimos los ficheros con las funciones que necesitamos
	error_reporting(E_ALL);	
/**
	Nos deveulve la ruta hasta el public_html y hace un include path
*/
	if(!function_exists('getRealPath')){
		function getRealPath(){
			$ruta = getcwd();
			$tmp = explode("public_html", $ruta);
			//var_dump($tmp);
			$tmp2 = explode(PATH_SEPARATOR, $tmp[1]);
			$ruta ="";
			if($tmp[1] !=""){
				for($i = 0; $i < sizeof($tmp2); $i++){
					$ruta .='../';
				}
			}else{
				$ruta = './';
			}
			return $ruta;
		}
	}
			//----------------------------------------------------------------------------------------------------------------------------------------------------
	//                  COMPROBAMOS SI EXISTE UN CONTADOR. SI NO EXISTE SE CREA, SI EXISTE SE INCREMENTA EN UNO Y DEVOLVEMOS EL VALOR
	//----------------------------------------------------------------------------------------------------------------------------------------------------
if(!function_exists('incrementa_contador_en_tabla')){
	function incrementa_contador_en_tabla($nombre, $incremento = 1){
			include("comunes/globals.php");
			$retorno = false;
			if ($conexionBD){
				$retorno = 0;
				$sentencia_sql = "SELECT contador FROM contador WHERE nombre = '$nombre'";
				if ($resultado = mysqli_query($conexionBD, $sentencia_sql)){
					if($fila = mysqli_fetch_array($resultado)){
						$retorno = $fila["contador"] + 1;
						//Insertamos este contador en la tabla
						$sentencia_sql = "UPDATE contador SET contador = $retorno WHERE nombre = '$nombre'";
						mysqli_query($conexionBD, $sentencia_sql);
					}else{
						$retorno = 1;
						//No existe contador, hay que insertarlo
						$sentencia_sql = "INSERT INTO contador (nombre, contador) VALUES ('$nombre', $retorno)";
						mysqli_query($conexionBD, $sentencia_sql);
					}
				}
			}
			return($retorno);
		}
}
	//actualizamos los c´dogiso sinlib en aquellos pedidos que no lo tienen
	actualizar_codigos_clientes_pedidos();
	//Vamos a generar el fichero de clienets
	generar_fichero_clientes();
	//Generamos ahora el fichero de pedidos e clientes (cabeceras y líneas)
	generar_fichero_pedcli();


	//----------------------------------------------------------------------------------------------------------------------------------------------------
	//                  ACTUALIAMOS LOS CÓDIGOS DE CLIENTE SINLIB EN LOS PEDIDOS
	//----------------------------------------------------------------------------------------------------------------------------------------------------
	function actualizar_codigos_clientes_pedidos(){
		include("comunes/globals.php");
		$sentencia_sql = "UPDATE mc_pedcli pedidos_cliente SET cliente_sinlib = ( SELECT codigo_sinlib FROM cliente WHERE cliente.codigo = pedidos_cliente.cliente) WHERE mc_pedcli.cliente_sinlib = 0";
		if ($conexionBD){
			mysqli_query($conexionBD, $sentencia_sql);
		}
	}

	//----------------------------------------------------------------------------------------------------------------------------------------------------
	//                  GENERAMOS EL FICHERO DE CLIENTES PARA QUE SE DESCARGUE EN LA SIGUIENTE SINCRONIZACIÓN
	//----------------------------------------------------------------------------------------------------------------------------------------------------
	function generar_fichero_clientes(){
		include("comunes/globals.php");
		//Inicializo los datos
		$lista_codigos = "";
		$codigo = 0;
		$password = "";
		$nombre = "";
		$email = "";
		$cif = "";
		$telefono = "";
		$direccion = "";
		$cod_postal = "";
		$localidad = "";
		$provincia = "";
		$lista_codigos = "";
		$sentencia_sql = "SELECT * FROM `cliente` WHERE `pendiente_sinlib` = '1' OR ( modificado = '1' AND codigo_sinlib > 0 )";
		//echo("SENTENCIA CLIENTES <br />\n$sentencia_sql<br />\n");
		$nombre_fichero_sincro = "client" . incrementa_contador_en_tabla("CLIENTE") . ".pen";
		$clientes_exportados = 0;
		if ($conexionBD){
			//echo($sentencia_sql . "<br />\n");
			if ($resultado = mysqli_query($conexionBD, $sentencia_sql)){
				if (mysqli_num_rows($resultado) > 0){
					if($fichero_datos = fopen(getRealPath()."importacion/exportacion/$nombre_fichero_sincro", "a")){
						while($fila = mysqli_fetch_array($resultado)){
							$codigo = $fila["codigo"];
							$lista_codigos .= (($lista_codigos != "") ? ", ": "") . $codigo;
							$password = $fila["password"];
							$nombre = $fila["nombre_legal"];
							$email = $fila["email"];
							$cif = $fila["cif"];
							$telefono = $fila["telefono"];
							$direccion = $fila["direccion"];
							$cod_postal = $fila["cod_postal"];
							$localidad = $fila["localidad"];
							$provincia = $fila["provincia"];
							$modificado = $fila["modificado"];
							$codigo_sinlib = $fila["codigo_sinlib"];
							$pais = $fila["pais"];
							$cod_descuento = $fila["cod_descuento"];
							$tipo_cliente = (isset($fila["tipo_cliente"]))? $fila["tipo_cliente"] : "";
							//$codigo_sinlib = $fila["nombre_pais"];
							$linea = "$codigo|$password|$nombre|$email|$cif|$telefono|$direccion|$cod_postal|$localidad|$provincia|$modificado|$codigo_sinlib|$pais|$cod_descuento|$tipo_cliente|\n";
							if ($linea != ""){
								fwrite($fichero_datos, $linea);
							}
							//echo("$codigo|$password|$nombre|$email|$cif|$telefono|$direccion|$cod_postal|$localidad|$provincia|$modificado|$codigo_sinlib|$pais\n");
							echo("$linea\n");
							$clientes_exportados++;
						}
						fclose($fichero_datos);
					}
				}
			}
			if ($lista_codigos != ""){
				$sentencia_sql = "UPDATE cliente SET pendiente_sinlib = 2, modificado = 0 WHERE codigo IN ($lista_codigos)";
				//echo("$sentencia_sql\n");
				//Hay que ejecutar este select
				mysqli_query($conexionBD, $sentencia_sql);
			}
			//Ahora vamos a coger el fichero y lo ponemos como OK para que se pueda bajar
			if (file_exists(getRealPath()."importacion/exportacion/$nombre_fichero_sincro")){
				rename(getRealPath()."importacion/exportacion/$nombre_fichero_sincro", getRealPath()."importacion/exportacion/$nombre_fichero_sincro.OK");
				chmod(getRealPath()."importacion/exportacion/$nombre_fichero_sincro.OK", 0777);
				//echo getRealPath()."importacion/exportacion/$nombre_fichero_sincro.OK";
			}
		}
		echo("Exportados $clientes_exportados clientes<br />\n");
	}

	//----------------------------------------------------------------------------------------------------------------------------------------------------
	//                  GENERAMOS EL FICHERO DE PEDIDOS DE CLIENTES (CABECERA Y LÍNEAS)
	//----------------------------------------------------------------------------------------------------------------------------------------------------
	function generar_fichero_pedcli(){
		include("comunes/globals.php");
		//Inicializo los datos de la cabecera
		$lista_codigos = 0;
		$codigo = 0;
		$cliente = 0;
		$nombre = "";
		$email = "";
		$cif = "";
		$telefono = "";
		$direccion = "";
		$cod_postal = ""; 
		$localidad = "";
		$provincia = "";
		//Vamos con los datos de las líneas
		$articulo = 0;
		$cantidad = 0;
		$pedidos_exportados = 0;
		//$correcto = false;
		$nombre_fichero_sincro = "pedcli" . incrementa_contador_en_tabla("PEDIDOS") . ".pen";
		$sentencia_sql = "SELECT mc_pedcli.codigo codigo_pedido, mc_pedcli.cliente cliente_pedido, mc_pedcli.nombre_legal nombre_legal_pedido,
						 mc_pedcli.email email_pedido, mc_pedcli.cif cif_pedido, mc_pedcli.telefono telefono_pedido, mc_pedcli.direccion direccion_pedido,
						 mc_pedcli.cod_postal cod_postal_pedido, mc_pedcli.localidad localidad_pedido, mc_pedcli.provincia provincia_pedido,
						 Date_format(mc_pedcli.fecha,'%d%m%y') fecha_pedido, Date_format(mc_pedcli.fecha,'%H:%i') hora_pedido, mc_pedcli.tipo_envio t_envio,
						 cliente.codigo_sinlib codigo_sinlib_cliente, mc_pedcli.observaciones obs_pedido, factura, descuento, envolver_regalo, datos_facturacion, comercial, g_envio
						 FROM mc_pedcli, cliente
						 WHERE mc_pedcli.pendiente_sinlib = '1' AND mc_pedcli.cliente = cliente.codigo AND cliente.codigo_sinlib > 0 ";
		echo("SENTENCIA PEDIDOS <br />\n$sentencia_sql<br />\n");
		if ($conexionBD){
			//echo($sentencia_sql . "<br />\n");
			if ($resultado = mysqli_query($conexionBD, $sentencia_sql)){
				if (mysqli_num_rows($resultado) > 0){
					while($fila = mysqli_fetch_array($resultado)){
						$codigo = $fila["codigo_pedido"];
						$lista_codigos .= (($lista_codigos != "") ? ", ": "") . $codigo;
						$cliente = $fila["codigo_sinlib_cliente"];
						$nombre = $fila["nombre_legal_pedido"];
						$email = $fila["email_pedido"];
						$cif = $fila["cif_pedido"];
						$telefono = $fila["telefono_pedido"];
						$direccion = $fila["direccion_pedido"];
						$cod_postal = $fila["cod_postal_pedido"];
						$localidad = $fila["localidad_pedido"];
						$provincia = $fila["provincia_pedido"];
						$fecha = $fila["fecha_pedido"];
						$hora = $fila["hora_pedido"];
						$gastos = $fila["g_envio"];
						$observaciones = $fila["obs_pedido"];
						$factura = $fila["factura"];
						$descuento = $fila["descuento"];
						$envolver_regalo = $fila["envolver_regalo"];
						$tipo_envio = $fila["t_envio"];
						$datos_facturacion = $fila["datos_facturacion"];
						$comercial = $fila["comercial"];
						if ($factura == "1"){
							$observaciones = "Deseo recibir factura de mi con los datos:#" . $datos_facturacion . "#$observaciones";
						}
						if ($envolver_regalo == 1){
							$observaciones = $observaciones . "#ENVOLVER PARA REGALO";
						}
						//quitamos los saltos de línea a las observaciones
						$sustituye = array("(\r\n)", "(\n\r)", "(\n)", "(\r)");
						$observaciones = preg_replace($sustituye, ". ", $observaciones);
		
						//He añadido el tipo de envío como un campo a parte para que lo coja el programa
						$linea = "C|$codigo|$cliente|$nombre|$email|$cif|$telefono|$direccion|$cod_postal|$localidad|$provincia|$fecha|$hora|$gastos|$observaciones|$tipo_envio|$descuento|$comercial|\n";
						if ($linea != ""){
							if($fichero_datos = fopen(getRealPath()."importacion/exportacion/$nombre_fichero_sincro", "a")){
								fwrite($fichero_datos, $linea);
								fclose($fichero_datos);
							}
							$linea = "";
						}
						//echo("C|$codigo|$cliente|$nombre|$email|$cif|$telefono|$direccion|$cod_postal|$localidad|$provincia|$fecha|$hora|$gastos|$observaciones|$tipo_envio|$descuento|$comercial|\n");
						$sentencia_sql = "SELECT * FROM `ml_pedcli` WHERE (`mc_pedcli` = '$codigo')";
						echo("SENTENCIA LINEAS PEDIDO <br />\n$sentencia_sql<br />\n");
						if ($lineas = mysqli_query($conexionBD, $sentencia_sql)){
							while($fila = mysqli_fetch_array($lineas)){
								$articulo = $fila["articulo"];
								$cantidad = $fila["cantidad"];
								$pvp = $fila["pvp"];
								$dto = $fila["descuento"];
								$codigo = $fila["codigo"];
								$lote = $fila["lote"];
								//echo("L|$articulo|$cantidad|$pvp|\n");
								$linea = "L|$articulo|$cantidad|$pvp|$dto|$codigo|$lote|\n";
								if($fichero_datos = fopen(getRealPath()."importacion/exportacion/$nombre_fichero_sincro", "a")){
									fwrite($fichero_datos, $linea);
									fclose($fichero_datos);
								}
								$linea = "";
							}
						}
						$pedidos_exportados++;
					}
				}
				//$correcto = true;
			}
			//Si tenemos una lista de códigos a actualizar, los actualizamos
			if ($lista_codigos != ""){
				$sentencia_sql = "UPDATE mc_pedcli SET pendiente_sinlib = 2 WHERE codigo IN ($lista_codigos)";
				//echo("$sentencia_sql\n");
				//Hay que ejecutar este select
				mysqli_query($conexionBD, $sentencia_sql);
			}
			//Ahora vamos a coger el fichero y lo ponemos como OK para que se pueda bajar
			if (file_exists(getRealPath()."importacion/exportacion/$nombre_fichero_sincro")){
				rename(getRealPath()."importacion/exportacion/$nombre_fichero_sincro", getRealPath()."importacion/exportacion/$nombre_fichero_sincro.OK");
				chmod(getRealPath()."importacion/exportacion/$nombre_fichero_sincro.OK", 0777);
				//echo getRealPath()."importacion/exportacion/$nombre_fichero_sincro.OK";
			}
		}
		echo("Exportados $pedidos_exportados pedidos<br />\n");
	}
if(false){
	cerrar_conexion_bd();
}
?>
