Nova Página
<!doctype html><html lang="pt-BR"><head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>API – Iniciar Faturamento de Comandas</title> <style> :root { color-scheme: light; } body { font-family: Arial, Helvetica, sans-serif; line-height: 1.5; margin: 24px; color: #111; } h1 { margin: 0 0 12px; } h2 { margin: 24px 0 10px; } h3 { margin: 18px 0 8px; } p { margin: 8px 0; } .endpoint { padding: 10px 12px; border: 1px solid #ddd; border-radius: 8px; background: #fafafa; display: inline-block; } .callout { border-left: 4px solid #f5b301; background: #fff8e6; padding: 10px 12px; border-radius: 6px; margin: 12px 0; } .ok { border-left-color: #2e7d32; background: #eef7ef; } .warn { border-left-color: #b26a00; background: #fff8e6; } .bad { border-left-color: #c62828; background: #fdecec; } table { width: 100%; border-collapse: collapse; margin: 10px 0; } th, td { border: 1px solid #ddd; padding: 8px; vertical-align: top; } th { background: #f3f3f3; text-align: left; } code, pre { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; } pre { background: #0b1020; color: #e6e6e6; padding: 12px; border-radius: 10px; overflow: auto; } .small { font-size: 0.95rem; color: #333; } ul { margin: 8px 0 8px 22px; } .badge { display:inline-block; padding:2px 8px; border-radius:999px; background:#eee; font-size: 12px; } </style></head><body>
<header> <h1>
📌 API – Iniciar Faturamento de Comandas</h1>
Endpoint: <p class="endpoint"><strong>Endpoint:</strong> <code>POST /api/v1/mesas-comandas/iniciar-faturamento</code></p> </header>
🎯 Objetivo da API</h2>
Esta API permite que um PDV solicite ao Servidor de Comandas o início do faturamento de uma ou mais comandas, comandas, possibilitando que elas sejam pagas juntas em uma única venda. </p>
<p><strong>O Servidor de Comandas:</strong></p>
valida cada comanda solicitada;</li>
trava (coloca em <code>conferencia) apenas as comandas que podem ser faturadas;</code></li>
retorna os itens da comanda para o PDV montar a venda;</li>
retorna também as comandas que não puderam ser faturadas,faturadas, com o motivo.</li> </ul>
<div class="callout warn"> <p><strong>⚠️ Importante:</strong><br/> A API permite sucesso parcial. parcial.
Se 3 comandas forem enviadas e apenas 2 puderem ser faturadas, essas 2 serão liberadas para faturamento e a outra será retornada como bloqueada. </p> </div> </section>
🧠 Conceitos importantes (antes de integrar)</h2>
<h3>
Status da comanda</h3>
Status Significado
consumo
conferencia
livre
transferencia
Regras gerais
Nunca existe faturamento parcial de itens: ou a comanda entra inteira ou não entra.
Itens cancelados sempre são retornados, mas não entram no total.
O PDV não recalcula valores: deve confiar nos valores retornados pela API.
🔐 Autenticação
Segue o padrão de autenticação do Servidor de Comandas (definido pelo projeto).
Caso a autenticação falhe, a API retornará erro HTTP (401/403).
📥 Request
Body (JSON)
numeroMesas
number[]
✅
IDs das comandas que o PDV deseja faturar
numeroPdv
string
✅
Identificação do PDV solicitante
operador_id
string
✅
Identificação do operador
Exemplo de requisição
⚙️ O que o servidor faz ao receber a requisição
Para cada comanda enviada, o servidor avalia:
NAO_ENCONTRADA)
Já está em conferência
Bloqueada (EM_CONFERENCIA)
Está livre
Bloqueada (STATUS_LIVRE)
Está em consumo e há PDVs lançando itens
Bloqueada (EM_LANCAMENTO_ITENS)
Está em transferência
Bloqueada (EM_TRANSFERENCIA)
Está em consumo (sem bloqueios)
✅ Elegível → status muda para conferencia
📤 Response – Sucesso (200)
Quando acontece?
Quando pelo menos uma comanda pôde ser colocada em conferencia.
Estrutura do retorno
✅ comandasParaFaturar
Lista das comandas que foram liberadas para faturamento.
Campos
idMesa
ID da comanda
codigoComanda
Código exibido ao operador
statusAlteradoPara
Sempre conferencia
totalComanda
Soma dos itens não cancelados
itens
Lista de itens da comanda
Regras do total
totalComanda = soma de preco_total somente dos itens com cancelado = false
Estrutura de um item
⚠️ Itens cancelados
cancelado = true
Não entram no total
Servem apenas para auditoria/relatórios
preco_total é apenas informativo
🚫 comandasBloqueadasParaFaturar
Lista das comandas que não puderam ser faturadas.
Campos
idMesa
ID da comanda (quando existir)
codigoComanda
Código da comanda
statusAtual
Status atual da comanda
motivo
Código do bloqueio
mensagem
Texto explicativo
numeroPdvEmConferencia
PDV que está usando a comanda (quando aplicável)
pos_lancando
PDVs lançando itens (quando aplicável)
🧾 Enum motivo
EM_CONFERENCIA
Comanda já está sendo faturada
STATUS_LIVRE
Comanda está livre/sem itens
NAO_ENCONTRADA
Comanda inexistente
EM_LANCAMENTO_ITENS
Existem PDVs lançando itens
EM_TRANSFERENCIA
Comanda em transferência
STATUS_INVALIDO
Status não permitido
SEM_ITENS
Comanda sem itens (quando aplicável)
❌ Response – Erro (422 ou 409)
Quando acontece?
Quando nenhuma comanda enviada pode ser faturada.
Comportamento esperado do PDV
Não montar a venda
Exibir os motivos ao operador
Encerrar o fluxo
Exemplo
{
"comandasParaFaturar": [],
"comandasBloqueadasParaFaturar": [
{
"idMesa": 4070,
"codigoComanda": "22",
"statusAtual": "conferencia",
"motivo": "EM_CONFERENCIA",
"numeroPdvEmConferencia": "12",
"mensagem": "Comanda já está em conferência."
}
]
}
✅ Boas práticas para quem integra (PDV)
Sempre trate sucesso parcial
Nunca recalcular valores
Não tente faturar comandas bloqueadas
Guarde localmente as comandas que entraram em conferencia
Use essa lista depois para:
confirmar-faturamento
cancelar-faturamento