3 changed files with 82 additions and 9 deletions
-
23pynfe/processamento/comunicacao.py
-
30pynfe/utils/descompactar.py
-
38tests/consulta_distribuicao.txt
@ -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) |
||||
@ -0,0 +1,38 @@ |
|||||
|
from pynfe.processamento.comunicacao import ComunicacaoSefaz |
||||
|
from pynfe.utils.descompactar import DescompactaGzip |
||||
|
from pynfe.utils.flags import NAMESPACE_NFE |
||||
|
from lxml import etree |
||||
|
|
||||
|
CNPJ = 'CPNJ_DA_EMPRESA' |
||||
|
CHAVE = 'CHAVE_DA_NOTA_DA_CONSULTA' |
||||
|
certificado = "/certs/cert.pfx" |
||||
|
senha = '1234' |
||||
|
uf = 'pi' |
||||
|
homologacao = False |
||||
|
con = ComunicacaoSefaz(uf, certificado, senha, homologacao) |
||||
|
xml = con.consulta_distribuicao(cnpj=CNPJ,chave=CHAVE) |
||||
|
#print('\n\n Retorno:') |
||||
|
#print(xml.text) |
||||
|
|
||||
|
print('Descompactado \n\n') |
||||
|
|
||||
|
# exemplo de leitura da resposta |
||||
|
ns = {'ns': NAMESPACE_NFE} |
||||
|
#esse retorno precisa ser melhorado |
||||
|
|
||||
|
resposta = etree.fromstring(xml.content) |
||||
|
|
||||
|
#desconpactando a mensagem |
||||
|
|
||||
|
zip_resposta = resposta.xpath('//ns:retDistDFeInt/ns:loteDistDFeInt/ns:docZip', namespaces=ns)[0].text |
||||
|
|
||||
|
des_resposta = DescompactaGzip.descompacta(zip_resposta) |
||||
|
|
||||
|
#recuperando valores do resultado da descompactacao |
||||
|
|
||||
|
chave = des_resposta.xpath('//ns:resNFe/ns:chNFe',namespaces=ns)[0].text |
||||
|
|
||||
|
valor = des_resposta.xpath('//ns:resNFe/ns:vNF',namespaces=ns)[0].text |
||||
|
|
||||
|
|
||||
|
print('chave:{}\nvalor:{}'.format(chave,valor)) |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue