fix: dados merge completo (fc,fd,fr,fechamento,saldo_troco,total_*,obs) + fechamento_dinheiro/cartoes/areceber no PATCH
This commit is contained in:
+43
-8
@@ -3044,25 +3044,60 @@ window.salvarEdicaoModal = async function() {
|
|||||||
total_areceber: recv_tot,
|
total_areceber: recv_tot,
|
||||||
total_cancelamentos: canc_tot,
|
total_cancelamentos: canc_tot,
|
||||||
|
|
||||||
|
// Fechamento (campos calculados que o formato antigo usava no dados)
|
||||||
|
fechamento_dinheiro: p(inp('edit-troco')) + vales_tot + sang_tot - desp_tot - canc_tot,
|
||||||
|
fechamento_cartoes: cartCred_tot + cartDeb_tot + cartAli_tot + cartPix_tot,
|
||||||
|
fechamento_areceber: recv_tot,
|
||||||
|
|
||||||
// Lançamentos detalhados (JSONB — gravados no campo `dados`)
|
// Lançamentos detalhados (JSONB — gravados no campo `dados`)
|
||||||
// IMPORTANTE: não usar JSON.stringify — dados deve ser objeto, não string,
|
// Merge completo com dados existentes para preservar campos antigos (fc, fd, fr,
|
||||||
// para o Rust serializar corretamente como JSONB no Supabase.
|
// uuid, id_local, sync_status, fechamento, etc.) e sobrepor com valores atuais.
|
||||||
// Se full.dados existe (string de stringify anterior), parsear de volta.
|
|
||||||
dados: (() => {
|
dados: (() => {
|
||||||
const existing = full.dados;
|
const existing = full.dados;
|
||||||
const base = { cartoes, vales, despesas, sangrias, cancelamentos, pixcnpj, receber };
|
const base = {
|
||||||
const counters = {
|
cartoes,
|
||||||
|
vales,
|
||||||
|
despesas,
|
||||||
|
sangrias,
|
||||||
|
cancelamentos,
|
||||||
|
pixcnpj,
|
||||||
|
receber,
|
||||||
clientes: parseInt(inp('edit-clientes') || '0'),
|
clientes: parseInt(inp('edit-clientes') || '0'),
|
||||||
frango: parseInt(inp('edit-frango') || '0'),
|
frango: parseInt(inp('edit-frango') || '0'),
|
||||||
vendas: p(inp('edit-vendas')),
|
vendas: p(inp('edit-vendas')),
|
||||||
|
// Campos que o formato antigo gravava no dados
|
||||||
|
credito: cartCred_tot,
|
||||||
|
debito: cartDeb_tot,
|
||||||
|
alimentacao: cartAli_tot,
|
||||||
|
fc: cartCred_tot + cartDeb_tot + cartAli_tot + cartPix_tot,
|
||||||
|
fd: sang_tot,
|
||||||
|
fr: vales_tot,
|
||||||
|
fechamento: p(inp('edit-troco')) + vales_tot + sang_tot - desp_tot - canc_tot,
|
||||||
|
saldo_troco: p(inp('edit-troco')),
|
||||||
|
total_vales: vales_tot,
|
||||||
|
total_despesas: desp_tot,
|
||||||
|
total_sangrias: sang_tot,
|
||||||
|
total_pixcnpj: pixcnpj_tot,
|
||||||
|
total_areceber: recv_tot,
|
||||||
|
total_cancelamentos: canc_tot,
|
||||||
|
total_cartao_credito: cartCred_tot,
|
||||||
|
total_cartao_debito: cartDeb_tot,
|
||||||
|
total_cartao_alimentacao: cartAli_tot,
|
||||||
|
total_cartao_pix: cartPix_tot,
|
||||||
|
saldo_esperado: p(inp('edit-esperado')),
|
||||||
|
observacoes: inp('edit-obs') || '',
|
||||||
|
data: inp('edit-data') || full.data || '',
|
||||||
|
loja: inp('edit-loja') || full.loja || '',
|
||||||
|
turno: inp('edit-turno') || full.turno || '',
|
||||||
|
operador: inp('edit-operador') || full.operador || '',
|
||||||
};
|
};
|
||||||
if (typeof existing === 'string') {
|
if (typeof existing === 'string') {
|
||||||
try {
|
try {
|
||||||
const parsed = JSON.parse(existing);
|
const parsed = JSON.parse(existing);
|
||||||
return { ...parsed, ...base, ...counters };
|
return { ...parsed, ...base };
|
||||||
} catch { return { ...base, ...counters }; }
|
} catch { return base; }
|
||||||
}
|
}
|
||||||
return { ...(existing || {}), ...base, ...counters };
|
return { ...(existing || {}), ...base };
|
||||||
})(),
|
})(),
|
||||||
|
|
||||||
// Contadores
|
// Contadores
|
||||||
|
|||||||
Reference in New Issue
Block a user