Internet caiu no meio do pico de vendas. Fila no caixa, cliente com o carrinho cheio e o sistema na nuvem fora do ar. Quem trabalha com varejo já viu isso acontecer.
No ERPPro, a gente resolveu isso com um PDV offline que é opcional e ligado em cada computador de caixa. Neste post eu conto como ele funciona e as decisões que tomamos.
O problema: ERP na nuvem x caixa que não pode parar
Um sistema em nuvem precisa de conexão para gravar a venda. Só que o caixa da loja não pode parar porque o link caiu. A saída foi separar duas coisas: registrar a venda e mandar a venda para o servidor.
Como funciona na prática
- Base local primeiro: o caixa precisa abrir o PDV pelo menos uma vez com internet. Nesse momento ele baixa uma cópia dos produtos e preços. Um computador que nunca se conectou não vende offline.
- Fila de vendas: sem internet, cada venda fica salva no próprio computador, numa fila.
- Envio quando a internet volta: com a conexão de volta, a fila é enviada e o sistema atualiza estoque e financeiro, sem duplicar venda.
O que funciona e o que não funciona offline
Escolhemos cobrir só o que trava a fila: a venda normal do caixa. Troca, pré-venda, cadastros, financeiro e relatórios continuam precisando de conexão. Um escopo menor deixa a sincronização mais simples e mais segura.
PDV offline não é contingência da NFC-e
Aqui muita gente confunde. O PDV offline cuida do registro da venda. A contingência da NFC-e cuida da emissão da nota fiscal quando não há comunicação com a Secretaria da Fazenda. Sem conexão e sem contingência instalada, a nota sai quando a internet volta. As regras mudam de estado para estado, então vale alinhar com o contador.
Escrevi a explicação completa, com perguntas frequentes, em como funciona o PDV offline.
Quando vale a pena ligar
- Loja com internet instável ou com um link só
- Horário de pico em que o caixa vira gargalo
- Mercadinhos, conveniências e lojas de alto giro
Para ver o caixa completo, tem a página do sistema PDV do ERPPro.
E vocês? No sistema de vocês, como evitam venda duplicada quando a fila offline sincroniza? 👇
Adriano Fernandes — ERPPro


Top comments (1)
Eu sistemas desse tipo, o que a gente costuma fazer aqui é pensar no funcionamento offline como padrão.
Desse modo sempre mantemos a maior parte do que a aplicação precisa para funcionar de maneira local, e com sincronizações periódicas de tempos em tempos. Por exemplo, cadastro de produtos, cada vez que produtos são criados ou atualizados eles recebem no registro um número que indica a versão do cadastro.
Por exemplo, se atualizei a descrição de um produto, aquele registro recebe o identificador incremental daquele evento, se atualizei ou cadastrei em massa, todos os registros da transação recebem o mesmo id do evento.
Assim a aplicação da estação só precisa buscar por registros a partir do evento que ela já tem. Se o cadastro de produtos que ela tem, o maior registro é de evento 1002, ela precisa buscar apenas do 1003 em diante. Assim, atualiza a base local inserindo e atualizando apenas os registros necessários.
Usamos números ao invés de datas, pois um número é mais simples de identificar e comparar, além de servir de contador de quantas alterações o cadastro recebeu ao longo do tempo. Outra utilidade é servir de identificador do processo para alguma auditoria.
As ações locais também são salvas primeiro de maneira local, e em background são enviadas ao servidor.