Ir para conteúdo
  • Cadastre-se

dev botao

Mensagem No Danfe Offline / Envio Assíncrono


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

Recommended Posts

Boa tarde, estou com duas dúvidas na implementação do módulo de NFC-e utilizando o componente Acbr.

 

Podem me ajudar?

 

1) DANFE Offline

Estou gerando a NFC-e no modo offline, mas não consigo adicionar uma mensagem na impressão do DANFE, para indicar que o DANFE foi emitido offline.

Estou fazendo desta forma e no DANFE a mensagem não é impressa. Ambiente de Homologação.

 

      Ide.modelo    := 65;     
      Ide.tpImp     := tiNFCe;
      Ide.indFinal  := cfConsumidorFinal;
      Ide.indPres   := pcPresencial;

      Ide.tpEmis := teOffLine;
      Ide.dhCont := Ide.dEmi;
      Ide.xJust := 'DANFE EM CONTINGÊNCIA OFFLINE. SUA CONSULTA ESTARÁ DISPONÍVEL EM ALGUMAS HORAS.';


 
2) Envio da NFC-e no modo assíncrono
2-A - Posso enviar apenas uma NF no modo assíncrono ou devo enviar no modo síncrono?
Fiz um teste, enviando apenas uma NF no modo assíncrono e funcionou, retornou em 20 segundos, mas fico em dúvida é se é o correto, por conta da dúvida 2B.

 
2-B - A forma que estou fazendo, abaixo, é a mais correta para o modo assíncrono?
Me baseei no exemplo do componente.
Minha dúvida é se isso pode demorar muito tempo e o sistema ficar travado (mais de 5 minutos), como já ocorreu, e acabei finalizando a aplicação.
 
Estou utilizando o Webservice do Amazonas.
 
Existe outra forma?

            ACBrNFe1.Enviar(ACBrNFe1.WebServices.Enviar.Lote
                           ,False    //Imprimir = False
                           ,False); //Assincrono


          MemoResp.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.Retorno.RetWS);
          memoRespWS.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.Retorno.RetornoWS);
          LoadXMLRetorno(MemoResp, WBResposta, ACBrNFe1.WebServices.Enviar.Lote);

          MemoDados.Lines.Add('');
          MemoDados.Lines.Add('Envio NFe');
          MemoDados.Lines.Add('tpAmb: '+ TpAmbToStr(ACBrNFe1.WebServices.Retorno.TpAmb));
          MemoDados.Lines.Add('verAplic: '+ ACBrNFe1.WebServices.Retorno.verAplic);
          MemoDados.Lines.Add('cStat: '+ IntToStr(ACBrNFe1.WebServices.Retorno.cStat));
          MemoDados.Lines.Add('cUF: '+ IntToStr(ACBrNFe1.WebServices.Retorno.cUF));
          MemoDados.Lines.Add('xMotivo: '+ ACBrNFe1.WebServices.Retorno.xMotivo);
          MemoDados.Lines.Add('cMsg: '+ IntToStr(ACBrNFe1.WebServices.Retorno.cMsg));
          MemoDados.Lines.Add('xMsg: '+ ACBrNFe1.WebServices.Retorno.xMsg);
          MemoDados.Lines.Add('Recibo: '+ ACBrNFe1.WebServices.Retorno.Recibo);
          MemoDados.Lines.Add('Protocolo: '+ ACBrNFe1.WebServices.Retorno.Protocolo);



// E utilizo os campos abaixo para pegar o retorno de cada NF.
          AcbrNFe1.NotasFiscais.Items[nCt].NFe.procNFe.cStat
         ACBrNFe1.WebServices.Enviar.Lote,
         ACBrNFe1.WebServices.Retorno.Recibo,
         AcbrNFe1.NotasFiscais.Items[nCt].NFe.procNFe.nProt,              //ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items[nCt].nProt,
         AcbrNFe1.NotasFiscais.Items[nCt].NFe.procNFe.digVal

 
 
 
Obrigado!
 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Felipe,

 

 

A impressão do DANFE depende do que você esta usando, cada Report reage de uma forma diferente do outro.

 

Isso aqui esta errado:

 

ACBrNFe1.Enviar(ACBrNFe1.WebServices.Enviar.Lote
                           ,False    //Imprimir = False
                           ,False); //Assincrono

 

O correto é:

 

ACBrNFe1.Enviar(nLote  // variável que pode ser do tipo Integer ou String contendo o numero do lote.
                           ,False    //Imprimir = False
                           ,False); //Assincrono

 

 

Outra coisa, se o lote possui apenas uma nota é interessante o modo Síncrono caso contrario Assíncrono.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Boa tarde Ítalo, muito obrigado!

 

Vamos lá:

1) Estou utilizando o ACBrDANFCeFortesFr

 

2) OK. Na verdade, eu estava alimentando na linha de cima (que não copiei aqui) a propriedade  "ACBrNFe1.WebServices.Enviar.Lote" com o número do lote de desejado,

 mas vou fazer da forma que você sugeriu, fica melhor.

 

Quanto ao retorno, é possível que o webservice não me dê um retorno e eu tenha que executar uma consulta manual?

Se sim, utilizo o ACBrNFe1.Consultar para puxar o retorno depois? E pego o retorno igual ao código que postei acima.

 

3) Outra dúvida sobre o envio Assíncrono: como faço para o componente ou o delphi "cair fora", ou seja, nao ficar travado aguardando o retorno do webservice?

 

 

Muito obrigado! Desculpe tantas dúvidas mas nunca trabalhei com "processos" assíncronos e faz tempo que trabalhei com NF-e, só voltei a mexer mesmo no componente por conta da NFC-e. Estou tirando a ferrugem.

Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution

Boa tarde Felipe,

 

Quanto ao DANFE não trabalho com o Fortes, logo não sou a pessoa mais indicada para lhe ajudar.

 

Se cada PDV do seu cliente vai enviar para a SEFAZ a nota, o lote sempre vai conter uma unica nota sendo assim você pode atribuir o valor True ao terceiro parâmetro do Enviar para que o mesmo realize o envio no modo Síncrono.

 

Agora se o envio vai ficar a cargo de um servidor o lote poderá conter mais de uma nota, neste caso sugiro atribuir o valor False para que seja enviado no modo Assíncrono.

 

Independente do modo de envio a minha sugestão é:

 

Após o envio se ocorrer algum erro, primeiro realize uma consulta, se o lote foi realmente enviado e processado você terá como retorno o protocolo de autorização, caso contrario o erro acusando que a nota não consta na base de dados da SEFAZ, neste caso fica claro que o envio não foi bem sucedido, então você deve realizar o envio novamente.

 

Se persistir o problema, podemos concluir que a SEFAZ-Autorizadora esta com problemas, neste caso deve-se adotar o modo de contingência aceito pela UF do emitente.

  • Curtir 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Quanto ao DANFE, está OK.

Estou postando apenas para auxiliar os próximos que possam pesquisar e chegar no meu tópico.

- Tinha uma sujeira no código que estava limpando o  InfAdic.infCpl no momento errado.

 

Dicas:

- O DANFE do Fortes Reports não utiliza o campo Ide.xJust. As observações ao consumidar são impressas pelo InfAdic.infCpl, então é aqui que se deve adicionar qualquer mensagem.

- Em homologação, o componente, no lugar de imprimir  "EMITIDA EM CONTINGÊCIA", imprime "EMITIDA EM AMBIENTE DE HOMOLOGAÇÃO - SEM VALOR FISCAL". Por isso, quando se imprime um DANFE offline em homologação, a mensagem de contingência não é impressa.

Link para o comentário
Compartilhar em outros sites

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