FareBenefitProgram representa a regra de aplicação de uma FareBenefitCategory. A categoria diz o que é o benefício; o programa diz onde aplica, quanto desconta, quem valida documentos e em qual vigência.
Campos
| Campo | Tipo | Descrição |
|---|---|---|
fareBenefitProgramId | UUID | Identificador único |
fareBenefitCategoryId | UUID | Categoria genérica do benefício |
companyId | UUID? | Empresa dona do programa, quando for benefício comercial da empresa |
routeId | UUID? | Rota em que o programa se aplica, quando houver restrição por rota |
code | String | Código estável do programa |
name | String | Nome exibido do programa |
description | String? | Descrição operacional do programa |
ownerType | FareBenefitProgramOwnerType | Dono da regra de aplicação |
reviewOwnerType | FareBenefitReviewOwnerType | Responsável por validar documentos e aprovar solicitações |
discountType | FareBenefitDiscountType | Forma de cálculo do benefício |
discountValue | Int | Valor do desconto em basis points ou centavos, conforme discountType |
maxDiscountAmount | Int? | Valor máximo de desconto em centavos |
priority | Int | Prioridade de aplicação quando mais de um programa é elegível |
cumulative | Boolean | Indica se pode acumular com outro benefício |
startsAt | DateTime? | Início da vigência |
endsAt | DateTime? | Fim da vigência |
status | FareBenefitProgramStatus | Status do programa |
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 |
deletedBy | UUID? | Usuário que removeu o registro, quando aplicável |
deletedAt | DateTime? | Data de remoção lógica |
Relacionamentos
- Relaciona-se com FareBenefitCategory.
- Relaciona-se com Company, quando
ownerTypeforCOMPANY. - Relaciona-se com Route, quando o programa for restrito a uma rota.
- Relaciona-se com múltiplas PassengerBenefitRequest.
- Relaciona-se com múltiplos BenefitUsageHistory.
Regras de Negócio
- Programas legais ou genéricos usam
ownerType = PLATFORMe não dependem de uma empresa específica. - Programas comerciais da empresa usam
ownerType = COMPANYe devem preenchercompanyId. reviewOwnerTypedefine quem analisa documentos e solicitações: plataforma ou empresa.discountValueusa basis points quandodiscountTypeéPERCENTAGE; ex.: 50.00% =5000.discountValueusa centavos quandodiscountTypeéFIXED_AMOUNT.- Gratuidade total deve usar
discountType = PERCENTAGEediscountValue = 10000. - Programas fora da janela
startsAt/endsAtnão devem ser aplicados. - A aplicação concreta do programa em uma venda deve ser registrada em BenefitUsageHistory.
createdBy,updatedByedeletedByseguem o padrão de auditoria do DEVMOB e registram o usuário responsável pela mutação, quando aplicável.
Exemplos de regras
| Cenário | Configuração esperada |
|---|---|
| Idoso com gratuidade legal | ownerType = PLATFORM, reviewOwnerType = PLATFORM, discountType = PERCENTAGE, discountValue = 10000, sem companyId |
| Estudante com meia passagem | ownerType = PLATFORM, reviewOwnerType = PLATFORM, discountType = PERCENTAGE, discountValue = 5000, vigência limitada ao período letivo |
| Funcionário conveniado | ownerType = COMPANY, reviewOwnerType = COMPANY, companyId preenchido, discountType = PERCENTAGE, discountValue = 3000 |
| Campanha comercial com desconto fixo | ownerType = COMPANY, reviewOwnerType = COMPANY, companyId preenchido, discountType = FIXED_AMOUNT, discountValue em centavos |
Enums
FareBenefitProgramOwnerType
| Valor | Descrição |
|---|---|
PLATFORM | Programa legal, regulatório ou genérico da plataforma |
COMPANY | Programa comercial criado por uma empresa |
FareBenefitReviewOwnerType
| Valor | Descrição |
|---|---|
PLATFORM | BackOffice/plataforma valida documentos e solicitações |
COMPANY | Empresa valida documentos e solicitações do programa |
FareBenefitDiscountType
| Valor | Descrição |
|---|---|
PERCENTAGE | Desconto percentual em basis points |
FIXED_AMOUNT | Desconto fixo em centavos |
FareBenefitProgramStatus
| Valor | Descrição |
|---|---|
ACTIVE | Programa disponível para solicitação e aplicação |
INACTIVE | Programa indisponível para novas solicitações e aplicações |