Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Bom dia galera, não sei se postei no lugar correto mas vamos lá.

Estou finalizando a implementação da CC-e utilizando o componente do AcBR, o AcBRNFe.

Está tudo OK, porém quando envio um lote com mais de um evento, ao pegar o retorno do segundo evento do lote ele dá erro IndexOfBound, que é estouro de lista. Como se não houvesse mais de um evento no retorno do lote. O Web Service é do Paraná e os componentes estão atualizados, hoje mesmo atualizei.

Segue o meu código fonte:


        { Setando e gravando os dados do XML de retorno pelo objeto do AcBR }

        { Salvando os dados de retorno do lote }

        Lote.Retorno.Stat     := IntToStr( self.AcbrNfe.WebServices.CartaCorrecao.CCeRetorno.cStat );

        Lote.Retorno.Motivo   := self.AcbrNfe.WebServices.CartaCorrecao.CCeRetorno.xMotivo;

        Lote.Retorno.Save;


        for nX := 0 to ( Lote.Eventos.Count - 1 ) do

        begin

           { Salvando os dados de retorno dos eventos }

           Lote.Eventos.Items[nX].CriaRetorno;

           Lote.Eventos.Items[nX].Retorno.Stat    := IntToStr( self.AcbrNfe.WebServices.CartaCorrecao.CCeRetorno.retEvento.Items[nX].RetInfEvento.cStat );

           Lote.Eventos.Items[nX].Retorno.Motivo  := self.AcbrNfe.WebServices.CartaCorrecao.CCeRetorno.retEvento.Items[nX].RetInfEvento.xMotivo;

           Lote.Eventos.Items[nX].Retorno.Save;


           { Salvando o XML no banco de dados }

           Lote.Eventos.Items[nX].Retorno.CriaXML;

           if Assigned( Lote.Eventos.Items[nX].Retorno.XML ) then

            begin

               XMLStream := nil;


               try

                 XMLStream := TStringStream.Create( self.AcbrNfe.WebServices.CartaCorrecao.CCeRetorno.retEvento.Items[nX].RetInfEvento.XML );


                 Lote.Eventos.Items[nX].Retorno.XML.CriaStream;

                 Lote.Eventos.Items[nX].Retorno.XML.XML.LoadFromStream( XMLStream );

                 Lote.Eventos.Items[nX].Retorno.XML.Save;

               finally

                 if Assigned( XMLStream ) then

                  begin

                     XMLStream.Free;

                     XMLStream := nil;

                  end;

               end;

            end;

        end;

O erro ocorre na linha: Lote.Eventos.Items[nX].Retorno.Stat := IntToStr( self.AcbrNfe.WebServices.CartaCorrecao.CCeRetorno.retEvento.Items[nX].RetInfEvento.cStat );

Como se não houvesse essa posição na lista. O Count() da lista de eventos (retEvento) só retorna 1, como se houvesse apenas 1 evento, quando na verdade há dois.

Desde já agradeço pessoal. :D

Postado

Tenta debugar a function "TNFeEnvEvento.Executar" e verifica se realmente etá tendo um retorno, no caso gerando o arquivo : -ProcEventoNFe.xml. Existe um outro tópico o pessoal comentando sobre esse erro, mais era pau no webservice, não tava obtendo retorno.

Ricardo Rodrigues
Analista Desenvolvedor  – Arapongas - PR
+[email protected]
(: (43) 99917-9907

Postado

Obrigado, vou verificar mesmo. Eu cheguei a ver esse post, mas a data parecia ser antiga e a solução parece que foi atualizar os componentes, por isso criei este.

Vou debugar aqui, já posto o resultado. ;)

Postado

Olha amigo, esse é o XML de retorno do Web Service. Propriedade RetornoWS da classe TWebServiceBase. (Ignore a identação que eu fiz meio que na mão aqui porque peguei o valor direto do campo no debug do delphi.)

'

41
1.00
182PR-Evt-1_1_541128Lote de Evento Processado


2
PR-Evt-1_1_5
41
135Evento registrado e vinculado a NF-e
41120701934032000127550000000000301000000300
110110
Carta de Correção
6
2012-07-27T14:31:55-03:00
141120000898963

'

Engraçado que só tem mesmo 1 evento, sendo que no XML de envio gerado pelo componentes tinha os dois que eu criei pelo sistema.

Caso for problema no webservice mesmo, qual seria uma solução plausível? Criar uma conscistência para o usuário adicionar apenas um evento por lote? Sei que isso não cabe a vocês, mas o que vocês fariam no meu caso. Minha empresa só atende essa fábrica, então só vamos trabalhar com o Web Service do Paraná mesmo.

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

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