diff --git a/src/index.html b/src/index.html
index 1a69eaf..2952aeb 100644
--- a/src/index.html
+++ b/src/index.html
@@ -613,7 +613,7 @@ const fmt = v => 'R$ ' + (parseFloat(v) || 0).toLocaleString('pt-BR', { minimumF
const parseNum = v => {
// Already a number? Return directly (don't treat '.' as thousand separator)
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;
// Brazilian format: 1.234,56 → 1234.56
// Strategy: if string has comma, treat as BRL (decimal comma)
@@ -2707,7 +2707,8 @@ function openEditModal(full) {
// helper para fmt dinheiro
const fmtMR = v => {
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 });
};
@@ -2936,7 +2937,8 @@ function openEditModal(full) {
// Formata campo de dinheiro brasileiro
function fmtBR(inp) {
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 });
}