st.response: [https://proxy.individual.githubcopilot.com/v1/engines/gpt-4o-copilot/completions] took 437.7453099996783 ms 2025-05-05 10:47:29.081 [info] [streamChoices] request done: headerRequestId: [42d183c3-15e8-46c2-ad17-f84cc3c38389] model deployment ID: [] 2025-05-05 10:47:29.328 [info] [fetchCompletions] request.response: [https://proxy.individual.githubcopilot.com/v1/engines/gpt-4o-copilot/completions] took 245.4198930002749 ms 2025-05-05 10:47:29.330 [info] [streamChoices] solution 0 returned. finish reason: [stop] 2025-05-05 10:47:29.334 [info] [streamChoices] request done: headerRequestId: [38d8afe7-2196-4ba2-986a-8f161f1ae102] model deployment ID: [] 2025-05-05 10:47:31.279 [info] [fetchCompletions] request.response: [https://proxy.individual.githubcopilot.com/v1/engines/gpt-4o-copilot/completions] took 334.6818889998831 ms 2025-05-05 10:47:31.282 [info] [streamChoices] solution 0 returned. finish reason: [stop] 2025-05-05 10:47:31.285 [info] [streamChoices] request done: headerRequestId: [40912ab3-d411-4cc6-8ad6-7f0336180c67] model deployment ID: [] 2025-05-05 10:47:33.377 [info] [fetchCompletions] request.response: [https://proxy.individual.githubcopilot.com/v1/engines/gpt-4o-copilot/completions] took 732.6965600000694 ms 2025-05-05 10:47:33.380 [info] [streamChoices] solution 0 returned. finish reason: [stop] 2025-05-05 10:47:33.383 [info] [streamChoices] request done: headerRequestId: [b0c31a66-056f-491e-8f1d-7e78863ef37d] model deployment ID: [] 2025-05-05 10:47:55.081 [info] [fetchCompletions] request.response: [https://proxy.individual.githubcopilot.com/v1/engines/gpt-4o-copilot/completions] took 505.345160999801 ms 2025-05-05 10:47:55.083 [info] [streamChoices] solution 0 returned. finish reason: [stop] 2025-05-05 10:47:55.087 [info] [streamChoices] request done: headerRequestId: [b13bafe8-aa6a-4a2d-9b9d-b400061be33d] model deployment ID: [] 2025-05-05 10:50:42.959 [warning] [relatedFiles] unknown language html 2025-05-05 10:50:43.632 [info] [fetchCompletions] request.response: [https://proxy.individual.githubcopilot.com/v1/engines/gpt-4o-copilot/completions] took 645.030389000196 ms 2025-05-05 10:50:43.634 [info] [streamChoices] solution 0 returned. finish reason: [stop] 2025-05-05 10:50:43.636 [info] [streamChoices] request done: headerRequestId: [b0f57763-2f4f-4623-af86-87669455e5bb] model deployment ID: [] 2025-05-05 10:50:43.637 [info] [ghostText] Filtered out solution matching next line 2025-05-05 10:50:45.368 [info] [fetchCompletions] request.response: [https://proxy.individual.githubcopilot.com/v1/engines/gpt-4o-copilot/completions] took 185.22090700035915 ms 2025-05-05 10:50:45.370 [info] [streamChoices] solution 0 returned. finish reason: [stop] 2025-05-05 10:50:45.370 [info] [streamChoices] request done: headerRequestId: [30872096-a086-485a-b0f5-ad90bac2abb0] model deployment ID: [] 2025-05-05 10:51:25.473 [info] [fetchCompletions] request.response: [https://proxy.individual.githubcopilot.com/v1/engines/gpt-4o-copilot/completions] took 464.2609739997424 ms 2025-05-05 10:51:25.474 [info] [streamChoices] solution 0 returned. finish reason: [stop] 2025-05-05 10:51:25.474 [info] [streamChoices] request done: headerRequestId: [ba72e581-ade6-49ff-b04b-a7ae2859ae36] model deployment ID: [] 2025-05-05 10:55:37.118 [info] [fetchCompletions] request.response: [https://proxy.individual.githubcopilot.com/v1/engines/gpt-4o-copilot/completions] took 492.3527250001207 ms 2025-05-05 10:55:37.120 [info] [streamChoices] solution 0 returned. finish reason: [stop] 2025-05-05 10:55:37.121 [info] [streamChoices] request done: headerRequestId: [f3335277-6732-4dff-8558-6e28f6f4e79d] model deployment ID: [] 2025-05-05 11:53:02.566 [info] [fetcher] Using Helix fetcher, Electron fetcher is not available. 2025-05-05 11:53:02.566 [info] [code-referencing] Public code references are enabled. 2025-05-05 11:53:02.729 [info] [fetcher] Using Helix fetcher, Electron fetcher is not available. 2025-05-05 11:53:03.140 [info] [fetchCompletions] request.response: [https://proxy.individual.githubcopilot.com/v1/engines/gpt-4o-copil function formatMoney(string $amount): string { $clean = preg_replace('/[^0-9.]/', '', $amount); return '$ ' . number_format((float)$clean, 2, '.', ','); } # ------------------------------------------------------------------------------------------------------------------------------------------------------------------ # MODAL PARA MOSTRAR ERRORES # ------------------------------------------------------------------------------------------------------------------------------------------------------------------ --> function showMessage(string $title, string $message): void { // Generar el HTML del modal echo << HTML; } # ------------------------------------------------------------------------------------------------------------------------------------------------------------------ # OBTENGO EL TOKEN DE BOOKS # ------------------------------------------------------------------------------------------------------------------------------------------------------------------ function GetToken(){ $sOrganiZB = ""; if (isset($_REQUEST['pOrganiZB'])) { $sOrganiZB = $_REQUEST['pOrganiZB']; } else { echo 'Por favor introduzca el ID de la Organización de Zoho Books.'; return; } #---------------------------------------------------------------- # 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 = "' . $sOrganiZB.'"'; if($result = $conn->query($sql)) { $row = $result->fetch_assoc(); } else exit('No se ejecuto la consulta'); #---------------------------------------------------------------- # RFC de la Organización #---------------------------------------------------------------- $regFeCa = $row['rfc']; #---------------------------------------------------------------- # Variables para Zoho Books #---------------------------------------------------------------- $appOwner = $row['appOwner']; $boa_RefreshToken = $row['zbooks_rtoken']; $boa_ClientId = $row['zbooksclient_id']; $boa_ClientSecret = $row['zbooksclient_secret']; $boa_RedirectUri = $row['RedirectUri']; $boa_AuthUrl = 'https://accounts.zoho.com/oauth/v2/token'; $boa_GrantType = "refresh_token"; #---------------------------------------------------------------- # Cerramos la conexión #---------------------------------------------------------------- mysqli_close($conn); #---------------------------------------------------------------- # Obtengo el Token de Books #---------------------------------------------------------------- return oauth($appOwner, 'ZBooks', $boa_RefreshToken, $boa_ClientId, $boa_ClientSecret, $boa_RedirectUri, $boa_GrantType, $boa_AuthUrl); } # ------------------------------------------------------------------------------------------------------------------------------------------------------------------ # USUARIO ACTIVO # ------------------------------------------------------------------------------------------------------------------------------------------------------------------ function getUser($zbToken){ if (isset($_REQUEST['pOrganiZB'])) { $sOrganiZB = $_REQUEST['pOrganiZB']; } else { echo "Es necesario introducir el ID de la organización en Zoho Books"; } $request_url = "https://www.zohoapis.com/books/v3/users/me?organization_id=".$sOrganiZB; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $request_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Zoho-oauthtoken ' . $zbToken)); $r = curl_exec($ch); $array = json_decode($r); $user = $array->user; curl_close ($ch); //var_dump($array->user); echo ''; echo "

Usuario activo: " . $user->name."

"; echo "

Rol activo: " . $user->user_role."

"; echo "

eMail: ".$user->email."

"; echo "

Estatus: " . $user->status."

"; } # ------------------------------------------------------------------------------------------------------------------------------------------------------------------ # BALANZA DE COMPROBACIÓN # ------------------------------------------------------------------------------------------------------------------------------------------------------------------ function getBalCom($zbToken){ $sOrganiZB = ""; if (isset($_REQUEST['pOrganiZB'])) { $sOrganiZB = $_REQUEST['pOrganiZB']; } $sAnioCat = $_POST['anio']; $sMesCat = $_POST['mes']; $sTipoEnv = $_POST['tipo']; $file_name = basename($_FILES["fileToUpload"]["name"]); $file_name = str_replace(' ', '_', $file_name); $temp_file = $_FILES["fileToUpload"]["tmp_name"]; $target_dir = "archs_csv/"; $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); $target_file = str_replace(' ', '_', $target_file); $uploadOk = 1; $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION)); if(empty($_POST['anio'])) { echo 'Por favor introduzca el Año para el proceso.'; } else if(empty($_POST['mes'])) { echo 'Por favor introduzca el Mes para el proceso.'; } else if(empty($_POST['tipo'])) { echo 'Por favor introduzca el Tipo para el proceso.'; } else if(empty($file_name)) { showMessage($title = 'Información faltante', $message = 'Por favor seleccione el archivo a procesar.'); return; } else if($sOrganiZB == "") { showMessage($title = 'Información erronea', $message = 'Por favor introduzca el ID de la Organización de Zoho Books.'); return; } else { // Check if file already exists if (file_exists($target_file)) { # showMessage($title = 'Información', $message = 'Se eliminó un archivo pre-existente con el mismo nombre.'); } // Allow certain file formats if($imageFileType != "csv" ) { showMessage($title = 'Información erronea', $message = 'El archivos debe contener el libro mayor y ser tipo CSV.'); return; } // Check if $uploadOk is set to 0 by an error if ($uploadOk == 0) { ?>message . '
'; if (curl_errno($ch)) { $error_msg = curl_error($ch); } curl_close ($ch); if (isset($error_msg)) { $j_array = array('code' => $JsonResponse->code, 'message' => "Error al procesar la balanza: " . $JsonResponse->message); $Resultado = json_encode($j_array); echo $Resultado; return; } else { /********************************************************************/ // LINKS DE DESCARGA /********************************************************************/ $linkXML = ''.$JsonResponse->data->xmlFileName.''; $linkCSV = ''.$JsonResponse->data->csvFileName.''; $linkZIP = ''.$JsonResponse->data->zipFileName.''; /********************************************************************/ // MODAL /********************************************************************/ ?> '666', 'message' => "Error en la llamada curl " . $error_msg); $Resultado = json_encode($j_array); echo $Resultado; return; } else { /********************************************************************/ // LINKS DE DESCARGA /********************************************************************/ $XML_Path = 'https://aptuslegal.app/aptusContaElec/archs_xml/'; $ZIP_Path = 'https://aptuslegal.app/aptusContaElec/archs_zip/'; $XML_fileName = $XML_Path.'AML9605085V8'.$sAnioCat.$sMesCat.'XC.xml'; $ZIP_fileName = $ZIP_Path.'AML9605085V8'.$sAnioCat.$sMesCat.'XC.zip'; $fileXmlUrl = 'Auxiliar de cuentas XML
'; $fileZipUrl = 'Auxiliar de cuentas ZIP
'; /********************************************************************/ ?> '666', 'message' => "Error en la llamada curl " . $error_msg); $Resultado = json_encode($j_array); echo $Resultado; return; } else { /********************************************************************/ // LINKS DE DESCARGA /********************************************************************/ $XML_Path = 'https://aptuslegal.app/aptusContaElec/archs_xml/'; $ZIP_Path = 'https://aptuslegal.app/aptusContaElec/archs_zip/'; $XML_fileName = $XML_Path.'AML9605085V8'.$sAnioCat.$sMesCat.'XF.xml'; $ZIP_fileName = $ZIP_Path.'AML9605085V8'.$sAnioCat.$sMesCat.'XF.zip'; $fileXmlUrl = 'Auxiliar de folios XML
'; $fileZipUrl = 'Auxiliar de folios ZIP
'; /********************************************************************/ ?> message; if (curl_errno($ch)) { $error_msg = curl_error($ch); } curl_close ($ch); if (isset($error_msg)) { $j_array = array('code' => '500', 'message' => "Error en la llamada curl: " . $error_msg); $Resultado = json_encode($j_array); //echo $Resultado; return; } else { /********************************************************************/ // LINKS DE DESCARGA /********************************************************************/ $linkXML = ''.$JsonResponse->data->xmlFileName.''; $linkZIP = ''.$JsonResponse->data->zipFileName.''; /********************************************************************/ // MODAL /********************************************************************/ ?> ', $errors); return; } $queryParams = http_build_query([ 'Anio' => $anio, 'Mes' => $mes, 'pOrganiZB' => $organiZB, 'pOrganiAnalytics' => '722699151', 'RFC' => 'AML9605085V8', 'workspace' => '2296733000000004013', 'view' => '2296733000030848002', 'appOwner' => 'arochiylindner.aptus', 'txbNumeroOrden' => $txbNumeroOrden, 'TipoSolicitud' => $TipoSolicitud ]); $url = "https://aptuslegal.app/aptusContaElec/wsPolizasAnalytics.php?$queryParams"; echo implode('
', $url); $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', )); $response = curl_exec($curl); curl_close($curl); // Decodificar la respuesta del servicio $data = json_decode($response, true); if (!$data || $data['code'] !== "200") { echo "Ocurrió un error al generar las pólizas: " . ($data['message'] ?? 'Respuesta inválida del servicio.'); return; } $xmlFileName = $data['xml_file_name']; $zipFileName = $data['zip_file_name']; $XML_file = "https://aptuslegal.app/aptusContaElec/archs_xml/$xmlFileName"; $ZIP_file = "https://aptuslegal.app/aptusContaElec/archs_zip/$zipFileName"; // Output con HTML ?>