Segmentos > Controladoria > Recursos de customização para a Gestão de Controladoria

Recursos de customização para a Gestão de Controladoria

Esta página detalha a aplicação de recursos de customização que podem ser utilizados na Gestão de Controladoria:

Cadastro de Declarações

O Cadastro de Declarações (F049DEC) permite alterar a forma de busca padrão dos registros de determinados arquivos fiscais e contábeis gerados pelo Gestão Empresarial | ERP. É possível montar ou modificar a busca de informações usando as tabelas de usuários e do sistema, além de aplicar alterações nos dados apresentados em cada linha dos arquivos eletrônicos.

Como faço o cadastro das declarações?

Na tela F049DEC há o botão Importar que pode ser usado para importar o arquivo de declarações "DACT002.XML" do diretório de instalação do Gestão Empresarial | ERP (...\Sapiens\Modelos\Xml).

Variáveis globais

Nome Descrição
<Módulo>NCodEmp Traz o código da empresa na geração do cadastro de declarações. Por exemplo: IMPNCodEmp. Não retorna valor
<Módulo>NCodFil Traz o código da filial na geração do cadastro de declarações. Por exemplo: IMPNCodFil. Não retorna valor
<Módulo>DDatIni Traz a data inicial para geração das informação do cadastro de declarações. Por exemplo: IMPDDatIni. Não retorna valor
<Módulo>DDatFim Traz a data final para geração das informação do cadastro de declarações. Por exemplo: IMPDDatFim. Não retorna valor
<Módulo>AEveReg Informa as constantes SQL (quando a regra for executada para alterar o comando SQL padrão da rotina) e REGISTRO (quando a regra for executada para alterar os conteúdos dos campos do registro). Por exemplo: IMPAEveReg. Não retorna valor

Importante

O cadastro de declarações é executado sempre duas vezes para um mesmo registro. Na primeira execução é possível alterar o SQL padrão do registro. Assim, a variável IMPAEveReg vai retornar o conteúdo “SQL”.

Na segunda execução é possível fazer alterações nos campos e registros, isto depois que o SQL padrão ou customizado foi executado. Com isso, a variável IMPAEveReg vai retornar o conteúdo “REGISTRO”.

Para alterar o comando SQL padrão da rotina do registro usando uma regra associada a ele por meio do campo Regra da tela Cadastro de Registro (F049REG), há as seguintes variáveis para controle:

Nome Descrição
<Módulo>AREG Indica o código do registro executado pela regra no momento. Não retorna valor
<Módulo>APRMSQL Parâmetro adicional do registro. Serve para identificar o processo em que o SQL será utilizado. Dentro de um mesmo registro pode haver mais de um comando SQL para sua montagem. Não retorna valor
<Módulo>ACMDSQL Variável que recebe o texto com o comando SQL para ser interpretado e executado pelo registro correspondente. Não retorna vaor

 

Alteração de um registro que tem SQL padrão

É possível alterar um registro que tem SQL padrão definido pela Senior por meio do cadastro de declarações. Por exemplo: no SPED Fiscal, o registro H010 permite que a conta contábil seja gerada com base nas definições do cadastro do produto ou família.

Como configurar para que a conta contábil seja gerada com base no campo Conta Contábil 2 do cadastro do depósito?

  1. Primeiro, pegue o SQL padrão do registro H010. Para isso, gere o arquivo do SPED Fiscal com a opção Gerar log dos SQL executados da tela de geração do arquivo (F669EFD) selecionada
  2. Ao processar o arquivo, serão gerados os SQLs dos registros na pasta Logs, no diretório de instalação do Gestão Empresarial | ERP (...\Sapiens\Logs)

  3. Depois, altere o comando padrão conforme necessário.

    Comando original:



    Comando alterado:

Importante

Ao alterar um comando padrão, é importante que a nomenclatura dos campos de retorno do SQL padrão seja mantida. Por exemplo: é utilizado o apelido no comando "(AS CTARED)" para que o campo E205DEP.CtaRcr retorne a nomenclatura do comando padrão.

  1. Crie a regra que vai receber o novo comando SQL

  2. Vincule a regra criada ao cadastro de declarações (F049DEC), selecionando o registro e preenchendo o campo Código de Regra
  3. Na tela geração do arquivo (F669EFD), informe o Código da Declaração que tem a regra vinculada
  4. Assim, a conta contábil do registro H010 será gerada conforme a regra

 

Alteração de um registro que não tem SQL padrão

Quando o registro não tem SQL padrão, não é possível pegar um comando pré-definido por meio da opção Gerar log dos SQL executados. Assim, é preciso criar um comando SQL customizado para buscar as informações, respeitando a nomenclatura dos campos de retorno e filtros, conforme o leiaute da declaração.

Por exemplo: no registro G126 é necessário retornar, por meio do select, os campos DATINI, DATFIM, NUMPAR, VLRPAR, VLRTRI, VLRTOT, PERSAI e VLRAPR. Para isso, utilize o conceito de apelidos nos campos a seguir: USU_T700ANT.DatBas AS DATINI).

Na cláusula “where” do comando, é obrigatório utilizar os filtros CODEMP, CODFIL, CODBEM e DATMOV. Na criação do comando é possível usar as tabelas padrões do Gestão Empresarial | ERP ou tabelas de usuário, caso não haja informações nas rotinas nativas.

Geração do registro G126 por meio de regras de declaração

  1. Crie o SQL que vai buscar as informações para geração do registro

  2. Crie a regra que vai fazer a busca do registro

  3. Vincule a regra criada ao cadastro de declarações (F049DEC), selecionando o registro e preenchendo o campo Código de Regra
  4. Na tela de geração do arquivo (F669EFD), informe o Código da Declaração que tem a regra vinculada
  5. Assim, o registro G126 será gerado conforme a regra


 

Alteração do conteúdo de registros/campos via declaração

Por meio do cadastro de declarações também é possível fazer pequenas alterações em campos e registros selecionados por meio dos comandos SQL executados, sejam eles padrões ou customizados. Para isso, utilize a nomenclatura correta de cada campo dos registros, conforme a tela F049DEC.

Após identificar os campos, faça a declaração das variáveis seguindo a estrutura abaixo:

Como fazer a declaração da variável correspondente ao campo?

Por exemplo: no registro 0150 do SPED Fiscal há o campo NOME do tipo Alfanumérico.

Definir Alfa IMPANome

Confira outro exemplo

Na geração do registro C197, o valor do diferencial de alíquota para o código de ajuste "SC40000003” (COD_AJ)" é gerado no campo VL_OUTROS. Para transferir esse valor para o campo VL_ICMS e zerar o campo VL_OUTROS, faça o seguinte:

  1. Identifique o nome dos campos para definição das variáveis

  2. Definição das variáveis, conforme padrão da nomenclatura:
Definir Numero IMPNVL_ICMS; (Campo VL_ICMS)
Definir Numero IMPNVL_OUTROS; (Campo VL_OUTROS)
Definir Alfa IMPACOD_AJ; (Campo COD_AJ)
  1. Crie a regra e a vincule ao cadastro de declarações (F049DEC), selecionando o registro e preenchendo o campo Código de Regra

  2. Na tela geração do arquivo (F669EFD), informe o Código da Declaração que tem a regra vinculada
  3. Assim, o registro C197 será gerado conforme a regra:
    • Antes: | C197 | SC40000003 | | PRO1103 | 0,00 | 0,00 | 0,00 | 75,00 |
    • Depois: | C197 | SC40000003 | | PRO1103 | 0,00 | 0,00 | 75,00 | 0,00 |

Exemplos de regras

Definir Alfa IMPAReg;    /*Indica o código do registro que está sendo executado pela gera neste momento*/
Definir Alfa IMPAPRMSQL; /*Parâmetro adicional do registro. Utilizado para identificar o processo em que o SQL será utilizado. */
Definir Alfa IMPAEveReg; /*Indica se está sendo realizada a alteração do SQL ou REGISTRO*/
Definir Alfa IMPACMDSQL; /*Recebe o SQL alterado para a composição do registro*/


/**************************************************************************************************/
/*      BUSCA A CONTA CONTA CONTÁBIL 2 DO CADASTRO DO DEPÓSITO PARA O REGISTRO H010               */
/**************************************************************************************************/
Se ((IMPAReg = "H010") e (IMPAEveReg = "SQL") e (IMPAPRMSQL = "E210SFE"))
Inicio
IMPACMDSQL = "SELECT "+                                                                    
             "E210SFE.CODPRO, E075PRO.UNIMED, E075PRO.CODCLF, "+                            
             "E210SFE.QTDPRP, E210SFE.VLRPRP, E205DEP.CtaRcr AS CTARED, "+                 
             "E210SFE.CODDER, E210SFE.QTDELA, E210SFE.VLRELA "+
             "FROM "+
             "E210SFE, E075PRO, E205DEP "+
             "WHERE "+
             "E210SFE.CODEMP = E075PRO.CODEMP AND "+
             "E210SFE.CODPRO = E075PRO.CODPRO AND "+
             "E205DEP.CODEMP = E210SFE.CODEMP AND "+
             "E205DEP.CODDEP = E210SFE.CODDEP AND "+
             "E210SFE.CODEMP = {CODEMP} AND "+
             "E210SFE.CODFIL = {CODFIL} AND "+
             "(E210SFE.MESANO >= {MESINI} AND "+
             "E210SFE.MESANO <= {MESFIM})";
Fim;

/**************************************************************************************************/
/*            GERA O REGISTRO G126 - REGISTRO NÃO ATENDIDO POR PADRÃO PELO ERP             */
/**************************************************************************************************/

Se ((IMPAReg = "G126") e (IMPAEveReg = "SQL"))
Inicio
IMPACMDSQL = "SELECT "+
             "USU_DATINI AS DATINI, USU_DATFIM AS DATFIM, USU_NUMPAR AS NUMPAR, USU_VLRPAR AS VLRPAR, "+
             "USU_VLRTRI AS VLRTRI, USU_VLRTOT AS VLRTOT, USU_PERSAI AS PERSAI, USU_VLRAPR AS VLRAPR "+
             "FROM "+
             "USU_T700G126 "+
             "WHERE "+
             "USU_CODEMP = {CODEMP} AND "+
             "USU_CODFIL = {CODFIL} AND "+
             "USU_CODBEM = {CODBEM} AND "+
             "USU_DATMOV = {DATMOV}";
Fim;

/**************************************************************************************************/
/*    BUSCA A DESCRIÇÃO DA TRANSAÇÃO EM VEZ DOS DETALHES DELA NO REGISTRO 0400         */
/**************************************************************************************************/
Definir Alfa IMPACOD_NAT;
Definir Alfa IMPADESCR_NAT;
 
Definir Numero nCodEmp;
nCodEmp = CodEmp; @Recebe Empresa logada@
 
Definir Cursor CurE001TNS;
 
 
Se ((IMPAEVEREG = "REGISTRO") e (IMPAREG = "0400"))
Inicio
  
   CurE001TNS.SQL "SELECT DESTNS              \
                   FROM E001TNS               \
                   WHERE CODTNS =:IMPACOD_NAT \
                   AND CODEMP =:nCodEmp";
   CurE001TNS.AbrirCursor();
   Se (CurE001TNS.Achou)
   Inicio
      IMPADESCR_NAT = CurE001TNS.DESTNS;
   Fim;
   CurE001TNS.FecharCursor();
Fim;

/**************************************************************************************************/
/*        TRANSFERIR O VALOR DO CAMPO VL_OUTROS DO REGISTRO C197 PARA O CAMPO VL_ICMS             */
/**************************************************************************************************/
Definir Numero IMPNVL_ICMS;
Definir Numero IMPNVL_OUTROS;
Definir Alfa IMPACOD_AJ;

Se ((IMPAEVEREG = "REGISTRO") e (IMPAREG = "C197") e (IMPACOD_AJ = "SC40000003") )
Inicio
 IMPNVL_ICMS = IMPNVL_OUTROS;
 IMPNVL_OUTROS = 0;
Fim;


/**************************************************************************************************/
/*         REGRA PARA TRATAMENTO DO REGISTRO 0205 DO SPED FISCAL             */
/**************************************************************************************************/


Definir Alfa   IMPACod_Item;
Definir Alfa   IMPADescr_Item;
Definir Alfa   IMPACod_Ant_Item;
Definir Alfa   IMPADescr_Ant_Item;
Definir Data   IMPDDt_Ini;
Definir Data   IMPDDt_Fim; 
Definir Data   R0000_IMPDDT_ini;
Definir Data   R0000_IMPDDT_fin;
Definir Data   dDatIni;
Definir Data   dDatFim;
Definir Alfa   aSqlE;
Definir Alfa   aSqlS;
Definir Cursor Cur_E075Der;
Definir Numero IMPNCodEmp;

se  ((IMPAReg = "0205") e (IMPAPRMSQL = "HPR"))
   {
   se (IMPAEveReg = "SQL")
      {
      intparaalfa(IMPNCodFil,aSqlE);
      aSqlS = aSqlE;
      aSqlE = " and E660INC.CodFil = " + aSqlE + " ";
      aSqlS = " and E660INV.CodFil = " + aSqlS + " ";
      
      IMPACmdSql = "SELECT E075VDR.DATFIS AS DATFIS, MAX(E075VDR.HORATU) AS HORATU "
                 + "FROM E075VDR "
                 + "WHERE E075VDR.CODEMP = {CODEMP} "
                 + "AND E075VDR.CODPRO = {CODPRO} "
                 + "AND E075VDR.CODDER = {CODDER} "
                 + "AND E075VDR.DATFIS > {DATINI} "
                 + "AND E075VDR.DATFIS < {DATFIM} "
                 + "AND E075VDR.DATFIS > E075VDR.DATGER "
                 + "group by E075VDR.DATFIS ";

      IMPACmdSql = IMPACmdSql
                 + "Union "
                 + "Select E075VDR.DATFIS AS DATFIS, MAX(E075VDR.HORATU) as HORATU "
                 + "From E075VDR "
                 + "WHERE E075VDR.CODEMP = {CODEMP} "
                 + "AND E075VDR.CODPRO = {CODPRO} "
                 + "AND E075VDR.CODDER = {CODDER} "
                 + "AND E075VDR.USU_GERSPD = 'S' "
                 + "AND E075VDR.DATFIS <= {DATINI} "
                 + "AND NOT EXISTS (Select 1 "
                                   + "from E660Inc, E660Nfc "
                                   + "where E660INC.CodEmp=E075VDR.CodEmp "
                                   + aSqlE 
                                   + "and E660INC.CodPro=E075VDR.CodPro "
                                   + "and E660INC.CodDer=E075VDR.CodDer "
                                   + "and E660NFC.DatEnt< {DATINI} "
                                   + "and E660NFC.DatEnt> to_date('31/08/2014','dd/mm/yyyy') " 
                                   + "and E660NFC.SitNfc='2' "
                                   + "and E660NFC.CodEmp=E660INC.CodEmp "
                                   + "and E660NFC.CodFil=E660INC.CodFil "
                                   + "and E660NFC.CodFor=E660INC.CodFor "
                                   + "and E660NFC.NumNfi=E660INC.NumNfi "
                                   + "and E660NFC.NumNff=E660INC.NumNff "
                                   + "and E660NFC.CodSnf=E660INC.CodSnf "
                                   + "and E660NFC.CodTns=E660INC.CodTns) "
                 + "AND NOT EXISTS (Select 1 "
                                   + "from E660Inv, E660Nfv "
                                   + "where E660INV.CodEmp=E075VDR.CodEmp "
                                   + aSqlS
                                   + "and E660INV.CodPro=E075VDR.CodPro "
                                   + "and E660INV.CodDer=E075VDR.CodDer "
                                   + "and E660NFV.DatEmi< {DATINI} "
                                   + "and E660NFV.DatEmi> to_date('31/08/2014','dd/mm/yyyy') "              
                                   + "and E660NFV.SiTNfv='2' "
                                   + "and 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) "
                 + "group by E075VDR.DATFIS "; 
      IMPACmdSql = IMPACmdSql + "ORDER BY DATFIS, HORATU";
      }
  }  

Este artigo ajudou você?