No artigo de hoje, vamos ver como atualizar os parâmetros automaticamente de data na tela Nfe Sefaz.
Recentemente em um cliente nos perguntaram se teria como atualizar automaticamente as datas ao abrir a tela NFe Sefaz, trazendo sempre as datas mais atuais.
A ideia então é:
- Usar o p.e. ChkExec e nele se vier da rotina SPEDNFE vai acionar nossa customização
- Nela vai atualizar os parâmetros de data para puxar dos 3 últimos dias
Abaixo como ficou o p.e. 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
E abaixo como ficou nossa customização 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
Bom pessoal, por hoje é só.
Abraços e até a próxima.