iconos arreglados

This commit is contained in:
DANYDHSV 2026-02-11 11:28:12 -06:00
parent 852c9f1758
commit e9b440810c
11 changed files with 3568 additions and 1629 deletions

View File

@ -1,79 +1,133 @@
# CHANGELOG - siip-whatsapp-notifications # CHANGELOG - SIIP WhatsApp Notifications Plugin
## VERSIÓN 4.2.2 - 10-02-2026
### ✨ Nuevas Características (Features)
1**Sistema de Navegación por Pestañas**:
_ Implementado sistema de pestañas horizontal similar a siip-payments-tools
_ Permite cambiar entre módulos sin volver al dashboard principal
_ Pestañas sticky que permanecen fijas al hacer scroll
_ Navegación fluida: Instaladores ↔ Notificaciones ↔ Pagos SPEI ↔ Pagos OXXO
_ Mejora significativa en la UX de navegación
_ Inicialización inteligente de módulos (carga solo cuando se accede)
### 🎨 Mejoras Visuales
- Pestañas con iconos representativos de cada módulo
- Estilo consistente con el diseño del plugin siip-payments-tools
- Adaptación completa a modos claro y oscuro
- Animaciones suaves en hover y transiciones de pestañas
## VERSIÓN 4.2.1 - 10-02-2026
### 🎨 Mejoras Visuales (Visual Enhancements)
1**Footer Sticky (Pegado al Fondo)**:
_ Implementado sistema Flexbox en body y container
_ El footer ahora siempre se posiciona al fondo de la página \* Resuelve problema de footer flotante en módulos con poco contenido
2**Footer con Versión Dinámica**:
_ Agregado footer profesional con branding SIIP Internet
_ Copyright dinámico con año actual usando PHP
_ Visualización clara de la versión del plugin (4.2.1)
_ Border superior prominente con color primario
### 🔄 Consistencia Visual
- Alineado con mejoras visuales del plugin `siip-payments-tools` v2.2.11
- Mantenida coherencia en diseño entre todos los plugins SIIP
### 📝 Nota
- Las esquinas redondeadas en imágenes del menú se consideraron pero se revirtieron
debido a que los logos rectangulares (Stripe, OXXO) se distorsionaban con `object-fit: cover`
## VERSIÓN 4.2.0 - 17-01-2026 ## VERSIÓN 4.2.0 - 17-01-2026
### 🚀 Nuevas Características (Features) ### 🚀 Nuevas Características (Features)
1. **Visualizador de Pagos Mensuales**: 1. **Visualizador de Pagos Mensuales**:
* Nueva sección en el portal administrativo para análisis visual de pagos. - Nueva sección en el portal administrativo para análisis visual de pagos.
* Selector de mes para consultar estadísticas de cualquier período. - Selector de mes para consultar estadísticas de cualquier período.
* Tarjetas estadísticas mostrando: Total de clientes activos, Clientes que pagaron, Clientes pendientes. - Tarjetas estadísticas mostrando: Total de clientes activos, Clientes que pagaron, Clientes pendientes.
* Gráfica de dona (doughnut) interactiva con Chart.js mostrando proporción de pagos. - Gráfica de dona (doughnut) interactiva con Chart.js mostrando proporción de pagos.
* Tabla detallada de clientes pendientes con información de saldo. - Tabla detallada de clientes pendientes con información de saldo.
* Cálculo automático de porcentajes de completitud. - Cálculo automático de porcentajes de completitud.
* Loader/spinner animado mientras se cargan los datos. - Loader/spinner animado mientras se cargan los datos.
2. **Integración de Microservicio para Metadata de Stripe**: 2. **Integración de Microservicio para Metadata de Stripe**:
* Nuevo microservicio Node.js (`vouchers-oxxopay-generator-service`) con acceso directo a la base de datos UCRM. - Nuevo microservicio Node.js (`vouchers-oxxopay-generator-service`) con acceso directo a la base de datos UCRM.
* Endpoint `/stripe-metadata/:id` para obtener metadata de pagos Stripe que no está disponible en la API de UCRM. - Endpoint `/stripe-metadata/:id` para obtener metadata de pagos Stripe que no está disponible en la API de UCRM.
* Endpoint `/payments/:id/user` para actualizar el `userId` de pagos vía SQL directo (campo no modificable por API). - Endpoint `/payments/:id/user` para actualizar el `userId` de pagos vía SQL directo (campo no modificable por API).
* Configuración mediante archivo `.env` para credenciales de base de datos. - Configuración mediante archivo `.env` para credenciales de base de datos.
### 🔵 Mejoras (Enhancements) ### 🔵 Mejoras (Enhancements)
1. **Sincronización Mejorada con CallBell**: 1. **Sincronización Mejorada con CallBell**:
* Fix crítico en sincronización de saldo: Ahora se actualiza correctamente en CallBell cuando se agregan facturas. - Fix crítico en sincronización de saldo: Ahora se actualiza correctamente en CallBell cuando se agregan facturas.
* Logging detallado agregado a `onlyUpdate()` para diagnóstico de sincronización. - Logging detallado agregado a `onlyUpdate()` para diagnóstico de sincronización.
* Comparación inteligente de campos para evitar PATCH innecesarios. - Comparación inteligente de campos para evitar PATCH innecesarios.
* Sincronización automática al agregar/editar facturas (`invoice.add`, `invoice.edit`). - Sincronización automática al agregar/editar facturas (`invoice.add`, `invoice.edit`).
* Sincronización automática al editar servicios (`service.edit`, `service.suspend`, etc.). - Sincronización automática al editar servicios (`service.edit`, `service.suspend`, etc.).
2. **Mejora en Categorización de Pagos Stripe**: 2. **Mejora en Categorización de Pagos Stripe**:
* Lógica mejorada en `ensureStripePaymentAttribute()` para asignar correctamente el atributo `tipoPagoStripe`. - Lógica mejorada en `ensureStripePaymentAttribute()` para asignar correctamente el atributo `tipoPagoStripe`.
* Normalización de valores de metadata: "OXXO" → "OXXO Pay" para coincidir con opciones de UCRM. - Normalización de valores de metadata: "OXXO" → "OXXO Pay" para coincidir con opciones de UCRM.
* Prioridad a metadata obtenida del microservicio sobre adivinación por nombre de método. - Prioridad a metadata obtenida del microservicio sobre adivinación por nombre de método.
* Fix de validación 422 para pagos OXXO que fallaban por valor de atributo no válido. - Fix de validación 422 para pagos OXXO que fallaban por valor de atributo no válido.
3. **Configuración para Producción**: 3. **Configuración para Producción**:
* Archivo `.env` agregado al microservicio con todas las credenciales de base de datos. - Archivo `.env` agregado al microservicio con todas las credenciales de base de datos.
* `docker-compose.yml` refactorizado para usar variables de entorno desde `.env`. - `docker-compose.yml` refactorizado para usar variables de entorno desde `.env`.
* Red Docker `unms_internal` configurada para comunicación segura entre servicios. - Red Docker `unms_internal` configurada para comunicación segura entre servicios.
* Puerto 5432 de PostgreSQL expuesto en `docker-compose.yml` principal para acceso del microservicio. - Puerto 5432 de PostgreSQL expuesto en `docker-compose.yml` principal para acceso del microservicio.
### 🐛 Correcciones (Bug Fixes) ### 🐛 Correcciones (Bug Fixes)
1. **Fix Metadata de Pagos Stripe**: Los pagos por transferencia bancaria y OXXO ahora se categorizan correctamente. 1. **Fix Metadata de Pagos Stripe**: Los pagos por transferencia bancaria y OXXO ahora se categorizan correctamente.
2. **Fix sincronización CallBell**: Saldo y estado del cliente ahora se actualizan correctamente en tiempo real. 2. **Fix sincronización CallBell**: Saldo y estado del cliente ahora se actualizan correctamente en tiempo real.
3. **Fix networking Docker**: Resueltos problemas de `ECONNREFUSED` entre contenedores mediante configuración de red interna. 3. **Fix networking Docker**: Resueltos problemas de `ECONNREFUSED` entre contenedores mediante configuración de red interna.
4. **Fix validación de atributos**: Normalización de valores para evitar errores 422 en la API de UCRM. 4. **Fix validación de atributos**: Normalización de valores para evitar errores 422 en la API de UCRM.
### 📝 Documentación ### 📝 Documentación
1. Logging mejorado en `ClientCallBellAPI.php` para comparaciones de campo. 1. Logging mejorado en `ClientCallBellAPI.php` para comparaciones de campo.
2. Logging agregado en `AbstractMessageNotifierFacade.php` para diagnóstico de sync. 2. Logging agregado en `AbstractMessageNotifierFacade.php` para diagnóstico de sync.
3. Documentación completa del flujo de datos del visualizador de pagos. 3. Documentación completa del flujo de datos del visualizador de pagos.
## VERSIÓN 4.1.0 - 15-01-2026 ## VERSIÓN 4.1.0 - 15-01-2026
### 🚀 Nuevas Características (Features) ### 🚀 Nuevas Características (Features)
1. **Microservicio PDF (`pdf-cropper`)**: 1. **Microservicio PDF (`pdf-cropper`)**:
* Nuevo servicio en Python (FastAPI + Poppler) desplegado en Docker (Puerto 8050) para la conversión de PDF a Imagen. - Nuevo servicio en Python (FastAPI + Poppler) desplegado en Docker (Puerto 8050) para la conversión de PDF a Imagen.
* Reemplaza la librería `Imagick` de PHP, aislando el procesamiento pesado fuera del plugin. - Reemplaza la librería `Imagick` de PHP, aislando el procesamiento pesado fuera del plugin.
* **Modo Full**: Garantiza la conversión del PDF completo respetando su relación de aspecto original (sin recortes ni "square crop"). - **Modo Full**: Garantiza la conversión del PDF completo respetando su relación de aspecto original (sin recortes ni "square crop").
* **Overlay de Texto**: Capacidad nativa en el backend para sobreescribir texto dinámicamente (ej. cambiar "Tarjeta de crédito Stripe" por "OXXO Pay") basado en parámetros. - **Overlay de Texto**: Capacidad nativa en el backend para sobreescribir texto dinámicamente (ej. cambiar "Tarjeta de crédito Stripe" por "OXXO Pay") basado en parámetros.
2. **Integración S3 / MinIO**: 2. **Integración S3 / MinIO**:
* Implementación de `MinioStorageService`. - Implementación de `MinioStorageService`.
* Los comprobantes (JPG) y Vouchers OXXO se suben automáticamente a MinIO en lugar de usar FTP. - Los comprobantes (JPG) y Vouchers OXXO se suben automáticamente a MinIO en lugar de usar FTP.
* Generación de URLs públicas seguras. - Generación de URLs públicas seguras.
### 🧹 Mantenimiento y Limpieza (Chores/Refactor) ### 🧹 Mantenimiento y Limpieza (Chores/Refactor)
1. **Limpieza Automática (Cleanup)**: 1. **Limpieza Automática (Cleanup)**:
* Se implementó lógica para eliminar archivos temporales locales (PDFs descargados, JPGs generados) inmediatamente después de una subida exitosa a MinIO. - Se implementó lógica para eliminar archivos temporales locales (PDFs descargados, JPGs generados) inmediatamente después de una subida exitosa a MinIO.
2. **Refactor `ClientCallBellAPI`**: 2. **Refactor `ClientCallBellAPI`**:
* Eliminación de código muerto relacionado con FTP de WordPress. - Eliminación de código muerto relacionado con FTP de WordPress.
* Implementación de cliente HTTP Guzzle para comunicación con `pdf-cropper`. - Implementación de cliente HTTP Guzzle para comunicación con `pdf-cropper`.
* **Cache Busting**: Se añade Timestamp al nombre de archivo (`_time()`) para evitar caché agresivo en WhatsApp/Navegadores. - **Cache Busting**: Se añade Timestamp al nombre de archivo (`_time()`) para evitar caché agresivo en WhatsApp/Navegadores.
### 🐛 Correcciones (Bug Fixes) ### 🐛 Correcciones (Bug Fixes)
1. **Fix Recorte de Imagen**: Se eliminó la restricción de relación de aspecto 1:1 (cuadrado) para evitar recortes. 1. **Fix Recorte de Imagen**: Se eliminó la restricción de relación de aspecto 1:1 (cuadrado) para evitar recortes.
2. **Standardización de Notas**: Actualización de `AbstractStripeOperationsFacade` para incluir explícitamente "OXXO" o "Transferencia" en las notas de pago. 2. **Standardización de Notas**: Actualización de `AbstractStripeOperationsFacade` para incluir explícitamente "OXXO" o "Transferencia" en las notas de pago.
## VERSIÓN 4.0.0 - 10-01-2026 ## VERSIÓN 4.0.0 - 10-01-2026
### 🟢 Novedades (Re-diseño UI/UX + Integ. Pagos) ### 🟢 Novedades (Re-diseño UI/UX + Integ. Pagos)
1**Portal Administrativo Integrado (Stripe + Oxxo)**: Se ha rediseñado completamente el panel administrativo (`Dashboard`) para incluir una sección dedicada a **Pagos Online**, permitiendo la generación de referencias SPEI y OXXO Pay sin salir del portal. 1**Portal Administrativo Integrado (Stripe + Oxxo)**: Se ha rediseñado completamente el panel administrativo (`Dashboard`) para incluir una sección dedicada a **Pagos Online**, permitiendo la generación de referencias SPEI y OXXO Pay sin salir del portal.
2**Visualización Inline de Vouchers OXXO**: Ahora los comprobantes de pago OXXO se generan y visualizan inmediatamente en una vista partida (Datos + Imagen) dentro del dashboard, eliminando la necesidad de abrir enlaces externos para verificación. 2**Visualización Inline de Vouchers OXXO**: Ahora los comprobantes de pago OXXO se generan y visualizan inmediatamente en una vista partida (Datos + Imagen) dentro del dashboard, eliminando la necesidad de abrir enlaces externos para verificación.
3**Carga FTP Híbrida**: Optimización inteligente que sube los vouchers al servidor FTP solo cuando es necesario (integraciones externas/webhooks) y utiliza visualización local para el administrador, garantizando máxima velocidad de interfaz. 3**Carga FTP Híbrida**: Optimización inteligente que sube los vouchers al servidor FTP solo cuando es necesario (integraciones externas/webhooks) y utiliza visualización local para el administrador, garantizando máxima velocidad de interfaz.
@ -81,91 +135,119 @@
5**Seguridad Reforzada**: Refactorización completa del manejo de credenciales, eliminando datos hardcodeados en el código y centralizándolos en la configuración segura del plugin. 5**Seguridad Reforzada**: Refactorización completa del manejo de credenciales, eliminando datos hardcodeados en el código y centralizándolos en la configuración segura del plugin.
### 🔵 Mejoras ### 🔵 Mejoras
1**Navegación Intuitiva**: Menú lateral rediseñado con accesos directos claros a "Pagos Stripe", "Notificaciones" y "Gestión de Instaladores". 1**Navegación Intuitiva**: Menú lateral rediseñado con accesos directos claros a "Pagos Stripe", "Notificaciones" y "Gestión de Instaladores".
2**Feedback Visual**: Nuevas alertas toast y modales informativos para confirmar acciones (Generación de referencias, errores de API, etc.). 2**Feedback Visual**: Nuevas alertas toast y modales informativos para confirmar acciones (Generación de referencias, errores de API, etc.).
3**Compatibilidad**: Ajustes en `manifest.json` y estructura de archivos para asegurar compatibilidad total con las últimas versiones de UISP. 3**Compatibilidad**: Ajustes en `manifest.json` y estructura de archivos para asegurar compatibilidad total con las últimas versiones de UISP.
## VERSIÓN 3.1.0 - 07-01-2026 ## VERSIÓN 3.1.0 - 07-01-2026
### 🟢 Novedades ### 🟢 Novedades
1**Re-envío Manual de Notificaciones de Pago**: Se añadió un nuevo apartado en el Dashboard que permite buscar clientes y re-disparar notificaciones de WhatsApp para pagos específicos de forma manual. 1**Re-envío Manual de Notificaciones de Pago**: Se añadió un nuevo apartado en el Dashboard que permite buscar clientes y re-disparar notificaciones de WhatsApp para pagos específicos de forma manual.
2**Buscador de Clientes en Dashboard**: Integración de buscador dinámico para localizar clientes y visualizar su historial de los últimos 10 pagos. 2**Buscador de Clientes en Dashboard**: Integración de buscador dinámico para localizar clientes y visualizar su historial de los últimos 10 pagos.
## VERSIÓN 3.0.0 - 02-01-2026 ## VERSIÓN 3.0.0 - 02-01-2026
### 🟢 Novedades ### 🟢 Novedades
1**Soporte Multi-Servicio para Antenas**: Ahora el plugin gestiona múltiples servicios por cliente, mostrando cada contraseña con el formato `Servicio 1: <pass> Servicio 2: <pass> ...`. 1**Soporte Multi-Servicio para Antenas**: Ahora el plugin gestiona múltiples servicios por cliente, mostrando cada contraseña con el formato `Servicio 1: <pass> Servicio 2: <pass> ...`.
2**Validación Granular de Provisionamiento**: Se implementó una lógica de detección por etapas (Servicio -> Sitio UISP -> Dispositivo) para evitar generar contraseñas en sitios "Location Inactive". 2**Validación Granular de Provisionamiento**: Se implementó una lógica de detección por etapas (Servicio -> Sitio UISP -> Dispositivo) para evitar generar contraseñas en sitios "Location Inactive".
3**Lazy Loading & Optimización de Recursos**: Implementación de un "Lazy Check" que detecta si ya hay una contraseña válida en el CRM para omitir llamadas innecesarias a la API de UISP, mejorando la velocidad y reduciendo el consumo de CPU. 3**Lazy Loading & Optimización de Recursos**: Implementación de un "Lazy Check" que detecta si ya hay una contraseña válida en el CRM para omitir llamadas innecesarias a la API de UISP, mejorando la velocidad y reduciendo el consumo de CPU.
### 🔵 Mejoras ### 🔵 Mejoras
1**Etiquetado Inteligente de Servicios**: Las etiquetas `Servicio 1:`, `Servicio 2:` ahora solo aparecen si el cliente tiene múltiples servicios; para un solo servicio, la contraseña se muestra directamente. 1**Etiquetado Inteligente de Servicios**: Las etiquetas `Servicio 1:`, `Servicio 2:` ahora solo aparecen si el cliente tiene múltiples servicios; para un solo servicio, la contraseña se muestra directamente.
2**Sincronización Avanzada con CallBell**: 2**Sincronización Avanzada con CallBell**: - Nuevo campo `Password Antena` enviado en formato JSON estructurado. - Unificación de peticiones PATCH (Resumen + Campos) en una sola llamada para mayor eficiencia.
- Nuevo campo `Password Antena` enviado en formato JSON estructurado.
- Unificación de peticiones PATCH (Resumen + Campos) en una sola llamada para mayor eficiencia.
3**Contraseñas "Printer-Friendly"**: El generador de contraseñas ahora utiliza un set de caracteres optimizado para mini-impresoras térmicas (Alfanumérico + `@`, `#`), eliminando caracteres ambiguos como `l`, `I`, `0`, `O`. 3**Contraseñas "Printer-Friendly"**: El generador de contraseñas ahora utiliza un set de caracteres optimizado para mini-impresoras térmicas (Alfanumérico + `@`, `#`), eliminando caracteres ambiguos como `l`, `I`, `0`, `O`.
4**Mensajes de Estado en CRM**: Se agregaron alertas visuales en el campo de contraseña para indicar estados de provisión: `⚠️ Sin sitio vinculado`, `⚠️ Sin antena vinculada`, `⚠️ Cliente sin servicios`. 4**Mensajes de Estado en CRM**: Se agregaron alertas visuales en el campo de contraseña para indicar estados de provisión: `⚠️ Sin sitio vinculado`, `⚠️ Sin antena vinculada`, `⚠️ Cliente sin servicios`.
5**Robustez en Entornos de Prueba**: Refinamiento del bypass de desarrollo para mantener la estabilidad de las claves generadas y evitar bucles infinitos de webhooks. 5**Robustez en Entornos de Prueba**: Refinamiento del bypass de desarrollo para mantener la estabilidad de las claves generadas y evitar bucles infinitos de webhooks.
### 🟡 Bugs Resueltos ### 🟡 Bugs Resueltos
1**Sincronización de Saldo**: Se corrigió la discrepancia de nombres entre `Saldo Actual` y `Saldo` que causaba actualizaciones redundantes infinitas con CallBell. 1**Sincronización de Saldo**: Se corrigió la discrepancia de nombres entre `Saldo Actual` y `Saldo` que causaba actualizaciones redundantes infinitas con CallBell.
2**Parseo de Passwords**: Refinamiento de expresiones regulares para capturar correctamente contraseñas multi-servicio. 2**Parseo de Passwords**: Refinamiento de expresiones regulares para capturar correctamente contraseñas multi-servicio.
3⃣ Se solucionó el bucle infinito de actualizaciones en el atributo `passwordAntenaCliente` que ocurría al detectar cambios en servicios sin dispositivos vinculados. 3⃣ Se solucionó el bucle infinito de actualizaciones en el atributo `passwordAntenaCliente` que ocurría al detectar cambios en servicios sin dispositivos vinculados.
## VERSIÓN 2.9.3 - 23-12-2025 ## VERSIÓN 2.9.3 - 23-12-2025
### 🟢 Novedades ### 🟢 Novedades
1⃣ Resolución dinámica del ID del método de pago ("Transferencia bancaria") mediante consulta a la API de UISP, mejorando la portabilidad del plugin entre distintos servidores. 1⃣ Resolución dinámica del ID del método de pago ("Transferencia bancaria") mediante consulta a la API de UISP, mejorando la portabilidad del plugin entre distintos servidores.
2⃣ Implementación de registro de pago automático desde Webhook Stripe para eventos de tipo `customer_cash_balance_transaction.created` (Saldo aplicado). 2⃣ Implementación de registro de pago automático desde Webhook Stripe para eventos de tipo `customer_cash_balance_transaction.created` (Saldo aplicado).
### 🟡 Bugs Resueltos ### 🟡 Bugs Resueltos
1⃣ Se corrigió el error de validación de la API de UCRM (422) mediante el cast explícito de `clientId` a integer y el uso de `methodId` como string. 1⃣ Se corrigió el error de validación de la API de UCRM (422) mediante el cast explícito de `clientId` a integer y el uso de `methodId` como string.
## VERSIÓN 2.9.2 ## VERSIÓN 2.9.2
### 🟡 Bugs Resueltos ### 🟡 Bugs Resueltos
1⃣ Se solucionó un bug que impedía obtener la contraseñas de la bóveda, ya que el response de la API cambió en la última actualización y la esstructura nueva impedía acceder al dato del password 1⃣ Se solucionó un bug que impedía obtener la contraseñas de la bóveda, ya que el response de la API cambió en la última actualización y la esstructura nueva impedía acceder al dato del password
## VERSIÓN 2.8.8 ## VERSIÓN 2.8.8
### 🟡 Bugs Resueltos ### 🟡 Bugs Resueltos
1⃣ Se solucionó un bug que impedía al BOT del CallBell mostrar el monto de la referencia de OXXO en el mensaje donde se le entrega el voucher al cliente, para el caso donde el cliente elegía crear su referencia con la CANTIDAD TOTAL. 1⃣ Se solucionó un bug que impedía al BOT del CallBell mostrar el monto de la referencia de OXXO en el mensaje donde se le entrega el voucher al cliente, para el caso donde el cliente elegía crear su referencia con la CANTIDAD TOTAL.
## VERSIÓN 2.8.7 ## VERSIÓN 2.8.7
### 🟢 Novedades ### 🟢 Novedades
1⃣ Ahora las referencias de **OXXO Pago** han cambiado, en lugar de enviarse la URL o link de pago al cliente será la imagen del código de barras y la información que aparece en el link directamente en el mensaje, de esta manera será más cómodo para el cliente tener la imagen en su chat a tener que abrir una URL o link externo. 1⃣ Ahora las referencias de **OXXO Pago** han cambiado, en lugar de enviarse la URL o link de pago al cliente será la imagen del código de barras y la información que aparece en el link directamente en el mensaje, de esta manera será más cómodo para el cliente tener la imagen en su chat a tener que abrir una URL o link externo.
### 🔵 Mejoras ### 🔵 Mejoras
1⃣ Se modificaron nodos del bot ***OXXO_BOT*** para poder adaptar esta actualización correctamente.
1⃣ Se modificaron nodos del bot **_OXXO_BOT_** para poder adaptar esta actualización correctamente.
2⃣ Mejoras en el código fuente del flujo de trabajo para las referencias de OXXO PAGO. 2⃣ Mejoras en el código fuente del flujo de trabajo para las referencias de OXXO PAGO.
## VERSIÓN 2.8.6 ## VERSIÓN 2.8.6
### 🔵 Mejoras ### 🔵 Mejoras
1⃣ Se modificó la información para el envío de notificaciones a llos instaladores en el flujo de trabajo para la desasignación de tareas que hacía que no se viera correctamente la información 1⃣ Se modificó la información para el envío de notificaciones a llos instaladores en el flujo de trabajo para la desasignación de tareas que hacía que no se viera correctamente la información
## VERSIÓN 2.8.5 ## VERSIÓN 2.8.5
### 🔵 Mejoras ### 🔵 Mejoras
1⃣ Se modificó la información para el envío de notificaciones a los clientes para su visita técnica: ahora ya no se envían las horas en que serán las visitas, SOLO LA FECHA. 1⃣ Se modificó la información para el envío de notificaciones a los clientes para su visita técnica: ahora ya no se envían las horas en que serán las visitas, SOLO LA FECHA.
2⃣ Se crearon nuevas plantillas de tipo utilidad y se adaptaron al flujo de trabajo en el código. 2⃣ Se crearon nuevas plantillas de tipo utilidad y se adaptaron al flujo de trabajo en el código.
### 🟡 Bugs Resueltos ### 🟡 Bugs Resueltos
1⃣ Se soluciono el bug que impedía enviar notificaciones a los instaladores para nuevas tareas. 1⃣ Se soluciono el bug que impedía enviar notificaciones a los instaladores para nuevas tareas.
## VERSIÓN 2.8.2 ## VERSIÓN 2.8.2
### 🟡 Bugs Resueltos ### 🟡 Bugs Resueltos
1⃣ No se enviaban las notificaciones de las tareas al instalador. Se cambió la plantilla de CallBell o WhatsApp con 3 variables en lugar de 8. 1⃣ No se enviaban las notificaciones de las tareas al instalador. Se cambió la plantilla de CallBell o WhatsApp con 3 variables en lugar de 8.
2⃣ Se agregó un nuevo tipo de pago ("applied_to_payment") en las propiedades de los Webhooks recibidos mediante Stripe por concepto de transferencias bancarias. Ya que sólo se revisaba el tipo de pago "funded" y eso hacía que no enviara los comprobantes de pago a los clientes para todos los casos. 2⃣ Se agregó un nuevo tipo de pago ("applied_to_payment") en las propiedades de los Webhooks recibidos mediante Stripe por concepto de transferencias bancarias. Ya que sólo se revisaba el tipo de pago "funded" y eso hacía que no enviara los comprobantes de pago a los clientes para todos los casos.
## VERSIÓN 2.8.1 ## VERSIÓN 2.8.1
### 🟡 Bugs Resueltos ### 🟡 Bugs Resueltos
1⃣ No se enviaban las notificaciones de las tareas al instalador. 1⃣ No se enviaban las notificaciones de las tareas al instalador.
## VERSIÓN 2.8.0 ## VERSIÓN 2.8.0
### 🟢 Novedades ### 🟢 Novedades
1⃣ Envío de contraseña de antena en el mensaje que se manda al instalador cuando se le asigna una tarea/servicio. 1⃣ Envío de contraseña de antena en el mensaje que se manda al instalador cuando se le asigna una tarea/servicio.
2⃣ Para clientes nuevos o que no tengan el campo personalizado de “Password Antena Cliente” al actualizarlos se les asignará ese campo o cuando se les actualice su servicio. 2⃣ Para clientes nuevos o que no tengan el campo personalizado de “Password Antena Cliente” al actualizarlos se les asignará ese campo o cuando se les actualice su servicio.
3⃣ Ahora se puede modificar tantas veces sea necesaria una tarea o servicio como su fecha o el instalador mientras la tarea permanezca en estado “Abiertos” SIN que se envíen notificaciones a los clientes o instaladores. 3⃣ Ahora se puede modificar tantas veces sea necesaria una tarea o servicio como su fecha o el instalador mientras la tarea permanezca en estado “Abiertos” SIN que se envíen notificaciones a los clientes o instaladores.
4⃣ Se agregó un prefijo al título de la tarea/servicio agendado cuando recién se da de alta para identificar que esta no ha sido notificada aún y se pueden realizar ajustes. 4⃣ Se agregó un prefijo al título de la tarea/servicio agendado cuando recién se da de alta para identificar que esta no ha sido notificada aún y se pueden realizar ajustes.
### 🔵 Mejoras ### 🔵 Mejoras
1⃣ Se modificó el flujo de trabajo para el envío de notificaciones a los clientes para su visita técnica, ahora son cuatro distintos tipos de flujo, anteriormente tres. 1⃣ Se modificó el flujo de trabajo para el envío de notificaciones a los clientes para su visita técnica, ahora son cuatro distintos tipos de flujo, anteriormente tres.
2⃣ Se reemplazaron algunas plantillas de mensajes de CallBell. 2⃣ Se reemplazaron algunas plantillas de mensajes de CallBell.
3⃣ Se renombró el uso de la etiqueta “CREARCLABESTRIPE” por “CREAR CLABE STRIPE” para un mejor entendimiento de su uso. 3⃣ Se renombró el uso de la etiqueta “CREARCLABESTRIPE” por “CREAR CLABE STRIPE” para un mejor entendimiento de su uso.
### 🟡 Bugs Resueltos ### 🟡 Bugs Resueltos
1⃣ Envío de notificaciones a los clientes y a los instaladores al CERRAR una tarea/servicio (Se mandaban mensajes de asignación y de visita del técnico ) haciendo no posible cerrar las tareas. 1⃣ Envío de notificaciones a los clientes y a los instaladores al CERRAR una tarea/servicio (Se mandaban mensajes de asignación y de visita del técnico ) haciendo no posible cerrar las tareas.

0
check_method.php Normal file → Executable file
View File

View File

@ -1 +1 @@
{"ipserver":"venus.siip.mx","apitoken":"gvcnIJqXdUjneVSjhl6THLlQcYXJyIFCcwHKVba2bvIrNraanCTb5VeoWuJ0TFZ9","unmsApiToken":"079c28f5-888c-457d-bd7a-0a4202590f75","tokencallbell":"g8thcZkXGd3xBj2g3TtYNYFMH1fuesbJ.b6a940ea7d78cf6c9e42f067b21c8ddf96e9fa2a9e307bfd0c7c7c4d7fa38f79","tokenstripe":"sk_test_51OkG0REFY1WEUtgRH6UxBK5pu80Aq5Iy8EcdPnf0cOWzuVLQTpyLCd7CbPzqMsWMafZOHElCxhEHF7g8boURjWlJ00tBwE0W1M","hostServerFTP":"siip.mx","usernameServerFTP":"siip0001","passServerFTP":"$spGiT,[wa)n","ipPuppeteer":"172.16.5.134","portPuppeteer":"4100","idPaymentAdminCRM":"1180","cashPaymentMethodId":true,"courtesyPaymentMethodId":true,"bankTransferPaymentMethodId":true,"paypalPaymentMethodId":true,"creditCardPaypalPaymentMethodId":true,"creditCardStripePaymentMethodId":true,"stripeSubscriptionCreditCardPaymentMethodId":true,"paypalSubscriptionPaymentMethodId":true,"mercadopagoPaymentMethodId":true,"checkPaymentMethodId":true,"customPaymentMethodId":true,"notificationTypeText":false,"installersDataWhatsApp":"{\r\n \"instaladores\": [\r\n {\r\n \"id\": 1019,\r\n \"nombre\": \"Mucio Robledo\",\r\n \"whatsapp\": \"4181878106\"\r\n },\r\n {\r\n \"id\": 1173,\r\n \"nombre\": \"Ángel Arvizu\",\r\n \"whatsapp\": \"4181878106\"\r\n },\r\n {\r\n \"id\": 1172,\r\n \"nombre\": \"Juan Rostro\",\r\n \"whatsapp\": \"4181878106\"\r\n },\r\n {\r\n \"id\": 1015,\r\n \"nombre\": \"Daniel Humberto\",\r\n \"whatsapp\": \"4181878106\"\r\n },\r\n {\r\n \"id\": 1131,\r\n \"nombre\": \"Gricelda Avalos\",\r\n \"whatsapp\": \"4181817609\"\r\n }\r\n ]\r\n}","debugMode":true,"minioEndpoint":"http://172.16.5.134:9002","minioPublicUrl":"https://aws-venus.siip.mx","minioAccessKey":"minioadmin","minioSecretKey":"minioadmin","minioBucket":"vouchers-oxxo","logging_level":true,"oxxoPayPaymentMethodId":true,"creditDebitCardPaymentMethodId":true} {"ipserver":"venus.siip.mx","apitoken":"gvcnIJqXdUjneVSjhl6THLlQcYXJyIFCcwHKVba2bvIrNraanCTb5VeoWuJ0TFZ9","unmsApiToken":"079c28f5-888c-457d-bd7a-0a4202590f75","tokencallbell":"g8thcZkXGd3xBj2g3TtYNYFMH1fuesbJ.b6a940ea7d78cf6c9e42f067b21c8ddf96e9fa2a9e307bfd0c7c7c4d7fa38f79","tokenstripe":"sk_test_51OkG0REFY1WEUtgRH6UxBK5pu80Aq5Iy8EcdPnf0cOWzuVLQTpyLCd7CbPzqMsWMafZOHElCxhEHF7g8boURjWlJ00tBwE0W1M","hostServerFTP":"siip.mx","usernameServerFTP":"siip0001","passServerFTP":"$spGiT,[wa)n","ipPuppeteer":"172.16.5.134","portPuppeteer":"4100","idPaymentAdminCRM":"1180","cashPaymentMethodId":true,"courtesyPaymentMethodId":true,"bankTransferPaymentMethodId":true,"paypalPaymentMethodId":true,"creditCardPaypalPaymentMethodId":true,"creditCardStripePaymentMethodId":true,"stripeSubscriptionCreditCardPaymentMethodId":true,"paypalSubscriptionPaymentMethodId":true,"mercadopagoPaymentMethodId":true,"checkPaymentMethodId":true,"customPaymentMethodId":true,"oxxoPayPaymentMethodId":true,"creditDebitCardPaymentMethodId":true,"notificationTypeText":false,"installersDataWhatsApp":"{\r\n \"instaladores\": [\r\n {\r\n \"id\": 1019,\r\n \"nombre\": \"Mucio Robledo\",\r\n \"whatsapp\": \"4181878106\"\r\n },\r\n {\r\n \"id\": 1173,\r\n \"nombre\": \"Ángel Arvizu\",\r\n \"whatsapp\": \"4181878106\"\r\n },\r\n {\r\n \"id\": 1172,\r\n \"nombre\": \"Juan Rostro\",\r\n \"whatsapp\": \"4181878106\"\r\n },\r\n {\r\n \"id\": 1015,\r\n \"nombre\": \"Daniel Humberto\",\r\n \"whatsapp\": \"4181878106\"\r\n },\r\n {\r\n \"id\": 1131,\r\n \"nombre\": \"Gricelda Avalos\",\r\n \"whatsapp\": \"4181817609\"\r\n }\r\n ]\r\n}","debugMode":true,"minioEndpoint":"http://172.16.5.134:9002","minioPublicUrl":"https://aws-venus.siip.mx","minioAccessKey":"minioadmin","minioSecretKey":"minioadmin","minioBucket":"vouchers-oxxo","logging_level":true}

File diff suppressed because one or more lines are too long

0
explore_db.php Normal file → Executable file
View File

0
find_attribute_id.php Normal file → Executable file
View File

0
inspect_payment.php Normal file → Executable file
View File

View File

@ -5,7 +5,7 @@
"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", "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", "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/", "url": "https://siip.mx/",
"version": "4.2.0", "version": "4.2.2",
"unmsVersionCompliancy": { "unmsVersionCompliancy": {
"min": "2.1.0", "min": "2.1.0",
"max": null "max": null
@ -270,7 +270,7 @@
"menu": [ "menu": [
{ {
"key": "Reports", "key": "Reports",
"label": "Administrar Notificaciones por WhatsApp", "label": "Portal Administrativo de Pagos de STRIPE y Notificaciones WhatsApp",
"type": "admin", "type": "admin",
"target": "iframe" "target": "iframe"
} }

2327
public.php

File diff suppressed because it is too large Load Diff

View File

@ -8,45 +8,27 @@ use Stripe\Exception\ApiErrorException;
class PaymentIntentService class PaymentIntentService
{ {
private $ucrmApiUrl; private $ucrmApi;
private $ucrmApiKey;
private $stripeApiKey; private $stripeApiKey;
private $httpClient;
private $stripeClient; private $stripeClient;
private $logger; private $logger;
public function __construct($ucrmApiUrl, $ucrmApiKey, $stripeApiKey, $logger = null) public function __construct($ucrmApi, $stripeApiKey, $logger = null)
{ {
$this->ucrmApiUrl = rtrim($ucrmApiUrl, '/'); $this->ucrmApi = $ucrmApi;
$this->ucrmApiKey = $ucrmApiKey;
$this->stripeApiKey = $stripeApiKey; $this->stripeApiKey = $stripeApiKey;
$this->logger = $logger; $this->logger = $logger;
$this->httpClient = new Client([
'base_uri' => $this->ucrmApiUrl . '/api/v1.0/',
'headers' => [
'X-Auth-App-Key' => $this->ucrmApiKey,
'Accept' => 'application/json',
],
'verify' => false,
'timeout' => 10,
]);
$this->stripeClient = new StripeClient($this->stripeApiKey); $this->stripeClient = new StripeClient($this->stripeApiKey);
} }
public function searchClients($query) public function searchClients($query)
{ {
try { try {
$response = $this->httpClient->get('clients', [ $clients = $this->ucrmApi->get('clients', [
'query' => [
'query' => $query, 'query' => $query,
'limit' => 5 'limit' => 5
]
]); ]);
$clients = json_decode($response->getBody(), true);
return array_map(function ($client) { return array_map(function ($client) {
return [ return [
'id' => $client['id'], 'id' => $client['id'],
@ -55,10 +37,12 @@ class PaymentIntentService
'username' => $client['username'], 'username' => $client['username'],
'fullAddress' => $client['fullAddress'] ?? '', 'fullAddress' => $client['fullAddress'] ?? '',
'companyName' => $client['companyName'], 'companyName' => $client['companyName'],
'clientType' => $client['clientType'], // 1 = residential, 2 = company 'clientType' => $client['clientType'],
'isSuspended' => $client['isSuspended'] ?? false,
'contacts' => $client['contacts'] ?? [],
'attributes' => $client['attributes'] ?? []
]; ];
}, $clients); }, $clients);
} catch (\Exception $e) { } catch (\Exception $e) {
return ['error' => $e->getMessage()]; return ['error' => $e->getMessage()];
} }
@ -67,8 +51,7 @@ class PaymentIntentService
public function getClientDetails($clientId) public function getClientDetails($clientId)
{ {
try { try {
$response = $this->httpClient->get("clients/{$clientId}"); $client = $this->ucrmApi->get("clients/{$clientId}");
$client = json_decode($response->getBody(), true);
$stripeCustomerId = null; $stripeCustomerId = null;
$clabeInterbancaria = null; $clabeInterbancaria = null;
@ -93,7 +76,6 @@ class PaymentIntentService
'email' => $this->getClientEmail($client), 'email' => $this->getClientEmail($client),
'accountOutstanding' => $client['accountOutstanding'] ?? 0 'accountOutstanding' => $client['accountOutstanding'] ?? 0
]; ];
} catch (\Exception $e) { } catch (\Exception $e) {
return ['error' => $e->getMessage()]; return ['error' => $e->getMessage()];
} }
@ -108,7 +90,7 @@ class PaymentIntentService
} }
} }
} }
return $clientData['username'] ?? ''; // Fallback, though username might not be email return $clientData['username'] ?? '';
} }
public function createPaymentIntent($clientId, $amount, $stripeCustomerId, $adminId = null) public function createPaymentIntent($clientId, $amount, $stripeCustomerId, $adminId = null)
@ -152,7 +134,6 @@ class PaymentIntentService
'currency' => $paymentIntent->currency, 'currency' => $paymentIntent->currency,
'next_action' => $paymentIntent->next_action 'next_action' => $paymentIntent->next_action
]; ];
} catch (ApiErrorException $e) { } catch (ApiErrorException $e) {
return ['success' => false, 'error' => $e->getMessage()]; return ['success' => false, 'error' => $e->getMessage()];
} catch (\Exception $e) { } catch (\Exception $e) {

0
test_microservice_patch.php Normal file → Executable file
View File