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 | ||||||
---|---|---|---|---|---|---|
|
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 |
---|
|
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)
- 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.
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.
- Dentro desse groupbox incluir a manutenção para o campo Produto.DAC_Codigo com o caption "Código na DAC"
- Criar o groupbox DAC
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.
- Dentro desse groupbox, incluir panelcomboquery para manutenção dos novos campos da tblSistema com relação a DAC
- Incluir um groupbox com o caption "DAC/AL"
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 | ||||||
---|---|---|---|---|---|---|
|
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.
- Se estiver na aba da DAC
- 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)
- Antes de abrir a janela, perguntar ao usuário se ele deseja carregar os saldos das contas, se sim, chamar a stored procedure DACRegistro66
- 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.
- Registro 66, Deve abrir a janela especificada na unit sptLFiscalApuracaoDACSaldos.
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 | ||||||
---|---|---|---|---|---|---|
|
- 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 | ||||||
---|---|---|---|---|---|---|
|
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.
- Incluir, deve abrir uma nova janela especificada em sptLFiscalApuracaoDACEnergiaInclusao. Se o usuário tiver clicado em OK, salvar os dados na tabela LFiscalApuracaoDACEnergia.
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 | ||||||
---|---|---|---|---|---|---|
|
- 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.
- Utilizar como o caption o comentário incluído no campos
- 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
- Na procedure SalvaDAC
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.