ERP - Escrituração Notas Fiscais - Exemplo de regra para inserção de Dispositivo Fiscal em Notas de Saída
Dúvida
Como inserir um dispositivo fiscal nos itens das notas por meio de execução via regra, no módulo Gestão de Tributos?
Este procedimento é normalmente utilizado em cenários onde há necessidade de inclusão de dispositivos fiscais em grande volume de dados, tornando inviável a realização manual por meio de telas do sistema.
Solução
Para atender a essa necessidade, é possível utilizar regras personalizadas que automatizam a inserção de dispositivos fiscais diretamente nas notas.
Abaixo, apresentamos um exemplo de regra para inserção de dispositivo fiscal em notas de saída no módulo de Gestão de Tributos.
Essa abordagem permite maior agilidade e padronização do processo, reduzindo esforços operacionais e minimizando a possibilidade de inconsistências decorrentes de intervenções manuais.
Importante:
Antes de aplicar a regra em ambiente produtivo, recomenda-se fortemente a validação prévia em base de homologação. Isso garante que a lógica implementada atenda às regras fiscais e aos processos da empresa, evitando impactos indevidos nas notas fiscais e na apuração dos tributos.
Definir Numero nCodEmp;
Definir Numero nCodFil;
Definir Cursor Cur_E660NFV;
Definir Data IData;
Definir Data FData;
Definir numero nPosicaoPret;
Definir numero nTamanhoAux;
Definir Alfa nAux;
Definir Alfa nParametros;
Definir Alfa nCodEmpAlfa;
Definir Alfa aCodSnf;
Definir Alfa aCodTns;
Definir alfa Retorno;
MontaData(01, 04, 2026, IData);
MontaData(30, 04, 2026, FData);
nCodEmp = CodEmp;
nCodFil = CodFil;
Cur_E660NFV.SQL "SELECT * FROM E660INV INV, E660NFV NFV WHERE \
NFV.CODEMP = INV.CODEMP \
AND NFV.CODFIL = INV.CODFIL \
AND NFV.NUMNFI = INV.NUMNFI \
AND NFV.CODSNF = INV.CODSNF \
AND INV.CODEMP =:nCodEmp \
AND INV.CODFIL =:nCodFil \
AND INV.CSTPIS = '06' \
AND INV.VLRBPF > 0 \
AND NFV.DATEMI >=:IData \
AND NFV.DATEMI <=:FData" ;
Cur_E660NFV.AbrirCursor();
Enquanto(Cur_E660NFV.Achou){
intParaAlfa(nCodEmp,nCodEmpAlfa);
nParametros = "pKey='E660RDS#" + nCodEmpAlfa + "';pIncrement='1';pSelect=''";
ExecSP("GETNEXTVALUE",nParametros,Retorno);
nAux = Retorno;
PosicaoAlfa("PRET=",Retorno,nPosicaoPret);
CopiarAlfa(nAux,nPosicaoPret,9);
TamanhoAlfa(nAux, nTamanhoAux);
CopiarAlfa(nAux,6,nTamanhoAux);
AlfaParaInt(nAux,nIdeDis);
nCodEmp = Cur_E660NFV.CodEmp;
nCodFil = Cur_E660NFV.CodFil;
nCodCli = Cur_E660NFV.CodCli;
nNumNfi = Cur_E660NFV.NumNfi;
nNumNff = Cur_E660NFV.NumNff;
nSeqInv = Cur_E660NFV.SeqInv;
nBasAjs = Cur_E660NFV.VlrBpf;
nVlrAjs = Cur_E660NFV.VlrAjs;
aCodSnf = Cur_E660NFV.CodSnf;
aCodTns = Cur_E660NFV.CodTns;
ExecSql "INSERT INTO E660RDS (IdeDis,SeqDis,CodEmp,CodFil,CodCli,NumNfi,NumNff,CodSnf, \
CodTns,SeqINV,CodDfs,PerAjs,BasAjs,VlrAjs,TipReg ) \
VALUES (:nIdeDis,1,:nCodEmp,:nCodFil,:nCodCli,:nNumNfi,:nNumNff,:aCodSnf, \
:aCodTns,:nSeqInv,114,10,:nBasAjs,0,'M')" ;
Cur_E660NFV.Proximo();
}
Cur_E660NFV.FecharCursor();
x=y;