fix: saldo caixa via dados JSON + coluna cancelamento + diferenca correta
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-07-02 13:31:00 +00:00
parent 7b3b7a9f1d
commit dba7eb3856
+19 -4
View File
@@ -2175,14 +2175,26 @@ function buildConsultaModal(recentList) {
};
// Calcula saldo de caixa real (mesma fórmula do relatório)
const calcSaldoCaixa = item => (parseFloat(item.saldo_troco)||0)
// Lê tanto do top-level quanto do JSON dados (old records compatibility)
const calcSaldoCaixa = item => {
const dados = item.dados || {};
return (parseFloat(item.saldo_troco)||0)
+ (parseFloat(item.saldo_credito)||0)
+ (parseFloat(item.saldo_debito)||0)
+ (parseFloat(item.saldo_alimentacao)||0)
+ (parseFloat(item.saldo_vales)||0)
+ (parseFloat(item.saldo_areceber)||0)
+ (parseFloat(item.total_pixcnpj)||0)
+ (parseFloat(item.total_cartao_pix)||0);
+ (parseFloat(item.total_cartao_pix)||0)
+ (parseFloat(dados.total_pixcnpj)||0)
+ (parseFloat(dados.total_cartao_pix)||0);
};
const calcCancelamentos = item => {
const dados = item.dados || {};
return (parseFloat(item.total_cancelamentos)||0)
+ (parseFloat(dados.total_cancelamentos)||0)
+ (parseFloat(dados.cancelamentos)||0); // old format: array of cancelamentos
};
// Ordena por data desc e pega os últimos 5 dias distintos
const sortedDesc = [...recentList].sort((a,b) => b.data.localeCompare(a.data));
@@ -2193,11 +2205,12 @@ function buildConsultaModal(recentList) {
function renderRows(list) {
if (!list || list.length === 0) {
return `<tr><td colspan="7" style="padding:20px;text-align:center;color:#888;font-size:13px">Nenhum registro encontrado.</td></tr>`;
return `<tr><td colspan="8" style="padding:20px;text-align:center;color:#888;font-size:13px">Nenhum registro encontrado.</td></tr>`;
}
return list.map((item, i) => {
const saldoCaixa = calcSaldoCaixa(item);
const diff = saldoCaixa - (parseFloat(item.saldo_esperado)||0);
const canc = calcCancelamentos(item);
const diff = saldoCaixa - (parseFloat(item.saldo_esperado)||0) - canc;
const diffClass = diff === 0 ? '#2e7d32' : diff > 0 ? '#e65100' : '#c0272d';
const diffLabel = diff === 0 ? '✓ OK' : diff > 0 ? `+R$ ${diff.toFixed(2).replace('.',',')}` : `-R$ ${Math.abs(diff).toFixed(2).replace('.',',')}`;
return `<tr data-idx="${recentList.indexOf(item)}" style="background:${i%2===0?'#fff':'#fafafa'}" onmouseover="this.style.background='#fff3e0'" onmouseout="this.style.background='${i%2===0?'#fff':'#fafafa'}'">
@@ -2206,6 +2219,7 @@ function buildConsultaModal(recentList) {
<td style="padding:6px 8px;border-bottom:1px solid #eee;font-size:12px;cursor:pointer" onclick="openConsultaRegistro(${recentList.indexOf(item)})">${item.turno||'?'}</td>
<td style="padding:6px 8px;border-bottom:1px solid #eee;font-size:12px;text-align:right;cursor:pointer" onclick="openConsultaRegistro(${recentList.indexOf(item)})">${fmtMoney(saldoCaixa)}</td>
<td style="padding:6px 8px;border-bottom:1px solid #eee;font-size:12px;text-align:right;cursor:pointer" onclick="openConsultaRegistro(${recentList.indexOf(item)})">${fmtMoney(item.saldo_esperado)}</td>
<td style="padding:6px 8px;border-bottom:1px solid #eee;font-size:12px;text-align:right;cursor:pointer" onclick="openConsultaRegistro(${recentList.indexOf(item)})">${fmtMoney(canc)}</td>
<td style="padding:6px 8px;border-bottom:1px solid #eee;font-size:12px;text-align:center;cursor:pointer;color:${diffClass};font-weight:bold" onclick="openConsultaRegistro(${recentList.indexOf(item)})">${diffLabel}</td>
<td style="padding:4px 6px;border-bottom:1px solid #eee;text-align:center">
<button onclick="event.stopPropagation();window.abrirEditaFechamentoIndex(${recentList.indexOf(item)})" style="background:#e65100;color:#fff;border:none;border-radius:4px;padding:4px 10px;cursor:pointer;font-size:11px;white-space:nowrap">✏️ Editar</button>
@@ -2234,6 +2248,7 @@ function buildConsultaModal(recentList) {
<th style="padding:6px 8px;text-align:left;font-size:11px;color:#888">TURNO</th>
<th style="padding:6px 8px;text-align:right;font-size:11px;color:#888">SALDO CAIXA</th>
<th style="padding:6px 8px;text-align:right;font-size:11px;color:#888">ESPERADO</th>
<th style="padding:6px 8px;text-align:right;font-size:11px;color:#888">CANCEL.</th>
<th style="padding:6px 8px;text-align:center;font-size:11px;color:#888">DIFERENÇA</th>
<th style="padding:4px 6px;text-align:center;font-size:11px;color:#888">AÇÃO</th>
</tr>