diff --git a/src/index.html b/src/index.html
index a9139ad..9914d05 100644
--- a/src/index.html
+++ b/src/index.html
@@ -1486,9 +1486,11 @@ ${data.observacoes ? `
${data.observacoes}
` : ''}
function buildPrintHTML(data) {
const fmt = v => 'R$ ' + (v || 0).toFixed(2).replace('.', ',');
const fmtNeg = v => (v < 0 ? '-' : '') + 'R$ ' + Math.abs(v || 0).toFixed(2).replace('.', ',');
- // Diferença = fechamento - saldo_esperado - cancelamentos
- const diferenca = data.diferenca !== undefined ? data.diferenca
- : ((data.fechamento || 0) - (data.saldo_esperado || 0) - (data.cancelamentos || 0));
+ // Diferença = Total Sistema - Saldo Esperado - Cancelamentos
+ const sysTotalCalc = (data.sysTotal || 0);
+ const saldoEsperadoCalc = (data.saldo_esperado || 0);
+ const cancelamentosCalc = (data.cancelamentos || 0);
+ const diferenca = sysTotalCalc - saldoEsperadoCalc - cancelamentosCalc;
const diffStr = diferenca >= 0 ? `+${fmt(diferenca)}` : fmtNeg(diferenca);
const diffColor = diferenca === 0 ? '#2e7d32' : (diferenca > 0 ? '#e65100' : '#c0272d');
@@ -2283,10 +2285,10 @@ function buildRelatorioModal(full) {
const totalSangrias = parseFloat(full.total_sangrias || 0);
const totalCancelamentos = parseFloat(full.total_cancelamentos || 0);
- // Esperado e diferença
+ // Esperado e diferença — calculada: Total Sistema - Saldo Esperado - Cancelamentos
const saldoEsperado = parseFloat(full.saldo_esperado || 0);
- const diferenca = parseFloat(full.diferenca || 0);
- const statusDif = full.status_diferenca || '?';
+ const diferenca = sysTotal - saldoEsperado - totalCancelamentos;
+ const statusDif = diferenca === 0 ? 'ok' : (diferenca > 0 ? 'sobrando' : 'faltando');
const diffClass = statusDif === 'ok' ? '#2e7d32' : (statusDif === 'sobrando' ? '#e65100' : '#c0272d');
const diffLabel = statusDif === 'ok' ? '✓ OK' : (statusDif === 'sobrando' ? '⚠ SOBRANDO' : (statusDif === 'faltando' ? '⚠ FALTANDO' : statusDif));
@@ -2495,6 +2497,7 @@ window.toggleEditConsulta = async function() {
}
openEditModal(full);
+ closeRelatorioModal();
};
// Pede senha admin — retorna Promise
@@ -2952,14 +2955,14 @@ window.salvarEdicaoModal = async function() {
total_cartao_alimentacao: cartAli_tot,
total_cartao_pix: cartPix_tot,
- // Saldo de caixa (editável via tabela saldo)
+ // Saldo de caixa — soma automática dos itens editados (não dos campos readonly)
saldo_troco: p(inp('edit-troco')),
- saldo_credito: p(inp('edit-sld-credito')),
- saldo_debito: p(inp('edit-sld-debito')),
- saldo_alimentacao: p(inp('edit-sld-alimentacao')),
- saldo_vales: p(inp('edit-sld-vales')),
- total_pixcnpj: p(inp('edit-sld-pixcnpj')),
- saldo_areceber: p(inp('edit-sld-areceber')),
+ saldo_credito: cartCred_tot,
+ 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,