Solucionado el bug que impedía regresar en la respuesta el monto total hacia el bot de CallBell, lo que hacía que mostrara siempre Cantidad cero, esto se realizó en el archivo AbstractOxxoOperationsFacade.php

This commit is contained in:
server 2025-06-11 11:07:59 -06:00
parent 8d8a1ec648
commit c9e2466353
11 changed files with 64811 additions and 60 deletions

View File

@ -2,56 +2,67 @@
Este plugin sincroniza los clientes del sitema 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
## REGISTRO DE CAMBIOS
# REGISTRO DE CAMBIOS
# VERSIÓN 2.8.7
## 🟢 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.
## VERSIÓN 2.8.8
### 🟡 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.
## VERSIÓN 2.8.7
### 🟢 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.
### 🔵 Mejoras
1⃣ Se modificaron nodos del bot ***OXXO_BOT*** para poder adaptar esta actualización correctamente.
## 🔵 Mejoras
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.
# VERSIÓN 2.8.6
## 🔵 Mejoras
## VERSIÓN 2.8.6
### 🔵 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
# VERSIÓN 2.8.5
## 🔵 Mejoras
## VERSIÓN 2.8.5
### 🔵 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.
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.
## 🟡 Bugs Resueltos
### 🟡 Bugs Resueltos
# VERSIÓN 2.8.2
## VERSIÓN 2.8.2
## 🟡 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
* 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.
### 🟡 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.
## REGISTRO DE CAMBIOS
# VERSIÓN 2.8.1
## 🟡 Bugs Resueltos
* 1⃣ No se enviaban las notificaciones de las tareas al instalador.
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.0
## VERSIÓN 2.8.1
### 🟡 Bugs Resueltos
1⃣ No se enviaban las notificaciones de las tareas al instalador.
## VERSIÓN 2.8.0
## 🟢 Novedades
* 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.
* 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.
### 🟢 Novedades
1⃣ Envío de contraseña de antena en el mensaje que se manda al instalador cuando se le asigna una tarea/servicio.
## 🔵 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.
* 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.
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.
## 🟡 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.
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.
### 🔵 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.
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.
### 🟡 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.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 104 KiB

File diff suppressed because one or more lines are too long

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",
"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": "2.8.7",
"version": "2.8.8",
"unmsVersionCompliancy": {
"min": "2.1.0",
"max": null

View File

@ -70,7 +70,7 @@ abstract class AbstractOxxoOperationsFacade
$integerAmount = $amount;
$this->logger->info("Creando referencia del cliente para OXXO: " . PHP_EOL);
$configManager = \Ubnt\UcrmPluginSdk\Service\PluginConfigManager::create();
$configManager = PluginConfigManager::create();
$config = $configManager->loadConfig();
$StripeToken = $config['tokenstripe'];
$IPServer = $config['ipserver'];
@ -178,13 +178,13 @@ abstract class AbstractOxxoOperationsFacade
}
if ($amount === null) {
$amount = abs($arrayClientCRM['accountOutstanding']);
$amount = abs($arrayClientCRM['accountOutstanding']); //Monto adeudado del cliente
} else {
$this->logger->info("Monto proporcionado directamente: $amount " . PHP_EOL);
}
if ($amount > 10) {
$amount = intval($amount * 100);
$amountInCents = intval($amount * 100); // Convertir a centavos
try {
$this->logger->info("Creando referencia en Stripe por $amount para el cliente $stripeCustomerId" . PHP_EOL);
@ -195,7 +195,7 @@ abstract class AbstractOxxoOperationsFacade
$response = $guzzleClient->post('https://api.stripe.com/v1/payment_intents', [
'auth' => [$StripeToken, ''],
'form_params' => [
'amount' => $amount,
'amount' => $amountInCents,
'currency' => 'mxn',
'payment_method_types' => ['customer_balance', 'card', 'oxxo'],
'description' => 'Pago de servicio de SIIP Internet',
@ -226,7 +226,7 @@ abstract class AbstractOxxoOperationsFacade
$arrayOxxoPayment['failDescription'] = 'Error de conexión con Stripe: ' . $clientID;
$arrayOxxoPayment['clientID'] = $clientID;
$arrayOxxoPayment['clientFullName'] = $clientFullName;
$arrayOxxoPayment['amount'] = $integerAmount;
$arrayOxxoPayment['amount'] = $amount;
$arrayOxxoPayment['voucher_image_url'] = '';
return $arrayOxxoPayment;
@ -239,7 +239,7 @@ abstract class AbstractOxxoOperationsFacade
$arrayOxxoPayment['failDescription'] = 'Error de la API de Stripe: ' . $clientID;
$arrayOxxoPayment['clientID'] = $clientID;
$arrayOxxoPayment['clientFullName'] = $clientFullName;
$arrayOxxoPayment['amount'] = $integerAmount;
$arrayOxxoPayment['amount'] = $amount;
$arrayOxxoPayment['voucher_image_url'] = '';
return $arrayOxxoPayment;
@ -259,7 +259,7 @@ abstract class AbstractOxxoOperationsFacade
$arrayOxxoPayment['error'] = 'errorCreatePaymentIntent';
$arrayOxxoPayment['clientID'] = $clientID;
$arrayOxxoPayment['clientFullName'] = $clientFullName;
$arrayOxxoPayment['amount'] = $integerAmount;
$arrayOxxoPayment['amount'] = $amount;
$arrayOxxoPayment['voucher_image_url'] = '';
return $arrayOxxoPayment;
@ -278,7 +278,7 @@ abstract class AbstractOxxoOperationsFacade
$arrayOxxoPayment['failDescription'] = "Nombre/apellido inválido: ' . $firstName . ' ' . $lastName";
$arrayOxxoPayment['clientID'] = $clientID;
$arrayOxxoPayment['clientFullName'] = $clientFullName;
$arrayOxxoPayment['amount'] = $integerAmount;
$arrayOxxoPayment['amount'] = $amount;
$arrayOxxoPayment['voucher_image_url'] = '';
return $arrayOxxoPayment;
@ -315,7 +315,7 @@ abstract class AbstractOxxoOperationsFacade
$arrayOxxoPayment['failDescription'] = 'Error al confirmar PaymentIntent: ' . $e->getMessage();
$arrayOxxoPayment['clientID'] = $clientID;
$arrayOxxoPayment['clientFullName'] = $clientFullName;
$arrayOxxoPayment['amount'] = $integerAmount;
$arrayOxxoPayment['amount'] = $amount;
$arrayOxxoPayment['voucher_image_url'] = '';
return $arrayOxxoPayment;
}
@ -335,7 +335,7 @@ abstract class AbstractOxxoOperationsFacade
$arrayOxxoPayment['failDescription'] = '';
$arrayOxxoPayment['clientID'] = $clientID;
$arrayOxxoPayment['clientFullName'] = $clientFullName;
$arrayOxxoPayment['amount'] = $integerAmount;
$arrayOxxoPayment['amount'] = $amount;
$this->logger->info("Referencia OXXO creada correctamente." . PHP_EOL);
// Configuración de la API de tu servicio Docker de Puppeteer
@ -430,7 +430,7 @@ abstract class AbstractOxxoOperationsFacade
$arrayOxxoPayment['failDescription'] = 'El PaymentIntent no tiene detalles de OXXO disponibles. Estado: ' . $paymentIntentConfirm['status'];
$arrayOxxoPayment['clientID'] = $clientID;
$arrayOxxoPayment['clientFullName'] = $clientFullName;
$arrayOxxoPayment['amount'] = $integerAmount;
$arrayOxxoPayment['amount'] = $amount;
$arrayOxxoPayment['voucher_image_url'] = '';
return $arrayOxxoPayment;
@ -445,7 +445,7 @@ abstract class AbstractOxxoOperationsFacade
$arrayOxxoPayment['failDescription'] = 'Este cliente no tiene adeudos.';
$arrayOxxoPayment['clientID'] = $clientID;
$arrayOxxoPayment['clientFullName'] = $clientFullName;
$arrayOxxoPayment['amount'] = $integerAmount;
$arrayOxxoPayment['amount'] = $amount;
$arrayOxxoPayment['voucher_image_url'] = '';
return $arrayOxxoPayment;
}

File diff suppressed because it is too large Load Diff

View File

@ -34,22 +34,13 @@ class ComposerAutoloaderInitd6442a7ec79f2f43fc97d16bdcdd18ee
call_user_func(\Composer\Autoload\ComposerStaticInitd6442a7ec79f2f43fc97d16bdcdd18ee::getInitializer($loader));
} else {
$map = require __DIR__ . '/autoload_namespaces.php';
foreach ($map as $namespace => $path) {
$loader->set($namespace, $path);
}
$map = require __DIR__ . '/autoload_psr4.php';
foreach ($map as $namespace => $path) {
$loader->setPsr4($namespace, $path);
}
$classMap = require __DIR__ . '/autoload_classmap.php';
if ($classMap) {
$loader->addClassMap($classMap);
}
}
$loader->setClassMapAuthoritative(true);
$loader->register(true);
if ($useStaticLoader) {

File diff suppressed because it is too large Load Diff

View File

@ -2040,6 +2040,6 @@
"install-path": "../ubnt/ucrm-plugin-sdk"
}
],
"dev": true,
"dev": false,
"dev-package-names": []
}

View File

@ -5,9 +5,9 @@
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
'reference' => 'c73a51bbf23d230c7a46654cf8b95a51f7da5d13',
'reference' => '8d8a1ec64831255d9841b3db558e14f4224d41fb',
'name' => 'ucrm-plugins/sms-twilio',
'dev' => true,
'dev' => false,
),
'versions' => array(
'firebase/php-jwt' => array(
@ -307,7 +307,7 @@
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
'reference' => 'c73a51bbf23d230c7a46654cf8b95a51f7da5d13',
'reference' => '8d8a1ec64831255d9841b3db558e14f4224d41fb',
'dev_requirement' => false,
),
),