MelissaFinanceiro + MelissaFinanceiroLancamentos nativas

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) <noreply@anthropic.com>
This commit is contained in:
Leonardo
2026-05-06 10:06:18 -03:00
parent f9145442ae
commit 387043b3b2
4 changed files with 2399 additions and 17 deletions
+16 -5
View File
@@ -38,6 +38,8 @@ import MelissaCadastrosRecebidos from './MelissaCadastrosRecebidos.vue';
import MelissaAgendamentosRecebidos from './MelissaAgendamentosRecebidos.vue';
import MelissaLinkExterno from './MelissaLinkExterno.vue';
import MelissaNotificacoes from './MelissaNotificacoes.vue';
import MelissaFinanceiro from './MelissaFinanceiro.vue';
import MelissaFinanceiroLancamentos from './MelissaFinanceiroLancamentos.vue';
import MelissaMedicos from './MelissaMedicos.vue';
import MelissaEventoPanel from './MelissaEventoPanel.vue';
import { TOQUES, playToque } from './melissaToques';
@@ -176,10 +178,9 @@ const SECOES = {
};
// Set de keys que renderizam via MelissaEmbed (Onda 1 — pages 1-coluna).
// 'link-externo' e 'notificacoes' foram promovidos pra páginas nativas
// (MelissaLinkExterno / MelissaNotificacoes) pra remover o triplo-header
// que aparecia no embed.
const MELISSA_EMBED_KEYS = ['financeiro', 'financeiro-lancamentos', 'documentos', 'documentos-templates', 'online-scheduling', 'relatorios'];
// 'link-externo', 'notificacoes', 'financeiro' e 'financeiro-lancamentos'
// foram promovidos pra páginas nativas pra remover o triplo-header.
const MELISSA_EMBED_KEYS = ['documentos', 'documentos-templates', 'online-scheduling', 'relatorios'];
// Slugs reservados pra páginas dedicadas (não-config) — agenda, pacientes,
// conversas etc. + as MELISSA_EMBED_KEYS. Usado no isConfigRoute pra
@@ -187,7 +188,7 @@ const MELISSA_EMBED_KEYS = ['financeiro', 'financeiro-lancamentos', 'documentos'
const MELISSA_NON_CONFIG_SLUGS = new Set([
'agenda', 'pacientes', 'compromissos', 'recorrencias', 'conversas',
'tags', 'grupos', 'cadastros-recebidos', 'medicos', 'agendamentos-recebidos',
'link-externo', 'notificacoes',
'link-externo', 'notificacoes', 'financeiro', 'financeiro-lancamentos',
...MELISSA_EMBED_KEYS
]);
// Aliases "bonitos" + INLINE_KEYS reconhecidos pelo MelissaConfiguracoes.
@@ -2177,6 +2178,16 @@ function onKeydown(e) {
@close="fecharSecao"
/>
<MelissaFinanceiro
v-if="layoutReady && secaoAberta === 'financeiro'"
@close="fecharSecao"
/>
<MelissaFinanceiroLancamentos
v-if="layoutReady && secaoAberta === 'financeiro-lancamentos'"
@close="fecharSecao"
/>
<MelissaConfiguracoes
v-if="layoutReady && isMelissaConfigRoute(secaoAberta)"
:secao-rota="secaoAberta"