From f4458972c3cb5259ceef8436e280a5015d3b897d Mon Sep 17 00:00:00 2001 From: Danimar Ribeiro Date: Fri, 9 Sep 2016 08:05:32 -0300 Subject: [PATCH] =?UTF-8?q?Melhorias=20no=20c=C3=B3digo=20de=20localizar?= =?UTF-8?q?=20a=20url=20do=20servidor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pytrustnfe/Servidores.py | 59 ++++++++++++++++++------ pytrustnfe/nfe/__init__.py | 48 ++++++++++--------- pytrustnfe/nfe/templates/NfeConsultaCadastro.xml | 3 +- 3 files changed, 71 insertions(+), 39 deletions(-) diff --git a/pytrustnfe/Servidores.py b/pytrustnfe/Servidores.py index 01ba675..637641b 100644 --- a/pytrustnfe/Servidores.py +++ b/pytrustnfe/Servidores.py @@ -2,32 +2,63 @@ # © 2016 Danimar Ribeiro # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -WS_NFE_AUTORIZACAO = 0 -WS_NFE_CONSULTA_AUTORIZACAO = 1 -WS_NFE_CANCELAMENTO = 2 -WS_NFE_INUTILIZACAO = 3 -WS_NFE_CONSULTA = 4 -WS_NFE_SITUACAO = 5 -WS_NFE_CONSULTA_CADASTRO = 6 - -WS_DPEC_RECEPCAO = 7 +WS_NFE_AUTORIZACAO = 'NfeAutorizacao' +WS_NFE_CONSULTA_AUTORIZACAO = 'NfeRetAutorizacao' +WS_NFE_CANCELAMENTO = 'RecepcaoEventoCancelamento' +WS_NFE_INUTILIZACAO = 'NfeInutilizacao' +WS_NFE_CONSULTA = 'NfeConsultaProtocolo' +WS_NFE_SITUACAO = 'NfeStatusServico' +WS_NFE_CONSULTA_CADASTRO = 'NfeConsultaCadastro' + +WS_DPEC_RECEPCAO = 'RecepcaoEventoEPEC' WS_DPEC_CONSULTA = 8 -WS_NFE_RECEPCAO_EVENTO = 9 -WS_NFE_DOWNLOAD = 10 -WS_NFE_CONSULTA_DESTINADAS = 11 +WS_NFE_RECEPCAO_EVENTO = 'RecepcaoEventoCarta' +WS_NFE_DOWNLOAD = 'NfeDownloadNF' +WS_NFE_CONSULTA_DESTINADAS = 'NfeConsultaDest' WS_DFE_DISTRIBUICAO = 12 NFE_AMBIENTE_PRODUCAO = 1 NFE_AMBIENTE_HOMOLOGACAO = 2 +SIGLA_ESTADO = { + '12': 'AC', + '27': 'AL', + '13': 'AM', + '16': 'AP', + '29': 'BA', + '23': 'CE', + '53': 'DF', + '32': 'ES', + '52': 'GO', + '21': 'MA', + '31': 'MG', + '50': 'MS', + '51': 'MT', + '15': 'PA', + '25': 'PB', + '26': 'PE', + '22': 'PI', + '41': 'PR', + '33': 'RJ', + '24': 'RN', + '11': 'RO', + '14': 'RR', + '43': 'RS', + '42': 'SC', + '28': 'SE', + '35': 'SP', + '17': 'TO', +} + def localizar_url(servico, estado): - return ESTADO_WS[estado]['servidor'], ESTADO_WS[estado][servico] + sigla = SIGLA_ESTADO[estado] + return ESTADO_WS[sigla]['servidor'], ESTADO_WS[sigla][servico] METODO_WS = { - WS_NFE_AUTORIZACAO:{ + WS_NFE_AUTORIZACAO: { 'webservice': 'NfeAutorizacao', 'metodo': 'NfeAutorizacao', }, diff --git a/pytrustnfe/nfe/__init__.py b/pytrustnfe/nfe/__init__.py index 5b69cd8..3857e89 100644 --- a/pytrustnfe/nfe/__init__.py +++ b/pytrustnfe/nfe/__init__.py @@ -16,6 +16,7 @@ def _build_header(**kwargs): vals = {'estado': kwargs['estado'], 'soap_action': ''} return CabecalhoSoap(**vals) + def _generate_nfe_id(**kwargs): for item in kwargs['NFes']: vals = { @@ -28,71 +29,72 @@ def _generate_nfe_id(**kwargs): 'numero': item['infNFe']['ide']['nNF'], 'tipo': item['infNFe']['ide']['tpEmis'], 'codigo': item['infNFe']['ide']['cNF'], - } + } chave = ChaveNFe(**vals) - item['infNFe']['Id'] = gerar_chave(chave, 'NFe') - - + item['infNFe']['Id'] = gerar_chave(chave, 'NFe') + -def _send(certificado, method, **kwargs): +def _send(certificado, method, sign, **kwargs): path = os.path.join(os.path.dirname(__file__), 'templates') - xml = render_xml(path, '%s.xml' % method, **kwargs) + xml_send = render_xml(path, '%s.xml' % method, **kwargs) - pfx_path = certificado.save_pfx() - signer = Assinatura(pfx_path, certificado.password) - xml_signed = signer.assina_xml(xml, kwargs['NFes'][0]['infNFe']['Id']) + if sign: + pfx_path = certificado.save_pfx() + signer = Assinatura(pfx_path, certificado.password) + xml_send = signer.assina_xml( + xml_send, kwargs['NFes'][0]['infNFe']['Id']) - url = localizar_url(0, 'RS') + url = localizar_url(method, kwargs['estado']) cabecalho = _build_header(**kwargs) - return executar_consulta(certificado, url, cabecalho, xml_signed) + return executar_consulta(certificado, url, cabecalho, xml_send) def autorizar_nfe(certificado, **kwargs): # Assinar _generate_nfe_id(**kwargs) - _send(certificado, 'NfeAutorizacao', **kwargs) + _send(certificado, 'NfeAutorizacao', True, **kwargs) def retorno_autorizar_nfe(certificado, **kwargs): - _send(certificado, 'NfeRetAutorizacao', **kwargs) + _send(certificado, 'NfeRetAutorizacao', False, **kwargs) def recepcao_evento_cancelamento(certificado, **kwargs): # Assinar - _send(certificado, 'RecepcaoEventoCancelamento', **kwargs) + _send(certificado, 'RecepcaoEventoCancelamento', True, **kwargs) def inutilizar_nfe(certificado, **kwargs): # Assinar - _send(certificado, 'NfeInutilizacao', **kwargs) + _send(certificado, 'NfeInutilizacao', True, **kwargs) def consultar_protocolo_nfe(certificado, **kwargs): - _send(certificado, 'NfeConsultaProtocolo', **kwargs) + _send(certificado, 'NfeConsultaProtocolo', True, **kwargs) def nfe_status_servico(certificado, **kwargs): - _send(certificado, 'NfeStatusServico.', **kwargs) + _send(certificado, 'NfeStatusServico', False, **kwargs) def consulta_cadastro(certificado, **kwargs): - _send(certificado, 'NfeConsultaCadastro.', **kwargs) + _send(certificado, 'NfeConsultaCadastro', False, **kwargs) def recepcao_evento_carta_correcao(certificado, **kwargs): # Assinar - _send(certificado, 'RecepcaoEventoCarta.', **kwargs) + _send(certificado, 'RecepcaoEventoCarta', True, **kwargs) def recepcao_evento_manifesto(certificado, **kwargs): # Assinar - _send(certificado, 'RecepcaoEventoManifesto', **kwargs) + _send(certificado, 'RecepcaoEventoManifesto', True, **kwargs) def recepcao_evento_epec(certificado, **kwargs): # Assinar - _send(certificado, 'RecepcaoEventoEPEC', **kwargs) + _send(certificado, 'RecepcaoEventoEPEC', True, **kwargs) def consulta_nfe_destinada(certificado, **kwargs): - _send(certificado, 'NfeConsultaDest', **kwargs) + _send(certificado, 'NfeConsultaDest', False, **kwargs) def download_nfe(certificado, **kwargs): - _send(certificado, 'NfeDownloadNF', **kwargs) + _send(certificado, 'NfeDownloadNF', False, **kwargs) diff --git a/pytrustnfe/nfe/templates/NfeConsultaCadastro.xml b/pytrustnfe/nfe/templates/NfeConsultaCadastro.xml index bc1f9fb..5a1abb7 100644 --- a/pytrustnfe/nfe/templates/NfeConsultaCadastro.xml +++ b/pytrustnfe/nfe/templates/NfeConsultaCadastro.xml @@ -1,8 +1,7 @@ - CONS-CAD {{ obj.estado }} {{ obj.cnpj }} - \ No newline at end of file +