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'),