Ir para conteúdo
  • Cadastre-se

dev botao

Erro ao imprimir varios danfes emitido em DPEC


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

Recommended Posts

Bom dia meu problema é o seguinte.

Quando vou emitir varios danfes de uma vez emitido em contigencia DPEC eles não alteram o numero do protocolo ficando assim o mesmo numero de protocolo e data/hora de autorizacao pra todos os danfes. Ja tentei ate no demo mas o problema continua o mesmo alguem ja passou por isso e conseguiu resolver? Utilizo o RAVECB.

utilizei esse comando pra teste conforme segue :

OpenDialog1.Title := 'Selecione a NFE';

OpenDialog1.DefaultExt := '*-nfe.XML';

OpenDialog1.Filter := 'Arquivos NFE (*-nfe.XML)|*-nfe.XML|Arquivos XML (*.XML)|*.XML|Todos os Arquivos (*.*)|*.*';

OpenDialog1.InitialDir := ACBrNFe1.Configuracoes.Geral.PathSalvar;

if OpenDialog1.Execute then

begin

ACBrNFe1.NotasFiscais.Clear;

ACBrNFe1.NotasFiscais.LoadFromFile(OpenDialog1.FileName);

OpenDialog1.Execute;

ACBrNFe1.NotasFiscais.LoadFromFile(OpenDialog1.FileName);

OpenDialog1.Execute;

ACBrNFe1.NotasFiscais.LoadFromFile(OpenDialog1.FileName);

if ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.tpEmis = teDPEC then

begin

ACBrNFe1.WebServices.ConsultaDPEC.NFeChave := ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID;

ACBrNFe1.WebServices.ConsultaDPEC.Executar;

ACBrNFe1.DANFE.ProtocoloNFe := ACBrNFe1.WebServices.ConsultaDPEC.nRegDPEC +' '+ DateTimeToStr(ACBrNFe1.WebServices.ConsultaDPEC.dhRegDPEC);

end;

ACBrNFe1.NotasFiscais.Imprimir;

end;

Link para o comentário
Compartilhar em outros sites

Nessa código que vc postou, vc esta carregando tres XML pro componente, e imprimi apenas um. Se vai imprimir vários, cade o while ou for?

Segunda coisa que notei, usando "ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID" pra consultar o DPEC, vc sempre vai estar consultando a primeira nota do componente.

Ola Angelo...

o laço for eu faço no meu sistema, esse ai é o modelo que vem no demo do acbr, cada opendialog abre uma nota e passa os dados dela e ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID é referente a cada opendialog. seu eu fizer o mesmo processo ai com notas que foram enviadas no modo Normal da tudo certo. O unico problema mesmo é no modo DPEC

Link para o comentário
Compartilhar em outros sites

Vc esta com os fontes atualizados? Parece que esse código ai que vc postou foi alterado, no fonte do meu Demo está asim:

  OpenDialog1.Title := 'Selecione a NFE';

  OpenDialog1.DefaultExt := '*-nfe.XML';

  OpenDialog1.Filter := 'Arquivos NFE (*-nfe.XML)|*-nfe.XML|Arquivos XML (*.XML)|*.XML|Todos os Arquivos (*.*)|*.*';

  OpenDialog1.InitialDir := ACBrNFe1.Configuracoes.Geral.PathSalvar;

  if OpenDialog1.Execute then

  begin

    ACBrNFe1.NotasFiscais.Clear;

    ACBrNFe1.NotasFiscais.LoadFromFile(OpenDialog1.FileName);

    if ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.tpEmis = teDPEC then

     begin

       ACBrNFe1.WebServices.ConsultaDPEC.NFeChave := ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID;

       ACBrNFe1.WebServices.ConsultaDPEC.Executar;

       ACBrNFe1.DANFE.ProtocoloNFe := ACBrNFe1.WebServices.ConsultaDPEC.nRegDPEC +' '+ DateTimeToStr(ACBrNFe1.WebServices.ConsultaDPEC.dhRegDPEC);

     end;

    ACBrNFe1.NotasFiscais.Imprimir;

  end;

Esse código carrega uma nota pro componente (indice 0), consulta o DPEC dela e imprimi ela.

No código que vc postou, está carregando três notas (indices 0, 1 e 2 no componente), consulta o DPEC da indice 0 e imprimi;

Teria que alterar de ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID; para ACBrNFe1.NotasFiscais.Items.NFe.infNFe.ID; tudo isso dentro de um for.

Link para o comentário
Compartilhar em outros sites

aqui esta como estou fazendo dentro do meu sistema

for i := 0 to ListView1.Items.Count - 1 do

begin

if ListView1.Items.Item.Checked then

begin

FormPrincipal.ACBrNFe1.NotasFiscais.LoadFromFile(diretorio+Trim(TMinhaClasse(ListView1.Items.SubItems.Objects[8]).chaveacesso));

** Comentei aqui pois ja tenho o nro do registro e a data de registro salvo no banco de dados **

//if FormPrincipal.ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.tpEmis = teDPEC then

//begin

//FormPrincipal.ACBrNFe1.WebServices.ConsultaDPEC.NFeChave := FormPrincipal.ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID;

//FormPrincipal.ACBrNFe1.WebServices.ConsultaDPEC.Executar;

FormPrincipal.ACBrNFe1.DANFE.ProtocoloNFe := Trim(TMinhaClasse(ListView1.Items.SubItems.Objects[19]).nRegDPEC)+' '+

Trim(TMinhaClasse(ListView1.Items.SubItems.Objects[20]).DhRegDPEC);

** aqui está passando os valores correto cada DANFE com o seu nro registro e data de registro **

showmessage(Trim(TMinhaClasse(ListView1.Items.SubItems.Objects[19]).nRegDPEC));

//FormPrincipal.ACBrNFe1.WebServices.ConsultaDPEC.nRegDPEC +' '+ DateTimeToStr(FormPrincipal.ACBrNFe1.WebServices.ConsultaDPEC.dhRegDPEC);

//end;

ListView1.Scroll(0,i);

indice:=listview1.Items.Item.Index;

ListView1.Items.Item.Checked := false;

end;

application.ProcessMessages;

end;

FormPrincipal.ACBrNFe1.NotasFiscais.Imprimir;

na hora que imprimi todos os DANFES saem com o mesmo nro de registro e data registro...

Link para o comentário
Compartilhar em outros sites

Sai com o mesmo numero e data da primeira nota, da ultima nota, de uma aleatoria??

Não fiz ainda essa rotina no meu sistema, mas acredito que não de pra atribuir do jeito que vc esta atribuindo:

FormPrincipal.ACBrNFe1.DANFE.ProtocoloNFe :=

acho que teria que ser algo tipo:

FormPrincipal.ACBrNFe1.NotasFiscais.Items.ProtocoloNFe :=

a sintaxe tá errada provavelmente, mas exemplifica o que eu acho. Do jeito q vc faz, vc joga um numero e data de registro pro componente inteiro, do jeito que coloquei, jogaria pra cada nota carregada no componente. Não sei se esta certo, como disse, não tenho ainda isso no meu sistema, mas é minha idéia por momento.

Link para o comentário
Compartilhar em outros sites

Sai com o mesmo numero e data da primeira nota, da ultima nota, de uma aleatoria??

Não fiz ainda essa rotina no meu sistema, mas acredito que não de pra atribuir do jeito que vc esta atribuindo:

FormPrincipal.ACBrNFe1.DANFE.ProtocoloNFe :=

acho que teria que ser algo tipo:

FormPrincipal.ACBrNFe1.NotasFiscais.Items.ProtocoloNFe :=

a sintaxe tá errada provavelmente, mas exemplifica o que eu acho. Do jeito q vc faz, vc joga um numero e data de registro pro componente inteiro, do jeito que coloquei, jogaria pra cada nota carregada no componente. Não sei se esta certo, como disse, não tenho ainda isso no meu sistema, mas é minha idéia por momento.

pois é eu ja tentei de diversas forma ja passei ate como esta abaixo mas nada, se eu imprimir uma a uma da tudo certo, mas só que isso da um transtorno pro usuario imagina ele com 100 nota pra imprimir ter que ficar uma a uma vou dar uma estudada melhor nos fontes do acbr pra ver se tem como mudar isso mas acredito que não tem jeito mesmo não. obrigado pela ajuda.

ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.nProt := Trim(TMinhaClasse(ListView1.Items.SubItems.Objects[19]).nRegDPEC);

ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.dhRecbto := strtodatetime(TMinhaClasse(ListView1.Items.SubItems.Objects[20]).DhRegDPEC);

Link para o comentário
Compartilhar em outros sites

vc num respondeu se do jeito q vc ta fazendo, sempre imprimi o numero e data da ultima, da primeira... com isso da pra começar a analisar o problema.

outra coisa, não tem como imprimir uma a uma dentro do teu laço, ao invés de imprimir todas ao final?

Imprimi o numero e data de protocolo da primeira nota em todas,

não, pois ele mostra em um preview antes da impressão alguns clientes gostão de ver o preview antes..

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4500 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.