From b1a9f942317b8d445d8bb24e945eddcb4fe9b7d5 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 1 Jul 2026 15:13:29 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20dados=20objeto=20(n=C3=A3o=20string)=20+?= =?UTF-8?q?=20merge=20com=20existing=20dados=20parseado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/index.html | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) 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'),