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;
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?
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.
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?
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.
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
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.
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.
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.
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.
Desculpe o português aí, citando com ‘s’ ninguém merece.
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.
Valeu Regys, obrigado.
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.
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
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.
Régys, por que isso:
ReducaoZ.COO – 1 // COO Final
O COO final do dia é sempre o COO da Redução Z menos 1.