agenda: pre-C10 fix _applyStatusDecisions cancela pendingRecord
Bug: ao mudar status pra faltou/cancelado com multa configurada
em financial_exceptions, _applyStatusDecisions INSERIA o novo
record da multa MAS deixava o pendingRecord original em pending.
Resultado: cobranca dupla (R$ 200 original + R$ 30 multa = R$ 230).
Fix em useMelissaAgenda.js:1450-1505:
- applyFine agora carrega data da sessao na description ("Multa
por falta - sessao dd/mm/aa") pro paciente identificar na fatura.
- Novo bloco 2b: cancela ctx.pendingRecord quando faltou/cancelado,
com nota de auditoria appendada em notes ("[YYYY-MM-DD] Cancelada
- substituida por multa de no-show" ou similar). Vale tanto pra
caso com multa quanto sem (status mudado sem aplicar multa).
Fix dormente em useAgendaFinanceiro.js:59 ('fixed' -> 'fixed_fee')
- charge_mode no schema eh 'fixed_fee' mas calcChargeAmount usava
'fixed' silenciosamente caia no fallback. Path nao exercitado na
Melissa (usa _applyStatusDecisions, nao handleStatusChange), mas
iria quebrar se algum dia fosse.
Pre-teste C10: financial_exceptions seedadas no DB para tenant
Bruno Terapeuta / owner Leonardo:
- patient_no_show: fixed_fee R$ 30
- patient_cancellation: full, min_hours_notice=2, default_consume_on_miss=true
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+21
-12
@@ -1,19 +1,28 @@
|
||||
# HANDOFF — 2026-05-20 madrugada (C1-C9 ✅, próximo C10)
|
||||
# HANDOFF — 2026-05-20 (C10 pré-teste · code-fix + seeds prontos)
|
||||
|
||||
Documento de continuidade. **Quando voltar, comece lendo esta página até o fim.**
|
||||
|
||||
> **🎯 SE A FORÇA CAIR / SESSÃO PERDER CONTEXTO:** estamos na rodada de
|
||||
> testes manuais dos 13 cenários do doc viva
|
||||
> `src/docs/agenda-compromisso-financeiro-cenarios.html`. **C1-C9 ✅**.
|
||||
> Próximo: **Cenário 10** (status change avulsa — Joyce/Ana/Sándor:
|
||||
> marcar como realizado/faltou/cancelado e ver consequências no
|
||||
> financeiro via STATUS_TO_EXCEPTION + financial_exceptions).
|
||||
> **🎯 SE A FORÇA CAIR / SESSÃO PERDER CONTEXTO:** estamos no **Cenário 10**
|
||||
> (status change avulsa). Code-fix pra cancelar pendingRecord aplicado +
|
||||
> financial_exceptions da Melissa seedadas no DB. **Falta**: rodar os 5
|
||||
> sub-testes (a/a2/b/c/c2) e validar.
|
||||
|
||||
> **🟢 WORKING TREE LIMPO** após commit/push do checkpoint pós-C8/C9.
|
||||
> Per-session funcionando (12 events + 12 records gerados em batch).
|
||||
> Financeiro com rowGroup por paciente (expand/collapse). Bubble-up
|
||||
> @cobranca-atualizada → M.refetch faz o card da agenda atualizar
|
||||
> badge/borda imediatamente após pagar.
|
||||
> **🟢 PRÉ-TESTE C10 SALVO**. Pós-teste, próximos cenários: C11 (status
|
||||
> change pacote saldo) → C12 (antecipar pagamento) → C13 (edit cobrada).
|
||||
|
||||
### Code-fix aplicado em 20/05 (pré-C10)
|
||||
- **`useMelissaAgenda.js:1450-1505`** — `_applyStatusDecisions` agora cancela
|
||||
o `ctx.pendingRecord` quando faltou/cancelado (com ou sem multa). Antes
|
||||
inseria a multa mas DEIXAVA o original pending → cobrança dupla
|
||||
(R$ 200 + R$ 30 = R$ 230). Audit trail vai em `notes` do record
|
||||
cancelado, descrição da multa nova carrega data: "Multa por falta · sessão 20/05/26".
|
||||
- **`useAgendaFinanceiro.js:59`** — fix dormente `'fixed'` → `'fixed_fee'`
|
||||
(off-by-key contra schema; path nunca exercitado na Melissa, mas iria
|
||||
quebrar se algum dia fosse).
|
||||
|
||||
### Financial exceptions seedadas (tenant Bruno Terapeuta / owner Leonardo)
|
||||
- `patient_no_show` → `fixed_fee R$ 30`
|
||||
- `patient_cancellation` → `full`, `min_hours_notice=2`, `default_consume_on_miss=true`
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user