Jump to content

dev botao

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

Recommended Posts

Posted

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!
 

 

  • Consultores
Posted

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 / Araraquara-SP

Araraquara - A era dos Trólebus

Posted

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.

  • Consultores
  • Solution
Posted

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.

  • Like 1
Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Posted

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.

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