Closed Iazzetta closed 7 years ago
Boa tarde @Iazzetta, esse webservice foi desativado dia 31/05/2017 de acordo com a NT 2014/002. Já o erro de SSL, na verdade é só um warning, a versão 4.0 da NF-e vai substituir o protocolo SSL pelo TLS.
Então como posso consultar notas fiscais? Pois emiti uma nota fiscal e no site não consta. Todos os metodos do webservice de nota fiscal foram desativados ou apenas este de consultar? Tem alguma alternativa? Obrigado.
Apenas este, mas acho que vc está se confundindo. Para consultar uma nota fiscal EMITIDA vc precisa utilizar o método Consulta Nota, ex:
con = ComunicacaoSefaz(uf, certificado, senha, homologacao)
envio = con.consulta_nota('nfe', '99999999999999999999999999999999999999999999') # nfe ou nfce
print (envio.text)
link da documentação: https://github.com/leotada/PyNFe/wiki/Consulta-Nota
Entao, eu consegui gerar uma nota "APARENTEMENTE". O que aparece na resposta é:
<nfeAutorizacaoLoteResult xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao">
<retEnviNFe versao="3.10" xmlns="http://www.portalfiscal.inf.br/nfe">
<tpAmb>1</tpAmb>
<verAplic>SP_NFE_PL_XXXX</verAplic>
<cStat>103</cStat>
<xMotivo>Lote recebido com sucesso</xMotivo>
<cUF>35</cUF>
<dhRecbto>2017-08-07T11:44:59-03:00</dhRecbto>
<infRec>
<nRec>XXXXXXXXXXXXXXXX</nRec>
<tMed>1</tMed>
</infRec>
</retEnviNFe>
</nfeAutorizacaoLoteResult>
Porem, quando eu pego o numero da NOTA que eu recebo no funfa.xml , e tento consultar dessa forma:
from pynfe.processamento.comunicacao import ComunicacaoSefaz
certificado = "certificado.pfx"
senha = 'XXXXXX'
uf = 'sp'
homologacao = False
con = ComunicacaoSefaz(uf, certificado, senha, homologacao)
envio = con.consulta_nota('nfe', 'NFeXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
print (envio.text)
Ele me devolve:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2">
<cUF>35</cUF>
<versaoDados>3.10</versaoDados>
</nfeCabecMsg>
</soap:Header>
<soap:Body>
<nfeConsultaNF2Result xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2">
<retConsSitNFe versao="3.10" xmlns="http://www.portalfiscal.inf.br/nfe">
<tpAmb>1</tpAmb>
<verAplic>SP_NFE_PL_XXXX</verAplic>
<cStat>215</cStat>
<xMotivo>Rejeição: Falha no schema XML</xMotivo>
<cUF>35</cUF>
<dhRecbto>0001-01-01T00:00:00+00:00</dhRecbto>
<chNFe>NFeXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</chNFe>
</retConsSitNFe>
</nfeConsultaNF2Result>
</soap:Body>
</soap:Envelope>
Ta complicado emitir nota e testar.. Quando acesso o site da nota do milhão e tento consultar as notas nao aparece nada também...
Entao acho que entendi o que fiz de errado, eu estou enviando NFEXXXXX colocando "NFe" e na verdade teria que ser apenas o numero. Porem mesmo fazendo isso, em ambiente de homologacao OU NAO, ele me retorna:
Rejeição: NF-e não consta na base de dados da SEFAZ
Notei também que quando aparece a mensagem de Lote Enviado com sucesso ele esta printando o ELSE do envio. Ou seja, ele não emitiu. Mesmo em ambiente de Homologação. Ele esta caindo no Else:
#em caso de sucesso o retorno será o xml autorizado
print(envio[0])
if envio[0] == 0:
print ("success: %s" % envio[1].text)
#em caso de erro o retorno será o xml de resposta da SEFAZ
else:
print ("fail: %s" % envio[1].text)
Vamos por partes: A emissão pode ser feita de modo síncrono ou assíncrono, depende da UF. No caso vc está enviado por lote, que pode conter uma ou mais NF-e. O fato de o lote ter sido recebido com sucesso, não quer dizer que a nota ou as notas enviadas nesse lote terem sido autorizadas ou não. Uma nota só estará disponível para consulta caso ela tenha sido autorizada. Se não existe uma nota com a chave informada, logo ela não foi autorizada. Para saber informações do lote enviado, vc pode utilizar o método, mas deve aguardar 15 segundos:
consulta_recibo('nfe','numero_do_recibo')
Sobre a consulta, sim deve ser apenas os números sem esse 'NFE' no início, conforme está na documentação na wiki. Antes de emitir uma NF-e, faça um teste antes do xml gerado no validador da SEFAZ RS, as respostas do webservice são muito vagas, é comum o preenchimento errado do xml na fase de homologação. Fazer isto é mais produtivo do que ficar consultado o recibo do lote. Para fazer isso, execute:
# assinatura
a1 = AssinaturaA1(certificado, senha)
xml = a1.assinar(nfe, retorna_string="True")
print(xml)
Cole o resultado neste site e verifique os erros: https://www.sefaz.rs.gov.br/NFE/NFE-VAL.aspx
Após isso, quando o seu xml estiver correto, remova o retorna_string e faça o envio/comunicação da NF-e.
Wiki completa do PyNFe https://github.com/leotada/PyNFe/wiki
Estou tentando o consulta recibo de uma NFe que eu tentei emitir:
con = ComunicacaoSefaz(uf, certificado, senha, homologacao)
envio = con.consulta_recibo('nfe', 'XXXXXXxxxxxxxxx') # nfe ou nfce
print (envio.text)
Ele me retorna:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetAutorizacao">
<cUF>35</cUF>
<versaoDados>3.10</versaoDados>
</nfeCabecMsg>
</soap:Header>
<soap:Body>
<nfeRetAutorizacaoLoteResult xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetAutorizacao">
<retConsReciNFe versao="3.10" xmlns="http://www.portalfiscal.inf.br/nfe">
<tpAmb>1</tpAmb>
<verAplic>SP_NFE_PL_008i2</verAplic>
<nRec>XXXXXXxxxxxxxxx</nRec>
<cStat>225</cStat>
<xMotivo>Rejeição: Falha no Schema XML do lote de NFe</xMotivo>
<cUF>35</cUF>
<dhRecbto>2017-08-07T13:43:39-03:00</dhRecbto>
</retConsReciNFe>
</nfeRetAutorizacaoLoteResult>
</soap:Body>
</soap:Envelope>
Eu nao faco questao de emitir em lote ou uma de cada vez (ate seria melhor uma de cada vez e em tempo real). O problema e que de nenhuma forma eu consigo. Esse "lote recebido" que eles me retornam e o print do ELSE, que acredito ser um ERRO como diz nos comentarios que voces fizeram. Eu estava tentando emitir um NFSE para ver se era esse o problema de eu estar emitindo NFE e nao NFSE, porem ele diz que meu CNPJ nao consta no municipio. Ta uma loucura cara haha... da uma luz ai.. abs obrigado pela ajuda
OBS.: Vi que nao tem um retorna_string=True para o consulta recibo... Porque pelo que vi na mensagem ai tem algum problema... O recibo que estou colocando é esse aqui que retorna da mensagem de lote enviado com sucesso:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao">
<cUF>35</cUF>
<versaoDados>3.10</versaoDados>
</nfeCabecMsg>
</soap:Header>
<soap:Body>
<nfeAutorizacaoLoteResult xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao">
<retEnviNFe versao="3.10" xmlns="http://www.portalfiscal.inf.br/nfe">
<tpAmb>1</tpAmb>
<verAplic>SP_NFE_PL_008i2</verAplic>
<cStat>103</cStat>
<xMotivo>Lote recebido com sucesso</xMotivo>
<cUF>35</cUF>
<dhRecbto>2017-08-07T13:43:09-03:00</dhRecbto>
<infRec>
<nRec>ESSE_RECIBO_AQUI</nRec>
<tMed>1</tMed>
</infRec>
</retEnviNFe>
</nfeAutorizacaoLoteResult>
</soap:Body>
</soap:Envelope>
Fiz um teste aqui de NFe imprimindo o xml e fazendo o teste. Apareceu esses 2 resultados. Sobre o certificado nao entendi, o primeiro erro fala de um campo IE.. Não sei se tem algo relacionado, mas no caso o dono do CNPJ disse para nao mencionar a Inscricao estadual para emitir nota. Esse campo e obrigatorio? Digo, necessario?
The 'http://www.portalfiscal.inf.br/nfe:IE' element is invalid - The value '' is invalid according to its datatype 'http://www.portalfiscal.inf.br/nfe:TIe' - The Pattern constraint failed. Caminho: NFe[1]/infNFe/emit/IE/
The element 'X509Data' in namespace 'http://www.w3.org/2000/09/xmldsig#' has invalid child element 'X509Certificate' in namespace 'http://www.w3.org/2000/09/xmldsig#'. Caminho: NFe[1]/Signature/KeyInfo/X509Data/X509Certificate/
Primeiro, NÃO é um erro no else como vc diz. A SEFAZ de SP não aceita envio de apenas uma nota, portanto o PyNFe no seu caso, vai sempre enviar por lote, mesmo que seja apenas uma nota. Como eu mencionei, isto depende da SEFAZ que vc emite. Segundo, IE é OBRIGATÓRIO. Caso o emissor não possua uma IE, ele deve constar como ISENTO no cadastro com a SEFAZ e deve ser informado ie='ISENTO' no preenchimento da NF-e. Por fim a sua consulta do lote tem uma mensagem clara, falha no schema xml da NF-e enviada. Repito a mensagem anterior, antes de emitir a nota, verifique ela no validador da SEFAZ RS, seu xml ainda possui erros de preenchimento. O método consulta recibo não tem o argumento retorna_string, somente serialização de xml e assinatura, para fins de debug do seu xml em sistemas de homologação. Consulta recibo é um método que já executa a comunicação com a SEFAZ. Recomendo que vc leia o manual de orientação do contribuinte para compreender melhor como funciona a emissão de NF-e e os webservices disponíveis. https://www.nfe.fazenda.gov.br/portal/exibirArquivo.aspx?conteudo=URCYvjVMIzI=
Outra coisa, para emitir NF-e, NFC-e ou NFS-e é preciso solicitar junto a SEFAZ estadual ou município, autorização tanto da empresa de software como do próprio emitente. No caso da NF-e, como ela já é obrigatória desde 2009, provavelmente o CNPJ já está cadastrado na SEFAZ como emissor de NF-e. Caso seja um CNPJ novo, deve ser solicitado a autorização junto ao contador responsável pela empresa. No caso de NFS-e, como é muito específico, provavelmente o CNPJ não está registrado junto ao município como um emissor de NFS-e, sendo impossível testar o envio, mesmo em homologação. Da mesma forma, deve ser solicitado pelo contador responsável pela empresa, a autorização de emissão de NFS-e junto a SEFAZ do município. A emissão de NFS-e ainda é bastante limitado no PyNFe, suportando poucas cidades.
Quando falei ERRO quis dizer que a condição retornou uma mensagem de envio de lote com sucesso porem não autorizou. Saquei, essa do IE eu não estava ciente... De repente é esse o problema... Sobre o validador eu ja conhecia e estava usando. Fiz os testes hoje com um scriptzinho pra emitir em lote e rolou. Dei uma pesquisada e também falam de um problema com IM..
Sim saquei, provavelmente é isso ai da autorização. Estou emitindo de São Paulo, vou verificar amanhã com o contador se ja foi solicitado a autorização. Abs valeu
IM também depende da SEFAZ, aqui no Paraná IE, IM e CNAE são obrigatórios. Depois que o xml estiver correto, verifique também a assinatura, é comum casos de assinatura errada por gerar ou exportar o certificado digital em formato incorreto.
Boa tarde, Estou tendo problemas para consultar as notas a partir do meu CNPJ. Ele sempre me retorna uma mensagem de Serviço Paralisado.
Segue o XML que ele retorna:
Fora que também fica dando um erro de SSL. Eu importei o certificado em minha maquina, será que preciso importar e fazer os testes apenas no servidor onde eu tenho um certificado SSL instalado?
Codigo que estou usando para consultar:
Obrigado.