Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Histórico

Em cada UF é normal ter uma obrigação acessória onde são informados os dados fiscais de entradas e saídas referente à Apuração de ICMS. Em cada UF há um nome específico, mas geralmente é nomeado como GIA. Em Alagoas o nome dessa obrigação é DAC. A partir da versão 7.18, foi implementado no SisPetro a geração do arquivo para atender o layout da DAC de Alagoas.

Solução

Dados cadastrais

Antes da geração do arquivo, precisaremos garantir a existência de alguns dados/configurações. São elas:

  • Cadastro de Produtos: Ter um Código do Produto para Alagoas
  • Tipo de Apuração: Criar um campo "Tipo DAC-AL", que será utilizado para classificar os Outros Débitos/Créditos no Registro 33, com as seguintes opções:
    • Transferência de Créditos Acumulados
    • Outros débitos
    • ICMS Antecipado ICMS antecipado
    • Crédito Presumido
    • Crédito presumido Art 21
    • Crédito Ativo Imobilizado
    • Crédito Transferência
    • ICMS Importação
    • ICMS Restituição
    • Outros créditos
  • Configuração da Empresa:
    • Já temos um campo Número da AIDF (Autorização para Impressão de Docto. Fiscal), porém está num grupo DIC/SE. Mudar caption do grupo para DIC-SE/DAC-AL.
    • Na aba "Contab.Real" criar um grupo "DAC/AL" e acrescentar as seguintes contas contábeis reais (com possibilidade de limpar):
      • Ativo Circulante
      • Disponibilidades
      • Clientes
      • Outras Contas a Receber
      • Ativo Permanente
      • Ativo Imobilizao
      • Passivo Circulante
      • Fornecedores
      • Emprest./Financiamentos
      • Outras Contas a Pagar
      • Patrimônio Líquido
      • Total Passivo
      • Lucro Bruto
      • Lucro Líquido
Nota

Deve permitir informar contas sintéticas.

Informações

A DAC exige que cada município seja enviado com um código específico, porém já temos um campo "Código do Município (uso da UF)" na tabela de Cidades que pode ser utilizado para esse fim.

Tela para Geração do Arquivo

O Sispetro atende várias obrigações acessórias mensais de forma centralizada na tela do Sispetro Controladoria denominada "Geração Mídia GIA/GIM/DIME". Sendo assim, nessa tela deverá ser acrescentada uma aba "DAC-AL", que terá:

  • Campos individuais conforme tabela abaixo, que devem ser agrupados pelo Nº Registro (ver DIME):

    Campo

    Tipo

    Registro a ser utilizado

    Tipo de Retificação: Original ou Retificadora

    Combobox

    00

    Qtde de Empresas

    Numérico

    10

    Valor Contábil c/ ICMS Creditado Antecipado

    Valor

    21

    Valor Contábil c/ ICMS Debitado Antecipado

    Valor

    22

    Valor Contábil c/ ICMS Creditado Antecipado (Sudeste)

    Valor

    25

    Inscrição Estadual recebedor Transferência

    Texto

    34

    Número do Processo

    Texto

    34

    Valor da transferência

    Valor

    34

    Dispositivo Legal

    Texto

    34

    Código da Receita

    Texto

    41

    Data de Vencimento

    Data

    41

    Valor pago

    Valor

    41

    Data do Balanço

    Data

    65

    Merc. Trib. Inicial

    Valor

    65

    Merc. Trib. Final

    Valor

    65

    Merc. Não Trib. Inicial

    Valor

    65

    Merc. Não Trib. Final

    Valor

    65

    Merc. ST Inicial

    Valor

    65

    Merc. ST Final

    Valor

    65

    Outras Merc. Inicial

    Valor

    65

    Outras Merc. Final

    Valor

    65

    Apuração Lucro Bruto: Presumido ou Real

    Combobox

    65

    Sistema Inventário: Anual ou Periódico

    Combobox

    65

    Cálculo Estoque: Custo Médio ou PEPS

    Combobox

    65

    Outras Receitas

    Valor

    65

  • Ter um botão Valores contábeis (Registro 66) que abre uma tela com os campos abaixo, porém tendo os valores Inicial e Final:
    • Ativo Circulante
    • Disponibilidades
    • Clientes
    • Outras Contas a Receber
    • Ativo Permanente
    • Ativo Imobilizao
    • Passivo Circulante
    • Fornecedores
    • Emprest./Financiamentos
    • Outras Contas a Pagar
    • Patrimônio Líquido
    • Total Passivo
    • Lucro Bruto
    • Lucro Líquido
      Veja tela de exemplo:
Mockup
DAC_DadosContabeis
DAC_DadosContabeis
15

Na abertura da tela deverão ser sugeridos os valores de Saldo Inicial e Saldo Final das contas configuradas no perfil do Sistema.
O saldo de contas sintéticas deve ser coerente com o saldo apresentado na tela de Plano Contas Real.
Deve permitir que o usuário altere os valores.
No caso do usuário não clicar neste botão, ao confirmar a geração do arquivo, deve utilizar os valores que o sistema sugeriria. No caso do usuário clicar no botão deve usar os valores da tela (que podem ter sido alterados por ele).

  • Ter um botão Dados Energia (Registro 67) que apresenta uma tela com as seguintes características:
    • Um grid com Nº Medidor (caracter) e Consumo KWh (valor).
    • Botão Inclui, que abre outra tela para informações dos dados e ao retornar os apresenta no grid
    • Botão Exclui, que exclui o registro posicionado no grid.
  • Ter um botão Outras Despesas (Registro 68) similar ao Dados Energia, porém os dados a serem apresentados deve ser Código Despesa (caracter) e Valor (valor).
Aviso
  1. Todos os valores apresentados em tela deverão ser salvos na apuração através do botão Salva Apuração. Com isso, numa próxima geração os valores podem ser recuperados através do botão "Carrega da Apuração".
  2. Será necessário validar que o período informado seja do 1o. ao último dia do mês, para possibilitar a obten;áo dos saldos das contas contábeis. Sendo o saldo inicial correspondente ao saldo do mês imediatamente anterior à data inicial e o saldo final correspondente ao saldo do mês/ano em questão.
  3. Deverá ter apuração fiscal para o período informado.
Layout

O Layout será feito conforme o manual anexo e via Layout de Exportação.
Abaixo um resumo dos registros que deverão ser gerados:

Registro

Descrição

Sispetro?

Nº de linhas

Fonte de Dados

00

Cabeçalho

X

1

Configuração da Empresa

01

Emails

X

1

Configuração da Empresa

10

Identificador

X

1

Configuração da Empresa

21

Entradas

X

1 por CFOP

Livro Fiscal - Entradas

22

Saídas

X

1 por CFOP

Livro Fiscal - Entradas

23

Saídas Simplificadas

-

24

Saídas Diversas

-

25

Entradas Sul/Sudeste

X

1

Livro Fiscal - Entradas UFs SP,RJ,MG,SC,RS e PR

31

Apuração ICMS

X

1

Apuração Fiscal

32

Apuração ICMS

-

33

Outros Débitos/Créditos

X

1

Itens da Apuração Fiscal conforme configuração do Tipo de Apuração

34

Transferência Créditos

X

1

Tela

35

Apuração ICMS Simplificada

-

41

Obrigações Fiscais

X (uma obrigação)

1

Tela

42

Obrigações Fiscais pagas

-

43

Entradas Inter Forn. AL

X

1 por Fornecedor AL

Livro Fiscal - Entradas

44

Entradas Inter Forn. outras UFs

X

1 por Fornecedor fora AL

Livro Fiscal - Entradas

45

Notas Fiscais

X

Várias

Notas Emissão Própria

46

Notas Fiscais Canceladas

X

Várias

Notas Emissão própria canceladas

61

Municípios - Produtos

X

1 por Município de AL

Nota Fiscal

62

Municípios - Serviços

-

63

Entradas UFs

X

1 por UF

Livro Fiscal - Entradas

64

Saídas UFs

X

1 por UF

Livro Fiscal - Saídas

65

Estoque e Balanço

X

1

Tela

66

Dados Contábeis

X

1

Tela

67

Dados Energia

X

Várias

Tela

68

Despesas

X

Várias

Tela

70

Bombas

-

71

Bicos das Bombas

-

72

Lacres das Bombas

-

73

Encerrantes das Bombas

-

74

Estoque Combustível

-

90

Totalizador

X

1

-

Totais

O nome do layout a ser disponbilizado deve ser DAC_AL.rtm.

O arquivo é texto, com tamanho fixo para cada campo e cada registro deve ser gerado na sequencia, um abaixo do outro.

Dicas para Homologação

  • Garantir que tenha dados em todos os registros que serão gerados pelo Sispetro.
  • Conferir o saldo das contas utilizadas
  • Garantir salvamento e carregamento dos dados via tela
  • Ver performance. Lembrar que é um arquivo mensal, então não é tão imediato, mas não pode demorar minutos.
  • Testar cadastramento de novos produtos
  • Testar criação de empresa
  • Testar cópia de produto
  • Verificar se os novos campos (empresas e produto) estão disponíveis para pesquisa com F4

Detalhamento da Solução

Tela da GIA
Ter uma tabela LFiscalApuracaoDAC para salvar os dados informados em tela.
Ter uma tabela LFiscalApuracaoDACEnergia para salvar os dados de energia
Ter uma tabela LFiscalApuracaoDACDespesa para salvar os dados de Despesa

Layout de exportação

  • Ter um subreport para cada Registro
  • Os registros com 1 registro podem usar o pipeline da LFiscalApuracao
  • Ver como o arquivo DAC_AL.rtm já foi estruturado. Alguns subreports já foram iniciados.
  • Os campos que foram obtidos por tela devem utilizar a tabela LFiscalApuracaoDAC

Obtenção dos saldos das contas
Deve ser similar à Obtenção de saldo da Tela de Plano Contas Real.

  • Primeiro deve se pegar o prefixo da conta em questão, para isso veja a procedure do banco PegaPrefixoContaReal.
  • Depois se obtém o saldo passando esse prefixo via like (por exemplo 1111%). Veja código utilizado:
    Bloco de código
    
    select sum(SaldoFinal) SaldoInicial from PlanoContasRealSaldoAcumulado Acum 
    inner join PlanoContasReal Conta on Acum.SeqConta = Conta.SeqContaRed
    inner join Empresas e on e.CodEmpresa = Acum.SeqFilial
    where Conta.SeqConta like :conta and AnoMes = (select Max(AnoMes) from 
    PlanoContasRealSaldoAcumulado where SeqConta = Acum.SeqConta and 
    AnoMes < :anomes
    and (SeqFilial = Acum.SeqFilial))
    and (Acum.SeqFilial = :empresa3 or :empresa4 = 0)
    and (e.SeqGrupoEmpresa = :SeqGrupoEmpresa or :SeqGrupoEmpresa2 = 0) 
    and (Conta.Ativo = 1 )
    

Especificação

No Banco

Tabela Produto

  • Criar os campos abaixo

    Campo

    Tipo

    Comentário

    DAC_Codigo

    SmallInt

    Código do Produto na DAC

    Aviso

    Não esquecer de alterar os objetos de banco dependentes desse objeto de acordo com o documento Dependencias na Criação de Campos

Tabela LFiscalTipoApuracao

  • Criar os campos abaixo

    Campo

    Tipo

    Comentário

    DAC_Tipo

    SmallInt Default 0

    Tipo da DAC de Alagoas (ver classificação na unit SptMnTipoApuracao)

Tabela Sistema

  • Adicionar os campos abaixo

    Campo

    Tipo

    Comentário

    AtivoCirculante

    Integer

    Ativo Circulante

    Disponibilidade

    Integer

    Disponibilidade

    Clientes

    Integer

    Clientes

    OutrasContasReceber

    Integer

    Outras contas a receber

    AtivoPermanente

    Integer

    Ativo Permanente

    AtivoImobilizado

    Integer

    Ativo Imobilizado

    PassivoCirculante

    Integer

    Passivo Circulante

    Fornecedores

    Integer

    Fornecedores

    EmprestFinanciamento

    Integer

    Emprest./Financiamentos

    OutrasContasPagar

    Integer

    Outras Contas a Pagar

    PatrimonioLiquido

    Integer

    Patrimônio Líquido

    TotalPassivo

    Integer

    Total Passivo

    LucroBruto

    Integer

    Lucro Bruto

    LucroLiquido

    Integer

    Lucro Líquido

Bloquear Versões Anteriores

  • Incluir script bloqueando a execução de versões inferiores a versão 7.18 do SisPetro Normal, Remoto e Controladoria

Criar a tabela LFiscalApuracaoDAC

  • Campos
    • Em todos os campos de valor (Campos do Tipo ValorAbsoluto), colocar uma verificação no campo para não permitir valores negativos. Ver exemplo de validação abaixo:
Bloco de código
OutrasReceitas ValorAbsoluto Default 0 check(OutrasReceitas >= 0.00)

Campo

Tipo

Comentário

SequencialDAC

Integer PK AutoIncremento

Identificador do registro

Sequencial

Integer FK LFiscalApuracao

Identificador da Apuração

CodEmpresa

Integer FK LFiscalApuracao

Identificador da Apuração

TipoRetificacao

SmallInt Default 0

Registro 00, Tipo de Retificação: 0 - Original, 1 - Retificadora

QtdeEmpresas

Integer Default 0

Registro 10, Qtde de Empresas

VlrContabilICMSCreditadoAntecipado

ValorAbsoluto Default 0

Registro 21, Valor Contábil c/ ICMS Creditado Antecipado

VlrContabilICMSDebitadoAntecipado

ValorAbsoluto Default 0

Registro 22, Valor Contábil c/ ICMS Debitado Antecipado

VlrContabilICMSCreditadoAntecipadoSDST

ValorAbsoluto Default 0

Registro 25, Valor Contábil c/ ICMS Creditado Antecipado(Sudeste)

IERecebedorTransf

Char(09)

Registro 34, Inscrição Estadual do Recebedor da Transferência

NumeroProcesso

Char(14)

Registro 34, Número do Processo

VlrTransferencia

ValorAbsoluto Default 0

Registro 34, Valor da Transferência

DispositivoLegal

Char(100)

Registro 34, Dispositivo Legal

CodigoReceita

Char(05)

Registro 41, Código da Receita

DataVencimento

Date

Registro 41, Data de Vencimento

VlrPago

ValorAbsoluto Default 0

Registro 41, Valor Pago

DataBalanco

Date

Registro 65, Data do Balanço

MercTribInicial

ValorAbsoluto Default 0

Registro 65, Merc. Trib. Inicial

MercTribFinal

ValorAbsoluto Default 0

Registro 65, Merc. Trib. Final

MercNaoTribInicial

ValorAbsoluto Default 0

Registro 65, Merc. não Trib. Inicial

MercNaoTribFinal

ValorAbsoluto Default 0

Registro 65, Merc. não Trib. Final

MercSTInicial

ValorAbsoluto Default 0

Registro 65, Merc. ST Inicial

MercSTFinal

ValorAbsoluto Default 0

Registro 65, Merc. ST Final

OutrasMercInicial

ValorAbsoluto Default 0

Registro 65, Outras Merc. Inicial

OutrasMercFinal

ValorAbsoluto Default 0

Registro 65, Outras Merc. Final

ApuracaoLucroButro

SmallInt Defaul 0

Registro 65, Apuração Lucro Bruto: 0 - Presumido, 1 - Real

SistemaInventario

SmallInt Default 0

Registro 65, Sistema de Inventário: 0 - Anual, 1 - Periódico

CalculoEstoque

SmallInt Default 0

Registro 65, Cálculo do Estoque: 0 - Custo Médio, 1 - PEPS

OutrasReceitas

ValorAbsoluto Default 0

Registro 65, Outras Receitas

AtivoCirculanteInicial

ValorAbsoluto Default 0

Registro 66, Ativo Circulante Inicial

AtivoCirculanteFinal

ValorAbsoluto Default 0

Registro 66, Ativo Circulante Final

DisponibilidadesInicial

ValorAbsoluto Default 0

Registro 66, Disponibilidades Inicial

DisponibilidadesFinal

ValorAbsoluto Default 0

Registro 66, Disponibilidades Final

ClientesInicial

ValorAbsoluto Default 0

Registro 66, Clientes Inicial

ClientesFinal

ValorAbsoluto Default 0

Registro 66, Clientes Final

OutrasCReceberInicial

ValorAbsoluto Default 0

Registro 66, Outras Contas a Receber Inicial

OutrasCReceberFinal

ValorAbsoluto Default 0

Registro 66, Outras Contas a Receber Final

AtivoPermanenteInicial

ValorAbsoluto Default 0

Registro 66, Ativo Permanente Inicial

AtivoPermanenteFinal

ValorAbsoluto Default 0

Registro 66, Ativo Permanente Final

AtivoImobilizadoInicial

ValorAbsoluto Default 0

Registro 66, Ativo Imobilizado Inicial

AtivoImobilizadoFinal

ValorAbsoluto Default 0

Registro 66, Ativo Imobilizado Final

PassivoCirculanteInicial

ValorAbsoluto Default 0

Registro 66, Passivo Circulante Inicial

PassivoCirculanteFinal

ValorAbsoluto Default 0

Registro 66, Passivo Circulante Final

FornecedoresInicial

ValorAbsoluto Default 0

Registro 66, Fornecedores Inicial

FornecedoresFinal

ValorAbsoluto Default 0

Registro 66, Fornecedores Final

EmprestFinancInicial

ValorAbsoluto Default 0

Registro 66, Empréstimos/Financiamentos Inicial

EmprestFinancFinal

ValorAbsoluto Default 0

Registro 66, Empréstimos/Financiamentos Final

OutrasCPagarInicial

ValorAbsoluto Default 0

Registro 66, Outras Contas a Pagar Inicial

OutrasCPagarFinal

ValorAbsoluto Default 0

Registro 66, Outras Contas a Pagar Final

PatrimonioLiquidoInicial

ValorAbsoluto Default 0

Registro 66, Patrimonio Liquido Inicial

PatrimonioLiquidoFinal

ValorAbsoluto Default 0

Registro 66, Patrimonio Liquido Final

TotalPassivoInicial

ValorAbsoluto Default 0

Registro 66, Total Passivo Inicial

TotalPassivoFinal

ValorAbsoluto Default 0

Registro 66, Total Passivo Final

LucroBrutoInicial

ValorAbsoluto Default 0

Registro 66, Lucro Bruto Inicial

LucroBrutoFinal

ValorAbsoluto Default 0

Registro 66, Lucro Bruto Final

LucroLiquidoInicial

ValorAbsoluto Default 0

Registro 66, Lucro Líquido Inicial

LucroLiquidoFinal

ValorAbsoluto Default 0

Registro 66, Lucro Líquido Final

  • Índices

    Índice

    Campos

    LFiscalApuracaoDAC_ix01 (unique)

    Sequencial + CodEmpresa

    Aviso

    Deverá ser criada somente uma FK para a tabela LFiscalApuracao pelos campos Sequencial e CodEmpresa.

  • Criar rotinas de log para essa tabela
    Nota

    Utilizar a procedure CriaTriggerLog com os parâmetros padrões para criar esse log.

Criar a tabela LFiscalApuracaoDACEnergia

  • Campos

    Campo

    Tipo

    Comentário

    Sequencial

    Integer PK AutoIncremento

    Identificador do registro

    SequencialDAC

    Integer FK LFiscalApuracaoDAC(Delete Cascade)

    Identificador da DAC

    NumeroMedidor

    Integer Not Null

    Número do Medidor

    Consumo

    Quantidade Default 0

    Quantidade de Consumo em KWh

  • Índices

    Índice

    Campos

    LFiscalApuracaoDACEnergia_ix01 (unique)

    SequencialDAC + NumeroMedidor

Criar a tabela LFiscalApuracaoDACDespesa

  • Campos

    Campo

    Tipo

    Comentário

    Sequencial

    Integer PK AutoIncremento

    Identificador do registro

    SequencialDAC

    Integer FK LFiscalApuracaoDAC(Delete Cascade)

    Identificador da DAC

    CodigoDespesa

    Char(03) Not Null

    Código da Despesa

    Valor

    ValorAbsoluto Default 0 (Incluir validação para valor maior ou igual a zero)

    Valor Total das despesas que se enquadram neste código

  • Índices

    Índice

    Campos

    LFiscalApuracaoDACDespesa_ix01 (unique)

    SequencialDAC + CodigoDespesa

Tabela LFiscalApuracao

  • Criar trigger de AfterInsert para incluir um novo registro na tabela LFiscalApuracaoDAC.

Criar a procedure DACRegistro66

  • Parâmetros

    Parâmetro

    Tipo

    Comentário

    SequencialDAC

    Integer

    Código da DAC

    AnoMes

    Char(06)

    Ano/Mês a ser apurado no formado AAAAMM

  • Nessa procedure iremos popular os campos da tabela LFiscalApuracaoDAC, Registro 66
  • Regra
    • Com os campos da DAC incluídos na tabela Sistema, pegar o código da conta e executar os SQL abaixo, gravando o saldo inicial e final.
      Bloco de código
      
      Select if t.SaldoFinal < 0 then Cast(0 as ValorAbsoluto) else t.SaldoFinal endif as SaldoFinal,
             if t.SaldoInicial < 0 then Cast(0 as ValorAbsoluto) else t.SaldoInicial endif as SaldoInicial
      from (
             select isnull(sum(Acum.SaldoFinal),0) SaldoFinal, isnull(sum(Acum.SaldoInicial),0) SaldoInicial 
             from PlanoContasRealSaldoAcumulado Acum 
             inner join PlanoContasReal Conta on Acum.SeqConta = Conta.SeqContaRed
             inner join Empresas e on e.CodEmpresa = Acum.SeqFilial
             where Conta.SeqConta like :conta 
               and Acum.AnoMes = (select Max(a.AnoMes) 
                                  from PlanoContasRealSaldoAcumulado a
      				            where a.SeqConta = Acum.SeqConta 
      				              and a.AnoMes < :anomes
                                    and (a.SeqFilial = Acum.SeqFilial))
               and e.SeqGrupoEmpresa = :SeqGrupoEmpresa  
               and Conta.Ativo = 1 ) t
      
    • O parâmetro AnoMes foi passado a procedure
    • Com o SequencialDAC, pegar o código da empresa na tabela LFiscalApuracaoDAC e com o SQL abaixo, pegar o SeqGrupoEmpresa
      Bloco de código
      
      Select e.SeqGrupoEmpresa
      from Empresas e
      Where CodEmpresa = 1
      
    • Com o SQL abaixo, passando os campos de conta da tabela Sistema como SeqContaRed, pegar os prefixos das contas para utilizar no like
      Bloco de código
      
      Select PegaPrefixoContaReal(SeqConta)
      from PlanoContasReal
      Where SeqContaRed in (19, 216)  
      

No Delphi

SisPetro Normal

Unit ScgProd

  • Na aba Dados Adicionais
    • Criar o groupbox DAC
      • Dentro desse groupbox incluir a manutenção para o campo Produto.DAC_Codigo com o caption "Código na DAC"
        Aviso

        Não esquecer de associar o TLabel ao TEdit incluídos para manutenção desse campo para que seja possível a pesquisa com o F4.

Unit scgEmpr

  • Inclui na tblSistema os novos campos da DAC
  • Alterar o caption do componente gpbDIC_SE para "DIC-SE/DAC-AL"
  • Na aba Contab. Real
    • Incluir um groupbox com o caption "DAC/AL"
      • Dentro desse groupbox, incluir panelcomboquery para manutenção dos novos campos da tblSistema com relação a DAC
        • Os campos devem ter um panelcomboquery, seu caption deve ser o comentário do campo e ao lado do panelcomboquery, deve ser incluído um botão para limpar o conteúdo do campo. (ver componente btnLimpaSeqContabBaixaReceberUsu)
        • Esses panels precisam ter o seu evento onAbreJanelaPesquisa e onAntesExecutarQuery configurados igual ao componente pnlContaCli
          Aviso

          Esses eventos não devem ser feitos em cada panelcomboquery que estão sendo incluídos e sim associados aos eventos já existentes no componente pnlContaCli.

Aviso

Como esses campos são de Sistema, devem estar todos na cor Azul.

SisPetro Controladoria

Unit SptMnTipoApuracao

  • Incluir manutenção para o campo LFiscalTipoApuracao.DAC_Tipo
    • O caption desse campo deve ser "Tipo DAC-AL"
    • Deve conter os itens abaixo

      Valor

      Itens

      0

      Outros Créditos

      1

      Transferência de Créditos Acumulados

      2

      Outros Débitos

      3

      ICMS Antecipado

      4

      Crédito Presumido

      5

      Crédito Presumido Art 21

      6

      Crédito Ativo Imobilizado

      7

      Crédito Transferência

      8

      ICMS Importação

      9

      ICMS Restituição

      Nota

      Usar como modelo o campo insPrincipalTipoExportacao

Unit sptMain

  • Alterar o caption o item de menu mniGeracaoMidiaGia para "Geração Mídia &GIA/GIM/DIME/DAC"

Unit sptFunction

  • Criar a função PeriodoMesFechado
    • Essa função deverá receber 2 datas e retornar True caso as duas datas correspondam ao 1º e o ultimo dia do mês
    • Parâmetros

      Parâmetro

      E/S

      Tipo

      Comentário

      DataInicial

      E

      Data

      Data Inicial do Mês

      DataFinal

      E

      Data

      Data Final do Mês

      Result

      S

      Boolean

      Retornar true caso a data inicial e final sejam a data inicial e final do mês informado

      Dica

      Utilizar as funções StartOfTheMonth e EndOfTheMonth da unit DateUtils.

  • O mês e ano tambem devem ser os mesmo nas data informadas.
    Dica

    Utilizar as funções MonthOf e YearOf da unit DateUtils.

    Nota

    Documentar essa função na página Funções no Delphi.

Unit sptGeracaoMidiaGIA

Mockup
tbsDAC
tbsDAC
13
Aviso

Não permitir valores menores que zero. Criar uma procedure Valida e exibir os erros astravés de um TErroLista. Ver documento Criando validações com o TErroLista.

Nota

Utilizar a unit scg.scgOFExecutaEditaVolume como exemplo.

  • Abrir a DAC (LFiscalApuracaoDAC) correspondente a Apuração Selecionada.
    • Colocar uma query ligada a query qryApuracao
  • Os componentes para edição do Regitro 00 até o 65 devem ser componentes sem conexão com o banco de dados.
  • Incluir nessa tela 2 dataset temporário TdxMemData)
    • mdsDACRegistro67, como a estrutura e dados da tabela LFiscalApuracaoDACEnergia para a DAC selecionada.
    • mdsDACRegistro68, como a estrutura e dadis da tabela LFiscalApuracaoDACDespesa para a DAC selecionada.
    • Esses dois dataset's devem ser abertos e populados juntamente com a tabela LFiscalApuracaoDAC
  • Criar a procedure CarregaDAC
    • Se estiver na aba da DAC
      • Preencher os dados da DAC da tela com os dados da Apuracao selecionada
      • Preencher os dasets mdsDACRegistro67 e mdsDACRegistro68 com os dados da apuração selecionada.
  • Criar a procedure SalvaDAC
    • Salvar os dados da tela na tabela LFiscalApuracaoDAC (sobrepor os dados)
    • Salvar os dados da mdsDACRegistro67 na tabela LFiscalApuracaoDACEnergia.
      • Apagar os registro existentes
      • Incluir os registros
    • Salvar os dados da mdsDACRegistro68 na tabela LFiscalApuracaoDACDespesas
      • Fazer o mesmo processo da mdsDACRegistro67
  • Na procedure btnCarregaClick
    • Se estiver na aba de DAC, validar o período informado através da função PeriodoMesFechado, se retornar False, emitir a mensagem de erro "O período informado não corresponde ao período completo de um mês." e abortar o processo
    • Logo após a chamada da procedure CarregaDadosGim, se estiver na aba de DAC, chamar a procedure CarregaDAC
  • Na procedure btnSalvaClick
    • Se estiver na aba de DAC, validar o período informado através da função PeriodoMesFechado, se retornar False, emitir a mensagem de erro "O período informado não corresponde ao período completo de um mês." e abortar o processo
    • Após o Post da qryApuracao, se estiver na aba de DAC, chamar a procedure SalvaDAC
  • Botões
    • Registro 66, Deve abrir a janela especificada na unit sptLFiscalApuracaoDACSaldos.
      • Antes de abrir a janela, perguntar ao usuário se ele deseja carregar os saldos das contas, se sim, chamar a stored procedure DACRegistro66
        Nota

        Utilizar a função MessageDlgFutura, com a mensagem "Deseja calcular os valores dos saldo de contas(sobrepondo os atuais)? e com os botões Sim (Calcular Saldo de Contas, sobrepondo os valores atuais), Não (Carrega os Dados Atuais) e Cancelar (cancela esse processo)

    • Registro 67, deve abrir a janela especificada na unit sptLFiscalApuracaoDACEnergia
      • Quando fechar a janela aberta acima, os dados do seu dataset temporário devem ser repassados para o dataset dessa tela. O processo será assim, quando o usuário clicar no botão, deverá mandar os dados do dataset que foi aberto. Ao fechar a janela, os dados deveram ser devolvidos. Criar nessa unit uma função LoadDACEnergia que receba o dataset e atualize os valores.
    • Registro 68, deve abrir a janela especificada na unit sptLFiscalApuracaoDACDespesas
      • Quando fechar a janela aberta acima, os dados do seu dataset temporário devem ser repassados para o dataset dessa tela. O processo será assim, quando o usuário clicar no botão, deverá mandar os dados do dataset que foi aberto. Ao fechar a janela, os dados deveram ser devolvidos. Criar nessa unit uma função LoadDACDespesa que receba o dataset e atualize os valores.

Criar a unit sptLFiscalApuracaoDACEnergiaInclusao

Nota

As telas do SisPetro possuem um padrão visual, esse padrão deve ser mantido, nesse exemplo, eu coloquei que os botões precisam de imagem (TBitBtn) e no topo da página, sempre colocamos uma imagem compatível com a tela. Para pesquisar imagens, acessar a página do IconExperience

Mockup
DACRegistro67Inclusao
DACRegistro67Inclusao
13
  • Janela Herdade de TfrmDialog
  • Propertys

    Property

    Tipo

    Comentário

    NMedidor

    Integer

    Nº do Medidor

    Consumo

    Extended

    Consumo em KW/h

  • As propriedades quando lidas, devem ler o conteúdo dos componentes de tela.
  • As propriedades quando gravadas, devem ter o seu valor passado para os componentes de tela.
    Aviso

    Não é necessário criar várias privatas para esses controles. Utilizar diretamente os métodos Get e Set das propriedades.

    Aviso

    Não permitir valores menores que zero. Criar uma procedure Valida e exibir os erros astravés de um TErroLista. Ver documento Criando validações com o TErroLista.

    Nota

    Utilizar a unit scg.scgOFExecutaEditaVolume como exemplo.

Criar a unit sptLFiscalApuracaoDACEnergia

Mockup
DACRegistro67
DACRegistro67
13
Nota

As telas do SisPetro possuem um padrão visual, esse padrão deve ser mantido, nesse exemplo, eu coloquei que os botões precisam de imagem (TBitBtn) e no topo da página, sempre colocamos uma imagem compatível com a tela. Para pesquisar imagens, acessar a página do IconExperience

Nota

Como padrão, todos os grids utilizados devem ser do tipo TcxGrid.

  • Janela Herdade de TfrmDialog
  • Propertys

    Property

    Tipo

    Comentário

    SequencialDAC

    Integer

    Código Sequencial do DAC

  • Listar os dados da tabela LFiscalApuracaoDACEnergia
    • Criar a procedure LoadDataSet, essa procedure deverá ser chamada pela tela que chamou esta. Quando isso acontecer, deverá ser passado o dataset para popular o dataset local.
    • Esses dados deverão ser mantidos em uma query temporaria (TdxMemDataSet)
      • Os registros excluídos, deveram ser excluídos dessa query.
  • Botões
    • Incluir, deve abrir uma nova janela especificada em sptLFiscalApuracaoDACEnergiaInclusao. Se o usuário tiver clicado em OK, salvar os dados na tabela LFiscalApuracaoDACEnergia.
      Nota

      Os dados na tabela LFiscalApuracaoDACEnergia devem ser salvos nessa janela.

    • Excluir, deve confirmar com o usuário e caso positivo, excluir o registro selecionado no grid.
    • Fechar, deve fechar essa janela.
      Aviso

      Deverá ser criada a tela para inclusão de registros, essa tela foi considerada no tempo de desenvolvimento e deve manter o mesmo padrão visual.

Criar a unit sptLFiscalApuracaoDACDespesasInclusao

  • Essa janela deve seguir os mesmos moldes da janela sptLFiscalApuracaoDACEnergiaInclusao
  • Propertys

    Property

    Tipo

    Comentário

    CodigoDespesa

    String

    Código da Despesa

    Valor

    Extended

    Valor Total da Despesa

    Aviso

    Não permitir valores menores que zero. Criar uma procedure Valida e exibir os erros astravés de um TErroLista. Ver documento Criando validações com o TErroLista.

    Nota

    Utilizar a unit scg.scgOFExecutaEditaVolume como exemplo.

Criar a unit sptLFiscalApuracaoDACDespesas

  • Essa janela deve seguir os mesmos moldes da janela sptLFiscalApuracaoDACEnergia
  • Deve listar os dados da tabela LFsicalApuracaoDACDespesas
  • Ter o mesmo comportamento da tela de modelo, utilizando um dataset temporário local
    • Criar a procedure LoadDataSet, essa procedure deverá ser chamada pela tela que chamou esta. Quando isso acontecer, deverá ser passado o dataset para popular o dataset local.

Criar a unit sptLFiscalApuracaoDACSaldos

Mockup
DAC_DadosContabeis
DAC_DadosContabeis
15
  • Essa janela deverá editar alguns campos da tabela LFiscalApuracaoDAC
  • Propertys

    Property

    Tipo

    Comentário

    SequencialDAC

    Integer

    Sequenncias da DAC que estará sendo editada

  • Todos os campos do Registro 66 (AtivoCirculanteInicial em diante) deverão ser editados nessa janela
    • Utilizar como o caption o comentário incluído no campos
      Aviso

      Atentar-se com os campos que serão do tipo ComboBox.

  • Após receber a propriedade SequencialDAC, abrir a query com os dados da LFiscalApuracaoDAC, permitindo a alteração do usuário e gravando(caso solicitado) os dados ao sair dessa janela.
    Aviso

    Não permitir valores menores que zero. Criar uma procedure Valida e exibir os erros astravés de um TErroLista. Ver documento Criando validações com o TErroLista.

    Nota

    Utilizar a unit scg.scgOFExecutaEditaVolume como exemplo.

No Rtm

Criar o rtm DAC_AL.rtm

  • Salvar esse arquivo na pasta C:\SisPetro\Controladoria\RTM
  • Arquivo texto com tamanho fixo
  • Ter um subreport para cada Registro
  • Os registros com 1 registro podem usar o pipeline da LFiscalApuracao
  • Ver como o arquivo DAC_AL.rtm já foi estruturado. Alguns subreports já foram iniciados.
  • Os campos que foram obtidos por tela devem utilizar a tabela LFiscalApuracaoDAC
  • Seguir estrutura dos reports de acordo com o especificado na pré e nos manuais da DAC

Alterações após Desenvolvimento

Solução

Na tela de Geração da DAC

  • Ter um checkbox "Processa informações da DAC"
  • No botão OK, caso o checkbox esteja marcado, salvar numa tabela específica, vinculada à Apuração os seguintes dados:
    • Intervalo de NFs emitidas (registro 45)
    • Intervalo de Numeração de NFs canceladas (registro 46)
      Aviso

      Lembrando que as NFs devem ser conforme o período informado em tela e a configuração de sistema da data utilizada para Saídas e Entradas na Apuração Fiscal.

Dicas para Homologação

Verificar performance e consultar dados via dbisqlc.

Especificação

No Banco
  • Criar tabela LFiscalApuracaoDAC_46 com a estrutura do Registro 46, acrescentando os campos Sequencial (PK) e vínculo com a tabela LFiscalApuracaoDAC
  • Criar tabela LFiscalApuracaoDAC_45 com a estrutura do Registro 45, acrescentando os campos Sequencial (PK) e vínculo com a tabela LFiscalApuracaoDAC
  • Criar procedure DACRegistro45_46
    • Parametros entrada: SequencialDAC
    • Procedimento:
      • Garantir transação
      • Apagar os dados das tabelas LFiscalApuracaoDAC_45 e LFiscalApuracaoDAC_46
      • Montar select via variável (para usar execute immediate) na tabela NotaFiscal, filtrando empresa, período e Natureza.TipoEmissão (própria). Fazer um select para Entradas e outro para Saídas. Inserir o número mínimo e máximo da NF na tabela LFiscalApuracaoDAC_45.
        Para identificar o campo de Data a ser utilizado para filtro do período, ver tabela Sistema como código abaixo:
        Bloco de código
        select if IsNull(ApuracaoFiscalPorDataEmissao,0) = 2 then IsNull(DataReferenciaEntrada,0) else IsNull(ApuracaoFiscalPorDataEmissao,0) endif,if IsNull(ApuracaoFiscalPorDataEmissao,0) = 2 then IsNull(DataReferenciaSaida,1) else IsNull(ApuracaoFiscalPorDataEmissao,0) endif into xCampoDataE,xCampoDataS from Sistema;
      • Montar cursor com o select via variável para selecionar as notas canceladas do período.
      • Dentro do cursor ir gravando os intervalos:

        Se tiver a nota 5,6 e 10 deverá ter 2 registros: um de 5 a 6 e outro de 10 a 10

No Sispetro Controladoria
  • Unit sptGeracaoMidiaGIA
    • Na procedure SalvaDAC
      • Ao final da procedure, chamar a stored procedure DACRegistro45_46
No Rtm

Arquivo DAC-AL.rtm

  • Alterar pipeline NotasTodas para utilizar LFiscalApuracaoDAC_45
  • Alterar pipeline NotasCanc para utilizar LFiscalApuracaoDAC_46
  • No subreport Sub_46 retirar variáveis do módulo e eventos referentes a elas, listando os campos de forma simples no subreport.