agenda: consumeSaldo agora amarra billing_contract_id no evento
Bug em cascata descoberto durante C11/B com Andre Green: - User clicou Falta + Descontar (consumeSaldo) -> sessions_used: 1->2 - billing_contract_id do agenda_evento ficou NULL (omissao no flow) - User clicou Agendada (reverse) -> detector saldoConsumed em _loadStatusChangeContext checa evRow.billing_contract_id, que esta NULL -> saldoConsumed=false -> bloco "Devolver saldo" NAO aparece no dialog -> saldo NAO devolvido - Next Falta mostra "Descontar 2 para 3" em vez de "1 para 2" Fix: bloco consumeSaldo agora tambem amarra billing_contract_id no agenda_eventos. Replica o padrao que ja existe no generatePackageCharge e no onUsarSessao. Sem isso, qualquer reverse pos-consumeSaldo nao detecta o saldo consumido. Backfill manual do Andre: sessions_used voltou pra 1. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1564,6 +1564,9 @@ function _buildHandlers(deps) {
|
||||
// 1) Consumir saldo (pacote saldo + faltou/cancelado + decisão sim)
|
||||
// ⚠ billing_contracts NÃO tem coluna updated_at — passar esse campo
|
||||
// causa "column does not exist" silenciosamente em Promise.allSettled.
|
||||
// Também precisa amarrar billing_contract_id no evento — sem isso, o
|
||||
// reverse não detecta saldoConsumed depois (bug cascata descoberto
|
||||
// durante teste C11/B: Falta+Descontar, depois Agendada não devolvia).
|
||||
if (decision.consumeSaldo && ctx.billingContract?.id) {
|
||||
tasks.push(
|
||||
supabase
|
||||
@@ -1573,6 +1576,13 @@ function _buildHandlers(deps) {
|
||||
})
|
||||
.eq('id', ctx.billingContract.id)
|
||||
);
|
||||
// Amarra evento ao contrato pra rastreabilidade + reverse correto
|
||||
tasks.push(
|
||||
supabase
|
||||
.from('agenda_eventos')
|
||||
.update({ billing_contract_id: ctx.billingContract.id, updated_at: new Date().toISOString() })
|
||||
.eq('id', eventoId)
|
||||
);
|
||||
}
|
||||
|
||||
// 2) Aplicar multa (cria financial_record avulsa). Description leva
|
||||
|
||||
Reference in New Issue
Block a user