Compare commits

...

2 Commits

Author SHA1 Message Date
root 42aadcca2c fix: dados JSONB no PATCH, total_cancelamentos, corrige duplicados total_*
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
2026-07-01 14:50:35 +00:00
root a8319d96a6 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
2026-07-01 14:38:32 +00:00
+20 -12
View File
@@ -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 });
}
@@ -3032,23 +3034,29 @@ window.salvarEdicaoModal = async function() {
saldo_debito: cartDeb_tot,
saldo_alimentacao: cartAli_tot,
saldo_vales: vales_tot,
total_pixcnpj: pixcnpj_tot,
saldo_areceber: recv_tot,
// Totais
total_vales: vales_tot,
total_despesas: desp_tot,
total_sangrias: sang_tot,
total_areceber: recv_tot,
total_pixcnpj: pixcnpj_tot,
total_areceber: recv_tot,
total_cancelamentos: canc_tot,
// Lançamentos detalhados
vales: vales,
despesas: despesas,
sangrias: sangrias,
cancelamentos: cancelamentos,
pixcnpj: pixcnpj,
receber: receber,
// Lançamentos detalhados (JSONB — gravados no campo `dados`)
dados: JSON.stringify({
cartoes,
vales,
despesas,
sangrias,
cancelamentos,
pixcnpj,
receber,
clientes: parseInt(inp('edit-clientes') || '0'),
frango: parseInt(inp('edit-frango') || '0'),
vendas: p(inp('edit-vendas')),
}),
// Contadores
clientes: parseInt(inp('edit-clientes') || '0'),