Senhores, bom dia
Estou utilizando o componente para consumir o provedor fiorilli. Tudo tem funcionado perfeitamente!
Porém, ao utilizar a função ACBrNFSe.EnviarSincrono() para enviar um lote contendo mais de um RPS, gera um except "list index out of bounds 1". Certamente devo estar fazendo algo errado.
Analisando o código do componente, cheguei no seguinte ponto:
pnfsGerarNfseResposta.pas
(227) function TGerarretNfse.LerXml: boolean;
Nesta função tem um while que extrai a lista de NFS retornadas, e para cada NFS encontrada é incrementada a variável "i", só que não é dado um Add em ListaNfse.FCompNfse dentro do while.
Para testar, adicionei a seguinte linha de código, como segue (linha 261):
if leitor.rExtrai(2, 'ListaNfse') <> '' then
begin
while (Leitor.rExtrai(3, 'CompNfse', '', i + 1) <> '') or
(Leitor.rExtrai(3, 'ComplNfse', '', i + 1) <> '') do
begin
// Grupo da TAG <Nfse> *************************************************
if Leitor.rExtrai(4, 'Nfse') <> ''
then begin
if(i<>0)then // linha adiciona por ivantgm em 08/05/2014
ListaNfse.FCompNfse.Add; // linha adiciona por ivantgm em 08/05/2014
// alterado por joel takei 04/07/2013
ListaNfse.FCompNfse[i].FNfse.XML := Leitor.rExtrai(4, 'Nfse');
Com esta alteração aparentemente funcionou.
Minha dúvida:
Para enviar um lote com mais de um RPS pode-se utilizar a função ACBrNFSe.EnviarSincrono()?