ERP – Operações e Cálculos Fiscais – Como alimentar o campo Créd. Per. Ap na tela de Controle dos créditos fiscais da apuração do ICMS e subapurações
Dúvida
ERP – Operações e Cálculos Fiscais – Como alimentar o campo Créd. Per. Ap na tela de Controle dos créditos fiscais da apuração do ICMS e subapurações no módulo Gestão de Tributos?
Solução
Para ativar a rotina, realize os passos a seguir:
1. Acesse a tela F098REG - Cadastros / Identificadores e parâmetros / Identificador de Regras e ative o identificador de regras IMP-661IASQL02;
1.1. Vincule uma regra com o seguinte conteúdo:
DEFINIR ALFA IMPACMDSQL;
MENSAGEM (RETORNA, IMPACMDSQL);
2. Acesse a tela F661CCE - Controladoria / Gestão de Tributos / Operações e Cálculos Fiscais / Cálculos / Controle dos Créditos Fiscais do ICMS e sub-apurações, e utilize o botão Localizar e capture o log padrão da rotina:
3. Altere o sql padrão da rotina conforme a necessidade;
3.1. No exemplo irá preencher as colunas de crédito anterior e crédito do período, tomando como base a apuração do imposto 97:
SELECT
E660RDE.CODDFS, MAX(E051DIS.DESDFS) AS DESDFS, MAX(COALESCE(EAPUANT.VLRDEV, 0)) AS CREANT, MAX(COALESCE(EAPUATU.VLRDEV, 0)) AS CREPER, 0 AS CRETRA,
MAX(E051DIS.TPOCRE) AS TPOCRE, E660NFC.NUMNFI, SUM(E660RDE.VLRAJS) AS VLRAJS, E660NFC.CHVNEL
FROM
E660NFC INNER JOIN E660RDE ON E660RDE.CODEMP = E660NFC.CODEMP AND
E660RDE.CODFIL = E660NFC.CODFIL AND
E660RDE.CODFOR = E660NFC.CODFOR AND
E660RDE.NUMNFI = E660NFC.NUMNFI AND
E660RDE.NUMNFF = E660NFC.NUMNFF AND
E660RDE.CODSNF = E660NFC.CODSNF AND
E660RDE.CODTNS = E660NFC.CODTNS INNER JOIN E051DIS ON E051DIS.CODEMP = E660RDE.CODEMP AND
E051DIS.CODDFS = E660RDE.CODDFS LEFT JOIN (
SELECT
E661CCI.codemp, E661CCI.codfil, E661CCI.codimp, SUM(E661CCI.vlrdev) AS VLRDEV
FROM
e661cci
WHERE
E661CCI.datapi = (
SELECT
MAX(A.DATAPI)
FROM
E661CCI A
WHERE
A.CODEMP = E661CCI.codemp AND
A.CODFIL = E661CCI.codfil AND
A.CODIMP = E661CCI.codimp AND
A.DATAPI <= {DATAPI})
GROUP BY
E661CCI.codemp, E661CCI.codfil, E661CCI.codimp) EAPUANT ON EAPUANT.CODEMP = {CODEMP} AND
EAPUANT.CODFIL = {CODFIL} AND
EAPUANT.CODIMP = '97' LEFT JOIN (
SELECT
E661CCI.codemp, E661CCI.codfil, E661CCI.codimp, SUM(E661CCI.vlrdev) AS VLRDEV
FROM
e661cci
WHERE
E661CCI.datapi = {DATAPI}
GROUP BY
E661CCI.codemp, E661CCI.codfil, E661CCI.codimp) EAPUATU ON EAPUATU.CODEMP = {CODEMP} AND
EAPUATU.CODFIL = {CODFIL} AND
EAPUATU.CODIMP = '97'
WHERE
E660NFC.CODEMP = {CODEMP} AND
E660NFC.CODFIL = {CODFIL} AND
SUBSTR(E051DIS.CODAJS, 4, 1) = '9' AND
E051DIS.TPOCRE <> ' ' AND
E660NFC.DATENT >= {DATINI} AND
E660NFC.DATENT <= {DATFIM}
GROUP BY
E660NFC.CHVNEL, E660NFC.NUMNFI, E660RDE.CODDFS
Importante:
O comando acima foi extraído de uma base Oracle em determinada versão, caso a base seja SQL Server ou versão superior o comando estará diferente.
4. Edite a regra e deixe ela no padrão do cadastro de declaração e vincule ao identificador IMP-661IASQL02 conforme passo 1:
Definir Alfa IMPACmdSql; /*Recebe o SQL alterado para a composição do registro*/
IMPACmdSql = "SELECT "+
"E660RDE.CODDFS, MAX(E051DIS.DESDFS) AS DESDFS, MAX(COALESCE(EAPUANT.VLRDEV, 0)) AS CREANT, MAX(COALESCE(EAPUATU.VLRDEV, 0)) AS CREPER, 0 AS CRETRA, "+
"MAX(E051DIS.TPOCRE) AS TPOCRE, E660NFC.NUMNFI, SUM(E660RDE.VLRAJS) AS VLRAJS, E660NFC.CHVNEL "+
"FROM "+
"E660NFC INNER JOIN E660RDE ON E660RDE.CODEMP = E660NFC.CODEMP AND "+
"E660RDE.CODFIL = E660NFC.CODFIL AND "+
"E660RDE.CODFOR = E660NFC.CODFOR AND "+
"E660RDE.NUMNFI = E660NFC.NUMNFI AND "+
"E660RDE.NUMNFF = E660NFC.NUMNFF AND "+
"E660RDE.CODSNF = E660NFC.CODSNF AND "+
"E660RDE.CODTNS = E660NFC.CODTNS INNER JOIN E051DIS ON E051DIS.CODEMP = E660RDE.CODEMP AND "+
"E051DIS.CODDFS = E660RDE.CODDFS LEFT JOIN ( "+
"SELECT "+
"E661CCI.codemp, E661CCI.codfil, E661CCI.codimp, SUM(E661CCI.vlrdev) AS VLRDEV "+
"FROM "+
"e661cci "+
"WHERE "+
"E661CCI.datapi = ( "+
"SELECT "+
"MAX(A.DATAPI) "+
"FROM "+
"E661CCI A "+
"WHERE "+
"A.CODEMP = E661CCI.codemp AND A.CODFIL = E661CCI.codfil AND A.CODIMP = E661CCI.codimp AND A.DATAPI <= {DATAPI}) "+
"GROUP BY "+
"E661CCI.codemp, E661CCI.codfil, E661CCI.codimp) EAPUANT ON EAPUANT.CODEMP = {CODEMP} AND EAPUANT.CODFIL = {CODFIL} AND EAPUANT.CODIMP = '97' LEFT JOIN ( "+
"SELECT "+
"E661CCI.codemp, E661CCI.codfil, E661CCI.codimp, SUM(E661CCI.vlrdev) AS VLRDEV "+
"FROM e661cci "+
"WHERE E661CCI.datapi = {DATAPI} "+
"GROUP BY "+
"E661CCI.codemp, E661CCI.codfil, E661CCI.codimp) EAPUATU ON EAPUATU.CODEMP = {CODEMP} AND "+
"EAPUATU.CODFIL = {CODFIL} AND "+
"EAPUATU.CODIMP = '97' "+
"WHERE "+
"E660NFC.CODEMP = {CODEMP} AND E660NFC.CODFIL = {CODFIL} AND SUBSTR(E051DIS.CODAJS, 4, 1) = '9' AND E051DIS.TPOCRE <> ' ' AND E660NFC.DATENT >= {DATINI} AND E660NFC.DATENT <= {DATFIM} "+
"GROUP BY "+
"E660NFC.CHVNEL, E660NFC.NUMNFI, E660RDE.CODDFS ";
5. Acesse a tela F661CCE - Controladoria / Gestão de Tributos / Operações e Cálculos Fiscais / Cálculos / Controle dos Créditos Fiscais do ICMS e sub-apurações, e utilize o botão Localizar para retornar o valor: