Ir para conteúdo
  • Cadastre-se

dev botao

Provedor Ginfes Santos/SP Retorno do cancelamento


Recommended Posts

  • Membros Pro

Boa tarde,

Ao cancelar uma NFSe a mesma é cancelada com sucesso, posso comfirmar isso no site da prefeitura, mas ao consultar ela esta vindo da seguinte maneira:

ConsultaNFSeporRPS: Simplesmente não vem nenhuma informação de cancelamento, nao vem a tag<NfseCancelamento>.

ConsultaNFSporNumero: tem a tag <NfseCancelamento> e tambem a tag filho <InfPedidoCancelamento> com alguns dados.

ConsultaNFSporProtocolo: tem a tag <NfseCancelamento> e tambem a tag filho <InfPedidoCancelamento> com alguns dados, mas tambem tem uma outra tag filho <InfConfirmacaoCancelamento> onde status esta como false porem a NFSe esta de fato cancelada.

Resumindo e como quase sempre é uma zorra o não padrão no retorno, a solução seria o componente verificar se existe a tag <NfseCancelamento> e tambem a tag filho <InfPedidoCancelamento> se sim então considera que a NFSe esta cancelada setando ACBrNFSeX1.NotasFiscais.Items[0].NFSe.SituacaoNfse = TStatusNFSe.snCancelado.

Sege em anexo todos os arquivos dos tres tipos de consultas realizadas.

ConsultaNFSeporNumero.zip ConsultaNFSeporProtocolo.zip ConsultaNFSeporRPS.zip

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde!

Atualmente esta é a lógica aplicada para ler a informação do cancelamento no retorno:

ANodeNfseCancelamento := ANode.Childrens.FindAnyNs('NfseCancelamento');

if ANodeNfseCancelamento <> nil then
begin
  AuxNodeCanc := ANodeNfseCancelamento.Childrens.FindAnyNs('Confirmacao');

  if AuxNodeCanc = nil then
    AuxNodeCanc := ANodeNfseCancelamento.Childrens.FindAnyNs('ConfirmacaoCancelamento');

  if AuxNodeCanc <> nil then
  begin
    AuxNodeCanc := AuxNodeCanc.Childrens.FindAnyNs('InfConfirmacaoCancelamento');

    if AuxNodeCanc <> nil then
    begin
      Response.DataCanc := ObterConteudoTag(AuxNodeCanc.Childrens.FindAnyNs('DataHora'), FpFormatoDataHora);

      if Response.DataCanc = 0 then
        Response.DataCanc := ObterConteudoTag(AuxNodeCanc.Childrens.FindAnyNs('DataHoraCancelamento'), FpFormatoDataHora);

      Response.SucessoCanc := ObterConteudoTag(AuxNodeCanc.Childrens.FindAnyNs('Sucesso'), tcBool);
    end;
  end;

  Response.DescSituacao := '';

  if (Response.DataCanc > 0) and (Response.SucessoCanc) then
    Response.DescSituacao := 'Nota Cancelada';
end;

Primeiro ele procura por <NFSeCancelamento>, se encontrar procura por <Confirmacao> ou <ConfirmacaoCancelamento>.

Se encontrar, procura por <InfConfirmacaoCancelamento>.

Isso foi feito seguindo o layout da ABRASF para solicitação anterior feita por você neste tópico:

Não sei se podemos considerar apenas o InfPedidoCancelamento para definir se a nota esta cancelada, pois conforme o próprio nome informa, este grupo trás as informações do pedido do cancelamento.

Criada a #TK-5862 para verificar o que mais pode ser feito.

Em paralelo, lhe peço que entre em contato com o Ginfes e exponha a diferença nas respostas dos diferentes métodos.

Você pode apresentar o arquivo de schema tipos_v03.xsd ou até mesmo o próprio manual da ABRASF como evidência.

Em ambos está claro que o grupo NFSeCancelamento deve contar com o grupo pedido e também com o grupo confirmação.

 

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa tarde,

Entrei em contato pelo chat e pediram que eu enviasse um e-mail para [email protected] e fiz isso agora esperar o retorno.

De qq forma se implementar a solução que mencionai acima resolve parcialmente o problema e não quebra o codigo bem da problema quando eles arrumarem o retorno deles.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde @Destak,

Você concorda que essa "solução" não vai funcionar com o ConsultarNFSePorRPS?

No meu entendimento o provedor tem o dever de gerar o XML de retorno em conformidade com o que consta no manual da ABRASF.

  • 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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia @Italo Giurizzato Junior

responderam o e-mail veja:

 

Prezado(a) bom dia!
Este incidente foi identificado e está sendo atendido através do chamado principal 460650 peço que aguarde o retorno de nosso contato para posicionar quanto a resolução do mesmo.
 
Em 16/08/2024 at 17:10, Italo Giurizzato Junior disse:

Você concorda que essa "solução" não vai funcionar com o ConsultarNFSePorRPS?

Concordo claro, o que ocorre é que não depende de nós o concerto no webservice deles que pode ser logo ou nunca e a solução que propus acima resolveria fazendo uma das outras duas consultas disponiveis alem disso não quebraria o codigo quando eles arrumassem e é de facil reversão para o padrão de verificação original por data e hora do cancelamento, acho viavel esse ajuste mesmo que temporariamente pois na pratica as cidades desse provedor não podem ser atendidas corretamente visto que é impossivel verificar se uma NFSe esta cancelada ou não, se possivel faça esse ajuste e assim que eles responderem o e-mail eu aviso aqui.

Link para o comentário
Compartilhar em outros sites

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