Identificador de Regra

Módulo: IMP - Impostos.

Finalidade: Este identificador permite inserir ajustes na apuração do ICMS, sem excluir os ajustes já adicionados na apuração de ICMS.

Observação
Este identificador de regras não trabalha em conjunto com o identificador de regras IMP-661CALIM02, pois o identificador de regras IMP-661CALIM02 pode excluir todos os ajustes cadastrados anteriormente. Por isso, é apresentada a seguinte mensagem de aviso ao calcular o imposto do tipo 2 – ICMS: "O identificador de regras IMP-661AJUICMS não será executado. Para executá-lo, é necessário que o identificador de regras IMP-661CALIM02 esteja inativo".

Tela: Resumo de Apuração do Imposto (F661I18)

Transação: Não se aplica.

Variáveis Disponibilizadas:

Nome Tipo Observações Retorna Valor
IMPNCodEmp Número Empresa N
IMPNCodFil Número Filial N
IMPACodImp Alfa Imposto N
IMPDDatIni Data Data inicial N
IMPDDatFim Data Data final N
IMPATipAju Alfa OC - Outro créditos, OD - Outros débitos, EC - Estorno crédito, ED - Estorno débito e DE - Deduções S
IMPNSeqAju Número Sequencial iniciado em 1 e que deve alterado em regra para facilitar lógica S
IMPNCodDfs Número Dispositivo fiscal S
IMPDDesAju Alfa Descrição do ajuste S
IMPNVlrAJu Número Valor do ajuste S
IMPADorOri Alfa Número documento S
IMPARetorna Alfa Indicativo se existem mais ajustes a serem lançados S

Regra:

Exemplo de regra a ser vinculada ao identificador de regras:

Definir Numero IMPNCodEmp;
Definir Numero IMPNCodFil;
Definir Alfa   IMPACodImp;
Definir Data   IMPDDatIni;
Definir Data   IMPDDatFim;
Definir Numero IMPNSeqAju;
Definir Alfa   IMPARetorna;

Definir Alfa   IMPATipAju;
Definir Numero IMPNCodDfs;
Definir Alfa   IMPADesAju;
Definir Numero IMPNVlrAju;
Definir Alfa   IMPACodOri;

Definir Alfa xNumDoi;
Definir Numero xValor;
Definir Numero xSequencia;
Definir Alfa xSQL;

Definir Alfa xCursor;

xSQL = "SELECT e660nfc.numdoi, sum(e660rde.vlrajs) AS vlrajs, row_number () OVER (ORDER BY numdoi) AS seqaju  "+
         "FROM e660nfc LEFT 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 "+
        "WHERE e660nfc.CodEmp = :codemp AND "+
              "e660nfc.codfil = :codfil AND "+
              "e660nfc.datdoi >= :datini AND "+
              "e660nfc.datdoi <= :datfim "+ 
     "GROUP BY e660nfc.numdoi"; 

SQL_Criar(xCursor);
SQL_UsarAbrangencia(xCursor, 0);
SQL_UsarSQLSenior2(xCursor,0); 
SQL_DefinirComando(xCursor, xSQL);
SQL_DefinirInteiro(xCursor, "CODEMP", IMPNCodEmp);
SQL_DefinirInteiro(xCursor, "codfil", IMPNCodFil);
SQL_DefinirData(xCursor, "datini", IMPDDatIni);
SQL_DefinirData(xCursor, "datfim", IMPDDatFim);

SQL_AbrirCursor(xCursor);
  Enquanto (SQL_EOF(xCursor) = 0)
  Inicio  
    SQL_RetornarAlfa(xCursor, "NUMDOI", xNumDoi);
    SQL_RetornarFlutuante(xCursor, "vlrajs", xValor);    
    SQL_RetornarInteiro(xCursor, "seqaju", xSequencia);
    
    se (IMPNSeqAju = xSequencia)
    inicio
      IMPATipAju = "OC";
      IMPNCodDfs = 12;
      IMPADesAju = "Credito do imposto recolhido por ocasiao da importacao com emissao da DI - " + xNumDoi;
      IMPACodOri = xNumDoi;
      IMPNVlrAju = xValor;
      IMPNSeqAju++;
      
      Se (SQL_EOF(xCursor) = 0)
        IMPARetorna = "S";
      Senao
        IMPARetorna = "N";          
      
      Pare;     
    fim;
  
    SQL_Proximo(xCursor);          
  Fim;
SQL_FecharCursor(xCursor);
SQL_Destruir(xCursor);

Este artigo ajudou você?