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>
-
<li>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 |
Comanda em uso, com itens lançados |
conferencia |
Comanda travada para faturamento em um PDV |
livre |
Comanda sem itens ou já finalizada |
transferencia |
Comanda em processo de transferência |
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)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
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:
| Situação da comanda | Resultado |
|---|---|
| Não existe | Bloqueada (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
| Campo | Descrição |
|---|---|
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 depreco_totalsomente dos itens comcancelado = 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
| Campo | Descrição |
|---|---|
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
| Motivo | Significado |
|---|---|
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
-