feat: _recalcEditTotals oninput; fmtBR onblur; IDs nos spans de totais
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-06-30 14:58:42 +00:00
parent 3e94789cb0
commit 84578fe43d
+39 -5
View File
@@ -2527,7 +2527,10 @@ function editTableHTML(id, headers, rows, numericCols) {
const displayVal = (val !== null && val !== undefined && val !== '')
? (isNum ? fmtNum(val) : val)
: '';
return `<td style="padding:1px 2px"><input data-tbl="${id}" data-row="${ri}" data-col="${ci}" value="${displayVal}" ${isNum ? `style="width:100%;padding:2px;font-size:11px;text-align:right;border:1px solid #ccc;border-radius:2px"` : `style="width:100%;padding:2px;font-size:11px;border:1px solid #ccc;border-radius:2px"`} /></td>`;
const extra = isNum
? `oninput="window._recalcEditTotals()" onblur="this.value=fmtBR(this)" `
: '';
return `<td style="padding:1px 2px"><input data-tbl="${id}" data-row="${ri}" data-col="${ci}" value="${displayVal}" ${extra}${isNum ? `style="width:100%;padding:2px;font-size:11px;text-align:right;border:1px solid #ccc;border-radius:2px"` : `style="width:100%;padding:2px;font-size:11px;border:1px solid #ccc;border-radius:2px"`} /></td>`;
}).join('');
return `<tr>${cells}</tr>`;
}).join('');
@@ -2586,6 +2589,35 @@ function readEditTables() {
return tables;
}
// Recalcula todos os totais do modal de edição e atualiza o display
window._recalcEditTotals = function() {
const tables = readEditTables();
const cartCred_tot = (tables.credito || []).reduce((s, r) => s + (r[0] || 0), 0);
const cartDeb_tot = (tables.debito || []).reduce((s, r) => s + (r[0] || 0), 0);
const cartAli_tot = (tables.alimentacao || []).reduce((s, r) => s + (r[0] || 0), 0);
const cartPix_tot = (tables.pix || []).reduce((s, r) => s + (r[0] || 0), 0);
const vales_tot = (tables.vales || []).reduce((s, r) => s + (r[1] || 0), 0);
const desp_tot = (tables.despesas || []).reduce((s, r) => s + (r[2] || 0), 0);
const sang_tot = (tables.sangrias || []).reduce((s, r) => s + (r[1] || 0), 0);
const pixcnpj_tot = (tables.pixcnpj || []).reduce((s, r) => s + (r[1] || 0), 0);
const recv_tot = (tables.receber || []).reduce((s, r) => s + (r[1] || 0), 0);
const canc_tot = (tables.cancelamentos || []).reduce((s, r) => s + (r[1] || 0), 0);
const el = id => document.getElementById(id);
const fmtTot = v => v > 0 ? 'R$ ' + v.toLocaleString('pt-BR', { minimumFractionDigits: 2 }) : '—';
if (el('edit-total-credito')) el('edit-total-credito').textContent = fmtTot(cartCred_tot);
if (el('edit-total-debito')) el('edit-total-debito').textContent = fmtTot(cartDeb_tot);
if (el('edit-total-alimentacao')) el('edit-total-alimentacao').textContent = fmtTot(cartAli_tot);
if (el('edit-total-pix')) el('edit-total-pix').textContent = fmtTot(cartPix_tot);
if (el('edit-total-vales')) el('edit-total-vales').textContent = fmtTot(vales_tot);
if (el('edit-total-despesas')) el('edit-total-despesas').textContent = fmtTot(desp_tot);
if (el('edit-total-sangrias')) el('edit-total-sangrias').textContent = fmtTot(sang_tot);
if (el('edit-total-pixcnpj')) el('edit-total-pixcnpj').textContent = fmtTot(pixcnpj_tot);
if (el('edit-total-receber')) el('edit-total-receber').textContent = fmtTot(recv_tot);
if (el('edit-total-cancel')) el('edit-total-cancel').textContent = fmtTot(canc_tot);
};
// Modal de edição completo com todas as grades
function openEditModal(full) {
window._editModalOpen = true;
@@ -2649,10 +2681,12 @@ function openEditModal(full) {
<div><strong>Total Débito:</strong> <span id="edit-total-debito">${fmtMR(full.total_cartao_debito||0)}</span></div>
<div><strong>Total Alimentação:</strong> <span id="edit-total-alimentacao">${fmtMR(full.total_cartao_alimentacao||0)}</span></div>
<div><strong>Total PIX:</strong> <span id="edit-total-pix">${fmtMR(full.total_cartao_pix||0)}</span></div>
<div><strong>Total Sangrias:</strong> ${fmtMR(full.total_sangrias||0)}</div>
<div><strong>Total Despesas:</strong> ${fmtMR(full.total_despesas||0)}</div>
<div><strong>Total Vales:</strong> ${fmtMR(full.total_vales||0)}</div>
<div><strong>Total PIX CNPJ:</strong> ${fmtMR(full.total_pixcnpj||0)}</div>
<div><strong>Total Sangrias:</strong> <span id="edit-total-sangrias">${fmtMR(full.total_sangrias||0)}</span></div>
<div><strong>Total Despesas:</strong> <span id="edit-total-despesas">${fmtMR(full.total_despesas||0)}</span></div>
<div><strong>Total Vales:</strong> <span id="edit-total-vales">${fmtMR(full.total_vales||0)}</span></div>
<div><strong>Total PIX CNPJ:</strong> <span id="edit-total-pixcnpj">${fmtMR(full.total_pixcnpj||0)}</span></div>
<div><strong>Total Receber:</strong> <span id="edit-total-receber">${fmtMR(full.total_areceber||0)}</span></div>
<div><strong>Total Cancel:</strong> <span id="edit-total-cancel">${fmtMR(full.total_cancelamentos||0)}</span></div>
</div>`;
const overlay = document.createElement('div');