Pular para o conteúdo principal

Checkout

O Checkout gerencia o processo de pagamento de uma venda, controlando os metodos de pagamento e a finalizacao.

Descricao

O checkout e criado automaticamente quando uma venda e finalizada (status "pending"). Ele coordena a coleta de pagamentos e determina quando a venda pode ser marcada como paga.

Dados

Informacoes do Checkout

CampoTipoObrigatorioDescricao
totalMonetarioCalculadoTotal a ser pago (igual ao total da venda)
paid_totalMonetarioCalculadoSoma dos pagamentos recebidos
remainingMonetarioCalculadoTotal - Paid Total
changeMonetarioCalculadoTroco a devolver (se pago a mais)

Relacionamentos

Pertence a

EntidadeObrigatorioDescricao
SaleSimVenda associada
AccountSimConta do petshop
StoreSimFilial

Possui

EntidadeDescricao
PaymentsPagamentos registrados

Ciclo de Vida

Regras de Negocio

Criacao Automatica

  • Checkout e criado quando sale.status muda para "pending"
  • Somente para vendas do tipo "sale" (nao para orcamentos)

Destruicao Automatica

  • Checkout e destruido quando sale.status volta para "open"
  • Todos os pagamentos associados sao removidos

Validacao de Pagamento

valid_to_pay = sum(payments.value) >= sale.total

Quando valid_to_pay = true:

  • Botao "Pagar" fica habilitado
  • Usuario pode confirmar o pagamento
  • Venda muda para status "paid"

Calculos

Total Pago

paid_total = sum(payments.value)

Valor Restante

remaining = total - paid_total
se remaining < 0: remaining = 0

Troco

change = paid_total - total
se change < 0: change = 0

Metodos de Pagamento Suportados

O checkout suporta multiplos pagamentos com diferentes metodos:

MetodoDescricao
DinheiroPagamento em especie
DebitoCartao de debito
CreditoCartao de credito (a vista ou parcelado)
PIXPagamento instantaneo
Credito ClienteUso de credito do cliente
CashbackUso de cashback do cliente
VoucherUso de voucher/vale
ConvenioPagamento via convenio

Parcelamento

Regras de Parcelamento

  1. Apenas cartao de credito pode ser parcelado
  2. Numero de parcelas definido no PaymentMethod
  3. Taxas de parcelamento aplicadas conforme configuracao
  4. Cada parcela gera uma transacao financeira futura

Calculo de Parcelas

valor_parcela = valor_total / numero_parcelas

Integracao com Financeiro

Ao confirmar pagamento:

  1. Para cada Payment no checkout
  2. Cria FinancialTransaction correspondente
  3. Tipo = "revenue" (receita)
  4. Data base = data do pagamento
  5. Conta destino = conforme metodo de pagamento

Uso de Credito do Cliente

Validacoes

  • Cliente deve ter credito disponivel
  • Valor usado nao pode exceder credito total
  • Credito e abatido do total

Fluxo

Uso de Cashback

Validacoes

  • Cliente deve ter cashback disponivel
  • Valor usado nao pode exceder cashback total
  • Cashback e abatido do total

Acoes do Checkout

AcaoDescricao
Adicionar PagamentoRegistrar novo pagamento
Remover PagamentoExcluir pagamento adicionado
Confirmar PagamentoFinalizar e marcar venda como paga
CancelarVoltar venda para status "open"

Estados do Botao Pagar

CondicaoEstado do Botao
paid_total < totalDesabilitado
paid_total >= totalHabilitado
Pagamento confirmadoOculto

Tratamento de Erros

Pagamento Insuficiente

  • Nao permite confirmar pagamento
  • Mostra valor restante

Erro na Integracao

  • Pagamento com cartao pode falhar
  • Sistema exibe mensagem de erro
  • Usuario pode tentar novamente

Relatorio de Fechamento

O checkout armazena informacoes usadas no fechamento de caixa:

  • Valores por metodo de pagamento
  • Horario do pagamento
  • Operador responsavel