Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 1374 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Olá. Não estou conseguindo gerar a assinatura no xml de substituição da nfse, recebo como resposta a mensagem:

'Arquivo XML nao contem a Assinatura Digital apos a tag InfPedidoCancelamento
Efetue a geracao da Assinatura'

Comparando os xmls, realmente, a única diferença é a assinatura de cancelamento e de substituição, que não consigo de nenhuma maneira gerar no meu xml.

  • Consultores
Postado

Bom dia Felipe,

Faça o seguinte teste:

Abra o arquivo SystemPro.ini e altere o valor para 1 do campo Substituir da seção Assinar, salve o arquivo alterado, execute o programa exemplo e faça um novo teste de substituiçã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 (editado)

Bom dia Ítalo. Acabei de testar a alteração, e obtive a mesma mensagem. O que faço é carregar a nota de serviço nova no componente, e executar a função de substituição, substituindo a nota que informo na função, pela que carreguei no componente. Seria isso mesmo? Não encontrei muito sobre a explicação de como funciona.

Indo mais a fundo, verifiquei que dentro da função SubstituirNFSe, A linha de Assinar(), tem como parâmetro: 'Configuracoes.Geral.ConfigAssinar.RPS'

e está vindo com o valor 'False'. 

 

Editado por felipenadaletti
  • Consultores
Postado

Felipe,

A ideia do Substituir é emitir uma nova NFS-e que substituirá uma outra NFS-e que será cancelada.

Sendo assim, devemos alimentar o componente com os dados do novo RPS que vai gerar a nova NFS-e, ao executar o SubstituirNFSe devemos informar o numero, serie, etc da nota a ser cancelada.

O componente monta um XML contendo o pedido de cancelamento da nota informada, mais o Rps.

Alguns provedores exigem que o pedido de cancelamento esteja assinado, o Rps esteja assinado e o pedido de substituição esteja assinado.

Para que isso ocorra se faz necessário que os campos RPS, Cancelar e Substituir da seção Assinar tenham o valor 1.

No caso do provedor SystemPro os campos RPS e Substituir estão com o valor zero, logo somente o pedido de cancelamento será assinado.

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

  • Consultores
Postado

Felipe,

Como assim não ter implementação, o provedor SystemPro tem o serviço de Substituição de NFS-e.

No arquivo INI consta como deve ser montado o Envelope desse serviço.

Vai ser necessário debugar mais a fundo para saber onde realmente esta o problema.

Outra coisa configure o programa exemplo para salvar os arquivos soap.

Faça um novo teste e anexe os arquivos soap gerados ao solicitar a substituição de uma nota.

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

Boa tarde Ítalo,

Verifiquei e efetuei os testes novamente, continua caindo na mesma função de tratar resposta, que só passa False para o Result, e gera a exceção.

Fui testar novamente, só mandando executar com as mesmas notas, aí sim, recebo o retorno de um erro pois a nota foi subtituida corretamente.

Ou seja, ele esta enviando, e funcionando corretamente, porém nessa função, ele me retorno false em uma variável que acaba gerando a exceção que n deveria gerar.

ErroRetorno.png

FalseTratarResposta.png

Postado

Bom dia Ítalo, 

Continuo com o problema ainda, comentando o código dentro do tratar resposta, obtive funcionamento, pois ele esta assinando e substituindo a nota, só que dentro do TratarResposta, ele retorna um valor false, gerando a exceção. 

Postado

Na unit ACBrDFeWebService, ele chama a função TDFeWebService.Executar, dentro dessa função, a linha: Result := TratarResposta;' sempre trazia valor false, mesmo quando funcionava a substituição. Então, dentro dessa TratarResposta, na mesma unit ACBrDFeWebService, Comentei o código, que era:

 'Result := False;
  GerarException(ACBrStr('TratarResposta não implementado para: ') + ClassName);'

e coloquei um 'Result := True;'

 

Porém, dessa forma, acredito que deveria haver uma validação nessa função. porém, só tinha esse código passando fixo o false sempre.

  • Consultores
Postado

Felipe,

Jamais altere as units ACBrDFexxxx, pois elas são utilizadas por todos os componentes que emitem DF-e como NF-e, CT-e, MDF-e, BP-e, eSocial, Reinf e a NFS-e

É preciso debugar todas as procedures e funções ao executar o método para descobrir exatamente o esta o problema.

Eu não consigo fazer isso, pois o certificado digital que tenho é de uma empresa de outra cidade, logo ao tentar fazer o teste recebo o erro 401.

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

  • Consultores
Postado

Boa tarde Felipe,

Algumas Procedures e Funções das units ACBrDFe não quase nada mesmo, pois elas são sobrepostas por Procedures e Funções definidas na unit do ACBrNFSe por exemplo.

Esse é o caso o TratarResposta entre ontras.

Na Unit ACBrNFSeWebServices temos o TratarResposta referente ao método SubstituirNFSe.

É essa função que esta retornando False e não a que esta no ACBrDFeWebService.

Como lhe disse a função TratarResposta que se encontra na unit ACBrNFSeWebServices se sobrepõe a função de mesmo nome que esta na unit ACBrDFeWebService.

Você precisa colocar um ponto de parada na função TratarReposta do método SubstituirNFSe e tentar descobrir o porque ela esta retornando False.

Essa função na verdade tem 4 linhas, sendo que a terceira obtém o XML de retorno e a quarta e ultima ocorre a extração do XML da NFS-e desse retorno.

É preciso checar se ela esta obtendo o XML de retorno e por fim se nesse retorno esta sendo extraído o XML da NFS-e. 

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

Pelo oq eu vi, passei '1' no ini na configuração 'FPConfiguracoesNFSe.Geral.ConfigGrupoMsgRet.Substituir', mas pelo oq eu vi, nao mudou nada, o problema está na ExtrairNotasRetorno acredito eu, pois ele retorna de lá com a data 30/12/1899 na data de emissao da substituição.

 

na função 'TNFSeWebService.ExtrairRetorno(const GrupoMsgRet, AGrupo: String): String;', os valores da GrupoMsgRet = '', e o AGrupo = 1

nessa função, ele cai na linha de quando nao foi possivel extrair o retorno, como mostra na imagem

ExtrairRetorno.png.3512d88ca6a383bfd72af377ad414944.png

Apos isso, ele chega na variável XMLRet com o valor que está no arquivo de texto XMLRet que anexei

image.png.18ce1678971e96e0125571832f871136.png

Apos essa execução, o valor de result que ele retorna para a Variavel FPRetWS é o valor no arquivo de texto FPRetWS

Então ele entra na função ExtrairNotasRetorno, e ali, o count do FRetornoNFSe.ListaNFSe.CompNFSe.Count, já está em 0 na primeira passada.

 

ExtrairNotasRetorno.png.26d2e15034ff585856b328cd365a3b85.png

Apos isso, ele tbm verifica o count da 'FRetornoNFSe.ListaNFSe.MsgRetorno.Count' que tbm esta zerado

ExtrairNotasRetornoMsgRetorno.png.1673bcdba30cf7182d51fe59136d35c4.png

Novamente, ele verifica mais um count, da 'FRetornoNFSe.ListaNFSe.CompNFSe.Count', novamente, tbm zerada

 

ExtrairNotasRetornoListaNFSe.png.b8ef5bad0daf913ea4019e2e1314fa0f.png

o que faz com que ele pule para o fim da função, mantendo a data 30/12/1899, ou seja, vazia

ExtrairNotasRetornoelse.thumb.png.229c2841e37bf0e204117b3df43a222b.png

e na verificação final, passando para o result, fica false.

ResultData.png.928e556d4d4f7d06c6bcf44fd6b5abc5.png

ResultFalse.png.10909ccedcc5aba3e187f0eaa53120b1.png

Desculpe todo esse incomodo, estamos com essa questão da nota substituta faz um tempo aqui na empresa, e obrigado por toda a ajuda, aguardo uma resposta

 

 

 

 

 

 

XMLRet.txt FPRetWS.txt

  • Este tópico foi criado há 1374 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

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