
CALCODLAN- Leitura das tabelas da rotina FISA178 e FISA181 com atualização do Array das Tabelas CDA e CDV
Objetivo e escopo
Esse fonte concentra as funcionalidades referente a montagem do Array aGrava focado nas configurações efetuadas através da rotina do configurador de tributos para a posterior gravação na tabela CDA e/ou CDV
Os campos abaixo na CDA e CDV são exclusivos para operações com código de ajuste de lançamentos realizado pelo Configurador de Tributos. |
Tabelas
- CDA
- CDA_VLOUTR - Considera Valor ICMS Outros.
- CDA_TXTDSC - Código Referente a Descrição Complementar para o bloco 0460 (Amarração com a tabela CJA).
- CDA_CODCPL - Código Referente a Mensagem Complementar para o bloco C195 e Demais Semelhantes (Amarração com a tabela CJA).
- CDA_CODMSG - Código Referente a Descrição Complementar para o bloco C197 e Demais Semelhantes (Amarração com a tabela CJA).
- CDA_REGCAL - Referência do Código de Regra de Calculo Utilizada pelo configurador de Tributos.
- CDA_OPBASE - Opção de Escolha de Base de Calculo de acordo com a amarração da tabela CJA.
- CDA_OPALIQ - Opção de Escolha de Alíquota de acordo com a amarração da tabela CJA.
- CDA_IDMSG- Campo de ID gerado através da rotina FWUID com amarração da tabela CJL, na qual guarda as mensagens convertidas com a fórmula NPI.
- CDA_AGRLAN - Campo que identifica a forma de agrupamento do registro para geração do Arquivo do SPED FISCAL.
- CDV
- CDV_REGCAL - Referência do Código de Regra de Calculo Utilizada pelo configurador de Tributos.
- CDV_VLOUTR - Considera Valor ICMS Outros.
- CDV_TXTDSC - Código Referente a Descrição Complementar para o bloco 0460 (Amarração com a tabela CJA).
- CDV_CODCPL - Código Referente a Mensagem Complementar para o bloco C195 e Demais Semelhantes (Amarração com a tabela CJA).
- CDV_CODMSG - Código Referente a Descrição Complementar para o bloco C197 e Demais Semelhantes (Amarração com a tabela CJA).
- CDV_OPBASE - Opção de Escolha de Base de Calculo de acordo com a amarração da tabela CJA.
- CDV_OPALIQ - Opção de Escolha de Alíquota de acordo com a amarração da tabela CJA.
- CDV_IDMSG - Campo de ID gerado através da rotina FWUID com amarração da tabela CJL, na qual guarda as mensagens convertidas com a fórmula NPI.
- CDV_AGRLAN - Campo que identifica a forma de agrupamento do registro para geração do Arquivo do SPED FISCAL.
Dicionário
Estrutura está no pacote 010120 - $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Dicionario
Estrutura está no pacote 010650- $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Dicionario
Fontes
Localizados na branch Inovação: $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED
- Função RetCodAp - Criação de uma query com Json para Ler a tabela CJ9 - Cabeçalho do Cadastro de Regra de Ajuste de Lançamento e CJA - Códigos de Lançamento, Valor e Mensagens para gravar no Array aRegCal.
- Função BusCodLan - Recebe o Json da função RETCODAP - oJCodRef , na qual atualiza o array aGrava que no Legado possui 17 posições e recepcionando as informações do configurador de tributos passa a ter 25 posições, segue as posições alteradas no Array AGrava:
- cCodLan := Alltrim(aCodLan[nI][2]) //CJA_CODLAN
- nBasCal := aTribgen[nX][TG_IT_BASE] //CJA_NFBASE
- nAlqCal := aTribgen[nX][TG_IT_ALIQUOTA] //CJA_NFALIQ
- cTpLanc := Iif(Alltrim(aCodLan[nI][7]) <> "03","2","1") //Efetuada tratativa para a gravação correta dos Lançamentos de IPI
- cRegCalc := aCodLan[nI][1] //cRegCal
- cCodVal := Left(aCodLan[nI][5],3) //CJA_VALOR
- cCodValOu := Left(aCodLan[nI][6],3) //CJA_VLOUTR
- nValor := 0 //Tratativa condicional de acordo com o valor recebido na variável cCodVal
- nValorOut := 0 //Tratativa condicional de acordo com o valor recebido na variável cCodValOu
- cOpBase := aCodLan[nI][3]
- cOpAliq := aCodLan[nI][4]
- cCFOP := aNfItem[nZ][IT_CF]
- cDescod := aCodLan[nI][12]
- cLivro := aNFItem[nZ][IT_TS][TS_NRLIVRO]
- cCodDes := aCodLan[nI][11] //CJA_TXTDSC
- cCodObs := aCodLan[nI][10] //CJA_CODCPL
- cCodOLan := aCodLan[nI][09] //CJA_CODMSG
- cGeracum := aCodLan[nI][12] //CJA_GERMSG
- cIFCOMP := "CONFIG"
- cCMPOrig := Pertence(1,2,3,4) //Tratativa condicional de acordo com o conteúdo do array aCodLan[nI][7], considerando a dinâmica para apuração do IPI.Após as tratativas acima o array Agrava fica nesta configuração:aAdd(aGrava, {;
cItem,; //1 - Item
cCodLan,; //2 - Codigo de Lancamento
"1",; //3 - Sistema
nBasCal,; //4 - Base de Calculo
nAlqCal,; //5 - Aliquota
nValor,; //6 - Valor Calculado
cSeq,; //7 - Sequencia
cIFCOMP,; //8 - Informacoes Complementares
cTpLanc,; //9 - Tipo de Utilidade do Lancamento
"",; //10- Gravação do valor em ICMS ou OUTROS
cCmp0460,; //11-Complemento para Registro 0460
cCodRefl,; //12-Codigo Reflexo
cGeraGNRE,; //13 - Gera GNRE
cCMPOrig,; //14 - Campo origem CC7
cCFOP,; //15 - CFOP
cLivro,; //16 - lIVRO
cDescod,; //17 - Descrição DO CÓDIGO
cCodDes,; //18 - Descrição Mensagem bloco 0460
cCodObs,; //19 - Descrição Mensagem Bloco X195
cCodOLan,; //20 - Descrição Mensagem Bloco X197
nValOut,; //21 - Valor Outros ICMS
cRegCalc,; //22 - Código da Regra de Calculo
cOpBase,; //23 - Opção de Escolha de Base de Calculo
cOpAliq,; //24 - Opção de Escolha de Aliquota
cGerAcum }) //25 - Indica se gera a forma como será agrupado os registros.
- Função ExecCja - Controle de proteção dos campos.
---------------------------------------------------------------------------------------------------------------------------
FISA170 - Rotina com a concentração de todos os cadastros do motor fiscal tributário.
Foi adicionada uma nova opção na Tree do Configurador.
- Regra de Ajuste de Lançamento
- Cadastro de Mensagem
- Regra de Ajuste de Lançamento.
Objetivo e escopo
Concentra Menu da Tree, rotinas de carga e Browse das rotinas utilizadas no configurador fiscal de tributos
Fontes
Localizados na Branch Inovação: $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED
Função
GetVerRls - Controle de acesso a melhorias por Release.
Adicionado o relatorio de conferencia de estorno totvs.protheus.backoffice.fiscal.relatorioEstornocredito na Tree, na aba relatorios.
Tabelas Adicionadas
CJ8 - Cadastro de Mensagens
CJ9 - Cadastro Regra de Ajuste
CJA -Códigos de Lançamento da Regra de Ajuste
---------------------------------------------------------------------------------------------------------------------------
FISA173- Função de apuração de Tributos Genéricos
Para o Cadastro de Código de Ajuste de Lançamento foram adicionadas novas funções:
Função
GravaGNRE - Faz a gravação da Guia de Recolhimento na tabela SF6 de acordo com as configurações efetuadas no configurador de tributos.
DelGuia - Realiza a Exclusão da Guia de Recolhimento da tabela SF6 gerada pelo configurador de tributos.
DelTit - Realiza a Exclusão do Titulo do Financeiro da tabela SE2 gerada pelo configurado de tributos.
---------------------------------------------------------------------------------------------------------------------------
FISA178 - Cadastro de Mensagem
Objetivo e escopo
Objetivo desta rotina é de criar um cadastro de mensagem com base nas regras por Tributo, Tributo Genérico , Dados da Nota e Cadastros. Escolhendo uma dessas formas cadastro permite selecionar o que deve ser informado na formula da mensagem.
Tabelas
CJ8 com as informações de cabeçalho, com as informações de campos e filtros para montagem da mensagem;
Dicionário
Estrutura está no pacote 010120 - $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Dicionario
Fontes
Localizados na branch Inovação: $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED
Carga Automática
O campos CJ8_TPREGR (Tipo da Regra) quando for selecionado Tributos - será habilitado no campo CJ8_TRIFIL (Regra a ser consultado) as 3 esferas ( Estadual, Federal e Municipal), e selecionando uma das opções o campo CJ8_REGTRA (Tributo) para a consulta será filtrado por tipo de Regra;
Se na Tipo da Regra for igual a Tributos Genéricos , será habilitado o campo CJ8_TBCONF (Tributo Genérico) - com a consulta na tabela F2B ( Regras de Tributos) .
Caso o campos CJ8_TPREGR (Tipo da Regra) quando for selecionado Dados Da Nota será habilitado no campo CJ8_TRIFIL (Regra a ser consultado) as opções Cabeçalho da Nota e Dados dos Itens , ao escolher uma das opções o campo CJ8_CONSUL (Valor a ser Adicionado na Fórmula) , irá apresentar informações como por exemplo ( Tipo da Nota , Tipo de Operação, Numero do Item, Valor da mercadoria etc..)
Após selecionar as informações anterior o conteúdo selecionado no campo CJ8_CONSUL (Valor a ser Adicionado na Fórmula) , pode ser adicionado no campo CJ8_MENSG (Composição da Mensagem) clicando no Botão Adicionar e após adicionar clicar no botão Validar Mensagem.
Relacionamento
Este o campo CJ8_TBCONF será vinculado na regra de cálculo de tributo na tabela F2B rotina FISA160, no campo F2B_REGRA.
Retorno
Esta rotina armazena a mensagem em um campo MEMO com a formula NPI na qual será convertida no momento do processamento da Nota através da rotina FISXDESCR e armazenada na tabela CJL.
---------------------------------------------------------------------------------------------------------------------------
FISA181 - Cadastro de Regra de Ajuste de Lançamento
Objetivo e escopo
Objetivo desta rotina é efetuar um cadastro de regra de Códigos de Ajuste de Lançamento , vinculando a uma Regra de Documentos Fiscais que será criada pelo usuário conforme sua escrituração e com isso demonstrando no momento da geração do documento as informações dos códigos de lançamento.
Dessa forma com esse cadastro estamos unificando:
- Vinculo do código de Lançamento cadastrado na TES.
- Vinculo Código de Reflexo para regras de calculo realizado no FISA072
- Vinculo de mensagens, realizadas na tabela CCE (Informações Complementares) ou no cadastro da TES (Tabela SF4) campo F4_CODOBSE (Cod Observ)
Tabelas
CJ9 com as informações do cabeçalho do Cadastro de Regra de Ajuste de Lançamento, onde temos os campos:
- CJ9_CODREG - Código da Regra
- CJ9_DESCR - Descrição da Regra de Ajuste
- CJ9_VIGINI - Data Inicio da Vigência da Regra
- CJ9_VIGFIM - Data Fim da Vigência da Regra.
- CJ9_ID - Que Relaciona com a Tabela CJA - Itens da Regra de Ajuste de Lançamento.

CJA -Regra de Lançamento - Itens , onde iremos relacionar quais códigos de lançamento, regra de calculo, vigência, controle de guias, mensagens que serão utilizadas.
- CJA_CODREG Código Regra Cabeçalho - Iremos relacionar com o a Tabela CJ9
- CJA_REGCAL Regra de Calculo - Teremos uma consulta padrão com a Tabela F2B, onde o usuário ira selecionar a regra de calculo que enquadre para a regra de código de Ajuste, nesse campo ao invés dele ter um calculo no cadastro de reflexo ele criaria o seu proprio calculo.
- CJA_CODTAB Tabela de Lançamento - Neste campo está disponível 4 tabelas de lançamento 5.1.1 (CDO) , 5.2 (CDY), 5.3(CC6) e 5.3.4(CCK)
- CJA_CODLAN Código de Lançamento - A Tabela selecionada no campo CJA_CODLAN , atualiza a consulta padrão retornando os códigos de lançamento de cada tabela.
- CJA_VIGINI Data Inicio Vigência Lanc - O usuário informe a data de inicio da vigência do código de lançamento que conta nos arquivos TXT baixado na site da http://sped.rfb.gov.br/
- CJA_VIGFIM Data Final Vigência Lanc - O usuário informe a data de inicio da vigência do código de lançamento que conta nos arquivos TXT baixado na site da http://sped.rfb.gov.br/
- CJA_NFBASE Considera Base de ICMS - Neste campo temos 3 opções - Valor / Nulo / Zero, para atender caso a regra de calculo precise considerar a Base do ICMS como Zero , Valor ou NULO caso for necessário gravar no SPED o conteúdo |EM BRANCO|
- CJA_NFALIQ Considera Alíquota - Neste campo temos 3 opções - Valor / Nulo / Zero, para atender caso a regra de calculo precise considerar a Alíquota do ICMS como Zero , Valor ou NULO caso for necessário gravar no SPED o conteúdo |EM BRANCO|
- CJA_VALOR Considera Valor ICMS - Neste campo controla como a regra vai interpretar o conteúdo do valos do ICMS quando for necessário gerar os campo 7 do registro C197 , se será entendido como Valor. Esse campo temos uma consulta padrão na CIN com filtro de regra de Tributo com o campo CJ9_REGCAL.
- CJA_VLOUTR Considera Valor ICMS Outr - Neste campo controla como a regra vai interpretar o conteúdo do valos do ICMS quando for necessário gerar os campo 8 do registro C197 , se será entendido como Outros. Esse campo temos uma consulta padrão na CIN com filtro de regra de Tributo com o campo CJ9_REGCAL.
- CJA_CNTRL Uf da Operação - Neste campo temos 2 opções de considerar o código de lançamento pela UF de Origem ou pela UF de Destino. Este campo tem relação com o campo CJA_OPER
- CJA_OPER Tipo de Operação - Neste campo define em quais tipos de operação o código de lançamento deverá aparecer. São 3 opções : Entrada, Saída e Devolução.
- CJA_CODMSG Código da Mensagem - Neste campo será selecionado a mensagem pré cadastrada na rotina FISA178 - Cadastro de mensagem que será utilizada no EFD ICMS IPI Registro C197 campo 3.
- CJA_GERMSG Tipo de Mensagem - Temos esse campo para controle de como será gerada a mensagem para 01 - Cód. de Lançamento por período, onde gero uma mensagem para cada código de lançamento do Periodo, 02 - Cód. de Lançamento +Nota Fiscal, caso for gerar uma única mensagem por Código de Lançamento agrupado por Nota Fiscal e 03- Cód de Lançamento + Produto na qual será detalhado a mensagem por cada produto da nota.
- CJA_ID_CAB ID do Cabeçalho - Esse campo não irá apresentar no Browser, mas será gravado um ID através da função FWUUID("CJA").
- CJA_CODCPL Texto do Complemento - Neste campo será selecionado a mensagem pré cadastrada na rotina FISA178 - Cadastro de mensagem que será utilizada no EFD ICMS IPI Registro C195 campo 2 e campo 3.
- CJA_TXTDSC Texto de Descrição - Neste campo será selecionado a mensagem pré cadastrada na rotina FISA178 - Cadastro de mensagem que será utilizada no EFD ICMS IPI Registro 0460 no campo de Descrição.
- CJA_GUIA Regra de Guia - Neste campo teremos a consulta padrão com a tabela CJ4, onde o usuário irá selecionar a regra de guia que enquadre na regra de código de ajuste.
- CJA_TITULO Regra de Titulo - Neste campo teremos a consulta padrão com a tabeal FKK, onde o usuário irá selecionar a regra de titulo que enquadre na regra de código de ajuste.
- CJA_TITGUI Modo de Agrp Guia/Tit - Neste campo definimos o modo de agrupamento da Guia / Titulo que deverá ser gerado através da rotina. 01- Por documento +Lançamento + Participante ou 02 - Por Código de Lançamento aglutinado por Participante
Dicionário
Estrutura está no pacote 010120 - $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Dicionário
Estrutura está no pacote 010650 - $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Dicionário
Fontes
Localizados na branch Inovação: $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED
Criação da Tela em MVC com estrutura de ABAS (FOLDERs), foi estruturado em 2 modelos - MASTER e GRID.
- MASTER - Tabela CJ8
- VIEW_CAB
- GRID - Tabela CJA
- VIEW_LANC
- Campos: CJA_CODTAB|CJA_CODLAN|CJA_VIGINI|CJA_VIGFIM|CJA_REGCAL|CJA_GUIA|CJA_TITULO|CJA_TITGUI|CJA_GERMSG|CJA_OPER|CJA_CNTRL
- VIEW_VLR
- Campos: CJA_CODLAN|CJA_NFBASE|CJA_NFALIQ|CJA_VALOR|CJA_VLOUTR
- VIEW_MSG
- Campos: CJA_CODLAN|CJA_CODMSG|CJA_CODCPL|CJA_TXTDSC
- Funções de COMBOBOX e Consulta Padrão
- XTabelaLanc - Campo CJA_CODTAB
X181ChgF3 - Campo CJA_CODLAN
- CboxTpMsg - Campo CJA_GERMSG
- XTpTITGUI - Campo CJA_TITGUI
- CboxOper - Campo CJA_OPER
- CboxUF - Campo CJA_CNTRL
- Funções de Validações:
- Função VldCodigo onde tratamos para não repetir CJ9_CODREG.
- Função VigIniFIm que verifica se data inicial e data final já existem no cadastro de regras.
- Fsa181MCpo , valida que houve a mudança da opção do campo CJA_CODTAB, apagar os conteúdos dos campo CJA_CODLAN|CJA_VIGINI|CJA_VIGFIM
- ChangeLine , essa função atualiza o GRID entre abas , identificando a linha posiciona na ABA e replicando a mesma posição para as outras abas, dessa forma o usuário saberá em qual linha da aba Anterior esta alterando ou Visualizando.
Relacionamento
- F2B (F2B_REGRA), com o campo CJA_REGCAL
- CIN (CIN_CODIGO) com os campos CJA_VALOR e CJA_VLOUTR
- CJ8 (CJ8_CODREF) com os campos CJA_CODCPL, CJA_CODMSG e CJA_TXTDSC
- CJ9 (CJ9_ID) com o campo CJA_ID_CAB
- CJ9 (CJ9_CODREG) com o campo CJA_CODREG
Automação
- Case
- $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Cases/FISCadMensagemTestCase.PRW
- $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Cases/FISCadRegraAjustTestCase.PRW
- $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Cases/FISCadTributoTestCase.PRW
- $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Cases/FISComRJArqCfgTestCase.PRW
- $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Cases/FISComRJCfgMovTestCase.PRW
- $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Cases/FISIndSpArqCfgTestCase.PRW
- $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Cases/FISIndSpCfgMovTestCase.PRW
- Group
- $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Group/FISCadTestGroup.prw
- $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Group/FISComRJArqCfgTestGroup.prw
- $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Group/FISIndSPArqCfgTestGroup.prw
- $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Group/FISIndSpCfgMovTestGroup.prw
- Suite
- $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Suites/FISCadTestSuite.prw
- $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Suites/FISComArqCfgTestSuite.prw
- $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Suites/FISIndArqCfgTestSuite.prw
- $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Suites/FISIndCfgMovTestSuite.prw
---------------------------------------------------------------------------------------------------------------------------
FISXAPUR- Funções Fiscais
Objetivo e escopo
Separar na apuração os valores provenientes do configurador de tributos versus lançamento via TES (Legado).
Modificações para atender a apuração de IPI
- Função AjustIPI - Essa função recebe o array aCDAIPI que contém os dados da tabela CDA referente aos lançamentos de ajuste do IPI, na qual foi adicionado mais uma posição no array através do conteúdo da variável cSPCFGLEG.
A variável cSPCFGLEG concatena os campos CDA_CODLAN+CDA_IFCOMP, para criar uma "chave" de comparação entre o que é lançamento proveniente do configurador de tributos versus lançamento via TES (legado).
Também é feito uma alteração na aScan, utilizando a nova posição do array para comparação de registros, trazendo como resultado a separação correta dos registros de acordo com a origem do lançamento.
2. Função CkApurCDP - Essa função tem como um dos objetivos verificar a apuração anterior e também verificar lançamentos manuais de um possível reprocessamento da apuração, carregando as informações no array aDadIC e posteriormente trazer para a tela da nova apuração.
Foi feito uma alteração para que não fosse carregado para o array aDadIC os lançamentos provenientes do configurador de tributos, afim de evitar duplicidade de lançamento na apuração, uma vez que os registros automáticos são refeitos a cada nova apuração.
3. Função ViewResumo - Função responsável por apresentar o grid com a apuração na tela.
Realizada uma tratativa para apresentar na coluna "Tipo de Lançamento" a informação "CONFIG" para os lançamentos provenientes do configurador de tributos, facilitando a visualização dos registros.
4. Função LoadApur - Função que carrega os valores para o array aGetApur para ser apresentado na tela.
Nesta rotina existe uma condição que trabalha com o array aCDAIPI na qual é chamada a função RWaGetApur onde é verificado novamente os códigos de lançamento de ajuste. No cenário inicial a chamada dessa função aglutina novamente o conteúdo do array aCDAIPI, ocasionando a anulação das modificações acima.
Para manter as alterações propostas foi necessário criar uma tratativa para que o ultimo parâmetro solicitado na função RWaGetApur levasse o código "3" criado especialmente para identificar que o tipo de lançamento é do configurador de tributos:
//Inclui Ajustes da apuração carregados da CDA
If lUsaSped .And. lCmpPcLanc
For nX := 1 to len(aCDAIPI)
If SUBSTR(aCDAIPI[nX][6],4,6) == "CONFIG" //len(aCDAIPI[nX][6]) > 3
RWaGetApur(aCDAIPI[nX][2],aCDAIPI[nX][4],.T.,aCDAIPI[nX][3],aCDAIPI[nX][6],'3',"","3") //'1-AUTOMATICO','2-MANUAL', '3- CONFIG'
else
RWaGetApur(aCDAIPI[nX][2],aCDAIPI[nX][4],.T.,aCDAIPI[nX][3],aCDAIPI[nX][6],'3',"","1") //'1-AUTOMATICO','2-MANUAL
Endif
Next nX
Endif
Também no parâmetro 5 da chamada da função RWaGetApur é utilizada a nova posição do array aCDAIPI .
5. Função RWaGetApur - Função que totaliza os valores no array aGetApur que será apresentado na tela para o usuário.
Foi feito uma tratativa na variável nPosLinha para que fosse verificado e comparado a variável cTipoAj com a posição correspondente do array. Com essa alteração foi possivel totalizar corretamente os registros.
Como foi alterado o conteúdo do parâmetro 5 da função RWaGetApur que recebe o código de lançamento de ajuste do IPI, foi necessário uma tratativa adicional utilizando a função SUBSTR().
Modificações para atender a apuração de ICMS
- Função CkapurCDH - Essa função tem como um dos objetivos verificar a apuração anterior e também verificar lançamentos manuais de um possível reprocessamento da apuração, carregando as informações para o arra aDadIC e posteriormente trazer para a tela da nova apuração.
Para o configurador de tributos foi adicionada a chamada da função GerGuiTit() para geração das guias e títulos do configurador. Também foi alterado algumas validações para que não fosse carregado para o array aDadIC os lançamentos de ICMS do configurador de tributos, afim de evitar duplicidade de lançamento na apuração, uma vez que os registros automáticos são refeitos a cada nova apuração.
- Função CkLancCDA - Essa função verifica se existe lançamentos na tabela CDA e gera os arrays de acordo com cada variação do ICMS, para que no fim seja apresentada corretamente nas colunas de apuração do ICMS.
Foi criado uma proteção na função para releases anteriores e também uma tratativa para quando houver conteúdo na coluna "Outros".
No array aLanc foi criado uma nova posição para armazenar a informação do campo CDA_REGCAL para poder fazer a distinção do que é lançamento do configurador versus lançamento do legado. Com essa informação foi possível realizar a segregação dos valores dos códigos de lançamento na tela de apuração.
Os Arrays que foram tratados no fonte são : aCDADifal , aCDAST, aCDAIC e aCDADE (Debitos Especiais).
- Função LoadX3Apur - Adicionado os novos campos da tabela CDA e CJA para proteção da rotina.
---------------------------------------------------------------------------------------------------------------------------
FISXAPURA- Funções Fiscais
O fonte FISXAPURA trata do processamento das informações das apurações do ICMS e IPI quando o MultiThread está ativo no cenário do cliente.
Modificações para atender a apuração de IPI
Assim como no fonte FISXAPUR foi adicionado uma nova posição no array aCDAIPI nas chamadas do mesmo dentro do fonte FISXAPURA.
Modificações para atender a apuração de ICMS
Assim como no fonte FISXAPUR foi adicionado uma nova posição nos arrays aCDADifal , aCDAST, aCDAIC e aCDADE nas chamadas do mesmo dentro do fonte FISXAPURA.
---------------------------------------------------------------------------------------------------------------------------
FISXDESCR- Conversão das Mensagens com Fórmula NPI
Objetivo e Escopo
Este fonte tem objetivo de Converter referencias da MATXFIS() e outras funções em índices para serem utilizados em textos do documento fiscal
Tabelas
CJL - Controle de Mensagens Decodificadas, onde iremos armazenar as mensagens convertidas de acordo com o relacionamento dos códigos de mensagem da regra de código de Ajuste de Lançamento (CJA) .
- CJL_ID ID da Mensagem - Iremos relacionar com o da Tabela CDA
- CJL_INDICE Índice da Mensagem - Na CDA temos 3 campos disponíveis para configurar uma mensagem para os registros C195 , C197 e 0460. Este campo na CJL serve para identificar de qual campo a mensagem foi originada.
Ex.: CDA_CODCPL (C195) = Índice 01 , CDA_CODMSG (C197) = Índice 02 e CDA_TXTDSC(0460) = índice 03 - CJL_CODMSG Código da Mensagem - Campo que vai armazenar o código da mensagem configurada na tabela CJA e que também existe na CJ8.
- CJL_MENSG Mensagem Decodificada - Campo MEMO com a mensagem convertida.
Fontes
Localizados na branch Inovação: $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED
Funções
- Função FISXDAGR - Chamada principal da rotina, na qual pega as referencias da nota e executa a gravação na CJL e também grava o ID na tabela CDA ou CDV dependendo do tipo de ajuste..
- Função MensagRef - É chamado através da rotina FISXDAGR após a tratativa inicial referente as mensagens. Essa função carrega as referencias, organiza as palavras da mensagem e realiza o processamento da conversão.
- Função Processar - Processa as referencias das mensagens de acordo com o array aPalavras.
- Função Converter - Tratativa com relação a conversão das referencias.
- Função AtuMensag - Atualiza a mensagem com o resultado da conversão.
- Função LoadMsghash - Alimenta o objeto Hash com os dados de referencia de imposto a serem processados.
- Função RetConf - Retorna o valor dos tributos genéricos provenientes do configurador de tributos.
- Função ConvResult - Tratativa de variável para converter qualquer valor em caractere.
- Função FISXDFIH - Limpa os objetos.
---------------------------------------------------------------------------------------------------------------------------
IMPXFIS- Funções Fiscais
Função GFPMxFis - Adicionado os campos novos da CJ9, CJA, CDA e CDB, utilizando a variável lCdaCof para controle.
Foi criada o variável lTribCon se tenho algum calculo de tributo feito pelo configurador para chamar a função RetCodAp - Carrega tabela de código de lançamento do configurador para um Json
E chamo também BusCodLan.
- Adicionado a tabela CJM - que será gravado o conteudo das ultimas notas de entrada que compõem a montagem do PA e a nota de Saída que utilizou ao PA.
- Adicionado na função GFFMxFis a função GETCOMPULTAQ - Buscar os dados de MP suas estruturas x PA, a Função FisDelCjm, para deletar a CJM quando houver o cancelamento da NF de saída e a Função GETULTAQUI para tratar da gravação da CJM para produtos que não possuem estrutura.
- Função xFisCDA - Grava a tabela CDA de acordo com o retorno do processamento do array aGrava.
Para o configurador de tributos foram adicionados as variáveis lCpoCDV e lCdaCof com as proteções de campo para releases anteriores, além de realizar a gravação dos campos novos. - Função xFisAtuSF3 - Responsável por atualizar as tabelas de livros fiscais com base em uma nota fiscal de entrada ou saída.
Adicionado a função GETULTAQUI para tratamento dos operandos de ultima aquisição relacionados a estorno de icms para produtos que não possuem estrutura, na qual fará a gravação na tabela CJM.
Adicionado a função GETCOMPULTAQ para tratamento do operando de ultima aquisição para produtos que possuem estrutura para efetuar a gravação da memoria de calculo na tabela CJM, verificando todos os componentes e qualquer nível que compõem a estrutura de produtos configurada.
Na chamada da função foram adicionados 2 novos parâmetros, na qual serão aproveitados na função FISXDAGR que é chamado no final dessa função.
No fim da função foi adicionado a função FISDELCJM , para realizar a exclusão dos registros da CJM quando houver cancelamento de NF. - Função xMaFisAjIt - Função responsável por reprocessar o retorno do array aGrava.
Foi adicionado as chamadas do RetCodAP e BusCodLan quando houver lançamentos do configurador de tributos.
---------------------------------------------------------------------------------------------------------------------------
MATA017- Cadastro das informações adicionais da Apuração
No inicio do fonte foi criado a variável lNewCDV para controle dos novos campos da tabela CDV.
- Função A017LAICMS - Recepcionar na montagem do GETDADOS do folder de lançamentos fiscais o campo CDV_VLOUTR
- Função MontCols - Reposicionar os campos e adicionar o CDV_VLOUTR.
- Função a017AjuICM - Adiciona no objeto dependendo do retorno logico da variavel lNewCDV os seguintes campos:
IF lNewCdv
nRegCalc := aScan( oLancCDV:aHeader, {|aX| aX[2] == "CDV_REGCAL" } )
nValOut := aScan( oLancCDV:aHeader, {|aX| aX[2] == "CDV_VLOUTR" } )
nCodObs := aScan( oLancCDV:aHeader, {|aX| aX[2] == "CDV_CODMSG" } )
nCodOLan := aScan( oLancCDV:aHeader, {|aX| aX[2] == "CDV_CODCPL" } )
nCodDes := aScan( oLancCDV:aHeader, {|aX| aX[2] == "CDV_TXTDSC" } )
nOpBase := aScan( oLancCDV:aHeader, {|aX| aX[2] == "CDV_OPBASE" } )
nOpAliq := aScan( oLancCDV:aHeader, {|aX| aX[2] == "CDV_OPALIQ" } )
nAgrLan := aScan( oLancCDV:aHeader, {|aX| aX[2] == "CDV_AGRLAN" } )
Endif
IF lNewCdv .and. Len(aGrava[nI]) > 17
oLancCDV:aCols[nR,nCodDes] := aGrava[nI,18] //
oLancCDV:aCols[nR,nCodObs] := aGrava[nI,19] //
oLancCDV:aCols[nR,nCodOLan] := aGrava[nI,20] //
oLancCDV:aCols[nR,nRegCalc] := aGrava[nI,22] //
oLancCDV:aCols[nR,nValOut] := aGrava[nI,21] //
oLancCDV:aCols[nR,nOpBase] := aGrava[nI,23] //
oLancCDV:aCols[nR,nOpAliq] := aGrava[nI,24] //
oLancCDV:aCols[nR,nAgrLan] := aGrava[nI,25] //
Endif
- Função a017GrvCDV - Responsável pela gravação da tabela CDV.
Também faz a tratativa referente aos novos campos da CDV de acordo com o retorno lógico da variável lNewCDV
- Função a017xLAICMS - Aba Lançamento Fiscais adicionar os campos novos se existirem:
- aAdd(aYesFields,"CDV_VLOUTR")
- aAdd(aYesFields,"CDV_TXTDSC")
- aAdd(aYesFields,"CDV_CODCPL")
- aAdd(aYesFields,"CDV_CODMSG")
- aAdd(aYesFields,"CDV_REGCAL")
- aAdd(aYesFields,"CDV_OPBASE")
- aAdd(aYesFields,"CDV_OPALIQ")
---------------------------------------------------------------------------------------------------------------------------
MATA103- Notas Fiscais de Entrada
Na subida oficial na Branch Master , será necessário alinhamento com o Time de Compras para subida dessas alterações. |
- Função a103AjuICM - Nessa função atualizamos a folder da tela de Código de lançamento, com os campos:
- CDA_VLOUTR
- CDA_TXTDSC
- CDA_CODCPL
- CDA_CODMSG
- CDA_REGCAL
- CDA_OPALIQ
- CDA_OPBASE
- CDA_AGRLAN
Os campos acima só são apresentados dependendo do retorno lógico da variável lNewCDA.
- Função a103GrvCDA - Responsável por excluir e atualizar as referencias dos lançamento Fiscais.
Realizamos as proteções dos novos campos para recepcionar e realizar as gravações, atualizações ou exclusões;
---------------------------------------------------------------------------------------------------------------------------
MATA103x- Funções de validação e controle de interface do documento de entrada
Na subida oficial na Branch Master , será necessário alinhamento com o Time de Compras para subida dessas alterações. |
- Função a103xLAICMS - Encapsulado os campos {"CDA_VLOUTR","CDA_TXTDSC","CDA_CODCPL","CDA_CODMSG"} no array aCmpsCDA e atualizar se caso existir os novos campos o array
- aAdd(aCmpsCDA,"CDA_VLOUTR")
- aAdd(aCmpsCDA,"CDA_TXTDSC")
- aAdd(aCmpsCDA,"CDA_CODCPL")
- aAdd(aCmpsCDA,"CDA_CODMSG");
Nessa função verificamos se o array possui 25 posições e gravamos as novas posições.
---------------------------------------------------------------------------------------------------------------------------
MATA920- Saída de Notas Fiscais de Venda Manual.
- Função a920LAICMS - Montagem do Getdados do folder de lançamentos fiscais.
Encapsulado os campos {"CDA_NUMITE","CDA_CODLAN","CDA_BASE","CDA_ALIQ","CDA_VALOR","CDA_IFCOMP"} no array aCpCDA e atualizar se caso existir os novos campos no array:
If CDA->(FieldPos("CDA_VLOUTR")) > 0 .And. CDA->(FieldPos("CDA_TXTDSC")) > 0 .And. CDA->(FieldPos("CDA_CODCPL")) > 0 .And. CDA->(FieldPos("CDA_CODMSG")) > 0 .And. CDA->(FieldPos("CDA_AGRLAN")) > 0
aAdd(aCpCDA,"CDA_VLOUTR")
aAdd(aCpCDA,"CDA_TXTDSC")
aAdd(aCpCDA,"CDA_CODCPL")
aAdd(aCpCDA,"CDA_CODMSG")
aAdd(aCpCDA,"CDA_AGRLAN")
Endif
---------------------------------------------------------------------------------------------------------------------------
MATA953- Apuração de ICMS
Objetivo
O fonte MATA953 trata do processamento e gravação da apuração do ICMS como um todo. Para o configurador de tributos foram adicionadas algumas condições para poder trazer corretamente as informações.
Funções
- Função A953Processa - Para o configurador de tributos foram adicionadas as declarações das variaveis que serão utilizadas ao longo do fonte.
- Função a953Apura - Essa função distribui o retorno dos arrays aCDAIC, aCDAST, aCDADifal, aCDADE para os folders da tela de apuração do ICMS.
Foi colocado uma tratativa com o array aCont referente a sequencia dos códigos de lançamentos apresentados na tela.
Também foi adicionado uma condição que compara os tipos de lançamento da CDA para fazer a devida segregação na montagem da tela de acordo com o tipo de cada imposto do ICMS. - Função DetCodLan - Exibe o detalhamento das notas que gravaram código de lançamento na tabela CDA.
Foi adicionado uma tratativa para adicionar o campo CDA_VLOUTR na query. - Função ApurDifal - Adicionado uma tratativa quando o tipo de lançamento for igual a "CF", na qual é lançamento referente ao configurador de tributos.
- Função EstruCLan - Tratativa no array para adicionar o campo CDA_VLOUTR caso ele exista.
- Função a953TpLanc - Adicionado o retorno para o tipo de lançamento "CF" referente ao configurador de tributos.
- Função a953TotSubApur- totaliza entradas e saídas quando necessário a geração do bloco 1920 do Sped Fiscal.
Para o configurador de tributos foi adicionado a tratativa para o campo CDA_VLOUTR. - Função RetCodCDA - Cria um JSON com todos os códigos de lançamentos cadastrados na tabela CJA filtrado por período + Filial.
- Função PosTitDel - Cria um JSON com todos os títulos gerados pela apuração MATA953 para deletar Títulos amarrados na rotina FISA181.
- Função GerGuiTit - Função que gera Guia e Titulo dos códigos de ajuste lançados no configurador via FISA181.
---------------------------------------------------------------------------------------------------------------------------
MATN410B- Função de calculo dos impostos contidos no pedido de venda
- Função A410LAICMS - Folder de Lançamentos Fiscais no Pedido de Venda (Planilha Financeira)
- Valida de o campo CDA_VLOUTR existe antes de adicionar na Folder
- lGerAlp , controle ira trazer os campos na tela.
---------------------------------------------------------------------------------------------------------------------------
MATXDEF.CH - Include utilizado nas rotinas IMPXFIS, MATXFIS, entre Outras.
Para o configurador de tributos foram adicionadas algumas definições para FieldPos, tabelas , referencia de tributo genéricos e referencia de mensagens
FieldPos
#DEFINE FP_CFC_FCPBSR 1049
#DEFINE FP_CD2_PSCFST 1050
#DEFINE FP_CD2_VFCPDI 1051
#DEFINE FP_CD2_VFCPEF 1052
#DEFINE FP_CFC_FCPAJT 1053
#DEFINE FP_CD2_FCPAJT 1054
#DEFINE FP_CDA_REGCAL 1055
#DEFINE FP_CDA_VLOUTR 1056
#DEFINE FP_CDA_CODMSG 1057
#DEFINE FP_CDA_CODCPL 1058
#DEFINE FP_CDA_TXTDSC 1059
#DEFINE FP_CDA_OPBASE 1060
#DEFINE FP_CDA_OPALIQ 1061
#DEFINE FP_CDV_REGCAL 1062
#DEFINE FP_CDV_VLOUTR 1063
#DEFINE FP_CDV_CODMSG 1064
#DEFINE FP_CDV_CODCPL 1065
#DEFINE FP_CDV_TXTDSC 1066
#DEFINE FP_CDV_OPBASE 1067
#DEFINE FP_CDV_OPALIQ 1068
#DEFINE FP_CJA_FILIAL 1069
#DEFINE FP_CJA_ID 1070
#DEFINE FP_CJA_CODREG 1071
#DEFINE FP_CJA_ID_CAB 1072
#DEFINE FP_CJA_REGCAL 1073
#DEFINE FP_CJA_CODTAB 1074
#DEFINE FP_CJA_CODTAB 1075
#DEFINE FP_CJA_CODLAN 1076
#DEFINE FP_CJA_VIGINI 1077
#DEFINE FP_CJA_VIGFIM 1078
#DEFINE FP_CJA_NFBASE 1079
#DEFINE FP_CJA_NFALIQ 1080
#DEFINE FP_CJA_VALOR 1081
#DEFINE FP_CJA_VLOUTR 1082
#DEFINE FP_CJA_GRGUIA 1083
#DEFINE FP_CJA_CODCPL 1084
#DEFINE FP_CJA_CODMSG 1085
#DEFINE FP_CJA_TXTDSC 1086
#DEFINE FP_CJA_GERMSG 1087
#DEFINE FP_CJ9_FILIAL 1088
#DEFINE FP_CJ9_ID 1089
#DEFINE FP_CJ9_CODREG 1090
#DEFINE FP_CJ9_DESCR 1091
#DEFINE FP_CJ9_VIGINI 1092
#DEFINE FP_CJ9_VIGFIM 1093
#DEFINE FP_CJA_GUIA 1094
#DEFINE FP_CJA_TITULO 1095
#DEFINE FP_CJA_TITGUI 1096
#DEFINE FP_CDA_AGRLAN 1097
#DEFINE FP_CDV_AGRLAN 1098
Tabelas
#DEFINE AI_CJ3 49
#DEFINE AI_CJA 50
#DEFINE AI_CJL 51
Referencia Tributo Genérico
#DEFINE TG_IT_VL_MAX 34 //Valor Manual Maximo do Tributo
#DEFINE TG_IT_VL_MIN 35 //Valor Manual Minimo do Tributo
#DEFINE TG_IT_OPR_MAX 36 //Operador de limite de Valor Maximo do Tributo
#DEFINE TG_IT_OPR_MIN 37 //Operador de limite de Valor Maximo do Tributo
Referencia Mensagens
#DEFINE MSG_CHAVE 1
#DEFINE MSG_INDICADOR 2
#DEFINE MSG_TIPO 3
#DEFINE MSG_REFERENCIA 4
#DEFINE MSG_VAL_REF 5
#DEFINE MSG_LSOMA 6
---------------------------------------------------------------------------------------------------------------------------
MATXFIS- Funções Fiscais
Programa responsável pelo Calculo de Impostos Fiscais e Financeiros
- Função MafisIni - Adicionado a variável cNumNota na posição 36.
Variável cNumNota foi adicionado na posição 236 do array aNfCab. - Função MaFisAjIT - Foi adicionado o array aInfNat como parâmetro para ser usado posteriormente na rotina FISXADGR.
- Função MaFisAtuSF3 - Adicionado o array aFunc e aInfNat como parâmetro da rotina.
---------------------------------------------------------------------------------------------------------------------------
SPEDFISCAL - Rotina de Geração do arquivo da EFD ICMS/IPI
Objetivo e Escopo
O Objetivo é que as configurações realizadas no configurador de tributos seja predominante perante ao legado.
Dentro do fonte do SPEDFISCAL tem muitos pontos que alteram o array aLancCDA e aLancCDA2 para que seja atendido alguma legislação prevista do legado.
Funções
Criação da variável estática : oJRetCda
- Função Bloco E - Adicionado o parâmetro "@aStructCDA" na chamada.
- Função SPDE520530 - Adicionado a tratativa para o tipo de lançamento 3- CONFIG para poder trazer corretamente os registros Pai e Filho dos bloco E530 e E531.
- Função RegE531 - Adicionado uma condição que verifica os lançamentos do configurador para montagem do bloco E531.
- Função C195C197 - Adicionado tratativa para separar os lançamentos que vem do Legado X Configurador de Tributos.
If !aLanCDA[nX,24] // Legado
If aLanCDA[nX,1]$"SP90090104/SP90090278"
nPos := aScan(aRegC197,{|x| x[1] == nPosC195 .And. x[3]==aLanCDA[nX,1] .And. x[4]==aLanCDA[nX][2] })
Else
nPos := aScan(aRegC197,{|x| x[1] == nPosC195 .And. x[5]==cCodItem .And. x[3]==aLanCDA[nX,1] })
EndIf
Else
If aLanCDA[nX,23] == "01"
nPos := aScan(aRegC197,{|x| x[1] == nPosC195 .And. x[3]==aLanCDA[nX,1] })
ElseIf aLanCDA[nX,23] == "02"
nPos := aScan(aRegC197,{|x| x[1] == nPosC195 .And. x[3]==aLanCDA[nX,1] .And. x[4]==aLanCDA[nX][2] })
Elseif aLanCDA[nX,23] == "03"
nPos := aScan(aRegC197,{|x| x[1] == nPosC195 .And. x[5]==cCodItem .And. x[3]==aLanCDA[nX,1] })
Else
nPos := aScan(aRegC197,{|x| x[1] == nPosC195 .And. x[5]==cCodItem .And. x[3]==aLanCDA[nX,1] })
Endif
Endif
- Função RegE115 - Adicionado a tratativa para separar os lançamentos que vem do Legado X Configurador de Tributos.
Utiliza a variável "lNewCDV" e também usa a função "RetQCDV" que está no fonte SPEDXFUN. - Função SPDAPICMS - Utiliza a função "TempCDA" que está no fonte SPEDXFUN.
Também faz a tratativa para separar os lançamentos que vem do Legado X Configurador de Tributos.
Os Registros contemplados pelas modificações nessa função são: E111, E113, E220 e E240. - Função Grupo1900 - Adicionado o parâmetro "@aStructCDA" na chamada da função.
Adicionado tratativa para separar os lançamentos que vem do Legado X Configurador de Tributos.
Utilização da função RetQCDV para geração do Registro 1925.
- Função AP1900ICM -Adicionado o parâmetro "@aStructCDA" na chamada da função.
Adicionado tratativa para separar os lançamentos que vem do Legado X Configurador de Tributos.
Registros contemplados pelas modificações são: 1921, 1923.
- Função D195D197 - Adicionado tratativa para separar os lançamentos que vem do Legado X Configurador de Tributos.
If !aLanCDA[nX][24]
If aLanCDA[nX,1]$"SP90090104/SP90090278"
nPos := aScan(aRegD197,{|x| x[1] == nPosD195 .And. x[3]==aLanCDA[nX,1] .And. x[4]==aLanCDA[nX][2] })
Else
nPos := aScan(aRegD197,{|x| x[1] == nPosD195 .And. x[5]==cCodItem .And. x[3]==aLanCDA[nX,1] })
EndIf
Else
If aLanCDA[nX,23] == "01"
nPos := aScan(aRegD197,{|x| x[1] == nPosD195 .And. x[3]==aLanCDA[nX,1] })
ElseIf aLanCDA[nX,23] == "02"
nPos := aScan(aRegD197,{|x| x[1] == nPosD195 .And. x[3]==aLanCDA[nX,1] .And. x[4]==aLanCDA[nX][2] })
Elseif aLanCDA[nX,23] == "03"
nPos := aScan(aRegD197,{|x| x[1] == nPosD195 .And. x[5]==cCodItem .And. x[3]==aLanCDA[nX,1] })
Else
nPos := aScan(aRegD197,{|x| x[1] == nPosD195 .And. x[5]==cCodItem .And. x[3]==aLanCDA[nX,1] })
Endif
Endif
---------------------------------------------------------------------------------------------------------------------------
SPEDXDEF.CH - Include utilizado nas rotinas SPEDFISCAL e SPEDXFUN
Para o configurador de tributos foram adicionadas algumas definições para FieldPos, tabelas e filiais
FieldPos
#DEFINE FP_CDA_TXTDSC 243
#DEFINE FP_CDA_CODCPL 244
#DEFINE FP_CDA_CODMSG 245
#DEFINE FP_CDA_VLOUTR 246
#DEFINE FP_CDA_REGCAL 247
#DEFINE FP_CDA_OPBASE 248
#DEFINE FP_CDA_OPALIQ 249
#DEFINE FP_CDA_IDMSG 250
#DEFINE FP_CDV_TXTDSC 251
#DEFINE FP_CDV_CODCPL 252
#DEFINE FP_CDV_CODMSG 253
#DEFINE FP_CDV_VLOUTR 254
#DEFINE FP_CDV_REGCAL 255
#DEFINE FP_CDV_OPBASE 256
#DEFINE FP_CDV_OPALIQ 257
#DEFINE FP_CDV_IDMSG 258
#DEFINE FP_CJ8_CODREF 259
#DEFINE FP_CJ8_DESC 260
#DEFINE FP_CJ8_MENSG 261
#DEFINE FP_CJL_ID 262
#DEFINE FP_CJL_INDICE 263
#DEFINE FP_CJL_CODMSG 264
#DEFINE FP_CJL_MENSG 265
#DEFINE FP_CDA_AGRLAN 266
Tabelas
#DEFINE AI_CJA 64
#DEFINE AI_CJ8 65
#DEFINE AI_CJ9 66
#DEFINE AI_CJL 67
Filiais
#DEFINE PFIL_CJA 111
#DEFINE PFIL_CJ8 112
#DEFINE PFIL_CJ9 113
#DEFINE PFIL_CJL 114
---------------------------------------------------------------------------------------------------------------------------
SPEDXFUN - Funções Fiscais para o SPEDFISCAL
Objetivo e Escopo
O Objetivo é que as mensagens cadastradas através da rotina do configurador de tributos seja refletida nas funções do fonte SPEDXFUN para que posteriormente sejam gravadas no arquivo da EFD ICMS/IPI.
Também faremos o controle referente a forma como o usuário do configurador de tributos realizou para aglutinação dos códigos de lançamento de ajuste.
Funções
- Função SPLancCDA - Foram adicionadas variáveis de controle das mensagens do configurador:
Local lMsgCjl := .F.
Local cMsgCjl := ""
Local lProcCDA := .F.
Local cAgrup := ""
Foi adicionado um novo parâmetro na chamada da função SPEDFFiltro.
SPEDFFiltro(1,"CDA",@cAliasCDA,aPar,,,@lMsgCjl)
Após o retorno da query da função SPEDFFiltro é realizado tratativas com relação ao campo de mensagem para os blocos C195, C197, 0460, além de mudar a montagem como um todo do array aLancIT e aLancCDA2 que são utilizados na montagem do arquivo do SPEDFISCAL para os blocos que utilizam a tabela CDA.
Também faz o tratamento de como vai ficar aglutinado o array aLancIT ou aLancCDA2 de acordo com o conteúdo do campo CDA_AGRLAN.
É adicionado novas posições nos arrays aLancIT e aLancCDA2.
Adiciona uma nova posição no array aInfE531, para tratar o bloco referente a apuração de IPI. - Função SPEDFFiltro -Responsável por retornar os dados com as informações da tabela CDA amarrada com outras tabelas.
Para o configurador de tributos foi adicionado junto com uma proteção de release os novos campos da CDA e também da tabela CJL.
Também faz tratativa com a variável lógica lMsgCjl.
- Função RetQCDV - Nova função para retornar a descrição complementar para o registro E115 caso não venha preenchido.
- Função TempCDA - Nova função que retorna um objeto com os códigos de lançamentos que estão na CDA pelo período da apuração.
---------------------------------------------------------------------------------------------------------------------------
CONFXFIS - Concentrar todas as funções e regras do configurador de tributos
Objetivo e Escopo
Criar um operando para identificar a ultima aquisição das Matérias Primas que foram utilizadas na produção do Produto Acabado , utilizando o Fluxo de Estrutura de Produto com Niveis → Ordem de Produção → Empenho de Produção → Apontamento de Produção.
Realizar uma venda para órgão Publico do produto PA com escrituração CST 40 Isenta , onde utilizo um código de lançamento de Estorno de Credito com objetivo de trazer o valor do ICMS da ultima nota de aquisição da MP
Memoria de Calculo:
PA100 - Quantidade Vendida = 5
Estrutura de Produto para Produzir:
MP100 - Quantidade 6
MP102 - Quantidade 0,3
MP103 - Quantidade 1
Nota de Compra x Quantidade
Compra | Quantidade | ICMS Total | Icms Unitario |
---|
MP100 | 200 | 1200 | 6 |
MP101 | 50 | 300 | 6 |
MP102 | 40 | 960 | 24 |
Estorno de Crédito ICMS
Materia Prima | (ICMS Unitario * Quantidade Venda)*Quantidade Produção | Valor Estorno |
---|
MP100 | (6*6)*5 | 180 |
MP101 | (6*0,3)*5 | 9 |
MP102 | (24*1)*5 | 120 |
| TOTAL | 309 |
Tabela
CJM - Contrl Estor icms Estr Prod
- CJM_FILIAL Filial do Sistema
- CJM_DOCORI Documento de Origem
- CJM_SERORI Serie Origem
- CJM_PRDORI Produto NF Origem
- CJM_DTORIG Data Doc Origem
- CJM_LOTORI Lote Produto
- CJM_UM Unidade de Medida
- CJM_SEGUM Segunda Unidade de Medida
- CJM_QTSEGU Segunda Unidade de Medida
- CJM_DOCSAI Num Doc Saida
- CJM_SERSAI Serie da Nf de Saida
- CJM_QTDSAI Quantidade Item Nf Saida
- CJM_CLIFOR Cliente/Fornecedor
- CJM_LOJA Codigo Loja Client/Forn
- CJM_ICMEST Vlr ICMS Estorno Cred Est
- CJM_PERIOD Ano/Mês do Processamento
- CJM_PRDFIM Cod Produto Final
- CJM_PRCOMP Codigo Produto Componente
- CJM_QTESTR Quantidade Produção
- CJM_FORNEC Codigo do Forn/Cliente
- CJM_LOJAEN Loja Forn/Client Entrada
- CJM_ITEFIM Código do Item
- CJM_PRDINT Produto Intermediario
- CJM_ICMUNT ICMS Unitario da memória de calculo
Dicionário
Estrutura está no pacote 010843 - $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Cod_Lanc_Estrutura_Prod/Dicionario
Funções
- Função Static Function ValOperPri, - Adicionado o novo operando : VLR_ICMS_ULT_AQUI_ESTRUTURA que será responsável em retornar o valor do ICMS calculado por Item da Nota de entrada do material utilizado para fabricação do PA que será vendido. Adicionado na STATIC aPesqEstr para receber dados do Produto da Estrutura , Quantidade da Estrutura e Quantidade Vendida.
Adicionado referencias Logicas para identificar o uso dos operandos necessários para composição do valor de estorno, tanto para produtos com estrutura quanto para produtos para revenda. - Função GetCompUltAq - Com a inteligência de Rastrear o Produto PA no pedido de venda, buscar na SD1 e na SG1 a estrutura de Produto que originou a produção do PA ,recuperar o valor unitário do ICMS da Ultima Aquisição para compor o Valor Total de ICMS que será vinculado por código de Lançamento de Estorno de Credito.
O Retorno dessa query , ira mapear a Ultima NF de Entrada de Aquisição, e gravar na variável nIcmsEst := (((Valor do ICMS NF ENTRADA MP / QTD Adquirida MP )* QTD Utilizada na Produção) * Quantidade Vendida.
O valor da nIcmsEst será apresentado na planilha Financeira na ABA Código de Lançamento , que foi devidamente configurado na rotina FISA181 com uma Regra Tributaria.
Nessa função temos também a gravação da Ultima Nota de Entrada referente a aquisições de MP que foram utilizadas na produção do PA vendido, além das Informações da Nota de Saída e o valor do ICMS de Estorno que será utilizado. Essas informações serão gravadas na Tabela CJM; - Função GravaCJM - Recebe um array tratado dentro da função Getcompultaq, para efetuar a gravação dos dados na tabela CJM utilizando como base o metodo FWBulk().
- Função GetUltAq - Refatoração da query para TCgenQry2 e também foram adicionados novos campos para utilizar na gravação da CJM.
Também foram adicionados tratativas na função para que efetue a gravação da CJM chamando a função GravaCJM. - Função FISDELCJM - Essa função foi criada para no momento de exclusão do NF de Saída, o conteúdo gravado para aquela NF de Saída será excluído;
--------------------------------------------------------------------------------------------------------------------------------------
FISCOMPFOR - Concentrar todas as funções que criam e manipulam o componente de fórmulas do configurador de tributos.
Objetivo e Escopo:
Adicionar um nova opção de Operando para o cliente recuperar o valor do ICMS referente a compra das Matérias Primas utilizadas na Produção Acabado, que será vendido em operações Isentas com direito ao Estorno desse valor inicial , via Código de Lançamento.
Funções:
- Função FormOperPri - Acionado no array aCarga a nova opção:
aadd(aCarga,{"Valor do ICMS (Ultima Aquisição de Estrutura de Produto)" ,"VLR_ICMS_ULT_AQUI_ESTRUTURA"})
---------------------------------------------------------------------------------------------------------------------------------------
backoffice.fiscal.configurador.relatorioEstornocredito- Relatorio de conferencia Apuração do Estorno do ICMS de produtos com Estrutura e Revenda
Objetivo e Escopo:
Gerar um Relatório de conferencia com Base no que foi Gravado na CJM - Controle de Estorno de ICMS - Operando de Ultima Aquisição por Estrutura ou PA para para Revenda.
Ao utilizar os operando abaixo, iremos rastrear as Notas de Entrada que derem origem a compra de Produtos para Revenda e as matérias Primas que foram utilizadas na Estrutura de Produto n SG1
QUANTIDADE_ULT_AQUI
ICMS_ULT_AQUI
BASE_ICMS_ULT_AQUI
ALQ_ICMS_ULT_AQUI
VLR_ICMS_ULT_AQUI_ESTRUTURA
Após encontrar as ultima entradas , realizamos cálculos para gerar um valos de ICMS de Estorno que será gravado na CJM
Esse Relatório tem com objetivo ler essa tabela e trazer dados para conferencia.
Funções:
Esse relatório foi desenvolvido em TLPP
- relatorioEstornocredito - Monta a Estrutura de TRCELL para mapear as Notas de Saida e sua Entrada que originou o valor do Estorno
- ReportPrint - Realiza a query com CJM e CDA para relacionar os campos que serão utilizados na Impressão
- seletorFilial - Função responsabel por abrir a tela de selecão de Filiais,