Skip to main content
O CreditLedgerEntry registra cada movimento financeiro de um CreditGrant. Ele cria rastreabilidade para concessão, reserva, captura, liberação, expiração, ajuste e estorno do crédito.

Campos

Relacionamentos

  • Relaciona-se com CreditGrant por creditGrantId.
  • Relaciona-se com Company por companyId.
  • Relaciona-se com Customer por customerId.
  • Relaciona-se com Cooperative por cooperativeId, quando o movimento ocorre em ticket.
  • Relaciona-se com TransportOperator por transportOperatorId, quando o movimento ocorre em ticket.
  • Relaciona-se com Checkout e Order como contexto comercial.
  • Relaciona-se com Ticket como unidade final de uso do crédito.

Regras de Negócio

  • O ledger é append-only: registros não devem ser atualizados nem removidos depois de criados.
  • companyId, organizationId e customerId devem repetir o escopo do CreditGrant no momento do movimento.
  • companyId identifica a empresa que concedeu o crédito; não identifica a cooperativa do ticket.
  • Quando o movimento vier de um ticket, cooperativeId e transportOperatorId devem repetir o contexto operacional do Ticket/Trip.
  • O uso definitivo do crédito é sempre por Ticket.
  • Movimentos CAPTURE e REFUND devem preencher ticketId.
  • orderId e checkoutId podem acompanhar o movimento para rastreabilidade, mas não substituem o ticketId no consumo.
  • amount positivo aumenta o valor disponível do crédito; amount negativo reduz o valor disponível.
  • availableAfter deve refletir o valor disponível do CreditGrant depois da aplicação do movimento.
  • description deve explicar movimentos manuais, ajustes e exceções operacionais quando a referência técnica não for suficiente para auditoria.
  • RESERVE reduz availableAmount e aumenta reservedAmount no CreditGrant.
  • CAPTURE reduz reservedAmount e aumenta usedAmount no CreditGrant.
  • RELEASE desfaz uma reserva não capturada e retorna o valor para availableAmount.
  • REFUND devolve valor capturado para o mesmo CreditGrant, no mesmo beneficiário e na mesma Company.
  • REFUND não devolve saldo para CompanyCreditAccount; ele recompõe o CreditGrant do Customer.
  • No Checkout QR com paymentMethod = CREDIT_GRANT, a reserva e a captura exigem autorização do Customer pelo app do cliente.
  • EXPIRE remove o valor disponível remanescente quando a validade termina.
  • idempotencyKey deve ser única por tipo de movimento crítico para evitar duplicidade em retry.
  • Por ser imutável, o registro usa apenas createdBy e createdAt como auditoria direta.

Enums

CreditLedgerEntryType

Example