Campos
| Campo | Tipo | Descrição |
|---|---|---|
orderId | UUID | Identificador único |
checkoutId | UUID | Referência ao checkout da compra |
customerId | UUID | Referência ao cliente comprador |
organizationId | UUID | Referência à organização da empresa |
companyId | UUID | Referência à empresa responsável pelos tickets do pedido |
soldById | UUID | Referência ao usuário responsável pela criação do pedido |
externalProvider | String | Nome do provedor externo |
externalProviderId | String | ID do pedido no provedor externo |
type | OrderType | Origem da compra |
code | String | Código legível único do pedido |
amount | Int | Valor total do pedido em centavos |
status | OrderStatus | Status do pedido (default PENDING) |
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 Checkout
- Relaciona-se com Customer
- Relaciona-se com Organization
- Relaciona-se com Company
- Relaciona-se com User (como responsável pela criação)
- Relaciona-se com múltiplos Ticket
- Relaciona-se com Payment (1:1, opcional)
- Relaciona-se com múltiplos TripReview
- Relaciona-se com múltiplos BenefitUsageHistory, quando benefício é aplicado ao pedido
- Relaciona-se com múltiplos PromotionalUsageHistory, quando promoções são aplicadas ao pedido ou aos tickets
- Relaciona-se com múltiplos CreditLedgerEntry, quando créditos são usados no pedido
Regras de Negócio
- Agrupa tickets de uma única empresa dentro de um checkout.
- Um checkout com tickets de múltiplas empresas gera um Order por empresa.
- Um Order pode receber uma TripReview por Trip comprada.
- Um checkout pode ter múltiplos TripReviews porque pode gerar múltiplos Orders e Trips.
customerIdé obrigatório também em vendas POS.- Na venda POS, o sistema resolve ou cria
User+Customerantes de criar o Order. - Quando a venda POS cria uma conta nova, o sistema emite um Invite
ACCOUNT_ACTIVATIONpara o customer usar o app depois. - O valor (
amount) é armazenado em centavos — ex.: R$ 150,00 =15000. - O
amountdo Order é a soma dos tickets daquela empresa. - Promoções e créditos só podem ser aplicados quando pertencem à mesma
companyIddo Order. - O campo
codeé um identificador legível único para o pedido.
Enums
OrderType
| Valor | Descrição |
|---|---|
ONLINE | Venda via canal digital |
POS | Venda presencial ou guichê |
OrderStatus
| Valor | Descrição |
|---|---|
PENDING | Pedido pendente de confirmação de pagamento |
PAID | Pagamento confirmado |
PAYMENT_FAILED | Pagamento recusado |
CANCELED | Pedido cancelado |