Hub

2026-05-12

martes · 12 de mayo de 2026

2026-05-12 (martes)

Sesiones de hoy

Fix: anticiposVigentes.find is not a function en joyeriameza

Proyecto: joyeriameza

Reporte de Sergio: error en consola JS al aplicar un anticipo en la vista de finalizar venta:

Uncaught TypeError: anticiposVigentes.find is not a function
  at HTMLSelectElement.<anonymous> (joyeria_meza.min.v1776276260.js:263:275)

Causa raíz: CuentasJoyeriaController::ventaDevolucion filtraba $cliente->anticipos_vigentes con array_filter, que preserva las llaves originales. Si el cliente tenía anticipos en varias sucursales y se descartaba uno intermedio, quedaba un array con llaves no consecutivas ([0=>…, 2=>…]). json_encode lo serializaba como objeto JSON ({"0":…,"2":…}), y jQuery lo entregaba al JS como objeto sin .find().

Sólo se reproducía con clientes con anticipos vigentes en varias sucursales — por eso no era constante.

Fixes aplicados:

  1. CuentasJoyeriaController.php:109-111array_values(array_filter(...)) para reindexar.
  2. webroot/js/jm.clientes.js:232-236 — agregado else para no leer .cantidad sobre undefined.
  3. src/Template/Element/venta/div_informacion_venta.ctp:17json_encode($anticipos ?? [], ...) para que el atributo sea siempre un array válido.
  4. Borré tmp/cache/asset_compress/joyeria_meza.min.js para forzar regeneración del bundle.

Deploy: commit 5a0f4c9 empujado a origin/master y servidor/master. El remoto servidor corre hook post-receive.

Validado en producción por Sergio el mismo día. ✓


Métricas del día

  • 1 bug de cliente resuelto y desplegado.
  • 3 archivos modificados, 5 inserciones, 4 borrados.