From c6e620104d2ff42481f4c42f054c10f6e3e8a939 Mon Sep 17 00:00:00 2001 From: juniortada Date: Mon, 24 Sep 2018 14:51:41 -0300 Subject: [PATCH 1/5] =?UTF-8?q?[fix]=20corre=C3=A7=C3=B5es=20e=20ajustes?= =?UTF-8?q?=20no=20merge=20qrcode=202.00?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pynfe/processamento/serializacao.py | 42 ++++++------------------------------- pynfe/utils/webservices.py | 4 ++-- 2 files changed, 8 insertions(+), 38 deletions(-) diff --git a/pynfe/processamento/serializacao.py b/pynfe/processamento/serializacao.py index 0e520bf..19d9570 100644 --- a/pynfe/processamento/serializacao.py +++ b/pynfe/processamento/serializacao.py @@ -256,7 +256,7 @@ class SerializacaoXML(Serializacao): # Lei da transparencia # Tributos aprox por item if produto_servico.valor_tributos_aprox: - etree.SubElement(imposto, 'vTotTrib').text = produto_servico.valor_tributos_aprox + etree.SubElement(imposto, 'vTotTrib').text = str(produto_servico.valor_tributos_aprox) ### ICMS icms = etree.SubElement(imposto, 'ICMS') @@ -674,7 +674,7 @@ class SerializacaoXML(Serializacao): class SerializacaoQrcode(object): """ Classe que gera e serializa o qrcode de NFC-e no xml """ - def gerar_qrcode(self, token, csc, xml, return_qr=False,qrcode_emissao="1"): + def gerar_qrcode(self, token, csc, xml, return_qr=False, online=True): """ Classe para gerar url do qrcode da NFC-e """ # Procura atributos no xml ns = {'ns':NAMESPACE_NFE} @@ -697,30 +697,19 @@ class SerializacaoQrcode(object): except IndexError: cpf = None total = nfe.xpath('ns:infNFe/ns:total/ns:ICMSTot/ns:vNF/text()', namespaces=ns)[0] - icms = nfe.xpath('ns:infNFe/ns:total/ns:ICMSTot/ns:vICMS/text()', namespaces=ns)[0] + # icms = nfe.xpath('ns:infNFe/ns:total/ns:ICMSTot/ns:vICMS/text()', namespaces=ns)[0] digest = nfe.xpath('sig:Signature/sig:SignedInfo/sig:Reference/sig:DigestValue/text()', namespaces=sig)[0].encode() - lista_dia = re.findall("-\d{2}", str(data)) dia = str(lista_dia[1]) dia = dia[1:] - - - replacements = {'0': ''} token = re.sub('([0])', lambda m: replacements[m.group()], token) - - #VERSAO_QRCODE =2 - - if qrcode_emissao == "1": + if online: #versão online - - url = '{}|{}|{}|{}'.format( - chave,VERSAO_QRCODE,tpamb,token - ) - + url = '{}|{}|{}|{}'.format(chave,VERSAO_QRCODE, tpamb, token) else: #versão offline digest = digest.lower() @@ -734,23 +723,7 @@ class SerializacaoQrcode(object): url_hash = hashlib.sha1(url_complementar.encode()).digest() url_hash = base64.b16encode(url_hash).decode() - url_formatacao = "p=" - url = url_formatacao + url + "|" + url_hash - - - - - #if cpf is None: - # url = 'chNFe={}&nVersao={}&tpAmb={}&dhEmi={}&vNF={}&vICMS={}&digVal={}&cIdToken={}'.format( - # chave, VERSAO_QRCODE, tpamb, data.lower(), total, icms, digest.lower(), token) - #else: - # url = 'chNFe={}&nVersao={}&tpAmb={}&cDest={}&dhEmi={}&vNF={}&vICMS={}&digVal={}&cIdToken={}'.format( - # chave, VERSAO_QRCODE, tpamb, cpf, data.lower(), total, icms, digest.lower(), token) - - #url_hash = hashlib.sha1(url.encode()+csc.encode()).digest() - #url_hash = base64.b16encode(url_hash).decode() - - #url = url + '&cHashQRCode=' + url_hash.upper() + url = 'p={}|{}'.format(url, url_hash) # url_chave - Texto com a URL de consulta por chave de acesso a ser impressa no DANFE NFC-e. # Informar a URL da “Consulta por chave de acesso da NFC-e”. @@ -792,9 +765,6 @@ class SerializacaoQrcode(object): .replace('\n','').replace('<','<').replace('>','>').replace('amp;','') nfe = etree.fromstring(tnfe) # retorna nfe com o qrcode incluido NT2015/002 e qrcode - - - if return_qr: return nfe, qrcode.strip() # retorna apenas nfe com o qrcode incluido NT2015/002 diff --git a/pynfe/utils/webservices.py b/pynfe/utils/webservices.py index 270d40c..fd026bf 100644 --- a/pynfe/utils/webservices.py +++ b/pynfe/utils/webservices.py @@ -199,7 +199,7 @@ NFCE = { 'INUTILIZACAO': 'nfce.fazenda.sp.gov.br/ws/NFeInutilizacao4.asmx', 'EVENTOS': 'nfce.fazenda.sp.gov.br/ws/NFeRecepcaoEvento4.asmx', 'QR': 'nfce.fazenda.sp.gov.br/NFCeConsultaPublica/Paginas/ConsultaQRCode.aspx?', - 'URL': 'nfce.fazenda.sp.gov.br/NFCeConsultaPublica/Paginas/ConsultaPublica.aspx', + 'URL': 'nfce.fazenda.sp.gov.br/consulta', 'HTTPS': 'https://', 'HOMOLOGACAO': 'https://homologacao.' }, @@ -212,7 +212,7 @@ NFCE = { 'EVENTOS': 'nfce.sefa.pr.gov.br/nfce/NFeRecepcaoEvento4?wsdl', 'CADASTRO': 'nfce.sefa.pr.gov.br/nfce/CadConsultaCadastro4?wsdl', 'QR': 'http://www.fazenda.pr.gov.br/nfce/qrcode?', - 'URL': 'http://www.fazenda.pr.gov.br', + 'URL': 'www.fazenda.pr.gov.br/nfce/consulta', 'HTTPS': 'https://', 'HOMOLOGACAO': 'https://homologacao.' }, From 52dccdbae140b6851c7343971fb733a0771241d1 Mon Sep 17 00:00:00 2001 From: juniortada Date: Mon, 24 Sep 2018 15:45:32 -0300 Subject: [PATCH 2/5] [fix] url consulta qrcode PR --- pynfe/utils/webservices.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pynfe/utils/webservices.py b/pynfe/utils/webservices.py index fd026bf..0be010f 100644 --- a/pynfe/utils/webservices.py +++ b/pynfe/utils/webservices.py @@ -212,7 +212,7 @@ NFCE = { 'EVENTOS': 'nfce.sefa.pr.gov.br/nfce/NFeRecepcaoEvento4?wsdl', 'CADASTRO': 'nfce.sefa.pr.gov.br/nfce/CadConsultaCadastro4?wsdl', 'QR': 'http://www.fazenda.pr.gov.br/nfce/qrcode?', - 'URL': 'www.fazenda.pr.gov.br/nfce/consulta', + 'URL': 'http://www.fazenda.pr.gov.br/nfce/consulta', 'HTTPS': 'https://', 'HOMOLOGACAO': 'https://homologacao.' }, From d3eca6b0103d584d0718dd86037e625c05261772 Mon Sep 17 00:00:00 2001 From: juniortada Date: Thu, 1 Nov 2018 11:20:54 -0200 Subject: [PATCH 3/5] [fix] atualizado url NFCE PE --- pynfe/processamento/comunicacao.py | 2 +- pynfe/utils/webservices.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pynfe/processamento/comunicacao.py b/pynfe/processamento/comunicacao.py index 7674511..960a545 100644 --- a/pynfe/processamento/comunicacao.py +++ b/pynfe/processamento/comunicacao.py @@ -418,7 +418,7 @@ class ComunicacaoSefaz(Comunicacao): # limpa xml com caracteres bugados para infNFeSupl em NFC-e xml = re.sub( '(.*?)', - lambda x: x.group(0).replace('<', '<').replace('>', '>').replace('amp;', ''), + lambda x: x.group(0).replace('<', '<').replace('>', '>').replace('&', ''), etree.tostring(xml, encoding='unicode').replace('\n', '') ) xml = xml_declaration + xml diff --git a/pynfe/utils/webservices.py b/pynfe/utils/webservices.py index 270d40c..0443aa5 100644 --- a/pynfe/utils/webservices.py +++ b/pynfe/utils/webservices.py @@ -125,10 +125,10 @@ NFCE = { 'CHAVE': '', 'INUTILIZACAO': '', 'EVENTOS': '', - 'QR': 'sefaz.pe.gov.br/nfce-web/consultarNFCe?', + 'QR': 'sefaz.pe.gov.br/nfce/consulta', 'HTTPS': 'http://nfce.', - 'HOMOLOGACAO': 'http://nfcehomolog.', - 'URL': 'sefaz.pe.gov.br/nfce-web/consultarNFCe' + 'HOMOLOGACAO': 'http://nfce.', + 'URL': 'sefaz.pe.gov.br/nfce/consulta' }, 'AL': { 'STATUS': '', From 549b484135fbec5772e0649b0e43d9b620630b92 Mon Sep 17 00:00:00 2001 From: juniortada Date: Thu, 1 Nov 2018 11:23:02 -0200 Subject: [PATCH 4/5] =?UTF-8?q?[fix]=20corre=C3=A7=C3=A3o=20na=20nova=20ur?= =?UTF-8?q?l=20NFCE=20PE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pynfe/utils/webservices.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pynfe/utils/webservices.py b/pynfe/utils/webservices.py index 2c29b95..433a582 100644 --- a/pynfe/utils/webservices.py +++ b/pynfe/utils/webservices.py @@ -125,7 +125,7 @@ NFCE = { 'CHAVE': '', 'INUTILIZACAO': '', 'EVENTOS': '', - 'QR': 'sefaz.pe.gov.br/nfce/consulta', + 'QR': 'sefaz.pe.gov.br/nfce/consulta?', 'HTTPS': 'http://nfce.', 'HOMOLOGACAO': 'http://nfce.', 'URL': 'sefaz.pe.gov.br/nfce/consulta' From b0b0af3af01e0159e78277036eaeb6d0b31aa9a1 Mon Sep 17 00:00:00 2001 From: juniortada Date: Fri, 7 Dec 2018 00:36:33 -0200 Subject: [PATCH 5/5] [fix] corrigido url webservice nfe sp e nfce pe --- pynfe/processamento/comunicacao.py | 2 +- pynfe/utils/webservices.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pynfe/processamento/comunicacao.py b/pynfe/processamento/comunicacao.py index 960a545..43a5e70 100644 --- a/pynfe/processamento/comunicacao.py +++ b/pynfe/processamento/comunicacao.py @@ -286,7 +286,7 @@ class ComunicacaoSefaz(Comunicacao): 'uf': uf, 'ano': ano, 'cnpj': cnpj, - 'modelo': '55', + 'modelo': '55' if modelo == 'nfe' else '65', # 55=NF-e; 65=NFC-e; 'serie': serie.zfill(3), 'num_ini': str(numero_inicial).zfill(9), 'num_fin': str(numero_final).zfill(9), diff --git a/pynfe/utils/webservices.py b/pynfe/utils/webservices.py index 433a582..342aa0b 100644 --- a/pynfe/utils/webservices.py +++ b/pynfe/utils/webservices.py @@ -127,7 +127,7 @@ NFCE = { 'EVENTOS': '', 'QR': 'sefaz.pe.gov.br/nfce/consulta?', 'HTTPS': 'http://nfce.', - 'HOMOLOGACAO': 'http://nfce.', + 'HOMOLOGACAO': 'http://nfcehomolog.', 'URL': 'sefaz.pe.gov.br/nfce/consulta' }, 'AL': { @@ -351,7 +351,7 @@ NFE = { 'STATUS': 'nfe.fazenda.sp.gov.br/ws/NFeStatusServico4.asmx', 'AUTORIZACAO': 'nfe.fazenda.sp.gov.br/ws/nfeautorizacao4.asmx', 'RECIBO': 'nfe.fazenda.sp.gov.br/ws/nferetautorizacao4.asmx', - 'CHAVE': 'nfe.fazenda.sp.gov.br/ws/nfeconsulta4.asmx', + 'CHAVE': 'nfe.fazenda.sp.gov.br/ws/nfeconsultaprotocolo4.asmx', 'INUTILIZACAO': 'nfe.fazenda.sp.gov.br/ws/nfeinutilizacao4.asmx', 'EVENTOS': 'nfe.fazenda.sp.gov.br/ws/nferecepcaoevento4.asmx', 'CADASTRO': 'nfe.fazenda.sp.gov.br/ws/cadconsultacadastro4.asmx',