Guia SmartDelivery

Fluxo completo: do pedido do cliente até o fechamento do caixa. Para operadores, cozinha, entregador e administradores.

Neste guia

🔗 Acessos rápidos
Cardápio público
/delivery/loja-demo
Kanban de pedidos
/delivery/pedidos
Tela do entregador
/entregador
Caixa
/caixa
Login
/login
Página de demonstração
/demo/smartdelivery
👤 Usuários de teste
PerfilLogin / E-mailSenhaAcessa
Administradoradmin@bar-choperia-carioca.comcarioca@123Tudo — kanban, caixa, configurações
Cozinhacozinha_barCozinha@123Tela da Cozinha (iniciar/pronto)
Entregadorentregador_barEntregador@123Tela do entregador (saiu/entregue)
Dica: Use abas diferentes do navegador para simular cada perfil simultaneamente. A página de demonstração facilita abrir cada tela com um clique.
🛵 Fluxo: Entrega em casa
Cliente faz pedido
Recebido
Aceito
Em Preparo
Pronto
Saiu p/ Entrega
Entregue
Finalizado

1. Cliente acessa o cardápio e faz o pedido

Abra /delivery/loja-demo. Adicione produtos ao carrinho, preencha nome, telefone, endereço, bairro e forma de pagamento. Clique Enviar Pedido 🚀.

A página de acompanhamento é exibida com o número do pedido (ex: PD-0004).

2. Operador aceita o pedido

No Kanban de pedidos, o pedido aparece na coluna Recebido com som de alerta. Clique Aceitar → move para Aceito. Clique Enviar p/ Cozinha → move para Em Preparo.

3. Cozinha prepara e marca pronto

Na Tela da Cozinha, o pedido aparece em laranja. Clique Iniciar Preparo e depois Pronto. Também pode ser feito pelo operador no kanban (coluna Em Preparo → Marcar Pronto).

4. Entregador retira e sai para entrega

Na Tela do Entregador, o pedido aparece como Pronto. Clique Saiu para entrega → status vai para saiu_entrega.

5. Entregador confirma entrega

Após entregar ao cliente, clique Confirmar entrega. O pedido vai para entregue e aparece na coluna A Fechar no kanban.

6. Operador confirma o pagamento no caixa

No kanban, coluna A Fechar, clique Confirmar Pagamento. Uma venda é criada automaticamente com canal=delivery, vinculada ao caixa aberto. O pedido vai para finalizado.

⚠ O caixa precisa estar aberto. Acesse /caixa/abrir se necessário.

🚶 Fluxo: Retirada no balcão
Cliente faz pedido
Recebido
Aceito
Em Preparo
Pronto
Retirado
Finalizado
Na retirada, o passo "Saiu p/ Entrega" é pulado. Quando o pedido está Pronto, o operador clica Retirado no kanban (botão aparece em verde para pedidos do tipo retirada). O cliente já recebeu, então vai direto para entregue e aparece em A Fechar para confirmar o pagamento.
📋 Etapas do pedido
EtapaQuem mudaAção no sistemaVisível em
Recebido Automático (cliente fez pedido) Pedido criado no cardápio público Kanban — coluna Recebido
Aceito Operador / Admin Clicar "Aceitar" no kanban Kanban — coluna Aceito
Em Preparo Operador ou Cozinha "Enviar p/ Cozinha" no kanban ou "Iniciar Preparo" no KDS Kanban · Tela da Cozinha
Pronto Cozinha ou Operador "Pronto" no KDS ou "Marcar Pronto" no kanban Kanban · Tela do Entregador
Saiu p/ Entrega Entregador "Saiu para entrega" na Tela do Entregador Kanban · Tela do Entregador
Entregue Entregador "Confirmar entrega" na Tela do Entregador Kanban — coluna A Fechar
Finalizado Operador / Admin "Confirmar Pagamento" no kanban (requer caixa aberto) Contador diário no topo do kanban
Cancelado Operador / Admin Botão ✕ vermelho em qualquer coluna do kanban Contador diário no topo do kanban
🔒 Permissões por perfil
Tela / Ação Admin Gerente Operador Cozinha Entregador Cliente (público)
Cardápio público
Kanban de pedidos
Confirmar pagamento (caixa)
Tela da Cozinha (ver)*
Tela da Cozinha (ações POST)
Tela do Entregador
Caixa (abrir/fechar)
Relatórios
Configurações

* Via GET /cozinha?tenant_id=X — público para compatibilidade. Use o link seguro por token para produção.
Via POST /cozinha/kds/{token}/... — token de dispositivo, sem login necessário.

💰 Confirmar pagamento no caixa

O que acontece ao confirmar o pagamento

Ao clicar Confirmar Pagamento no kanban, o sistema executa numa transação:

  • Cria uma Venda com canal=delivery, estado=aprovado, vinculada ao caixa aberto
  • Cria Itens de Venda com os mesmos produtos do pedido
  • Cria um Pagamento com o método escolhido pelo cliente
  • Define o venda_id no pedido e muda para finalizado

Onde aparece no fechamento de caixa

A venda criada fica vinculada ao caixa pelo caixa_id. No Fechamento de Caixa, o resumo inclui automaticamente todas as vendas delivery do período — mesma lógica das vendas de balcão e PDV.

Atenção: O caixa precisa estar aberto para confirmar o pagamento. Se estiver fechado, o botão retorna erro. Abra o caixa em /caixa/abrir. Um pedido só pode ser baixado uma vez — se venda_id já estiver preenchido, aparece "Baixado" sem botão.
📺 Tela da Cozinha — configurar no tablet

URL segura por token (recomendado para produção)

Em vez de usar ?tenant_id=X (que expõe o ID do tenant), use o link com token de dispositivo:

Este token está vinculado à loja. Qualquer tablet que acesse esse URL verá os pedidos sem precisar fazer login.

Como regenerar o token

Se o token for comprometido, regenere-o em Configurações do Delivery (em breve). Por ora, pode ser atualizado via banco de dados:

UPDATE delivery_configs SET kds_token = SUBSTRING(MD5(RAND()), 1, 32) WHERE slug = 'loja-demo';

Após regenerar, atualize o link em todos os tablets da cozinha.

Para demonstrações locais: a rota /cozinha?tenant_id=1 continua funcionando para facilitar testes sem configuração.
🔌 Integrações de plataforma

Todos os canais externos são importados como pedidos_delivery com o campo canal marcado com a plataforma de origem. A Central de Pedidos (/delivery/pedidos) exibe todos os canais em um único kanban com cores por plataforma.

Plataforma Canal (DB) Como chega Vai ao Caixa EagleSync
iFood ifood Webhook + polling a cada 1min (PollIfoodEventsJob) Sim — baixa manual na tela de pedidos Via eagle agent (não duplica)
99food 99food Webhook POST /api/webhooks/food99 Sim — baixa manual Via eagle_order_queue
Mercado Livre mercado_livre Webhook + SyncMercadoLivreJob a cada 15min Sim — automático em alguns fluxos Via eagle_order_queue
Zé Delivery zedelivery Polling manual ou webhook (configurar) Sim — baixa manual Via eagle_order_queue
Rappi rappi Polling manual ou webhook (configurar) Sim — baixa manual Via eagle_order_queue
Amazon amazon SP-API polling (configurar) Sim — baixa manual Via eagle_order_queue
Delivery Próprio delivery_proprio Cardápio público + checkout Sim — automático Via eagle_order_queue
WhatsApp whatsapp Registro manual na tela de pedidos Sim — baixa manual Via eagle_order_queue
Configuração das novas plataformas: Acesse /integracoes/zedelivery, /integracoes/rappi e /integracoes/amazon para salvar as credenciais. Após salvo, execute php artisan migrate --force via Terminal cPanel para criar as tabelas.

iFood — Correção de Heartbeat

Se o teste de heartbeat falhar com mensagem "escopo da loja recebido, esperado escopo de aplicação", o campo Client ID está configurado com credenciais de loja (merchant:…) em vez de credenciais de aplicação (client:…). Use o Client ID da Aplicação registrada no Portal do Desenvolvedor iFood.

🦅 EagleSync — Sincronização com EagleSystem

O EagleSync é um agente desktop instalado nos computadores físicos. Ele lê a fila eagle_order_queue e registra as vendas no Firebird (EagleSystem/ERP offline).

Pedido recebido
Kanban delivery
Baixa no caixa
eagle_order_queue
EagleSystem Firebird
O status da fila pode ser verificado em /sync. Entradas com status failed são reprocessadas automaticamente pelo comando eagle:retry-queue (a cada 5min).
🔧 Problemas comuns e soluções
❓ Cliquei em "Confirmar Pagamento" e recebi erro "Não há caixa aberto"
Acesse /caixa/abrir, defina um fundo de abertura (pode ser R$ 0,00) e abra o caixa. Volte ao kanban e tente novamente.
❓ O pedido não aparece na Tela da Cozinha
O KDS mostra apenas pedidos com status aceito ou em_preparo. Se o pedido ainda está recebido, aceite-o primeiro no kanban. Se está pronto ou além, já saiu do KDS.
❓ O entregador não vê o pedido na Tela do Entregador
A tela do entregador mostra apenas pedidos com status pronto ou saiu_entrega e do tipo entrega. Pedidos de retirada não aparecem aqui — são gerenciados pelo operador no kanban.
❓ O cliente fez pedido de entrega mas não preencheu o endereço
O formulário do cardápio valida: para entrega, nome, telefone, rua/número e bairro são obrigatórios. Se chegou sem endereço, o cliente escolheu "Retirada no balcão".
❓ A taxa de entrega não está sendo calculada por bairro
Configure as taxas por bairro em Configurações do Delivery. O cliente precisa preencher o campo "Bairro" no checkout — o sistema busca automaticamente a taxa correspondente e exibe ao cliente antes de enviar.
❓ Quero cancelar um pedido que já foi confirmado no caixa
Pedidos finalizados não aparecem mais no kanban. Para estornar, acesse Vendas e utilize a função de devolução/cancelamento da venda correspondente.
❓ O som de alerta de novo pedido não toca
Browsers modernos bloqueiam som sem interação do usuário. Clique em qualquer parte da página do kanban uma vez para desbloquear o áudio. Após isso, novos pedidos emitirão o som de alerta automaticamente.
SmartDelivery · Página de demonstração · Ir para o kanban · SmartHub