Ir para conteúdo
  • Cadastre-se

dev botao

Dados Ultima Redução Z - GetDadosUltimaReducaoZ


Ver Solução Respondido por Rafael Batiati,
  • Este tópico foi criado há 3961 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Bom dia André,

o Rafael me instrui a fazer da seguinte forma:

[C#]

acbrECF.ReducaoZ();

acbrECF.GetDadosReducaoZ ();

var reducaoZ = acbrECF.GetDadosReducaoZClass();

deu certinho, porém os valores das aliquotas estão voltando zeradas,

agora não sei se é porque estou utilizando o emulador para testes,

mas da uma olhadinha ai!!!

Att,

Luiz Paulo

Link para o comentário
Compartilhar em outros sites

  • Solution

Alô pessoal,

A coisa funciona assim:
Sempre precisamos chamar o método GetDadosReducaoZ() ou GetDadosUltimaReducaoZ() antes de chamar o GetDadosReducaoZClass();

Nem todos os ECFs suportam o GetDadosUltimaReduçãoZ() ...
Eu utilizo o GetDadosReducaoZ() logo após antes de emitir a ReducaoZ(), e os contadores são preenchidos normalmente.

 

ATUALIZAÇÃO: (28/02/2012)

 

 

Para explicar melhor o funcionamento dos métodos DadosReducaoZ e DadosUltimaReducaoZ:

 

O caso do DadosReducaoZ(), os valores vêm dos contadores atuais do ECF. Por exemplo, o campo ValorGrandeTotal é o mesmo valor informado no Ecf.GrandeTotal; Isso faz com que os dados sejam a "fotografia" do status do ECF no momento, por isso devem ser chamados antes de efetuar a redução. Depois da redução vários totalizadores serão zerados.

 

Já o DadosUltimaReducaoZ() retorna os dados da RZ informados pelo ECF, nem todos os modelos suportam todos os dados, então o retorno desse método varia de fabricante a fabricante. Esse método precisa ser chamado após a RZ e antes do primeiro movimento.

 

Lembrando que o GetDadosReducaoZ() se chamado antes da RZ retorna os contadores de ANTES da RZ, ou seja sem incremento no COO e CRZ.

 

 

***

O pessoal do ACBr lançou uma alteração ontem, que vai nos interessar bastante.
Segue o changelog abaixo, vou implementar isso no ACBrFramework assim que possível.
 

Data: 20/11/2012
-- ACBrECF -- (por: DSA)
[*] Refactoring em método: GetDadosReducaoZ e MontaDadosReducaoZ

-- ACBrECFClass -- (por: DSA)
[*] Refactoring em método: GetDadosReducaoZ e MontaDadosReducaoZ
[*] Classe TACBrECFDadosRZ modificada para conter o método MontaDadosReducaoZ
[-] Método TACBrECFDadosRZ.MontaDadosReducaoZ, modificado para montar .INI apenas
com as variaveis que foram realmente informadas (eliminando problema de
registradores zerados)
[+] Inserido método TACBrECFDadosRZ.CalculaValoresVirtuais para calcular valores
que não tenham sido retornado pelo ECF como: TotalOperacaoNaoFiscal, TotalICMS,
TotalISSQN, ValorVendaBruta, VendaLiquida


Abs,

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Link para o comentário
Compartilhar em outros sites

  • 2 meses depois ...

Ola Rafael, boa tarde.

 

Desculpe esta voltando nesse assunto, mas estou usando da seguinte forma para gravar os dados da Redução, só que o valor bruto esta retornando 0 e valor de troca esta retornando -1, essa sequencia q estou utilizando esta correta para pegar os dados da redução?

 

grd abs

 

 

 

 Me.acbrECF.ReducaoZ()
 Me.acbrECF.DadosUltimaReducaoZ()


Dim ecfReducaoZ As DadosReducaoZClass = cmECF.DadosReducaoZClass

 

 

Link para o comentário
Compartilhar em outros sites

André,

 

Experimente usar a função DadosReducaoZ() ao invés da DadosUltimaReducaoZ()

No momento não tenho como testar, mas acho que é isso mesmo.

 

Abs

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Link para o comentário
Compartilhar em outros sites

Ola, bom dia

 

Fiz os testes utilizando o código abaixo e mesma assim o valor bruto retornou zerado e o valor de troco (ecfReducaoZ.TotalTroco) e serviços (ecfReducaoZ.TotalISSQN) retornou -1, a sequencia que estou usando está correta?

 

grd abs

 

       

 

 Me.acbrECF.ReducaoZ()
 Me.acbrECF.DadosReducaoZ() ou  Me.acbrECF.DadosUltimaReducaoZ()
 Me.acbrECF.DadosReducaoZClass.MontaDadosReducaoZ()
 Me.acbrECF.DadosReducaoZClass.CalculaValoresVirtuais()

 Dim ecfReducaoZ As DadosReducaoZClass = Me.acbrECF.DadosReducaoZClass
 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Olá, não uso o ACBrFramework, mas como é um erro comum entre os usuários do ACBr, gostaria de esclarecer que há diferença entre os métodos DadosReducaoZ e DadosUltimaReducaoZ.

 

DadosReducaoZ é para ser usado antes de chamar a Redução. DadosUltimaReducaoZ é para ser chamado depois.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Correto, eu faço da seguinte forma

 

1 - Emito a redução (Me.acbrECF.ReducaoZ())

2 - Pego os dados da redução (Me.acbrECF.DadosUltimaReducaoZ()) fiz utlizando o Me.acbrECF.DadosReducaoZ() pq o Rafael pediu que eu testasse

3 - Incluir as linhas abaixo para ele calcular Valor bruto, Serviços e etc

 

Me.acbrECF.DadosReducaoZClass.MontaDadosReducaoZ()

Me.acbrECF.DadosReducaoZClass.CalculaValoresVirtuais()

 

4 - Coloco os dados nesse variavel para realizar a gravação (Dim ecfReducaoZ As DadosReducaoZClass = Me.acbrECF.DadosReducaoZClass)

Link para o comentário
Compartilhar em outros sites

  • Consultores

Então, no caso da DadosReducaoZ, você precisa chamá-la e usar os dados gerados por ela antes de chamar a ReducaoZ.

Seria:

1 - Pego os dados da redução utlizando o Me.acbrECF.DadosReducaoZ()

2 - Armazeno os dados.

3 - Emito a redução (Me.acbrECF.ReducaoZ())


 

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Blz, sem problemas fazer dessa forma, mas tem um teste do PAF-ECF que é recomposição do GT e número de série, onde vc tem que pegar os dados da ultima z emitida e comparar (CRZ, CRO e Venda Bruta) com os dados que estão gravados no banco, só que como não esta retornando corretamente o Valor Bruta vai dar problema da homologação, na homologação que fiz passei no testa fazendo a soma dos valores e comparando

Link para o comentário
Compartilhar em outros sites

André,

Você tem razão. O campo ValorVendaBruta estava vindo sempre ZERO do ACBrFramework.

Corrigido e comitado no SVN, basta baixar a nova versão.

 

 

ATUALIZAÇÃO

 

Para explicar melhor o funcionamento dos métodos DadosReducaoZ e DadosUltimaReducaoZ:

 

O caso do DadosReducaoZ(), os valores vêm dos contadores atuais do ECF. Por exemplo, o campo ValorGrandeTotal é o mesmo valor informado no Ecf.GrandeTotal; Isso faz com que os dados sejam a "fotografia" do status do ECF no momento, por isso devem ser chamados antes de efetuar a redução. Depois da redução vários totalizadores serão zerados.

 

Já o DadosUltimaReducaoZ() retorna os dados da RZ informados pelo ECF, nem todos os modelos suportam todos os dados, então o retorno desse método varia de fabricante a fabricante. Esse método precisa ser chamado após a RZ e antes do primeiro movimento.

 

Lembrando que o GetDadosReducaoZ() se chamado antes da RZ retorna os contadores de ANTES da RZ, ou seja sem incremento no COO e CRZ.

 

Abs.

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Link para o comentário
Compartilhar em outros sites

  • 2 meses depois ...

Ola Rafael, boa tarde.

 

Desculpe acabei esquecendo de dar um retorno sobre esse assunto...mil desculpas.

 

Venda bruta ficou OK, mas os campos TotalTroco e TotalISSQN sempre estão retornando -1 e o NumCOOInicial esta retornando em Branco.

 

Vi q vc falou q tem alguns dados de modelos de ECF q ñ são retornados e peguei isso tb, estou testando em uma ECF da Epson e tem alguns campos q geram exception e queria dar uma sugestão se quando acontecer isso retornar o valor 0, os dados que peguei foram (GNFC, CFC, NCN, CCDC)

 

Estou utilizando os comandos na sequencia abaixo.

 

grd abs

 Me.acbrECF.ReducaoZ()
 Me.acbrECF.DadosUltimaReducaoZ()
 Me.acbrECF.DadosReducaoZClass.CalculaValoresVirtuais()
 Me.acbrECF.DadosReducaoZClass.MontaDadosReducaoZ()

 Dim ecfReducaoZ As DadosReducaoZClass = Me.acbrECF.DadosReducaoZClass 
Link para o comentário
Compartilhar em outros sites

Ola, consegui fazer da seguinte forma.

 

  1. Solicito os dados da Redução antes da emissão
  2. Ao solicitar os dados ele preenche o objeto DadosReducaoZClass, com isso para para a variavel que criei "ecfReducaoZ"
  3. Emito a Redução Z e depois gravo os dados que guardei na variável "ecfReducaoZ"

Quando for gravar a redução não esquecer de fazer o incremento em 1 do número da redução e do COO

 

Brigadão e grd abs

 Me.acbrECF.DadosReducaoZ()
 Dim ecfReducaoZ As DadosReducaoZClass = Me.acbrECF.DadosReducaoZClass
 Me.acbrECF.ReducaoZ()
Link para o comentário
Compartilhar em outros sites

  • Consultores

que bom que você consegui fazer, se não me engano em outro topico sobre isso o juliomar recomenda fazer a mesma coisa.

pegar os dados antes, pois nem toda ecf aceita a get ultimo dados reducaoz, pode também usar o evento OnAntesReducaoZ para fazer isso.

O recomendado é pegar antes e depois. Daí fazer um "merge".

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3961 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.