Protege la integridad de los cálculos monetarios. Se activa siempre que se detecten operaciones de precios, impuestos, caja, nómina o inventario valorizado.
Este sistema gestiona dinero real. El uso de aritmética de punto flotante (float, double) para cálculos monetarios está ESTRICTAMENTE PROHIBIDO debido a errores de precisión IEEE 754.
Almacenamiento y Cálculo (Backend/Logic):
1500. Si hubiera centavos (ej. UF), multiplica por 100 o 1000 antes de operar.number en TypeScript para dinero sin validación previa; prefiere tipos personalizados o BigInt si los montos exceden el límite seguro de JS.Base de Datos (PostgreSQL):
INTEGER o BIGINT para columnas de dinero.REAL, FLOAT o MONEY (el tipo money de Postgres es problemático para migraciones).Visualización (Frontend):
src/components/...).Intl.NumberFormat('es-CL', ...) para el formateo visual.Antes de confirmar cualquier código que toque src/actions/quotes-v2.ts o src/logic/sales.ts, verifica:
/ que pueda generar decimales infinitos? -> Usa librerías de redondeo seguro.0.1 + 0.2? -> ERROR. Convierte a enteros primero.❌ INCORRECTO (Rechazar):
const total = price * 1.19; // Riesgo de decimales flotantes
return total;
✅ CORRECTO (Aprobar):
// Trabajando con enteros, redondeando al final
const net = 1000;
const taxRate = 19; // 19%
const total = Math.round(net * (1 + taxRate / 100));
// O mejor aún, usando librerías de utilidades si existen en src/lib/