PromotionalUsageHistory registra a aplicação efetiva de um Promotional. Ele preserva os valores calculados e o snapshot da regra fixa validada no momento do checkout.
Campos
| Campo | Tipo | Descrição |
|---|---|---|
promotionalUsageHistoryId | UUID | Identificador único |
promotionalId | UUID | Promoção aplicada |
organizationId | UUID | Organização da Company responsável pela promoção |
companyId | UUID | Company dona da promoção e da venda |
customerId | UUID? | Cliente da compra |
checkoutId | UUID? | Checkout em que a promoção foi validada |
orderId | UUID? | Pedido em que a promoção foi aplicada |
ticketId | UUID? | Passagem em que a promoção foi aplicada, quando o desconto é por ticket |
validatedRuleType | PromotionalType | Tipo da regra validada |
validatedRuleId | UUID | Identificador da regra específica validada |
originalAmount | Int | Valor original antes da promoção em centavos |
discountAmount | Int | Valor descontado em centavos |
finalAmount | Int | Valor final após a promoção em centavos |
discountType | PromotionalDiscountType | Forma de cálculo aplicada |
discountValue | Int | Valor usado no cálculo no momento da aplicação |
appliedRuleSnapshot | Json | Snapshot da regra e condições aceitas no checkout |
status | PromotionalUsageStatus | Status do histórico de uso |
appliedAt | DateTime | Data em que a promoção foi aplicada |
reversedAt | DateTime? | Data de reversão, 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 Promotional por
promotionalId. - Relaciona-se com Company por
companyId. - Relaciona-se com Customer por
customerId, quando disponível. - Relaciona-se com Checkout, quando a promoção foi validada no checkout.
- Relaciona-se com Order, quando o desconto foi aplicado no pedido.
- Relaciona-se com Ticket, quando o desconto foi aplicado em uma passagem específica.
validatedRuleIdaponta para a tabela de regra indicada porvalidatedRuleType.
Regras de Negócio
- Cada registro representa uma aplicação confirmada de promoção.
companyIddeve ser igual à Company do Promotional e à Company do Order relacionado.- Pelo menos uma referência comercial deve existir:
checkoutId,orderIdouticketId. validatedRuleTypedeve ser igual aotypedo Promotional aplicado.validatedRuleIddeve apontar para uma regra compatível comvalidatedRuleType.discountAmountdeve ser maior ou igual a zero.finalAmountnão pode ser menor que zero.finalAmountdeve refletiroriginalAmount - discountAmount.discountType,discountValueeappliedRuleSnapshotpreservam o cálculo feito no momento da aplicação.- Quando
ticketIdestiver preenchido, o histórico representa desconto aplicado em uma passagem específica. - Quando
ticketIdestiver vazio eorderIdpreenchido, o histórico representa desconto aplicado no pedido. - 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
PromotionalUsageStatus
| Valor | Descrição |
|---|---|
APPLIED | Promoção aplicada na compra |
REVERSED | Aplicação revertida |