ERP – SPED Contribuições – Onde encontro o exemplo de regra para diminuir o ICMS da base de cálculo do PIS e COFINS
Dúvida
Onde encontro o exemplo de regra para diminuir o ICMS da base de cálculo do PIS e COFINS, no módulo Gestão de Tributos?
Solução
Para diminuir o ICMS da base de cálculo do PIS e COFINS via regra na geração do SPED Contribuições, realize os passos a seguir:
1. A mudança na regra deve ser feita em cima do registro C180, o sistema não faz selects para gerar o C181 e C185, ele gera esses registros em cima do resultado do select feito no C180, então para entrar na regra deve fazer IMPAReg = "C180" e IMPAEveReg = "SQL" não diferenciando para nota de entrada e saída, pois o SQL original também não faz. E no novo select customizado deve ter todos os campos do select original.
Segue exemplo de regra:
definir alfa IMPAReg;
definir alfa IMPAPRMSQL;
definir alfa IMPAEveReg;
definir alfa IMPACMDSQL;
se ((IMPAReg = "C180") e (IMPAEveReg = "SQL"))
inicio
IMPACMDSQL = "SELECT " +
"E022CLF.CLAFIS, E022CLF.CODEXC, E660NFV.DATEMI, E660NFV.CODFIL, E660NFV.CODCLI, E660NFV.NUMNFI, E660NFV.NUMNFF," +
"E660NFV.CODSNF, E660NFV.CODTNS, E660INV.SEQINV, E660NFV.NOPOPE, E660INV.CTARED, (E660INV.VLRDSC + E660INV.VLRICM) AS VLRDSC, E660NFV.TIPNFS," +
"E660INV.CSTPIS, (E660INV.VLRBPF - E660INV.VLRICM) AS VLRBPF, E660INV.PERPIF, E660INV.VLRPIF, E660INV.QTDBPF, E660INV.ALIPIF, E660INV.CSTCOF," +
"(E660INV.VLRBCF - E660INV.VLRICM) AS VLRBCF, E660INV.PERCFF, E660INV.VLRCFF, E660INV.QTDBCF, E660INV.ALICFF, (E660INV.VLRBPR - E660INV.VLRICM) AS VLRBPR, E660INV.VLRPIR," +
"E660INV.QTDBPI, E660INV.ALIPIS, (E660INV.VLRBCR - E660INV.VLRICM) AS VLRBCR, E660INV.VLRCOR, E660INV.QTDBCO, E660INV.ALICOF, E660INV.PERPIR," +
"E660INV.PERCOR, E660INV.CODPRO, E660INV.CODDER, E660INV.CODSER, E660INV.CPLPRO, E660INV.VLRMRC, E001TNS.VENTCF AS CPRVEN," +
"E022CLF.CODCLF, E660INV.UNIMED, E660NFV.CODEDC, (SELECT COUNT(E660RDS.CODEMP) FROM E660RDS " +
"INNER JOIN E051DIS ON E051DIS.CODEMP = E660RDS.CODEMP AND E051DIS.CODDFS = E660RDS.CODDFS AND E051DIS.APLDIS = 2 " +
"AND ((E051DIS.NUMPRS <> ' ') AND (E051DIS.NUMPRS IS NOT NULL) ) WHERE E660RDS.CODEMP = E660INV.CODEMP " +
"AND E660RDS.CODFIL = E660INV.CODFIL AND E660RDS.CODCLI = E660INV.CODCLI AND E660RDS.NUMNFI = E660INV.NUMNFI " +
"AND E660RDS.NUMNFF = E660INV.NUMNFF AND E660RDS.CODSNF = E660INV.CODSNF AND E660RDS.CODTNS = E660INV.CODTNS " +
"AND E660RDS.SEQINV = E660INV.SEQINV) DISFIS , (SELECT SUM(1) FROM E660RDS INNER JOIN E051DIS ON E051DIS.CODEMP = E660RDS.CODEMP " +
"AND E051DIS.CODDFS = E660RDS.CODDFS AND E051DIS.TIPAJS IN ('H', 'P') AND E051DIS.APLDIS = 2 AND ((E051DIS.NUMPRS <> ' ') " +
"AND (E051DIS.NUMPRS IS NOT NULL)) WHERE E660RDS.CODEMP = E660NFV.CODEMP AND E660RDS.CODFIL = E660NFV.CODFIL " +
"AND E660RDS.NUMNFI = E660NFV.NUMNFI AND E660RDS.CODSNF = E660NFV.CODSNF) QTDSPC , (CASE WHEN E001TVE.DESICC = 'S' "+
"AND E001TVE.DESICP = 'S' THEN E660INV.VLRICM + E660INV.ICMVOR + E660INV.ICMVDE WHEN E001TVE.DESICC <> 'N' " +
"AND E001TVE.DESICP <> 'N' THEN E660INV.VLRICM ELSE 0 END) AS DESICM FROM E660INV INNER JOIN E660NFV ON E660NFV.CODEMP = E660INV.CODEMP " +
"AND E660NFV.CODFIL = E660INV.CODFIL AND E660NFV.CODCLI = E660INV.CODCLI AND E660NFV.NUMNFI = E660INV.NUMNFI " +
"AND E660NFV.NUMNFF = E660INV.NUMNFF AND E660NFV.CODSNF = E660INV.CODSNF AND E660NFV.CODTNS = E660INV.CODTNS " +
"LEFT JOIN E022CLF ON E022CLF.CODCLF = E660INV.CODCLF INNER JOIN E001TNS ON E001TNS.CODEMP = E660INV.CODEMP " +
"AND E001TNS.CODTNS = E660INV.CODTNS INNER JOIN E001TVE ON E001TVE.CODEMP = E660INV.CODEMP AND E001TVE.CODTNS = E660INV.CODTNS " +
"INNER JOIN E020SNF ON E020SNF.CODEMP = E660INV.CODEMP AND E020SNF.CODFIL = E660INV.CODFIL AND E020SNF.CODSNF = E660INV.CODSNF " +
"WHERE E660NFV.CODEMP = {CODEMP} " +
"AND E660NFV.CODFIL = {CODFIL} " +
"AND E660NFV.DATEMI >= {DATINI} " +
"AND E660NFV.DATEMI <= {DATFIM} " + "AND E660NFV.CODEDC = '55' AND ( NOT (((E001TNS.VENTCF = 'V') AND ((E660NFV.CODEDC <> '01') AND (E660NFV.CODEDC <> '55'))) " +
"OR (E020SNF.DISAUT = 8))) AND E660NFV.SITNFV = '2' AND (E660NFV.TIPNFS > 0 AND E660NFV.TIPNFS <> 2) AND ( (E660NFV.CODTNS = '1201') " +
"OR (E660NFV.CODTNS = '1201V') OR (E660NFV.CODTNS = '1202') OR (E660NFV.CODTNS = '1202V') OR (E660NFV.CODTNS = '1504') " +
"OR (E660NFV.CODTNS = '2201') OR (E660NFV.CODTNS = '2201V') OR (E660NFV.CODTNS = '2202') OR (E660NFV.CODTNS = '2202V') " +
"OR (E660NFV.CODTNS = '5101') OR (E660NFV.CODTNS = '5101E') OR (E660NFV.CODTNS = '5101F') OR (E660NFV.CODTNS = '5101I') " +
"OR (E660NFV.CODTNS = '5101X') OR (E660NFV.CODTNS = '5102') OR (E660NFV.CODTNS = '5102E') OR (E660NFV.CODTNS = '5102F') " +
"OR (E660NFV.CODTNS = '5102I') OR (E660NFV.CODTNS = '5120') OR (E660NFV.CODTNS = '5124') OR (E660NFV.CODTNS = '5124E') " +
"OR (E660NFV.CODTNS = '5124I') OR (E660NFV.CODTNS = '5201') OR (E660NFV.CODTNS = '5251') OR (E660NFV.CODTNS = '5501V') " +
"OR (E660NFV.CODTNS = '5502V') OR (E660NFV.CODTNS = '5551') OR (E660NFV.CODTNS = '5949V') OR (E660NFV.CODTNS = '6101') " +
"OR (E660NFV.CODTNS = '6101F') OR (E660NFV.CODTNS = '6102') OR (E660NFV.CODTNS = '6102F') OR (E660NFV.CODTNS = '6120') " +
"OR (E660NFV.CODTNS = '6124') OR (E660NFV.CODTNS = '6201') OR (E660NFV.CODTNS = '6251') OR (E660NFV.CODTNS = '6551') " +
"OR (E660NFV.CODTNS = '6949V') OR (E660NFV.CODTNS = '7101') OR (E660NFV.CODTNS = '7102') ) AND (( E660INV.CSTCOF = '01' " +
"OR E660INV.CSTCOF = '02' OR E660INV.CSTCOF = '03' OR E660INV.CSTCOF = '04' OR E660INV.CSTCOF = '05' OR E660INV.CSTCOF = '06' " +
"OR E660INV.CSTCOF = '07' OR E660INV.CSTCOF = '08' OR E660INV.CSTCOF = '09' OR E660INV.CSTCOF = '49') AND (E660INV.CSTPIS = '01' " +
"OR E660INV.CSTPIS = '02' OR E660INV.CSTPIS = '03' OR E660INV.CSTPIS = '04' OR E660INV.CSTPIS = '05' OR E660INV.CSTPIS = '06' " +
"OR E660INV.CSTPIS = '07' OR E660INV.CSTPIS = '08' OR E660INV.CSTPIS = '09' OR E660INV.CSTPIS = '49')) ORDER BY 1, 2, 3, 4, 5, 6";
fim;
se ((IMPAReg = "C185") e (IMPAEveReg = "REGISTRO") e (IMPAPRMSQL = "NFSAIDA"))
inicio
IMPACMDSQL = "SELECT" +
"E022CLF.CLAFIS, E022CLF.CODEXC, E660NFV.DATEMI, E660NFV.CODFIL, E660NFV.CODCLI, E660NFV.NUMNFI, E660NFV.NUMNFF," +
"E660NFV.CODSNF, E660NFV.CODTNS, E660INV.SEQINV, E660NFV.NOPOPE, E660INV.CTARED, (E660INV.VLRDSC + E660INV.VLRICM) AS VLRDSC, E660NFV.TIPNFS," +
"E660INV.CSTPIS, (E660INV.VLRBPF - E660INV.VLRICM) AS VLRBPF, E660INV.PERPIF, E660INV.VLRPIF, E660INV.QTDBPF, E660INV.ALIPIF, E660INV.CSTCOF," +
"(E660INV.VLRBCF - E660INV.VLRICM) AS VLRBCF, E660INV.PERCFF, E660INV.VLRCFF, E660INV.QTDBCF, E660INV.ALICFF, (E660INV.VLRBPR - E660INV.VLRICM) AS VLRBPR, E660INV.VLRPIR," +
"E660INV.QTDBPI, E660INV.ALIPIS, (E660INV.VLRBCR - E660INV.VLRICM) AS VLRBCR, E660INV.VLRCOR, E660INV.QTDBCO, E660INV.ALICOF, E660INV.PERPIR," +
"E660INV.PERCOR, E660INV.CODPRO, E660INV.CODDER, E660INV.CODSER, E660INV.CPLPRO, E660INV.VLRMRC, E001TNS.VENTCF AS CPRVEN," +
"E022CLF.CODCLF, E660INV.UNIMED, E660NFV.CODEDC, (SELECT COUNT(E660RDS.CODEMP) FROM E660RDS" +
"INNER JOIN E051DIS ON E051DIS.CODEMP = E660RDS.CODEMP AND E051DIS.CODDFS = E660RDS.CODDFS AND E051DIS.APLDIS = 2" +
"AND ((E051DIS.NUMPRS <> ' ') AND (E051DIS.NUMPRS IS NOT NULL) ) WHERE E660RDS.CODEMP = E660INV.CODEMP" +
"AND E660RDS.CODFIL = E660INV.CODFIL AND E660RDS.CODCLI = E660INV.CODCLI AND E660RDS.NUMNFI = E660INV.NUMNFI" +
"AND E660RDS.NUMNFF = E660INV.NUMNFF AND E660RDS.CODSNF = E660INV.CODSNF AND E660RDS.CODTNS = E660INV.CODTNS" +
"AND E660RDS.SEQINV = E660INV.SEQINV) DISFIS , (SELECT SUM(1) FROM E660RDS INNER JOIN E051DIS ON E051DIS.CODEMP = E660RDS.CODEMP" +
"AND E051DIS.CODDFS = E660RDS.CODDFS AND E051DIS.TIPAJS IN ('H', 'P') AND E051DIS.APLDIS = 2 AND ((E051DIS.NUMPRS <> ' ')" +
"AND (E051DIS.NUMPRS IS NOT NULL)) WHERE E660RDS.CODEMP = E660NFV.CODEMP AND E660RDS.CODFIL = E660NFV.CODFIL" +
"AND E660RDS.NUMNFI = E660NFV.NUMNFI AND E660RDS.CODSNF = E660NFV.CODSNF) QTDSPC , (CASE WHEN E001TVE.DESICC = 'S'"+
"AND E001TVE.DESICP = 'S' THEN E660INV.VLRICM + E660INV.ICMVOR + E660INV.ICMVDE WHEN E001TVE.DESICC <> 'N'" +
"AND E001TVE.DESICP <> 'N' THEN E660INV.VLRICM ELSE 0 END) AS DESICM FROM E660INV INNER JOIN E660NFV ON E660NFV.CODEMP = E660INV.CODEMP" +
"AND E660NFV.CODFIL = E660INV.CODFIL AND E660NFV.CODCLI = E660INV.CODCLI AND E660NFV.NUMNFI = E660INV.NUMNFI" +
"AND E660NFV.NUMNFF = E660INV.NUMNFF AND E660NFV.CODSNF = E660INV.CODSNF AND E660NFV.CODTNS = E660INV.CODTNS" +
"LEFT JOIN E022CLF ON E022CLF.CODCLF = E660INV.CODCLF INNER JOIN E001TNS ON E001TNS.CODEMP = E660INV.CODEMP" +
"AND E001TNS.CODTNS = E660INV.CODTNS INNER JOIN E001TVE ON E001TVE.CODEMP = E660INV.CODEMP AND E001TVE.CODTNS = E660INV.CODTNS" +
"INNER JOIN E020SNF ON E020SNF.CODEMP = E660INV.CODEMP AND E020SNF.CODFIL = E660INV.CODFIL AND E020SNF.CODSNF = E660INV.CODSNF" +
"WHERE E660NFV.CODEMP = {CODEMP}" +
"AND E660NFV.CODFIL = {CODFIL}" +
"AND E660NFV.DATEMI >= {DATINI}" +
"AND E660NFV.DATEMI <= {DATFIM}" + "AND E660NFV.CODEDC = '55' AND ( NOT (((E001TNS.VENTCF = 'V') AND ((E660NFV.CODEDC <> '01') AND (E660NFV.CODEDC <> '55')))" +
"OR (E020SNF.DISAUT = 8))) AND E660NFV.SITNFV = '2' AND (E660NFV.TIPNFS > 0 AND E660NFV.TIPNFS <> 2) AND ( (E660NFV.CODTNS = '1201')" +
"OR (E660NFV.CODTNS = '1201V') OR (E660NFV.CODTNS = '1202') OR (E660NFV.CODTNS = '1202V') OR (E660NFV.CODTNS = '1504')" +
"OR (E660NFV.CODTNS = '2201') OR (E660NFV.CODTNS = '2201V') OR (E660NFV.CODTNS = '2202') OR (E660NFV.CODTNS = '2202V')" +
"OR (E660NFV.CODTNS = '5101') OR (E660NFV.CODTNS = '5101E') OR (E660NFV.CODTNS = '5101F') OR (E660NFV.CODTNS = '5101I')" +
"OR (E660NFV.CODTNS = '5101X') OR (E660NFV.CODTNS = '5102') OR (E660NFV.CODTNS = '5102E') OR (E660NFV.CODTNS = '5102F')" +
"OR (E660NFV.CODTNS = '5102I') OR (E660NFV.CODTNS = '5120') OR (E660NFV.CODTNS = '5124') OR (E660NFV.CODTNS = '5124E')" +
"OR (E660NFV.CODTNS = '5124I') OR (E660NFV.CODTNS = '5201') OR (E660NFV.CODTNS = '5251') OR (E660NFV.CODTNS = '5501V')" +
"OR (E660NFV.CODTNS = '5502V') OR (E660NFV.CODTNS = '5551') OR (E660NFV.CODTNS = '5949V') OR (E660NFV.CODTNS = '6101')" +
"OR (E660NFV.CODTNS = '6101F') OR (E660NFV.CODTNS = '6102') OR (E660NFV.CODTNS = '6102F') OR (E660NFV.CODTNS = '6120')" +
"OR (E660NFV.CODTNS = '6124') OR (E660NFV.CODTNS = '6201') OR (E660NFV.CODTNS = '6251') OR (E660NFV.CODTNS = '6551')" +
"OR (E660NFV.CODTNS = '6949V') OR (E660NFV.CODTNS = '7101') OR (E660NFV.CODTNS = '7102') ) AND (( E660INV.CSTCOF = '01'" +
"OR E660INV.CSTCOF = '02' OR E660INV.CSTCOF = '03' OR E660INV.CSTCOF = '04' OR E660INV.CSTCOF = '05' OR E660INV.CSTCOF = '06'" +
"OR E660INV.CSTCOF = '07' OR E660INV.CSTCOF = '08' OR E660INV.CSTCOF = '09' OR E660INV.CSTCOF = '49') AND (E660INV.CSTPIS = '01'" +
"OR E660INV.CSTPIS = '02' OR E660INV.CSTPIS = '03' OR E660INV.CSTPIS = '04' OR E660INV.CSTPIS = '05' OR E660INV.CSTPIS = '06'" +
"OR E660INV.CSTPIS = '07' OR E660INV.CSTPIS = '08' OR E660INV.CSTPIS = '09' OR E660INV.CSTPIS = '49')) ORDER BY 1, 2, 3, 4, 5, 6";
fim;
2. Na tela F049DEC - Cadastros / Controladoria / Declarações (Cadastro de Declarações), vincule a regra apenas no registro C180:
3. Veja que no nosso exemplo, o ICMS foi subtraído da base do PIS e COFINS: