Integração de vendas com o Protheus
Última atualização: 31/08/2026
Responsável funcional: administração comercial
Responsável técnico: operação da API
Objetivo
Receber os movimentos de venda das lojas, persistir notas e itens sem duplicidade, associar vendedores, atualizar totais diários e identificar alterações que precisam de validação humana.
O administrador pode manter URL, endpoint, usuário e token/senha em Configurações > Integrações. O segredo é criptografado no banco e nunca é devolvido pela API ou exibido após o salvamento. As variáveis de ambiente da API permanecem como fallback. Esta documentação não registra o valor da credencial.
Configuração técnica
| Variável | Uso |
|---|---|
PROTHEUS_SYNC_ENABLED | Habilita o agendador quando igual a true |
PROTHEUS_BASE_URL | Host da API de origem |
PROTHEUS_SALES_PATH | Caminho do serviço de vendas |
PROTHEUS_USERNAME | Usuário de Basic Auth |
PROTHEUS_PASSWORD | Senha de Basic Auth |
PROTHEUS_CREDENTIALS_ENCRYPTION_KEY | Chave usada para criptografar a credencial persistida |
PROTHEUS_CNPJS | Relação padrão de CNPJs |
Para cada consulta, a API envia CNPJ, data inicial e data final nos cabeçalhos
esperados pelo serviço de origem e lê o array Movimentos.
Embora a tela use o rótulo Token / senha, o serviço atual autentica por Basic
Auth com usuário:credencial. A chave de criptografia deve ser estável entre
reinícios; quando ausente, a API usa JWT_ACCESS_SECRET como fallback técnico.
Atualização da credencial pelo administrador
- Abra Configurações > Integrações e mantenha a fonte Protheus ativa.
- Revise URL, endpoint e usuário.
- Informe o novo token/senha. O valor atual nunca é preenchido no campo.
- Clique em Testar conexão. O teste consulta um CNPJ ativo sem salvar o valor.
- Somente após o teste retornar sucesso, clique em Salvar credencial.
Salvar registra auditoria sem incluir o token. Alterar qualquer campo invalida o teste anterior e exige uma nova validação.
Agendamentos
Com a sincronização habilitada, a API verifica o relógio a cada minuto e executa:
| Rotina | Regra | Período consultado |
|---|---|---|
| Horária | Todo minuto 05 | Dia atual |
| Revisão diária | Horário dailySyncTime | Últimos protheusReviewDays, incluindo hoje |
| Fechamento mensal | Dia protheusClosingDay, no horário configurado | Mês anterior completo |
Valores padrão:
- revisão diária às
23:30; - janela retroativa de
7dias; - fechamento no dia
1, às02:15; - fuso
America/Sao_Paulo.
O administrador pode alterar a janela, o horário diário, o dia e o horário de fechamento em Configurações > Parâmetros.
Sincronização manual
Em Configurações > Integrações > Fonte de dados, escolha Protheus, informe o intervalo e, opcionalmente, a lista de CNPJs. A ação chama:
POST /api/v1/integrations/protheus/sync
{
"dateFrom": "2026-07-01",
"dateTo": "2026-07-23",
"cnpjs": ["00000000000000"]
}
Quando cnpjs não é enviado, são usados os CNPJs configurados no ambiente.
Processamento
- É criado um log de integração com estado em execução.
- Cada CNPJ é consultado no período solicitado.
- A loja é localizada por CNPJ ou código; quando necessário, é criada.
- O vendedor é localizado por CPF e depois por loja + código PDV. Quando não há correspondência, a nota segue para o Validador NF sem criar funcionário.
- A chave documental da nota identifica a venda.
- Itens e totais são normalizados e persistidos.
- A validação diária da loja e do vendedor é recalculada.
- O log recebe contagens, falhas, horário de conclusão e resultado final.
Uma repetição do mesmo período deve ser idempotente: a nota conhecida é atualizada ou comparada, não criada novamente como outra venda.
Divergências de NF
Quando uma nota conhecida retorna com conteúdo diferente, o sistema compara o snapshot anterior com o recebido. Podem ser sinalizados:
- vendedor ausente;
- valor alterado;
- quantidade alterada;
- vendedor alterado;
- data alterada;
- loja alterada.
A alteração não é aplicada silenciosamente. É criada uma pendência em Auditoria > Validador NF.
O responsável pode:
- conferir dados anteriores e recebidos;
- selecionar ou corrigir o vendedor;
- corrigir data, quantidade e valor;
- definir se a NF participa de indicadores e metas;
- registrar uma observação;
- salvar e validar.
Se a mesma versão já validada voltar da origem, ela é reconhecida e não abre uma nova
pendência. Se uma versão pendente for substituída por outra, a anterior fica
SUPERSEDED.
Inclusão nos indicadores
- Ativada: a NF compõe vendas, dashboard, atingimento e relatórios.
- Desativada: a NF permanece no histórico analítico, porém com
includedInMetrics=false, sem participar das agregações comerciais.
Toda decisão registra usuário, data, estado anterior, estado resolvido e auditoria.
Carga histórica
Períodos longos devem ser divididos em intervalos pequenos para limitar o impacto de falhas na origem:
GV_API_BASE_URL=http://127.0.0.1:3000/api/v1 \
GV_API_EMAIL=usuario@empresa.com \
GV_API_PASSWORD='senha-em-variavel-segura' \
npm run sync:protheus:period -- \
--from 2026-04-01 \
--to 2026-07-31 \
--chunk-days 3 \
--output reports/protheus-sync-2026-04-01-2026-07-31.json
O script:
- autentica na API do GV - Gestor de Vendas;
- divide o intervalo;
- interrompe se uma janela ou CNPJ falhar;
- registra contagens em JSON;
- permite limitar CNPJs com
--cnpjs.
Antes de reset ou carga histórica, faça backup do PostgreSQL e registre o nome do arquivo no chamado ou ata da operação.
Monitoramento
Verificações diárias:
- Abra Configurações > Integrações.
- Confirme que o agendador está ativo.
- Confira a última execução, período, quantidade de movimentos e falhas.
- Se houver erro de autenticação, teste a credencial antes de salvá-la.
- Verifique pendências no Validador NF.
- Compare amostras no Relatório Analítico de vendas.
Endpoints de apoio:
GET /integrations/protheus/status;GET /integrations/protheus/logs;POST /integrations/protheus/test-connection;POST /integrations/protheus/logs/:id/reprocess;POST /integrations/protheus/logs/reprocess-failed;GET/PATCH /settings/protheus-credentials;GET /integrations/data-source/logs.
Diagnóstico de divergência com relatório externo
Use a mesma janela, CNPJs e regra de inclusão nos dois lados. Compare por chave de nota, série, loja, emissão, vendedor, valor e quantidade, nesta ordem:
- confirme se a execução terminou sem CNPJ em falha;
- confirme a quantidade bruta de movimentos;
- confira notas excluídas de indicadores;
- confira devoluções e valores negativos;
- confira pendências e versões substituídas no Validador NF;
- confira vendedores sem vínculo;
- compare o Analítico de vendas com o arquivo de origem;
- registre as notas divergentes e seus payloads.
Uma diferença entre API Protheus e extração direta do ERP deve ser tratada como divergência da origem até que a mesma chave documental seja comparada nos dois retornos.
Reprocessamento e falhas
- Falha de autenticação ou rede: o log fica como
FAILED; testar e atualizar a credencial em Configurações antes de reprocessar. - Falha de um CNPJ: reprocessar somente o log ou CNPJ afetado.
- Falhas acumuladas: use Recuperar períodos com erro. O serviço consolida períodos repetidos, executa os menores primeiro e interrompe o lote após três falhas consecutivas.
- Cobertura: a execução registra quantos CNPJs foram solicitados e quantos
responderam. Somente
allCnpjsSucceeded=trueencerra o período como completo. - Movimento sem vendedor: tratar no Validador NF ou corrigir cadastro/código.
- Loja não reconhecida: conferir CNPJ e código Protheus no cadastro.
- Duplicidade aparente: comparar chave documental e
externalIdantes de excluir. - Valor alterado: validar a pendência; não editar diretamente no banco.
