- CreditGrant guarda o estado consolidado do crédito.
- CreditLedgerEntry guarda cada movimento de forma append-only.
Fluxo
Movimentos
| Movimento | Efeito |
|---|---|
GRANT | Registra a entrada inicial do valor concedido. |
RESERVE | Reduz o disponível e aumenta o reservado durante checkout. |
CAPTURE | Confirma uso do valor reservado em compra paga. |
RELEASE | Libera uma reserva não capturada. |
REFUND | Devolve valor capturado para o mesmo CreditGrant. |
EXPIRE | Baixa o valor disponível remanescente quando a validade termina. |
ADJUSTMENT | Ajuste administrativo rastreado. |
Regras
customerIdé obrigatório.- O crédito só pode ser usado em Orders da mesma Company.
- O valor nunca pode ficar negativo.
availableAmount + reservedAmount + usedAmountnão pode ultrapassaramount.- Retry de movimentos críticos deve usar idempotência.
- Ledger não é editado nem removido.
- Estorno retorna para o mesmo CreditGrant, Customer e Company.
Compra com crédito
- Customer inicia checkout.
- System encontra créditos ativos do Customer para a Company do Order.
- System reserva o valor escolhido.
- Se o pagamento confirma, System captura a reserva.
- Se o checkout falha, System libera a reserva.
- Se a compra é cancelada depois, System registra estorno.