fix: parseNum strip 'R$', fmtMR/fmtBR mostram R$ 0,00 para zero
Build Fechamento de Caixa / build (macos-14, app) (push) Has been cancelled
Build Fechamento de Caixa / build (ubuntu-22.04, deb) (push) Has been cancelled
Build Fechamento de Caixa / build (windows-2022, msi) (push) Has been cancelled

This commit is contained in:
root
2026-07-01 14:38:32 +00:00
parent bf878545b3
commit a8319d96a6
+5 -3
View File
@@ -613,7 +613,7 @@ const fmt = v => 'R$ ' + (parseFloat(v) || 0).toLocaleString('pt-BR', { minimumF
const parseNum = v => { const parseNum = v => {
// Already a number? Return directly (don't treat '.' as thousand separator) // Already a number? Return directly (don't treat '.' as thousand separator)
if (typeof v === 'number') return isNaN(v) ? 0 : v; if (typeof v === 'number') return isNaN(v) ? 0 : v;
const s = String(v || '0').trim(); const s = String(v || '0').trim().replace(/^R\$\s*/, ''); // strip currency prefix first
if (!s) return 0; if (!s) return 0;
// Brazilian format: 1.234,56 → 1234.56 // Brazilian format: 1.234,56 → 1234.56
// Strategy: if string has comma, treat as BRL (decimal comma) // Strategy: if string has comma, treat as BRL (decimal comma)
@@ -2707,7 +2707,8 @@ function openEditModal(full) {
// helper para fmt dinheiro // helper para fmt dinheiro
const fmtMR = v => { const fmtMR = v => {
const n = parseFloat(v||0); const n = parseFloat(v||0);
if (isNaN(n) || n === 0) return ''; if (isNaN(n)) return '';
if (n === 0) return 'R$ 0,00';
return 'R$ ' + n.toLocaleString('pt-BR', { minimumFractionDigits: 2 }); return 'R$ ' + n.toLocaleString('pt-BR', { minimumFractionDigits: 2 });
}; };
@@ -2936,7 +2937,8 @@ function openEditModal(full) {
// Formata campo de dinheiro brasileiro // Formata campo de dinheiro brasileiro
function fmtBR(inp) { function fmtBR(inp) {
const v = parseNum(inp.value); const v = parseNum(inp.value);
if (isNaN(v) || v === 0) return ''; if (isNaN(v)) return '';
if (v === 0) return 'R$ 0,00';
return 'R$ ' + v.toLocaleString('pt-BR', { minimumFractionDigits: 2 }); return 'R$ ' + v.toLocaleString('pt-BR', { minimumFractionDigits: 2 });
} }