Nuevas Características: • Visualizador de pagos mensuales con gráfica de dona (Chart.js) • Tarjetas estadísticas: clientes activos, pagados y pendientes • Tabla de clientes pendientes con saldos en tiempo real • Microservicio Node.js para metadata de Stripe (acceso directo a BD) Mejoras: • Fix crítico: Sincronización automática de saldo en CallBell al agregar facturas • Categorización mejorada de pagos OXXO y Transferencias Stripe • Normalización de valores: "OXXO" → "OXXO Pay" para evitar errores 422 • Configuración .env para credenciales de base de datos Correcciones: • Saldo y estado ahora se actualizan correctamente en CallBell • Fix networking Docker (ECONNREFUSED resuelto) • Fix validación de atributos en API de UCRM • Actualización automática de userId en pagos Stripe Archivos principales: public.php (visualizador de pagos) AbstractMessageNotifierFacade.php (logging sync) ClientCallBellAPI.php (comparación de campos) AbstractStripeOperationsFacade.php (normalización) manifest.json, README.md, CHANGELOG.md (docs)
48 lines
1.4 KiB
PHP
Executable File
48 lines
1.4 KiB
PHP
Executable File
<?php
|
|
namespace JmesPath;
|
|
|
|
/**
|
|
* Uses an external tree visitor to interpret an AST.
|
|
*/
|
|
class AstRuntime
|
|
{
|
|
private $parser;
|
|
private $interpreter;
|
|
private $cache = [];
|
|
private $cachedCount = 0;
|
|
|
|
public function __construct(
|
|
?Parser $parser = null,
|
|
?callable $fnDispatcher = null
|
|
) {
|
|
$fnDispatcher = $fnDispatcher ?: FnDispatcher::getInstance();
|
|
$this->interpreter = new TreeInterpreter($fnDispatcher);
|
|
$this->parser = $parser ?: new Parser();
|
|
}
|
|
|
|
/**
|
|
* Returns data from the provided input that matches a given JMESPath
|
|
* expression.
|
|
*
|
|
* @param string $expression JMESPath expression to evaluate
|
|
* @param mixed $data Data to search. This data should be data that
|
|
* is similar to data returned from json_decode
|
|
* using associative arrays rather than objects.
|
|
*
|
|
* @return mixed Returns the matching data or null
|
|
*/
|
|
public function __invoke($expression, $data)
|
|
{
|
|
if (!isset($this->cache[$expression])) {
|
|
// Clear the AST cache when it hits 1024 entries
|
|
if (++$this->cachedCount > 1024) {
|
|
$this->cache = [];
|
|
$this->cachedCount = 0;
|
|
}
|
|
$this->cache[$expression] = $this->parser->parse($expression);
|
|
}
|
|
|
|
return $this->interpreter->visit($this->cache[$expression], $data);
|
|
}
|
|
}
|