OpenNFSe

OpenNFSe (http://www.opennfse.com.br/forums/index.php)
-   Área relacionada a NFS-e (http://www.opennfse.com.br/forums/forumdisplay.php?f=3)
-   -   Problema Cancelamento NFS-e (http://www.opennfse.com.br/forums/showthread.php?t=60)

chrisbhmg 06/07/2010 14:40

Problema Cancelamento NFS-e
 
Boa tarde,

Tenho uma logica de assinar e enviar(gerar) NFS-e que funciona perfeitamente.

Mas na hora de invocar o método de cancelamento de NFS-e, o sistema me retorna o seguinte erro - aparentemente não tratado - em relação a assinatura:

Citação:

0 - Ocorreu um erro Inesperado. (The XML signature in file invalid !!!!! (bad))
0 sendo o n° do erro, e o texto a descrição do mesmo, retornados pela estrutura ListaMensagemRetorno.


O XML que envio é o seguinte (retirei algumas informações do certificado e zerei CNPJ / Inscrição Municipal propositalmente):


Citação:

<?xml version="1.0" encoding="utf-8"?>
<CancelarNfseEnvio xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.abrasf.org.br/nfse.xsd">
<Pedido>
<InfPedidoCancelamento Id="cancelamento201000000000444">
<IdentificacaoNfse>
<Numero>201000000000444</Numero>
<Cnpj>000000000</Cnpj>
<InscricaoMunicipal>0000000000</InscricaoMunicipal>
<CodigoMunicipio>3106200</CodigoMunicipio>
</IdentificacaoNfse>
<CodigoCancelamento>2</CodigoCancelamento>
</InfPedidoCancelamento>
<Signature Id="Ass_cancelamento201000000000444" xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="#cancelamento201000000000444">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>S/dIhFuaDfP2SJ6EsjThisCGTYg=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>.......</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>......</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</Pedido>
</CancelarNfseEnvio>
Estou precisando cancelar notas e não consigo resolver este problema, sendo que as logicas de assinatura/envio são as mesmas que da geração de NFS-e e tudo funciona perfeitamente.

Vocês teriam alguma orientação/sugestão ?

Caso precisem de mais alguma informação, é so me perguntar.

Muito obrigado.

LuizVaz 12/07/2010 04:06

Na linha:
<CancelarNfseEnvio xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.abrasf.org.br/nfse.xsd">

Mude para:
<CancelarNfseEnvio xmlns:ns="http://www.abrasf.org.br/nfse.xsd">

Isso corrige a validação do XML vi schemas.
Não adicione outros esquemas porque dá problema do Back-end da PBH.

Verifique se você realmente está enviando um arquivo UTF-8.
Senão, troque o cabeçalho para:
<?xml version="1.0" encoding="ISO-8859-1"?>

Atenção ao CASE SENSITIVE.

Mas quanto ao erro, verifique se a Data da Nota está dentro do Fechamento e que a Cidade do Tomador seja BELO HORIZONTE.

Senão você só poderá fazer SUBSTITUIÇÃO da Nota.
E isso é somente via Site.

Nos informe se persistir o ERRO.

Att,
Luiz Vaz

chrisbhmg 13/07/2010 16:48

Muito obrigado Luiz.

Realmente, retirei aqueles namespaces e funcionou corretamente!

Quanto a substituição, é realmente estranho até hoje não terem criado esse método.

Penso que consultarei a nota atual no WS da PBH e verificando que existe uma nota a substituindo, criarei esta nova automaticamente e farei o vinculo internamente.

Abraço

chrisbhmg 14/07/2010 22:04

Citação:

Postado Originalmente por chrisbhmg (Post 136)
Muito obrigado Luiz.

Realmente, retirei aqueles namespaces e funcionou corretamente!

Quanto a substituição, é realmente estranho até hoje não terem criado esse método.

Penso que consultarei a nota atual no WS da PBH e verificando que existe uma nota a substituindo, criarei esta nova automaticamente e farei o vinculo internamente.

Abraço

O que acham da ideia da substituição?

Abraço

LuizVaz 17/07/2010 00:35

Citação:

Postado Originalmente por chrisbhmg (Post 137)
O que acham da ideia da substituição?

Abraço

Não faça isso, Se criar uma nova nota o Prestador vai ter que pagar os impostos novamente.

Você pode deixar que o Prestador faça a substituição pelo próprio site.

A substituição pelo site na verdade cancela a nota original e cria uma nova com referência para a nota antiga.

Você pode fazer esse relacionamento no seu programa usando o método ConsultaNFSe.
Passando o período para o método ele traz todas as notas canceladas e vigentes.

O retorno é um XML gigante com todas as notas.
Assim você pode processar nota a nota e atualizar seu banco de dados.

É o que eu faço.

Att,
Luiz Vaz

chrisbhmg 17/07/2010 10:19

Ah sim sim, isso mesmo que estou falando.

O cara seleciona quais notas ele substituiu e ai ele clica em "Substituidas" ou algo do gênero, e o sistema cria as novas notas localmente substituidoras e faz a referência tambem na base local entre as canceladas e a substituidoras.

Obrigado.

LuizVaz 18/07/2010 00:00

Ah sim,

se você sonseguir cancelar um nota, você pode criar outra sem necessidade de substituir no site.

As restrições são que o tomador da Nota deve ser de Belo Horizonte e que a Nota ainda não tenha os impostos recolhidos.
Fora isso você pode cancelar e gerar uma nova nota.

Outra coisa que você pode fazer é usar o Número do RPS para controlar a relação entre as notas.

Eu uso o número de nota interno dos sistemas como o número do RPS.
Assim quando uma nota é cancelada eu associo isso internamente pelo código do RPS.

Atenciosamente,
Luiz Vaz


Horários baseados na GMT -2. Agora são 19:19.

vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.3.0