Ir para conteúdo
  • Cadastre-se

dev botao

Possível correção Cancelamento IPM Cascavel.


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

Recommended Posts

Postado (editado)

Na implementação do cancelamento para cidade de Cascavel-PR para o Provedor IPM identifiquei os seguintes problemas:

1- Na Unit IPM.Provider foi necessário alterar a procedure "procedure TACBrNFSeProviderIPM.TratarRetornoCancelaNFSe", pois o metódo não conseguia tratar o retorno visto que o XML vinha com um padrão diferente e a tag <nfse> não era encontrada, foi necessário realizar a seguinte alteração: (Segue em exemplo um XML de solicitação de cancelamento em anexo).

 ANode := Document.Root;
      if Document.Root.Name <> 'nfse' then
      begin
        ANode := ANode.Childrens.Find('documentos');
        ANode := ANode.Childrens.Find('nfse');
      end;
 ProcessarMensagemErros(ANode, Response);

2- Foi necessário adicionar no arquivo ACBrNFSeXServicos.ini o parametro "SolicitarCancelamento" para a cidade de Cascavel-PR:

[4104808]
; Atualizado em 19/10/2021
Nome=Cascavel
UF=PR
Provedor=IPM
Versao=1.01
Params=NaoGerarGrupoRps:|SolicitarCancelamento:
;
ProRecepcionar=https://cascavel.atende.net/atende.php?pg=rest&service=WNERestServiceNFSe&cidade=padrao&eletron=1
HomRecepcionar=https://homologacao.atende.net/atende.php?pg=rest&service=WNERestServiceNFSe&cidade=integracoes&eletron=1

 

15702-can.xml

Editado por mdogomes
Postado

Boa tarde,

Fiz mais uns testes e foi necessário fazer mais uma alteração na Unit IPM.Provider foi necessário alterar a procedure "procedure TACBrNFSeProviderIPM.TratarRetornoCancelaNFSe"

Como estava: 

NotaCompleta := (Pos('<nfse>', Response.ArquivoRetorno) > 0)

Como ficou:

NotaCompleta := (Pos('<nfse>', Response.ArquivoRetorno) > 0) and (ANota.NFSe.NfseSubstituida = '');

A alteração foi necessária pois caso fique como NotaCompleta ele tenta verificar se o ANodeArray está assigned causando erro. no seguinte trecho de código:

if NotaCompleta then
      begin
        if not Assigned(ANodeArray) and (Response.Sucesso) then
        begin
          AErro := Response.Erros.New;
          AErro.Codigo := Cod203;
          AErro.Descricao := ACBrStr(Desc203);
          Exit;
        end;
...

 

  • Curtir 2
  • 3 semanas depois ...
  • 3 semanas depois ...
  • Consultores
Postado

Boa tarde Gomes,

Para mim a sua alteração vai falhar.

Sua primeira alteração:

      NotaCompleta := (Pos('<nfse>', Response.ArquivoRetorno) > 0) and (ANota.NFSe.NfseSubstituida = '');

Ao executar a linha acima a variável ANota ainda não foi preenchida, logo esta com todos as suas classes e campos vazios.

Segunda alteração:

      if Document.Root.Name <> 'nfse' then
      begin
        ANode := ANode.Childrens.Find('documentos');
        ANode := ANode.Childrens.Find('nfse');
      end;

Ao executar o IF acima se a condição for verdadeira você esta confirmando que existe a tag documentos e em seguida a tag nfse.

Terceira alteração:

Você removeu a linha abaixo que esta dentro do ( if NotaCompleta then )

        ANodeArray := ANode.Childrens.FindAllAnyNs('nfse');

Com a remoção dessa linha a variável ANodeArray fica vazio.

Vamos fazer o seguinte, faça um teste com a unit em anexo.

IPM.Provider.pas

  • Curtir 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Bom dia,

Fiz o teste e agora ele ficou como nota completa, porém o XML que retorna não é de nota completa e no método TACBrNFSeProviderIPM.TratarRetornoCancelaNFSe agora dá erro de memória devido ao ANode estar nulo.

755-can.xml

Postado
1 hora atrás, Italo Giurizzato Junior disse:

Boa tarde Gomes,

Em qual linha ocorre o erro?

Pois não tenho como testar.

with Response do
        begin
          NumeroNota := ObterConteudoTag(ANode.Childrens.FindAnyNs('numero_nfse'), tcStr);
          SerieNota := ObterConteudoTag(ANode.Childrens.FindAnyNs('serie_nfse'), tcStr);
          Data := ObterConteudoTag(ANode.Childrens.FindAnyNs('data_nfse'), tcDatVcto);
          Data := Data + ObterConteudoTag(ANode.Childrens.FindAnyNs('hora_nfse'), tcHor);
          Situacao := ObterConteudoTag(ANode.Childrens.FindAnyNs('situacao_codigo_nfse'), tcStr);
          DescSituacao := ObterConteudoTag(ANode.Childrens.FindAnyNs('situacao_descricao_nfse'), tcStr);
          Link := ObterConteudoTag(ANode.Childrens.FindAnyNs('link_nfse'), tcStr);
          Link := StringReplace(Link, '&amp;', '&', [rfReplaceAll]);
          Protocolo := ObterConteudoTag(ANode.Childrens.FindAnyNs('cod_verificador_autenticidade'), tcStr);
          CodigoVerificacao := Protocolo;
        end;

Quando vai atribuir o NumerodaNota já ocorre o erro, por não ser uma nota completa.

  • Consultores
Postado

Boa tarde Gomes,

Por favor anexe aqui a alteração que você fez na cidade em questão, não precisa anexar o arquivo INI inteiro somente as linhas referente a cidade.

Desde já muito obrigado pela colaboração.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado
5 minutos atrás, Italo Giurizzato Junior disse:

Boa tarde Gomes,

Por favor anexe aqui a alteração que você fez na cidade em questão, não precisa anexar o arquivo INI inteiro somente as linhas referente a cidade.

Desde já muito obrigado pela colaboração.

Segue as alterações feitas:

Foi necessário adicionar no arquivo ACBrNFSeXServicos.ini o parametro "SolicitarCancelamento" para a cidade de Cascavel-PR:

[4104808]
; Atualizado em 19/10/2021
Nome=Cascavel
UF=PR
Provedor=IPM
Versao=1.01
Params=NaoGerarGrupoRps:|SolicitarCancelamento:
;
ProRecepcionar=https://cascavel.atende.net/atende.php?pg=rest&service=WNERestServiceNFSe&cidade=padrao&eletron=1
HomRecepcionar=https://homologacao.atende.net/atende.php?pg=rest&service=WNERestServiceNFSe&cidade=integracoes&eletron=1
  • Consultores
Postado

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultor SAC ACBr

Alexandre de Paula
Ajude o Projeto ACBr crescer - Assine o SAC                    

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  ícone Discórdia Discord   

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

 

 

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

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...