From 387043b3b2de2f79073e8e7c796b9c03ba74b0a7 Mon Sep 17 00:00:00 2001 From: Leonardo Date: Wed, 6 May 2026 10:06:18 -0300 Subject: [PATCH] MelissaFinanceiro + MelissaFinanceiroLancamentos nativas MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Promove '/melissa/financeiro' e '/melissa/financeiro-lancamentos' do embed pra paginas nativas, eliminando o triplo header. MelissaFinanceiro (dashboard, ~700L): - Layout 1-col empilhado (sem sidebar — so cards de resumo) - Header com ícone wallet + titulo + badge mes corrente + botao "Ver lancamentos" + Recarregar + Voltar - Subheader explicativo - 4 cards empilhados: 1. Quick stats grid (Recebido verde / Pendente amber / Vencido red / Despesas neutral) 2. Card Grafico Receita x Despesa (Chart.js bar, 6 meses) 3. Card Projecao de Caixa (cobrancas em aberto, proximos 6 meses com receita/despesa/saldo + count badge) 4. Card Ultimos lancamentos (DataTable 5 mais recentes) - Click "Ver lancamentos" / "Ver todos" navega pra /melissa/financeiro-lancamentos MelissaFinanceiroLancamentos (lista, ~1100L): - Blueprint tabular Melissa completo - Header com botao "Lancamento manual" + Recarregar + Voltar - Subheader - Sidebar com __scroll + __footer fixo: - Stats (Pendente amber / Vencido red / Pago verde / Total) - Filtro Status (button list: Pendentes amber / Vencidos red / Pagos green / Cancelados neutral) + X inline - Filtro Tipo (Receita green / Despesa red) + X inline - Filtro Paciente (Select com filter + identification_color dot) + X inline - Filtro Periodo (DatePicker range vencimento) + X inline - Footer fixo "Limpar filtros" (Transition fade+collapse) - Main: DataTable lazy + paginator com 7 colunas (Paciente + avatar / Sessao / Tipo / Valor + desconto / Vencimento / Status / Acoes). Row overdue com bg vermelho tinted. - Acoes por status: - pending/overdue: botoes "Receber" (abre dialog pagamento) + "Cancelar" (Confirm) - paid: badge "metodo + data" - cancelled: travessao - Mobile: sidebar vira topo (max-height 50vh) Dialogs preservados: - Registrar pagamento (5 metodos com icones: pix/deposito/dinheiro/ cartao/convenio) - Lancamento manual (Paciente opcional + Valor + Desconto + Valor final read-only + Data vencimento + Metodo opcional + Obs) Logica preservada do composable useFinancialRecords + RPCs (get_financial_summary, list_financial_records, view v_cashflow_projection, mark_as_paid, cancel_record, create_manual_record). FinanceiroDashboardPage e FinanceiroPage continuam intactas no layout Rail (/admin/financeiro, /therapist/financeiro). Wire-up: imports + render blocks + 'financeiro' e 'financeiro-lancamentos' em NON_CONFIG_SLUGS; removidos de MELISSA_EMBED_KEYS. Entries removidos do EMBED_MAP em MelissaEmbed. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/layout/melissa/MelissaEmbed.vue | 14 +- src/layout/melissa/MelissaFinanceiro.vue | 857 +++++++++ .../melissa/MelissaFinanceiroLancamentos.vue | 1524 +++++++++++++++++ src/layout/melissa/MelissaLayout.vue | 21 +- 4 files changed, 2399 insertions(+), 17 deletions(-) create mode 100644 src/layout/melissa/MelissaFinanceiro.vue create mode 100644 src/layout/melissa/MelissaFinanceiroLancamentos.vue diff --git a/src/layout/melissa/MelissaEmbed.vue b/src/layout/melissa/MelissaEmbed.vue index 8d34400..726d5c2 100644 --- a/src/layout/melissa/MelissaEmbed.vue +++ b/src/layout/melissa/MelissaEmbed.vue @@ -29,18 +29,8 @@ const emit = defineEmits(['close']); // Mantido neste arquivo (não no MelissaLayout) pra que adicionar uma // nova page aqui não exija mexer no parent. const EMBED_MAP = { - 'financeiro': { - label: 'Financeiro', - desc: 'Visão geral, recebíveis e indicadores do mês.', - icon: 'pi pi-wallet', - comp: defineAsyncComponent(() => import('@/features/financeiro/pages/FinanceiroDashboardPage.vue')) - }, - 'financeiro-lancamentos': { - label: 'Lançamentos financeiros', - desc: 'Lista detalhada de cobranças, pagamentos e recebimentos.', - icon: 'pi pi-list', - comp: defineAsyncComponent(() => import('@/features/financeiro/pages/FinanceiroPage.vue')) - }, + // 'financeiro' e 'financeiro-lancamentos' foram promovidos pra páginas + // nativas (MelissaFinanceiro / MelissaFinanceiroLancamentos). 'documentos': { label: 'Documentos', desc: 'Documentos clínicos do tenant — geração, edição e histórico.', diff --git a/src/layout/melissa/MelissaFinanceiro.vue b/src/layout/melissa/MelissaFinanceiro.vue new file mode 100644 index 0000000..280e32e --- /dev/null +++ b/src/layout/melissa/MelissaFinanceiro.vue @@ -0,0 +1,857 @@ + + + + + diff --git a/src/layout/melissa/MelissaFinanceiroLancamentos.vue b/src/layout/melissa/MelissaFinanceiroLancamentos.vue new file mode 100644 index 0000000..0851645 --- /dev/null +++ b/src/layout/melissa/MelissaFinanceiroLancamentos.vue @@ -0,0 +1,1524 @@ + + +