diff --git a/src-tauri/src/plugins/printer.rs b/src-tauri/src/plugins/printer.rs index 55dedaf..ac469d4 100644 --- a/src-tauri/src/plugins/printer.rs +++ b/src-tauri/src/plugins/printer.rs @@ -82,9 +82,14 @@ pub struct ReciboData { pub operador: String, pub turno: String, pub saldo_troco: f64, + /// Valor contado no fechamento (dinheiro + cartões + receber) pub fechamento: f64, + /// Saldo esperado = total operações − sangrias − despesas pub saldo_esperado: f64, + /// Diferença = fechamento − saldo_esperado pub diferenca: f64, + /// Soma de todas operações creditadas (crédito + débito + alimentação + voucher + pixcnpj) + pub total_operado: f64, // Totais de cartões pub credito: f64, pub debito: f64, @@ -275,10 +280,11 @@ impl ReciboData { // ── DIFERENÇA ── out.extend(escpos::line_bold("DIFERENCA")); - let diff_str = if self.diferenca >= 0.0 { - format!("+{}", self.fmt_money(self.diferenca)) + let diff = self.fechamento - self.saldo_esperado; + let diff_str = if diff >= 0.0 { + format!("+{}", self.fmt_money(diff)) } else { - self.fmt_money(self.diferenca) + self.fmt_money(diff) }; out.extend(escpos::title(&diff_str)); diff --git a/src/index.html b/src/index.html index 9b3bfd3..0ee7348 100644 --- a/src/index.html +++ b/src/index.html @@ -1232,7 +1232,7 @@ async function tauriEnviar() { // ─── Print Preview Window ────────────────────────────────────────────────── function buildPrintHTML(data) { const fmt = v => 'R$ ' + (v || 0).toFixed(2).replace('.', ','); - const diferenca = (data.fechamento || 0) - (data.saldo_esperado || 0); + const diferenca = (data.fechamento || 0) - (data.total_operado || 0); const diffStr = diferenca >= 0 ? `+${fmt(diferenca)}` : fmt(diferenca); const diffColor = diferenca === 0 ? '#2e7d32' : (diferenca > 0 ? '#e65100' : '#c0272d'); @@ -1307,7 +1307,7 @@ function buildPrintHTML(data) {
ENTRADAS
Saldo Troco:${fmt(data.saldo_troco)}
-
Fechamento:${fmt(data.fechamento)}
+
Fechamento:${fmt(data.total_operado || 0)}
Saldo Esperado:${fmt(data.saldo_esperado)}
${rows ? `
DETALHES
${rows}
` : ''} @@ -1424,6 +1424,8 @@ async function tauriRecibo() { const fechamentoCounted = parseNum(val('f-fech-dinheiro')) + parseNum(val('f-fech-cartoes')) + parseNum(val('f-fech-receber')); const saldoEsp = parseNum(val('f-saldo-esperado')); const sysTroco = parseNum(val('sys-troco')); + // total_operado = soma de todas operações creditadas (não é o fechamento contado) + const totalOperado = cartCred + cartDeb + cartAli + cartPix + pixCnpjTotal; const data = { uuid: estado.uuid, id_local: estado.id_local, @@ -1435,6 +1437,7 @@ async function tauriRecibo() { saldo_esperado: saldoEsp, fechamento: fechamentoCounted, diferenca: fechamentoCounted - saldoEsp, + total_operado: totalOperado, // Flat totals for ReciboData struct (Rust) — must be numbers credito: cartCred, debito: cartDeb, @@ -1499,7 +1502,7 @@ function openConfirmModal() { const pixcnpj = estado.pixcnpj.reduce((s,r) => s+(parseNum(r.valor||0)||0), 0); const fechamento = parseNum(val('f-fech-dinheiro')) + parseNum(val('f-fech-cartoes')) + parseNum(val('f-fech-receber')); const saldoEsp = parseNum(val('f-saldo-esperado')); - const diferenca = (parseNum(val('sys-troco')) || 0) - saldoEsp; + const diferenca = fechamento - saldoEsp; const diffClass = diferenca === 0 ? '#2e7d32' : (diferenca > 0 ? '#e65100' : '#c0272d'); document.getElementById('confirm-summary').innerHTML = `
📅 Data: ${estado.data}   👤 Operador: ${operador}   ⏰ Turno: ${turno}   🏪 Loja: ${loja}
@@ -1539,12 +1542,14 @@ document.getElementById('confirm-print').addEventListener('click', async () => { const cancelTotal = estado.cancelamentos.reduce((s,r) => s+(parseNum(r.valor||0)||0), 0); const fechamentoCounted = parseNum(val('f-fech-dinheiro')) + parseNum(val('f-fech-cartoes')) + parseNum(val('f-fech-receber')); const saldoEsp = parseNum(val('f-saldo-esperado')); + const totalOperado = cartCred + cartDeb + cartAli + cartPix + (estado.pixcnpj.reduce((s,r) => s+(parseNum(r.valor||0)||0), 0)); const data = { loja: estado.loja, data: estado.data, operador: estado.operador, turno: estado.turno, saldo_troco: parseNum(val('sys-troco')) || 0, saldo_esperado: saldoEsp, fechamento: fechamentoCounted, diferenca: fechamentoCounted - saldoEsp, + total_operado: totalOperado, despesas: estado.despesas.map(r => ({ desc: r.desc||'', obs: r.obs||'', valor: r.valor||0 })), sangrias: estado.sangrias.map(r => ({ hora: r.hora||'', retirada: parseNum(r.retirada)||0, gerente: r.gerente||'' })), pixcnpj: estado.pixcnpj.map(r => ({ nome: r.nome||'', valor: r.valor||0 })),