-06:00", "id": "4597192000136952327", "Created_By": { "name": "German Bringas Cadena", "id": "4597192000053432501" } }, "message": "record updated", "status": "success" } ] } [fbe3c663-3807-4def-b77b-369706a6150d](2023-10-27 14:08:19) - Proceso finalizado exitosamente, URL: https://aptuslegal.app/imagenesAptusLegal/arochi/LogosArochi/MAR-119255.png [f18e2556-5375-41cb-9737-f778527d4c81](2023-10-27 14:08:33) - Proceso de subida de imagen iniciado, data: {"source":"webhook","RefAL":"MAR-118786","MarcaId":"4597192000132152241","user":"lmorales@arochilindner.com"} [f18e2556-5375-41cb-9737-f778527d4c81](2023-10-27 14:08:40) - Tokens generados: 1000.f440f005ee4d25aafc9eddd2c5c4758d.5e1645ea402c0902f18282a390706e17 [f18e2556-5375-41cb-9737-f778527d4c81](2023-10-27 14:08:40) - Intento 0 para obtener imagen de marca de CRM, respuesta: 200 [f18e2556-5375-41cb-9737-f778527d4c81](2023-10-27 14:08:40) - Imagen guardada localmente de manera exitosa [f18e2556-5375-41cb-9737-f778527d4c81](2023-10-27 14:08:41) - Intento 0 para actualizar CRM con datos de url de marca: { "data": [ { "code": "SUCCESS", "details": { "Modified_Time": "2023-10-27T13:08:40-06:00", "Modified_By": { "name": "Aptus Legal Administrator", "id": "4597192000000287001" }, "Created_Time": "2023-10-03T10:43:48-06:00", "id": "4597192000132152241", "Created_By": { "name": "Jimena Cuevas Bautista", "id": "4597192000011167144" } }, "message": "record updated", "status": "success" } ] } [f18e2556-5375-41cb-9737-f778527d4c81](2023-10-27 14:08:41) - Proceso finalizado exitosamente, URL: https://aptuslegal.app/imagenesAptusLegal/arochi/LogosArochi/MAR-118786.png [f2b43694-112b-4369-92d5-78b9992c56c2](2023-10-27 14:09:56) - Proceso de subida de imagen iniciado, data: {"source":"webhook","RefAL":"MAR-119256","MarcaId":"4597192000136952400","user":"gbringas@arochilindner.com"} [f2b43694-112b-4369-92d5-78b9992c56c2](2023-10-27 14:10:03) - Tokens generados: 1000.a8843fc9a7d795c66580662e516467ef.4b6184ab03a79f38c8d4c5d35e6b6b28 [f2b43694-112b-4369-92d5-78b9992c56c2](2023-10-27 14:10:04) - Intento 0 para obtener imagen de marca de CRM, respuesta: 200 [f2b43694-112b-4369-92d5-78b9992c56c2](2023-10-27 14:10:04) - Imagen guardada localmente de manera exitosa [f2b43694-112b-4369-92d5-78b9992c56c2](2023-10-27 14:10:05) - Intento 0 para actualizar CRM con datos de url de marca: { "data": [ { "code": "SUCCESS", "details": { "Modified_Time": "2023-10-27T13:10:05-06:00", "Modified_By": { "name": "Aptus Legal Administrator", "id": "4597192000000287001" }, "Created_Time": "2023-10-27T13:09:55-06:00", "id": "4597192000136952400", "Created_By": { "name": "German Bringas Cadena", "id": "4597192000053432501" } }, "message": "record updated", "status": "success" } ] } [f2b43694-112b-4369-92d5-78b9992c56c2](2023-10-27 14:10:05) - Proceso finalizado exitosamente, URL: https://aptuslegal.app/imagenesAptusLegal/arochi/LogosArochi/MAR-119256.png [5144f26d-98d1-485e-9b3f-8bb4ae9defe2](2023-10-27 14:10:17) - Proceso de subida de imagen iniciado, data: {"source":"webhook","RefAL":"MAR-119256","MarcaId":"4597192000136952400","user":"gbringas@arochilindner.com"} [5144f26d-98d1-485e-9b3f-8bb4ae9defe2](2023-10-27 14:10:24) - Tokens generados: 1000.a8843fc9a7d795c66580662e516467ef.4b6184ab03a79f38c8d4c5d35e6b6b28 [5144f26d-98d1-485e-9b3f-8bb4ae9defe2](2023-10-27 14:10:25) - Intento 0 para obtener imagen de marca de CRM, respuesta: 2 "302", "message" => "ERROR - [wsBalanzaComp_v13] Parametros incompletos para el Servicio Web, faltan el Anio de vigencia."); $Resultado = json_encode($j_array); echo $Resultado; return; } if($mesCata == "") { $j_array = array('code' => "303", "message" => "ERROR - [wsBalanzaComp_v13] Parametros incompletos para el Servicio Web, faltan el Mes de vigencia."); $Resultado = json_encode($j_array); echo $Resultado; return; } if($tipoEnvio == "") { $j_array = array('code' => "304", "message" => "ERROR - [wsBalanzaComp_v13] Parametros incompletos para el Servicio Web, faltan el Tipo de Envio."); $Resultado = json_encode($j_array); echo $Resultado; return; } if($csvFileName == "") { $j_array = array('code' => "305", "message" => "ERROR - [wsBalanzaComp_v13] Parametros incompletos para el Servicio Web, faltan el Nombre del Archivo CSV a procesar."); $Resultado = json_encode($j_array); echo $Resultado; return; } if($organi_id_ZB == "") { $j_array = array('code' => "306", "message" => "ERROR - [wsCatalogoCuentas_v13] Parametros incompletos para el Servicio Web, faltan el Organization ID de Books"); $Resultado = json_encode($j_array); echo $Resultado; return $Resultado; } $dirBase = realpath("../"); ### DEFINICIÓN DE CONSTANTES ################################################### $SendaCVS = "archs_csv/"; $SendaXML = "archs_xml/"; $SendaZIP = "archs_zip/"; #---------------------------------------------------------------- # Creamos la conexión a la base de datos #---------------------------------------------------------------- $conn = mysqli_connect("127.0.0.1", "aptuslegal", "#Aptus2021#", "vendorbills"); if (!$conn) { echo "Error: No se pudo conectar a MySQL." . PHP_EOL; echo "errno de depuración: " . mysqli_connect_errno() . PHP_EOL; exit; } #---------------------------------------------------------------- # Traemos los valores de conexión utilizando el organizationId #---------------------------------------------------------------- $sql = 'SELECT * FROM conndetails WHERE organization_id = ' . $organi_id_ZB; if($result = $conn->query($sql)) { $row = $result->fetch_assoc(); } else exit('No se ejecuto la consulta'); #---------------------------------------------------------------- # Cerramos la conexión #---------------------------------------------------------------- mysqli_close($conn); #---------------------------------------------------------------- # Variables para Zoho Workdrive #---------------------------------------------------------------- $wdrv_parent_id = $row['zworkdrvbalcom_id']; $woa_RefreshToken = $row['zworkdrv_rtoken']; $woa_ClientId = $row['zworkdrvclient_id']; $woa_ClientSecret = $row['zworkdrvclient_secret']; $woa_RedirectUri = $row['RedirectUri']; $woa_AuthUrl = 'https://accounts.zoho.com/oauth/v2/token'; $woa_GrantType = "refresh_token"; #---------------------------------------------------------------- # RFC de la Organización #---------------------------------------------------------------- $regFeCa = $row['rfc']; #== Creación de la variable de tipo DOM, aquí se conforma el XML a timbrar posteriormente. $xml = new DOMdocument('1.0', 'UTF-8'); $root = $xml->createElement("BCE:Balanza"); $root = $xml->appendChild($root); #== Apertura, lectura y conversión de CSV a JSON. $fileName = $SendaCVS.$csvFileName; $csvToJson = csvToJson($fileName); $arrayJson = json_decode( $csvToJson, true ); // Invertimos el orden del arreglo para los calcualos. $jsonArray = array_reverse($arrayJson, true); #== Se procesan las cuentas y se obtienen los totales por subcuentas ====== $salIniNivTres = 0.00; $debitoNivTres = 0.00; $creditNivTres = 0.00; $SalFinNivTres = 0.00; $counNivTres = 0; $salIniNivTrex = 0.00; $debitoNivTrex = 0.00; $creditNivTrex = 0.00; $SalFinNivTrex = 0.00; $salIniNivDos = 0.00; $debitoNivDos = 0.00; $creditNivDos = 0.00; $SalFinNivDos = 0.00; $counNivDos = 0; $salIniNivUno = 0.00; $debitoNivUno = 0.00; $creditNivUno = 0.00; $SalFinNivUno = 0.00; $counNivUno = 0; $arrayDetalle = Array(); foreach($arrayJson as $item => $value) { $codCue = substr($value['account_code'],0,3); if(is_numeric($codCue)) { if($value['account.CF.Codigo del SAT'] != "") { //$clave = array_search($value['account_code'], $arrayDetalle); $clave = array_search($value['account_code'], array_column($arrayDetalle, 'NumCta')); if ($clave == NULL) { $arrayDetalle[] = array( "ClaveSat"=>$value['account.CF.Codigo del SAT'], "NumCta"=>$value['account_code'], "SaldoIni"=>0.00, "Debe"=>0.00, "Haber"=>0.00, "SaldoFin"=>0.00 ); } } } } foreach($jsonArray as $item => $value) { $codCue = substr($value['account_code'],0,3); $cuePas = ""; $cueNivTre = ""; if(is_numeric($codCue)) { $AccCod = $value['account_code']; if(substr($AccCod, 4,2) != "00" && substr($AccCod, -3) != "000") { //Nivel tres, se acumula $salIniNivTres = $salIniNivTres + floatval($value['opening_balance']); $debitoNivTres = $debitoNivTres + floatval($value['debit_total']); $creditNivTres = $creditNivTres + floatval($value['credit_total']); $SalFinNivTres = $SalFinNivTres + floatval($value['closing_balance']); $counNivTres = $counNivTres + 1; $salIniNivTrex = $salIniNivTrex + floatval($value['opening_balance']); $debitoNivTrex = $debitoNivTrex + floatval($value['debit_total']); $creditNivTrex = $creditNivTrex + floatval($value['credit_total']); $SalFinNivTrex = $SalFinNivTrex + floatval($value['closing_balance']); // Actualizamos el nivel 3 $sValBus = $AccCod; $clave = array_search($sValBus, array_column($arrayDetalle, 'NumCta')); if ($clave !== NULL) { echo "Nivel Tres: ".$sValBus . " ==> ".$value['account.CF.Codigo del SAT']. " ID: ".$clave; echo "
"; $arrayDetalle[$clave]['SaldoIni'] = number_format($salIniNivTrex,2, '.', ''); $arrayDetalle[$clave]['Debe'] = number_format($debitoNivTrex,2, '.', ''); $arrayDetalle[$clave]['Haber'] = number_format($creditNivTrex,2, '.', ''); $arrayDetalle[$clave]['SaldoFin'] = number_format($SalFinNivTrex,2, '.', ''); // Inicializamos Nivel Tres $salIniNivTrex = 0.00; $debitoNivTrex = 0.00; $creditNivTrex = 0.00; $SalFinNivTrex = 0.00; } } if(substr($AccCod, 4,2) != "00" && substr($AccCod, -3) == "000") { // Nivel Dos, se acumula if($counNivTres > 0) { $salIniNivDos = $salIniNivDos + $salIniNivTres; $debitoNivDos = $debitoNivDos + $debitoNivTres; $creditNivDos = $creditNivDos + $creditNivTres; $SalFinNivDos = $SalFinNivDos + $SalFinNivTres; } else { $salIniNivDos = $salIniNivDos + floatval($value['opening_balance']); $debitoNivDos = $debitoNivDos + floatval($value['debit_total']); $creditNivDos = $creditNivDos + floatval($value['credit_total']); $SalFinNivDos = $SalFinNivDos + floatval($value['closing_balance']); $cuePas = substr($AccCod, 0,6); } $counNivDos = $counNivDos + 1; // Actualizamos el Nivel Dos $jsonArray[$item]['opening_balance'] = number_format($salIniNivDos,2, '.', ''); $jsonArray[$item]['debit_total'] = number_format($debitoNivDos,2, '.', ''); $jsonArray[$item]['credit_total'] = number_format($creditNivDos,2, '.', ''); $jsonArray[$item]['closing_balance'] = number_format($SalFinNivDos,2, '.', ''); // Actualizamos el nivel 2 $sValBus = $AccCod; $clave = array_search($sValBus, array_column($arrayDetalle, 'NumCta')); echo "Nivel Dos: ".$sValBus . " ==> ".$value['account.CF.Codigo del SAT']. " ID: ".$clave; echo "
"; if ($clave !== NULL) { $arrayDetalle[$clave]['SaldoIni'] = $arrayDetalle[$clave]['SaldoIni'] + number_format($salIniNivDos,2, '.', ''); $arrayDetalle[$clave]['Debe'] = $arrayDetalle[$clave]['Debe'] + number_format($debitoNivDos,2, '.', ''); $arrayDetalle[$clave]['Haber'] = $arrayDetalle[$clave]['Haber'] + number_format($creditNivDos,2, '.', ''); $arrayDetalle[$clave]['SaldoFin'] = $arrayDetalle[$clave]['SaldoFin'] + number_format($SalFinNivDos,2, '.', ''); } // Nivel Uno, se acumula $salIniNivUno = $salIniNivUno + $salIniNivDos; $debitoNivUno = $debitoNivUno + $debitoNivDos; $creditNivUno = $creditNivUno + $creditNivDos; $SalFinNivUno = $SalFinNivUno + $SalFinNivDos; $counNivUno = $counNivUno + 1; // Inicializamos Nivel Dos $salIniNivDos = 0.00; $debitoNivDos = 0.00; $creditNivDos = 0.00; $SalFinNivDos = 0.00; $counNivDos = 0; // Inicializamos Nivel Tres $salIniNivTres = 0.00; $debitoNivTres = 0.00; $creditNivTres = 0.00; $SalFinNivTres = 0.00; $counNivTres = 0; } if(substr($AccCod, 4,2) == "00" && substr($AccCod, -3) == "000") { if($counNivUno > 0) { $jsonArray[$item]['opening_balance'] = number_format($salIniNivUno,2, '.', ''); $jsonArray[$item]['debit_total'] = number_format($debitoNivUno,2, '.', ''); $jsonArray[$item]['credit_total'] = number_format($creditNivUno,2, '.', ''); $jsonArray[$item]['closing_balance'] = number_format($SalFinNivUno,2, '.', ''); // Actualizamos el nivel 1 $sValBus = $AccCod; $clave = array_search($sValBus, array_column($arrayDetalle, 'NumCta')); echo "Nivel Uno: ".$sValBus . " ==> ".$value['account.CF.Codigo del SAT']. " ID: ".$clave; echo "
"; if ($clave !== NULL) { $arrayDetalle[$clave]['SaldoIni'] = number_format($salIniNivUno,2, '.', ''); $arrayDetalle[$clave]['Debe'] = number_format($debitoNivUno,2, '.', ''); $arrayDetalle[$clave]['Haber'] = number_format($creditNivUno,2, '.', ''); $arrayDetalle[$clave]['SaldoFin'] = number_format($SalFinNivUno,2, '.', ''); } } // Inicializamos Nivel Dos $salIniNivDos = 0.00; $debitoNivDos = 0.00; $creditNivDos = 0.00; $SalFinNivDos = 0.00; $counNivDos = 0; // Inicializamos Nivel Tres $salIniNivTres = 0.00; $debitoNivTres = 0.00; $creditNivTres = 0.00; $SalFinNivTres = 0.00; $counNivTres = 0; // Inicializamos Nivel Uno $salIniNivUno = 0.00; $debitoNivUno = 0.00; $creditNivUno = 0.00; $SalFinNivUno = 0.00; $counNivUno = 0; // if($value['account.CF.Codigo del SAT'] != "") // { // $sValBus = substr($value['account.CF.Codigo del SAT'],0,3); // echo "Nivel Uno: ".$sValBus; // echo "
"; // $clave = array_search($sValBus, array_column($arrayDetalle, 'ClaveSat')); // echo "Clave: ".$clave; // echo "
"; // if ($clave !== NULL) // { // $arrayDetalle[$clave]['SaldoIni'] = floatval($arrayDetalle[$clave]['SaldoIni']) + floatval($value['opening_balance']); // $arrayDetalle[$clave]['Debe'] = floatval($arrayDetalle[$clave]['Debe']) + floatval($value['debit_total']); // $arrayDetalle[$clave]['Haber'] = floatval($arrayDetalle[$clave]['Debe']) + floatval($value['credit_total']); // $arrayDetalle[$clave]['SaldoFin'] = floatval($arrayDetalle[$clave]['SaldoIni']) + floatval($value['closing_balance']); // } // } } } } // foreach($jsonArray as $item => $value) // { // $codCue = substr($value['account_code'],0,3); // if(is_numeric($codCue)) // { // $AccCod = $value['account_code']; // if(substr($AccCod, 4,2) != "00" && substr($AccCod, -3) != "000") // { // //Nivel tres, se acumula // $salIniNivTres = $salIniNivTres + floatval($value['opening_balance']); // $debitoNivTres = $debitoNivTres + floatval($value['debit_total']); // $creditNivTres = $creditNivTres + floatval($value['credit_total']); // $SalFinNivTres = $SalFinNivTres + floatval($value['closing_balance']); // $counNivTres = $counNivTres + 1; // } // if(substr($AccCod, 4,2) != "00" && substr($AccCod, -3) == "000") // { // // Nivel Dos, se acumula // if($counNivTres > 0) // { // $salIniNivDos = $salIniNivDos + $salIniNivTres; // $debitoNivDos = $debitoNivDos + $debitoNivTres; // $creditNivDos = $creditNivDos + $creditNivTres; // $SalFinNivDos = $SalFinNivDos + $SalFinNivTres; // } // else // { // $salIniNivDos = $salIniNivDos + floatval($value['opening_balance']); // $debitoNivDos = $debitoNivDos + floatval($value['debit_total']); // $creditNivDos = $creditNivDos + floatval($value['credit_total']); // $SalFinNivDos = $SalFinNivDos + floatval($value['closing_balance']); // } // $counNivDos = $counNivDos + 1; // // Actualizamos el Nivel Dos // $jsonArray[$item]['opening_balance'] = number_format($salIniNivDos,2, '.', ''); // $jsonArray[$item]['debit_total'] = number_format($debitoNivDos,2, '.', ''); // $jsonArray[$item]['credit_total'] = number_format($creditNivDos,2, '.', ''); // $jsonArray[$item]['closing_balance'] = number_format($SalFinNivDos,2, '.', ''); // // Nivel Uno, se acumula // $salIniNivUno = $salIniNivUno + $salIniNivDos; // $debitoNivUno = $debitoNivUno + $debitoNivDos; // $creditNivUno = $creditNivUno + $creditNivDos; // $SalFinNivUno = $SalFinNivUno + $SalFinNivDos; // $counNivUno = $counNivUno + 1; // // Inicializamos Nivel Dos // $salIniNivDos = 0.00; // $debitoNivDos = 0.00; // $creditNivDos = 0.00; // $SalFinNivDos = 0.00; // $counNivDos = 0; // // Inicializamos Nivel Tres // $salIniNivTres = 0.00; // $debitoNivTres = 0.00; // $creditNivTres = 0.00; // $SalFinNivTres = 0.00; // $counNivTres = 0; // } // if(substr($AccCod, 4,2) == "00" && substr($AccCod, -3) == "000") // { // if($counNivUno > 0) // { // $jsonArray[$item]['opening_balance'] = number_format($salIniNivUno,2, '.', ''); // $jsonArray[$item]['debit_total'] = number_format($debitoNivUno,2, '.', ''); // $jsonArray[$item]['credit_total'] = number_format($creditNivUno,2, '.', ''); // $jsonArray[$item]['closing_balance'] = number_format($SalFinNivUno,2, '.', ''); // } // // Inicializamos Nivel Dos // $salIniNivDos = 0.00; // $debitoNivDos = 0.00; // $creditNivDos = 0.00; // $SalFinNivDos = 0.00; // $counNivDos = 0; // // Inicializamos Nivel Tres // $salIniNivTres = 0.00; // $debitoNivTres = 0.00; // $creditNivTres = 0.00; // $SalFinNivTres = 0.00; // $counNivTres = 0; // // Inicializamos Nivel Uno // $salIniNivUno = 0.00; // $debitoNivUno = 0.00; // $creditNivUno = 0.00; // $SalFinNivUno = 0.00; // $counNivUno = 0; // // if($value['account.CF.Codigo del SAT'] != "") // // { // // $sValBus = substr($value['account.CF.Codigo del SAT'],0,3); // // echo "Nivel Uno: ".$sValBus; // // echo "
"; // // $clave = array_search($sValBus, array_column($arrayDetalle, 'ClaveSat')); // // echo "Clave: ".$clave; // // echo "
"; // // if ($clave !== NULL) // // { // // $arrayDetalle[$clave]['SaldoIni'] = floatval($arrayDetalle[$clave]['SaldoIni']) + floatval($value['opening_balance']); // // $arrayDetalle[$clave]['Debe'] = floatval($arrayDetalle[$clave]['Debe']) + floatval($value['debit_total']); // // $arrayDetalle[$clave]['Haber'] = floatval($arrayDetalle[$clave]['Debe']) + floatval($value['credit_total']); // // $arrayDetalle[$clave]['SaldoFin'] = floatval($arrayDetalle[$clave]['SaldoIni']) + floatval($value['closing_balance']); // // } // // } // } // } // } // Regresamos el arrreglo al orden original // $arrayJson = array_reverse($jsonArray, true); #== Se crea e inserta el primer nodo donde se declaran los namespaces ====== cargaAttNodo($root, array("Version"=>"1.3", "RFC"=>$regFeCa, "Mes"=>$mesCata, "Anio"=>$anioCat, "TipoEnvio"=>$tipoEnvio,"xsi:schemaLocation"=>"http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/BalanzaComprobacion http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/BalanzaComprobacion/BalanzaComprobacion_1_3.xsd", "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", "xmlns:BCE"=>"http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/BalanzaComprobacion") ); #== Rutina de integración de nodos ========================================= // cargaAttNodo($root, array( // "Version"=>"1.3", // "RFC"=>$regFeCa, // "Mes"=>$mesCata, // "Anio"=>$anioCat, // "TipoEnvio"=>$tipoEnvio // ) // ); $arrayToCSV = Array(); $arrayToCSV[] = array('NumCta','SaldoIni', 'Debe', 'Haber', 'SaldoFin', 'ClaveSat'); foreach($arrayDetalle as $item => $value) { if($value['ClaveSat'] != "") { $codCue = substr($value['NumCta'],0,3); if(is_numeric($codCue)) { $cuentas = $xml->createElement("BCE:Ctas"); $cuenta = $root->appendChild($cuentas); cargaAttNodo($cuenta, array( "SaldoFin"=>$value['SaldoFin'], "Haber"=>$value['Haber'], "Debe"=>$value['Debe'], "SaldoIni"=>$value['SaldoIni'], "NumCta"=>$value['NumCta'] ) ); // Creamos el array para el archivo CSV $arrayToCSV[] = array($value['NumCta'],$value['SaldoIni'], $value['Debe'], $value['Haber'], $value['SaldoFin'], $value['ClaveSat']); } } } /* foreach($arrayJson as $item => $value) { // echo $value['account_code']; // echo "
"; // echo $value['opening_balance']; // echo "
"; // echo $value['credit_total']; // echo "
"; // echo $value['debit_total']; // echo "
"; // echo $value['closing_balance']; // echo "
"; // echo "--------------------------"; // echo "
"; // echo $value['account.CF.Codigo del SAT']; // echo "
"; // echo "--------------------------"; // echo "
"; if($value['account.CF.Codigo del SAT'] != "") { $codCue = substr($value['account_code'],0,3); if(is_numeric($codCue)) { $cuentas = $xml->createElement("BCE:Ctas"); $cuenta = $root->appendChild($cuentas); cargaAttNodo($cuenta, array( "NumCta"=>$value['account_code'], "SaldoIni"=>$value['opening_balance'], "Debe"=>$value['debit_total'], "Haber"=>$value['credit_total'], "SaldoFin"=>$value['closing_balance'] ) ); } } } */ #=== Se guarda el archivo .XML de la Balanza de Comprobación ======================= if($tipoEnvio == "N") { $file_name_with_full_path = '/var/www/html/aptusContaElec/archs_xml/'.$regFeCa.$anioCat.$mesCata."BN.xml"; $file_name_csv_full_path = '/var/www/html/aptusContaElec/archs_xml/'.$regFeCa.$anioCat.$mesCata."BN.csv"; } else { $file_name_with_full_path = '/var/www/html/aptusContaElec/archs_xml/'.$regFeCa.$anioCat.$mesCata."BC.xml"; $file_name_csv_full_path = '/var/www/html/aptusContaElec/archs_xml/'.$regFeCa.$anioCat.$mesCata."BC.csv"; } #=== Si existe el archivo CSV se elimina para crear el nuevo ======================= if(!file_exists($file_name_csv_full_path)){ unlink($file_name_csv_full_path); } $fp = fopen($file_name_csv_full_path, 'w'); foreach ($arrayToCSV as $fields) { fputcsv($fp, $fields); } fclose($fp); #=== Si existe el archivo XML se elimina para crear el nuevo ======================= if(!file_exists($file_name_with_full_path)){ unlink($file_name_with_full_path); } #=== Se guarda el archivo XML creado ======================= $cfdi = $xml->saveXML(); $xml->formatOutput = true; $xml->save($file_name_with_full_path); unset($xml); #=== Se dan permisos de escritura al archivo .xml. ========================= if($tipoEnvio == "N") { chmod($SendaXML.$regFeCa.$anioCat.$mesCata."BN.xml", 0777); } else { chmod($SendaXML.$regFeCa.$anioCat.$mesCata."BC.xml", 0777); } #=== Se procede a crear el archivo ZIP del Catalogo de Cuentas ========================= $zip = new ZipArchive(); if($tipoEnvio == "N") { $nombreArchivoZip = '/var/www/html/aptusContaElec/archs_zip/'.$regFeCa.$anioCat.$mesCata."BN.zip"; $nameArchZip = $regFeCa.$anioCat.$mesCata."BN.zip"; } else { $nombreArchivoZip = '/var/www/html/aptusContaElec/archs_zip/'.$regFeCa.$anioCat.$mesCata."BC.zip"; $nameArchZip = $regFeCa.$anioCat.$mesCata."BC.zip"; } #=== Si existe el archivo ZIP se elimina para crear el nuevo ======================= if(!file_exists($nombreArchivoZip)){ unlink($nombreArchivoZip); } if (!$zip->open($nombreArchivoZip, ZipArchive::CREATE | ZipArchive::OVERWRITE)) { exit("Error abriendo ZIP en $nombreArchivoZip"); } $nombre = basename($file_name_with_full_path); $zip->addFile($file_name_with_full_path, $nombre); $resultado = $zip->close(); if ($resultado) { echo "Archivo creado"; } else { echo "Error creando archivo"; exit("Error creando archivo ZIP"); } /* #---------------------------------------------------------------- # Se sube archivo ZIP a Workdrive #---------------------------------------------------------------- $woa_access_token = oauth($appOwner, 'ZWorkrdv', $woa_RefreshToken, $woa_ClientId, $woa_ClientSecret, $woa_RedirectUri, $woa_GrantType, $woa_AuthUrl); $urlWorkdrv = 'https://workdrive.zoho.com/api/v1/upload?parent_id='.$wdrv_parent_id.'&filename='.$nameArchZip.'&override-name-exist=true'; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $urlWorkdrv, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => array('content'=> new CURLFILE($nombreArchivoZip)), CURLOPT_HTTPHEADER => array('Authorization: Zoho-oauthtoken '.$woa_access_token ), ) ); $response = curl_exec($curl); curl_close($curl); */ #=== FIN DEL PROCESO ======================= if($tipoEnvio == "N") { $j_array = array('code' => "200", 'message' => "Proceso de creacion de Archivo de Balanza de Comprobacion fue exitoso", 'xml_file_name' => $regFeCa.$anioCat.$mesCata."BN.xml", 'zip_file_name' => $regFeCa.$anioCat.$mesCata."BN.zip"); } else { $j_array = array('code' => "200", 'message' => "Proceso de creacion de Archivo de Balanza de Comprobacion fue exitoso", 'xml_file_name' => $regFeCa.$anioCat.$mesCata."BC.xml", 'zip_file_name' => $regFeCa.$anioCat.$mesCata."BC.zip"); } $Resultado = json_encode($j_array); echo $Resultado; return $Resultado; ### FUNCIONES DEL MÓDULO ######################################################### # Funcion para convertir CSV a formato JSON function csvToJson($fname) { if (!($fp = fopen($fname, 'r'))) { die("No se pudo abrir el arcivo CSV..."); } $key = fgetcsv($fp,"1024",","); $json = array(); while ($row = fgetcsv($fp,"1024",",")) { $json[] = array_combine($key, $row); } fclose($fp); return json_encode($json); } # Función que integra los nodos al archivo .XML function cargaAttNodo(&$nodo, $attr){ global $xmldoc; foreach ($attr as $key => $val){ $val = preg_replace('/\s\s+/', ' ', $val); $val = trim($val); if (strlen($val)>0){ $val = utf8_encode(str_replace("|","/",$val)); $nodo->setAttribute($key,$val); } } }