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:
- Regras vinculadas ao cadastro de declarações
- Forma de busca de dados
- Particularidades em leiautes de importação
- Regras parciais nas formas de contabilização
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?
- 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
- 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)
- 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.
- Crie a regra que vai receber o novo comando SQL
- Vincule a regra criada ao cadastro de declarações (F049DEC), selecionando o registro e preenchendo o campo Código de Regra
- Na tela geração do arquivo (F669EFD), informe o Código da Declaração que tem a regra vinculada
- 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
- Crie o SQL que vai buscar as informações para geração do
registro
- Crie a regra que vai fazer a busca do registro
- Vincule a regra criada ao cadastro de declarações (F049DEC), selecionando o registro e preenchendo o campo Código de Regra
- Na tela de geração do arquivo (F669EFD), informe o Código da Declaração que tem a regra vinculada
- 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:
- As três primeiras letras indicam o módulo do sistema
- A quarta letra indica o tipo do campo ("A - Alfa", "D - Data" e "N - Número")
- A partir da quinta letra, indica o nome da variável aplicada na regra (nome do campo na tela F049DEC, guia Campos)
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
- IMP – Módulo de impostos
- A – Tipo do campo (Alfanumérico)
- Nome – Nome no campo no cadastro de declarações
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:
- Identifique o nome dos campos para definição das variáveis
- 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)
- Crie a regra e a vincule ao cadastro de declarações (F049DEC), selecionando o registro e preenchendo o campo Código de Regra
- Na tela geração do arquivo (F669EFD), informe o Código da Declaração que tem a regra vinculada
- 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"; } } |