Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Consultores
Postado

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.

  • Curtir 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 semanas depois ...
Postado

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

 

 

Postado

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
Postado

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

Postado

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
Postado

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

Postado

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

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

The popup will be closed in 10 segundos...