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;
Descubra mais sobre Régys Borges da Silveira
Assine para receber nossas notícias mais recentes por e-mail.
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.