Browse Source

[NEW][MDF-E] Analise resposta

pull/36/head
Luis Felipe Mileo 8 years ago
parent
commit
49b87dfadc
  1. 39
      pynfe/processamento/mdfe.py
  2. 14
      pynfe/processamento/resposta.py

39
pynfe/processamento/mdfe.py

@ -1,4 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Copyright (C) 2018 - TODAY Luis Felipe Mileo - KMEE INFORMATICA LTDA
# License AGPL-3 - See https://www.gnu.org/licenses/lgpl-3.0.html
from __future__ import division, print_function, unicode_literals from __future__ import division, print_function, unicode_literals
@ -23,12 +25,13 @@ from pynfe.utils.webservices import (
) )
from pynfe.utils import etree from pynfe.utils import etree
from .comunicacao import ComunicacaoSefaz from .comunicacao import ComunicacaoSefaz
from .resposta import analisar_retorno
from mdfelib.v3_00.consStatServMDFe import TConsStatServ
from mdfelib.v3_00.consSitMDFe import TConsSitMDFe
from mdfelib.v3_00.consMDFeNaoEnc import TConsMDFeNaoEnc
from mdfelib.v3_00.enviMDFe import TEnviMDFe
from mdfelib.v3_00.consReciMDFe import TConsReciMDFe
from mdfelib.v3_00 import consStatServMDFe
from mdfelib.v3_00 import consSitMDFe
from mdfelib.v3_00 import consMDFeNaoEnc
from mdfelib.v3_00 import enviMDFe
from mdfelib.v3_00 import consReciMDFe
class ComunicacaoMDFE(ComunicacaoSefaz): class ComunicacaoMDFE(ComunicacaoSefaz):
@ -55,7 +58,7 @@ class ComunicacaoMDFE(ComunicacaoSefaz):
WS_MDFE_STATUS_SERVICO WS_MDFE_STATUS_SERVICO
) )
raiz = TConsStatServ(
raiz = consStatServMDFe.TConsStatServ(
versao=self._versao, versao=self._versao,
tpAmb=str(self._ambiente), tpAmb=str(self._ambiente),
xServ='STATUS', xServ='STATUS',
@ -67,15 +70,16 @@ class ComunicacaoMDFE(ComunicacaoSefaz):
self._construir_etree_ds(raiz) self._construir_etree_ds(raiz)
) )
return self._post(
retorno = self._post(
url, xml, soap_webservice_method=webservice + b'/' + metodo url, xml, soap_webservice_method=webservice + b'/' + metodo
) )
return analisar_retorno(retorno, consStatServMDFe)
def consulta(self, chave): def consulta(self, chave):
url, webservice, metodo = self._get_url_webservice_metodo( url, webservice, metodo = self._get_url_webservice_metodo(
WS_MDFE_CONSULTA WS_MDFE_CONSULTA
) )
raiz = TConsSitMDFe(
raiz = consSitMDFe.TConsSitMDFe(
versao=self._versao, versao=self._versao,
tpAmb=str(self._ambiente), tpAmb=str(self._ambiente),
xServ='CONSULTAR', xServ='CONSULTAR',
@ -86,15 +90,16 @@ class ComunicacaoMDFE(ComunicacaoSefaz):
webservice, webservice,
self._construir_etree_ds(raiz) self._construir_etree_ds(raiz)
) )
return self._post(
retorno = self._post(
url, xml, soap_webservice_method=webservice + b'/' + metodo url, xml, soap_webservice_method=webservice + b'/' + metodo
) )
return analisar_retorno(retorno, consSitMDFe)
def consulta_nao_encerrados(self, cnpj): def consulta_nao_encerrados(self, cnpj):
url, webservice, metodo = self._get_url_webservice_metodo( url, webservice, metodo = self._get_url_webservice_metodo(
WS_MDFE_CONSULTA_NAO_ENCERRADOS WS_MDFE_CONSULTA_NAO_ENCERRADOS
) )
raiz = TConsMDFeNaoEnc(
raiz = consMDFeNaoEnc.TConsMDFeNaoEnc(
versao=self._versao, versao=self._versao,
tpAmb=str(self._ambiente), tpAmb=str(self._ambiente),
xServ='CONSULTAR NÃO ENCERRADOS', xServ='CONSULTAR NÃO ENCERRADOS',
@ -105,16 +110,17 @@ class ComunicacaoMDFE(ComunicacaoSefaz):
webservice, webservice,
self._construir_etree_ds(raiz) self._construir_etree_ds(raiz)
) )
return self._post(
retorno = self._post(
url, xml, soap_webservice_method=webservice + b'/' + metodo url, xml, soap_webservice_method=webservice + b'/' + metodo
) )
return analisar_retorno(retorno, consMDFeNaoEnc)
def autorizacao(self, str_documento_assinado, id_lote='1'): def autorizacao(self, str_documento_assinado, id_lote='1'):
url, webservice, metodo = self._get_url_webservice_metodo( url, webservice, metodo = self._get_url_webservice_metodo(
WS_MDFE_RECEPCAO WS_MDFE_RECEPCAO
) )
raiz = TEnviMDFe(versao=self._versao, idLote=id_lote)
raiz = enviMDFe.TEnviMDFe(versao=self._versao, idLote=id_lote)
raiz.original_tagname_ = 'enviMDFe' raiz.original_tagname_ = 'enviMDFe'
etree_ds = self._construir_etree_ds(raiz) etree_ds = self._construir_etree_ds(raiz)
@ -122,16 +128,17 @@ class ComunicacaoMDFE(ComunicacaoSefaz):
xml = self._construir_xml_soap(webservice, etree_ds) xml = self._construir_xml_soap(webservice, etree_ds)
return self._post(
retorno = self._post(
url, xml, soap_webservice_method=webservice + b'/' + metodo url, xml, soap_webservice_method=webservice + b'/' + metodo
) )
return analisar_retorno(retorno, enviMDFe)
def consulta_recibo(self, numero): def consulta_recibo(self, numero):
url, webservice, metodo = self._get_url_webservice_metodo( url, webservice, metodo = self._get_url_webservice_metodo(
WS_MDFE_RET_RECEPCAO WS_MDFE_RET_RECEPCAO
) )
raiz = TConsReciMDFe(
raiz = consReciMDFe.TConsReciMDFe(
versao=self._versao, versao=self._versao,
tpAmb=str(self._ambiente), tpAmb=str(self._ambiente),
nRec=numero, nRec=numero,
@ -141,6 +148,8 @@ class ComunicacaoMDFE(ComunicacaoSefaz):
webservice, webservice,
self._construir_etree_ds(raiz) self._construir_etree_ds(raiz)
) )
return self._post(
retorno = self._post(
url, xml, soap_webservice_method=webservice + b'/' + metodo url, xml, soap_webservice_method=webservice + b'/' + metodo
) )
return analisar_retorno(retorno, consReciMDFe)

14
pynfe/processamento/resposta.py

@ -6,7 +6,15 @@ import re
from pynfe.utils import etree from pynfe.utils import etree
def analisar_retorno(retorno, classe_resposta):
class RetornoSoap(object):
def __init__(self, webservice, retorno, resposta):
self.webservice = webservice
self.resposta = resposta
self.retorno = retorno
def analisar_retorno(webservice, retorno, classe_resposta):
retorno.raise_for_status() retorno.raise_for_status()
@ -15,6 +23,6 @@ def analisar_retorno(retorno, classe_resposta):
if match: if match:
resultado = etree.tostring(etree.fromstring(match.group(1))[0]) resultado = etree.tostring(etree.fromstring(match.group(1))[0])
classe_resposta.Validate_simpletypes_ = False classe_resposta.Validate_simpletypes_ = False
retorno = classe_resposta.parseString(resultado.encode('utf-8'))
resposta = classe_resposta.parseString(resultado.encode('utf-8'))
return retorno
return RetornoSoap(webservice, retorno, resposta)
Loading…
Cancel
Save