-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);
}
}
}