BenefitUsageHistory registra a aplicação de uma gratuidade ou desconto em um Order. O Order pertence a uma única Company, então a aplicação do benefício ocorre no total do pedido daquela empresa.
Campos
| Campo | Tipo | Descrição |
|---|---|---|
benefitUsageHistoryId | UUID | Identificador único |
orderId | UUID | Pedido em que o benefício foi aplicado |
customerId | UUID | Cliente beneficiado |
fareBenefitCategoryId | UUID? | Categoria de benefício aplicada |
fareBenefitProgramId | UUID? | Programa de benefício aplicado |
passengerBenefitRequestId | UUID? | Solicitação aprovada que autorizou o uso |
organizationId | UUID | Organização relacionada ao uso |
companyId | UUID | Empresa relacionada ao uso |
routeId | UUID? | Rota relacionada ao uso, quando aplicável |
tripId | UUID? | Viagem relacionada ao uso, quando aplicável |
originalAmount | Int | Valor original do pedido em centavos |
discountAmount | Int | Valor descontado em centavos |
finalAmount | Int | Valor final do pedido em centavos após o benefício |
discountType | FareBenefitDiscountType? | Forma de cálculo aplicada |
discountValue | Int? | Valor do programa aplicado no momento do uso |
status | BenefitUsageStatus | Status do registro de uso |
usedAt | DateTime | Data em que o benefício foi aplicado |
reversedAt | DateTime? | Data de reversão do benefício, quando aplicável |
createdBy | UUID? | Usuário que criou o registro, quando aplicável |
createdAt | DateTime | Data de criação |
updatedBy | UUID? | Usuário que fez a última atualização, quando aplicável |
updatedAt | DateTime | Data da última atualização |
Relacionamentos
- Relaciona-se com Order.
- Relaciona-se com Customer.
- Relaciona-se com FareBenefitCategory.
- Relaciona-se com FareBenefitProgram.
- Relaciona-se com PassengerBenefitRequest, quando o uso depende de aprovação prévia.
- Relaciona-se com Company, Route e Trip, quando o contexto da regra exigir.
Regras de Negócio
- Cada registro representa uma aplicação de benefício no Order.
- O Order pertence a uma única Company; por isso o benefício não precisa ser aplicado diretamente em cada Ticket.
- Se o benefício exigir elegibilidade nominal, ela é validada por
customerIdepassengerBenefitRequestId. discountAmountdeve ser maior ou igual a zero.finalAmountnão pode ser menor que zero.- Benefício de gratuidade deve resultar em
finalAmount = 0. - O histórico deve guardar os valores calculados no momento da aplicação, sem depender de recálculo posterior da política.
- Reversões devem marcar
status = REVERSEDe preencherreversedAt. createdByeupdatedByseguem o padrão de auditoria do DEVMOB e registram o usuário responsável pela mutação, quando aplicável.
Enums
BenefitUsageStatus
| Valor | Descrição |
|---|---|
APPLIED | Benefício aplicado ao pedido |
REVERSED | Benefício revertido |