Membros Pro Destak Posted August 13 Membros Pro Share Posted August 13 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 to comment Share on other sites More sharing options...
Consultores Diego Foliene Posted August 13 Consultores Share Posted August 13 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. Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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 to comment Share on other sites More sharing options...
Membros Pro Destak Posted August 14 Author Membros Pro Share Posted August 14 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 to comment Share on other sites More sharing options...
Consultores Italo Giurizzato Junior Posted August 16 Consultores Share Posted August 16 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. 1 Italo Giurizzato Junior Ajude o Projeto ACBr crescer - Assine o SAC Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP Araraquara - A era dos Trólebus Link to comment Share on other sites More sharing options...
Membros Pro Destak Posted August 22 Author Membros Pro Share Posted August 22 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 to comment Share on other sites More sharing options...
Consultores Italo Giurizzato Junior Posted August 23 Consultores Share Posted August 23 Bom dia @Destak, Vou conversar com os demais membros da Equipe ACBr para analise desse caso. Italo Giurizzato Junior Ajude o Projeto ACBr crescer - Assine o SAC Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP Araraquara - A era dos Trólebus Link to comment Share on other sites More sharing options...
Membros Pro Destak Posted August 28 Author Membros Pro Share Posted August 28 Boa tarde @Italo Giurizzato Junior Ok obrigado. Link to comment Share on other sites More sharing options...
Recommended Posts