ERP – Integrações– Como corrigir a escrituração do PIS e COFINS diretamente no módulo Gestão de Tributos
Dúvida
Como corrigir a escrituração do PIS e COFINS diretamente no módulo Gestão de Tributos?
Solução
Para ajustar esses documentos temos duas opções, realize os passos a seguir:
1. Acesse a tela F660NFV-Controladoria / Gestão de Tributos / Escrituração / Lançamentos / Nota Fiscal de Saída, e edite manual na aba de Itens e Dados Gerais, ou;
2. Crie uma regra que altera o percentual e a valor do imposto utilizando a recurso execsql (executado pela tela F000ERG-Recursos / Implementações / Regras / Executar).
Abaixo um exemplo de regra, que deve ser adaptada conforme a necessidade do cliente:
DEFINIR ALFA CURSQL;
DEFINIR ALFA QUERYSQL;
DEFINIR ALFA ACODTNS;
DEFINIR ALFA AMSGERR;
DEFINIR ALFA ACODSNF;
DEFINIR DATA DDATINI;
DEFINIR DATA DDATFIM;
DEFINIR ALFA ADATINI;
DEFINIR ALFA ADATFIM;
MONTADATA(01, 06, 2022, DDATINI);
MONTADATA(31, 07, 2022, DDATFIM);
CONVERTEDATASQLSENIOR2(DDATINI, ADATINI);
CONVERTEDATASQLSENIOR2(DDATFIM, ADATFIM);
SQL_CRIAR(CURSQL);
QUERYSQL = "SELECT I.CODEMP, I.CODFIL, I.CODFOR, I.NUMNFI, I.NUMNFF, I.CODSNF, I.CODTNS, ";
QUERYSQL = QUERYSQL+" SUM(I.VLRCTB) VLRCTB, SUM(I.VLRMRC) VLRMRC, SUM(I.VLRICM) VLRICM,";
QUERYSQL = QUERYSQL+" (SUM(I.VLRMRC) - SUM(I.VLRICM)) BASE,";
QUERYSQL = QUERYSQL+" (((SUM(I.VLRMRC) - SUM(I.VLRICM)) * 1.65) / 100) PIS,";
QUERYSQL = QUERYSQL+" (((SUM(I.VLRMRC) - SUM(I.VLRICM)) * 7.6) / 100) COF";
QUERYSQL = QUERYSQL+" FROM (E660NFC C INNER JOIN E660INC I ON C.CODEMP = I.CODEMP AND C.CODFIL = I.CODFIL AND C.CODFOR = I.CODFOR AND C.NUMNFI = I.NUMNFI";
QUERYSQL = QUERYSQL+" AND C.NUMNFF = I.NUMNFF AND C.CODSNF = I.CODSNF AND C.CODTNS = I.CODTNS )";
QUERYSQL = QUERYSQL+" WHERE C.NOPOPE IN ('2353','1353','2201','2410') AND C.DATENT >= "+ADATINI;
QUERYSQL = QUERYSQL+" GROUP BY I.CODEMP, I.CODFIL, I.CODFOR, I.NUMNFI, I.NUMNFF, I.CODSNF, I.CODTNS";
SQL_DEFINIRCOMANDO(CURSQL,QUERYSQL);
SQL_ABRIRCURSOR(CURSQL);
ENQUANTO(SQL_EOF(CURSQL) = 0)
{
SQL_RETORNARINTEIRO (CURSQL, "CODEMP", NCODEMP);
SQL_RETORNARINTEIRO (CURSQL, "CODFIL", NCODFIL);
SQL_RETORNARINTEIRO (CURSQL, "CODFOR", NCODFOR);
SQL_RETORNARINTEIRO (CURSQL, "NUMNFI", NNUMNFI);
SQL_RETORNARINTEIRO (CURSQL, "NUMNFF", NNUMNFF);
SQL_RETORNARALFA (CURSQL, "CODTNS", ACODTNS);
SQL_RETORNARALFA (CURSQL, "CODSNF", ACODSNF);
SQL_RETORNARFLUTUANTE(CURSQL, "VLRCTB", NVLRCTB);
SQL_RETORNARFLUTUANTE(CURSQL, "BASE", NBASE);
SQL_RETORNARFLUTUANTE(CURSQL, "PIS", NPIS);
SQL_RETORNARFLUTUANTE(CURSQL, "COF", NCOF);
ARREDONDA(NBASE, 2);
ARREDONDA(NPIS, 2);
ARREDONDA(NCOF, 2);
INICIARTRANSACAO();
EXECSQLEX("UPDATE E660NFC SET VLRBPR = :NBASE, \
VLRBCR = :NBASE, \
VLRPIR = :NPIS, \
VLRCOR = :NCOF \
WHERE CODEMP = :NCODEMP \
AND CODFIL = :NCODFIL \
AND CODFOR = :NCODFOR \
AND NUMNFI = :NNUMNFI \
AND NUMNFF = :NNUMNFF \
AND CODTNS = :ACODTNS \
AND CODSNF = :ACODSNF", NERRO, AMSGERR);
SE(NERRO > 0)
{
DESFAZERTRANSACAO();
}
FINALIZARTRANSACAO();
SQL_PROXIMO(CURSQL);@AVANÇA PARA O PRÓXIMO REGISTRO DO CURSOR.@
}
SQL_FECHARCURSOR(CURSQL);
SQL_DESTRUIR(CURSQL);
DEFINIR ALFA CURSQL;
DEFINIR ALFA QUERYSQL;
DEFINIR ALFA ACODTNS;
DEFINIR ALFA AMSGERR;
DEFINIR ALFA ACODSNF;
DEFINIR ALFA ACSTPIS;
DEFINIR ALFA ACSTCOF;
SQL_CRIAR(CURSQL);
QUERYSQL = "SELECT I.CODEMP, I.CODFIL, I.CODFOR, I.NUMNFI, I.NUMNFF, I.CODSNF, I.CODTNS, I.SEQINC, I.VLRCTB, I.VLRMRC, I.VLRICM,";
QUERYSQL = QUERYSQL+" (I.VLRMRC - I.VLRICM) BASE, (((I.VLRMRC - I.VLRICM) * 1.65) / 100) PIS, (((I.VLRMRC - I.VLRICM) * 7.6) / 100) COF,";
QUERYSQL = QUERYSQL+" I.CSTPIS, I.CSTCOF";
QUERYSQL = QUERYSQL+" FROM (E660NFC C INNER JOIN E660INC I ON C.CODEMP = I.CODEMP AND C.CODFIL = I.CODFIL AND C.CODFOR = I.CODFOR AND C.NUMNFI = I.NUMNFI";
QUERYSQL = QUERYSQL+" AND C.NUMNFF = I.NUMNFF AND C.CODSNF = I.CODSNF AND C.CODTNS = I.CODTNS )";
QUERYSQL = QUERYSQL+" WHERE C.NOPOPE IN ('2353','1353','2201','2410') AND C.DATENT >= "+ADATINI;
QUERYSQL = QUERYSQL+" ORDER BY I.CODEMP, I.CODFIL, I.CODFOR, I.NUMNFI, I.CODTNS, I.SEQINC";
SQL_DEFINIRCOMANDO(CURSQL,QUERYSQL);
SQL_ABRIRCURSOR(CURSQL);
ENQUANTO(SQL_EOF(CURSQL) = 0)
{
SQL_RETORNARINTEIRO (CURSQL, "CODEMP", NCODEMP);
SQL_RETORNARINTEIRO (CURSQL, "CODFIL", NCODFIL);
SQL_RETORNARINTEIRO (CURSQL, "CODFOR", NCODFOR);
SQL_RETORNARINTEIRO (CURSQL, "NUMNFI", NNUMNFI);
SQL_RETORNARINTEIRO (CURSQL, "NUMNFF", NNUMNFF);
SQL_RETORNARINTEIRO (CURSQL, "SEQINC", NSEQINC);
SQL_RETORNARALFA (CURSQL, "CODTNS", ACODTNS);
SQL_RETORNARALFA (CURSQL, "CODSNF", ACODSNF);
SQL_RETORNARFLUTUANTE(CURSQL, "VLRCTB", NVLRCTB);
SQL_RETORNARFLUTUANTE(CURSQL, "BASE", NBASE);
SQL_RETORNARFLUTUANTE(CURSQL, "PIS", NPIS);
SQL_RETORNARFLUTUANTE(CURSQL, "COF", NCOF);
ARREDONDA(NBASE, 2);
ARREDONDA(NPIS, 2);
ARREDONDA(NCOF, 2);
NPPIS = 1.65;
NPCOF = 7.6;
ACSTPIS = "50";
ACSTCOF = "50";
INICIARTRANSACAO();
EXECSQLEX("UPDATE E660INC SET VLRBPR = :NBASE, \
VLRPIR = :NPIS, \
VLRBCR = :NBASE, \
VLRCOR = :NCOF \
WHERE CODEMP = :NCODEMP \
AND CODFIL = :NCODFIL \
AND CODFOR = :NCODFOR \
AND NUMNFI = :NNUMNFI \
AND NUMNFF = :NNUMNFF \
AND SEQINC = :NSEQINC \
AND CODTNS = :ACODTNS \
AND CODSNF = :ACODSNF", NERRO, AMSGERR);
SE(NERRO > 0)
{
DESFAZERTRANSACAO();
}
FINALIZARTRANSACAO();
SQL_PROXIMO(CURSQL);@AVANÇA PARA O PRÓXIMO REGISTRO DO CURSOR.@
}
SQL_FECHARCURSOR(CURSQL);
SQL_DESTRUIR(CURSQL);