diff --git a/src/layout/melissa/MelissaLayout.vue b/src/layout/melissa/MelissaLayout.vue index 4644a34..4c5d062 100644 --- a/src/layout/melissa/MelissaLayout.vue +++ b/src/layout/melissa/MelissaLayout.vue @@ -751,6 +751,17 @@ const lancamentosDialogOpen = ref(false); const lancamentosList = ref([]); const lancamentosLoading = ref(false); const lancamentosEventoTitulo = ref(''); +// Por default esconde cancelled (poluem o que importa quando user só +// quer ver os ativos). Toggle 'Mostrar histórico' libera audit trail. +// Resetado a cada abertura do dialog (onVerLancamentos). +const lancamentosShowHistory = ref(false); +const lancamentosFiltered = computed(() => { + if (lancamentosShowHistory.value) return lancamentosList.value; + return lancamentosList.value.filter((r) => r.status !== 'cancelled'); +}); +const lancamentosCancelledCount = computed(() => + lancamentosList.value.filter((r) => r.status === 'cancelled').length +); // Antecipar pagamento (Fase 5, 2026-05-14): paciente quer pagar antes da // sessão (caso típico em pacote saldo). Materializa a ocorrência (se virtual) // + cria financial_record paid (PIX/etc) ou pending (Asaas). NÃO decrementa @@ -1088,6 +1099,7 @@ async function onVerLancamentos() { const isVirtual = ev.is_occurrence || isVirtualId; lancamentosEventoTitulo.value = ev.pacienteNome || ev.label || ev.titulo || 'Sessão'; + lancamentosShowHistory.value = false; // sempre abre limpo (sem cancelled) lancamentosDialogOpen.value = true; lancamentosLoading.value = true; try { @@ -3221,12 +3233,29 @@ function onKeydown(e) {
Nenhum lançamento vinculado a esta sessão.
+
+ Sem lançamentos ativos. {{ lancamentosCancelledCount }} cancelado(s) no histórico. +
+
+
+ +
+ {{ lancamentosCancelledCount }} cancelado(s) ocultos. +
@@ -3853,6 +3882,18 @@ function onKeydown(e) { margin-left: 1.5rem; border-color: color-mix(in srgb, var(--p-primary-color) 25%, var(--surface-border)); } +/* Cancelled — apenas visíveis quando user expande o histórico. + Visual atenuado pra sinalizar "audit trail, não-ativo". */ +.ml-lanc-card--cancelled { + opacity: 0.55; + border-style: dashed; + background: color-mix(in srgb, var(--surface-ground) 60%, transparent); +} +.ml-lanc-card--cancelled .ml-lanc-card__desc { + text-decoration: line-through; + text-decoration-color: currentColor; + text-decoration-thickness: 1px; +} .ml-lanc-card__head { display: flex; align-items: center;