Jump to content

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

Recommended Posts

  • Consultores
Posted

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

Araraquara - A era dos Trólebus

  • 2 weeks later...
Posted

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

 

 

Posted

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

 

  • Consultores
Posted

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

Araraquara - A era dos Trólebus

Posted

Bom dia, Italo

 

Consegui resolver esse problema de envio e retorno em cima das suas explicações, só que agora esta dando um rejeição : 217 - NF-e não conta na base de dados do SEFAZ..

Segue arquivo em anexo, com as mensagens...

 

Obrigado...

nfe.docx

  • Consultores
Posted

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

Araraquara - A era dos Trólebus

Posted

Italo,

Estou fazendo a consulta uma a uma :

ACBrNFe.WebServices.Consulta.NFeChave   := vchave;
ACBrNFe.WebServices.Consulta.Executar;

 

Outra coisa, não são todas que estão dando esse erro...

 

Obrigado...

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

The popup will be closed in 10 seconds...