• Início
  • Cursos
  • Fontes de Aplicativos
  • Downloads
  • Contato
  • Sitemap
  • Sobre

Régys Borges da Silveira

  • Início
  • Cursos
  • Fontes de Aplicativos
  • Downloads
  • Contato
  • Sitemap
  • Sobre
Home  /  ACBr  /  Lendo dados da Redução Z utilizando o ACBr
12 dezembro 2012

Lendo dados da Redução Z utilizando o ACBr

Escrito por Régys Borges da Silveira
12/12/2012 ACBr ACBr, Delphi 17 comentários

Visto a dificuldade de grande parte dos usuários e a necessidade que temos de gravar os dados da Redução Z emitida para fins de geração do Sintegra, SPED, Arquivo de Movimento entre outros, resolvi postar esse exemplo de código completo para leitura dos dados da Redução Z utilizando o ACBrECF.

Uma boa prática e utilizar o código de leitura no evento OnDepoisReducaoZ do componente ACBrECF, assim temos a certeza que sempre após uma Redução Z teremos gravados os dados da mesma, lembrando que ainda existem impressoras fiscais programadas para efetuar a Redução Z automaticamente, isso não é mais permitido mas alguns modelos programados antigamente ainda essa função ativada, nesta situação seria interessante efetuar o tratamento, verificando se a Data de Movimento da última Redução Z consta no banco de dados ou não se não efetuar a leitura manual fora do evento.

Também fiz um aplicativo de exemplo com códigos fontes disponibilizados na área de downloads do blog.

var
  DadosReducaoStr: String;
  ReducaoZ: TACBrECFDadosRZ; //declare ACBrECFClass no uses
  I: Integer;
begin

  // Obtendo os dados da redução Z;
  DadosReducaoStr := ACBrECF1.DadosUltimaReducaoZ;

  // jogar a classe preenchida para uma variavel
  // isso facilita o acesso aos dados
  ReducaoZ := ACBrECF1.DadosReducaoZClass;

  // dados gerais
  ReducaoZ.DataDaImpressora
  ReducaoZ.DataDoMovimento
  ReducaoZ.NumeroDeSerie
  ReducaoZ.NumeroDeSerieMFD
  ReducaoZ.NumeroDoECF
  ReducaoZ.NumeroDaLoja
  ReducaoZ.NumeroCOOInicial
  ReducaoZ.COO - 1 // COO Final

  // CONTADORES
  ReducaoZ.COO
  ReducaoZ.GNF
  ReducaoZ.CRO
  ReducaoZ.CRZ
  ReducaoZ.CCF
  ReducaoZ.CFD
  ReducaoZ.CDC
  ReducaoZ.NCN
  ReducaoZ.GRG
  ReducaoZ.GNFC
  ReducaoZ.CCDC
  ReducaoZ.CFC

  // TOTALIZADORES GERAIS
  ReducaoZ.ValorGrandeTotal
  ReducaoZ.ValorVendaBruta
  ReducaoZ.VendaLiquida
  ReducaoZ.TotalTroco

  // ICMS
  ReducaoZ.TotalICMS
  ReducaoZ.CancelamentoICMS
  ReducaoZ.DescontoICMS
  ReducaoZ.AcrescimoICMS
  ReducaoZ.SubstituicaoTributariaICMS
  ReducaoZ.IsentoICMS
  ReducaoZ.NaoTributadoICMS

  // ISSQN
  ReducaoZ.TotalISSQN
  ReducaoZ.CancelamentoISSQN
  ReducaoZ.DescontoISSQN
  ReducaoZ.AcrescimoISSQN
  ReducaoZ.SubstituicaoTributariaISSQN
  ReducaoZ.IsentoISSQN
  ReducaoZ.NaoTributadoISSQN

  // OPERAÇÕES NÃO FISCAIS
  ReducaoZ.TotalOperacaoNaoFiscal
  ReducaoZ.CancelamentoOPNF
  ReducaoZ.DescontoOPNF
  ReducaoZ.AcrescimoOPNF

  // Todas as Aliquotas, de ICMS e ISSQN na ordem original de programação no ECF
  for I := 0 to ReducaoZ.TodasAliquotas.Count - 1 do
  begin
    with ReducaoZ.TodasAliquotas[I] do
    begin
      Sequencia
      Indice
      Tipo
      Aliquota
      Total
    end;
  end;

  // ICMS ********************************************************************
  for I := 0 to ReducaoZ.ICMS.Count - 1 do
  begin
    with ReducaoZ.ICMS[I] do
    begin
      Sequencia
      Indice
      Tipo
      Aliquota
      Total
    end;
  end;

  // ISSQN *******************************************************************
  for I := 0 to ReducaoZ.ISSQN.Count - 1 do
  begin
    with ReducaoZ.ISSQN[I] do
    begin
      Sequencia
      Indice
      Tipo
      Aliquota
      Total
    end;
  end;

  // TOTALIZADORES NÃO FISCAIS ***********************************************
  for I := 0 to ReducaoZ.TotalizadoresNaoFiscais.Count - 1 do
  begin
    with ReducaoZ.TotalizadoresNaoFiscais[I] do
    begin
      Indice
      Descricao
      PermiteVinculado
      FormaPagamento
      Total
      Contador
    end;
  end;

  // MEIOS DE PAGAMENTO ******************************************************
  for I := 0 to ReducaoZ.MeiosDePagamento.Count - 1 do
  begin
    with ReducaoZ.MeiosDePagamento[I] do
    begin
      Indice
      Descricao
      PermiteVinculado
      Data
      TipoDoc
    end;
  end;

  // RELATÓRIO GERENCIAL *****************************************************
  for I := 0 to ReducaoZ.RelatorioGerencial.Count - 1 do
  begin
    with ReducaoZ.RelatorioGerencial[I] do
    begin
      Indice
      Descricao
      Contador
    end;
  end;

end;

Régys Borges da Silveira
Connect on Facebook Connect on Twitter Connect on Google+ Connect on Linkedin

Artigos relacionados

  • Webinar 30 anos de Delphi

    28/02/2025
  • Delphi: 30 Anos de Inovação e Produtividade

    14/02/2025
  • RAD Studio Live 2023

    21/02/2023

1 comentário

  1. Luiz Oliveira Responde a Luiz para Luiz Oliveira" aria-label=" Responde a Luiz para Luiz Oliveira"> Responde a Luiz
    10/03/2018 at 14:06

    Oi Régis, sou seu fan. Já vi seus videos e posts no acbr. Muito bom.
    Fui na area de download e não achei os fontes que você falou da reducaoz. Onde posso encontra-lo?

    • Régys Borges da Silveira Responde a Régys para Régys Borges da Silveira" aria-label=" Responde a Régys para Régys Borges da Silveira"> Responde a Régys
      12/03/2018 at 14:31

      Obrigado Luiz,
      A um tempo atrás eu migrei o site de servidor e algumas coisas se perderam, infelizmente esse fonte foi uma delas, mas basicamente o fonte era o que está descrito no artigo.

  2. luanrox Responde a luanrox para luanrox" aria-label=" Responde a luanrox para luanrox"> Responde a luanrox
    28/07/2017 at 14:53

    Olá,

    Estou utilizando a impressora SWEDA ST 2500 e a aliquota 2500 teve vendas, porém o ACBR está retornando o valor zerado. Nas outras aliquotas está correto.

    Pode ser problema na impressora?

    • Régys Borges da Silveira Responde a Régys para Régys Borges da Silveira" aria-label=" Responde a Régys para Régys Borges da Silveira"> Responde a Régys
      28/07/2017 at 23:41

      Pode ser que a impressora não esteja retornando a alíquota corretamente, verifique o log do ACBrECF e veja como é retornada essa alíquota na redução Z.

  3. Elizio Rezende Responde a Elizio para Elizio Rezende" aria-label=" Responde a Elizio para Elizio Rezende"> Responde a Elizio
    21/02/2017 at 09:51

    Bom dia meu caro,

    Estou com a seguinte situação. Após fazer a redução Z eu chamo os métodos que pega esses dados da redução para gerar o Sintegra futuramente. Acontece que o usuário desligou o PC antes que eu pudesse gravar esses dados. Tem alguma forma de pegar COO, CRZ, VENDA_BRUTA…. de reduções de dias específicos?

    Um grande abraço

    • Régys Borges da Silveira Responde a Régys para Régys Borges da Silveira" aria-label=" Responde a Régys para Régys Borges da Silveira"> Responde a Régys
      21/02/2017 at 10:23

      Via impressora somente puxando a MFD, você pode gerar um arquivo Cotepe 17/04 por exemplo, nele você vai conseguir visualizar os dados que precisa nos dias específicos.

  4. Valtencir Campos Responde a Valtencir para Valtencir Campos" aria-label=" Responde a Valtencir para Valtencir Campos"> Responde a Valtencir
    22/06/2016 at 14:19

    Boa tarde Regys. O calculo do ICMS é possível obter? pois o ECF além da base de calculo do ICMS, também calcula o valor do mesmo.

    • Régys Borges da Silveira Responde a Régys para Régys Borges da Silveira" aria-label=" Responde a Régys para Régys Borges da Silveira"> Responde a Régys
      22/06/2016 at 19:51

      Desculpe eu não entendi a pergunta, você quer saber a base de cálculo?
      No retorno da redução Z você tem a base de cálculo e a alíquota, basta multiplicar um pelo outro e acha o valor do ICMS.

      • Valtencir Campos Responde a Valtencir para Valtencir Campos" aria-label=" Responde a Valtencir para Valtencir Campos"> Responde a Valtencir
        23/06/2016 at 08:32

        Bom dia Regys.
        A Bematech sitando como exemplo, além de calcular a base de calculo, também calcular o icms alíquota por alíquota. Gostaria de saber se tem como pegar este valor para gravar o que ela esta calculando de imposto, pois, a mesma esta simplesmente ignorando a regra de arredondamento, por exemplo: Base de calculo: R$ 26,75 alíquota 25% o resultado deveria ser: R$ 6,69 (aplicando o arredonda sobre R$ 6,6875) a impressora simplesmente calcula R$ 6,68 O contador, esta somando tudo pela redução Z, o que esta causando diferença. É por este motivo que se houvesse uma forma de pegar o valor do imposto calculado pela impressora eu faria um rateio da diferença para fechar tudo com a redução Z. A base de calculo fecha certinho, mas o imposto não.

        • Valtencir Campos Responde a Valtencir para Valtencir Campos" aria-label=" Responde a Valtencir para Valtencir Campos"> Responde a Valtencir
          23/06/2016 at 08:33

          Desculpe o português aí, citando com ‘s’ ninguém merece.

        • Régys Borges da Silveira Responde a Régys para Régys Borges da Silveira" aria-label=" Responde a Régys para Régys Borges da Silveira"> Responde a Régys
          23/06/2016 at 19:20

          A sim, entendi, neste caso você deve truncar o valor, porque somente é lido da impressora o valor total e a alíquota aplicada, não é retornada na redução Z para nós o valor do imposto.

          • Valtencir Campos
            24/06/2016 at 11:07

            Valeu Regys, obrigado.

      • Valtencir Campos Responde a Valtencir para Valtencir Campos" aria-label=" Responde a Valtencir para Valtencir Campos"> Responde a Valtencir
        23/06/2016 at 14:14

        Estou colocando esta situação, pois, o contador esta somando a redução Z e comparando com o sintegra, apenas este esta me questionando tal situação.

  5. gut Responde a gut para gut" aria-label=" Responde a gut para gut"> Responde a gut
    13/06/2016 at 16:31

    Não esta funcionando o download dos fontes! Gostaria de saber se o comando pode ser usado para opção enviar redução Z do PAF-ECF

    • Régys Borges da Silveira Responde a Régys para Régys Borges da Silveira" aria-label=" Responde a Régys para Régys Borges da Silveira"> Responde a Régys
      13/06/2016 at 19:56

      Veja pode seguir o código de exemplo no próprio artigo ou utilizar o demo do ACBrECF que está disponível na pasta exemplos do repositório ACBr.

  6. Joao Responde a Joao para Joao" aria-label=" Responde a Joao para Joao"> Responde a Joao
    17/11/2015 at 14:52

    Régys, por que isso:

    ReducaoZ.COO – 1 // COO Final

    • Régys Borges da Silveira Responde a Régys para Régys Borges da Silveira" aria-label=" Responde a Régys para Régys Borges da Silveira"> Responde a Régys
      18/11/2015 at 09:31

      O COO final do dia é sempre o COO da Redução Z menos 1.

Dê-nos sua opinião, seu comentário ajuda o site a crescer e melhorar a qualidade dos artigos.Cancelar resposta

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Inscreva-se nas nossas redes sociais

  • Connect on Facebook
  • Connect on Twitter
  • Connect on LinkedIn
  • Connect on Instagram
  • Connect on RSS
  • Connect on YouTube
  • Connect on Github

Sites parceiros

  • Carlos H. Cantu
  • Delphi Basics
  • Delphi Feeds
  • Isaque Pinheiro
  • Object Pascal OOP

Social Media

  • Connect on Facebook
  • Connect on Twitter
  • Connect on LinkedIn
  • Connect on RSS
  • Connect on YouTube
  • Connect on Github
© Copyright 2014. Todos os direitos reservados.
Vá para versão mobile