Jump to content

Assista click.png tectoy.png

C6 chamada_c6.png botao.png

Receber retorno da situação da NFe nota por nota no envio de LOTE


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

Recommended Posts

  • Consultores

Bom dia Graziani,

Veja este fragmento de código:

       for i := 0 to (ACBrNFe.NotasFiscais.Count - 1) do
        begin
         DM_VEN.IncAltDel.SQL.Clear;
         DM_VEN.IncAltDel.SQL.Add('Update Ven_Notas Set');
         DM_VEN.IncAltDel.SQL.Add('Enviado = :xEnviado,');
         DM_VEN.IncAltDel.SQL.Add('Protocolado = :xProtocolado,');
         DM_VEN.IncAltDel.SQL.Add('Protocolo = :xProtocolo,');
         DM_VEN.IncAltDel.SQL.Add('Impresso = :xImpresso,');
         DM_VEN.IncAltDel.SQL.Add('cStatus = :xcStatus,');
         DM_VEN.IncAltDel.SQL.Add('xMotivo = :xxMotivo');
         DM_VEN.IncAltDel.SQL.Add('Where Serie = :xSerie');
         DM_VEN.IncAltDel.SQL.Add('and Documento = :xNumero');
         DM_VEN.IncAltDel.Params[0].AsString:='S';
         if ACBrNFe.NotasFiscais.Items[i].NFe.procNFe.cStat = 100
          then begin
           DM_VEN.IncAltDel.Params[1].AsString:='S';
           DM_VEN.IncAltDel.Params[2].AsString:=ACBrNFe.NotasFiscais.Items[i].NFe.procNFe.nProt;
          end
          else begin
           DM_VEN.IncAltDel.Params[1].AsString:='N';
           DM_VEN.IncAltDel.Params[2].AsString:='';
          end;
         DM_VEN.IncAltDel.Params[3].AsString:='S';
         DM_VEN.IncAltDel.Params[4].AsInteger:=ACBrNFe.NotasFiscais.Items[i].NFe.procNFe.cStat; // cStatus
         DM_VEN.IncAltDel.Params[5].AsString:=ACBrNFe.NotasFiscais.Items[i].NFe.procNFe.xMotivo; // xMotivo
         DM_VEN.IncAltDel.Params[6].AsInteger:=ACBrNFe.NotasFiscais.Items[i].NFe.Ide.serie;
         DM_VEN.IncAltDel.Params[7].AsInteger:=ACBrNFe.NotasFiscais.Items[i].NFe.Ide.nNF;
         DM_VEN.IncAltDel.ExecSQL;
        end;

Tome cuidado, no retorno se alguma nota for rejeitada ela estará em primeiro lugar e não na ordem que ela se encontra no lote que foi enviado.

  • Like 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

Link to comment
Share on other sites

  • 2 weeks later...

Bom dia, Italo

Estou tentando implementar o envio por lote, mas ele sempre da except ao tentar enviar....

ACBrNFe.Enviar(lote,false);

e ai da a mensagem com as nota fiscais com problemas....

Qual é procedimento correto para acertar esse problema ???

 

Obrigado....

 

 

Link to comment
Share on other sites

Bom dia,

 

Posso usar dessa forma ???

 

     ACBrNFe.WebServices.Enviar.Lote := inttostr(max);
     ACBrNFe.WebServices.Enviar.Sincrono := false;
     ACBrNFe.WebServices.Enviar.Executar;

Se sim qual é o procedimento para o retorno do lote com tratamento de nota a nota...

 

Obrigado...

 

Link to comment
Share on other sites

  • Consultores

Bom dia Graziani,

Sim, pode ser desta forma para realizar o envio.

Mas precisamos saber os erros.

Lembre-se que existem erros de validação, neste caso as notas nem sequer são enviadas, pois a validação ocorre antes do envio.

A solução é fazer as correções na aplicação de tal forma que não ocorra mais erros de validação.

E existe erros de rejeição, neste caso as notas foram enviadas, mas algumas ou todas foram rejeitadas.

No arquivo de retorno da SEFAZ consta um grupo chamado <protNFe> para cada nota constante no lote.

Dentro do grupo <protNFe> entre outras informações temos a chave da NFe, status <cStat> e a descrição literal do status <xMotivo>.

Se uma nota for autorizadas teremos como status o valor 100 e a descrição como: Autorizado o uso da NFe.

Por outro lado se ela for rejeitada o status terá um valor referente a rejeição e a descrição da mesma.

Na rotina acima postada por mim, note que independente da nota ter sido autorizada ou não é salvo no banco de dados o status e a descrição

Desta forma é possível saber quais foram rejeitadas e qual foi o motivo da rejeição.

As notas rejeitadas, devemos efetuar as correções e enviar novamente com o mesmo numero uma vez que elas não foram aceitas pela SEFAZ.

As correções podem ser a nível de  dado, por exemplo uma Inscrição Estadual informada errada ou até mesmo uma correção na aplicação, como por exemplo o total de desconto não bate com a somatória de desconto informado em cada item.

Espero ter ajudado.

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

Link to comment
Share on other sites

  • Consultores

Boa tarde Graziani,

Segundo as telas que você postou em anexo notei que o envio do lote foi hoje, mas a chave da nota que a SEFAZ esta rejeitando se refere a uma nota de junho de 2015, esta correto isso?

Chave: 32150628.....

32 = código da UF

15 = ano, no caso 2015

06 = mês

Como você esta utilizando os procedimentos diretos, ou seja não esta utilizando o método Enviar(<numLote>, <imprimirDANFE>, <ModoSincrono>), consequentemente você esta utilizando os demais procedimentos para consultar a situação do lote fornecendo o numero do recibo e por fim consultando o lote para obter o resultado do processamento do mesmo.

Nessa última consulta você deve estar consultando pela chave da nota enviada, você esta informando a chave correta?

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

Link to comment
Share on other sites

×
×
  • 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.