Diagnóstico en lenguaje simple y plan de solución.
Nos contactaron porque, al cargar datos en UPBANC, lo que se registra en un lugar no se refleja en otro. Auditamos el sistema completo —código y base de datos— y la causa está identificada y tiene solución.
Los módulos no cuadran porque la app tiene dos cerebros que calculan distinto, y varios módulos son islas que no se hablan entre sí.
El sistema calcula los mismos números en dos lugares distintos que no están de acuerdo. No es un dato que se pierda al azar: es un desacuerdo estructural entre lo que piensa el navegador y lo que dicta la base de datos.
Mientras los dos cerebros sigan calculando por separado, los números van a seguir sin cuadrar sin importar cuántas veces se corrijan a mano.
Seis hallazgos confirmados en el código. El primero, además, quedó confirmado con datos de tu base real. Toca cada uno para ver el detalle.
Al cerrar un cuadre, la app lo guarda con un estado que la base no reconoce como "cerrado". El mecanismo que recalcula el arrastre del grupo solo se dispara con el estado correcto, así que no corre.
Al traer los movimientos desde la nube, el tipo de gasto se interpreta mal y se cuenta como dinero que entra en vez de salir.
La app arma el cierre por partes —guarda el cuadre, crea el movimiento y crea la cuenta por cobrar en pasos separados— en vez de usar la función oficial que lo hace todo de una sola vez.
Al guardar un cierre diario no se genera movimiento de caja ni se alimenta el cuadre semanal.
El dato de clasificación de cada salida de dinero se descarta al guardar y se "adivina" al cargar.
Las capas usan palabras distintas para lo mismo (estados como confirmado / cerrado / anulado) y roles distintos (owner/cashier vs administrador/cajero).
No es una teoría. Esta consulta corrió sobre tu base de datos de producción el 18 de junio de 2026.
Los cierres se guardan como "confirmed", así que el disparador del arrastre —que espera "closed"— nunca corre. Además, 9 de 13 cuadres quedaron incompletos (pending). El síntoma reportado queda confirmado con datos reales.
Es la pregunta correcta, y la respuesta sorprende. Mueve el interruptor y mira qué cambia.
El principio que guía todo el plan: la base de datos calcula; la app solo muestra y envía. Se elimina el cálculo duplicado del navegador.
La consulta #3 ya confirmó el problema. Faltan tres consultas de solo lectura para cerrar el diagnóstico al 100%. Pídele a Crisgeury, dueño del repositorio, que las corra en su Supabase.