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.