From 0d3dd0693fbc713b285d248b262316acc0647e73 Mon Sep 17 00:00:00 2001 From: Danimar Ribeiro Date: Thu, 25 Apr 2019 12:38:05 -0300 Subject: [PATCH] [FIX] Ajusta a nota de petropolis ao novo formato --- pytrustnfe/nfse/imperial/__init__.py | 70 ++++++++----------- .../imperial/templates/CANCELANOTAELETRONICA.xml | 17 ----- .../imperial/templates/CONSULTANOTASPROTOCOLO.xml | 9 --- .../nfse/imperial/templates/CONSULTAPROTOCOLO.xml | 9 --- .../nfse/imperial/templates/CancelarNota.xml | 14 ++++ pytrustnfe/nfse/imperial/templates/GerarNota.xml | 43 ++++++++++++ pytrustnfe/nfse/imperial/templates/PROCESSARPS.xml | 81 ---------------------- pytrustnfe/nfse/imperial/templates/SoapRequest.xml | 5 -- setup.py | 2 +- 9 files changed, 86 insertions(+), 164 deletions(-) delete mode 100644 pytrustnfe/nfse/imperial/templates/CANCELANOTAELETRONICA.xml delete mode 100644 pytrustnfe/nfse/imperial/templates/CONSULTANOTASPROTOCOLO.xml delete mode 100644 pytrustnfe/nfse/imperial/templates/CONSULTAPROTOCOLO.xml create mode 100644 pytrustnfe/nfse/imperial/templates/CancelarNota.xml create mode 100644 pytrustnfe/nfse/imperial/templates/GerarNota.xml delete mode 100644 pytrustnfe/nfse/imperial/templates/PROCESSARPS.xml delete mode 100644 pytrustnfe/nfse/imperial/templates/SoapRequest.xml diff --git a/pytrustnfe/nfse/imperial/__init__.py b/pytrustnfe/nfse/imperial/__init__.py index 5795629..fba9f90 100644 --- a/pytrustnfe/nfse/imperial/__init__.py +++ b/pytrustnfe/nfse/imperial/__init__.py @@ -3,8 +3,11 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). import os +import requests from lxml import etree -from pytrustnfe import HttpClient +from requests import Session +from zeep import Client +from zeep.transports import Transport from pytrustnfe.xml import render_xml, sanitize_response @@ -17,58 +20,41 @@ def _render(certificado, method, **kwargs): def _send(certificado, method, **kwargs): base_url = '' if kwargs['ambiente'] == 'producao': - base_url = 'https://nfe.etransparencia.com.br/rj.petropolis/webservice/aws_nfe.aspx' # noqa + base_url = 'https://petropolis.sigiss.com.br/petropolis/ws/sigiss_ws.php' # noqa else: - base_url = 'https://nfehomologacao.etransparencia.com.br/rj.petropolis/webservice/aws_nfe.aspx' # noqa - xml_send = kwargs["xml"] - path = os.path.join(os.path.dirname(__file__), 'templates') - soap = render_xml(path, 'SoapRequest.xml', False, soap_body=xml_send.decode()) - client = HttpClient(base_url) - response = client.post_soap(soap, 'NFeaction/AWS_NFE.%s' % method) - response, obj = sanitize_response(response) - return { - 'sent_xml': xml_send.decode(), - 'received_xml': response, - 'object': obj - } - - -def xml_processa_rps(certificado, **kwargs): - return _render(certificado, 'PROCESSARPS', **kwargs) - - -def processa_rps(certificado, **kwargs): - if "xml" not in kwargs: - kwargs['xml'] = xml_processa_rps(certificado, **kwargs) - return _send(certificado, 'PROCESSARPS', **kwargs) - + raise Exception('Não existe ambiente de homologação!') -def xml_consulta_protocolo(certificado, **kwargs): - return _render(certificado, 'CONSULTAPROTOCOLO', **kwargs) + xml_send = kwargs["xml"].decode('utf-8') + headers = { + 'SOAPAction': "urn:sigiss_ws#%s" % method, + 'Content-Type': 'text/xml; charset="utf-8"' + } + r = requests.post(base_url, data=xml_send, headers=headers) + response, obj = sanitize_response(r.text.strip()) -def consulta_protocolo(certificado, **kwargs): - if "xml" not in kwargs: - kwargs['xml'] = xml_consulta_protocolo(certificado, **kwargs) - return _send(certificado, 'CONSULTAPROTOCOLO', **kwargs) + return { + 'sent_xml': xml_send, + 'received_xml': response, + 'object': obj.Body + } -def xml_consulta_notas_protocolo(certificado, **kwargs): - return _render(certificado, 'CONSULTANOTASPROTOCOLO', **kwargs) +def xml_gerar_nota(certificado, **kwargs): + return _render(certificado, 'GerarNota', **kwargs) -def consulta_notas_protocolo(certificado, **kwargs): +def gerar_nota(certificado, **kwargs): if "xml" not in kwargs: - kwargs['xml'] = xml_consulta_notas_protocolo(certificado, **kwargs) - return _send(certificado, 'CONSULTANOTASPROTOCOLO', **kwargs) + kwargs['xml'] = xml_gerar_nota(certificado, **kwargs) + return _send(certificado, 'GerarNota', **kwargs) -def xml_cancelar_nfse(certificado, **kwargs): - return _render(certificado, 'CANCELANOTAELETRONICA', **kwargs) +def xml_cancelar_nota(certificado, **kwargs): + return _render(certificado, 'CancelarNota', **kwargs) -def cancelar_nfse(certificado, **kwargs): +def cancelar_nota(certificado, **kwargs): if "xml" not in kwargs: - kwargs['xml'] = xml_cancelar_nfse(certificado, **kwargs) - return _send(certificado, 'CANCELANOTAELETRONICA', **kwargs) - + kwargs['xml'] = xml_cancelar_nota(certificado, **kwargs) + return _send(certificado, 'CancelarNota', **kwargs) diff --git a/pytrustnfe/nfse/imperial/templates/CANCELANOTAELETRONICA.xml b/pytrustnfe/nfse/imperial/templates/CANCELANOTAELETRONICA.xml deleted file mode 100644 index 3afb262..0000000 --- a/pytrustnfe/nfse/imperial/templates/CANCELANOTAELETRONICA.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - {{ cancelamento.codigo_usuario }} - {{ cancelamento.codigo_contribuinte }} - - - {{ cancelamento.serie_nota }} - {{ cancelamento.numero_nota }} - {{ cancelamento.serie_rps }} - {{ cancelamento.numero_rps }} - {{ cancelamento.valor }} - {{ cancelamento.motivo }} - {{ cancelamento.cancelar_guia }} - - - diff --git a/pytrustnfe/nfse/imperial/templates/CONSULTANOTASPROTOCOLO.xml b/pytrustnfe/nfse/imperial/templates/CONSULTANOTASPROTOCOLO.xml deleted file mode 100644 index 30ea3d6..0000000 --- a/pytrustnfe/nfse/imperial/templates/CONSULTANOTASPROTOCOLO.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - {{ consulta.protocolo }} - - {{ consulta.codigo_usuario }} - {{ consulta.codigo_contribuinte }} - - - diff --git a/pytrustnfe/nfse/imperial/templates/CONSULTAPROTOCOLO.xml b/pytrustnfe/nfse/imperial/templates/CONSULTAPROTOCOLO.xml deleted file mode 100644 index 09765e5..0000000 --- a/pytrustnfe/nfse/imperial/templates/CONSULTAPROTOCOLO.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - {{ consulta.protocolo }} - - {{ consulta.codigo_usuario }} - {{ consulta.codigo_contribuinte }} - - - diff --git a/pytrustnfe/nfse/imperial/templates/CancelarNota.xml b/pytrustnfe/nfse/imperial/templates/CancelarNota.xml new file mode 100644 index 0000000..8edd597 --- /dev/null +++ b/pytrustnfe/nfse/imperial/templates/CancelarNota.xml @@ -0,0 +1,14 @@ + + + + + {{ cancelamento.ccm }} + {{ cancelamento.cnpj }} + {{ cancelamento.senha }} + {{ cancelamento.nota }} + {{ cancelamento.motivo }} + {{ cancelamento.email }} + + + + diff --git a/pytrustnfe/nfse/imperial/templates/GerarNota.xml b/pytrustnfe/nfse/imperial/templates/GerarNota.xml new file mode 100644 index 0000000..c0a09c4 --- /dev/null +++ b/pytrustnfe/nfse/imperial/templates/GerarNota.xml @@ -0,0 +1,43 @@ + + + + + {{ nfse.ccm }} + {{ nfse.cnpj }} + {{ nfse.senha }} + {{ nfse.crc }} + {{ nfse.crc_estado }} + {{ nfse.aliquota_simples }} + {{ nfse.id_sis_legado }} + {{ nfse.servico }} + {{ nfse.situacao }} + {{ nfse.valor }} + {{ nfse.base }} + {{ nfse.descricaoNF }} + {{ nfse.tomador_tipo }} + {{ nfse.tomador_cnpj }} + {{ nfse.tomador_email }} + {{ nfse.tomador_ie }} + {{ nfse.tomador_razao }} + {{ nfse.tomador_fantasia }} + {{ nfse.tomador_endereco }} + {{ nfse.tomador_endereco }} + {{ nfse.tomador_complemento }} + {{ nfse.tomador_bairro }} + {{ nfse.tomador_CEP }} + {{ nfse.tomador_cod_cidade }} + {{ nfse.tomador_fone }} + {{ nfse.tomador_ramal }} + {{ nfse.tomador_fax }} + {{ nfse.outro_municipio }} + {{ nfse.cod_outro_municipio }} + {{ nfse.retencao_iss }} + {{ nfse.pis }} + {{ nfse.cofins }} + {{ nfse.inss }} + {{ nfse.irrf }} + {{ nfse.csll }} + + + + diff --git a/pytrustnfe/nfse/imperial/templates/PROCESSARPS.xml b/pytrustnfe/nfse/imperial/templates/PROCESSARPS.xml deleted file mode 100644 index 3cfb27a..0000000 --- a/pytrustnfe/nfse/imperial/templates/PROCESSARPS.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - {{ nfse.codigo_usuario }} - {{ nfse.codigo_contribuinte }} - - - {{ nfse.ano }} - {{ nfse.mes }} - {{ nfse.cnpj_prestador }} - {{ nfse.data_emissao }} - {{ nfse.data_emissao }} - {{ nfse.tipo_tributacao }} - {{ nfse.data_adesao_simples }} - {{ nfse.aliquota_simples_isencao|comma }} - 2.00 - {% for rps in nfse.lista_rps -%} - - - - {{ rps.tipo_nfse }} - {{ rps.numero }} - {{ rps.serie }} - {{ rps.data_emissao }} - {{ rps.iss_retido }} - {{ rps.codigo_servico }} - {{ rps.descricao}} - {{ rps.valor_liquido_nfse|comma }} - {{ rps.valor_deducao|comma }} - {{ rps.discriminacao_deducao }} - {{ rps.base_calculo|comma }} - {{ rps.aliquota_issqn|comma }} - {{ rps.valor_iss|comma }} - {{ rps.valor_iss_retido|comma }} - {{ rps.tomador.cnpj_cpf }} - {{ rps.tomador.razao_social }} - {{ rps.tomador.tipo_logradouro }} - {{ rps.tomador.logradouro }} - {{ rps.tomador.numero }} - {{ rps.tomador.complemento }} - {{ rps.tomador.bairro }} - {{ rps.tomador.municipio }} - {{ rps.tomador.uf }} - {{ rps.tomador.cep }} - {{ rps.tomador.telefone }} - {{ rps.tomador.inscricao_municipal }} - {% if rps.local_prestacao == 'prestador' %} - {{ rps.prestador.tipo_logradouro }} - {{ rps.prestador.logradouro }} - {{ rps.prestador.numero }} - {{ rps.prestador.complemento }} - {{ rps.prestador.bairro }} - {{ rps.prestador.municipio }} - {{ rps.prestador.uf }} - {{ rps.prestador.cep }} - {% endif %} - {{ rps.tomador.email }} - {% for imposto in rps.impostos -%} - - - {{ imposto.sigla }} - {{ imposto.aliquota|comma }} - {{ imposto.valor|comma }} - - - {% endfor %} - - - {% endfor %} - - {{ nfse.lista_rps|length }} - {{ nfse.lista_rps|sum(attribute='valor_liquido_nfse')|comma }} - {{ nfse.lista_rps|sum(attribute='valor_iss')|comma }} - {{ nfse.lista_rps|sum(attribute='valor_deducao')|comma }} - {{ nfse.lista_rps|sum(attribute='valor_iss_retido')|comma }} - {{ nfse.quantidade_impostos }} - {{ nfse.valor_tributos|comma }} - - - - diff --git a/pytrustnfe/nfse/imperial/templates/SoapRequest.xml b/pytrustnfe/nfse/imperial/templates/SoapRequest.xml deleted file mode 100644 index e8b56b4..0000000 --- a/pytrustnfe/nfse/imperial/templates/SoapRequest.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - {{ soap_body }} - - diff --git a/setup.py b/setup.py index 82c0f32..d7e1895 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages -VERSION = "1.0.35" +VERSION = "1.0.36" setup(