Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Como faço para tratar erros quando envio em lote?

Por exemplo, envio 10 notas em um lote, as 9 primeiras deram certo, e na décima deu erro. Como faço para colocar que deu certo nas 9 primeiras e erro na décima?

No demo tem a função ChecarResposta(tmRecepcionar); No final dessa função tem o seguinte código:

for i := 0 to ACBrNFSeX1.NotasFiscais.Count -1 do
  begin
    memoLog.Lines.Add(' ');
    memoLog.Lines.Add('NFS-e Numero....: ' + ACBrNFSeX1.NotasFiscais.Items[i].NFSe.Numero);
    memoLog.Lines.Add('Cod. Verificacao: ' + ACBrNFSeX1.NotasFiscais.Items[i].NFSe.CodigoVerificacao);
    memoLog.Lines.Add('Prestador.......: ' + ACBrNFSeX1.NotasFiscais.Items[i].NFSe.Prestador.RazaoSocial);
    memoLog.Lines.Add('Tomador.........: ' + ACBrNFSeX1.NotasFiscais.Items[i].NFSe.Tomador.RazaoSocial);

    if ACBrNFSeX1.NotasFiscais.Items[i].NFSe.SituacaoNfse = ACBrNFSeXConversao.snCancelado then
      memoLog.Lines.Add('A Nota encontra-se Cancelada.');

    if ACBrNFSeX1.NotasFiscais.Items[i].NomeArq <> '' then
    begin
      memoLog.Lines.Add('Nome do arquivo.: ' + ACBrNFSeX1.Configuracoes.Arquivos.GetPathNFSe() + '\' +
                                               ACBrNFSeX1.NotasFiscais.Items[i].NomeArq);
      if ACBrNFSeX1.Configuracoes.Arquivos.Salvar then
        memoLog.Lines.Add('==> Xml da nota salvo na pasta e com o nome informado acima.')
      else
        memoLog.Lines.Add('==> Xml da nota não salvo em disco.');

      // Na propriedade XmlNfse temos o XML da NFS-e
      LoadXML(ACBrNFSeX1.NotasFiscais.Items[i].XmlNfse, WBXmlNotas);
    end;
  end;

Ele percorre todas as notas enviadas no lote, mas os retornos vem em branco quando dá um erro, vem em branco para todas as notas e não somente na que deu erro.

Pensei em verificar, por exemplo, se o campo ACBrNFSeX1.NotasFiscais.Items[i].NFSe.CodigoVerificacao vier preenchido quer dizer que deu certo, porém ele vem em branco para todas as notas quando tem erro.

Como vocês fazem? Alguma dica? 

Postado

Consegui resolver fazendo a consulta das notas, uma por uma dentro do For que percorre as notas no final do ChecarResposta.

//consulto a nota para saber se deu certo ou deu erro
                          ACBrNFSeX1.ConsultarNFSePorRps(DMTables.TNotaServicosNOTAFISCAL.AsString, DMTables.TNotaServicosSERIE.AsString, '1', DMTables.TNotaServicosNF_COD_VERIFICACAO.AsString);
                          ChecarResposta(tmConsultarNFSePorRps);
                          with ACBrNFSeX1.WebService do
                          begin
                            with ConsultaNFSeporRps do
                            begin
                            if Erros.Count = 0 then
                               begin
                                 PageControl1.ActivePage := TNotas;
                                 DMTables.TNotaServicosNF_STATUS.AsString           := 'Enviada';
                                 DMTables.TNotaServicosNF_NUMERO.AsString           := ACBrNFSeX1.NotasFiscais.Items[i].NFSe.Numero;
                                 DMTables.TNotaServicosNF_DT_AUTORIZACAO.AsDateTime := Data;// ACBrNFSeX1.NotasFiscais.Items[0].NFSe.dhRecebimento;
                                 DMTables.TNotaServicosNF_COD_VERIFICACAO.AsString  := ACBrNFSeX1.NotasFiscais.Items[i].NFSe.CodigoVerificacao;
                                 DMTables.TNotaServicosCAMINHO_XML.AsString         := ACBrNFSeX1.NotasFiscais.Items[i].NomeArq;
                                 Definir_Path_PDF(DMTables.TNotaServicosCAMINHO_XML.AsString);
                                 if ACBrNFSeX1.NotasFiscais.Items[0].NFSe.SituacaoNfse = ACBrNFSeXConversao.snCancelado then
                                    begin
                                      DMTables.TNotaServicosNF_STATUS.AsString      := 'Cancelada';
                                      DMTables.TNotaServicosCAN.AsString            := 'S';
                                      DMTables.TNotaServicosNF_DT_CAN.AsDateTime    := DataCanc; 
                                    end;
                               end
                            else
                               begin
                                 PageControl1.ActivePage := TLog;
                                 DMTables.TNotaServicosNF_STATUS.AsString := 'Erro de envio';
                                 DeuErro := 'S';
                               end;
                            end;
                          end;

 

  • Este tópico foi criado há 604 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.