diff --git a/src/index.html b/src/index.html
index ac19155..089d048 100644
--- a/src/index.html
+++ b/src/index.html
@@ -3044,25 +3044,60 @@ window.salvarEdicaoModal = async function() {
total_areceber: recv_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`)
- // IMPORTANTE: não usar JSON.stringify — dados deve ser objeto, não string,
- // para o Rust serializar corretamente como JSONB no Supabase.
- // Se full.dados existe (string de stringify anterior), parsear de volta.
+ // Merge completo com dados existentes para preservar campos antigos (fc, fd, fr,
+ // uuid, id_local, sync_status, fechamento, etc.) e sobrepor com valores atuais.
dados: (() => {
const existing = full.dados;
- const base = { cartoes, vales, despesas, sangrias, cancelamentos, pixcnpj, receber };
- const counters = {
+ const base = {
+ cartoes,
+ vales,
+ despesas,
+ sangrias,
+ cancelamentos,
+ pixcnpj,
+ receber,
clientes: parseInt(inp('edit-clientes') || '0'),
frango: parseInt(inp('edit-frango') || '0'),
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') {
try {
const parsed = JSON.parse(existing);
- return { ...parsed, ...base, ...counters };
- } catch { return { ...base, ...counters }; }
+ return { ...parsed, ...base };
+ } catch { return base; }
}
- return { ...(existing || {}), ...base, ...counters };
+ return { ...(existing || {}), ...base };
})(),
// Contadores