Tecnologia além do código.
Régys Borges da Silveira
← Voltar para explorar os artigos

Lendo dados da Redução Z utilizando o ACBr

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;
Compartilhar por e-mail

17 comentário(s)

  1. 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?

  2. 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?

  3. 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

  4. 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.

      1. 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.

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

      3. 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.

      4. 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. 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

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

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

Um próximo passo para cada interesse.

Continue estudando com os livros, acompanhe as videoaulas ou consulte as soluções para o seu projeto.

Descubra mais sobre Régys Borges da Silveira

Assine agora mesmo para continuar lendo e ter acesso ao arquivo completo.

Continuar lendo