Atualizar automaticamente datas na NFe SEFAZ no Protheus (sem retrabalho)

Se você usa o Protheus no dia a dia, já sabe como funciona.

Você abre a tela da NFe SEFAZ…
E lá vai você ajustar data manualmente de novo.

Pode parecer detalhe, mas isso acontece todos os dias.
E quando soma no tempo da operação, vira retrabalho puro.

Foi exatamente esse cenário que vimos em um cliente.

E a pergunta foi direta:

“Tem como abrir a tela já com as datas atualizadas automaticamente?”

A resposta é: tem sim.
E sem gambiarra.

O problema por trás disso

A rotina padrão da NFe SEFAZ não traz inteligência nos parâmetros.

Ou seja:

  • Cada usuário define o filtro do jeito que quiser
  • Datas ficam desatualizadas
  • Consultas podem sair inconsistentes
  • E o time perde tempo ajustando sempre a mesma coisa

Agora imagina isso rodando em escala.

Você começa a ter:

  • Falta de padrão
  • Erro humano
  • Perda de produtividade

A ideia da solução

Aqui a lógica foi simples:

Interceptar a execução da rotina e já entrar com os parâmetros certos.

No nosso caso:

  • Sempre buscar os últimos 3 dias
  • Sem depender do usuário lembrar disso

Ou seja, a tela já abre pronta para uso.

Como fizemos isso

Usamos o ponto de entrada ChkExec, que é acionado quando o usuário executa uma rotina.

A lógica é:

  • Identificar se a rotina chamada é a NFe SEFAZ (SPEDNFE)
  • Se for, rodar uma função que ajusta os parâmetros automaticamente

Código do ChkExec

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function ChkExec
Ponto de Entrada acionado ao clicar em alguma opção no menu
@type Function
@author Atilio
@since 16/10/2025
@see https://tdn.totvs.com/display/public/framework/CHKEXEC+-+Dispara+ponto+de+entrada
/*/

User Function ChkExec()
Local lContinua := .T.
Local cFuncao := Upper(ParamIXB)

//Se for a função NFE Sefaz
If ("SPEDNFE" $ cFuncao) .And. ! IsBlind()
u_zAtuParNfe()
EndIf

Return lContinua

O que esse trecho faz

Aqui não tem mistério:

  • Captura a função executada
  • Verifica se é a SPEDNFE
  • Se for, chama a customização

Sem impacto em outras rotinas.
Sem risco de efeito colateral.

A customização

Aqui é onde realmente resolvemos o problema.

A função abaixo define os parâmetros automaticamente antes da tela abrir.

Código da zAtuParNfe

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} zAtuParNfe
Função para atualizar as datas de emissão de/até na tela de parâmetros da tela NFe Sefaz
@type user function
@author Atilio
@since 02/03/2026
@obs Similar ao SetMvValue, mas usando ParamSave pois é um ParamBox
/*/

User Function zAtuParNfe()
Local aArea := FWGetArea()
Local cGrupo := FWGrpCompany()
Local cFil := FWCodFil()
Local cLoadName := "SPEDNFE" + cGrupo + cFil
Local aRespostas := {}
Local aBackup := NgSalvaMvPa()

//Define as respostas
aRespostas := Array(5)
aRespostas[01] := "1-Saída " //Tipo NFe
aRespostas[02] := "2-Sem filtro " //Filtra
aRespostas[03] := "1 " //Série
aRespostas[04] := DaySub(Date(), 3) //Data De
aRespostas[05] := Date() //Data Até

//Define agora nos MV_PAR
MV_PAR01 := aRespostas[01]
MV_PAR02 := aRespostas[02]
MV_PAR03 := aRespostas[03]
MV_PAR04 := aRespostas[04]
MV_PAR05 := aRespostas[05]

//Atualiza os parâmetros em memória
ParamSave(cLoadName, aRespostas, "1")

NgRetAuMVPa(aBackup)
FWRestArea(aArea)
Return

O que isso resolve na prática

Não é só sobre automatizar data.

Você passa a ter:

  • Padronização no uso da rotina
  • Menos erro humano
  • Mais agilidade no dia a dia
  • Mais confiabilidade nas consultas

E isso escala muito rápido dentro da operação.

Um detalhe importante

Aqui usamos ParamSave — e isso faz diferença.

Como a tela trabalha com ParamBox, essa é a forma correta de persistir os valores.

Se fizer diferente, pode ter comportamento inconsistente.

Onde você pode aplicar isso

Esse padrão não serve só para NFe.

Dá pra aplicar em:

  • Pedido de venda
  • Financeiro
  • Relatórios
  • Integrações
  • Qualquer rotina com ParamBox

Ou seja, você começa com um ajuste simples…
E quando vê, melhorou a operação inteira.

O ponto que pouca gente fala

Isso aqui não é sobre código.

É sobre maturidade.

Operação que cresce:

  • Não depende de usuário lembrar processo
  • Não aceita retrabalho como padrão
  • Automatiza o que é repetitivo

E o Protheus permite isso — só precisa usar direito.

Index

Categorias

Sobre o Autor

Foto do Autor
Fábio Hayama

Apaixonado por gestão, tecnologia e inovação, Fábio Hayama possui mais de 15 anos de experiência no universo do ERP Protheus, estratégia empresarial e automação de processos.

Leia mais sobre o Fábio

Entre em contato conosco

Veja mais artigos relacionados

Protheus
Como replicar campos, tabelas e índices no Protheus usando a Gestão de Ambientes (UPDDISTR)
Replicar customizações no Protheus pode ser muito mais simples do que parece Quem trabalha com desenvolvimento ou sustentação no TOTVS Protheus provavelmente já passou pela seguinte situação: depois de concluir uma customização em uma base de desenvolvimento ou homologação, chega o momento de levar todas aquelas alterações para produção. À primeira vista parece uma tarefa […]
Como reduzir em até 80% o retrabalho comercial com um Portal B2B integrado ao Protheus
Seu time comercial fecha um pedido. Alguns minutos depois, alguém do administrativo precisa digitar as informações dentro do ERP. Em seguida, outra pessoa confere estoque, preços, condições comerciais e dados do cliente. Quando tudo parece correto, surge uma divergência que exige uma nova conferência. O pedido volta para ajustes, o cliente espera uma resposta e […]
Podcast Gratuito: Como usar IA para acelerar suporte e desenvolvimento
A Inteligência Artificial deixou de ser uma tendência distante e passou a fazer parte da rotina de empresas, consultorias e equipes de tecnologia. O que antes parecia algo complexo e restrito a grandes organizações, hoje está acessível para profissionais que buscam mais produtividade, agilidade e qualidade em suas entregas. Pensando nisso, preparamos um encontro especial […]
5 sinais de que sua empresa precisa de um BPM como o Fluig
Sua empresa está crescendo, mas os processos continuam os mesmos? Toda empresa sonha em crescer. Mais clientes, mais vendas, mais colaboradores, mais oportunidades e mais resultados. O problema é que, em muitos casos, o crescimento acontece mais rápido do que a capacidade da organização de estruturar seus processos internos. O resultado é um cenário que […]