Jump to content

Delphi chamada_delphi.png acbr.png

C6 chamada_c6.png botao.png

Dados Ultima Redução Z - GetDadosUltimaReducaoZ


andresantana
Go to solution Solved by Rafael Batiati,
  • Este tópico foi criado há 3282 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 to comment
Share on other 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 to comment
Share on other sites

Entrando no tópico do colega, mais talvez resolva o seu problema...

eu pego os dados da ultima redução z antes de emitir a redução, pois se executar desse modo a unica coisa que ficara errada é o crz, mais ai é so acrescentar 1 e fica tudo blz.

Estou correto? Isso solucionará sua dúvida?

Link to comment
Share on other sites

  • 2 months later...

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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

  • 2 months later...

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 to comment
Share on other 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 to comment
Share on other sites

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.

Consultor SAC ACBr Rafael Dias
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Desenvolvedor ACBrLib.

 

Link to comment
Share on other 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 to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.