diff --git a/src/index.html b/src/index.html index 4d0a276..ac19155 100644 --- a/src/index.html +++ b/src/index.html @@ -3045,18 +3045,25 @@ window.salvarEdicaoModal = async function() { total_cancelamentos: canc_tot, // Lançamentos detalhados (JSONB — gravados no campo `dados`) - dados: JSON.stringify({ - cartoes, - vales, - despesas, - sangrias, - cancelamentos, - pixcnpj, - receber, - clientes: parseInt(inp('edit-clientes') || '0'), - frango: parseInt(inp('edit-frango') || '0'), - vendas: p(inp('edit-vendas')), - }), + // 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. + dados: (() => { + const existing = full.dados; + const base = { cartoes, vales, despesas, sangrias, cancelamentos, pixcnpj, receber }; + const counters = { + clientes: parseInt(inp('edit-clientes') || '0'), + frango: parseInt(inp('edit-frango') || '0'), + vendas: p(inp('edit-vendas')), + }; + if (typeof existing === 'string') { + try { + const parsed = JSON.parse(existing); + return { ...parsed, ...base, ...counters }; + } catch { return { ...base, ...counters }; } + } + return { ...(existing || {}), ...base, ...counters }; + })(), // Contadores clientes: parseInt(inp('edit-clientes') || '0'),