Máquina de Estados da Venda

Detalhamento do ciclo de vida de uma Venda no backend-store, incluindo os fluxos alternativos de retirada e o gatilho da baixa automática de estoque.

Ciclo de vida da Venda
Figura 1. Ciclo de vida da Venda

Estados

Criado

Estado inicial de uma venda, criada a partir de uma intenção de compra registrada no sistema.

Pago

Indica que o pagamento da venda foi confirmado (via integração financeira).

Aguardando retirada

O produto já está disponível para o aluno, mas a retirada física ainda não ocorreu.

Retirado

Estado final que representa a entrega física do item (ou confirmação de serviço prestado). Dispara automaticamente a baixa no estoque.

Cancelado

Estado final que representa o cancelamento da venda antes da confirmação do pagamento.

Transições

  • Criado → Pago: disparada pela confirmação de pagamento.

  • Criado → Cancelado: a venda pode ser cancelada por desistência ou erro, apenas antes do pagamento.

  • Pago → Aguardando retirada: fluxo principal — o produto é disponibilizado, mas a retirada ainda não ocorreu.

  • Aguardando retirada → Retirado: retirada confirmada. Dispara a baixa automática de estoque.

  • Pago → Retirado: fluxo alternativo de retirada imediata, sem passar por Aguardando retirada (ex.: retirada no balcão). Também dispara a baixa automática de estoque.

Qualquer outra transição não listada acima é inválida e rejeitada pelo backend (422).

Baixa de Estoque

A baixa automática de estoque ocorre exatamente na transição que leva a venda ao estado final Retirado, independentemente do caminho percorrido até ele (com ou sem passar por Aguardando retirada).