Ir para conteúdo
  • Cadastre-se

dev botao

Cstat Em Lote


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

Recommended Posts

Amigos do ACBr

 

Estou com um problema e gostaria da ajuda de vcs, pois, já tive um caso muito

sério com um cliente que teve sua mercadoria parada na barreira fiscal.

 

Envio minhas notas em lote conforme código abaixo :

 

  ACBrNFe1.NotasFiscais.Clear ;
 
  for i := 0 to GridNotasFIscias do
    Begin
       ActGeraNfe.Execute ;  // Adicona as Notas
    End;
 
    ACBrNFe1.NotasFiscais.Assinar             ;
 

    ACBrNFe1.Enviar('1',false) ;  // Faço o envio.

 

  O problema esta aqui neste código abaixo , pois, se envio  2 ou mais Notas funciona OK,

  mas se envio somente 01(uma) Nota no Lote, não consigo pegar o cStat para gravar na

  minha tabela a rejeição. Assim sendo, gera o seguinte problema a nota fica como se estivesse

  pendente, como se ainda não fosse enviada. Permitindo que o usuário a exclua sem saber

  o que ocorreu no retorno.

 

  Resumindo o problema é se envio somente 01 nota no lote, e a mesma conter erro, não consigo pegar

  o cStat.! O Acbr me mostra um messagebox dizendo qual o erro mas não consigo pegar o cStat.

 

  Uso este código abaixo para pegar o retorno logo após Enviar .

 

  For i := 0 to ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Count -1 Do

    Begin
       nProt := '' ; cStat := '0' ;  chNFe := '' ; nRec := '' ; xMotivo := '' ;
       cStat   := IntToStr(ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items.cStat) ;
       xMotivo := ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items.xMotivo  ;
       nRec    := ACBrNFe1.WebServices.Retorno.Recibo ;
       nProt   := ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items.nProt    ;
       ChNFe   := ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items.chNFe    ;
    end;

 

 

 

Onde estou errando ?

 

Agradeço a todos.

 

    

  

 

 

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Você deve ler sempre os dados de retorno das notas fiscais, seguindo seu exemplo ficaria mais ou menos assim:

for i := 0 to ACBrNFe1.NotasFiscais.Count -1 do   
begin
  cStat   := IntToStr(ACBrNFe1.NotasFiscais[I].NFe.ProcNFe.cStat);
  xMotivo := ACBrNFe1.NotasFiscais[I].NFe.ProcNFe.xMotivo;
  nProt   := ACBrNFe1.NotasFiscais[I].NFe.ProcNFe.nProt;
  ChNFe   := ACBrNFe1.NotasFiscais[I].NFe.ProcNFe.chNFe;
end;

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

 

Você deve ler sempre os dados de retorno das notas fiscais, seguindo seu exemplo ficaria mais ou menos assim:

for i := 0 to ACBrNFe1.NotasFiscais.Count -1 do   
begin
  cStat   := IntToStr(ACBrNFe1.NotasFiscais[I].NFe.ProcNFe.cStat);
  xMotivo := ACBrNFe1.NotasFiscais[I].NFe.ProcNFe.xMotivo;
  nProt   := ACBrNFe1.NotasFiscais[I].NFe.ProcNFe.nProt;
  ChNFe   := ACBrNFe1.NotasFiscais[I].NFe.ProcNFe.chNFe;
end;

Caro Regys,

 

Obrigado pela ajuda, mas troquei para o código que me mostrou

conforme post abaixo, mas volto a dizer que quando envio uma só nota no lote

não passa pelo for abaixo !

 

  nRec    := '' ;
  nRec    := ACBrNFe1.WebServices.Retorno.Recibo ;
 
  For i := 0 to ACBrNFe1.NotasFiscais.Count -1 do
    Begin
       nProt := '' ; cStat := '0' ;  chNFe := '' ; xMotivo := '' ;
       cStat      := IntToStr(ACBrNFe1.NotasFiscais.Items.NFe.ProcNFe.cStat) ;
       xMotivo  := ACBrNFe1.NotasFiscais.Items.NFe.procNFe.xMotivo  ;
       nProt     := ACBrNFe1.NotasFiscais.Items.NFe.procNFe.nProt    ;
       ChNFe   := ACBrNFe1.NotasFiscais.Items.NFe.procNFe.chNFe    ;
   end;
 
Segue tela do erro e meu código em anexo !
 
Desde já lhe agradeço !

Parte_Codigo_Envio.txt

post-2910-0-31784000-1382581466.jpg

Link para o comentário
Compartilhar em outros sites

Mas esse tipo de erro o cStat você não trata o cStat, trata o erro, por isso que não entra no "for".

Esse erro é uma exceção lançada pelo componente.

Régys,,

 

Obrigado pelas respostas e ajudas, gostaria que me ensinasse como posso

sanar este problema !

 

  ACBrNFe1.NotasFiscais.Clear ;
  for i := 0 to GridNotasFIscias do
    Begin
       ActGeraNfe.Execute ;  // Adicona as Notas
    End;
    ACBrNFe1.NotasFiscais.Assinar             ;
    ACBrNFe1.Enviar('1',false) ;  // Faço o envio.

 

    O que preciso fazer aqui depois do enviar, quando enviar 01 só uma nota já

    que quando envio mais de uma dá certo ?

 

    Desde já te agradeço !

Link para o comentário
Compartilhar em outros sites

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