Árvore de páginas


Artefatos

Fontes

  • FISA315.PRW 
  • RETNFCANC.TLPP
  • SPEDFISCAL
  • SPEDXFUN
  • FISXAPUR
  • SPEDXDEF
  • MATA953
  • MATA95xDEF

Localizados na GITEA: https://code.engpro.totvs.com.br/totvs-fiscal/livros_fiscais/src/branch/DSERFIS3-9197_Cria_consulta_notas_canceladas_periodo_atual_emissoes_periodo_anterior

Dicionário

Dicionário - 013686_JCA_Acumulado

FISA315 - Cadastro de Regra de Apuração

Objetivo e escopo

Objetivo desta rotina é efetuar um cadastro de regra de Apuração , vinculando a uma Regra de Documentos Fiscais que será criada pelo usuário conforme sua escrituração e com isso identicando o valor do Tributo da nota Cancelada e o Codigo de Lançamento que irá realizar esse estorno com base  na nota Substituta.

Dessa forma com esse cadastro iremos:

  • Identificar a nota/BP-e anterior cancelada
  • Identificar o valor do tributo selecionado
  • Gerar a apuração
  • Escriturar no E111/E113


Tabelas

CJV  com as informações do cabeçalho do Cadastro de Regra de Apuração, onde temos os campos:

  1. CJV_CODREG - Código da Regra
  2. CJV_DESCR  - Descrição da Regra de Apuração
  3. CJV_VIGINI - Data Inicio da Vigência da Regra
  4. CJV_VIGFIM - Data Fim da Vigência da Regra.
  5. CJV_ID    - Que Relaciona com a Tabela CJW - Itens da Regra de Ajuste de Apuração.



SX3_CJV.rpt

CJw -Regra de Apuração- Itens , onde iremos relacionar quais códigos de lançamento, Regra de Apuração, Origem do Tributo e vigência  

  1. CJW_FILIAL - Filial do Sistema: Grava a filial onde ocorreu a inclusão do registro - Grupo de campo 033.

  2. CJW_ID - ID do Cadastro: Gera um ID com MD5 utilizando a função FWUUIDV1().

  3. CJW_ID_CAB - ID do Cabeçalho.

  4. CJW_REGAPU - Regra de Apuração: Retorna a opção 01 - Nota Cancelada através da função XRegraApu, onde o cliente informa qual situação deve ser considerada para buscar o valor do tributo e amarrar com o código de lançamento informado.

  5. CJW_CODTAB - Tabela de Lançamento: Este campo disponibiliza 2 tabelas de lançamento (5.1.1 - CDO, 5.2 - CDY).

  6. CJW_CODLAN - Código de Lançamento: A tabela selecionada no campo CJW_CODLAN atualiza a consulta padrão, retornando os códigos de lançamento de cada tabela.

  7. CJW_VIGINI - Data Início Vigência Apuração: O usuário informa a data de início da vigência do código de lançamento, que consta nos arquivos TXT baixados no site da http://sped.rfb.gov.br/.

  8. CJW_VIGFIM - Data Final Vigência Apuração: O usuário informa a data de término da vigência do código de lançamento, que consta nos arquivos TXT baixados no site da http://sped.rfb.gov.br/.

  9. CJW_ORIVLR - Origem do Tributo: O usuário informa qual foi a forma usada para escriturar: 01 - Configurador de Tributos; 02 - Sistema Legado.

  10. CJW_TRIB - Tributo do Configurador: Selecione a regra que está amarrada com o tributo configurado para utilizar na escrituração.

  11. CJW_VALOR - Considerar Valor: Selecione qual valor será buscado: Valor Tributado, Outros, Isento, Diferido, Base, Alíquota.

  12. CJW_TRILEG - Tributo Legado: Este campo é habilitado quando o campo CJW_ORIVLR for igual a 02 - Legado, e com isso o usuário poderá selecionar qual tributo deverá ser considerado para buscar o valor.




SX3_CJW.rpt


Criação da Tela em MVC com estrutura de ABAS (FOLDERs), foi estruturado em 2 modelos - MASTER e GRID.

  1. MASTER - Tabela CJV
    1. VIEW_CAB
  2. GRID - Tabela CJW
    1.  VIEW_LANC
      1. Campos:  CJW_CODTAB|CJW_CODLAN|CJW_VIGINI|CJW_VIGFIM
    2. VIEW_VLR
      1. Campos: CJW_CODLAN|CJW_REGAPU|CJW_ORIVLR|CJW_TRIB|CJW_VALOR|CJW_TRILEG
  3. Consulta Padrão

    1. Campo CJW_TRIB - Utilizando a Consulta Padrão - F2B3
    2. Campo CJW_VALOR  - Considera Valor ICMS     - CIN3  ( Nova Consulta Criada)

  4. Funções de COMBOBOX
    1. X315ChgF3 - Função para alterar a consulta padrão do campo CJW_CODTAB onde irá 
      trazer a tabela 5.1.1

    2. XTabLanc - Função para Retornar conteudo para combo do campo CJW_CODTAB
    3. XRegraApu - Função para Retornar conteudo para combo do campo CJW_REGAPU
    4. XOrigVlr - Função para Retornar conteudo para combo do campo CJW_ORIVLR
    5. XTribLeg - Função para Retornar conteudo para combo do campo CJW_TRILEG

  5. Funções de Validações:
    1. Função VigIniFIm que verifica se data inicial e data final já existem no cadastro de regras.
    2. 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.
    3. EdtTRIB-  Função para ler o conteudo o campo CJW_ORIVLR e tratar o prenchimento do campo CJW_TRIB,
      quando este for Trbuto Legado.
    4. EdtTrileg - Função para ler o conteudo o campo CJW_ORIVLR e tratar o prenchimento do campo CJW_TRILEG,
      quando este for Configurador de Tributos
    5. VldCodigo - Validação do código da regra, para não aceitar caracteres especiais no codigo
    6. Fsa315MCpo - Função que valida os campos, quando alterar o conteudo do CJW_CODTAB, limpar os campos
      CODLAN,e Data de Vigencia.
    7. Fsa315M2Cpo - Função que valida os campos, quando alterar o conteudo do CJW_REGAPU, limpa o campo
      CJW_TRIB, CJW_VALOR e CJW_TRILEG  
    8. Fsa315M3Cpo - Função que valida os campos, quando alterar o conteudo do CJW_ORIVLR, limpa o campo
      CJW_TRIB, CJW_VALOR e CJW_TRILEG
    9. ValidLanc - Função que valida que o Codigo de Lançamento informado consta nas tabelas
      CDO e CDY.

Relacionamento

  • CJV (CJV_ID),  com o campo CJW_ID_CAB
  • F2B (F2B_REGRA), com o campo CJW_TRIB
  • CIN (CIN_CODIGO)  com os campos CJW_VALOR

Automação

  • Case
    • $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Cases/FISCadRegraApurTestCase.PRW
  • Group
    • $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Group/FISCadTestGroup.prw
  • Suite
    • $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Suites/FISCadTestSuite.prw

---------------------------------------------------------------------------------------------------------------------------

RETNTCANC -     Função que filtrar as notas emitidas em períodos anteriores e canceladas 
    no período atual, a fim de facilitar o processamento de estorno ou crédito.


Objetivo e escopo

A função BuscaLanc e tem como objetivo buscar os lançamentos de ajuste e as notas fiscais de saída canceladas em um determinado período. Essas informações são utilizadas no processamento de estorno ou crédito, além de compor a apuração do ICMS e gravar na tabela CDA.

A função recebe dois parâmetros: dDtIni, que representa a data de início do período, e aRegApur, que é um array com os códigos de lançamento e outras informações relacionadas à apuração do ICMS.

A função começa inicializando algumas variáveis locais, como nCount e nCountNf, que serão utilizadas para percorrer os arrays de lançamentos e notas fiscais canceladas, respectivamente. Também são criados arrays vazios, como aLancAjuste e aCDAIC, que serão preenchidos com os dados encontrados.

Em seguida, a função chama a função RetNfCanc para obter as notas fiscais canceladas no período especificado. Essa função retorna um array chamado aNfCanc.

A função BuscaLanc percorre os arrays aRegApur e aNfCanc utilizando loops for. Para cada combinação de lançamento de ajuste e nota fiscal cancelada, são realizadas algumas operações.

Primeiro, são extraídas informações relevantes da nota fiscal cancelada, como número, série, cliente/fornecedor, loja, valor do ICMS, espécie e tipo de movimento. Essas informações são armazenadas em variáveis locais.

Em seguida, é verificado se o código de lançamento é igual ao código de lançamento anterior. Se for diferente, é adicionado um novo item ao array aLancAjuste contendo o código de lançamento, a descrição do destino, o valor acumulado do ICMS e a base de cálculo do ICMS. Caso contrário, os valores acumulados são atualizados.

Depois disso, é construída uma chave única chamada cChaveCDA que será utilizada para buscar registros na tabela CDA. Essa chave é composta pelo tipo de movimento, espécie, fórmula, número da nota fiscal, série, cliente/fornecedor, loja e número do item.

Em seguida, é feita uma busca na tabela CDA utilizando a chave cChaveCDA. Se o registro for encontrado, é realizado um loop para excluir todos os registros encontrados com a mesma chave. Em seguida, é adicionado um novo registro na tabela CDA com os dados atualizados.

Caso o registro não seja encontrado na tabela CDA, é adicionado um novo registro com os dados informados.

Após percorrer todos os lançamentos e notas fiscais canceladas, é fechado o objeto oBulk, que é responsável por inserir os registros na tabela CDA. Em seguida, é criado um novo array chamado aCDAIC que irá compor a apuração do ICMS.

Por fim, a função retorna o array aCDAIC, que contém os lançamentos de ajuste e as notas fiscais de saída canceladas para a apuração do ICMS.


Função RetNfCanc 

Objetivo e escopo 

Função que filtrar as notas emitidas em períodos anteriores e canceladas no período atual, a fim de facilitar o processamento de estorno ou crédito.

Retorna uma query na SFT

SELECT
    FT_FILIAL,
    FT_NFISCAL,
    FT_SERIE,
    FT_ESPECIE,
    FT_CLIEFOR,
    FT_TIPOMOV,
    FT_ITEM,
    FT_FORMUL,
    FT_BASEICM,
    FT_ALIQICM,
    FT_LOJA,
    FT_CFOP,
    FT_DTCANC,
    FT_VALICM,
    R_E_C_N_O_ SFTRECNO
FROM
    SFTT10 SFT
WHERE
    SFT.FT_FILIAL = 'XIFIS26 '
    AND SFT.FT_CFOP >= '5'
    AND SFT.FT_ESPECIE = 'BPE'
    AND SFT.FT_TIPOMOV = 'S'
    AND FT_ENTRADA < '20240501'
    AND FT_DTCANC BETWEEN '20240501'
    AND '20240531'
    AND SFT.D_E_L_E_T_ = ' '


RetRegApu 

Objetivo e escopo 

Retornar os Codigos de Lançamento x Regra de Tributo e valor a ser estornado, cadastrados na rotina FISA315

Query

SELECT
    CJW.CJW_FILIAL,
    CJW.CJW_CODTAB,
    CJW.CJW_CODLAN,
    CJW.CJW_TRIB,
    CJW.CJW_REGAPU,
    CJW.CJW_TRILEG,
    CJW.CJW_VALOR,
    CJV.CJV_CODREG,
    CDO.CDO_DESCR,
    CDY.CDY_DESCR
FROM
    CJVT10 CJV
    INNER JOIN CJWT10 CJW ON(
        CJW.CJW_FILIAL = 'XIFIS26 '
        AND CJW.CJW_ID_CAB = CJV.CJV_ID
        AND CJV.D_E_L_E_T_ = ' '
    )
    LEFT JOIN CDOT10 CDO ON(
        CDO.CDO_FILIAL = 'XIFIS   '
        AND CDO.CDO_CODAJU = CJW.CJW_CODLAN
        AND CDO.D_E_L_E_T_ = ' '
    )
    LEFT JOIN CDYT10 CDY ON(
        CDY.CDY_FILIAL = 'XIFIS26 '
        AND CDY.CDY_CODAJU = CJW.CJW_CODLAN
        AND CDY.D_E_L_E_T_ = ' '
    )
WHERE
    CJV.CJV_FILIAL = 'XIFIS26 '
    AND '20240501' >= CJV.CJV_VIGINI
    AND (
        '20240531' <= CJV.CJV_VIGFIM
        OR CJV.CJV_VIGFIM = ''
    )
    AND CJW.D_E_L_E_T_ = ''
ORDER BY
    CJW.CJW_REGAPU




BuscaLanc

Objetivo e escopo

Função que busca os lançamentos de ajuste e  as notas fiscais de saída canceladas no período atual, a fim de facilitar o processamento de estorno ou crédito.

Gerando um array com os lançamentos de ajuste e as notas fiscais de saída canceladas para lançar na apuração de ICMS e gravar na tabela CDA.    

Campos da CDA, que serão gravados com dados da SFT e dados da CJW.
"CDA_FILIAL"
"CDA_TPMOVI"
"CDA_ESPECI"
"CDA_NUMERO"
"CDA_SERIE "
"CDA_CLIFOR"
"CDA_LOJA  "
"CDA_CODLAN"
"CDA_VALOR "
"CDA_ORIGEM"
"CDA_NUMITE"
"CDA_CALPRO"
"CDA_FORMUL"
"CDA_BASE"
"CDA_ALIQ"
"CDA_TPLANC"
"CDA_SDOC"
"CDA_SEQ"
-----------------------------------------------------------------------------------------------------------------------------

LancAjuste - Criado o Json jLancAjuste que será utilizado para montar as informações que serão utilizados no aCDAIC para apuração do ICMS:

 jLancAjuste[cCodLan] := {"CDA_CODLAN": cCodLan,;     //0 - Código do Ajuste
                                 "CDA_DESCR": cDescLanc,;    //1 - Descrição destino
                                 "CDA_VALOR": cValIcm,;      //6 - Valor Acumulado
                                 "CDA_BASE": cBaseIcm}       //11 - Base ICM


---------------------------------------------------------------------------------------------------------------------------

DelCDA - Esta função deleta registros de uma tabela CDA 

Função Deleta a CDA das notas canceladas na SFT do periodo anterior com origem 6 e data de cancelamento.
Essa função e chamada no BUSCALANC antes da chamada da função RetNfCanc.


---------------------------------------------------------------------------------------------------------------------------

ConvModxEsp - Função para converter modelo de nota em espécie

Função criada pelo time de escrita para maxima e retornar a especie, utilizamos ela nas query onde preciso filtrar o modelo 63 (BPe)

Nas funções -RetNfCanc e  RetCdaLanc.

---------------------------------------------------------------------------------------------------------------------------

MATA953 - Apuração de ICMS

Objetivo e escopo


As chamadas RetRegApu e BuscaLanc são funções que estão sendo utilizadas no código fornecido C:\Fontes_Azure_Gitea\livros_fiscais\Livros Fiscais\Retnfcanc.prw . 


Adicionamos na função a953Apura a chamada das funções abaixo , porem foi preciso realizar proteções de dicionario

Criamos a validação

lBuscaLanc   := FindFunction("BuscaLanc") .and. FindFunction("RetRegApu")


if lUsaSped .and. lBuscaLanc .and. aApurSX2[AI_CJV].and. aApurSX2[AI_CJW]
    aRegApur:= RetRegApu(dDtIni)
    if Len(aRegApur) > 0
        BuscaLanc(dDtIni,@aRegApur,@aCDAIC, cNrLivro)
    endif
Endif


RetRegApu: Essa função recebe um parâmetro dDtIni e retorna um array de registros de apuração. O objetivo dessa função é obter os registros de apuração com base na data de início da apuração de ICMS (dDtIni).

BuscaLanc: Essa função recebe dois parâmetros, dDtIni e @aRegApur. Ela retorna um array de lançamentos. O objetivo dessa função é buscar os lançamentos X Cadastro na CJW relacionados aos registros de apuração fornecidos e inserir na apuração os valores da notas canceladas e adicionar na apuração com

o codigo de lançamento cadastrado na FISA315.

Essas funções estão sendo utilizadas da seguinte maneira:

Nesse trecho de código, primeiro é feita uma verificação condicional para garantir que as variáveis lRetNfCanc, aApurSX2[AI_CJV] e aApurSX2[AI_CJW] sejam verdadeiras. Se todas forem verdadeiras, a função RetRegApu é chamada passando o valor de dDtIni como parâmetro.

O resultado é armazenado na variável aRegApur.

Em seguida, é verificado se o tamanho do array aRegApur é maior que zero. Se for, significa que foram encontrados registros de apuração. Nesse caso, a função BuscaLanc é chamada passando dDtIni e o array @aRegApur como parâmetros. O resultado é armazenado na variável aCDAIC.

Este array ira ser utilizado para lancar os valores das notas canceladas , codigo de lançamento e Descrição do Codigo de Lançamento, alem de gerar uma CDA que será utilizada pra gerar os Registros E113.



FISA315 - Cadastro de Regra de Apuração

Objetivo e escopo

Objetivo desta rotina é efetuar um cadastro de regra de Apuração , vinculando a uma Regra de Documentos Fiscais que será criada pelo usuário conforme sua escrituração e com isso identicando o valor do Tributo da nota Cancelada e o Codigo de Lançamento que irá realizar esse estorno com base  na nota Substituta.

Dessa forma com esse cadastro iremos:

  • Identificar a nota/BP-e anterior cancelada
  • Identificar o valor do tributo selecionado
  • Gerar a apuração
  • Escriturar no E111/E113


Tabelas

CJV  com as informações do cabeçalho do Cadastro de Regra de Apuração, onde temos os campos:

  1. CJV_CODREG - Código da Regra
  2. CJV_DESCR  - Descrição da Regra de Apuração
  3. CJV_VIGINI - Data Inicio da Vigência da Regra
  4. CJV_VIGFIM - Data Fim da Vigência da Regra.
  5. CJV_ID    - Que Relaciona com a Tabela CJW - Itens da Regra de Ajuste de Apuração.



SX3_CJV.rpt

CJw -Regra de Apuração- Itens , onde iremos relacionar quais códigos de lançamento, Regra de Apuração, Origem do Tributo e vigência  

  1. CJW_FILIAL - Filial do Sistema: Grava a filial onde ocorreu a inclusão do registro - Grupo de campo 033.

  2. CJW_ID - ID do Cadastro: Gera um ID com MD5 utilizando a função FWUUIDV1().

  3. CJW_ID_CAB - ID do Cabeçalho.

  4. CJW_REGAPU - Regra de Apuração: Retorna a opção 01 - Nota Cancelada através da função XRegraApu, onde o cliente informa qual situação deve ser considerada para buscar o valor do tributo e amarrar com o código de lançamento informado.

  5. CJW_CODTAB - Tabela de Lançamento: Este campo disponibiliza 2 tabelas de lançamento (5.1.1 - CDO, 5.2 - CDY).

  6. CJW_CODLAN - Código de Lançamento: A tabela selecionada no campo CJW_CODLAN atualiza a consulta padrão, retornando os códigos de lançamento de cada tabela.

  7. CJW_VIGINI - Data Início Vigência Apuração: O usuário informa a data de início da vigência do código de lançamento, que consta nos arquivos TXT baixados no site da http://sped.rfb.gov.br/.

  8. CJW_VIGFIM - Data Final Vigência Apuração: O usuário informa a data de término da vigência do código de lançamento, que consta nos arquivos TXT baixados no site da http://sped.rfb.gov.br/.

  9. CJW_ORIVLR - Origem do Tributo: O usuário informa qual foi a forma usada para escriturar: 01 - Configurador de Tributos; 02 - Sistema Legado.

  10. CJW_TRIB - Tributo do Configurador: Selecione a regra que está amarrada com o tributo configurado para utilizar na escrituração.

  11. CJW_VALOR - Considerar Valor: Selecione qual valor será buscado: Valor Tributado, Outros, Isento, Diferido, Base, Alíquota.

  12. CJW_TRILEG - Tributo Legado: Este campo é habilitado quando o campo CJW_ORIVLR for igual a 02 - Legado, e com isso o usuário poderá selecionar qual tributo deverá ser considerado para buscar o valor.




SX3_CJW.rpt


Dicionário - 013583


Fontes

FISA315.PRW

Localizados na GITEA: https://code.engpro.totvs.com.br/totvs-fiscal/livros_fiscais/src/branch/DSERFISE-9196_Criar_cadastro_Controle_Regra_Apuracao

Criação da Tela em MVC com estrutura de ABAS (FOLDERs), foi estruturado em 2 modelos - MASTER e GRID.

  1. MASTER - Tabela CJV
    1. VIEW_CAB
  2. GRID - Tabela CJW
    1.  VIEW_LANC
      1. Campos:  CJW_CODTAB|CJW_CODLAN|CJW_VIGINI|CJW_VIGFIM
    2. VIEW_VLR
      1. Campos: CJW_CODLAN|CJW_REGAPU|CJW_ORIVLR|CJW_TRIB|CJW_VALOR|CJW_TRILEG
  3. Consulta Padrão

    1. Campo CJW_TRIB - Utilizando a Consulta Padrão - F2B3
    2. Campo CJW_VALOR  - Considera Valor ICMS     - CIN3  ( Nova Consulta Criada)

  4. Funções de COMBOBOX
    1. X315ChgF3 - Função para alterar a consulta padrão do campo CJW_CODTAB onde irá 
      trazer a tabela 5.1.1 ou 5.2

    2. XTabLanc - Função para Retornar conteudo para combo do campo CJW_CODTAB
    3. XRegraApu - Função para Retornar conteudo para combo do campo CJW_REGAPU
    4. XOrigVlr - Função para Retornar conteudo para combo do campo CJW_ORIVLR
    5. XTribLeg - Função para Retornar conteudo para combo do campo CJW_TRILEG

  5. Funções de Validações:
    1. Função VigIniFIm que verifica se data inicial e data final já existem no cadastro de regras.
    2. 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.
    3. EdtTRIB-  Função para ler o conteudo o campo CJW_ORIVLR e tratar o prenchimento do campo CJW_TRIB,
      quando este for Trbuto Legado.
    4. EdtTrileg - Função para ler o conteudo o campo CJW_ORIVLR e tratar o prenchimento do campo CJW_TRILEG,
      quando este for Configurador de Tributos
    5. VldCodigo - Validação do código da regra, para não aceitar caracteres especiais no codigo
    6. Fsa315MCpo - Função que valida os campos, quando alterar o conteudo do CJW_CODTAB, limpar os campos
      CODLAN,e Data de Vigencia.
    7. Fsa315M2Cpo - Função que valida os campos, quando alterar o conteudo do CJW_REGAPU, limpa o campo
      CJW_TRIB, CJW_VALOR e CJW_TRILEG  
    8. Fsa315M3Cpo - Função que valida os campos, quando alterar o conteudo do CJW_ORIVLR, limpa o campo
      CJW_TRIB, CJW_VALOR e CJW_TRILEG
    9. ValidLanc - Função que valida que o Codigo de Lançamento informado consta nas tabelas
      CDO e CDY.

Relacionamento

  • CJV (CJV_ID),  com o campo CJW_ID_CAB
  • F2B (F2B_REGRA), com o campo CJW_TRIB
  • CIN (CIN_CODIGO)  com os campos CJW_VALOR

Automação

  • Case
    • $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Cases/FISCadRegraApurTestCase.PRW
  • Group
    • $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Group/FISCadTestGroup.prw
  • Suite
    • $/Protheus_Padrao/Fontes_Doc/Inovação/V12/Livros Fiscais - Configurador/Codigo de Ajuste SPED/Automaçao/Suites/FISCadTestSuite.prw

---------------------------------------------------------------------------------------------------------------------------

RETNTCANC -     Função que filtrar as notas emitidas em períodos anteriores e canceladas 
    no período atual, a fim de facilitar o processamento de estorno ou crédito.


Objetivo e escopo

A função BuscaLanc e tem como objetivo buscar os lançamentos de ajuste e as notas fiscais de saída canceladas em um determinado período. Essas informações são utilizadas no processamento de estorno ou crédito, além de compor a apuração do ICMS e gravar na tabela CDA.

A função recebe dois parâmetros: dDtIni, que representa a data de início do período, e aRegApur, que é um array com os códigos de lançamento e outras informações relacionadas à apuração do ICMS.

A função começa inicializando algumas variáveis locais, como nCount e nCountNf, que serão utilizadas para percorrer os arrays de lançamentos e notas fiscais canceladas, respectivamente. Também são criados arrays vazios, como aLancAjuste e aCDAIC, que serão preenchidos com os dados encontrados.

Em seguida, a função chama a função RetNfCanc para obter as notas fiscais canceladas no período especificado. Essa função retorna um array chamado aNfCanc.

A função BuscaLanc percorre os arrays aRegApur e aNfCanc utilizando loops for. Para cada combinação de lançamento de ajuste e nota fiscal cancelada, são realizadas algumas operações.

Primeiro, são extraídas informações relevantes da nota fiscal cancelada, como número, série, cliente/fornecedor, loja, valor do ICMS, espécie e tipo de movimento. Essas informações são armazenadas em variáveis locais.

Em seguida, é verificado se o código de lançamento é igual ao código de lançamento anterior. Se for diferente, é adicionado um novo item ao array aLancAjuste contendo o código de lançamento, a descrição do destino, o valor acumulado do ICMS e a base de cálculo do ICMS. Caso contrário, os valores acumulados são atualizados.

Depois disso, é construída uma chave única chamada cChaveCDA que será utilizada para buscar registros na tabela CDA. Essa chave é composta pelo tipo de movimento, espécie, fórmula, número da nota fiscal, série, cliente/fornecedor, loja e número do item.

Em seguida, é feita uma busca na tabela CDA utilizando a chave cChaveCDA. Se o registro for encontrado, é realizado um loop para excluir todos os registros encontrados com a mesma chave. Em seguida, é adicionado um novo registro na tabela CDA com os dados atualizados.

Caso o registro não seja encontrado na tabela CDA, é adicionado um novo registro com os dados informados.

Após percorrer todos os lançamentos e notas fiscais canceladas, é fechado o objeto oBulk, que é responsável por inserir os registros na tabela CDA. Em seguida, é criado um novo array chamado aCDAIC que irá compor a apuração do ICMS.

Por fim, a função retorna o array aCDAIC, que contém os lançamentos de ajuste e as notas fiscais de saída canceladas para a apuração do ICMS.


Função RetNfCanc 

Objetivo e escopo 

Função que filtrar as notas emitidas em períodos anteriores e canceladas no período atual, a fim de facilitar o processamento de estorno ou crédito.

Retorna uma query na SFT

SELECT
    FT_FILIAL,
    FT_NFISCAL,
    FT_SERIE,
    FT_ESPECIE,
    FT_CLIEFOR,
    FT_TIPOMOV,
    FT_ITEM,
    FT_FORMUL,
    FT_BASEICM,
    FT_ALIQICM,
    FT_LOJA,
    FT_CFOP,
    FT_DTCANC,
    FT_VALICM,
    R_E_C_N_O_ SFTRECNO
FROM
    SFTT10 SFT
WHERE
    SFT.FT_FILIAL = 'XIFIS26 '
    AND SFT.FT_CFOP >= '5'
    AND SFT.FT_ESPECIE = 'BPE'
    AND SFT.FT_TIPOMOV = 'S'
    AND FT_ENTRADA < '20240501'
    AND FT_DTCANC BETWEEN '20240501'
    AND '20240531'
    AND SFT.D_E_L_E_T_ = ' '


RetRegApu 

Objetivo e escopo 

Retornar os Codigos de Lançamento x Regra de Tributo e valor a ser estornado, cadastrados na rotina FISA315

Query

SELECT
    CJW.CJW_FILIAL,
    CJW.CJW_CODTAB,
    CJW.CJW_CODLAN,
    CJW.CJW_TRIB,
    CJW.CJW_REGAPU,
    CJW.CJW_TRILEG,
    CJW.CJW_VALOR,
    CJV.CJV_CODREG,
    CDO.CDO_DESCR,
    CDY.CDY_DESCR
FROM
    CJVT10 CJV
    INNER JOIN CJWT10 CJW ON(
        CJW.CJW_FILIAL = 'XIFIS26 '
        AND CJW.CJW_ID_CAB = CJV.CJV_ID
        AND CJV.D_E_L_E_T_ = ' '
    )
    LEFT JOIN CDOT10 CDO ON(
        CDO.CDO_FILIAL = 'XIFIS   '
        AND CDO.CDO_CODAJU = CJW.CJW_CODLAN
        AND CDO.D_E_L_E_T_ = ' '
    )
    LEFT JOIN CDYT10 CDY ON(
        CDY.CDY_FILIAL = 'XIFIS26 '
        AND CDY.CDY_CODAJU = CJW.CJW_CODLAN
        AND CDY.D_E_L_E_T_ = ' '
    )
WHERE
    CJV.CJV_FILIAL = 'XIFIS26 '
    AND '20240501' >= CJV.CJV_VIGINI
    AND (
        '20240531' <= CJV.CJV_VIGFIM
        OR CJV.CJV_VIGFIM = ''
    )
    AND CJW.D_E_L_E_T_ = ''
ORDER BY
    CJW.CJW_REGAPU




BuscaLanc

Objetivo e escopo

Função que busca os lançamentos de ajuste e  as notas fiscais de saída canceladas no período atual, a fim de facilitar o processamento de estorno ou crédito.

Gerando um array com os lançamentos de ajuste e as notas fiscais de saída canceladas para lançar na apuração de ICMS e gravar na tabela CDA.    

Campos da CDA, que serão gravados com dados da SFT e dados da CJW.
"CDA_FILIAL"
"CDA_TPMOVI"
"CDA_ESPECI"
"CDA_NUMERO"
"CDA_SERIE "
"CDA_CLIFOR"
"CDA_LOJA  "
"CDA_CODLAN"
"CDA_VALOR "
"CDA_ORIGEM"
"CDA_NUMITE"
"CDA_CALPRO"
"CDA_FORMUL"
"CDA_BASE"
"CDA_ALIQ"
"CDA_TPLANC"
"CDA_SDOC"
"CDA_SEQ"

Criado o Array aLancAjuste que será utilizado para montar as informações que serão utilizados no aCDAIC para apuração do ICMS:

(aLancAjuste ,{;
                    cCodLan,;                   //0 - Código do Ajuste
                    cDescLanc,;                //1 - Descrição destino
                    cValIcm,;                    //6 - Valor Acumulado
                    cBaseIcm})                //11 - Base ICM




---------------------------------------------------------------------------------------------------------------------------


SPEDFISCAL 


DelCDA - Esta função deleta registros de uma tabela onde o campo 'D_E_L_E_T_' não está marcado para exclusão e o campo 'CDA_ORIGEM' corresponde a um valor especificado.


A função DelCDA é usada para deletar registros de uma tabela com base em uma condição específica. A função é estática, o que significa que ela pertence à classe em vez de uma instância da classe.

A função começa inicializando duas variáveis locais: cQuery, que será usada para armazenar a consulta SQL que será executada, e oDelCDA, que será usada para preparar e executar a consulta SQL.

A consulta SQL é definida como "DELETE FROM ? WHERE D_E_L_E_T_ = ' ' AND CDA_ORIGEM = ?". Esta consulta deleta registros de uma tabela (que será especificada mais tarde) onde o campo 'D_E_L_E_T_' não está marcado para exclusão (ou seja, é igual a ' ') e o campo 'CDA_ORIGEM' corresponde a um valor específico (que também será especificado mais tarde).

A consulta SQL é preparada usando o método FWPreparedStatement():New(), que retorna um novo objeto PreparedStatement. A consulta é então definida no objeto PreparedStatement usando o método SetQuery.

Os parâmetros da consulta são definidos usando os métodos SetUnsafe e SetString do objeto PreparedStatement. O primeiro parâmetro é o nome da tabela "CDA", e o segundo parâmetro é a string "6".

Finalmente, a consulta é executada usando a função TCSqlExec, que executa uma consulta SQL fixa. A consulta fixa é obtida do objeto PreparedStatement usando o método GetFixQuery.

RetCdalan - Função que filtrar as notas emitidas em períodos anteriores e canceladas 
   no período atual, a fim de facilitar o processamento de estorno ou crédito.


A função RetCdaLanc é usada para retornar um alias para um conjunto de registros de uma consulta SQL, ou para fechar um alias existente. A função recebe quatro parâmetros: cCodLan, cAliasCDA, dDtIni e lOption.

A variável cQuery é usada para armazenar a consulta SQL que será executada. A consulta SQL é uma junção de duas tabelas, CDA e SFT.  A consulta também agrupa e ordena os resultados.

A variável oMontQry é usada para armazenar o objeto de consulta SQL. Se lOption for verdadeiro, a consulta SQL é preparada e executada, e um alias para o conjunto de registros resultante é aberto e retornado. Se lOption for falso, o alias fornecido é fechado.

Os métodos SetUnsafe, SetString, SetIn e SetDate são usados para definir os parâmetros da consulta SQL. O método OpenAlias é usado para abrir um alias para o conjunto de registros resultante da consulta SQL. O método Destroy é usado para destruir o objeto de consulta SQL depois que o alias é aberto.

A função retorna o Alias cAliasCDA


RetApurE113 - Função que monta o registro E113 do SPED Fiscal para documento cancelados.


A função RetApurE113  é usada para retornar um array aE113Apur que contém informações sobre ajustes de apuração do ICMS. A função recebe seis parâmetros: aRegE110, aRegE113, aRegE111, cFilSA1, aRegApur e dDataDe do SPEDFISCAL

Inicialmente, a função define várias variáveis locais e cria um objeto JSON jRegE111. Em seguida, ela percorre o array aRegE111 e adiciona cada elemento ao objeto JSON jRegE111 com uma chave MD5.

A função então verifica se o array aRegApur contém algum elemento. Se sim, ela percorre o array aRegApur e para cada elemento, ela verifica se o objeto JSON jRegE111 contém uma propriedade com uma chave MD5 específica. Se sim, ela chama a função RetCdaLanc para retornar um alias cAliasCDA

A função então percorre aliascAliasCDA  retornado pela função RetCdaLanc e para cada registro, ela adiciona um array de informações ao array aRegE113 e avança para o próximo registro. Quando todos os registros foram processados, ela chama a função RetCdaLanc novamente para fechar o alias.

Finalmente, a função adiciona o array aRegE113 e outras informações ao array aE113Apur, libera o objeto JSON jRegE111 e retorna o array aE113Apur.