@ -9,6 +9,7 @@ from lxml import etree
from .patch import has_patch
from .patch import has_patch
from .assinatura import Assinatura
from .assinatura import Assinatura
from pytrustnfe.xml import render_xml , sanitize_response
from pytrustnfe.xml import render_xml , sanitize_response
from pytrustnfe.xml.validate import ValidarXml
from pytrustnfe.utils import gerar_chave , ChaveNFe
from pytrustnfe.utils import gerar_chave , ChaveNFe
from pytrustnfe.Servidores import localizar_url
from pytrustnfe.Servidores import localizar_url
from pytrustnfe.certificado import extract_cert_and_key_from_pfx , save_cert_key
from pytrustnfe.certificado import extract_cert_and_key_from_pfx , save_cert_key
@ -20,6 +21,9 @@ from requests import Session
from zeep import Client
from zeep import Client
from zeep.transports import Transport
from zeep.transports import Transport
# Xml schema validation class
validar_xml = ValidarXml ( )
def _generate_nfe_id ( * * kwargs ) :
def _generate_nfe_id ( * * kwargs ) :
for item in kwargs [ ' NFes ' ] :
for item in kwargs [ ' NFes ' ] :
@ -125,7 +129,11 @@ def xml_autorizar_nfe(certificado, **kwargs):
def autorizar_nfe ( certificado , * * kwargs ) : # Assinar
def autorizar_nfe ( certificado , * * kwargs ) : # Assinar
if " xml " not in kwargs :
if " xml " not in kwargs :
kwargs [ ' xml ' ] = xml_autorizar_nfe ( certificado , * * kwargs )
kwargs [ ' xml ' ] = xml_autorizar_nfe ( certificado , * * kwargs )
return _send ( certificado , ' NfeAutorizacao ' , * * kwargs )
erros_esquemas = validar_xml . valida_nfe ( kwargs [ ' xml ' ] )
if erros_esquemas is not False :
return erros_esquemas
else :
return _send ( certificado , ' NfeAutorizacao ' , * * kwargs )
def xml_retorno_autorizar_nfe ( certificado , * * kwargs ) :
def xml_retorno_autorizar_nfe ( certificado , * * kwargs ) :
@ -214,6 +222,16 @@ def xml_consulta_distribuicao_nfe(certificado, **kwargs): # Assinar
return _render ( certificado , ' NFeDistribuicaoDFe ' , False , * * kwargs )
return _render ( certificado , ' NFeDistribuicaoDFe ' , False , * * kwargs )
def consulta_distribuicao_nfe ( certificado , * * kwargs ) :
if " xml " not in kwargs :
kwargs [ ' xml ' ] = xml_consulta_distribuicao_nfe ( certificado , * * kwargs )
erros_esquemas = validar_xml . valida_distribuicao ( kwargs [ ' xml ' ] )
if erros_esquemas is not False :
return erros_esquemas
else :
return _send_v310 ( certificado , * * kwargs )
def _send_v310 ( certificado , * * kwargs ) :
def _send_v310 ( certificado , * * kwargs ) :
xml_send = kwargs [ " xml " ]
xml_send = kwargs [ " xml " ]
base_url = localizar_url (
base_url = localizar_url (
@ -243,19 +261,3 @@ def _send_v310(certificado, **kwargs):
' received_xml ' : response ,
' received_xml ' : response ,
' object ' : obj . Body . nfeDistDFeInteresseResponse . nfeDistDFeInteresseResult
' object ' : obj . Body . nfeDistDFeInteresseResponse . nfeDistDFeInteresseResult
}
}
def consulta_distribuicao_nfe ( certificado , * * kwargs ) :
if " xml " not in kwargs :
kwargs [ ' xml ' ] = xml_consulta_distribuicao_nfe ( certificado , * * kwargs )
return _send_v310 ( certificado , * * kwargs )
def xml_download_nfe ( certificado , * * kwargs ) : # Assinar
return _render ( certificado , ' NFeDistribuicaoDFe ' , False , * * kwargs )
def download_nfe ( certificado , * * kwargs ) :
if " xml " not in kwargs :
kwargs [ ' xml ' ] = xml_download_nfe ( certificado , * * kwargs )
return _send_v310 ( certificado , * * kwargs )