16200 - eDocs - NFS-e Validada - Elemento mal formado
Problema: Descrição do Problema: Ao emitir uma NFS-e, o documento está ficando com o status de Validada e no log é registrado:
------------------
2016-03-10 10:26:03,344 [4] ERROR Senior.SapiensNfe.Processos.Service.Nfse.Customizado.DsfNfseBusiness - Erro ao enviar lote de RPS.
System.Security.Cryptography.CryptographicException: Malformed reference element.
at System.Security.Cryptography.Xml.Reference.CalculateHashValue(XmlDocument document, CanonicalXmlNodeList refList)
at System.Security.Cryptography.Xml.SignedXml.BuildDigestedReferences()
at System.Security.Cryptography.Xml.SignedXml.ComputeSignature()
at Senior.SapiensNfe.Processos.Service.Nfse.Base.NfseBusinessCustomizadoBase.signXml(XmlDocument xmlDoc, String id, String uri, String nameSpace, Boolean adicionarSubject)
at Senior.SapiensNfe.Processos.Service.Nfse.Base.NfseBusinessCustomizadoBase.signXml(XmlDocument xmlDoc, String id, String uri, String nameSpace)
at Senior.SapiensNfe.Processos.Service.Nfse.Customizado.DsfNfseBusiness.RecepcionarLoteRps(LoteRps loteRps)
------------------
Em Português:
------------------
2016-03-09 16:00:12,567 [6] ERROR Senior.SapiensNfe.Processos.Service.Nfse.Customizado.BethaNfseBusiness - Erro em EnviarLoteRpsEnvio
System.Security.Cryptography.CryptographicException: Elemento Reference mal formado.
em System.Security.Cryptography.Xml.Reference.CalculateHashValue(XmlDocument document, CanonicalXmlNodeList refList)
em System.Security.Cryptography.Xml.SignedXml.BuildDigestedReferences()
em System.Security.Cryptography.Xml.SignedXml.ComputeSignature()
em Senior.SapiensNfe.Processos.Service.Nfse.Base.NfseBusinessCustomizadoBase.signXml(XmlDocument xmlDoc, String id, String uri, String nameSpace, Boolean adicionarSubject)
em Senior.SapiensNfe.Processos.Service.Nfse.Customizado.BethaNfseBusiness.RecepcionarLoteRps(LoteRps loteRps)
------------------
Rotina / Tela: Emissão de NFS-e.
Solução: Solução 16200: Verificamos em fóruns que a situação está ocorrendo devido a uma atualização do Windows no Sistema Operacional.
Para que a situação não ocorra, é necessário remover a última atualização do .NET Framework que foi feita dia 09/03 ou 10/03 com o nome KB3135982, KB3135996, KB3135994, KB3135984, KB3135989 ou KB3135995.
Além das atualizações acima, ocorreram casos em outros clientes também de outras atualizações conforme abaixo:
KB-3135982
KB-3135983
KB-3135994
KB-3135984
KB-3135985
KB-3135987
KB-3135988
KB-3135989
KB-3135991
KB-3135994
KB-3135995
KB-3135996
KB-3135997
Após esse procedimento as notas serão emitidas corretamente.
OBS: Esse procedimento pode ser adotado para clientes que estão com a versão do ERP anterior a 5.8.7.56, pois nessa versão liberamos a implementação abaixo para ajustar a situação e não ser mais necessário a exclusão dessas atualizações do Windows.
-----------
Alteração na geração do ID de NFS-e
Ajustamos a rotina de emissão de NFS-e, para que ID das NFS-e, gerado nas tags <LoteRps> e <InfRps>, seja iniciado pelo valor ID.
OpenExemplo:
<EnviarLoteRpsEnvio xmlns=http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd>
<LoteRps id=ID03115024269070006570000106000001060000000014>
Após a atualização dos métodos de segurança do .NET Framework, ao emitir uma NFS-e, ela permanecia com o status de Validada no Documentos Eletrônicos e no log era gerado o seguinte registro: ERROR Senior.SapiensNfe.Processos.Service.Nfse.Customizado.BethaNfseBusiness - Erro em EnviarLoteRpsEnvio System.Security.Cryptography.CryptographicException: Elemento Reference mal formado.
Este erro era ocasionado pela maneira que o ID das NFS-e era gerado, seu valor deve iniciar por um caractere não numérico. Porém, nos arquivos XML de NFS-e os IDs eram gerados contendo apenas caracteres numéricos.
Nota
Para esta alteração não é necessária a atualização da solução Documentos Eletrônicos.
Local: Mercado > Gestão de Faturamento e Outras Saídas > Notas Fiscais de Saída > Emissão de Cancelamento
-----------
Observação: para clientes que utilizem versões atualizadas do sistema e que ainda possam a enfrentar o problema relatado, pode-se aplicar as informações presentes no Manual de Usuário do eDocs: http://documentacao.senior.com.br/documentoseletronicos/#html_ajuda/documentacaoprocesso/nfse/alteracao-parametro.htm
------------------
2016-03-10 10:26:03,344 [4] ERROR Senior.SapiensNfe.Processos.Service.Nfse.Customizado.DsfNfseBusiness - Erro ao enviar lote de RPS.
System.Security.Cryptography.CryptographicException: Malformed reference element.
at System.Security.Cryptography.Xml.Reference.CalculateHashValue(XmlDocument document, CanonicalXmlNodeList refList)
at System.Security.Cryptography.Xml.SignedXml.BuildDigestedReferences()
at System.Security.Cryptography.Xml.SignedXml.ComputeSignature()
at Senior.SapiensNfe.Processos.Service.Nfse.Base.NfseBusinessCustomizadoBase.signXml(XmlDocument xmlDoc, String id, String uri, String nameSpace, Boolean adicionarSubject)
at Senior.SapiensNfe.Processos.Service.Nfse.Base.NfseBusinessCustomizadoBase.signXml(XmlDocument xmlDoc, String id, String uri, String nameSpace)
at Senior.SapiensNfe.Processos.Service.Nfse.Customizado.DsfNfseBusiness.RecepcionarLoteRps(LoteRps loteRps)
------------------
Em Português:
------------------
2016-03-09 16:00:12,567 [6] ERROR Senior.SapiensNfe.Processos.Service.Nfse.Customizado.BethaNfseBusiness - Erro em EnviarLoteRpsEnvio
System.Security.Cryptography.CryptographicException: Elemento Reference mal formado.
em System.Security.Cryptography.Xml.Reference.CalculateHashValue(XmlDocument document, CanonicalXmlNodeList refList)
em System.Security.Cryptography.Xml.SignedXml.BuildDigestedReferences()
em System.Security.Cryptography.Xml.SignedXml.ComputeSignature()
em Senior.SapiensNfe.Processos.Service.Nfse.Base.NfseBusinessCustomizadoBase.signXml(XmlDocument xmlDoc, String id, String uri, String nameSpace, Boolean adicionarSubject)
em Senior.SapiensNfe.Processos.Service.Nfse.Customizado.BethaNfseBusiness.RecepcionarLoteRps(LoteRps loteRps)
------------------
Rotina / Tela: Emissão de NFS-e.
Solução: Solução 16200: Verificamos em fóruns que a situação está ocorrendo devido a uma atualização do Windows no Sistema Operacional.
Para que a situação não ocorra, é necessário remover a última atualização do .NET Framework que foi feita dia 09/03 ou 10/03 com o nome KB3135982, KB3135996, KB3135994, KB3135984, KB3135989 ou KB3135995.
Além das atualizações acima, ocorreram casos em outros clientes também de outras atualizações conforme abaixo:
KB-3135982
KB-3135983
KB-3135994
KB-3135984
KB-3135985
KB-3135987
KB-3135988
KB-3135989
KB-3135991
KB-3135994
KB-3135995
KB-3135996
KB-3135997
Após esse procedimento as notas serão emitidas corretamente.
OBS: Esse procedimento pode ser adotado para clientes que estão com a versão do ERP anterior a 5.8.7.56, pois nessa versão liberamos a implementação abaixo para ajustar a situação e não ser mais necessário a exclusão dessas atualizações do Windows.
-----------
Alteração na geração do ID de NFS-e
Ajustamos a rotina de emissão de NFS-e, para que ID das NFS-e, gerado nas tags <LoteRps> e <InfRps>, seja iniciado pelo valor ID.
OpenExemplo:
<EnviarLoteRpsEnvio xmlns=http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd>
<LoteRps id=ID03115024269070006570000106000001060000000014>
Após a atualização dos métodos de segurança do .NET Framework, ao emitir uma NFS-e, ela permanecia com o status de Validada no Documentos Eletrônicos e no log era gerado o seguinte registro: ERROR Senior.SapiensNfe.Processos.Service.Nfse.Customizado.BethaNfseBusiness - Erro em EnviarLoteRpsEnvio System.Security.Cryptography.CryptographicException: Elemento Reference mal formado.
Este erro era ocasionado pela maneira que o ID das NFS-e era gerado, seu valor deve iniciar por um caractere não numérico. Porém, nos arquivos XML de NFS-e os IDs eram gerados contendo apenas caracteres numéricos.
Nota
Para esta alteração não é necessária a atualização da solução Documentos Eletrônicos.
Local: Mercado > Gestão de Faturamento e Outras Saídas > Notas Fiscais de Saída > Emissão de Cancelamento
-----------
Observação: para clientes que utilizem versões atualizadas do sistema e que ainda possam a enfrentar o problema relatado, pode-se aplicar as informações presentes no Manual de Usuário do eDocs: http://documentacao.senior.com.br/documentoseletronicos/#html_ajuda/documentacaoprocesso/nfse/alteracao-parametro.htm
IMPORTANTE: o problema poderá ocorrer ainda se no lote que será enviado para a Prefeitura houver dois documentos com o mesmo ID/Chave. Isso poderá ocorrer quando:
- Alteração de dados na base de dados (update) indevidamente;
- Dois serviços do eDocs rodando apontando para mesma base de dados, onde acabou sendo integrado dois registros na base de dados com a mesma chave.