Case Garrafaria Serra Negra
ClienteUm ecossistema digital em volta do SAP Business One
Para uma distribuidora de embalagens de vidro com 40 anos de mercado, construímos um portal B2B, um painel de gestão com BI e um WMS, integrados ao SAP Business One em tempo quase real.
- 4aplicações web sobre uma camada de integração própria
- 3integrações de sistemas: SAP B1, Imperium e RD Station
- 2 minpara um pedido recente chegar do SAP à plataforma
- 8 mesesde desenvolvimento, com mais de 430 commits
O case em 51 segundos
Portal B2B, gestão com BI e WMS, todos ligados ao SAP Business One.
O desafio
O SAP é um ótimo ERP. Não foi feito para ser vitrine.
A Garrafaria Serra Negra distribui garrafas, potes, vasilhames de vidro e acessórios como tampas e fechamentos, com 40 anos de história e clientes empresariais em todo o Brasil. Toda a operação fiscal, comercial e de estoque roda no SAP Business One.
O ERP não foi feito para ser a vitrine do cliente, nem o painel de decisão do gestor, nem a ferramenta do operador no armazém.
- Pedidos B2B manuaisChegavam por WhatsApp, e-mail e telefone. O comercial redigitava tudo no SAP.
- Pouca visibilidade gerencialVendas, margem, carteira e estoque dependiam de planilhas montadas à mão a partir de exportações do SAP.
- Precificação fora do sistemaListas por cliente, custo da mercadoria vendida, frete por milheiro, ICMS e markup calculados à parte.
- Expedição desconectadaSeparação, conferência e despacho sem um fluxo digital ligado ao pedido do SAP e ao WMS logístico.
- Cadastro de clientes lentoLiberar um cliente novo dependia de várias trocas de e-mail.
O objetivo
Uma plataforma única. O SAP B1 continua como fonte de verdade fiscal, e cada perfil ganha uma experiência própria.
- Cliente
- Vendedor
- Gestor
- Operador
A solução
Quatro aplicações sobre uma camada de integração
Tudo publicado sob o mesmo domínio e orquestrado em containers.
- Clientes B2B
Portal B2B
Pedidos com a lista de preço de cada cliente
/b2b - Gestão e comercial
Painel de Gestão
Funil, CRM, BI e administração
Login e perfis próprios
- Diretoria
Cockpit BI
A visão analítica que substitui a planilha
/cockpit - Operação
WMS / OMS
Separação, conferência e expedição
Coletor no celular, com fila offline
- WMS CoreFastAPI e máquina de estados
- PostgreSQL 16base única, espelho do SAP e views de BI
- ImperiumWMS logístico via SOAP: expedição e NF
O e-commerce do cliente empresarial
O cliente PJ pede sozinho, com os preços da sua lista no SAP
Um portal autenticado: a empresa entra com o CNPJ, monta o carrinho e envia a cotação, que o comercial transforma em pedido.

- Onboarding por CNPJIdentifica se a empresa já é cliente no SAP, com código de verificação por e-mail, criação de senha e recuperação de acesso.
- Cadastro com aprovaçãoAprovado no Painel, o cliente é criado no SAP com endereços, dados fiscais, lista de preço e vendedor, e recebe o acesso por e-mail.
- Catálogo com variantesVários códigos do SAP viram um produto, com cor, fechamento e embalagem (unidade, caixa, fardo), busca e filtros.
- Estoque e avise-meO cliente vê a disponibilidade. Pedido acima do estoque não é bloqueado: o vendedor é avisado para negociar.
- Cotação vira pedidoO carrinho gera uma Cotação no SAP. O comercial converte em Pedido de Venda com um clique, mantendo o vínculo.
- Acompanhamento do pedidoLinha do tempo de status, itens, valores, observações do vendedor e cancelamento de cotações pendentes.
- Chat com o vendedorDentro do pedido, com mensagens não lidas e o card Seu vendedor com WhatsApp, telefone e e-mail.
- RecompraFavoritos, listas reutilizáveis, mais comprados e dados de entrega: CEP, janelas de recebimento, veículo e agendamento.
- SEO assistido por IANo admin do catálogo: score de SEO, sugestões de título e descrição com OpenAI, métricas do Search Console e geração em lote.
- Feito para o celularIdentidade visual da marca, layout responsivo e navegação inferior no celular.
Inteligência de preço
O sistema lê a lista de preço do cliente no SAP. Se o item não tiver preço ali, segue uma cadeia de alternativas.
- Lista de preço do cliente no SAP
- Histórico do próprio cliente
- Outras listas de preço
- Histórico geral
- Sem preço: a cotação fica com o comercial, sem perder o pedido
O que o cliente acompanha
Cada pedido tem uma linha do tempo.
- Confirmado
- Em separação
- Faturado
- Em entrega
- EntregueCom chat com o vendedor em todas as etapas
Comercial, CRM, BI e administração
O centro de comando da empresa
Login próprio, perfis de acesso e liberação por módulo.
- Admin
- Supervisor
- Comercial
- Operador
- Visualizador
- Novo
- Em análise
- Faturado
- Em separação
- Enviado
- Entregue
- Cancelado
O funil de pedidos em kanban se atualiza sozinho a cada 45 segundos. Ilustração.
Operação comercial
- Aprovação de pedidos do portal, conversão de cotações, follow-ups e mensagens com o cliente
- Nova venda, notas fiscais vinculadas aos pedidos e fretes em visão separada, para não distorcer o faturamento
- Ranking e evolução dos vendedores, histórico de 12 meses, metas e recompra da carteira
- CRM e Cliente 360: curva ABC, mapa do Brasil, inativos, previsão de recompra e integração com o RD Station
Business Intelligence
- Visão executiva por perfil, com variação mês a mês
- Faturamento, carteira, preços praticados e listas do SAP
- Estoque com alertas e compras com curva ABCD, cobertura e semáforo de reposição
- Produção: demanda versus estoque por fardo, caixa e palete
- Markup: CMV, ponto de equilíbrio, margens, frete por milheiro e ICMS
- Modo privacidade: oculta os valores com um atalho, para apresentar em reuniões
Administração
- Usuários, perfis e redefinição de senha por e-mail
- Acessos B2B, fila de cadastros (pendente, em análise, aprovado e publicado no SAP) e listas de preço
- Central de integrações com status e sincronização manual do SAP, teste de SMTP, conexão com o RD Station e saúde do Imperium
Cockpit BI, a visão da diretoria
Uma aplicação dedicada a substituir a planilha gerencial de várias abas: pedidos, documentos de venda, produtos, estoque, clientes, carteira, vendedores, margens e faturamento do mês, com filtro global de período e o status da sincronização com o SAP.
Desenhado com um roadmap de ETL, data warehouse, camada semântica de métricas e consultas em linguagem natural com IA.
Separação e expedição
Do pedido no SAP até o despacho, com cada passo registrado
Uma aplicação para o armazém, com permissões por função.
- A separar
- Em separação
- Conferido
- Aguardando cotação de frete
- Aguardando coleta
- Despachado
- Auditoria completaCada evento fica registrado com usuário, horário e identificador de rastreio. Eventos repetidos não são processados duas vezes.
- Status de volta no SAPO WMS grava o status no próprio pedido do SAP, em campos criados para o projeto. O comercial acompanha a expedição sem sair do ERP.
- Sem conflito entre operadoresControle de concorrência para dois operadores não alterarem o mesmo pedido.
- Indicadores e estoqueDashboard, pedidos com histórico, catálogo e posição de estoque: disponível, reservado e livre.
- Coletor de bipagemUm app no celular (PWA) com fila offline, para o armazém seguir trabalhando sem sinal.
- Integração com o ImperiumEnvio de pedidos e cargas, status e nota fiscal via SOAP, com fila de saída que garante a entrega das mensagens.
Integração com o SAP Business One
O coração técnico: um conector próprio para o Service Layer
Desenvolvemos um conector para a API REST do SAP B1, reutilizado por todos os serviços.
Do SAP para a plataforma
- Pedidos de venda
- Notas fiscais (NF-e)
- Cotações
- Clientes
- Itens e estoque por depósito
- Vendedores
- Grupos de clientes
- Listas de preço
Da plataforma para o SAP
- Novos clientes (Business Partners)
- Cotações
- Pedidos de venda convertidos da cotação
- Cancelamentos
- Status do WMS no pedido
Sincronização em camadas
- 30 s
- Operação: um worker consulta os pedidos e alimenta o WMS
- 2 min
- Quase tempo real: pedidos recentes
- 1 hora
- Incremental: pedidos, notas, estoque, movimentações e cotações
- Toda noite
- Reconciliação completa, para nada ficar divergente
- Sob demanda
- Manual, pela central de integrações do Painel
Resiliência pensada para produção
- Sessão gerenciadaLogin no Service Layer controlado, com proteção contra sessões simultâneas.
- Retry com backoffNovas tentativas com espera crescente e jitter para timeouts, limite de requisições e erros 5xx.
- Circuit breakerPausa as chamadas quando o SAP fica instável e se recupera sozinho.
- Controle de taxaLimita concorrência e requisições por segundo para não sobrecarregar o ERP.
- IdempotênciaReenviar uma operação nunca duplica pedido nem cliente.
- Mock do SAPDesenvolvimento e testes sem tocar no ambiente de produção.
- Campos por scriptOs campos de usuário do WMS são criados e validados direto pelo Service Layer.
Arquitetura e engenharia
Feito para rodar em produção
- 89%de cobertura de testes no domínio do WMS
- 100%de cobertura na máquina de estados
- API Gateway (BFF)Node.js e Fastify: autenticação, rotas do B2B e do BI, agendador de sincronização, integração com o Imperium e e-mails.
- Núcleo do WMSPython e FastAPI com as regras críticas. O gateway só autentica, traduz e entrega.
- PostgreSQL como base únicaTabelas espelho do SAP, views analíticas para o BI, filas de saída e logs de sincronização.
- Contratos versionadosAPIs descritas em OpenAPI 3 e mapeamentos SAP → WMS versionados.
- ObservabilidadeLogs estruturados com ID de correlação ponta a ponta, OpenTelemetry e métricas Prometheus, com cada chamada ao SAP rastreada.
- SegurançaJWT com perfis e módulos, senhas com bcrypt, verificação por código e credenciais só em variáveis de ambiente.
- Testes ponta a pontaPedido, separação, conferência e expedição, com erros de endereço, produto e quantidade, idempotência e concorrência.
- InfraestruturaDocker Compose numa VPS, Nginx roteando cada aplicação por caminho, deploy versionado e rollback com um comando.
Stack
O que usamos em cada camada
- Frontends
- Next.js 15 e 16
- React 19
- TypeScript
- Tailwind CSS
- shadcn/ui e Radix
- Dados no front
- TanStack Query
- TanStack Table
- TanStack Virtual
- React Hook Form
- Zod
- Recharts
- Backend
- Node.js 20
- Fastify 5
- Python 3.12
- FastAPI
- SQLAlchemy
- Pydantic
- Banco de dados
- PostgreSQL 16
- ERP e integrações
- SAP B1 Service Layer (OData)
- Imperium WMS (SOAP)
- RD Station (OAuth)
- Google Search Console
- OpenAI
- SMTP
- Segurança
- JWT
- bcrypt
- OTP por e-mail
- RBAC
- Observabilidade
- OpenTelemetry
- Prometheus
- Pino
- Infra
- Docker
- Docker Compose
- Nginx
- VPS Hostinger
- PM2
- Qualidade
- tsx e c8
- Contratos OpenAPI 3
O que o projeto mostra
O ERP continua no centro. Cada perfil ganha a sua ferramenta.
O SAP B1 segue como fonte de verdade fiscal. Em volta dele, o cliente pede sozinho, o comercial aprova e acompanha, a diretoria decide com dados atualizados e o armazém despacha com rastreio, tudo pela mesma camada de integração.
- 4 aplicações web
- 3 serviços de backend
- 3 integrações
- 430+ commits