From 8031ae480c4104348e851ee565f56d519f4d21f5 Mon Sep 17 00:00:00 2001 From: Felipe Date: Tue, 26 Dec 2017 16:11:11 -0200 Subject: [PATCH] =?UTF-8?q?altera=C3=A7=C3=A3o=20nfse=20campinas=20para=20?= =?UTF-8?q?dsf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pytrustnfe/nfse/dsf/__init__.py | 47 +++++++++++++++++----- pytrustnfe/nfse/dsf/templates/consultarNFSeRps.xml | 22 ++++++++++ pytrustnfe/xml/__init__.py | 1 - 3 files changed, 58 insertions(+), 12 deletions(-) create mode 100644 pytrustnfe/nfse/dsf/templates/consultarNFSeRps.xml diff --git a/pytrustnfe/nfse/dsf/__init__.py b/pytrustnfe/nfse/dsf/__init__.py index 80d839d..60273d0 100644 --- a/pytrustnfe/nfse/dsf/__init__.py +++ b/pytrustnfe/nfse/dsf/__init__.py @@ -27,28 +27,32 @@ def _render(certificado, method, **kwargs): def _get_url(**kwargs): try: - cod_cidade = kwargs['CodCidade'] + cod_cidade = kwargs['nfse']['cidade'] except (KeyError, TypeError): - return '' + raise KeyError("Código de cidade inválido!") urls = { # Belém - PA '2715': 'http://www.issdigitalbel.com.br/WsNFe2/LoteRps.jws', # Sorocaba - SP - '5363': 'http://issdigital.sorocaba.sp.gov.br/WsNFe2/LoteRps.jws', + '7145': 'http://issdigital.sorocaba.sp.gov.br/WsNFe2/LoteRps.jws', # Teresina - PI - '3182': 'http://www.issdigitalthe.com.br/WsNFe2/LoteRps.jws', + '1219': 'http://www.issdigitalthe.com.br/WsNFe2/LoteRps.jws', # Campinas - SP - '4888': 'http://issdigital.campinas.sp.gov.br/WsNFe2/LoteRps.jws?wsdl', + '6291': 'http://issdigital.campinas.sp.gov.br/WsNFe2/LoteRps.jws?wsdl', # Uberlandia - MG - '2170': 'http://udigital.uberlandia.mg.gov.br/WsNFe2/LoteRps.jws', + '5403': 'http://udigital.uberlandia.mg.gov.br/WsNFe2/LoteRps.jws', # São Luis - MA - '1314': 'https://stm.semfaz.saoluis.ma.gov.br/WsNFe2/LoteRps?wsdl', + '0921': 'https://stm.semfaz.saoluis.ma.gov.br/WsNFe2/LoteRps?wsdl', # Campo Grande - MS - '2218': 'http://issdigital.pmcg.ms.gov.br/WsNFe2/LoteRps.jws', + '2729': 'http://issdigital.pmcg.ms.gov.br/WsNFe2/LoteRps.jws', } - return urls[str(cod_cidade)] + try: + return urls[str(cod_cidade)] + except KeyError: + raise KeyError("DSF não emite notas da cidade {}!".format( + cod_cidade)) def _send(certificado, method, **kwargs): @@ -75,6 +79,9 @@ def _send(certificado, method, **kwargs): 'received_xml': e.fault.faultstring, 'object': None } + except Exception as e: + print (response) + print (e) return { 'sent_xml': xml_send, @@ -83,11 +90,23 @@ def _send(certificado, method, **kwargs): } +def xml_enviar(certificado, **kwargs): + return _render(certificado, 'enviar', **kwargs) + + def enviar(certificado, **kwargs): + if "xml" not in kwargs: + kwargs['xml'] = xml_enviar(certificado, **kwargs) return _send(certificado, 'enviar', **kwargs) +def xml_teste_enviar(certificado, **kwargs): + return _render(certificado, 'testeEnviar', **kwargs) + + def teste_enviar(certificado, **kwargs): + if "xml" not in kwargs: + kwargs['xml'] = xml_teste_enviar(certificado, **kwargs) return _send(certificado, 'testeEnviar', **kwargs) @@ -99,5 +118,11 @@ def consulta_lote(**kwargs): return _send(False, 'consultarLote', **kwargs) -def consultar_lote_rps(certificado, **kwarg): - return _send(certificado, 'consultarNFSeRps', **kwarg) +def xml_consultar_nfse_rps(certificado, **kwargs): + return _render(certificado, 'consultarNFSeRps', **kwargs) + + +def consultar_nfse_rps(certificado, **kwargs): + if "xml" not in kwargs: + kwargs['xml'] = xml_consultar_nfse_rps(certificado, **kwargs) + return _send(certificado, 'consultarNFSeRps', **kwargs) diff --git a/pytrustnfe/nfse/dsf/templates/consultarNFSeRps.xml b/pytrustnfe/nfse/dsf/templates/consultarNFSeRps.xml new file mode 100644 index 0000000..a6a51bc --- /dev/null +++ b/pytrustnfe/nfse/dsf/templates/consultarNFSeRps.xml @@ -0,0 +1,22 @@ + + + {{ nfse.cidade }} + {{ nfse.cpf_cnpj }} + true + 1 + + + {% for rps in nfse.lista_rps -%} + + + {{ rps.prestador.inscricao_municipal }} + {{ rps.numero }} + {{ rps.serie_prestacao }} + + + {% endfor %} + + \ No newline at end of file diff --git a/pytrustnfe/xml/__init__.py b/pytrustnfe/xml/__init__.py index 0ed0ee5..413df5e 100644 --- a/pytrustnfe/xml/__init__.py +++ b/pytrustnfe/xml/__init__.py @@ -27,7 +27,6 @@ def render_xml(path, template_name, remove_empty, **nfe): env.filters["format_date"] = filters.format_date template = env.get_template(template_name) - xml = template.render(**nfe) parser = etree.XMLParser(remove_blank_text=True, remove_comments=True, strip_cdata=False)