Browse Source

Merge pull request #51 from mandala21/master

consulta distribuicao por chave e metodo de descompactar gzip
pull/54/head
Junior Tada 7 years ago
committed by GitHub
parent
commit
5ccdfea907
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 20
      pynfe/processamento/comunicacao.py
  2. 30
      pynfe/utils/descompactar.py

20
pynfe/processamento/comunicacao.py

@ -17,6 +17,7 @@ from pynfe.utils.flags import (
from pynfe.utils.webservices import NFE, NFCE, NFSE from pynfe.utils.webservices import NFE, NFCE, NFSE
from pynfe.entidades.certificado import CertificadoA1 from pynfe.entidades.certificado import CertificadoA1
from .assinatura import AssinaturaA1 from .assinatura import AssinaturaA1
from pynfe.utils.descompactar import DescompactaGzip
class Comunicacao(object): class Comunicacao(object):
@ -167,7 +168,7 @@ class ComunicacaoSefaz(Comunicacao):
# url # url
url = self._get_url_an(consulta='DISTRIBUICAO') url = self._get_url_an(consulta='DISTRIBUICAO')
# Monta XML para envio da requisição # Monta XML para envio da requisição
raiz = etree.Element('distDFeInt', versao='1.00', xmlns=NAMESPACE_NFE)
raiz = etree.Element('distDFeInt', versao='1.01', xmlns=NAMESPACE_NFE)
etree.SubElement(raiz, 'tpAmb').text = str(self._ambiente) etree.SubElement(raiz, 'tpAmb').text = str(self._ambiente)
if self.uf: if self.uf:
etree.SubElement(raiz, 'cUFAutor').text = CODIGOS_ESTADOS[self.uf.upper()] etree.SubElement(raiz, 'cUFAutor').text = CODIGOS_ESTADOS[self.uf.upper()]
@ -175,15 +176,16 @@ class ComunicacaoSefaz(Comunicacao):
etree.SubElement(raiz, 'CNPJ').text = cnpj etree.SubElement(raiz, 'CNPJ').text = cnpj
else: else:
etree.SubElement(raiz, 'CPF').text = cpf etree.SubElement(raiz, 'CPF').text = cpf
distNSU = etree.SubElement(raiz, 'distNSU')
etree.SubElement(distNSU, 'ultNSU').text = str(nsu).zfill(15)
# if chave:
# consChNFe = etree.SubElement(raiz, 'consChNFe')
# etree.SubElement(consChNFe, 'chNFe').text = chave
# Monta XML para envio da requisição
if not chave:
distNSU = etree.SubElement(raiz, 'distNSU')
etree.SubElement(distNSU, 'ultNSU').text = str(nsu).zfill(15)
if chave:
consChNFe = etree.SubElement(raiz, 'consChNFe')
etree.SubElement(consChNFe, 'chNFe').text = chave
#Monta XML para envio da requisição
xml = self._construir_xml_soap('NFeDistribuicaoDFe', raiz) xml = self._construir_xml_soap('NFeDistribuicaoDFe', raiz)
# print(url)
# print(etree.tostring(xml))
return self._post(url, xml) return self._post(url, xml)
def consulta_cadastro(self, modelo, cnpj): def consulta_cadastro(self, modelo, cnpj):

30
pynfe/utils/descompactar.py

@ -0,0 +1,30 @@
"""
@author: Lucas Resende
classe que descompacta o gzip recebido pela consulta distribuicao
"""
from io import BytesIO
import base64
import gzip
from lxml import etree
class DescompactaGzip(object):
@staticmethod
def descompacta(stringZipada):
"""
:paramn stringZipada: String
:return : Etree
"""
arq = BytesIO()
arq.write(base64.b64decode(stringZipada))
arq.seek(0)
zip = gzip.GzipFile(fileobj=arq)
texto = zip.read()
arq.close()
zip.close()
descompactado = texto.decode('utf-8')
return etree.fromstring(descompactado)
Loading…
Cancel
Save