Ir para conteúdo
  • Cadastre-se

dev botao

NFe - Evento - 790700 Averbação para Exportação (Órgão Autor: AN), retorna teNaoMapeado


William Mometti
Ver Solução Respondido por Italo Giurizzato Junior,
  • Este tópico foi criado há 1305 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Bom dia a todos,
 

Um cliente solicitou uma solução para buscar as informações do evento de Averbação de Exportação código do Evento 790700, onde o mesmo fica vinculado as NF-e de Exportação Direta e Indireta (CFOPs 7.101, 7.102, 5.501, 5.502, 6.501, 6.502) emitida POR ELE MESMO.

Nesse evento tem os campos abaixo que são os importantes para eu pegar e fazer minha documentação, mas não são carregados nas propriedades do Componente ACBrNFe, só estão na propriedade XML é claro:
Item da NF-e, Item da DUE, Número da DUE, Quantidade Averbada (uTrib), Data do Embarque, Data da Averbação, Motivo da Alteração

Estou usando o componente ACBrNFe com a função:
ACBrNFe1.DistribuicaoDFePorUltNSU( UFtoCUF( s_UF_Autor ), s_CNPJ, IntToStr( i_UltimoNSU ) );

Faço o clássico loop usando repeat, e essa função me retorna certinho os XMLs das NF-e e os Eventos etc. Só que percebi que no caso do Evento de Averbação de Exportação, o componente ACBrNFe não está mapeando as propriedades desse Evento.
Aliais quando o evento é Averbação de Exportação a propriedade abaixo do componente nem é definida.

( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.procEvento.tpEvento = teAverbacaoExportacao )
Em vez de teAverbacaoExportacao ela fica teNaoMapeado.


E consigo ver as seguintes propriedades abaixo:

( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.schema = schprocEventoNFe )
( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.procEvento.chDFe <> '' )
( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.procEvento.cOrgao = 91 )
( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.procEvento.CNPJ = '33683111000107' ) // CNPJ do SERPRO
( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.procEvento.tpEvento = teNaoMapeado )
( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.procEvento.DetEvento.DescEvento = 'Averbação para Exportação' )
( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.procEvento.RetInfEvento.cStat = 135 )


O XML está certinho dentro da Propriedade:
ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.XML

Eu sei que eu posso pegar os dados do XML (ficar lendo os XMLs que estão vindo) dessa propriedade e utilizar. Mas quero fazer a pergunta se eu estou tentando pegar os dados desse evento de maneira errada ou se o componente ainda não está preparado para trabalhar com esse Evento de Averbação de Exportação (daí o porquê de retornar Não Mapeado), nos Eventos de Manifestação do Destinatário e Carta de Correção o componente preenche certinho as propriedades e com isso facilitando muito a extração das informações.


Agradeço desde já a atenção de todos.
 

Evento_AverbacaoExportacao.jpg

Evento_AverbacaoExportacao_02.jpg

Evento_AverbacaoExportacao_04.jpg

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde,

Esse evento não é enviado para SEFAZ pelo Emitente da Nota e sim pelo Fisco.

Pelo que notei o DistribuicaoDFe esta retornado o XML do evento gerado pelo Fisco que esta vinculado a nota.

Você tem o XML do evento?

Se sim, favor anexar para que possamos ver quais são as informações contidas nele e com isso acrescentar os campos nas classes.

 

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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

2 horas atrás, Italo Jurisato Junior disse:

Boa tarde,

Esse evento não é enviado para SEFAZ pelo Emitente da Nota e sim pelo Fisco.

Pelo que notei o DistribuicaoDFe esta retornado o XML do evento gerado pelo Fisco que esta vinculado a nota.

Você tem o XML do evento?

Se sim, favor anexar para que possamos ver quais são as informações contidas nele e com isso acrescentar os campos nas classes.

 

Boa tarde, Italo.

Sim, é o fisco (SISCOMEX) que emite esse evento.

O evento de averbação é um registro eletrônico vinculado às notas fiscais eletrônicas de exportação que instruíram a DU-E, com informações relativas (art. 93 da IN RFB nº 1.702/2017).

Este evento é registrado nas notas fiscais pelo Portal siscomex.gov.br, depois da autorização de embarque ou de transposição de fronteira.

Não basta que a mercadoria tenha sido desembaraçada para que o evento seja enviado à nota fiscal. É necessária a confirmação do embarque. Somente depois desta confirmação é que o evento de averbação de embarque é gerado.

 

Em anexo o XML do Evento de Averbação para Exportação (por questão de segurança eu só troquei o CNPJ na Chave de Acesso, por um fictício, caso precise do XML original posso passar por e-mail).

 

Meu muito obrigado pela atenção.

 

Evento_AverbacaoExportacao_05.jpg

AverbacaoExportacao.xml

Link para o comentário
Compartilhar em outros sites

10 minutos atrás, Mom disse:

Boa tarde, Italo.

Sim, é o fisco (SISCOMEX) que emite esse evento.

O evento de averbação é um registro eletrônico vinculado às notas fiscais eletrônicas de exportação que instruíram a DU-E, com informações relativas (art. 93 da IN RFB nº 1.702/2017).

Este evento é registrado nas notas fiscais pelo Portal siscomex.gov.br, depois da autorização de embarque ou de transposição de fronteira.

Não basta que a mercadoria tenha sido desembaraçada para que o evento seja enviado à nota fiscal. É necessária a confirmação do embarque. Somente depois desta confirmação é que o evento de averbação de embarque é gerado.

 

Em anexo o XML do Evento de Averbação para Exportação (por questão de segurança eu só troquei o CNPJ na Chave de Acesso, por um fictício, caso precise do XML original posso passar por e-mail).

 

Meu muito obrigado pela atenção.

 

Evento_AverbacaoExportacao_05.jpg

AverbacaoExportacao.xml 5 kB · 0 downloads

 

Para melhorar a documentação desse post.

 

Esse evento foi divulgado na Nota Técnica 2014/002, Web Service de Distribuição de DF-e de Interesse dos Atores da NF-e (PF ou PJ), Versão 1.02b de Maio 2017.

http://www.nfe.fazenda.gov.br/portal/exibirArquivo.aspx?conteudo=s/plBMpQotg=

 

Obrigado!

 

 

Evento_AverbacaoExportacao_06.jpg

Evento_AverbacaoExportacao_07.jpg

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde,

Muito obrigado pelo XML de retorno que contem o evento de averbação.

Agora é possível implementar a classe para poder ler os dados desse evento.

Em breve será disponibilizado a atualização dos fontes com a leitura correta desse evento.

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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Consultores

Boa noite,

Favor atualizar os fontes, reinstale a suíte ACBr e faça novos testes.

  • Curtir 3
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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

17 horas atrás, Italo Jurisato Junior disse:

Boa noite,

Favor atualizar os fontes, reinstale a suíte ACBr e faça novos testes.

Boa tarde, Italo.

Eu segui o seu procedimento de atualizar e instalar o ACBr novamente.

 

Agora consigo ver mais propriedades alimentadas como por exemplo:

ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.procEvento.tpEvento = teAverbacaoExportacao

ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.procEvento.FRetInfEvento.FtpEvento = teAverbacaoExportacao

 

Pelo que vi o que mudou:

Dentro de propriedade "ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.procEvento.FDetEvento" agora tem a "ItensAverbados" que pelo que vi é uma Collection

Onde creio que poderia acessar os valores assim:

ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.procEvento.DetEvento.itensAverbados.Items[0]

Mais isso no Debug "Evaluate/Modify" retorna o erro (em anexo imagem):

"Delphi exception EListError at $3052F8A1"

 

ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.procEvento.detEvento.itensAverbados.Items[0].dhEmbarque

Debug "Inaccessible value"

Em execução da o erro: "List index out of bounds (0)"

 

 

Agradeço pela atenção,

Evento_AverbacaoExportacao_08.jpg

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia,

Não sei quando você atualizou os fontes, pois enviei para o repositório no dia 3/10 as 20:11 e depois uma correção no mesmo dia as 20:14

Favor atualizar novamente.

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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Em 11/10/2019 at 12:32, Italo Jurisato Junior disse:

Bom dia,

Não sei quando você atualizou os fontes, pois enviei para o repositório no dia 3/10 as 20:11 e depois uma correção no mesmo dia as 20:14

Favor atualizar novamente.

Bom dia, Italo.

Hoje fiz a atualização geral e reinstalei o componente ACBr.

E testei novamente a busca pelos eventos de Averbação de Exportação e continuou o problema citado acima.

Não consigo ler o que está dentro da Propriedade "itensAverbados", não lista itens ou qualquer propriedade valida, conforme imagem em anexo.

 

// Por hora estou pegando os itens Averbados dentro do XML

// Minha rotina é parecida com a citada abaixo...
// No loop dos eventos retornado pelo "ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip"

  if ( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].procEvento.tpEvento = teAverbacaoExportacao ) then
  begin

    XMLDocument1.LoadFromXML( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].XML );
    nodedetEvento := XMLDocument1.ChildNodes.FindNode('procEventoNFe').ChildNodes.FindNode('evento').ChildNodes.FindNode('infEvento').ChildNodes.FindNode('detEvento');

    for i_ChildNodes := 0 to nodedetEvento.ChildNodes.Count - 1 do
    begin

      if ( nodedetEvento.ChildNodes[i_ChildNodes].NodeName = 'itensAverbados' ) then
      begin

        nodeitensAverbados := nodedetEvento.ChildNodes[i_ChildNodes];

        xml_dhEmbarque   := ISO8601ToDate( nodeitensAverbados.ChildValues['dhEmbarque'], False );
        xml_dhAverbacao  := ISO8601ToDate( nodeitensAverbados.ChildValues['dhAverbacao'], False );
        xml_nDue         := FormatMaskText('99aa999999999\-9;0;', nodeitensAverbados.ChildValues['nDue'] );

        xml_nItem        := nodeitensAverbados.ChildValues['nItem'];
        xml_nItemDue     := nodeitensAverbados.ChildValues['nItemDue'];
        xml_qItem        := StringReplace( nodeitensAverbados.ChildValues['qItem'], '.', ',', [rfReplaceAll] );
        xml_motAlteracao := nodeitensAverbados.ChildValues['motAlteracao'];

        Inc( i_itensAverbados );

      end;

    end;
  end;

 

Obrigado pela atenção.

 

 

Evento_AverbacaoExportacao_09.jpg

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde,

Notei que a sua rotina tem um IF que compara o valor de tpEvento com o valor teAverbacaoExportacao.

Primeira pergunta ao executar essa rotina ele entra dentro desse IF?

Notei que você carrega o conteúdo do campo XML para poder ler os valores das TAGs (não porque você fez dessa forma, mas tudo bem),

a propriedade XML contem o XML do evento?

 

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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

5 horas atrás, Italo Jurisato Junior disse:

Boa tarde,

Notei que a sua rotina tem um IF que compara o valor de tpEvento com o valor teAverbacaoExportacao.

Primeira pergunta ao executar essa rotina ele entra dentro desse IF?

Notei que você carrega o conteúdo do campo XML para poder ler os valores das TAGs (não porque você fez dessa forma, mas tudo bem),

a propriedade XML contem o XML do evento?

 

Boa noite, Italo.

 

Primeira pergunta ao executar essa rotina ele entra dentro desse IF?

Sim, você conseguiu acertar essa parte no ACBrNFe.

 

a propriedade XML contem o XML do evento?

Sim, quando "procEvento.tpEvento = teAverbacaoExportacao" e nodedetEvento.ChildNodes[i_ChildNodes].NodeName = 'itensAverbados' eu consigo pegar o XML do evento corretamente em DistribuicaoDFe.retDistDFeInt.docZip.Items.XML.

 

Até o componente ACBrNFe for implementado corretamente essa função do Averbação de Exportação, estarei fazendo essa engenharia alternativa (esta dando 100% certo), até porque o cliente não espera muito. rsss

 

Obrigado pela atenção, até mais.

 

Link para o comentário
Compartilhar em outros sites

  • 3 meses depois ...
Em 16/10/2019 at 21:34, William Mometti disse:

Boa noite, Italo.

 

Primeira pergunta ao executar essa rotina ele entra dentro desse IF?

Sim, você conseguiu acertar essa parte no ACBrNFe.

 

a propriedade XML contem o XML do evento?

Sim, quando "procEvento.tpEvento = teAverbacaoExportacao" e nodedetEvento.ChildNodes[i_ChildNodes].NodeName = 'itensAverbados' eu consigo pegar o XML do evento corretamente em DistribuicaoDFe.retDistDFeInt.docZip.Items.XML.

 

Até o componente ACBrNFe for implementado corretamente essa função do Averbação de Exportação, estarei fazendo essa engenharia alternativa (esta dando 100% certo), até porque o cliente não espera muito. rsss

 

Obrigado pela atenção, até mais.

 

Boa Tarde,

Estou verificando uma forma de buscar estes campos da NFE sem ser necessário consultar nota por nota. Pergunto:

Este cenário sobre XML do evento 790700 "Averbação para Exportação", também é válido para o evento 990 910 "Internalização SUFRAMA"???

Obrigada,

Link para o comentário
Compartilhar em outros sites

3 horas atrás, Bea disse:

Boa Tarde,

Estou verificando uma forma de buscar estes campos da NFE sem ser necessário consultar nota por nota. Pergunto:

Este cenário sobre XML do evento 790700 "Averbação para Exportação", também é válido para o evento 990 910 "Internalização SUFRAMA"???

Obrigada,

 

Boa noite, Bea.

A forma de buscar o evento "990910 - Confirmacao de Internalizacao da Mercadoria na SUFRAMA" é da mesma maneira que o "790700 - Averbação para Exportação".

O problema que eu encontrei foi que a variável "teConfInternalizacao" não está carregando valor nela, ou seja, esse evento "990910 - Confirmacao de Internalizacao da Mercadoria na SUFRAMA" está vindo como Não Mapeado, que é a mesma coisa que estava acontecendo com a variável "teAverbacaoExportacao" do evento "790700 - Averbação para Exportação" ( o Italo acerto no fonte do ACBr ), agora seria top se o Italo pudesse acertar também o evento "990910 - Confirmacao de Internalizacao da Mercadoria na SUFRAMA" no ACBr. 😅

Para mim esses eventos "990910 - Confirmacao de Internalizacao da Mercadoria na SUFRAMA", começaram a ficar disponíveis a partir da data de autorização 23/12/2019.

Esse novo evento começou a ser emitido devido ao novo sistema do SUFRAMA o SIMNAC - Sistema de Ingresso de Mercadoria Nacional (Clique aqui para ver o Manual). (A partir de agora fica extinta a Declaração de Ingresso emitida pelo SUFRAMA, mas no lugar será gerado o Evento “990910 - Internalização SUFRAMA” )

 

Segue mais ou menos a rotina que eu fiz, onde foi feita "a toque de caixa", ou seja, precisa ser melhorada...

 

procedure ConsultarNFeEmitente;
var
  s_CNPJ, s_UF_Autor, s_ChaveNFe, s_NSU_Atual: String;
  docZip: TdocZipCollectionItem;
  i_UltimoNSU, i, j: Integer;
  node_infEvento, node_detEvento: IXMLNode;
  xml_dhEvento, xml_dhVistoria: TDateTime;
  xml_tpEvento, xml_NumeroPINe, xml_LocalidadeVistoria, xml_Posto, xml_Historico: String;
  i_Qtd_DFe_Encontrado: Integer;
begin
  
  i_Qtd_DFe_Encontrado := 0;
  
  s_CNPJ     := '000000000000'; // CNPJ da Empresa
  s_UF_Autor := ACBrNFe1.Configuracoes.WebServices.UF;
  
  // Aqui antes de começar busco qual foi o ultimo NSU que ficou gravado, e caso for a primeira vez será "0"...  
  with qryTemp do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT ... ');
    Open;
    i_UltimoNSU := FieldByName('CodigoUltimoNSU').AsInteger;
  end;

  
  repeat

    try

      ACBrNFe1.DistribuicaoDFePorUltNSU( UFtoCUF( s_UF_Autor ), s_CNPJ, IntToStr( i_UltimoNSU ) );

      i_UltimoNSU := StrToInt( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.ultNSU );
      
      // Rotina que grava o Ultimo NSU consultado, com Data/Hora e Usuário do sistema
      if ( i_UltimoNSU > 0 ) then
        GravaUltimoNSU( i_UltimoNSU );
	  
    except
      on er: Exception do
      begin

        if ( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 0 ) then // Pode ser o Erro de Inativo e Inoperante
        begin

          Sleep( 5000 );

          ACBrNFe1.DistribuicaoDFePorUltNSU( UFtoCUF( s_UF_Autor ), s_CNPJ, IntToStr( i_UltimoNSU ) );

          i_UltimoNSU := StrToInt( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.ultNSU );

          if ( i_UltimoNSU > 0 ) then
            GravaUltimoNSU( i_UltimoNSU );

        end
        else
        begin
          MessageDlg( 'cStat: ' + IntToStr( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat ) + #13#10 +
                      er.Message, mtError, [mbOk], 0 );

          Abort;
        end;

      end;
    end;
    
    // caso haja retorno [138-Documento localizado]
    try
      if ( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 138 ) then
      begin
        j := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Count -1;

        for i:= 0 to j do
        begin

          Inc( i_Qtd_DFe_Encontrado );

          frmAtualizandoDados.Repaint;
          frmAtualizandoDados.Refresh;
          Application.ProcessMessages;

          XMLDocument1.XML.Clear;

          s_ChaveNFe := '';

          if not ( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].procEvento = nil ) and
             not ( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].procEvento.chDFe = EmptyStr ) then
          begin

            s_ChaveNFe := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].procEvento.chDFe;
            s_NSU_Atual := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].NSU;

            // Verifica se é o evento Completo de "990910 - Confirmacao de Internalizacao da Mercadoria na SUFRAMA".
            // Estarei fazendo esse monte de verificações até o ACBr acertar a variável "teConfInternalizacao"
            if ( ( s_ChaveNFe <> '' ) and
                 ( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].schema = schprocEventoNFe ) ) and
               ( ( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].procEvento.tpEvento = teConfInternalizacao ) or
                 ( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].procEvento.detEvento.descEvento = 'Confirmacao de Internalizacao da Mercadoria na SUFRAMA' ) or
                 ( ( AnsiPos('Internalizacao', ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].procEvento.detEvento.descEvento) > 0 ) and
                   ( AnsiPos('SUFRAMA', ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].procEvento.detEvento.descEvento) > 0 ) ) or
                 ( ( AnsiPos('Internalização', ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].procEvento.detEvento.descEvento) > 0 ) and
                   ( AnsiPos('SUFRAMA', ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].procEvento.detEvento.descEvento) > 0 ) ) ) then
            begin

              // Consulta no Banco de Dados para verificar se a NF-e é "Venda destinada à Zona Franca de Manaus ou Áreas de Livre Comércio - CFOP 6.109 e 6.110"
              // Regra de Negócio minha...
              with qryTemp do
              begin
                Close;
                SQL.Clear;
                SQL.Add('SELECT ...');
                SQL.Add('  FROM ... ns');
                SQL.Add(' WHERE ... ');
                SQL.Add('   AND ns.CFOP IN ( ''6.109'', ''6.110'' )');
                ParamByName('p_ChaveNFE').AsString := s_ChaveNFe;
                Open;
              end;

              if ( qryTemp.RecordCount > 0 ) then
              begin
                // Carrega o XML no "XMLDocument1", onde será possível acessar os "Nodes" de maneira mais fácil...
                // Foi feito essa rotina que lê direto no XML, pois, até na data "10/02/2020" o componente ACBrNFe não estava totalmente preparado para trabalhar com esse evento...
                XMLDocument1.XML.Clear;
                XMLDocument1.LoadFromXML( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].XML );

                node_infEvento := XMLDocument1.ChildNodes.FindNode('procEventoNFe').ChildNodes.FindNode('evento').ChildNodes.FindNode('infEvento');
                xml_dhEvento   := ISO8601ToDate( node_infEvento.ChildValues['dhEvento'], False );
                xml_tpEvento   := node_infEvento.ChildValues['tpEvento'];

                node_detEvento         := XMLDocument1.ChildNodes.FindNode('procEventoNFe').ChildNodes.FindNode('evento').ChildNodes.FindNode('infEvento').ChildNodes.FindNode('detEvento');
                xml_NumeroPINe         := node_detEvento.ChildValues['PINe'];
                xml_dhVistoria         := ISO8601ToDate( node_detEvento.ChildValues['dVistoria'], False );
                xml_LocalidadeVistoria := node_detEvento.ChildValues['locVistoria'];
                xml_Posto              := node_detEvento.ChildValues['postoVistoria'];
                xml_Historico          := node_detEvento.ChildValues['xHistorico'];

                // Aqui eu faço a Inserção do Evento no meu Banco de Dados...
                qryTemp2.Close;
                qryTemp2.SQL.Clear;
                qryTemp2.SQL.Add('BEGIN');
                qryTemp2.ExecSQL;

                qryTemp2.Close;
                qryTemp2.SQL.Clear;
                qryTemp2.SQL.Add('INSERT INTO ... ');
                
                qryTemp2.ParamByName('chNFe').AsString                := s_ChaveNFe;
                qryTemp2.ParamByName('NSUProtocolo').AsString         := s_NSU_Atual;
                qryTemp2.ParamByName('dhEvento').AsDateTime           := xml_dhEvento;
                qryTemp2.ParamByName('tpEvento').AsString             := xml_tpEvento;
                qryTemp2.ParamByName('nSeqEvento').AsInteger          := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].procEvento.nSeqEvento;
                qryTemp2.ParamByName('descEvento').AsString           := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].procEvento.detEvento.descEvento;
                qryTemp2.ParamByName('ProtocoloEvento').AsString      := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].procEvento.RetinfEvento.nProt;
                qryTemp2.ParamByName('dhAutorizacaoSEFAZ').AsDateTime := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].procEvento.RetinfEvento.dhRegEvento;
                qryTemp2.ParamByName('NumeroPINe').AsString           := xml_NumeroPINe;
                qryTemp2.ParamByName('dhVistoria').AsDateTime         := xml_dhVistoria;
                qryTemp2.ParamByName('LocalidadeVistoria').AsString   := xml_LocalidadeVistoria;
                qryTemp2.ParamByName('Posto').AsString                := xml_Posto;
                qryTemp2.ParamByName('Historico').AsString            := xml_Historico;

                qryTemp2.ExecSQL;

                qryTemp2.Close;
                qryTemp2.SQL.Clear;
                qryTemp2.SQL.Add('COMMIT');
                qryTemp2.ExecSQL;

              end;

            end;

          end;

        end;
      end;
    except
      on er: exception do
      begin
        raise Exception.Create('Erro Capturado: ' + er.Message);
      end;
    end;

  until ( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat IN [108,109,137] );

  if ( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 108 ) then
  begin
    MessageDlg('cStat = 108: Serviço Paralisado Momentaneamente (curto prazo).', mtWarning, [mbOk], 0);
  end
  else if ( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 108 ) then
  begin
    MessageDlg('cStat = 109: Serviço Paralisado sem Previsão.', mtWarning, [mbOk], 0);
  end
  else if ( ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 137 ) then
  begin

    // Caso tenha encontrado Documento Fiscal Eletrônica, irá da a mensagem "Pesquisa NF-e executado com sucesso!".
    if ( i_Qtd_DFe_Encontrado > 0 ) then
    begin
      MessageDlg('Pesquisa de NF-e que foram Internalizadas foi executado com sucesso!', mtInformation, [mbOk], 0);
    end
    else
    begin
      MessageDlg('cStat = 137: Nenhum documento localizado.', mtWarning, [mbOk], 0);
    end;

  end;
  
end;

 

Espero que eu posso ter ajudado em alguma coisa. 👍

 

Até mais...

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Administradores

Bom dia.

Caso queira aplicar a correção e nos enviar o fonte, será muito bem vindo tb.

Att.

  • Curtir 1
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

5 horas atrás, Juliana Tamizou disse:

Bom dia.

Caso queira aplicar a correção e nos enviar o fonte, será muito bem vindo tb.

Att.

 

Boa, Juliana! 

Todos que puderem vamos ajudar a comunidade.

 

Para resolver o problema do "ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.procEvento.tpEvento", não mapear os eventos “990900 - Vistoria Suframa” e "990910 - Internalização Suframa" efetuar a seguinte modificação no Fonte do ACBr.


Diretório:
ACBr\Fontes\ACBrDFe\ACBrNFe\PCNNFe

Alterar a function "StrToTpEventoNFe" no arquivo: "pcnConversaoNFe.pas"

De:

function StrToTpEventoNFe(out ok: boolean; const s: string): TpcnTpEvento;
begin
  Result := StrToEnumerado(ok, s,
            ['-99999', '110110', '110111', '110112', '110140', '111500',
             '111501', '111502', '111503', '210200', '210210', '210220',
             '210240', '610600', '610614', '790700'],
            [teNaoMapeado, teCCe, teCancelamento, teCancSubst, teEPECNFe,
             tePedProrrog1, tePedProrrog2, teCanPedProrrog1, teCanPedProrrog2,
             teManifDestConfirmacao, teManifDestCiencia,
             teManifDestDesconhecimento, teManifDestOperNaoRealizada,
             teRegistroCTe, teMDFeAutorizadoComCTe, teAverbacaoExportacao ]);
end;

 

Para:

function StrToTpEventoNFe(out ok: boolean; const s: string): TpcnTpEvento;
begin
  Result := StrToEnumerado(ok, s,
            ['-99999', '110110', '110111', '110112', '110140', '111500',
             '111501', '111502', '111503', '210200', '210210', '210220',
             '210240', '610600', '610614', '790700', '990900', '990910'],
            [teNaoMapeado, teCCe, teCancelamento, teCancSubst, teEPECNFe,
             tePedProrrog1, tePedProrrog2, teCanPedProrrog1, teCanPedProrrog2,
             teManifDestConfirmacao, teManifDestCiencia,
             teManifDestDesconhecimento, teManifDestOperNaoRealizada,
             teRegistroCTe, teMDFeAutorizadoComCTe, teAverbacaoExportacao,
             teVistoriaSuframa, teConfInternalizacao]);
end;

 

Fiz o teste em minha aplicação e deu certo. 😉👍

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

1 hora atrás, William Mometti disse:

Todos que puderem vamos ajudar a comunidade.

Esse é o espirito 😀

1 hora atrás, William Mometti disse:

Fiz o teste em minha aplicação e deu certo. 😉👍

Pode por favor anexar a unit alterada.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

Adicionado para validação, retornaremos no tópico assim que possível.

Att.

  • Curtir 1
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution

Bom dia William,

Muito obrigado pela contribuição, já esta no repositório.

  • Curtir 2
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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • 6 meses depois ...
  • Administradores

Boa tarde.

Em 28/08/2020 at 20:43, PAULOHPSANTOS disse:

Aproveitando o tópico, gostaria de saber se consigo retornar esses dados de itens averbados, para notas onde minha empresa é a emitente. Como pego esses dados nessa situação?

Para novas dúvidas queira por favor criar um novo tópico.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

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