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:
CuentasJoyeriaController.php:109-111—array_values(array_filter(...))para reindexar.webroot/js/jm.clientes.js:232-236— agregadoelsepara no leer.cantidadsobreundefined.src/Template/Element/venta/div_informacion_venta.ctp:17—json_encode($anticipos ?? [], ...)para que el atributo sea siempre un array válido.- Borré
tmp/cache/asset_compress/joyeria_meza.min.jspara 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.