Validação real da implementação. Admin only.
lib/softDeleteOrcamento.jsExporta: softDeleteOrcamento(), softRestoreOrcamento(), isOrcamentoVivo()
pages/LojistaClientes.jsxlinha 5softDeleteOrcamento✅ USO ATIVO
L396 confirmarDelecao()→ Exclusão unitária via botão 🗑️ na tabelaL421 handleDeletarLoteValorZero()→ Exclusão em lote de orçamentos com valor R$0,00🗑️ CÓDIGO ANTIGO SUBSTITUÍDO
base44.entities.Orcamento.update(id, { status: 'deletado', excluido: true, data_exclusao, excluido_por })
pages/LojistaControleOrcamentos.jsxlinha 4softDeleteOrcamentosoftRestoreOrcamento✅ USO ATIVO
L139 confirmarDelete()→ Exclusão via botão 'Mover para lixeira' no KanbanL127 handleReativarOrcamento()→ Restaura orçamento excluído → status rascunho🗑️ CÓDIGO ANTIGO SUBSTITUÍDO
base44.entities.Orcamento.update(id, { status: 'deletado' }) ← BUG: não setava excluido:true
base44.entities.Orcamento.update(id, { status: 'rascunho' }) ← BUG: não limpava excluido/deleted_at
components/dashboard/FunilVendas.jsxlinha 4isOrcamentoVivo✅ USO ATIVO
L14 orcamentos.filter(isOrcamentoVivo)→ Blindagem de entrada — filtra prop recebida🗑️ CÓDIGO ANTIGO SUBSTITUÍDO
Sem filtro prévio — deletados contaminavam quantidades e valores do funil
components/dashboard/ClientesQuentes.jsxlinha 4isOrcamentoVivo✅ USO ATIVO
L16 orcamentosRaw.filter(isOrcamentoVivo)→ Blindagem — deletados não entram no ranking Top 5🗑️ CÓDIGO ANTIGO SUBSTITUÍDO
Sem filtro — orçamentos deletados inflavam valor e interações de clientes
components/dashboard/AlertasAcaoImediata.jsxlinha 4isOrcamentoVivo✅ USO ATIVO
L141 orcamentosRaw.filter(isOrcamentoVivo)→ Blindagem — alertas urgentes não disparam para deletados🗑️ CÓDIGO ANTIGO SUBSTITUÍDO
Sem filtro — deletados geravam alertas fantasmas de follow-up
components/lojista/IAFollowUpPanel.jsxlinha 2isOrcamentoVivo✅ USO ATIVO
L40 (orcamentos||[]).filter(isOrcamentoVivo)→ Blindagem — painel de follow-up ignora deletados🗑️ CÓDIGO ANTIGO SUBSTITUÍDO
Sem filtro — deletados apareciam no painel de mensagens de follow-up
components/lojista/DashboardConversao.jsxlinha 2isOrcamentoVivo✅ USO ATIVO
L33 (orcamentos||[]).filter(isOrcamentoVivo)→ Blindagem — orcCriados e orcAprovados calculados só sobre vivos🗑️ CÓDIGO ANTIGO SUBSTITUÍDO
orcCriados/orcAprovados contavam deletados na taxa de conversão
lib/softDeleteOrcamento.js · Páginas ativas: LojistaClientes, LojistaControleOrcamentos · Blindagem em: FunilVendas, ClientesQuentes, AlertasAcaoImediata, IAFollowUpPanel, DashboardConversao🌐 Modo Web
SW: inativo