Skip to main content
O 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

CampoTipoDescrição
fareBenefitProgramIdUUIDIdentificador único
fareBenefitCategoryIdUUIDCategoria genérica do benefício
companyIdUUID?Empresa dona do programa, quando for benefício comercial da empresa
routeIdUUID?Rota em que o programa se aplica, quando houver restrição por rota
codeStringCódigo estável do programa
nameStringNome exibido do programa
descriptionString?Descrição operacional do programa
ownerTypeFareBenefitProgramOwnerTypeDono da regra de aplicação
reviewOwnerTypeFareBenefitReviewOwnerTypeResponsável por validar documentos e aprovar solicitações
discountTypeFareBenefitDiscountTypeForma de cálculo do benefício
discountValueIntValor do desconto em basis points ou centavos, conforme discountType
maxDiscountAmountInt?Valor máximo de desconto em centavos
priorityIntPrioridade de aplicação quando mais de um programa é elegível
cumulativeBooleanIndica se pode acumular com outro benefício
startsAtDateTime?Início da vigência
endsAtDateTime?Fim da vigência
statusFareBenefitProgramStatusStatus do programa
createdByUUID?Usuário que criou o registro, quando aplicável
createdAtDateTimeData de criação
updatedByUUID?Usuário que fez a última atualização, quando aplicável
updatedAtDateTimeData da última atualização
deletedByUUID?Usuário que removeu o registro, quando aplicável
deletedAtDateTime?Data de remoção lógica

Relacionamentos

Regras de Negócio

  • Programas legais ou genéricos usam ownerType = PLATFORM e não dependem de uma empresa específica.
  • Programas comerciais da empresa usam ownerType = COMPANY e devem preencher companyId.
  • reviewOwnerType define quem analisa documentos e solicitações: plataforma ou empresa.
  • discountValue usa basis points quando discountType é PERCENTAGE; ex.: 50.00% = 5000.
  • discountValue usa centavos quando discountType é FIXED_AMOUNT.
  • Gratuidade total deve usar discountType = PERCENTAGE e discountValue = 10000.
  • Programas fora da janela startsAt/endsAt não devem ser aplicados.
  • A aplicação concreta do programa em uma venda deve ser registrada em BenefitUsageHistory.
  • createdBy, updatedBy e deletedBy seguem o padrão de auditoria do DEVMOB e registram o usuário responsável pela mutação, quando aplicável.

Exemplos de regras

CenárioConfiguração esperada
Idoso com gratuidade legalownerType = PLATFORM, reviewOwnerType = PLATFORM, discountType = PERCENTAGE, discountValue = 10000, sem companyId
Estudante com meia passagemownerType = PLATFORM, reviewOwnerType = PLATFORM, discountType = PERCENTAGE, discountValue = 5000, vigência limitada ao período letivo
Funcionário conveniadoownerType = COMPANY, reviewOwnerType = COMPANY, companyId preenchido, discountType = PERCENTAGE, discountValue = 3000
Campanha comercial com desconto fixoownerType = COMPANY, reviewOwnerType = COMPANY, companyId preenchido, discountType = FIXED_AMOUNT, discountValue em centavos
Esses exemplos mostram que a categoria identifica o tipo de benefício, enquanto o programa define a regra operacional: valor do desconto, vigência, escopo, prioridade, acúmulo e responsável pela análise.

Enums

FareBenefitProgramOwnerType

ValorDescrição
PLATFORMPrograma legal, regulatório ou genérico da plataforma
COMPANYPrograma comercial criado por uma empresa

FareBenefitReviewOwnerType

ValorDescrição
PLATFORMBackOffice/plataforma valida documentos e solicitações
COMPANYEmpresa valida documentos e solicitações do programa

FareBenefitDiscountType

ValorDescrição
PERCENTAGEDesconto percentual em basis points
FIXED_AMOUNTDesconto fixo em centavos

FareBenefitProgramStatus

ValorDescrição
ACTIVEPrograma disponível para solicitação e aplicação
INACTIVEPrograma indisponível para novas solicitações e aplicações

Example

{
  "fareBenefitProgramId": "0197f711-bf5b-7b90-a45b-577e6269a061",
  "fareBenefitCategoryId": "0197f710-b826-77f0-a60b-6c62b9fdd301",
  "companyId": null,
  "routeId": null,
  "code": "STUDENT_50_PERCENT_PLATFORM",
  "name": "Meia passagem estudantil",
  "description": "Programa genérico de meia passagem estudantil",
  "ownerType": "PLATFORM",
  "reviewOwnerType": "PLATFORM",
  "discountType": "PERCENTAGE",
  "discountValue": 5000,
  "maxDiscountAmount": null,
  "priority": 100,
  "cumulative": false,
  "startsAt": "2026-07-04T00:00:00.000Z",
  "endsAt": null,
  "status": "ACTIVE",
  "createdBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "createdAt": "2026-07-04T10:05:00.000Z",
  "updatedBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "updatedAt": "2026-07-04T10:05:00.000Z",
  "deletedBy": null,
  "deletedAt": null
}