Browse Source

Merge pull request #1 from TadaSoftware/master

Atualização do Fork
pull/58/head
erikseyti 7 years ago
committed by GitHub
parent
commit
e6681b1a1e
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      pynfe/processamento/comunicacao.py
  2. 42
      pynfe/processamento/serializacao.py
  3. 10
      pynfe/utils/webservices.py

4
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),
@ -418,7 +418,7 @@ class ComunicacaoSefaz(Comunicacao):
# limpa xml com caracteres bugados para infNFeSupl em NFC-e
xml = re.sub(
'<qrCode>(.*?)</qrCode>',
lambda x: x.group(0).replace('&lt;', '<').replace('&gt;', '>').replace('amp;', ''),
lambda x: x.group(0).replace('&lt;', '<').replace('&gt;', '>').replace('&amp;', ''),
etree.tostring(xml, encoding='unicode').replace('\n', '')
)
xml = xml_declaration + xml

42
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('&lt;','<').replace('&gt;','>').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

10
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'
'URL': 'sefaz.pe.gov.br/nfce/consulta'
},
'AL': {
'STATUS': '',
@ -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': 'http://www.fazenda.pr.gov.br/nfce/consulta',
'HTTPS': 'https://',
'HOMOLOGACAO': 'https://homologacao.'
},
@ -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',

Loading…
Cancel
Save