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)