Skip to main content
O domínio de Sales gerencia o fluxo comercial de venda de passagens. Ele conecta o domínio de Operations (viagens e itinerários disponíveis) ao domínio Billing (pagamentos e recebíveis).

Entidades

Order Lifecycle

Checkout, Orders por cooperativa, atualização de pagamento e cancelamento.

Checkout QR

Venda de ticket por QR Code entre canal de venda e app do cliente.

Ticket Pricing

Como o preço final do ticket é composto a partir de seatPrice e tripItineraryPrice.

Ticket Activity

Histórico de validação, embarque, rejeição, falha e reimpressão de passagens.

Modelo de Dados

Conceitos-Chave

  • Checkout agrupa a compra do cliente e pode gerar um ou mais Orders.
  • CheckoutSession guarda o QR Code temporário antes da criação do Checkout.
  • Order é o agrupador de passagens de uma única cooperativa — um pedido pode conter um ou mais tickets e sempre possui Customer.
  • Ticket é o item individual do pedido — representa uma passagem para um itinerário específico em um assento específico, com um passageiro associado.
  • TicketActivity registra tentativas de validação, embarque, rejeições, falhas e reimpressões.
  • O cooperativeId identifica a cooperativa responsável pelos tickets e pelo fluxo financeiro daquele Order.
  • O transportOperatorId identifica o permissionário que opera a Trip do Ticket.
  • Cada Order registra o cliente (customerId → Customer) e o usuário responsável pela criação do pedido (soldById → User).
  • Os preços são congelados no momento da compra — alterações posteriores no itinerário ou categoria de assento não afetam passagens já emitidas. Cada Ticket também guarda um snapshot denormalizado para exibição.
  • Benefícios e créditos podem participar do checkout conforme suas próprias regras de domínio. Crédito corporativo é capturado sempre por Ticket.
O Sales é o ponto de integração entre Operations e Billing. A venda de um Ticket ocupa assentos no TripSeatSegment (Operations) e gera obrigações de pagamento (Billing).