diff --git a/src/components/agenda/AgendaEventoFinanceiroPanel.vue b/src/components/agenda/AgendaEventoFinanceiroPanel.vue index bb23822..189e557 100644 --- a/src/components/agenda/AgendaEventoFinanceiroPanel.vue +++ b/src/components/agenda/AgendaEventoFinanceiroPanel.vue @@ -100,6 +100,20 @@ const scenario = computed(() => { const canAct = computed(() => record.value && (record.value.status === 'pending' || record.value.status === 'overdue')); +// Sessão encerrada (não rolou) — bloqueia geração de cobrança nova. +// Multa em cancelado/faltou deve passar pelo AgendaStatusChangeConfirmDialog, +// não por "Gerar cobrança" solto que ignora o motivo. +const isSessaoEncerrada = computed(() => { + const s = String(props.evento?.status || '').toLowerCase(); + return s === 'cancelado' || s === 'cancelada' || s === 'faltou'; +}); +const semCobrancaLabel = computed(() => { + const s = String(props.evento?.status || '').toLowerCase(); + if (s === 'cancelado' || s === 'cancelada') return 'Sessão cancelada · sem cobrança ativa'; + if (s === 'faltou') return 'Sessão não realizada · sem cobrança ativa'; + return 'Sem cobrança gerada'; +}); + // ── buscar financial_record pelo evento ─────────────────────────────────────── async function fetchRecord() { if (!props.evento.id) return; @@ -235,10 +249,13 @@ function requestCancel() {
- Sem cobrança gerada + {{ semCobrancaLabel }}
-
diff --git a/src/docs/agenda-compromisso-financeiro-cenarios.html b/src/docs/agenda-compromisso-financeiro-cenarios.html index fb74f6f..c7f9cb4 100644 --- a/src/docs/agenda-compromisso-financeiro-cenarios.html +++ b/src/docs/agenda-compromisso-financeiro-cenarios.html @@ -112,6 +112,7 @@