Ir para conteúdo
  • Cadastre-se

dev botao

Erro ao processar o retorno após reenviar uma nota para a prefeitura de São Paulo


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

Recommended Posts

Postado (editado)

Explicando a situação:
Enviamos uma nota para a prefeitura de São Paulo que foi devidamente aprovada.
No entanto, por algum problema de comunicação o retorno da operação não foi recebido, e portanto a nota ficou como se não tivesse sido enviada no nosso sistema.
Ao tentar reenviar a nota ocorre a exceção: "Argument out of range".

Este é o arquivo de retorno neste caso:

<RetornoEnvioLoteRPS xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                     xmlns="http://www.prefeitura.sp.gov.br/nfe">
    <Cabecalho Versao="1" xmlns="">
        <Sucesso>true</Sucesso>
        <InformacoesLote>
            <NumeroLote>517474301</NumeroLote>
            <InscricaoPrestador>12345678</InscricaoPrestador>
            <CPFCNPJRemetente>
                <CNPJ>012345678901234</CNPJ>
            </CPFCNPJRemetente>
            <DataEnvioLote>2019-07-23T14:48:02</DataEnvioLote>
            <QtdNotasProcessadas>1</QtdNotasProcessadas>
            <TempoProcessamento>0</TempoProcessamento>
            <ValorTotalServicos>1572</ValorTotalServicos>
        </InformacoesLote>
    </Cabecalho>
    <Alerta xmlns="">
        <Codigo>224</Codigo>
        <Descricao>RPS ja convertido na NFS-e 00015999. RPS nao sera processado.</Descricao>
        <ChaveRPS>
            <InscricaoPrestador>32171544</InscricaoPrestador>
            <SerieRPS>001</SerieRPS>
            <NumeroRPS>67550</NumeroRPS>
        </ChaveRPS>
    </Alerta>
</RetornoEnvioLoteRPS>

Depois de investigarmos, descobrimos o seguinte:
O arquivo de retorno neste caso não traz as tags <ChaveNFeRPS> e <ChaveRPS> que deveriam trazer os dados da(s) notas(s) aprovada(s) e consequentemente o componente não pode preencher o campo FRetEnvLote.InfRec.ListaChaveNFeRPS.
Note que apesar disso, a tag <QtdNotasProcessadas> retorna 1. 
Na sequência, o componente tenta recuperar o número da nota, o seu código de verificação e o número do lote através do seguinte código [unit ACBrNFSeWebServices, linha 2910 - revisão 17357] :

                      if (FProvedor in [proCTA]) or
                         ((FProvedor in [ProNotaBlu, proSP]) and (RetEnvLote.InfRec.InformacoesLote.QtdNotasProcessadas > 0)) then
                      begin
                        FNotasFiscais.Items[i].NFSe.Numero := RetEnvLote.InfRec.ListaChaveNFeRPS[I].ChaveNFeRPS.Numero;
                        FNotasFiscais.Items[i].NFSe.CodigoVerificacao := RetEnvLote.InfRec.ListaChaveNFeRPS[I].ChaveNFeRPS.CodigoVerificacao;
                        FNotasFiscais.Items[i].NFSe.NumeroLote := RetEnvLote.InfRec.NumeroLote;
                      end;
                    end;

Como a quantidade de notas processadas é maio que zero, ele tenta acessar RetEnvLote.InfRec.ListaChaveNFeRPS  - que não foi preenchida como vimos anteriormente.

Para evitar o problema, substituímos a linha

 if (FProvedor in [proCTA]) or
    ((FProvedor in [ProNotaBlu, proSP]) and (RetEnvLote.InfRec.InformacoesLote.QtdNotasProcessadas > 0)) then

por

 if (FProvedor in [proCTA]) or
     ((FProvedor in [ProNotaBlu, proSP]) and (RetEnvLote.InfRec.ListaChaveNFeRPS.Count >= i)) then

Saudaçoes!

Editado por roger.perezin
Postado

Correção:
O novo código deve ser:

if (FProvedor in [proCTA]) or
   ((FProvedor in [ProNotaBlu, proSP]) and (RetEnvLote.InfRec.ListaChaveNFeRPS.Count > i)) then

Desculpem pelo erro. Abraços

  • Administradores
Postado

Bom dia.

Obrigada pela análise, adicionado para validação.

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 !!

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