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";
}
}
|
English
Español
English
Español


