diff --git a/CHANGELOG.md b/CHANGELOG.md index 109234a0..11af5aa6 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # CHANGELOG - SIIP WhatsApp Notifications Plugin +## VERSIÓN 4.3.1 - 10-03-2026 + +### 🐛 Correcciones (Bug Fixes) + +1️⃣ **Fix Notificación de Cambio de Instalador**: Corregido bug crítico en `AbstractMessageNotifierFacade.php` donde al cambiar de técnico en una tarea **"En curso"**, el **nuevo** instalador recibía el mensaje de **desasignación** (❌ "se te ha desasignado la tarea...") en lugar de un mensaje de **asignación** con los datos del cliente. + +**Causa raíz**: La bandera `$changeInstaller=true` se pasaba tanto a la notificación del técnico anterior como a la del nuevo, causando que ambos recibieran la plantilla de desasignación. El fix envía `false` al nuevo técnico para que use la plantilla de asignación normal. + ## VERSIÓN 4.3.0 - 23-02-2026 ### 🔐 Seguridad y Acceso (Login) diff --git a/README.md b/README.md index a8776203..3eca3449 100755 --- a/README.md +++ b/README.md @@ -1,12 +1,16 @@ # SIIP - WhatsApp Notifications & Integrated Payment Portal -![Version](https://img.shields.io/badge/version-4.3.0-blue.svg?style=for-the-badge) +![Version](https://img.shields.io/badge/version-4.3.1-blue.svg?style=for-the-badge) ![UCRM Compatibility](https://img.shields.io/badge/UCRM-v2.1.0%2B-green.svg?style=for-the-badge) ![Status](https://img.shields.io/badge/status-PRODUCTION-success.svg?style=for-the-badge) ![Author](https://img.shields.io/badge/author-SIIP_INTERNET-orange.svg?style=for-the-badge) Este plugin es una solución integral que transforma tu UCRM en un **Portal Administrativo de Última Generación**. No solo automatiza la comunicación por WhatsApp, sino que integra un Dashboard completo para la gestión de pagos online (Stripe/OXXO), visualización de comprobantes y coordinación de equipos técnicos. +## 🐛 Hotfix v4.3.1 (Installer Notification Fix) + +- **🔧 Fix Cambio de Instalador**: Corregido bug donde el nuevo técnico recibía mensaje de desasignación en vez de asignación al cambiar instalador en una tarea "En curso". + ## 🔐 Novedades v4.3.0 (Security & Premium UI) - **🛡️ Sistema de Acceso Seguro**: Implementada validación híbrida (Server + Client). El plugin ahora protege las URLs públicas mediante una pantalla de inicio de sesión que requiere credenciales de Administrador de UCRM o autenticación 2FA. diff --git a/data/plugin.log b/data/plugin.log index 7837d5ce..e94be73a 100755 --- a/data/plugin.log +++ b/data/plugin.log @@ -14695,3 +14695,1259 @@ contac vacio [2026-03-09 16:00:06.174216] [debug] Aprobación de Factura [2026-03-09 16:52:56.317905] [info] NMS Login OK for user: danielhumberto +[2026-03-09 21:35:50.875072] [notice] Logging level set to:debug +[2026-03-09 21:35:50.875224] [debug] Payload recibido: {"uuid":"manual-trigger","changeType":"insert","entity":"payment","entityId":988,"eventName":"payment.add","clientData":{"id":2,"userIdent":null,"previousIsp":null,"isLead":false,"clientType":1,"companyName":null,"companyRegistrationNumber":null,"companyTaxId":null,"companyWebsite":null,"street1":"Chiapas 31","street2":null,"city":"Dolores Hidalgo Cuna de la Independencia Nacional","countryId":173,"stateId":null,"zipCode":"37800","fullAddress":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800","invoiceStreet1":null,"invoiceStreet2":null,"invoiceCity":null,"invoiceStateId":null,"invoiceCountryId":null,"invoiceZipCode":null,"invoiceAddressSameAsContact":true,"note":"Cliente especial, el m\u00e1s chido del siip internet 2026 yeah xD hola dfg","sendInvoiceByPost":null,"invoiceMaturityDays":null,"stopServiceDue":null,"stopServiceDueDays":null,"organizationId":1,"tax1Id":null,"tax2Id":null,"tax3Id":null,"registrationDate":"2024-01-25T00:00:00-0600","leadConvertedAt":null,"companyContactFirstName":null,"companyContactLastName":null,"isActive":true,"firstName":"Daniel Humberto","lastName":"Soto Villegas","username":"danydhsv","contacts":[{"id":2,"clientId":2,"email":"ciber.dhsv@gmail.com","phone":"5214181878106","name":null,"isBilling":false,"isContact":true,"types":[{"id":2,"name":"General"},{"id":1000,"name":"WhatsApp"}]},{"id":170,"clientId":2,"email":null,"phone":"5214181148783","name":null,"isBilling":false,"isContact":false,"types":[]}],"attributes":[{"id":113,"clientId":2,"customAttributeId":11,"name":"Clabe Interbancaria","key":"clabeInterbancaria","value":"0021804341999569810","clientZoneVisible":true},{"id":200,"clientId":2,"customAttributeId":14,"name":"Chat de CallBell","key":"chatDeCallbell","value":"https","clientZoneVisible":false},{"id":112,"clientId":2,"customAttributeId":10,"name":"Stripe Customer ID","key":"stripeCustomerId","value":"cus_PetN1dhr4rx0kX","clientZoneVisible":true},{"id":178,"clientId":2,"customAttributeId":15,"name":"Site","key":"site","value":"VENUS","clientZoneVisible":false},{"id":179,"clientId":2,"customAttributeId":16,"name":"Antena\/Sectorial","key":"antenaSectorial","value":"Sectorial de pruebas 172.16.5.134","clientZoneVisible":false},{"id":309,"clientId":2,"customAttributeId":21,"name":"RUTA DE COBRANZA","key":"rutaDeCobranza","value":"GUSANO","clientZoneVisible":true},{"id":428,"clientId":2,"customAttributeId":17,"name":"Password Antena Cliente","key":"passwordAntenaCliente","value":"Servicio 1: n#Cx89qC#r64LPR# Servicio 2: b@2zMYxSQR2BdkG9","clientZoneVisible":false}],"accountBalance":450,"accountCredit":450,"accountOutstanding":0,"currencyCode":"MXN","organizationName":"SIIP Pruebas","bankAccounts":[],"tags":[],"invitationEmailSentDate":null,"avatarColor":"#f1df43","addressGpsLat":21.1564414,"addressGpsLon":-100.9383654,"isArchived":false,"generateProformaInvoices":null,"usesProforma":false,"hasOverdueInvoice":false,"hasOutage":true,"hasSuspendedService":false,"hasServiceWithoutDevices":true,"referral":null,"hasPaymentSubscription":false,"hasAutopayCreditCard":false},"paymentData":{"id":988,"clientId":2,"methodId":"d8c1eae9-d41d-479f-aeaf-38497975d7b3","checkNumber":null,"createdDate":"2026-03-02T15:18:32-0600","amount":150,"currencyCode":"MXN","note":null,"receiptSentDate":null,"providerName":null,"providerPaymentId":null,"providerPaymentTime":null,"paymentCovers":[],"creditAmount":150,"userId":1015,"attributes":[]}} + +[2026-03-09 21:35:51.007320] [debug] Evento recibido: payment.add +[2026-03-09 21:35:51.007477] [debug] Notification encodificado en JSON:{"uuid":"manual-trigger","changeType":"insert","entity":"payment","entityId":988,"message":null,"clientId":2,"eventName":"payment.add","clientData":{"id":2,"userIdent":null,"previousIsp":null,"isLead":false,"clientType":1,"companyName":null,"companyRegistrationNumber":null,"companyTaxId":null,"companyWebsite":null,"street1":"Chiapas 31","street2":null,"city":"Dolores Hidalgo Cuna de la Independencia Nacional","countryId":173,"stateId":null,"zipCode":"37800","fullAddress":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800","invoiceStreet1":null,"invoiceStreet2":null,"invoiceCity":null,"invoiceStateId":null,"invoiceCountryId":null,"invoiceZipCode":null,"invoiceAddressSameAsContact":true,"note":"Cliente especial, el m\u00e1s chido del siip internet 2026 yeah xD hola dfg","sendInvoiceByPost":null,"invoiceMaturityDays":null,"stopServiceDue":null,"stopServiceDueDays":null,"organizationId":1,"tax1Id":null,"tax2Id":null,"tax3Id":null,"registrationDate":"2024-01-25T00:00:00-0600","leadConvertedAt":null,"companyContactFirstName":null,"companyContactLastName":null,"isActive":true,"firstName":"Daniel Humberto","lastName":"Soto Villegas","username":"danydhsv","contacts":[{"id":2,"clientId":2,"email":"ciber.dhsv@gmail.com","phone":"5214181878106","name":null,"isBilling":false,"isContact":true,"types":[{"id":2,"name":"General"},{"id":1000,"name":"WhatsApp"}]},{"id":170,"clientId":2,"email":null,"phone":"5214181148783","name":null,"isBilling":false,"isContact":false,"types":[]}],"attributes":[{"id":113,"clientId":2,"customAttributeId":11,"name":"Clabe Interbancaria","key":"clabeInterbancaria","value":"0021804341999569810","clientZoneVisible":true},{"id":200,"clientId":2,"customAttributeId":14,"name":"Chat de CallBell","key":"chatDeCallbell","value":"https","clientZoneVisible":false},{"id":112,"clientId":2,"customAttributeId":10,"name":"Stripe Customer ID","key":"stripeCustomerId","value":"cus_PetN1dhr4rx0kX","clientZoneVisible":true},{"id":178,"clientId":2,"customAttributeId":15,"name":"Site","key":"site","value":"VENUS","clientZoneVisible":false},{"id":179,"clientId":2,"customAttributeId":16,"name":"Antena\/Sectorial","key":"antenaSectorial","value":"Sectorial de pruebas 172.16.5.134","clientZoneVisible":false},{"id":309,"clientId":2,"customAttributeId":21,"name":"RUTA DE COBRANZA","key":"rutaDeCobranza","value":"GUSANO","clientZoneVisible":true},{"id":428,"clientId":2,"customAttributeId":17,"name":"Password Antena Cliente","key":"passwordAntenaCliente","value":"Servicio 1: n#Cx89qC#r64LPR# Servicio 2: b@2zMYxSQR2BdkG9","clientZoneVisible":false}],"accountBalance":450,"accountCredit":450,"accountOutstanding":0,"currencyCode":"MXN","organizationName":"SIIP Pruebas","bankAccounts":[],"tags":[],"invitationEmailSentDate":null,"avatarColor":"#f1df43","addressGpsLat":21.1564414,"addressGpsLon":-100.9383654,"isArchived":false,"generateProformaInvoices":null,"usesProforma":false,"hasOverdueInvoice":false,"hasOutage":true,"hasSuspendedService":false,"hasServiceWithoutDevices":true,"referral":null,"hasPaymentSubscription":false,"hasAutopayCreditCard":false},"serviceData":null,"invoiceData":null,"paymentData":{"id":988,"clientId":2,"methodId":"d8c1eae9-d41d-479f-aeaf-38497975d7b3","checkNumber":null,"createdDate":"2026-03-02T15:18:32-0600","amount":150,"currencyCode":"MXN","note":null,"receiptSentDate":null,"providerName":null,"providerPaymentId":null,"providerPaymentTime":null,"paymentCovers":[],"creditAmount":150,"userId":1015,"attributes":[]}} + +Eviando comprobante de pago al cliente: 2 con número: 5214181878106 + +El archivo PDF se ha descargado y guardado correctamente en: /data/ucrm/data/plugins/siip-whatsapp-notifications/src/Facade/../../comprobantes/Comprobante_Daniel_Humberto_Soto_Villegas.pdf + +El archivo PDF es válido y tiene contenido: /data/ucrm/data/plugins/siip-whatsapp-notifications/src/Facade/../../comprobantes/Comprobante_Daniel_Humberto_Soto_Villegas.pdf + +Procesando PDF con microservicio: http://pdf-cropper-service:8000/process + +Excepción en flujo Microservicio/MinIO: cURL error 6: Could not resolve host: pdf-cropper-service (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for http://pdf-cropper-service:8000/process + +[2026-03-09 21:36:38.001907] [notice] Logging level set to:debug +[2026-03-09 21:36:38.002433] [debug] Payload recibido: {"uuid":"manual-trigger","changeType":"insert","entity":"payment","entityId":950,"eventName":"payment.add","clientData":{"id":2,"userIdent":null,"previousIsp":null,"isLead":false,"clientType":1,"companyName":null,"companyRegistrationNumber":null,"companyTaxId":null,"companyWebsite":null,"street1":"Chiapas 31","street2":null,"city":"Dolores Hidalgo Cuna de la Independencia Nacional","countryId":173,"stateId":null,"zipCode":"37800","fullAddress":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800","invoiceStreet1":null,"invoiceStreet2":null,"invoiceCity":null,"invoiceStateId":null,"invoiceCountryId":null,"invoiceZipCode":null,"invoiceAddressSameAsContact":true,"note":"Cliente especial, el m\u00e1s chido del siip internet 2026 yeah xD hola dfg","sendInvoiceByPost":null,"invoiceMaturityDays":null,"stopServiceDue":null,"stopServiceDueDays":null,"organizationId":1,"tax1Id":null,"tax2Id":null,"tax3Id":null,"registrationDate":"2024-01-25T00:00:00-0600","leadConvertedAt":null,"companyContactFirstName":null,"companyContactLastName":null,"isActive":true,"firstName":"Daniel Humberto","lastName":"Soto Villegas","username":"danydhsv","contacts":[{"id":2,"clientId":2,"email":"ciber.dhsv@gmail.com","phone":"5214181878106","name":null,"isBilling":false,"isContact":true,"types":[{"id":2,"name":"General"},{"id":1000,"name":"WhatsApp"}]},{"id":170,"clientId":2,"email":null,"phone":"5214181148783","name":null,"isBilling":false,"isContact":false,"types":[]}],"attributes":[{"id":113,"clientId":2,"customAttributeId":11,"name":"Clabe Interbancaria","key":"clabeInterbancaria","value":"0021804341999569810","clientZoneVisible":true},{"id":200,"clientId":2,"customAttributeId":14,"name":"Chat de CallBell","key":"chatDeCallbell","value":"https","clientZoneVisible":false},{"id":112,"clientId":2,"customAttributeId":10,"name":"Stripe Customer ID","key":"stripeCustomerId","value":"cus_PetN1dhr4rx0kX","clientZoneVisible":true},{"id":178,"clientId":2,"customAttributeId":15,"name":"Site","key":"site","value":"VENUS","clientZoneVisible":false},{"id":179,"clientId":2,"customAttributeId":16,"name":"Antena\/Sectorial","key":"antenaSectorial","value":"Sectorial de pruebas 172.16.5.134","clientZoneVisible":false},{"id":309,"clientId":2,"customAttributeId":21,"name":"RUTA DE COBRANZA","key":"rutaDeCobranza","value":"GUSANO","clientZoneVisible":true},{"id":428,"clientId":2,"customAttributeId":17,"name":"Password Antena Cliente","key":"passwordAntenaCliente","value":"Servicio 1: n#Cx89qC#r64LPR# Servicio 2: b@2zMYxSQR2BdkG9","clientZoneVisible":false}],"accountBalance":450,"accountCredit":450,"accountOutstanding":0,"currencyCode":"MXN","organizationName":"SIIP Pruebas","bankAccounts":[],"tags":[],"invitationEmailSentDate":null,"avatarColor":"#f1df43","addressGpsLat":21.1564414,"addressGpsLon":-100.9383654,"isArchived":false,"generateProformaInvoices":null,"usesProforma":false,"hasOverdueInvoice":false,"hasOutage":true,"hasSuspendedService":false,"hasServiceWithoutDevices":true,"referral":null,"hasPaymentSubscription":false,"hasAutopayCreditCard":false},"paymentData":{"id":950,"clientId":2,"methodId":"78e84000-9b5b-44a4-8367-da43df86ce34","checkNumber":null,"createdDate":"2026-02-06T20:41:53-0600","amount":500,"currencyCode":"MXN","note":null,"receiptSentDate":null,"providerName":null,"providerPaymentId":null,"providerPaymentTime":null,"paymentCovers":[{"id":1512,"invoiceId":3095,"paymentId":950,"creditNoteId":null,"refundId":null,"amount":500}],"creditAmount":0,"userId":1015,"attributes":[]}} + +[2026-03-09 21:36:38.156130] [debug] Evento recibido: payment.add +[2026-03-09 21:36:38.156368] [debug] Notification encodificado en JSON:{"uuid":"manual-trigger","changeType":"insert","entity":"payment","entityId":950,"message":null,"clientId":2,"eventName":"payment.add","clientData":{"id":2,"userIdent":null,"previousIsp":null,"isLead":false,"clientType":1,"companyName":null,"companyRegistrationNumber":null,"companyTaxId":null,"companyWebsite":null,"street1":"Chiapas 31","street2":null,"city":"Dolores Hidalgo Cuna de la Independencia Nacional","countryId":173,"stateId":null,"zipCode":"37800","fullAddress":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800","invoiceStreet1":null,"invoiceStreet2":null,"invoiceCity":null,"invoiceStateId":null,"invoiceCountryId":null,"invoiceZipCode":null,"invoiceAddressSameAsContact":true,"note":"Cliente especial, el m\u00e1s chido del siip internet 2026 yeah xD hola dfg","sendInvoiceByPost":null,"invoiceMaturityDays":null,"stopServiceDue":null,"stopServiceDueDays":null,"organizationId":1,"tax1Id":null,"tax2Id":null,"tax3Id":null,"registrationDate":"2024-01-25T00:00:00-0600","leadConvertedAt":null,"companyContactFirstName":null,"companyContactLastName":null,"isActive":true,"firstName":"Daniel Humberto","lastName":"Soto Villegas","username":"danydhsv","contacts":[{"id":2,"clientId":2,"email":"ciber.dhsv@gmail.com","phone":"5214181878106","name":null,"isBilling":false,"isContact":true,"types":[{"id":2,"name":"General"},{"id":1000,"name":"WhatsApp"}]},{"id":170,"clientId":2,"email":null,"phone":"5214181148783","name":null,"isBilling":false,"isContact":false,"types":[]}],"attributes":[{"id":113,"clientId":2,"customAttributeId":11,"name":"Clabe Interbancaria","key":"clabeInterbancaria","value":"0021804341999569810","clientZoneVisible":true},{"id":200,"clientId":2,"customAttributeId":14,"name":"Chat de CallBell","key":"chatDeCallbell","value":"https","clientZoneVisible":false},{"id":112,"clientId":2,"customAttributeId":10,"name":"Stripe Customer ID","key":"stripeCustomerId","value":"cus_PetN1dhr4rx0kX","clientZoneVisible":true},{"id":178,"clientId":2,"customAttributeId":15,"name":"Site","key":"site","value":"VENUS","clientZoneVisible":false},{"id":179,"clientId":2,"customAttributeId":16,"name":"Antena\/Sectorial","key":"antenaSectorial","value":"Sectorial de pruebas 172.16.5.134","clientZoneVisible":false},{"id":309,"clientId":2,"customAttributeId":21,"name":"RUTA DE COBRANZA","key":"rutaDeCobranza","value":"GUSANO","clientZoneVisible":true},{"id":428,"clientId":2,"customAttributeId":17,"name":"Password Antena Cliente","key":"passwordAntenaCliente","value":"Servicio 1: n#Cx89qC#r64LPR# Servicio 2: b@2zMYxSQR2BdkG9","clientZoneVisible":false}],"accountBalance":450,"accountCredit":450,"accountOutstanding":0,"currencyCode":"MXN","organizationName":"SIIP Pruebas","bankAccounts":[],"tags":[],"invitationEmailSentDate":null,"avatarColor":"#f1df43","addressGpsLat":21.1564414,"addressGpsLon":-100.9383654,"isArchived":false,"generateProformaInvoices":null,"usesProforma":false,"hasOverdueInvoice":false,"hasOutage":true,"hasSuspendedService":false,"hasServiceWithoutDevices":true,"referral":null,"hasPaymentSubscription":false,"hasAutopayCreditCard":false},"serviceData":null,"invoiceData":null,"paymentData":{"id":950,"clientId":2,"methodId":"78e84000-9b5b-44a4-8367-da43df86ce34","checkNumber":null,"createdDate":"2026-02-06T20:41:53-0600","amount":500,"currencyCode":"MXN","note":null,"receiptSentDate":null,"providerName":null,"providerPaymentId":null,"providerPaymentTime":null,"paymentCovers":[{"id":1512,"invoiceId":3095,"paymentId":950,"creditNoteId":null,"refundId":null,"amount":500}],"creditAmount":0,"userId":1015,"attributes":[]}} + +Eviando comprobante de pago al cliente: 2 con número: 5214181878106 + +El archivo PDF se ha descargado y guardado correctamente en: /data/ucrm/data/plugins/siip-whatsapp-notifications/src/Facade/../../comprobantes/Comprobante_Daniel_Humberto_Soto_Villegas.pdf + +El archivo PDF es válido y tiene contenido: /data/ucrm/data/plugins/siip-whatsapp-notifications/src/Facade/../../comprobantes/Comprobante_Daniel_Humberto_Soto_Villegas.pdf + +Procesando PDF con microservicio: http://pdf-cropper-service:8000/process + +Excepción en flujo Microservicio/MinIO: cURL error 6: Could not resolve host: pdf-cropper-service (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for http://pdf-cropper-service:8000/process + +[2026-03-09 21:55:20.796920] [notice] Logging level set to:debug +[2026-03-09 21:55:20.797009] [debug] Payload recibido: {"uuid":"manual-trigger","changeType":"insert","entity":"payment","entityId":988,"eventName":"payment.add","clientData":{"id":2,"userIdent":null,"previousIsp":null,"isLead":false,"clientType":1,"companyName":null,"companyRegistrationNumber":null,"companyTaxId":null,"companyWebsite":null,"street1":"Chiapas 31","street2":null,"city":"Dolores Hidalgo Cuna de la Independencia Nacional","countryId":173,"stateId":null,"zipCode":"37800","fullAddress":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800","invoiceStreet1":null,"invoiceStreet2":null,"invoiceCity":null,"invoiceStateId":null,"invoiceCountryId":null,"invoiceZipCode":null,"invoiceAddressSameAsContact":true,"note":"Cliente especial, el m\u00e1s chido del siip internet 2026 yeah xD hola dfg","sendInvoiceByPost":null,"invoiceMaturityDays":null,"stopServiceDue":null,"stopServiceDueDays":null,"organizationId":1,"tax1Id":null,"tax2Id":null,"tax3Id":null,"registrationDate":"2024-01-25T00:00:00-0600","leadConvertedAt":null,"companyContactFirstName":null,"companyContactLastName":null,"isActive":true,"firstName":"Daniel Humberto","lastName":"Soto Villegas","username":"danydhsv","contacts":[{"id":2,"clientId":2,"email":"ciber.dhsv@gmail.com","phone":"5214181878106","name":null,"isBilling":false,"isContact":true,"types":[{"id":2,"name":"General"},{"id":1000,"name":"WhatsApp"}]},{"id":170,"clientId":2,"email":null,"phone":"5214181148783","name":null,"isBilling":false,"isContact":false,"types":[]}],"attributes":[{"id":113,"clientId":2,"customAttributeId":11,"name":"Clabe Interbancaria","key":"clabeInterbancaria","value":"0021804341999569810","clientZoneVisible":true},{"id":200,"clientId":2,"customAttributeId":14,"name":"Chat de CallBell","key":"chatDeCallbell","value":"https","clientZoneVisible":false},{"id":112,"clientId":2,"customAttributeId":10,"name":"Stripe Customer ID","key":"stripeCustomerId","value":"cus_PetN1dhr4rx0kX","clientZoneVisible":true},{"id":178,"clientId":2,"customAttributeId":15,"name":"Site","key":"site","value":"VENUS","clientZoneVisible":false},{"id":179,"clientId":2,"customAttributeId":16,"name":"Antena\/Sectorial","key":"antenaSectorial","value":"Sectorial de pruebas 172.16.5.134","clientZoneVisible":false},{"id":309,"clientId":2,"customAttributeId":21,"name":"RUTA DE COBRANZA","key":"rutaDeCobranza","value":"GUSANO","clientZoneVisible":true},{"id":428,"clientId":2,"customAttributeId":17,"name":"Password Antena Cliente","key":"passwordAntenaCliente","value":"Servicio 1: n#Cx89qC#r64LPR# Servicio 2: b@2zMYxSQR2BdkG9","clientZoneVisible":false}],"accountBalance":450,"accountCredit":450,"accountOutstanding":0,"currencyCode":"MXN","organizationName":"SIIP Pruebas","bankAccounts":[],"tags":[],"invitationEmailSentDate":null,"avatarColor":"#f1df43","addressGpsLat":21.1564414,"addressGpsLon":-100.9383654,"isArchived":false,"generateProformaInvoices":null,"usesProforma":false,"hasOverdueInvoice":false,"hasOutage":true,"hasSuspendedService":false,"hasServiceWithoutDevices":true,"referral":null,"hasPaymentSubscription":false,"hasAutopayCreditCard":false},"paymentData":{"id":988,"clientId":2,"methodId":"d8c1eae9-d41d-479f-aeaf-38497975d7b3","checkNumber":null,"createdDate":"2026-03-02T15:18:32-0600","amount":150,"currencyCode":"MXN","note":null,"receiptSentDate":null,"providerName":null,"providerPaymentId":null,"providerPaymentTime":null,"paymentCovers":[],"creditAmount":150,"userId":1015,"attributes":[]}} + +[2026-03-09 21:55:20.935966] [debug] Evento recibido: payment.add +[2026-03-09 21:55:20.936115] [debug] Notification encodificado en JSON:{"uuid":"manual-trigger","changeType":"insert","entity":"payment","entityId":988,"message":null,"clientId":2,"eventName":"payment.add","clientData":{"id":2,"userIdent":null,"previousIsp":null,"isLead":false,"clientType":1,"companyName":null,"companyRegistrationNumber":null,"companyTaxId":null,"companyWebsite":null,"street1":"Chiapas 31","street2":null,"city":"Dolores Hidalgo Cuna de la Independencia Nacional","countryId":173,"stateId":null,"zipCode":"37800","fullAddress":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800","invoiceStreet1":null,"invoiceStreet2":null,"invoiceCity":null,"invoiceStateId":null,"invoiceCountryId":null,"invoiceZipCode":null,"invoiceAddressSameAsContact":true,"note":"Cliente especial, el m\u00e1s chido del siip internet 2026 yeah xD hola dfg","sendInvoiceByPost":null,"invoiceMaturityDays":null,"stopServiceDue":null,"stopServiceDueDays":null,"organizationId":1,"tax1Id":null,"tax2Id":null,"tax3Id":null,"registrationDate":"2024-01-25T00:00:00-0600","leadConvertedAt":null,"companyContactFirstName":null,"companyContactLastName":null,"isActive":true,"firstName":"Daniel Humberto","lastName":"Soto Villegas","username":"danydhsv","contacts":[{"id":2,"clientId":2,"email":"ciber.dhsv@gmail.com","phone":"5214181878106","name":null,"isBilling":false,"isContact":true,"types":[{"id":2,"name":"General"},{"id":1000,"name":"WhatsApp"}]},{"id":170,"clientId":2,"email":null,"phone":"5214181148783","name":null,"isBilling":false,"isContact":false,"types":[]}],"attributes":[{"id":113,"clientId":2,"customAttributeId":11,"name":"Clabe Interbancaria","key":"clabeInterbancaria","value":"0021804341999569810","clientZoneVisible":true},{"id":200,"clientId":2,"customAttributeId":14,"name":"Chat de CallBell","key":"chatDeCallbell","value":"https","clientZoneVisible":false},{"id":112,"clientId":2,"customAttributeId":10,"name":"Stripe Customer ID","key":"stripeCustomerId","value":"cus_PetN1dhr4rx0kX","clientZoneVisible":true},{"id":178,"clientId":2,"customAttributeId":15,"name":"Site","key":"site","value":"VENUS","clientZoneVisible":false},{"id":179,"clientId":2,"customAttributeId":16,"name":"Antena\/Sectorial","key":"antenaSectorial","value":"Sectorial de pruebas 172.16.5.134","clientZoneVisible":false},{"id":309,"clientId":2,"customAttributeId":21,"name":"RUTA DE COBRANZA","key":"rutaDeCobranza","value":"GUSANO","clientZoneVisible":true},{"id":428,"clientId":2,"customAttributeId":17,"name":"Password Antena Cliente","key":"passwordAntenaCliente","value":"Servicio 1: n#Cx89qC#r64LPR# Servicio 2: b@2zMYxSQR2BdkG9","clientZoneVisible":false}],"accountBalance":450,"accountCredit":450,"accountOutstanding":0,"currencyCode":"MXN","organizationName":"SIIP Pruebas","bankAccounts":[],"tags":[],"invitationEmailSentDate":null,"avatarColor":"#f1df43","addressGpsLat":21.1564414,"addressGpsLon":-100.9383654,"isArchived":false,"generateProformaInvoices":null,"usesProforma":false,"hasOverdueInvoice":false,"hasOutage":true,"hasSuspendedService":false,"hasServiceWithoutDevices":true,"referral":null,"hasPaymentSubscription":false,"hasAutopayCreditCard":false},"serviceData":null,"invoiceData":null,"paymentData":{"id":988,"clientId":2,"methodId":"d8c1eae9-d41d-479f-aeaf-38497975d7b3","checkNumber":null,"createdDate":"2026-03-02T15:18:32-0600","amount":150,"currencyCode":"MXN","note":null,"receiptSentDate":null,"providerName":null,"providerPaymentId":null,"providerPaymentTime":null,"paymentCovers":[],"creditAmount":150,"userId":1015,"attributes":[]}} + +Eviando comprobante de pago al cliente: 2 con número: 5214181878106 + +El archivo PDF se ha descargado y guardado correctamente en: /data/ucrm/data/plugins/siip-whatsapp-notifications/src/Facade/../../comprobantes/Comprobante_Daniel_Humberto_Soto_Villegas.pdf + +El archivo PDF es válido y tiene contenido: /data/ucrm/data/plugins/siip-whatsapp-notifications/src/Facade/../../comprobantes/Comprobante_Daniel_Humberto_Soto_Villegas.pdf + +Procesando PDF con microservicio: http://pdf-cropper-service:8000/process + +Imagen generada por microservicio guardada en: /data/ucrm/data/plugins/siip-whatsapp-notifications/src/Facade/../../comprobantes/Comprobante_Daniel_Humberto_Soto_Villegas.jpg + +[2026-03-09 21:55:21.713196] [info] Archivo subido exitosamente a MinIO: https://aws-venus.siip.mx/vouchers-oxxo/Comprobante_Daniel_Humberto_Soto_Villegas_1773093321.jpg +Imagen subida a MinIO: https://aws-venus.siip.mx/vouchers-oxxo/Comprobante_Daniel_Humberto_Soto_Villegas_1773093321.jpg + +Archivos temporales (PDF/JPG) eliminados tras subida exitosa. + +Proceso de obtención de imagen finalizado. + +La cadena CURL que se envia es: { + "to": "5214181878106", + "from": "whatsapp", + "type": "document", + "content": { + "text": "S/M", + "url": "https://aws-venus.siip.mx/vouchers-oxxo/Comprobante_Daniel_Humberto_Soto_Villegas_1773093321.jpg" + }, + "template_values": ["Daniel Humberto Soto Villegas", "$150", "$450 a favor"], + "template_uuid": "57ead79cebd14902921477922403093b", + "optin_contact": true + } +Response del CallBell: {"message":{"uuid":"2dba1a6b3215409e9a84442fb70576ca","status":"enqueued"}} +Hay menos de 100 archivos en el directorio. No se eliminarán archivos. + +La notificación fue enviada correctamente con estado: enqueued + +Notificacion data: {"uuid":"manual-trigger","changeType":"insert","entity":"payment","entityId":988,"message":null,"clientId":2,"eventName":"payment.add","clientData":{"id":2,"userIdent":null,"previousIsp":null,"isLead":false,"clientType":1,"companyName":null,"companyRegistrationNumber":null,"companyTaxId":null,"companyWebsite":null,"street1":"Chiapas 31","street2":null,"city":"Dolores Hidalgo Cuna de la Independencia Nacional","countryId":173,"stateId":null,"zipCode":"37800","fullAddress":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800","invoiceStreet1":null,"invoiceStreet2":null,"invoiceCity":null,"invoiceStateId":null,"invoiceCountryId":null,"invoiceZipCode":null,"invoiceAddressSameAsContact":true,"note":"Cliente especial, el m\u00e1s chido del siip internet 2026 yeah xD hola dfg","sendInvoiceByPost":null,"invoiceMaturityDays":null,"stopServiceDue":null,"stopServiceDueDays":null,"organizationId":1,"tax1Id":null,"tax2Id":null,"tax3Id":null,"registrationDate":"2024-01-25T00:00:00-0600","leadConvertedAt":null,"companyContactFirstName":null,"companyContactLastName":null,"isActive":true,"firstName":"Daniel Humberto","lastName":"Soto Villegas","username":"danydhsv","contacts":[{"id":2,"clientId":2,"email":"ciber.dhsv@gmail.com","phone":"5214181878106","name":null,"isBilling":false,"isContact":true,"types":[{"id":2,"name":"General"},{"id":1000,"name":"WhatsApp"}]},{"id":170,"clientId":2,"email":null,"phone":"5214181148783","name":null,"isBilling":false,"isContact":false,"types":[]}],"attributes":[{"id":113,"clientId":2,"customAttributeId":11,"name":"Clabe Interbancaria","key":"clabeInterbancaria","value":"0021804341999569810","clientZoneVisible":true},{"id":200,"clientId":2,"customAttributeId":14,"name":"Chat de CallBell","key":"chatDeCallbell","value":"https","clientZoneVisible":false},{"id":112,"clientId":2,"customAttributeId":10,"name":"Stripe Customer ID","key":"stripeCustomerId","value":"cus_PetN1dhr4rx0kX","clientZoneVisible":true},{"id":178,"clientId":2,"customAttributeId":15,"name":"Site","key":"site","value":"VENUS","clientZoneVisible":false},{"id":179,"clientId":2,"customAttributeId":16,"name":"Antena\/Sectorial","key":"antenaSectorial","value":"Sectorial de pruebas 172.16.5.134","clientZoneVisible":false},{"id":309,"clientId":2,"customAttributeId":21,"name":"RUTA DE COBRANZA","key":"rutaDeCobranza","value":"GUSANO","clientZoneVisible":true},{"id":428,"clientId":2,"customAttributeId":17,"name":"Password Antena Cliente","key":"passwordAntenaCliente","value":"Servicio 1: n#Cx89qC#r64LPR# Servicio 2: b@2zMYxSQR2BdkG9","clientZoneVisible":false}],"accountBalance":450,"accountCredit":450,"accountOutstanding":0,"currencyCode":"MXN","organizationName":"SIIP Pruebas","bankAccounts":[],"tags":[],"invitationEmailSentDate":null,"avatarColor":"#f1df43","addressGpsLat":21.1564414,"addressGpsLon":-100.9383654,"isArchived":false,"generateProformaInvoices":null,"usesProforma":false,"hasOverdueInvoice":false,"hasOutage":true,"hasSuspendedService":false,"hasServiceWithoutDevices":true,"referral":null,"hasPaymentSubscription":false,"hasAutopayCreditCard":false},"serviceData":null,"invoiceData":null,"paymentData":{"id":988,"clientId":2,"methodId":"d8c1eae9-d41d-479f-aeaf-38497975d7b3","checkNumber":null,"createdDate":"2026-03-02T15:18:32-0600","amount":150,"currencyCode":"MXN","note":null,"receiptSentDate":null,"providerName":null,"providerPaymentId":null,"providerPaymentTime":null,"paymentCovers":[],"creditAmount":150,"userId":1015,"attributes":[]}} + +Dentro del proceso del patch: + +Datos traidos con payment api: [{"id":988,"clientId":2,"methodId":"d8c1eae9-d41d-479f-aeaf-38497975d7b3","checkNumber":null,"createdDate":"2026-03-02T15:18:32-0600","amount":150,"currencyCode":"MXN","note":null,"receiptSentDate":null,"providerName":null,"providerPaymentId":null,"providerPaymentTime":null,"paymentCovers":[],"creditAmount":150,"userId":1015,"attributes":[]}] + +Nombre del cliente que se va a actualizar: Daniel Humberto Soto Villegas + +UUID: 74cc2bb45eb8409f92cd5dba99200d26 + +JSON con los datos a actualizar: {"name":"Daniel Humberto Soto Villegas","custom_fields":{"Site":"VENUS","Estado":"\ud83d\udfe2 Activo ","URL":"\ud83c\udf10 https:\/\/sistema.siip.mx\/crm\/client\/2","Nombre":"\ud83d\udc64 Daniel Humberto Soto Villegas","Cliente":2,"Fecha Ultima Actualizacion":"\ud83d\udcc6\ud83d\udd04\ufe0f 09\/03\/2026 15:55","Saldo Actual":"\ud83d\udcb2450 a favor","Monto Ultimo Pago":"\ud83d\udcb2 150","Clabe Interbancaria":null,"Fecha Ultimo Pago":"\ud83d\udcc6\ud83d\udcb8 02\/03\/2026 15:18 con Personalizado \ud83d\udcdd\ud83d\udcb8","Antena\/Sectorial":"Sectorial de pruebas 172.16.5.134","Domicilio":"\ud83d\udccd Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800","Resumen":"{\"Cliente\": \"2\",\"Nombre\": \"Daniel Humberto Soto Villegas\",\"URL\": \"https:\/\/sistema.siip.mx\/crm\/client\/2\",\"Saldo Actual\": \"\ud83d\udcb2450 a favor\",\"Monto Ultimo Pago\": \"$ 150\",\"Estado\": \"Activo\",\"Fecha Ultimo Pago\": \" 02\/03\/2026 15:18 con Personalizado \ud83d\udcdd\ud83d\udcb8\",\"Fecha Ultima Actualizacion\": \"09\/03\/2026 15:55\",\"Clabe Interbancaria\": \"\",\"Site\": \"VENUS\",\"Antena\/Sectorial\": \"Sectorial de pruebas 172.16.5.134\",\"Password Antena\": {\"Servicio 1\":\"n#Cx89qC#r64LPR#\",\"Servicio 2\":\"b@2zMYxSQR2BdkG9\"}}","password-antena":"{\"Servicio 1\":\"n#Cx89qC#r64LPR#\",\"Servicio 2\":\"b@2zMYxSQR2BdkG9\"}"}} + +DEBUG COMPARACIÓN - CallBell Saldo Actual: '💲0 está al corriente' + +DEBUG COMPARACIÓN - UCRM Saldo Actual: '💲450 a favor' + +DEBUG COMPARACIÓN - CallBell Estado: '🟢 Activo ' + +DEBUG COMPARACIÓN - UCRM Estado: '🟢 Activo ' + +EJECUTANDO PATCH - Se detectaron cambios + +Response Patch CallBell: {"contact":{"uuid":"74cc2bb45eb8409f92cd5dba99200d26","name":"Daniel Humberto Soto Villegas","phoneNumber":"5214181878106","avatarUrl":null,"createdAt":"2024-01-08T17:04:13Z","closedAt":null,"source":"whatsapp","funnelId":null,"href":"https://dash.callbell.eu/contacts/74cc2bb45eb8409f92cd5dba99200d26","conversationHref":"https://dash.callbell.eu/chat/53c8229c428c4081b197ab136feab73b","tags":["PRUEBAS","s0LOCS","Sus","ePA"],"assignedUser":null,"customFields":{"user entry point":"inbound_message","Clabe Interbancaria":"124180650741646979","Estado":"🟢 Activo ","Antena/Sectorial":"Sectorial de pruebas 172.16.5.134","Nombre":"👤 Daniel Humberto Soto Villegas","password-antena":"{\"Servicio 1\":\"n#Cx89qC#r64LPR#\",\"Servicio 2\":\"b@2zMYxSQR2BdkG9\"}","URL":"🌐 https://sistema.siip.mx/crm/client/2","Site":"VENUS","Monto Ultimo Pago":"💲 150","Saldo Actual":"💲450 a favor","Fecha Ultima Actualizacion":"📆🔄️ 09/03/2026 15:55","user name":"Daniel Humberto","Resumen":"{\"Cliente\": \"2\",\"Nombre\": \"Daniel Humberto Soto Villegas\",\"URL\": \"https://sistema.siip.mx/crm/client/2\",\"Saldo Actual\": \"💲450 a favor\",\"Monto Ultimo Pago\": \"$ 150\",\"Estado\": \"Activo\",\"Fecha Ultimo Pago\": \" 02/03/2026 15:18 con Personalizado 📝💸\",\"Fecha Ultima Actualizacion\": \"09/03/2026 15:55\",\"Clabe Interbancaria\": \"\",\"Site\": \"VENUS\",\"Antena/Sectorial\": \"Sectorial de pruebas 172.16.5.134\",\"Password Antena\": {\"Servicio 1\":\"n#Cx89qC#r64LPR#\",\"Servicio 2\":\"b@2zMYxSQR2BdkG9\"}}","Fecha Ultimo Pago":"📆💸 02/03/2026 15:18 con Personalizado 📝💸","Domicilio":"📍 Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800","Cliente":"2"},"team":{"uuid":"3ce05a6952914ba6a44e1b066b22e4d8","name":"OXXOSEG1","default":false,"members":4,"createdAt":"2024-12-13T17:37:39Z"},"channel":{"uuid":"dbaa248932634e7ea4346a320960c24a","title":null,"discardedAt":null,"type":"whatsapp","main":true},"blockedAt":null}} + +[2026-03-10 6:10:10.267028] [notice] Logging level set to:debug +[2026-03-10 6:10:10.267857] [debug] Payload recibido: { +"type": "oxxo.request", +"amount": "180", +"client_id": 3201 +} + +[2026-03-10 6:10:10.267915] [info] No UUID found in the webhook data +[2026-03-10 6:10:10.267962] [info] Evento de solicitud de referencia de OXXO recibido (Async Flow) +[2026-03-10 6:10:10.376132] [error] Error generando referencia Stripe: {"hasError":true,"data":{"oxxo_reference":"","url":"","error":"errorGetClient","failDescription":"Error obteniendo cliente","clientID":3201,"clientFullName":"","amount":"180","voucher_image_url":""}} +[2026-03-10 6:10:18.522345] [notice] Logging level set to:debug +[2026-03-10 6:10:18.522424] [debug] Payload recibido: { +"type": "oxxo.request", +"amount": "180", +"client_id": 2 +} + +[2026-03-10 6:10:18.522444] [info] No UUID found in the webhook data +[2026-03-10 6:10:18.522454] [info] Evento de solicitud de referencia de OXXO recibido (Async Flow) +[2026-03-10 6:10:19.944726] [notice] Logging level set to:debug +[2026-03-10 6:10:19.944876] [debug] Payload recibido: { + "id": "evt_3T9JUlEFY1WEUtgR1G6Lx5DA", + "object": "event", + "api_version": "2023-10-16", + "created": 1773123019, + "data": { + "object": { + "id": "pi_3T9JUlEFY1WEUtgR1h2mfKwK", + "object": "payment_intent", + "amount": 18000, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "client_secret": "pi_3T9JUlEFY1WEUtgR1h2mfKwK_secret_8bB0zSajBWpDKMuU099xWUSe3", + "confirmation_method": "automatic", + "created": 1773123019, + "currency": "mxn", + "customer": "cus_PetN1dhr4rx0kX", + "customer_account": null, + "description": null, + "excluded_payment_method_types": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": { + "signedInAdminId": "1180", + "createdBy": "UCRM", + "ucrm_client_id": "2", + "clientId": "2", + "paymentType": "card.one_time", + "tipoPago": "OXXO" + }, + "next_action": null, + "on_behalf_of": null, + "payment_method": null, + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + }, + "customer_balance": { + "funding_type": null + }, + "oxxo": { + "expires_after_days": 3 + } + }, + "payment_method_types": [ + "customer_balance", + "card", + "oxxo" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "livemode": false, + "pending_webhooks": 2, + "request": { + "id": "req_npxiMBfVdpKFZk", + "idempotency_key": "ec2190d6-0e05-473f-bf0f-753a696e88bd" + }, + "type": "payment_intent.created" +} + +[2026-03-10 6:10:19.944947] [info] No UUID found in the webhook data +[2026-03-10 6:10:20.184777] [info] Iniciando generación background para orden #81 +[2026-03-10 6:10:20.731825] [notice] Logging level set to:debug +[2026-03-10 6:10:20.731955] [debug] Payload recibido: { + "id": "evt_3T9JUlEFY1WEUtgR19ordcKB", + "object": "event", + "api_version": "2023-10-16", + "created": 1773123019, + "data": { + "object": { + "id": "pi_3T9JUlEFY1WEUtgR1h2mfKwK", + "object": "payment_intent", + "amount": 18000, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "client_secret": "pi_3T9JUlEFY1WEUtgR1h2mfKwK_secret_8bB0zSajBWpDKMuU099xWUSe3", + "confirmation_method": "automatic", + "created": 1773123019, + "currency": "mxn", + "customer": "cus_PetN1dhr4rx0kX", + "customer_account": null, + "description": null, + "excluded_payment_method_types": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": { + "signedInAdminId": "1180", + "createdBy": "UCRM", + "ucrm_client_id": "2", + "clientId": "2", + "paymentType": "card.one_time", + "tipoPago": "OXXO" + }, + "next_action": { + "oxxo_display_details": { + "expires_after": 1773467999, + "hosted_voucher_url": "https://payments.stripe.com/oxxo/voucher/test_YWNjdF8xT2tHMFJFRlkxV0VVdGdSLF9VN1liV1NFSEw0Tm9vbzRhN2JGb2pSYVJsV1R2bVlB0100kwHKlEZ4", + "number": "12345678901234657890123456789012" + }, + "type": "oxxo_display_details" + }, + "on_behalf_of": null, + "payment_method": "pm_1T9JUlEFY1WEUtgRmzwqM1WH", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + }, + "customer_balance": { + "funding_type": null + }, + "oxxo": { + "expires_after_days": 3 + } + }, + "payment_method_types": [ + "customer_balance", + "card", + "oxxo" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_action", + "transfer_data": null, + "transfer_group": null + } + }, + "livemode": false, + "pending_webhooks": 2, + "request": { + "id": "req_SnLIgi0eA2xGIu", + "idempotency_key": "1b966739-3d2d-4042-939f-9512ecd47992" + }, + "type": "payment_intent.requires_action" +} + +[2026-03-10 6:10:20.732054] [info] No UUID found in the webhook data +[2026-03-10 6:10:23.438394] [info] Archivo subido exitosamente a MinIO: https://aws-venus.siip.mx/vouchers-oxxo/voucher_Daniel_Humberto_Soto_Villegas_1773123021.jpeg +[2026-03-10 6:10:23.444749] [info] Generación background finalizada para orden #81 +[2026-03-10 6:10:52.828963] [notice] Logging level set to:debug +[2026-03-10 6:10:52.829180] [debug] Payload recibido: { +"type": "oxxo.retrieve", +"order_id": 81 +} + +[2026-03-10 6:10:52.829253] [info] No UUID found in the webhook data +[2026-03-10 6:10:52.829335] [info] Evento de recuperación de orden OXXO recibido +[2026-03-10 6:10:52.851274] [debug] Estado recuperado para Orden #81: {"id":81,"client_id":2,"amount":"180.00","stripe_url":"https:\/\/payments.stripe.com\/oxxo\/voucher\/test_YWNjdF8xT2tHMFJFRlkxV0VVdGdSLF9VN1liV1NFSEw0Tm9vbzRhN2JGb2pSYVJsV1R2bVlB0100kwHKlEZ4","status":"completed","voucher_filename":"voucher_Daniel_Humberto_Soto_Villegas_1773123021.jpeg","voucher_image_url":"https:\/\/aws-venus.siip.mx\/vouchers-oxxo\/voucher_Daniel_Humberto_Soto_Villegas_1773123021.jpeg","oxxo_reference":"12345678901234657890123456789012","client_full_name":"Daniel Humberto Soto Villegas","created_at":"2026-03-10T06:10:20.150Z","updated_at":"2026-03-10T06:10:23.334Z"} +[2026-03-10 6:13:23.298280] [notice] Logging level set to:debug +[2026-03-10 6:13:23.298413] [debug] Payload recibido: { + "id": "evt_3T9JUlEFY1WEUtgR1hRbrWAG", + "object": "event", + "api_version": "2023-10-16", + "created": 1773123202, + "data": { + "object": { + "id": "pi_3T9JUlEFY1WEUtgR1h2mfKwK", + "object": "payment_intent", + "amount": 18000, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 18000, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "client_secret": "pi_3T9JUlEFY1WEUtgR1h2mfKwK_secret_8bB0zSajBWpDKMuU099xWUSe3", + "confirmation_method": "automatic", + "created": 1773123019, + "currency": "mxn", + "customer": "cus_PetN1dhr4rx0kX", + "customer_account": null, + "description": null, + "excluded_payment_method_types": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "py_3T9JUlEFY1WEUtgR1UjaBuzq", + "livemode": false, + "metadata": { + "signedInAdminId": "1180", + "createdBy": "UCRM", + "ucrm_client_id": "2", + "clientId": "2", + "paymentType": "card.one_time", + "tipoPago": "OXXO" + }, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1T9JUlEFY1WEUtgRmzwqM1WH", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + }, + "customer_balance": { + "funding_type": null + }, + "oxxo": { + "expires_after_days": 3 + } + }, + "payment_method_types": [ + "customer_balance", + "card", + "oxxo" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "livemode": false, + "pending_webhooks": 2, + "request": { + "id": null, + "idempotency_key": null + }, + "type": "payment_intent.succeeded" +} + +[2026-03-10 6:13:23.298505] [info] No UUID found in the webhook data +[2026-03-10 6:13:23.298532] [info] Evento de pago exitoso (Stripe PI) recibido. +[2026-03-10 6:13:23.360240] [notice] Logging level set to:debug +[2026-03-10 6:13:23.360726] [debug] Payload recibido: { + "id": "evt_3T9JUlEFY1WEUtgR1JcM0DuQ", + "object": "event", + "api_version": "2023-10-16", + "created": 1773123203, + "data": { + "object": { + "id": "py_3T9JUlEFY1WEUtgR1UjaBuzq", + "object": "charge", + "amount": 18000, + "amount_captured": 18000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_3T9JUlEFY1WEUtgR1nmADaNF", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": "ciber.dhsv@gmail.com", + "name": "Daniel Humberto Soto Villegas", + "phone": null, + "tax_id": null + }, + "calculated_statement_descriptor": null, + "captured": true, + "created": 1773123202, + "currency": "mxn", + "customer": "cus_PetN1dhr4rx0kX", + "description": null, + "destination": null, + "dispute": null, + "disputed": false, + "failure_balance_transaction": null, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "invoice": null, + "livemode": false, + "metadata": { + "signedInAdminId": "1180", + "createdBy": "UCRM", + "ucrm_client_id": "2", + "clientId": "2", + "paymentType": "card.one_time", + "tipoPago": "OXXO" + }, + "on_behalf_of": null, + "order": null, + "outcome": { + "advice_code": null, + "network_advice_code": null, + "network_decline_code": null, + "network_status": "approved_by_network", + "reason": null, + "risk_level": "not_assessed", + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_3T9JUlEFY1WEUtgR1h2mfKwK", + "payment_method": "pm_1T9JUlEFY1WEUtgRmzwqM1WH", + "payment_method_details": { + "oxxo": { + "number": "12345678901234657890123456789012" + }, + "type": "oxxo" + }, + "radar_options": {}, + "receipt_email": null, + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/payment/CAcaFwoVYWNjdF8xT2tHMFJFRlkxV0VVdGdSKIPtvs0GMgZJMUVOtck6LBaqdboOv2CsuzxRFs2bePMUAdxPSvKnWs_GepUDPhgDHke7CjY9F1fskhmK", + "refunded": false, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "livemode": false, + "pending_webhooks": 2, + "request": { + "id": null, + "idempotency_key": null + }, + "type": "charge.succeeded" +} + +[2026-03-10 6:13:23.360847] [info] No UUID found in the webhook data +[2026-03-10 6:13:24.351335] [notice] Logging level set to:debug +[2026-03-10 6:13:24.351460] [debug] Payload recibido: {"uuid":"d33143a3-fbf9-4a9d-8f14-28ddb7c0fd22","changeType":"insert","entity":"payment","entityId":"989","eventName":"payment.add","extraData":{"entity":{"id":989,"clientId":2,"methodId":"1dd098fa-5d63-4c8d-88b7-3c27ffbbb6ae","checkNumber":null,"createdDate":"2026-03-10T00:13:23-0600","amount":180,"currencyCode":"MXN","note":null,"receiptSentDate":null,"providerName":null,"providerPaymentId":null,"providerPaymentTime":null,"paymentCovers":[],"creditAmount":180,"userId":null,"attributes":[]},"entityBeforeEdit":null}} + +[2026-03-10 6:13:24.547048] [debug] Evento recibido: payment.add +[2026-03-10 6:13:24.547276] [debug] Notification encodificado en JSON:{"uuid":"d33143a3-fbf9-4a9d-8f14-28ddb7c0fd22","changeType":"insert","entity":"payment","entityId":989,"message":null,"clientId":2,"eventName":"payment.add","clientData":{"id":2,"userIdent":null,"previousIsp":null,"isLead":false,"clientType":1,"companyName":null,"companyRegistrationNumber":null,"companyTaxId":null,"companyWebsite":null,"street1":"Chiapas 31","street2":null,"city":"Dolores Hidalgo Cuna de la Independencia Nacional","countryId":173,"stateId":null,"zipCode":"37800","fullAddress":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800","invoiceStreet1":null,"invoiceStreet2":null,"invoiceCity":null,"invoiceStateId":null,"invoiceCountryId":null,"invoiceZipCode":null,"invoiceAddressSameAsContact":true,"note":"Cliente especial, el m\u00e1s chido del siip internet 2026 yeah xD hola dfg","sendInvoiceByPost":null,"invoiceMaturityDays":null,"stopServiceDue":null,"stopServiceDueDays":null,"organizationId":1,"tax1Id":null,"tax2Id":null,"tax3Id":null,"registrationDate":"2024-01-25T00:00:00-0600","leadConvertedAt":null,"companyContactFirstName":null,"companyContactLastName":null,"isActive":true,"firstName":"Daniel Humberto","lastName":"Soto Villegas","username":"danydhsv","contacts":[{"id":2,"clientId":2,"email":"ciber.dhsv@gmail.com","phone":"5214181878106","name":null,"isBilling":false,"isContact":true,"types":[{"id":2,"name":"General"},{"id":1000,"name":"WhatsApp"}]},{"id":170,"clientId":2,"email":null,"phone":"5214181148783","name":null,"isBilling":false,"isContact":false,"types":[]}],"attributes":[{"id":113,"clientId":2,"customAttributeId":11,"name":"Clabe Interbancaria","key":"clabeInterbancaria","value":"0021804341999569810","clientZoneVisible":true},{"id":200,"clientId":2,"customAttributeId":14,"name":"Chat de CallBell","key":"chatDeCallbell","value":"https","clientZoneVisible":false},{"id":112,"clientId":2,"customAttributeId":10,"name":"Stripe Customer ID","key":"stripeCustomerId","value":"cus_PetN1dhr4rx0kX","clientZoneVisible":true},{"id":178,"clientId":2,"customAttributeId":15,"name":"Site","key":"site","value":"VENUS","clientZoneVisible":false},{"id":179,"clientId":2,"customAttributeId":16,"name":"Antena\/Sectorial","key":"antenaSectorial","value":"Sectorial de pruebas 172.16.5.134","clientZoneVisible":false},{"id":309,"clientId":2,"customAttributeId":21,"name":"RUTA DE COBRANZA","key":"rutaDeCobranza","value":"GUSANO","clientZoneVisible":true},{"id":428,"clientId":2,"customAttributeId":17,"name":"Password Antena Cliente","key":"passwordAntenaCliente","value":"Servicio 1: n#Cx89qC#r64LPR# Servicio 2: b@2zMYxSQR2BdkG9","clientZoneVisible":false}],"accountBalance":630,"accountCredit":630,"accountOutstanding":0,"currencyCode":"MXN","organizationName":"SIIP Pruebas","bankAccounts":[],"tags":[],"invitationEmailSentDate":null,"avatarColor":"#f1df43","addressGpsLat":21.1564414,"addressGpsLon":-100.9383654,"isArchived":false,"generateProformaInvoices":null,"usesProforma":false,"hasOverdueInvoice":false,"hasOutage":true,"hasSuspendedService":false,"hasServiceWithoutDevices":true,"referral":null,"hasPaymentSubscription":false,"hasAutopayCreditCard":false},"serviceData":null,"invoiceData":null,"paymentData":{"id":989,"clientId":2,"methodId":"1dd098fa-5d63-4c8d-88b7-3c27ffbbb6ae","checkNumber":null,"createdDate":"2026-03-10T00:13:23-0600","amount":180,"currencyCode":"MXN","note":null,"receiptSentDate":null,"providerName":null,"providerPaymentId":null,"providerPaymentTime":null,"paymentCovers":[],"creditAmount":180,"userId":null,"attributes":[]}} + +[2026-03-10 6:13:24.547354] [info] Verificando existencia de atributo 'tipoPagoStripe' para Payment ID: 989 +[2026-03-10 6:13:24.570862] [info] Microservice found metadata: tipoPago = 'OXXO' +[2026-03-10 6:13:24.679936] [info] Payment 989 has no User ID. Assigning Stripe User ID: 1180 +[2026-03-10 6:13:24.780968] [info] Payment 989 has wrong Method ID (1dd098fa-5d63-4c8d-88b7-3c27ffbbb6ae). Patching to b01c0b35-b42c-48d9-9ad9-ea6591adfbbb via Microservice. +[2026-03-10 6:13:24.783071] [error] Failed to patch Payment Method ID via microservice: Client error: `PATCH http://172.16.5.134:4100/payments/989/method` resulted in a `404 Not Found` response: + + + + +Error + + +
Cannot PATCH /pa (truncated...)
+
+[2026-03-10 6:13:24.860765] [info] PATCHING Payment 989: Setting tipoPagoStripe = 'OXXO Pay'
+Eviando comprobante de pago al cliente: 2 con número: 5214181878106
+
+El archivo PDF se ha descargado y guardado correctamente en: /data/ucrm/data/plugins/siip-whatsapp-notifications/src/Facade/../../comprobantes/Comprobante_Daniel_Humberto_Soto_Villegas.pdf
+
+El archivo PDF es válido y tiene contenido: /data/ucrm/data/plugins/siip-whatsapp-notifications/src/Facade/../../comprobantes/Comprobante_Daniel_Humberto_Soto_Villegas.pdf
+
+Procesando PDF con microservicio: http://pdf-cropper-service:8000/process
+
+Imagen generada por microservicio guardada en: /data/ucrm/data/plugins/siip-whatsapp-notifications/src/Facade/../../comprobantes/Comprobante_Daniel_Humberto_Soto_Villegas.jpg
+
+[2026-03-10 6:13:25.860203] [info] Archivo subido exitosamente a MinIO: https://aws-venus.siip.mx/vouchers-oxxo/Comprobante_Daniel_Humberto_Soto_Villegas_1773123205.jpg
+Imagen subida a MinIO: https://aws-venus.siip.mx/vouchers-oxxo/Comprobante_Daniel_Humberto_Soto_Villegas_1773123205.jpg
+
+Archivos temporales (PDF/JPG) eliminados tras subida exitosa.
+
+Proceso de obtención de imagen finalizado.
+
+La cadena CURL que se envia es: {
+    "to": "5214181878106",
+    "from": "whatsapp",
+    "type": "document",
+    "content": {
+      "text": "S/M",
+     "url": "https://aws-venus.siip.mx/vouchers-oxxo/Comprobante_Daniel_Humberto_Soto_Villegas_1773123205.jpg"
+    },
+    "template_values": ["Daniel Humberto Soto Villegas", "$180", "$630 a favor"],
+    "template_uuid": "57ead79cebd14902921477922403093b",
+    "optin_contact": true
+  }
+Response del CallBell: {"message":{"uuid":"445f4db36af849ef8684cbe63cb28be1","status":"enqueued"}}
+Hay menos de 100 archivos en el directorio. No se eliminarán archivos.
+
+La notificación fue enviada correctamente con estado: enqueued
+
+Notificacion data: {"uuid":"d33143a3-fbf9-4a9d-8f14-28ddb7c0fd22","changeType":"insert","entity":"payment","entityId":989,"message":null,"clientId":2,"eventName":"payment.add","clientData":{"id":2,"userIdent":null,"previousIsp":null,"isLead":false,"clientType":1,"companyName":null,"companyRegistrationNumber":null,"companyTaxId":null,"companyWebsite":null,"street1":"Chiapas 31","street2":null,"city":"Dolores Hidalgo Cuna de la Independencia Nacional","countryId":173,"stateId":null,"zipCode":"37800","fullAddress":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800","invoiceStreet1":null,"invoiceStreet2":null,"invoiceCity":null,"invoiceStateId":null,"invoiceCountryId":null,"invoiceZipCode":null,"invoiceAddressSameAsContact":true,"note":"Cliente especial, el m\u00e1s chido del siip internet 2026 yeah xD hola dfg","sendInvoiceByPost":null,"invoiceMaturityDays":null,"stopServiceDue":null,"stopServiceDueDays":null,"organizationId":1,"tax1Id":null,"tax2Id":null,"tax3Id":null,"registrationDate":"2024-01-25T00:00:00-0600","leadConvertedAt":null,"companyContactFirstName":null,"companyContactLastName":null,"isActive":true,"firstName":"Daniel Humberto","lastName":"Soto Villegas","username":"danydhsv","contacts":[{"id":2,"clientId":2,"email":"ciber.dhsv@gmail.com","phone":"5214181878106","name":null,"isBilling":false,"isContact":true,"types":[{"id":2,"name":"General"},{"id":1000,"name":"WhatsApp"}]},{"id":170,"clientId":2,"email":null,"phone":"5214181148783","name":null,"isBilling":false,"isContact":false,"types":[]}],"attributes":[{"id":113,"clientId":2,"customAttributeId":11,"name":"Clabe Interbancaria","key":"clabeInterbancaria","value":"0021804341999569810","clientZoneVisible":true},{"id":200,"clientId":2,"customAttributeId":14,"name":"Chat de CallBell","key":"chatDeCallbell","value":"https","clientZoneVisible":false},{"id":112,"clientId":2,"customAttributeId":10,"name":"Stripe Customer ID","key":"stripeCustomerId","value":"cus_PetN1dhr4rx0kX","clientZoneVisible":true},{"id":178,"clientId":2,"customAttributeId":15,"name":"Site","key":"site","value":"VENUS","clientZoneVisible":false},{"id":179,"clientId":2,"customAttributeId":16,"name":"Antena\/Sectorial","key":"antenaSectorial","value":"Sectorial de pruebas 172.16.5.134","clientZoneVisible":false},{"id":309,"clientId":2,"customAttributeId":21,"name":"RUTA DE COBRANZA","key":"rutaDeCobranza","value":"GUSANO","clientZoneVisible":true},{"id":428,"clientId":2,"customAttributeId":17,"name":"Password Antena Cliente","key":"passwordAntenaCliente","value":"Servicio 1: n#Cx89qC#r64LPR# Servicio 2: b@2zMYxSQR2BdkG9","clientZoneVisible":false}],"accountBalance":630,"accountCredit":630,"accountOutstanding":0,"currencyCode":"MXN","organizationName":"SIIP Pruebas","bankAccounts":[],"tags":[],"invitationEmailSentDate":null,"avatarColor":"#f1df43","addressGpsLat":21.1564414,"addressGpsLon":-100.9383654,"isArchived":false,"generateProformaInvoices":null,"usesProforma":false,"hasOverdueInvoice":false,"hasOutage":true,"hasSuspendedService":false,"hasServiceWithoutDevices":true,"referral":null,"hasPaymentSubscription":false,"hasAutopayCreditCard":false},"serviceData":null,"invoiceData":null,"paymentData":{"id":989,"clientId":2,"methodId":"b01c0b35-b42c-48d9-9ad9-ea6591adfbbb","checkNumber":null,"createdDate":"2026-03-10T00:13:23-0600","amount":180,"currencyCode":"MXN","note":null,"receiptSentDate":null,"providerName":null,"providerPaymentId":null,"providerPaymentTime":null,"paymentCovers":[],"creditAmount":180,"userId":null,"attributes":[]}}
+
+Dentro del proceso del patch: 
+
+Datos traidos con payment api: [{"id":989,"clientId":2,"methodId":"1dd098fa-5d63-4c8d-88b7-3c27ffbbb6ae","checkNumber":null,"createdDate":"2026-03-10T00:13:23-0600","amount":180,"currencyCode":"MXN","note":null,"receiptSentDate":null,"providerName":null,"providerPaymentId":null,"providerPaymentTime":null,"paymentCovers":[],"creditAmount":180,"userId":1180,"attributes":[{"id":"832b3374-2cc6-4ff5-86f4-278041d34e3b","paymentId":989,"customAttributeId":20,"name":"Tipo Pago Stripe","key":"tipoPagoStripe","value":"OXXO Pay","clientZoneVisible":true}]}]
+
+Nombre del cliente que se va a actualizar: Daniel Humberto Soto Villegas
+
+UUID: 74cc2bb45eb8409f92cd5dba99200d26
+
+JSON con los datos a actualizar: {"name":"Daniel Humberto Soto Villegas","custom_fields":{"Site":"VENUS","Estado":"\ud83d\udfe2 Activo ","URL":"\ud83c\udf10 https:\/\/sistema.siip.mx\/crm\/client\/2","Nombre":"\ud83d\udc64 Daniel Humberto Soto Villegas","Cliente":2,"Fecha Ultima Actualizacion":"\ud83d\udcc6\ud83d\udd04\ufe0f 10\/03\/2026 00:13","Saldo Actual":"\ud83d\udcb2630 a favor","Monto Ultimo Pago":"\ud83d\udcb2 180","Clabe Interbancaria":null,"Fecha Ultimo Pago":"\ud83d\udcc6\ud83d\udcb8 10\/03\/2026 00:13 con Tarjeta de cr\u00e9dito Stripe \ud83d\udcb3","Antena\/Sectorial":"Sectorial de pruebas 172.16.5.134","Domicilio":"\ud83d\udccd Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800","Resumen":"{\"Cliente\": \"2\",\"Nombre\": \"Daniel Humberto Soto Villegas\",\"URL\": \"https:\/\/sistema.siip.mx\/crm\/client\/2\",\"Saldo Actual\": \"\ud83d\udcb2630 a favor\",\"Monto Ultimo Pago\": \"$ 180\",\"Estado\": \"Activo\",\"Fecha Ultimo Pago\": \" 10\/03\/2026 00:13 con Tarjeta de cr\u00e9dito Stripe \ud83d\udcb3\",\"Fecha Ultima Actualizacion\": \"10\/03\/2026 00:13\",\"Clabe Interbancaria\": \"\",\"Site\": \"VENUS\",\"Antena\/Sectorial\": \"Sectorial de pruebas 172.16.5.134\",\"Password Antena\": {\"Servicio 1\":\"n#Cx89qC#r64LPR#\",\"Servicio 2\":\"b@2zMYxSQR2BdkG9\"}}","password-antena":"{\"Servicio 1\":\"n#Cx89qC#r64LPR#\",\"Servicio 2\":\"b@2zMYxSQR2BdkG9\"}"}}
+
+DEBUG COMPARACIÓN - CallBell Saldo Actual: '💲450 a favor'
+
+DEBUG COMPARACIÓN - UCRM Saldo Actual: '💲630 a favor'
+
+DEBUG COMPARACIÓN - CallBell Estado: '🟢 Activo '
+
+DEBUG COMPARACIÓN - UCRM Estado: '🟢 Activo '
+
+EJECUTANDO PATCH - Se detectaron cambios
+
+Response Patch CallBell: {"contact":{"uuid":"74cc2bb45eb8409f92cd5dba99200d26","name":"Daniel Humberto Soto Villegas","phoneNumber":"5214181878106","avatarUrl":null,"createdAt":"2024-01-08T17:04:13Z","closedAt":null,"source":"whatsapp","funnelId":null,"href":"https://dash.callbell.eu/contacts/74cc2bb45eb8409f92cd5dba99200d26","conversationHref":"https://dash.callbell.eu/chat/53c8229c428c4081b197ab136feab73b","tags":["PRUEBAS","s0LOCS"],"assignedUser":null,"customFields":{"user entry point":"inbound_message","Monto Ultimo Pago":"💲 180","Clabe Interbancaria":"124180650741646979","Estado":"🟢 Activo ","Antena/Sectorial":"Sectorial de pruebas 172.16.5.134","Nombre":"👤 Daniel Humberto Soto Villegas","password-antena":"{\"Servicio 1\":\"n#Cx89qC#r64LPR#\",\"Servicio 2\":\"b@2zMYxSQR2BdkG9\"}","URL":"🌐 https://sistema.siip.mx/crm/client/2","Site":"VENUS","Saldo Actual":"💲630 a favor","Fecha Ultima Actualizacion":"📆🔄️ 10/03/2026 00:13","user name":"Daniel Humberto","Resumen":"{\"Cliente\": \"2\",\"Nombre\": \"Daniel Humberto Soto Villegas\",\"URL\": \"https://sistema.siip.mx/crm/client/2\",\"Saldo Actual\": \"💲630 a favor\",\"Monto Ultimo Pago\": \"$ 180\",\"Estado\": \"Activo\",\"Fecha Ultimo Pago\": \" 10/03/2026 00:13 con Tarjeta de crédito Stripe 💳\",\"Fecha Ultima Actualizacion\": \"10/03/2026 00:13\",\"Clabe Interbancaria\": \"\",\"Site\": \"VENUS\",\"Antena/Sectorial\": \"Sectorial de pruebas 172.16.5.134\",\"Password Antena\": {\"Servicio 1\":\"n#Cx89qC#r64LPR#\",\"Servicio 2\":\"b@2zMYxSQR2BdkG9\"}}","Fecha Ultimo Pago":"📆💸 10/03/2026 00:13 con Tarjeta de crédito Stripe 💳","Domicilio":"📍 Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800","Cliente":"2"},"team":{"uuid":"5faeed738d6a44ccacf6509762eb288d","name":"General","default":true,"members":5,"createdAt":"2023-11-07T00:37:10Z"},"channel":{"uuid":"dbaa248932634e7ea4346a320960c24a","title":null,"discardedAt":null,"type":"whatsapp","main":true},"blockedAt":null}}
+
+[2026-03-10 6:13:28.803019] [notice] Logging level set to:debug
+[2026-03-10 6:13:28.803185] [debug] Payload recibido: {"uuid":"1f83a2b4-ae45-4c40-922f-9dc927f30da3","changeType":"edit","entity":"payment","entityId":"989","eventName":"payment.edit","extraData":{"entity":{"id":989,"clientId":2,"methodId":"1dd098fa-5d63-4c8d-88b7-3c27ffbbb6ae","checkNumber":null,"createdDate":"2026-03-10T00:13:23-0600","amount":180,"currencyCode":"MXN","note":null,"receiptSentDate":null,"providerName":null,"providerPaymentId":null,"providerPaymentTime":null,"paymentCovers":[],"creditAmount":180,"userId":1180,"attributes":[{"id":"832b3374-2cc6-4ff5-86f4-278041d34e3b","paymentId":989,"customAttributeId":20,"name":"Tipo Pago Stripe","key":"tipoPagoStripe","value":"OXXO Pay","clientZoneVisible":true}]},"entityBeforeEdit":{"id":989,"clientId":2,"methodId":"1dd098fa-5d63-4c8d-88b7-3c27ffbbb6ae","checkNumber":null,"createdDate":"2026-03-10T00:13:23-0600","amount":180,"currencyCode":"MXN","note":null,"receiptSentDate":null,"providerName":null,"providerPaymentId":null,"providerPaymentTime":null,"paymentCovers":[],"creditAmount":180,"userId":null,"attributes":[]}}}
+
+[2026-03-10 6:13:28.974757] [debug] Evento recibido: payment.edit
+[2026-03-10 6:28:36.059159] [notice] Logging level set to:debug
+[2026-03-10 6:28:36.059231] [debug] Payload recibido: {
+"type": "oxxo.retrieve",
+"amount": "280",
+"client_id": 2
+}
+
+[2026-03-10 6:28:36.059250] [info] No UUID found in the webhook data
+[2026-03-10 6:28:36.059258] [info] Evento de recuperación de orden OXXO recibido
+[2026-03-10 6:28:36.059267] [warning] Solicitud de oxxo.retrieve sin order_id
+[2026-03-10 6:28:46.701709] [notice] Logging level set to:debug
+[2026-03-10 6:28:46.701859] [debug] Payload recibido: {
+"type": "oxxo.request",
+"amount": "280",
+"client_id": 2
+}
+
+[2026-03-10 6:28:46.701909] [info] No UUID found in the webhook data
+[2026-03-10 6:28:46.701951] [info] Evento de solicitud de referencia de OXXO recibido (Async Flow)
+[2026-03-10 6:28:47.864166] [notice] Logging level set to:debug
+[2026-03-10 6:28:47.864259] [debug] Payload recibido: {
+  "id": "evt_3T9JmdEFY1WEUtgR1qqoYk3T",
+  "object": "event",
+  "api_version": "2023-10-16",
+  "created": 1773124127,
+  "data": {
+    "object": {
+      "id": "pi_3T9JmdEFY1WEUtgR1LnZc49j",
+      "object": "payment_intent",
+      "amount": 28000,
+      "amount_capturable": 0,
+      "amount_details": {
+        "tip": {}
+      },
+      "amount_received": 0,
+      "application": null,
+      "application_fee_amount": null,
+      "automatic_payment_methods": null,
+      "canceled_at": null,
+      "cancellation_reason": null,
+      "capture_method": "automatic",
+      "client_secret": "pi_3T9JmdEFY1WEUtgR1LnZc49j_secret_ggaxKZMJXi8Yj5zoJHSBheEGo",
+      "confirmation_method": "automatic",
+      "created": 1773124127,
+      "currency": "mxn",
+      "customer": "cus_PetN1dhr4rx0kX",
+      "customer_account": null,
+      "description": null,
+      "excluded_payment_method_types": null,
+      "invoice": null,
+      "last_payment_error": null,
+      "latest_charge": null,
+      "livemode": false,
+      "metadata": {
+        "signedInAdminId": "1180",
+        "createdBy": "UCRM",
+        "ucrm_client_id": "2",
+        "clientId": "2",
+        "paymentType": "card.one_time",
+        "tipoPago": "OXXO"
+      },
+      "next_action": null,
+      "on_behalf_of": null,
+      "payment_method": null,
+      "payment_method_configuration_details": null,
+      "payment_method_options": {
+        "card": {
+          "installments": null,
+          "mandate_options": null,
+          "network": null,
+          "request_three_d_secure": "automatic"
+        },
+        "customer_balance": {
+          "funding_type": null
+        },
+        "oxxo": {
+          "expires_after_days": 3
+        }
+      },
+      "payment_method_types": [
+        "customer_balance",
+        "card",
+        "oxxo"
+      ],
+      "processing": null,
+      "receipt_email": null,
+      "review": null,
+      "setup_future_usage": null,
+      "shipping": null,
+      "source": null,
+      "statement_descriptor": null,
+      "statement_descriptor_suffix": null,
+      "status": "requires_payment_method",
+      "transfer_data": null,
+      "transfer_group": null
+    }
+  },
+  "livemode": false,
+  "pending_webhooks": 2,
+  "request": {
+    "id": "req_lYT0H7BsAyQJSz",
+    "idempotency_key": "1118f10d-6e5e-40cf-bc55-0442090b55ff"
+  },
+  "type": "payment_intent.created"
+}
+
+[2026-03-10 6:28:47.864345] [info] No UUID found in the webhook data
+[2026-03-10 6:28:48.411547] [info] Iniciando generación background para orden #82
+[2026-03-10 6:28:48.663500] [notice] Logging level set to:debug
+[2026-03-10 6:28:48.663578] [debug] Payload recibido: {
+  "id": "evt_3T9JmdEFY1WEUtgR1UOEJKrT",
+  "object": "event",
+  "api_version": "2023-10-16",
+  "created": 1773124128,
+  "data": {
+    "object": {
+      "id": "pi_3T9JmdEFY1WEUtgR1LnZc49j",
+      "object": "payment_intent",
+      "amount": 28000,
+      "amount_capturable": 0,
+      "amount_details": {
+        "tip": {}
+      },
+      "amount_received": 0,
+      "application": null,
+      "application_fee_amount": null,
+      "automatic_payment_methods": null,
+      "canceled_at": null,
+      "cancellation_reason": null,
+      "capture_method": "automatic",
+      "client_secret": "pi_3T9JmdEFY1WEUtgR1LnZc49j_secret_ggaxKZMJXi8Yj5zoJHSBheEGo",
+      "confirmation_method": "automatic",
+      "created": 1773124127,
+      "currency": "mxn",
+      "customer": "cus_PetN1dhr4rx0kX",
+      "customer_account": null,
+      "description": null,
+      "excluded_payment_method_types": null,
+      "invoice": null,
+      "last_payment_error": null,
+      "latest_charge": null,
+      "livemode": false,
+      "metadata": {
+        "signedInAdminId": "1180",
+        "createdBy": "UCRM",
+        "ucrm_client_id": "2",
+        "clientId": "2",
+        "paymentType": "card.one_time",
+        "tipoPago": "OXXO"
+      },
+      "next_action": {
+        "oxxo_display_details": {
+          "expires_after": 1773467999,
+          "hosted_voucher_url": "https://payments.stripe.com/oxxo/voucher/test_YWNjdF8xT2tHMFJFRlkxV0VVdGdSLF9VN1l1dnVSM3RaODBiNTRpOXh4RTVGVGFweHRSMmlI0100DFUxEyCk",
+          "number": "12345678901234657890123456789012"
+        },
+        "type": "oxxo_display_details"
+      },
+      "on_behalf_of": null,
+      "payment_method": "pm_1T9JmdEFY1WEUtgRExO3FTLP",
+      "payment_method_configuration_details": null,
+      "payment_method_options": {
+        "card": {
+          "installments": null,
+          "mandate_options": null,
+          "network": null,
+          "request_three_d_secure": "automatic"
+        },
+        "customer_balance": {
+          "funding_type": null
+        },
+        "oxxo": {
+          "expires_after_days": 3
+        }
+      },
+      "payment_method_types": [
+        "customer_balance",
+        "card",
+        "oxxo"
+      ],
+      "processing": null,
+      "receipt_email": null,
+      "review": null,
+      "setup_future_usage": null,
+      "shipping": null,
+      "source": null,
+      "statement_descriptor": null,
+      "statement_descriptor_suffix": null,
+      "status": "requires_action",
+      "transfer_data": null,
+      "transfer_group": null
+    }
+  },
+  "livemode": false,
+  "pending_webhooks": 2,
+  "request": {
+    "id": "req_qvpKVzmPdjIbFn",
+    "idempotency_key": "760aa0ad-a3ac-4f54-ad88-c066a5e104bd"
+  },
+  "type": "payment_intent.requires_action"
+}
+
+[2026-03-10 6:28:48.663650] [info] No UUID found in the webhook data
+[2026-03-10 6:28:51.522571] [info] Archivo subido exitosamente a MinIO: https://aws-venus.siip.mx/vouchers-oxxo/voucher_Daniel_Humberto_Soto_Villegas_1773124129.jpeg
+[2026-03-10 6:28:51.525305] [info] Generación background finalizada para orden #82
+[2026-03-10 6:29:18.294611] [notice] Logging level set to:debug
+[2026-03-10 6:29:18.294703] [debug] Payload recibido: {
+"type": "oxxo.retrieve",
+"order_id": 82
+}
+
+[2026-03-10 6:29:18.294719] [info] No UUID found in the webhook data
+[2026-03-10 6:29:18.294729] [info] Evento de recuperación de orden OXXO recibido
+[2026-03-10 6:29:18.309890] [debug] Estado recuperado para Orden #82: {"id":82,"client_id":2,"amount":"280.00","stripe_url":"https:\/\/payments.stripe.com\/oxxo\/voucher\/test_YWNjdF8xT2tHMFJFRlkxV0VVdGdSLF9VN1l1dnVSM3RaODBiNTRpOXh4RTVGVGFweHRSMmlI0100DFUxEyCk","status":"completed","voucher_filename":"voucher_Daniel_Humberto_Soto_Villegas_1773124129.jpeg","voucher_image_url":"https:\/\/aws-venus.siip.mx\/vouchers-oxxo\/voucher_Daniel_Humberto_Soto_Villegas_1773124129.jpeg","oxxo_reference":"12345678901234657890123456789012","client_full_name":"Daniel Humberto Soto Villegas","created_at":"2026-03-10T06:28:48.406Z","updated_at":"2026-03-10T06:28:51.504Z"}
+[2026-03-10 6:31:49.615710] [notice] Logging level set to:debug
+[2026-03-10 6:31:49.616060] [debug] Payload recibido: {
+  "id": "evt_3T9JmdEFY1WEUtgR1Tpz0qUQ",
+  "object": "event",
+  "api_version": "2023-10-16",
+  "created": 1773124309,
+  "data": {
+    "object": {
+      "id": "pi_3T9JmdEFY1WEUtgR1LnZc49j",
+      "object": "payment_intent",
+      "amount": 28000,
+      "amount_capturable": 0,
+      "amount_details": {
+        "tip": {}
+      },
+      "amount_received": 28000,
+      "application": null,
+      "application_fee_amount": null,
+      "automatic_payment_methods": null,
+      "canceled_at": null,
+      "cancellation_reason": null,
+      "capture_method": "automatic",
+      "client_secret": "pi_3T9JmdEFY1WEUtgR1LnZc49j_secret_ggaxKZMJXi8Yj5zoJHSBheEGo",
+      "confirmation_method": "automatic",
+      "created": 1773124127,
+      "currency": "mxn",
+      "customer": "cus_PetN1dhr4rx0kX",
+      "customer_account": null,
+      "description": null,
+      "excluded_payment_method_types": null,
+      "invoice": null,
+      "last_payment_error": null,
+      "latest_charge": "py_3T9JmdEFY1WEUtgR10I1Fw7h",
+      "livemode": false,
+      "metadata": {
+        "signedInAdminId": "1180",
+        "createdBy": "UCRM",
+        "ucrm_client_id": "2",
+        "clientId": "2",
+        "paymentType": "card.one_time",
+        "tipoPago": "OXXO"
+      },
+      "next_action": null,
+      "on_behalf_of": null,
+      "payment_method": "pm_1T9JmdEFY1WEUtgRExO3FTLP",
+      "payment_method_configuration_details": null,
+      "payment_method_options": {
+        "card": {
+          "installments": null,
+          "mandate_options": null,
+          "network": null,
+          "request_three_d_secure": "automatic"
+        },
+        "customer_balance": {
+          "funding_type": null
+        },
+        "oxxo": {
+          "expires_after_days": 3
+        }
+      },
+      "payment_method_types": [
+        "customer_balance",
+        "card",
+        "oxxo"
+      ],
+      "processing": null,
+      "receipt_email": null,
+      "review": null,
+      "setup_future_usage": null,
+      "shipping": null,
+      "source": null,
+      "statement_descriptor": null,
+      "statement_descriptor_suffix": null,
+      "status": "succeeded",
+      "transfer_data": null,
+      "transfer_group": null
+    }
+  },
+  "livemode": false,
+  "pending_webhooks": 2,
+  "request": {
+    "id": null,
+    "idempotency_key": null
+  },
+  "type": "payment_intent.succeeded"
+}
+
+[2026-03-10 6:31:49.616199] [info] No UUID found in the webhook data
+[2026-03-10 6:31:49.616266] [info] Evento de pago exitoso (Stripe PI) recibido.
+[2026-03-10 6:31:49.822638] [notice] Logging level set to:debug
+[2026-03-10 6:31:49.825607] [debug] Payload recibido: {
+  "id": "evt_3T9JmdEFY1WEUtgR1XrmTFbg",
+  "object": "event",
+  "api_version": "2023-10-16",
+  "created": 1773124309,
+  "data": {
+    "object": {
+      "id": "py_3T9JmdEFY1WEUtgR10I1Fw7h",
+      "object": "charge",
+      "amount": 28000,
+      "amount_captured": 28000,
+      "amount_refunded": 0,
+      "application": null,
+      "application_fee": null,
+      "application_fee_amount": null,
+      "balance_transaction": "txn_3T9JmdEFY1WEUtgR1HDK60M4",
+      "billing_details": {
+        "address": {
+          "city": null,
+          "country": null,
+          "line1": null,
+          "line2": null,
+          "postal_code": null,
+          "state": null
+        },
+        "email": "ciber.dhsv@gmail.com",
+        "name": "Daniel Humberto Soto Villegas",
+        "phone": null,
+        "tax_id": null
+      },
+      "calculated_statement_descriptor": null,
+      "captured": true,
+      "created": 1773124308,
+      "currency": "mxn",
+      "customer": "cus_PetN1dhr4rx0kX",
+      "description": null,
+      "destination": null,
+      "dispute": null,
+      "disputed": false,
+      "failure_balance_transaction": null,
+      "failure_code": null,
+      "failure_message": null,
+      "fraud_details": {},
+      "invoice": null,
+      "livemode": false,
+      "metadata": {
+        "signedInAdminId": "1180",
+        "createdBy": "UCRM",
+        "ucrm_client_id": "2",
+        "clientId": "2",
+        "paymentType": "card.one_time",
+        "tipoPago": "OXXO"
+      },
+      "on_behalf_of": null,
+      "order": null,
+      "outcome": {
+        "advice_code": null,
+        "network_advice_code": null,
+        "network_decline_code": null,
+        "network_status": "approved_by_network",
+        "reason": null,
+        "risk_level": "not_assessed",
+        "seller_message": "Payment complete.",
+        "type": "authorized"
+      },
+      "paid": true,
+      "payment_intent": "pi_3T9JmdEFY1WEUtgR1LnZc49j",
+      "payment_method": "pm_1T9JmdEFY1WEUtgRExO3FTLP",
+      "payment_method_details": {
+        "oxxo": {
+          "number": "12345678901234657890123456789012"
+        },
+        "type": "oxxo"
+      },
+      "radar_options": {},
+      "receipt_email": null,
+      "receipt_number": null,
+      "receipt_url": "https://pay.stripe.com/receipts/payment/CAcaFwoVYWNjdF8xT2tHMFJFRlkxV0VVdGdSKNX1vs0GMgbDdDLHIMI6LBa4muzhHUO2Ee02Y1Ng0Kf-wOv1Ghpp6Wp8r0zKebSKR96PM7EqMCXBUjGD",
+      "refunded": false,
+      "review": null,
+      "shipping": null,
+      "source": null,
+      "source_transfer": null,
+      "statement_descriptor": null,
+      "statement_descriptor_suffix": null,
+      "status": "succeeded",
+      "transfer_data": null,
+      "transfer_group": null
+    }
+  },
+  "livemode": false,
+  "pending_webhooks": 2,
+  "request": {
+    "id": null,
+    "idempotency_key": null
+  },
+  "type": "charge.succeeded"
+}
+
+[2026-03-10 6:31:49.825771] [info] No UUID found in the webhook data
+[2026-03-10 6:31:50.759912] [notice] Logging level set to:debug
+[2026-03-10 6:31:50.760051] [debug] Payload recibido: {"uuid":"39cc0411-5e3f-401f-beb2-154c4f12cd9f","changeType":"insert","entity":"payment","entityId":"990","eventName":"payment.add","extraData":{"entity":{"id":990,"clientId":2,"methodId":"1dd098fa-5d63-4c8d-88b7-3c27ffbbb6ae","checkNumber":null,"createdDate":"2026-03-10T00:31:50-0600","amount":280,"currencyCode":"MXN","note":null,"receiptSentDate":null,"providerName":null,"providerPaymentId":null,"providerPaymentTime":null,"paymentCovers":[],"creditAmount":280,"userId":null,"attributes":[]},"entityBeforeEdit":null}}
+
+[2026-03-10 6:31:50.930363] [debug] Evento recibido: payment.add
+[2026-03-10 6:31:50.930624] [debug] Notification encodificado en JSON:{"uuid":"39cc0411-5e3f-401f-beb2-154c4f12cd9f","changeType":"insert","entity":"payment","entityId":990,"message":null,"clientId":2,"eventName":"payment.add","clientData":{"id":2,"userIdent":null,"previousIsp":null,"isLead":false,"clientType":1,"companyName":null,"companyRegistrationNumber":null,"companyTaxId":null,"companyWebsite":null,"street1":"Chiapas 31","street2":null,"city":"Dolores Hidalgo Cuna de la Independencia Nacional","countryId":173,"stateId":null,"zipCode":"37800","fullAddress":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800","invoiceStreet1":null,"invoiceStreet2":null,"invoiceCity":null,"invoiceStateId":null,"invoiceCountryId":null,"invoiceZipCode":null,"invoiceAddressSameAsContact":true,"note":"Cliente especial, el m\u00e1s chido del siip internet 2026 yeah xD hola dfg","sendInvoiceByPost":null,"invoiceMaturityDays":null,"stopServiceDue":null,"stopServiceDueDays":null,"organizationId":1,"tax1Id":null,"tax2Id":null,"tax3Id":null,"registrationDate":"2024-01-25T00:00:00-0600","leadConvertedAt":null,"companyContactFirstName":null,"companyContactLastName":null,"isActive":true,"firstName":"Daniel Humberto","lastName":"Soto Villegas","username":"danydhsv","contacts":[{"id":2,"clientId":2,"email":"ciber.dhsv@gmail.com","phone":"5214181878106","name":null,"isBilling":false,"isContact":true,"types":[{"id":2,"name":"General"},{"id":1000,"name":"WhatsApp"}]},{"id":170,"clientId":2,"email":null,"phone":"5214181148783","name":null,"isBilling":false,"isContact":false,"types":[]}],"attributes":[{"id":113,"clientId":2,"customAttributeId":11,"name":"Clabe Interbancaria","key":"clabeInterbancaria","value":"0021804341999569810","clientZoneVisible":true},{"id":200,"clientId":2,"customAttributeId":14,"name":"Chat de CallBell","key":"chatDeCallbell","value":"https","clientZoneVisible":false},{"id":112,"clientId":2,"customAttributeId":10,"name":"Stripe Customer ID","key":"stripeCustomerId","value":"cus_PetN1dhr4rx0kX","clientZoneVisible":true},{"id":178,"clientId":2,"customAttributeId":15,"name":"Site","key":"site","value":"VENUS","clientZoneVisible":false},{"id":179,"clientId":2,"customAttributeId":16,"name":"Antena\/Sectorial","key":"antenaSectorial","value":"Sectorial de pruebas 172.16.5.134","clientZoneVisible":false},{"id":309,"clientId":2,"customAttributeId":21,"name":"RUTA DE COBRANZA","key":"rutaDeCobranza","value":"GUSANO","clientZoneVisible":true},{"id":428,"clientId":2,"customAttributeId":17,"name":"Password Antena Cliente","key":"passwordAntenaCliente","value":"Servicio 1: n#Cx89qC#r64LPR# Servicio 2: b@2zMYxSQR2BdkG9","clientZoneVisible":false}],"accountBalance":910,"accountCredit":910,"accountOutstanding":0,"currencyCode":"MXN","organizationName":"SIIP Pruebas","bankAccounts":[],"tags":[],"invitationEmailSentDate":null,"avatarColor":"#f1df43","addressGpsLat":21.1564414,"addressGpsLon":-100.9383654,"isArchived":false,"generateProformaInvoices":null,"usesProforma":false,"hasOverdueInvoice":false,"hasOutage":true,"hasSuspendedService":false,"hasServiceWithoutDevices":true,"referral":null,"hasPaymentSubscription":false,"hasAutopayCreditCard":false},"serviceData":null,"invoiceData":null,"paymentData":{"id":990,"clientId":2,"methodId":"1dd098fa-5d63-4c8d-88b7-3c27ffbbb6ae","checkNumber":null,"createdDate":"2026-03-10T00:31:50-0600","amount":280,"currencyCode":"MXN","note":null,"receiptSentDate":null,"providerName":null,"providerPaymentId":null,"providerPaymentTime":null,"paymentCovers":[],"creditAmount":280,"userId":null,"attributes":[]}}
+
+[2026-03-10 6:31:50.930712] [info] Verificando existencia de atributo 'tipoPagoStripe' para Payment ID: 990
+[2026-03-10 6:31:50.949276] [info] Microservice found metadata: tipoPago = 'OXXO'
+[2026-03-10 6:31:51.027370] [info] Payment 990 has no User ID. Assigning Stripe User ID: 1180
+[2026-03-10 6:31:51.103872] [info] Payment 990 has wrong Method ID (1dd098fa-5d63-4c8d-88b7-3c27ffbbb6ae). Patching to b01c0b35-b42c-48d9-9ad9-ea6591adfbbb via Microservice.
+[2026-03-10 6:31:51.105716] [error] Failed to patch Payment Method ID via microservice: Client error: `PATCH http://172.16.5.134:4100/payments/990/method` resulted in a `404 Not Found` response:
+
+
+
+
+Error
+
+
+
Cannot PATCH /pa (truncated...)
+
+[2026-03-10 6:31:51.179845] [info] PATCHING Payment 990: Setting tipoPagoStripe = 'OXXO Pay'
+Eviando comprobante de pago al cliente: 2 con número: 5214181878106
+
+El archivo PDF se ha descargado y guardado correctamente en: /data/ucrm/data/plugins/siip-whatsapp-notifications/src/Facade/../../comprobantes/Comprobante_Daniel_Humberto_Soto_Villegas.pdf
+
+El archivo PDF es válido y tiene contenido: /data/ucrm/data/plugins/siip-whatsapp-notifications/src/Facade/../../comprobantes/Comprobante_Daniel_Humberto_Soto_Villegas.pdf
+
+Procesando PDF con microservicio: http://pdf-cropper-service:8000/process
+
+Imagen generada por microservicio guardada en: /data/ucrm/data/plugins/siip-whatsapp-notifications/src/Facade/../../comprobantes/Comprobante_Daniel_Humberto_Soto_Villegas.jpg
+
+[2026-03-10 6:31:51.789138] [info] Archivo subido exitosamente a MinIO: https://aws-venus.siip.mx/vouchers-oxxo/Comprobante_Daniel_Humberto_Soto_Villegas_1773124311.jpg
+Imagen subida a MinIO: https://aws-venus.siip.mx/vouchers-oxxo/Comprobante_Daniel_Humberto_Soto_Villegas_1773124311.jpg
+
+Archivos temporales (PDF/JPG) eliminados tras subida exitosa.
+
+Proceso de obtención de imagen finalizado.
+
+La cadena CURL que se envia es: {
+    "to": "5214181878106",
+    "from": "whatsapp",
+    "type": "document",
+    "content": {
+      "text": "S/M",
+     "url": "https://aws-venus.siip.mx/vouchers-oxxo/Comprobante_Daniel_Humberto_Soto_Villegas_1773124311.jpg"
+    },
+    "template_values": ["Daniel Humberto Soto Villegas", "$280", "$910 a favor"],
+    "template_uuid": "57ead79cebd14902921477922403093b",
+    "optin_contact": true
+  }
+Response del CallBell: {"message":{"uuid":"3aa3f737b591476ea394000e313e822b","status":"enqueued"}}
+Hay menos de 100 archivos en el directorio. No se eliminarán archivos.
+
+La notificación fue enviada correctamente con estado: enqueued
+
+Notificacion data: {"uuid":"39cc0411-5e3f-401f-beb2-154c4f12cd9f","changeType":"insert","entity":"payment","entityId":990,"message":null,"clientId":2,"eventName":"payment.add","clientData":{"id":2,"userIdent":null,"previousIsp":null,"isLead":false,"clientType":1,"companyName":null,"companyRegistrationNumber":null,"companyTaxId":null,"companyWebsite":null,"street1":"Chiapas 31","street2":null,"city":"Dolores Hidalgo Cuna de la Independencia Nacional","countryId":173,"stateId":null,"zipCode":"37800","fullAddress":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800","invoiceStreet1":null,"invoiceStreet2":null,"invoiceCity":null,"invoiceStateId":null,"invoiceCountryId":null,"invoiceZipCode":null,"invoiceAddressSameAsContact":true,"note":"Cliente especial, el m\u00e1s chido del siip internet 2026 yeah xD hola dfg","sendInvoiceByPost":null,"invoiceMaturityDays":null,"stopServiceDue":null,"stopServiceDueDays":null,"organizationId":1,"tax1Id":null,"tax2Id":null,"tax3Id":null,"registrationDate":"2024-01-25T00:00:00-0600","leadConvertedAt":null,"companyContactFirstName":null,"companyContactLastName":null,"isActive":true,"firstName":"Daniel Humberto","lastName":"Soto Villegas","username":"danydhsv","contacts":[{"id":2,"clientId":2,"email":"ciber.dhsv@gmail.com","phone":"5214181878106","name":null,"isBilling":false,"isContact":true,"types":[{"id":2,"name":"General"},{"id":1000,"name":"WhatsApp"}]},{"id":170,"clientId":2,"email":null,"phone":"5214181148783","name":null,"isBilling":false,"isContact":false,"types":[]}],"attributes":[{"id":113,"clientId":2,"customAttributeId":11,"name":"Clabe Interbancaria","key":"clabeInterbancaria","value":"0021804341999569810","clientZoneVisible":true},{"id":200,"clientId":2,"customAttributeId":14,"name":"Chat de CallBell","key":"chatDeCallbell","value":"https","clientZoneVisible":false},{"id":112,"clientId":2,"customAttributeId":10,"name":"Stripe Customer ID","key":"stripeCustomerId","value":"cus_PetN1dhr4rx0kX","clientZoneVisible":true},{"id":178,"clientId":2,"customAttributeId":15,"name":"Site","key":"site","value":"VENUS","clientZoneVisible":false},{"id":179,"clientId":2,"customAttributeId":16,"name":"Antena\/Sectorial","key":"antenaSectorial","value":"Sectorial de pruebas 172.16.5.134","clientZoneVisible":false},{"id":309,"clientId":2,"customAttributeId":21,"name":"RUTA DE COBRANZA","key":"rutaDeCobranza","value":"GUSANO","clientZoneVisible":true},{"id":428,"clientId":2,"customAttributeId":17,"name":"Password Antena Cliente","key":"passwordAntenaCliente","value":"Servicio 1: n#Cx89qC#r64LPR# Servicio 2: b@2zMYxSQR2BdkG9","clientZoneVisible":false}],"accountBalance":910,"accountCredit":910,"accountOutstanding":0,"currencyCode":"MXN","organizationName":"SIIP Pruebas","bankAccounts":[],"tags":[],"invitationEmailSentDate":null,"avatarColor":"#f1df43","addressGpsLat":21.1564414,"addressGpsLon":-100.9383654,"isArchived":false,"generateProformaInvoices":null,"usesProforma":false,"hasOverdueInvoice":false,"hasOutage":true,"hasSuspendedService":false,"hasServiceWithoutDevices":true,"referral":null,"hasPaymentSubscription":false,"hasAutopayCreditCard":false},"serviceData":null,"invoiceData":null,"paymentData":{"id":990,"clientId":2,"methodId":"b01c0b35-b42c-48d9-9ad9-ea6591adfbbb","checkNumber":null,"createdDate":"2026-03-10T00:31:50-0600","amount":280,"currencyCode":"MXN","note":null,"receiptSentDate":null,"providerName":null,"providerPaymentId":null,"providerPaymentTime":null,"paymentCovers":[],"creditAmount":280,"userId":null,"attributes":[]}}
+
+Dentro del proceso del patch: 
+
+Datos traidos con payment api: [{"id":990,"clientId":2,"methodId":"1dd098fa-5d63-4c8d-88b7-3c27ffbbb6ae","checkNumber":null,"createdDate":"2026-03-10T00:31:50-0600","amount":280,"currencyCode":"MXN","note":null,"receiptSentDate":null,"providerName":null,"providerPaymentId":null,"providerPaymentTime":null,"paymentCovers":[],"creditAmount":280,"userId":1180,"attributes":[{"id":"56a35c9a-5073-4ec2-9372-b2dbe504f7c2","paymentId":990,"customAttributeId":20,"name":"Tipo Pago Stripe","key":"tipoPagoStripe","value":"OXXO Pay","clientZoneVisible":true}]}]
+
+Nombre del cliente que se va a actualizar: Daniel Humberto Soto Villegas
+
+UUID: 74cc2bb45eb8409f92cd5dba99200d26
+
+JSON con los datos a actualizar: {"name":"Daniel Humberto Soto Villegas","custom_fields":{"Site":"VENUS","Estado":"\ud83d\udfe2 Activo ","URL":"\ud83c\udf10 https:\/\/sistema.siip.mx\/crm\/client\/2","Nombre":"\ud83d\udc64 Daniel Humberto Soto Villegas","Cliente":2,"Fecha Ultima Actualizacion":"\ud83d\udcc6\ud83d\udd04\ufe0f 10\/03\/2026 00:31","Saldo Actual":"\ud83d\udcb2910 a favor","Monto Ultimo Pago":"\ud83d\udcb2 280","Clabe Interbancaria":null,"Fecha Ultimo Pago":"\ud83d\udcc6\ud83d\udcb8 10\/03\/2026 00:31 con Tarjeta de cr\u00e9dito Stripe \ud83d\udcb3","Antena\/Sectorial":"Sectorial de pruebas 172.16.5.134","Domicilio":"\ud83d\udccd Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800","Resumen":"{\"Cliente\": \"2\",\"Nombre\": \"Daniel Humberto Soto Villegas\",\"URL\": \"https:\/\/sistema.siip.mx\/crm\/client\/2\",\"Saldo Actual\": \"\ud83d\udcb2910 a favor\",\"Monto Ultimo Pago\": \"$ 280\",\"Estado\": \"Activo\",\"Fecha Ultimo Pago\": \" 10\/03\/2026 00:31 con Tarjeta de cr\u00e9dito Stripe \ud83d\udcb3\",\"Fecha Ultima Actualizacion\": \"10\/03\/2026 00:31\",\"Clabe Interbancaria\": \"\",\"Site\": \"VENUS\",\"Antena\/Sectorial\": \"Sectorial de pruebas 172.16.5.134\",\"Password Antena\": {\"Servicio 1\":\"n#Cx89qC#r64LPR#\",\"Servicio 2\":\"b@2zMYxSQR2BdkG9\"}}","password-antena":"{\"Servicio 1\":\"n#Cx89qC#r64LPR#\",\"Servicio 2\":\"b@2zMYxSQR2BdkG9\"}"}}
+
+DEBUG COMPARACIÓN - CallBell Saldo Actual: '💲630 a favor'
+
+DEBUG COMPARACIÓN - UCRM Saldo Actual: '💲910 a favor'
+
+DEBUG COMPARACIÓN - CallBell Estado: '🟢 Activo '
+
+DEBUG COMPARACIÓN - UCRM Estado: '🟢 Activo '
+
+EJECUTANDO PATCH - Se detectaron cambios
+
+Response Patch CallBell: {"contact":{"uuid":"74cc2bb45eb8409f92cd5dba99200d26","name":"Daniel Humberto Soto Villegas","phoneNumber":"5214181878106","avatarUrl":null,"createdAt":"2024-01-08T17:04:13Z","closedAt":null,"source":"whatsapp","funnelId":null,"href":"https://dash.callbell.eu/contacts/74cc2bb45eb8409f92cd5dba99200d26","conversationHref":"https://dash.callbell.eu/chat/53c8229c428c4081b197ab136feab73b","tags":["PRUEBAS","s0LOCS"],"assignedUser":null,"customFields":{"user entry point":"inbound_message","Monto Ultimo Pago":"💲 280","Clabe Interbancaria":"124180650741646979","Estado":"🟢 Activo ","Antena/Sectorial":"Sectorial de pruebas 172.16.5.134","Nombre":"👤 Daniel Humberto Soto Villegas","password-antena":"{\"Servicio 1\":\"n#Cx89qC#r64LPR#\",\"Servicio 2\":\"b@2zMYxSQR2BdkG9\"}","URL":"🌐 https://sistema.siip.mx/crm/client/2","Site":"VENUS","Saldo Actual":"💲910 a favor","Fecha Ultima Actualizacion":"📆🔄️ 10/03/2026 00:31","user name":"Daniel Humberto","Resumen":"{\"Cliente\": \"2\",\"Nombre\": \"Daniel Humberto Soto Villegas\",\"URL\": \"https://sistema.siip.mx/crm/client/2\",\"Saldo Actual\": \"💲910 a favor\",\"Monto Ultimo Pago\": \"$ 280\",\"Estado\": \"Activo\",\"Fecha Ultimo Pago\": \" 10/03/2026 00:31 con Tarjeta de crédito Stripe 💳\",\"Fecha Ultima Actualizacion\": \"10/03/2026 00:31\",\"Clabe Interbancaria\": \"\",\"Site\": \"VENUS\",\"Antena/Sectorial\": \"Sectorial de pruebas 172.16.5.134\",\"Password Antena\": {\"Servicio 1\":\"n#Cx89qC#r64LPR#\",\"Servicio 2\":\"b@2zMYxSQR2BdkG9\"}}","Fecha Ultimo Pago":"📆💸 10/03/2026 00:31 con Tarjeta de crédito Stripe 💳","Domicilio":"📍 Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800","Cliente":"2"},"team":{"uuid":"5faeed738d6a44ccacf6509762eb288d","name":"General","default":true,"members":5,"createdAt":"2023-11-07T00:37:10Z"},"channel":{"uuid":"dbaa248932634e7ea4346a320960c24a","title":null,"discardedAt":null,"type":"whatsapp","main":true},"blockedAt":null}}
+
+[2026-03-10 6:31:54.720086] [notice] Logging level set to:debug
+[2026-03-10 6:31:54.720911] [debug] Payload recibido: {"uuid":"d12095da-7c07-4f3b-bdc6-7dfe9ca6f20a","changeType":"edit","entity":"payment","entityId":"990","eventName":"payment.edit","extraData":{"entity":{"id":990,"clientId":2,"methodId":"1dd098fa-5d63-4c8d-88b7-3c27ffbbb6ae","checkNumber":null,"createdDate":"2026-03-10T00:31:50-0600","amount":280,"currencyCode":"MXN","note":null,"receiptSentDate":null,"providerName":null,"providerPaymentId":null,"providerPaymentTime":null,"paymentCovers":[],"creditAmount":280,"userId":1180,"attributes":[]},"entityBeforeEdit":{"id":990,"clientId":2,"methodId":"1dd098fa-5d63-4c8d-88b7-3c27ffbbb6ae","checkNumber":null,"createdDate":"2026-03-10T00:31:50-0600","amount":280,"currencyCode":"MXN","note":null,"receiptSentDate":null,"providerName":null,"providerPaymentId":null,"providerPaymentTime":null,"paymentCovers":[],"creditAmount":280,"userId":null,"attributes":[]}}}
+
+[2026-03-10 6:31:54.906730] [debug] Evento recibido: payment.edit
+[2026-03-10 7:19:17.423449] [notice] Logging level set to:debug
+[2026-03-10 7:19:17.423650] [debug] Payload recibido: {
+"type": "oxxo.request",
+"amount": "180",
+"client_id": 3201
+}
+
+[2026-03-10 7:19:17.423724] [info] No UUID found in the webhook data
+[2026-03-10 7:19:17.423772] [info] Evento de solicitud de referencia de OXXO recibido (Async Flow)
+[2026-03-10 7:19:17.537695] [error] Error generando referencia Stripe: {"hasError":true,"data":{"oxxo_reference":"","url":"","error":"errorGetClient","failDescription":"Error obteniendo cliente","clientID":3201,"clientFullName":"","amount":"180","voucher_image_url":""}}
+[2026-03-10 19:33:33.009563] [notice] Logging level set to:debug
+[2026-03-10 19:33:33.010248] [debug] Payload recibido: {"uuid":"7a86490a-f033-4a48-a636-71063c5ee25c","changeType":"insert","entity":"job","entityId":"69","eventName":"job.add","extraData":{"entity":{"id":69,"title":"El chido servicio","description":"Revisi\u00f3n de alambres","assignedUserId":null,"assignedUserFullName":null,"clientId":2,"date":null,"duration":60,"status":0,"address":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800, Mexico","gpsLat":null,"gpsLon":null,"attachments":[],"tasks":[]},"entityBeforeEdit":null}}
+
+[2026-03-10 19:33:33.056199] [debug] Evento recibido: job.add
+[2026-03-10 19:33:33.056315] [debug] Se ha agregado un nuevo trabajo
+[2026-03-10 19:33:33.195705] [debug] Respuesta de la API al agregar el trabajo: {"id":69,"title":"[NOTIFICACION-PENDIENTE]El chido servicio","description":"Revisi\u00f3n de alambres","assignedUserId":null,"assignedUserFullName":null,"clientId":2,"date":null,"duration":60,"status":0,"address":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800, Mexico","gpsLat":null,"gpsLon":null,"attachments":[],"tasks":[]}
+[2026-03-10 19:33:33.591612] [notice] Logging level set to:debug
+[2026-03-10 19:33:33.591779] [debug] Payload recibido: {"uuid":"7cb2e53e-1ac4-4c39-92ac-f292af0a5640","changeType":"edit","entity":"job","entityId":"69","eventName":"job.edit","extraData":{"entity":{"id":69,"title":"El chido servicio","description":"Revisi\u00f3n de alambres","assignedUserId":null,"assignedUserFullName":null,"clientId":2,"date":null,"duration":60,"status":0,"address":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800, Mexico","gpsLat":null,"gpsLon":null,"attachments":[],"tasks":[]},"entityBeforeEdit":{"id":69,"title":"El chido servicio","description":"Revisi\u00f3n de alambres","assignedUserId":null,"assignedUserFullName":null,"clientId":2,"date":null,"duration":60,"status":0,"address":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800, Mexico","gpsLat":null,"gpsLon":null,"attachments":[],"tasks":[]}}}
+
+[2026-03-10 19:33:33.635740] [debug] Evento recibido: job.edit
+[2026-03-10 19:33:33.635955] [debug] Se actualiza un trabajo
+
+[2026-03-10 19:33:33.636012] [debug] Validando claves dentro de entityBeforeEdit y entity
+[2026-03-10 19:33:33.857422] [notice] Logging level set to:debug
+[2026-03-10 19:33:33.858211] [debug] Payload recibido: {"uuid":"490b3cf2-b4df-4426-891c-a26950413382","changeType":"edit","entity":"job","entityId":"69","eventName":"job.edit","extraData":{"entity":{"id":69,"title":"[NOTIFICACION-PENDIENTE]El chido servicio","description":"Revisi\u00f3n de alambres","assignedUserId":null,"assignedUserFullName":null,"clientId":2,"date":null,"duration":60,"status":0,"address":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800, Mexico","gpsLat":null,"gpsLon":null,"attachments":[],"tasks":[]},"entityBeforeEdit":{"id":69,"title":"El chido servicio","description":"Revisi\u00f3n de alambres","assignedUserId":null,"assignedUserFullName":null,"clientId":2,"date":null,"duration":60,"status":0,"address":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800, Mexico","gpsLat":null,"gpsLon":null,"attachments":[],"tasks":[]}}}
+
+[2026-03-10 19:33:33.916615] [debug] Evento recibido: job.edit
+[2026-03-10 19:33:33.916819] [debug] Se actualiza un trabajo
+
+[2026-03-10 19:33:33.916872] [debug] Validando claves dentro de entityBeforeEdit y entity
+[2026-03-10 19:34:06.700730] [notice] Logging level set to:debug
+[2026-03-10 19:34:06.700819] [debug] Payload recibido: {"uuid":"b8219f4b-a880-4575-bbfb-36ad6f53822e","changeType":"edit","entity":"job","entityId":"69","eventName":"job.edit","extraData":{"entity":{"id":69,"title":"[NOTIFICACION-PENDIENTE]El chido servicio","description":"Revisi\u00f3n de alambres","assignedUserId":1015,"assignedUserFullName":"Daniel Humberto  Soto Villegas","clientId":2,"date":"2026-03-14T14:00:59-0600","duration":60,"status":0,"address":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800, Mexico","gpsLat":null,"gpsLon":null,"attachments":[],"tasks":[]},"entityBeforeEdit":{"id":69,"title":"[NOTIFICACION-PENDIENTE]El chido servicio","description":"Revisi\u00f3n de alambres","assignedUserId":null,"assignedUserFullName":null,"clientId":2,"date":null,"duration":60,"status":0,"address":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800, Mexico","gpsLat":null,"gpsLon":null,"attachments":[],"tasks":[]}}}
+
+[2026-03-10 19:34:06.744999] [debug] Evento recibido: job.edit
+[2026-03-10 19:34:06.745126] [debug] Se actualiza un trabajo
+
+[2026-03-10 19:34:06.745151] [debug] Validando claves dentro de entityBeforeEdit y entity
+[2026-03-10 19:35:34.744338] [notice] Logging level set to:debug
+[2026-03-10 19:35:34.744419] [debug] Payload recibido: {"uuid":"71f23687-d88f-4897-be22-6c182eb50530","changeType":"edit","entity":"job","entityId":"69","eventName":"job.edit","extraData":{"entity":{"id":69,"title":"[NOTIFICACION-PENDIENTE]El chido servicio","description":"Revisi\u00f3n de alambres","assignedUserId":1015,"assignedUserFullName":"Daniel Humberto  Soto Villegas","clientId":2,"date":"2026-03-14T14:00:59-0600","duration":60,"status":1,"address":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800, Mexico","gpsLat":null,"gpsLon":null,"attachments":[],"tasks":[]},"entityBeforeEdit":{"id":69,"title":"[NOTIFICACION-PENDIENTE]El chido servicio","description":"Revisi\u00f3n de alambres","assignedUserId":1015,"assignedUserFullName":"Daniel Humberto  Soto Villegas","clientId":2,"date":"2026-03-14T14:00:59-0600","duration":60,"status":0,"address":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800, Mexico","gpsLat":null,"gpsLon":null,"attachments":[],"tasks":[]}}}
+
+[2026-03-10 19:35:34.789338] [debug] Evento recibido: job.edit
+[2026-03-10 19:35:34.789454] [debug] Se actualiza un trabajo
+
+[2026-03-10 19:35:34.789474] [debug] Validando claves dentro de entityBeforeEdit y entity
+[2026-03-10 19:35:34.789486] [debug] Trabajo iniciado o asignado: Notificando...
+[2026-03-10 19:35:34.789499] [info] Iniciando verifyJobActionToDo
+Enviando mensaje de trabajo para el cliente
+
+Datos de la notificación de trabajo: {"clientFullName":"Daniel Humberto Soto Villegas","jobId":"69","date":"*14\/03\/2026*","installerName":"Daniel Humberto  Soto Villegas"}
+
+DEBUG: Valores después de conversión - Reprogramming: false, ChangeInstaller: false
+
+DEBUG: Valores antes de la estructura IF - Reprogramming: false, ChangeInstaller: false
+
+Enviando notificación normal de visita técnica al cliente, valor de reprogramming  y valor de changeInstaller  
+
+La cadena CURL que se envia es: {
+    "to": "5214181878106",
+    "from": "whatsapp",
+    "type": "text",
+    "content": {
+      "text": "S/M"
+    },
+    "template_values": ["👤  *Daniel Humberto Soto Villegas*", "*#️⃣69*", "🗓️ *14/03/2026*", "👷🏻‍♂️➡️ *Daniel Humberto  Soto Villegas*", "asegúrese de que alguien esté presente en el domicilio 🏠 para permitir el acceso y confirme su disponibilidad."],
+    "template_uuid": "07cfbc6e394044608485b530a27177d0",
+    "optin_contact": true
+  }
+Response del CallBell: {"message":{"uuid":"95a05969d0a94b9b86012b6ec136593f","status":"enqueued"}}
+La notificación fue enviada correctamente con estado: enqueued
+
+Enviando mensaje de tarea al instalador
+
+Datos de la notificación de tarea: {"installerName":"Daniel Humberto  Soto Villegas","clientFullName":"Daniel Humberto Soto Villegas [ID:2]","jobId":"69","clientAddress":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800","clientWhatsApp":"5214181878106, 5214181148783","date":"*14\/03\/2026*","jobDescription":"Revisi\u00f3n de alambres","gmapsLocation":"https:\/\/www.google.com\/maps?q=21.1564414,-100.9383654","passwordAntenaCliente":"Servicio 1: n#Cx89qC#r64LPR# Servicio 2: b@2zMYxSQR2BdkG9"}
+
+DEBUG: Valores después de conversión - Reprogramming: false, ChangeInstaller: false
+
+Enviando notificación normal de tarea al instalador, valor de reprogramming  y valor de changeInstaller  
+
+La cadena CURL que se envia es: {
+    "to": "524181878106",
+    "from": "whatsapp",
+    "type": "text",
+    "content": {
+      "text": "S/M"
+    },
+    "template_values": ["👷🏻‍♂️ *Daniel Humberto  Soto Villegas* se te ha asignado una tarea con folio #️⃣ *69*, del cliente 👤 *Daniel Humberto Soto Villegas [ID:2]*, para el 🗓️ *14/03/2026*", "5214181878106, 5214181148783", "https://www.google.com/maps?q=21.1564414,-100.9383654", "Servicio 1: n#Cx89qC#r64LPR# Servicio 2: b@2zMYxSQR2BdkG9"],
+    "template_uuid": "88eeb6420a214fd8870dd28d741021c4",
+    "optin_contact": true
+  }
+Response del CallBell: {"message":{"uuid":"b2c43185addf4e66a5015d3a2bf07901","status":"enqueued"}}
+La notificación fue enviada correctamente con estado: enqueued
+
+[2026-03-10 19:35:36.214523] [notice] Logging level set to:debug
+[2026-03-10 19:35:36.214620] [debug] Payload recibido: {"uuid":"26153523-3e82-4332-80f6-8c51f33c6725","changeType":"edit","entity":"job","entityId":"69","eventName":"job.edit","extraData":{"entity":{"id":69,"title":"El chido servicio","description":"Revisi\u00f3n de alambres","assignedUserId":1015,"assignedUserFullName":"Daniel Humberto  Soto Villegas","clientId":2,"date":"2026-03-14T14:00:59-0600","duration":60,"status":1,"address":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800, Mexico","gpsLat":null,"gpsLon":null,"attachments":[],"tasks":[]},"entityBeforeEdit":{"id":69,"title":"[NOTIFICACION-PENDIENTE]El chido servicio","description":"Revisi\u00f3n de alambres","assignedUserId":1015,"assignedUserFullName":"Daniel Humberto  Soto Villegas","clientId":2,"date":"2026-03-14T14:00:59-0600","duration":60,"status":1,"address":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800, Mexico","gpsLat":null,"gpsLon":null,"attachments":[],"tasks":[]}}}
+
+[2026-03-10 19:35:36.264856] [debug] Evento recibido: job.edit
+[2026-03-10 19:35:36.265011] [debug] Se actualiza un trabajo
+
+[2026-03-10 19:35:36.265041] [debug] Validando claves dentro de entityBeforeEdit y entity
+[2026-03-10 19:35:36.265060] [debug] Edición de trabajo "En curso" sin cambios de fecha o técnico relevantes para notificación
+[2026-03-10 19:36:16.318576] [notice] Logging level set to:debug
+[2026-03-10 19:36:16.318727] [debug] Payload recibido: {"uuid":"b05766c5-9d49-4cdb-9059-c83a16712f98","changeType":"edit","entity":"job","entityId":"69","eventName":"job.edit","extraData":{"entity":{"id":69,"title":"El chido servicio","description":"Revisi\u00f3n de alambres","assignedUserId":1184,"assignedUserFullName":"Jos\u00e9 Luis Enrique  S\u00e1nchez","clientId":2,"date":"2026-03-14T14:00:59-0600","duration":60,"status":1,"address":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800, Mexico","gpsLat":null,"gpsLon":null,"attachments":[],"tasks":[]},"entityBeforeEdit":{"id":69,"title":"El chido servicio","description":"Revisi\u00f3n de alambres","assignedUserId":1015,"assignedUserFullName":"Daniel Humberto  Soto Villegas","clientId":2,"date":"2026-03-14T14:00:59-0600","duration":60,"status":1,"address":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800, Mexico","gpsLat":null,"gpsLon":null,"attachments":[],"tasks":[]}}}
+
+[2026-03-10 19:36:16.373821] [debug] Evento recibido: job.edit
+[2026-03-10 19:36:16.374017] [debug] Se actualiza un trabajo
+
+[2026-03-10 19:36:16.374073] [debug] Validando claves dentro de entityBeforeEdit y entity
+[2026-03-10 19:36:16.374118] [debug] Cambio de técnico sin reprogramación
+[2026-03-10 19:36:16.374157] [info] Iniciando verifyJobActionToDo
+[2026-03-10 19:36:16.451981] [warning] No se encontró número de WhatsApp para el instalador ID: 1184
+Enviando mensaje de tarea al instalador
+
+Datos de la notificación de tarea: {"installerName":"\ud83d\udc77\ud83c\udffb\u200d\u2642\ufe0fDaniel Humberto  Soto Villegas","subjectOfChange":"se te ha desasignado\u274c la tarea con el folio ","jobId":"69","clientFullName":"[2] Daniel Humberto Soto Villegas","additionalChangeData":"En tu lugar asistir\u00e1 el t\u00e9cnico \ud83d\udc77\ud83c\udffb\u200d\u2642\ufe0f\u27a1\ufe0f  *Jos\u00e9 Luis Enrique  S\u00e1nchez*"}
+
+DEBUG: Valores después de conversión - Reprogramming: false, ChangeInstaller: true
+
+Enviando notificación de cambio de instalador al instalador anterior (desasignación), valor de reprogramming  y valor de changeInstaller 1 
+
+La cadena CURL que se envia es: {
+    "to": "524181878106",
+    "from": "whatsapp",
+    "type": "text",
+    "content": {
+      "text": "S/M"
+    },
+    "template_values": ["👷🏻‍♂️Daniel Humberto  Soto Villegas", "se te ha desasignado❌ la tarea con el folio ", "#️⃣69", "*👤[2] Daniel Humberto Soto Villegas* ", "En tu lugar asistirá el técnico 👷🏻‍♂️➡️  *José Luis Enrique  Sánchez*"],
+    "template_uuid": "e1aa2b0fd3884595918f4ac2676acd29",
+    "optin_contact": true
+  }
+Response del CallBell: {"message":{"uuid":"23d52c5b99ca4e1781fcbdf202b477ed","status":"enqueued"}}
+La notificación fue enviada correctamente con estado: enqueued
+
+Enviando mensaje de trabajo para el cliente
+
+Datos de la notificación de trabajo: {"clientFullName":"Daniel Humberto Soto Villegas","jobId":"69","date":"*14\/03\/2026*","installerName":"Jos\u00e9 Luis Enrique  S\u00e1nchez"}
+
+DEBUG: Valores después de conversión - Reprogramming: false, ChangeInstaller: true
+
+DEBUG: Valores antes de la estructura IF - Reprogramming: false, ChangeInstaller: true
+
+Enviando notificación de cambio de instalador al cliente, valor de reprogramming  y valor de changeInstaller 1 
+
+La cadena CURL que se envia es: {
+    "to": "5214181878106",
+    "from": "whatsapp",
+    "type": "text",
+    "content": {
+      "text": "S/M"
+    },
+    "template_values": ["👤  *Daniel Humberto Soto Villegas*", "se ha hecho un cambio  de técnico 👷🏻‍♂️🔄 para su visita con el folio *#️⃣69*", "🗓️ *14/03/2026*", "👷🏻‍♂️➡️ *José Luis Enrique  Sánchez*", "asegúrese de que alguien esté presente en el domicilio 🏠 para permitir el acceso y confirme su disponibilidad."],
+    "template_uuid": "d684e6fa2ba24593a86c98be1815831d",
+    "optin_contact": true
+  }
+Response del CallBell: {"message":{"uuid":"3cde5fc548b34bf7833699fd7a6758cb","status":"enqueued"}}
+La notificación fue enviada correctamente con estado: enqueued
+
+Enviando mensaje de tarea al instalador
+
+Datos de la notificación de tarea: {"installerName":"Jos\u00e9 Luis Enrique  S\u00e1nchez","clientFullName":"Daniel Humberto Soto Villegas [ID:2]","jobId":"69","clientAddress":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800","clientWhatsApp":"5214181878106, 5214181148783","date":"*14\/03\/2026*","jobDescription":"Revisi\u00f3n de alambres","gmapsLocation":"https:\/\/www.google.com\/maps?q=21.1564414,-100.9383654","passwordAntenaCliente":"Servicio 1: n#Cx89qC#r64LPR# Servicio 2: b@2zMYxSQR2BdkG9"}
+
+DEBUG: Valores después de conversión - Reprogramming: false, ChangeInstaller: false
+
+Enviando notificación normal de tarea al instalador, valor de reprogramming  y valor de changeInstaller  
+
+La cadena CURL que se envia es: {
+    "to": "",
+    "from": "whatsapp",
+    "type": "text",
+    "content": {
+      "text": "S/M"
+    },
+    "template_values": ["👷🏻‍♂️ *José Luis Enrique  Sánchez* se te ha asignado una tarea con folio #️⃣ *69*, del cliente 👤 *Daniel Humberto Soto Villegas [ID:2]*, para el 🗓️ *14/03/2026*", "5214181878106, 5214181148783", "https://www.google.com/maps?q=21.1564414,-100.9383654", "Servicio 1: n#Cx89qC#r64LPR# Servicio 2: b@2zMYxSQR2BdkG9"],
+    "template_uuid": "88eeb6420a214fd8870dd28d741021c4",
+    "optin_contact": true
+  }
+Response del CallBell: {"error":{"to":["can't be blank"]}}
+Error al enviar la notificación: {"to":["can't be blank"]}
+
+[2026-03-10 19:42:36.036473] [notice] Logging level set to:debug
+[2026-03-10 19:42:36.036634] [debug] Payload recibido: {"uuid":"9213d0d0-eab2-4be6-a71b-8c259eea9fa8","changeType":"edit","entity":"job","entityId":"69","eventName":"job.edit","extraData":{"entity":{"id":69,"title":"El chido servicio","description":"Revisi\u00f3n de alambres","assignedUserId":1184,"assignedUserFullName":"Jos\u00e9 Luis Enrique  S\u00e1nchez","clientId":2,"date":"2026-03-14T14:00:59-0600","duration":60,"status":1,"address":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800, Mexico","gpsLat":null,"gpsLon":null,"attachments":[],"tasks":[]},"entityBeforeEdit":{"id":69,"title":"El chido servicio","description":"Revisi\u00f3n de alambres","assignedUserId":1184,"assignedUserFullName":"Jos\u00e9 Luis Enrique  S\u00e1nchez","clientId":2,"date":"2026-03-14T14:00:59-0600","duration":60,"status":1,"address":"Chiapas 31, Dolores Hidalgo Cuna de la Independencia Nacional, 37800, Mexico","gpsLat":null,"gpsLon":null,"attachments":[],"tasks":[]}}}
+
+[2026-03-10 19:42:36.086601] [debug] Evento recibido: job.edit
+[2026-03-10 19:42:36.086862] [debug] Se actualiza un trabajo
+
+[2026-03-10 19:42:36.086922] [debug] Validando claves dentro de entityBeforeEdit y entity
+[2026-03-10 19:42:36.086985] [debug] Edición de trabajo "En curso" sin cambios de fecha o técnico relevantes para notificación
diff --git a/manifest.json b/manifest.json
index a5533e2a..d48fe75e 100755
--- a/manifest.json
+++ b/manifest.json
@@ -5,13 +5,18 @@
     "displayName": "SIIP - Procesador de Pagos en línea con Stripe, Oxxo y Transferencia, Sincronizador de CallBell y Envío de Notificaciones y comprobantes vía WhatsApp",
     "description": "Este plugin sincroniza los clientes del sistema UISP CRM con los contactos de WhatsApp en CallBell, además procesa pagos de Stripe como las trasferencias bancarias y genera referencias de pago vía OXXO, además envía comprobantes de pago en formato imagen PNG o texto vía Whatsapp a los clientes",
     "url": "https://siip.mx/",
-    "version": "4.3.0",
+    "version": "4.3.1",
     "unmsVersionCompliancy": {
       "min": "2.1.0",
       "max": null
     },
     "author": "SIIP INTERNET",
     "changelog": [
+      {
+        "version": "4.3.1",
+        "date": "2026-03-10",
+        "changes": "Hotfix: Corregido bug donde al cambiar de instalador en una tarea En Curso, el nuevo técnico recibía mensaje de desasignación en vez de asignación."
+      },
       {
         "version": "4.3.0",
         "date": "2026-02-23",
diff --git a/public.php b/public.php
old mode 100755
new mode 100644
index c57e4ba1..3da878cd
--- a/public.php
+++ b/public.php
@@ -7,10 +7,8 @@ chdir(__DIR__);
 use Ubnt\UcrmPluginSdk\Service\PluginConfigManager;
 use Ubnt\UcrmPluginSdk\Service\UcrmApi;
 use Ubnt\UcrmPluginSdk\Service\UcrmSecurity;
-use SmsNotifier\Service\PaymentIntentService;
 
-// Carga manual del servicio
-require_once __DIR__ . '/src/Service/PaymentIntentService.php';
+// Eliminado: PaymentIntentService ya no se usa aquí
 
 if (!file_exists(__DIR__ . '/data/config.json')) {
     die('Acceso denegado o configuración no encontrada.');
@@ -18,7 +16,6 @@ if (!file_exists(__DIR__ . '/data/config.json')) {
 
 $configManager = PluginConfigManager::create();
 $config = $configManager->loadConfig();
-$logger = new \SmsNotifier\Service\Logger();
 
 // LOG DE EMERGENCIA
 $debugLogPath = __DIR__ . '/data/debug_public.log';
@@ -50,11 +47,7 @@ $httpClient = new \GuzzleHttp\Client([
 
 $ucrmApi = new UcrmApi($httpClient, $config['apitoken'] ?? '');
 
-$stripeService = new PaymentIntentService(
-    $ucrmApi,
-    $config['tokenstripe'] ?? '',
-    $logger
-);
+$ucrmApi = new UcrmApi($httpClient, $config['apitoken'] ?? '');
 
 // Admins Logic
 $admins = [];
@@ -110,19 +103,15 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_GET['action']) && $_GET['ac
         $authToken = $resp->getHeaderLine('x-auth-token');
 
         if ($statusCode === 200 && $authToken) {
-            $logger->info("NMS Login OK for user: {$username}");
             echo json_encode(['success' => true, 'token' => $authToken, 'user' => $body]);
         } elseif ($statusCode === 201) {
-            $logger->info("NMS Login requires 2FA for user: {$username}");
             http_response_code(201);
             echo json_encode(['requires2FA' => true, 'twoFactorToken' => $body]);
         } else {
-            $logger->warning("NMS Login failed for user: {$username} (HTTP {$statusCode})");
             http_response_code($statusCode ?: 401);
             echo json_encode(['error' => $body['message'] ?? 'Credenciales inválidas.', 'statusCode' => $statusCode]);
         }
     } catch (\Exception $e) {
-        $logger->error("NMS Login exception: " . $e->getMessage());
         http_response_code(500);
         echo json_encode(['error' => 'Error de conexión con el servidor UISP.']);
     }
@@ -146,7 +135,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_GET['action']) && $_GET['ac
         $authToken = $resp->getHeaderLine('x-auth-token');
 
         if ($statusCode === 200 && $authToken) {
-            $logger->info("NMS 2FA Login OK");
             echo json_encode(['success' => true, 'token' => $authToken, 'user' => $body]);
         } else {
             http_response_code($statusCode ?: 401);
@@ -222,6 +210,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) {
             $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
             $selfUrl = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
 
+            $debugLogPath = __DIR__ . '/data/debug_public.log';
+            file_put_contents($debugLogPath, "[" . date('Y-m-d H:i:s') . "] RESEND PAYMENT. URL: $selfUrl" . PHP_EOL, FILE_APPEND);
+
             $ch = curl_init($selfUrl);
             curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
             curl_setopt($ch, CURLOPT_POST, true);
@@ -229,10 +220,16 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) {
             curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
             curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
             curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
+            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
+            curl_setopt($ch, CURLOPT_POSTREDIR, 3); // Mantener POST y payload en redirects 301/302
             curl_setopt($ch, CURLOPT_TIMEOUT, 5);
             $res = curl_exec($ch);
+            $err = curl_error($ch);
+            $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
             curl_close($ch);
 
+            file_put_contents($debugLogPath, "[" . date('Y-m-d H:i:s') . "] RESEND CURL RESULT - Code: $code - Error: $err - Body: $res" . PHP_EOL, FILE_APPEND);
+
             echo json_encode(['success' => true, 'message' => 'Notificación disparada.']);
         } catch (\Exception $e) {
             echo json_encode(['success' => false, 'message' => $e->getMessage()]);
@@ -271,60 +268,6 @@ if (isset($_GET['action'])) {
         exit;
     }
 
-    if ($_GET['action'] === 'get_stripe_history') {
-        if (ob_get_level()) ob_end_clean();
-        header('Content-Type: application/json');
-
-        $stripeCustomerId = $_GET['stripeCustomerId'] ?? '';
-        if (!$stripeCustomerId) {
-            echo json_encode(['error' => 'Missing stripeCustomerId']);
-            exit;
-        }
-
-        try {
-            $history = $stripeService->getLastPayments($stripeCustomerId);
-            $balance = $stripeService->getCustomerCashBalance($stripeCustomerId);
-
-            echo json_encode([
-                'history' => $history,
-                'cashBalance' => $balance
-            ]);
-        } catch (Exception $e) {
-            echo json_encode(['error' => $e->getMessage()]);
-        }
-        exit;
-    }
-
-    if ($_GET['action'] === 'get_oxxo_history') {
-        if (ob_get_level()) ob_end_clean();
-        header('Content-Type: application/json');
-
-        $stripeCustomerId = $_GET['stripeCustomerId'] ?? '';
-        if (!$stripeCustomerId) {
-            echo json_encode(['error' => 'Missing stripeCustomerId']);
-            exit;
-        }
-
-        try {
-            $history = $stripeService->getLastOxxoPayments($stripeCustomerId);
-            echo json_encode(['history' => $history]);
-        } catch (Exception $e) {
-            echo json_encode(['error' => $e->getMessage()]);
-        }
-        exit;
-    }
-
-    if ($_GET['action'] === 'search_stripe') {
-        $q = $_GET['q'] ?? '';
-        echo json_encode($stripeService->searchClients($q));
-        exit;
-    }
-
-    if ($_GET['action'] === 'get_stripe_details') {
-        echo json_encode($stripeService->getClientDetails($_GET['id'] ?? null));
-        exit;
-    }
-
     if ($_GET['action'] === 'image' || $_GET['action'] === 'get_image') {
         // Image Handler
         if (ob_get_level()) ob_end_clean();
@@ -355,14 +298,6 @@ if (isset($_GET['action'])) {
 // POST Actions for Intents
 if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) {
     header('Content-Type: application/json');
-    if ($_POST['action'] === 'create_intent') {
-        $clientId = $_POST['clientId'] ?? null;
-        $amount = $_POST['amount'] ?? 0;
-        $stripeCustomerId = $_POST['stripeCustomerId'] ?? null;
-        $adminId = $_POST['adminId'] ?? null;
-        echo json_encode($stripeService->createPaymentIntent($clientId, $amount, $stripeCustomerId, $adminId));
-        exit;
-    }
     if ($_POST['action'] === 'create_oxxo_intent') {
         try {
             $builder = new \DI\ContainerBuilder();
@@ -451,6 +386,46 @@ $installersData = json_decode($config['installersDataWhatsApp'] ?? '{"instalador
             display: flex;
             justify-content: space-between;
             align-items: center;
+            gap: 1.5rem;
+            flex-wrap: wrap;
+        }
+
+        .header-left {
+            display: flex;
+            align-items: center;
+            gap: 15px;
+            flex: 1;
+        }
+
+        .header-actions {
+            display: flex;
+            gap: 10px;
+            align-items: center;
+            flex-wrap: wrap;
+        }
+
+        .header-logo {
+            width: 80px;
+            height: 80px;
+            object-fit: contain;
+            border-radius: 12px;
+            background: white;
+            padding: 5px;
+            border: 1px solid var(--border);
+            flex-shrink: 0;
+        }
+
+        .header-title {
+            margin: 0 0 5px 0;
+            font-size: 1.5rem;
+            color: var(--text-main);
+            line-height: 1.2;
+        }
+
+        .header-subtitle {
+            margin: 0;
+            color: var(--text-muted);
+            font-size: 0.95rem;
         }
 
         /* MENU DASHBOARD */
@@ -806,6 +781,45 @@ $installersData = json_decode($config['installersDataWhatsApp'] ?? '{"instalador
             display: block;
         }
 
+        /* STRIPE CASH BALANCE BADGE */
+        .balance-badge {
+            align-items: center;
+            background-color: #f1f5f9;
+            color: var(--text-main);
+            padding: 6px 14px;
+            border-radius: 8px;
+            font-size: 0.9em;
+            font-weight: 700;
+            border: 1px solid #e2e8f0;
+            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
+        }
+
+        [data-theme="dark"] .balance-badge {
+            background-color: #bfdbfe;
+            /* Light blue background for contrast */
+            color: #1e3a8a;
+            /* Navy blue text */
+            border-color: #93c5fd;
+        }
+
+        /* ENHANCED DARK MODE CONTRAST FOR SEARCH BOXES */
+        [data-theme="dark"] .config-container {
+            background: #1e293b;
+            border: 1px solid #475569;
+            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
+        }
+
+        [data-theme="dark"] .search-wrapper .form-control {
+            background: #0f172a;
+            border: 1px solid #475569;
+            color: #f1f5f9;
+        }
+
+        [data-theme="dark"] .search-wrapper .form-control:focus {
+            border-color: var(--primary-hover);
+            box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.3);
+        }
+
         /* THEME TOGGLE (Premium) */
         .theme-toggle {
             background: var(--bg-card);
@@ -879,14 +893,56 @@ $installersData = json_decode($config['installersDataWhatsApp'] ?? '{"instalador
 
         table {
             width: 100%;
-            border-collapse: collapse;
+            border-collapse: separate;
+            border-spacing: 0;
+            border-radius: 12px;
+            overflow: hidden;
+            border: 1px solid var(--border);
+            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
         }
 
-        th,
-        td {
-            padding: 12px;
+        thead {
+            background-color: var(--primary-surface);
+        }
+
+        th {
+            padding: 16px 12px;
             text-align: left;
+            font-weight: 600;
+            color: var(--text-main);
+            text-transform: uppercase;
+            font-size: 0.85rem;
+            letter-spacing: 0.05em;
+            border-bottom: 2px solid var(--border);
+        }
+
+        td {
+            padding: 14px 12px;
             border-bottom: 1px solid var(--border);
+            color: var(--text-muted);
+            vertical-align: middle;
+            transition: background-color 0.2s;
+        }
+
+        tbody tr:last-child td {
+            border-bottom: none;
+        }
+
+        tbody tr:hover td {
+            background-color: rgba(37, 99, 235, 0.04);
+            color: var(--text-main);
+        }
+
+        [data-theme="dark"] tbody tr:hover td {
+            background-color: rgba(96, 165, 250, 0.08);
+        }
+
+        [data-theme="dark"] thead {
+            background-color: rgba(30, 41, 59, 0.8);
+        }
+
+        [data-theme="dark"] th {
+            color: #e2e8f0;
         }
 
         /* Toast */
@@ -1037,9 +1093,75 @@ $installersData = json_decode($config['installersDataWhatsApp'] ?? '{"instalador
         }
 
         @media (max-width: 768px) {
+            body {
+                padding: 1rem;
+            }
+
             .form-grid {
                 grid-template-columns: 1fr;
             }
+
+            .header {
+                padding: 1.5rem;
+                flex-direction: column;
+                align-items: flex-start;
+            }
+
+            .header-left {
+                flex-direction: column;
+                align-items: flex-start;
+                min-width: 100%;
+            }
+
+            .header-logo {
+                width: 60px;
+                height: 60px;
+            }
+
+            .header-title {
+                font-size: 1.2rem;
+            }
+
+            .tabs {
+                flex-wrap: nowrap;
+                overflow-x: auto;
+                padding-bottom: 10px;
+                -webkit-overflow-scrolling: touch;
+            }
+
+            .tab {
+                padding: 10px 16px;
+                font-size: 0.9rem;
+            }
+
+            .config-container {
+                flex-direction: column;
+                align-items: stretch;
+            }
+
+            .actions-row {
+                flex-direction: column;
+                width: 100%;
+            }
+
+            .actions-row .btn {
+                width: 100%;
+            }
+
+            .menu-container {
+                grid-template-columns: 1fr;
+            }
+
+            .menu-item {
+                min-height: 200px;
+                padding: 1.5rem;
+            }
+        }
+
+        .table-responsive {
+            width: 100%;
+            overflow-x: auto;
+            -webkit-overflow-scrolling: touch;
         }
 
         .form-group {
@@ -1468,15 +1590,15 @@ $installersData = json_decode($config['installersDataWhatsApp'] ?? '{"instalador
     
-
- +
+
-

Portal Administrativo de Pagos de STRIPE y Notificaciones WhatsApp

-

Administración de Notificaciones vía WhatsApp, Intenciones de pago con Stripe y Fichas de OXXO Pay

+

Portal Administrativo de Pagos de STRIPE y Notificaciones WhatsApp

+

Administración de Notificaciones vía WhatsApp, Intenciones de pago con Stripe y Fichas de OXXO Pay

-
+
- + + +