From 49113d7dab5e4d5852b06a879eada1259c171eb7 Mon Sep 17 00:00:00 2001 From: Felipe Prenholato Date: Thu, 26 Apr 2018 14:57:30 -0300 Subject: [PATCH 1/8] Better templates, for real. --- .../nfse/paulistana/templates/EnvioLoteRPS.xml | 29 ++++++-- pytrustnfe/nfse/paulistana/templates/EnvioRPS.xml | 80 +++++++++++++--------- 2 files changed, 71 insertions(+), 38 deletions(-) diff --git a/pytrustnfe/nfse/paulistana/templates/EnvioLoteRPS.xml b/pytrustnfe/nfse/paulistana/templates/EnvioLoteRPS.xml index 8e9f34d..e7003de 100644 --- a/pytrustnfe/nfse/paulistana/templates/EnvioLoteRPS.xml +++ b/pytrustnfe/nfse/paulistana/templates/EnvioLoteRPS.xml @@ -32,28 +32,43 @@ {{ rps.codigo_atividade }} {{ rps.aliquota_atividade }} {{ rps.iss_retido | default('false') }} + {% if rps.tomador.tipo_cpfcnpj != 3 %} - {% if rps.tomador.tipo_cpfcnpj == 1 -%} - {{ rps.tomador.cpf_cnpj }} - {% endif %} - {% if rps.tomador.tipo_cpfcnpj == 2 -%} - {{ rps.tomador.cpf_cnpj }} - {% endif %} + {% if rps.tomador.tipo_cpfcnpj == 1 -%} + {{ rps.tomador.cpf_cnpj }} + {% endif %} + {% if rps.tomador.tipo_cpfcnpj == 2 -%} + {{ rps.tomador.cpf_cnpj }} + {% endif %} + {% endif %} {% if rps.tomador.inscricao_municipal -%} {{ rps.tomador.inscricao_municipal }} {% endif %} {{ rps.tomador.razao_social|normalize|escape }} + {% if rps.tomador.cidade %} + {% if rps.tomador.tipo_logradouro %} {{ rps.tomador.tipo_logradouro }} + {% endif %} + {% if rps.tomador.logradouro %} {{ rps.tomador.logradouro|normalize|escape }} + {% endif %} + {% if rps.tomador.numero %} {{ rps.tomador.numero }} + {% endif %} + {% if rps.tomador.complemento %} {{ rps.tomador.complemento|normalize|escape }} + {% endif %} + {% if rps.tomador.bairro %} {{ rps.tomador.bairro }} + {% endif %} {{ rps.tomador.cidade }} {{ rps.tomador.uf }} - {{ rps.tomador.cep }} + {% if rps.tomador.cep %}{{ rps.tomador.cep }}{% endif %} + {% endif %} + {% if rps.tomador.email %}{{ rps.tomador.email }}{% endif %} {{ rps.descricao|normalize|escape }} {% endfor %} diff --git a/pytrustnfe/nfse/paulistana/templates/EnvioRPS.xml b/pytrustnfe/nfse/paulistana/templates/EnvioRPS.xml index d828534..35e08cb 100644 --- a/pytrustnfe/nfse/paulistana/templates/EnvioRPS.xml +++ b/pytrustnfe/nfse/paulistana/templates/EnvioRPS.xml @@ -6,46 +6,64 @@ {% for rps in nfse.lista_rps -%} - {{ rps.assinatura }} + {{ rps.assinatura }} - {{ rps.prestador.inscricao_municipal }} - {{ rps.serie }} - {{ rps.numero }} + {{ rps.prestador.inscricao_municipal }} + {{ rps.serie }} + {{ rps.numero }} - RPS-M + {{ rps.tipo_rps | default('RPS') }} {{ rps.data_emissao }} N - T - {{ nfse.total_servicos }} - {{ nfse.total_deducoes }} - {{ rps.valor_pis }} - {{ rps.valor_cofins }} - {{ rps.valor_inss }} - {{ rps.valor_pis }} - {{ rps.valor_csll }} + {{ rps.tributacao_rps | default('T') }} + {{ rps.valor_servico }} + {{ rps.valor_deducao }} + {{ rps.valor_pis | default('0.00') }} + {{ rps.valor_cofins | default('0.00') }} + {{ rps.valor_inss | default('0.00') }} + {{ rps.valor_ir | default('0.00') }} + {{ rps.valor_csll | default('0.00') }} {{ rps.codigo_atividade }} {{ rps.aliquota_atividade }} - false + {{ rps.iss_retido | default('false') }} + {% if rps.tomador.tipo_cpfcnpj != 3 %} - {% if rps.tomador.tipo_cpfcnpj == 1 -%} - {{ rps.tomador.cpf_cnpj }} - {% endif %} - {% if rps.tomador.tipo_cpfcnpj == 2 -%} - {{ rps.tomador.cpf_cnpj }} - {% endif %} + {% if rps.tomador.tipo_cpfcnpj == 1 -%} + {{ rps.tomador.cpf_cnpj }} + {% endif %} + {% if rps.tomador.tipo_cpfcnpj == 2 -%} + {{ rps.tomador.cpf_cnpj }} + {% endif %} - {{ rps.tomador.razao_social }} + {% endif %} + {% if rps.tomador.inscricao_municipal -%} + {{ rps.tomador.inscricao_municipal }} + {% endif %} + {{ rps.tomador.razao_social|normalize|escape }} + {% if rps.tomador.cidade %} - {{ rps.tomador.tipo_logradouro }} - {{ rps.tomador.logradouro }} - {{ rps.tomador.numero }} - {{ rps.tomador.complemento }} - {{ rps.tomador.bairro }} - {{ rps.tomador.cidade }} - {{ rps.tomador.uf }} - {{ rps.tomador.cep }} + {% if rps.tomador.tipo_logradouro %} + {{ rps.tomador.tipo_logradouro }} + {% endif %} + {% if rps.tomador.logradouro %} + {{ rps.tomador.logradouro|normalize|escape }} + {% endif %} + {% if rps.tomador.numero %} + {{ rps.tomador.numero }} + {% endif %} + {% if rps.tomador.complemento %} + {{ rps.tomador.complemento|normalize|escape }} + {% endif %} + {% if rps.tomador.bairro %} + {{ rps.tomador.bairro }} + {% endif %} + {{ rps.tomador.cidade }} + {{ rps.tomador.uf }} + {% if rps.tomador.cep %}{{ rps.tomador.cep }}{% endif %} - {{ rps.descricao }} - {% endfor %} + {% endif %} + {% if rps.tomador.email %}{{ rps.tomador.email }}{% endif %} + {{ rps.descricao|normalize|escape }} + {% endfor %} From d616b3b9a6f0e7fe3f061bbdd938b9cb5cc0ef3a Mon Sep 17 00:00:00 2001 From: Felipe Prenholato Date: Tue, 15 May 2018 14:05:29 -0300 Subject: [PATCH 2/8] Fix case name, bump version to 0.9.18.post1 --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 4f68dcf..ea9d46b 100644 --- a/setup.py +++ b/setup.py @@ -2,11 +2,11 @@ from setuptools import setup, find_packages -VERSION = "0.9.18" +VERSION = "0.9.18.post1" setup( - name="PyTrustNFe3", + name="pytrustnfe3", version=VERSION, author="Danimar Ribeiro", author_email='danimaribeiro@gmail.com', From 7fa4f4602f85ede83d987110313e22ae3b4264c8 Mon Sep 17 00:00:00 2001 From: Felipe Prenholato Date: Wed, 23 May 2018 14:51:35 -0300 Subject: [PATCH 3/8] Add missing deps, bump version to 0.9.18.post2 --- setup.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index ea9d46b..4ded017 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages -VERSION = "0.9.18.post1" +VERSION = "0.9.18.post2" setup( @@ -44,6 +44,8 @@ later (LGPLv2+)', description='PyTrustNFe é uma biblioteca para envio de NF-e', long_description=open('README.md', 'r').read(), install_requires=[ + 'urllib3', + 'xmlsec==1.3.3', # apt update;apt install libxmlsec1-dev pkg-config -y 'Jinja2 >= 2.8', 'pyOpenSSL >= 16.0.0, < 18', 'signxml >= 2.4.0', From 09362d0f48ac25a4a8e0e4417968f33859721937 Mon Sep 17 00:00:00 2001 From: regianenas <47865051+regianenas@users.noreply.github.com> Date: Fri, 17 Jan 2020 14:40:34 -0300 Subject: [PATCH 4/8] feat(pytrust) changing amount of rps sent. (#3) * feat(pytrust) changing amount of rps sent. * Bump to v1.0.33.post2 --- pytrustnfe/nfse/paulistana/templates/EnvioLoteRPS.xml | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pytrustnfe/nfse/paulistana/templates/EnvioLoteRPS.xml b/pytrustnfe/nfse/paulistana/templates/EnvioLoteRPS.xml index d609cf8..7aba755 100644 --- a/pytrustnfe/nfse/paulistana/templates/EnvioLoteRPS.xml +++ b/pytrustnfe/nfse/paulistana/templates/EnvioLoteRPS.xml @@ -6,7 +6,7 @@ false {{ nfse.data_inicio }} {{ nfse.data_fim }} - 1 + {{ nfse.lista_rps|lenght }} {{ nfse.total_servicos }} {{ nfse.total_deducoes }} diff --git a/setup.py b/setup.py index 94f3025..501098f 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages -VERSION = "1.0.33.post1" +VERSION = "1.0.33.post2" setup( From 100d6aa90950c4647704005d0adacd1fa5823838 Mon Sep 17 00:00:00 2001 From: regianenas <47865051+regianenas@users.noreply.github.com> Date: Tue, 28 Jan 2020 10:23:12 -0300 Subject: [PATCH 5/8] (Pytrust) fixing templete and bump version to 1.0.33.post3 (#6) --- pytrustnfe/nfse/paulistana/templates/EnvioLoteRPS.xml | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pytrustnfe/nfse/paulistana/templates/EnvioLoteRPS.xml b/pytrustnfe/nfse/paulistana/templates/EnvioLoteRPS.xml index 7aba755..6823521 100644 --- a/pytrustnfe/nfse/paulistana/templates/EnvioLoteRPS.xml +++ b/pytrustnfe/nfse/paulistana/templates/EnvioLoteRPS.xml @@ -6,7 +6,7 @@ false {{ nfse.data_inicio }} {{ nfse.data_fim }} - {{ nfse.lista_rps|lenght }} + {{ nfse.lista_rps|length }} {{ nfse.total_servicos }} {{ nfse.total_deducoes }} diff --git a/setup.py b/setup.py index 501098f..51030a3 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages -VERSION = "1.0.33.post2" +VERSION = "1.0.33.post3" setup( From 547af9d609a58357dd3ce3127d43ee925d691b57 Mon Sep 17 00:00:00 2001 From: Isabela Morais Date: Mon, 10 Feb 2020 11:38:42 -0300 Subject: [PATCH 6/8] adding tests for rps batch --- .../nfse/paulistana/templates/EnvioLoteRPS.xml | 12 ++--- pytrustnfe/nfse/paulistana/templates/EnvioRPS.xml | 20 ++++---- tests/XMLs/paulistana_signature.xml | 10 ++-- tests/XMLs/xml_send_rps_batch_to_paulistana.xml | 1 + tests/const.py | 56 ++++++++++++++++++++ tests/test_nfse_paulistana_email_tomador.py | 35 +++++++++++++ tests/test_nfse_paulistana_endereco_tomador.py | 54 +++++++++++++++++++ tests/test_nfse_paulistana_para_lote.py | 28 ++++++++++ tests/test_nfse_paulistana_tipo_cpfcnpj.py | 60 ++++++++++++++++++++++ tests/test_nfse_paulistana_valores_default.py | 47 +++++++++++++++++ 10 files changed, 302 insertions(+), 21 deletions(-) create mode 100644 tests/XMLs/xml_send_rps_batch_to_paulistana.xml create mode 100644 tests/const.py create mode 100644 tests/test_nfse_paulistana_email_tomador.py create mode 100644 tests/test_nfse_paulistana_endereco_tomador.py create mode 100644 tests/test_nfse_paulistana_para_lote.py create mode 100644 tests/test_nfse_paulistana_tipo_cpfcnpj.py create mode 100644 tests/test_nfse_paulistana_valores_default.py diff --git a/pytrustnfe/nfse/paulistana/templates/EnvioLoteRPS.xml b/pytrustnfe/nfse/paulistana/templates/EnvioLoteRPS.xml index 6823521..bf5e52f 100644 --- a/pytrustnfe/nfse/paulistana/templates/EnvioLoteRPS.xml +++ b/pytrustnfe/nfse/paulistana/templates/EnvioLoteRPS.xml @@ -34,12 +34,12 @@ {{ rps.iss_retido | default('false') }} {% if rps.tomador.tipo_cpfcnpj != 3 %} - {% if rps.tomador.tipo_cpfcnpj == 1 -%} - {{ rps.tomador.cpf_cnpj }} - {% endif %} - {% if rps.tomador.tipo_cpfcnpj == 2 -%} - {{ rps.tomador.cpf_cnpj }} - {% endif %} + {% if rps.tomador.tipo_cpfcnpj == 1 -%} + {{ rps.tomador.cpf_cnpj }} + {% endif %} + {% if rps.tomador.tipo_cpfcnpj == 2 -%} + {{ rps.tomador.cpf_cnpj }} + {% endif %} {% endif %} {% if rps.tomador.inscricao_municipal -%} diff --git a/pytrustnfe/nfse/paulistana/templates/EnvioRPS.xml b/pytrustnfe/nfse/paulistana/templates/EnvioRPS.xml index 592964b..987a56a 100644 --- a/pytrustnfe/nfse/paulistana/templates/EnvioRPS.xml +++ b/pytrustnfe/nfse/paulistana/templates/EnvioRPS.xml @@ -6,11 +6,11 @@ {% for rps in nfse.lista_rps -%} - {{ rps.assinatura }} + {{ rps.assinatura }} - {{ rps.prestador.inscricao_municipal }} - {{ rps.serie }} - {{ rps.numero }} + {{ rps.prestador.inscricao_municipal }} + {{ rps.serie }} + {{ rps.numero }} {{ rps.tipo_rps | default('RPS') }} {{ rps.data_emissao }} @@ -28,12 +28,12 @@ {{ rps.iss_retido | default('false') }} {% if rps.tomador.tipo_cpfcnpj != 3 %} - {% if rps.tomador.tipo_cpfcnpj == 1 -%} - {{ rps.tomador.cpf_cnpj }} - {% endif %} - {% if rps.tomador.tipo_cpfcnpj == 2 -%} - {{ rps.tomador.cpf_cnpj }} - {% endif %} + {% if rps.tomador.tipo_cpfcnpj == 1 -%} + {{ rps.tomador.cpf_cnpj }} + {% endif %} + {% if rps.tomador.tipo_cpfcnpj == 2 -%} + {{ rps.tomador.cpf_cnpj }} + {% endif %} {% endif %} {% if rps.tomador.inscricao_municipal -%} diff --git a/tests/XMLs/paulistana_signature.xml b/tests/XMLs/paulistana_signature.xml index 70d26dc..644d7a8 100644 --- a/tests/XMLs/paulistana_signature.xml +++ b/tests/XMLs/paulistana_signature.xml @@ -1,4 +1,4 @@ -12345678901234false2016-08-292016-08-291E4fpHYkQa7Naxn6IKGb7NwwZu5tPk/KXJ9hCwtZgq0xvKS450aQqqBL+7Iv46lTgqrSMu7+gLrl+LC1qs/8aT2mbHE8uaVFSbzwZ+sF/BkcT6nsFHLMswEiTAEs95Jb7hN1cC91xqQGRH4buw0TzxHKmhuLJ22WwtG/scxyKtjM=12345611RPS2016-08-29NT0.000.000.000.000.00074985.00false123456Trustcode1Vinicius de Moraes, 4242CorregoFloripaSC88037240Venda de servico +12345678901234false2016-08-292016-08-291E4fpHYkQa7Naxn6IKGb7NwwZu5tPk/KXJ9hCwtZgq0xvKS450aQqqBL+7Iv46lTgqrSMu7+gLrl+LC1qs/8aT2mbHE8uaVFSbzwZ+sF/BkcT6nsFHLMswEiTAEs95Jb7hN1cC91xqQGRH4buw0TzxHKmhuLJ22WwtG/scxyKtjM=12345611RPS2016-08-29NT0.000.000.000.000.00074985.00false123456Trustcode1Vinicius de Moraes, 4242CorregoFloripaSC88037240Venda de servico @@ -8,12 +8,12 @@ -IAh8GGlbp/Tnqma+2RZ7UrGZhTc= +Thwvs++WdhRuXOVgMxXTY/9Zih0= -gjkMTCq0uuaX8tkRBlLjgybn8a2O4Axl6HHq1MN8nnEMliERcziU3pa3r1jbghlE -EUyIO8bTZ0V7c05pQvHQgVUHcSo6vHld4ZQNk7JfMfmpez4uxrUeuSrSqSLCwT9W -NmTY9EJ16GyrQNELw+SkYuEFOvqZTU3qjDZkLddQ8bc= +fvJR0msutiLI9KpUY/8VDPqmDeGYpXt/JvY6LUQZlGjjGb71jM2cLEHotM4lwJLi +WKLvhSBbaLQQm/OFm1KbQ8TRrEJl8NMYv2bABNoH9OxIn5Ecnb4jxCCAaIDN3iXy +B7oYCq5nqtfsFGplU29enQ//1SrRTE4MDsOwoN8bX0c= MIICMTCCAZqgAwIBAgIQfYOsIEVuAJ1FwwcTrY0t1DANBgkqhkiG9w0BAQUFADBX diff --git a/tests/XMLs/xml_send_rps_batch_to_paulistana.xml b/tests/XMLs/xml_send_rps_batch_to_paulistana.xml new file mode 100644 index 0000000..2eebb3b --- /dev/null +++ b/tests/XMLs/xml_send_rps_batch_to_paulistana.xml @@ -0,0 +1 @@ +12345678901234false2016-08-292016-08-29512312345610RPS2016-08-29NT0.000.000.000.000.00074985.00false12345678923256123456Trustcode1Vinicius de Moraes, 4242aaaCorregoFloripaSC88037240user@user.comVenda de servico12312345611RPS2016-08-29NT0.000.000.000.000.00074985.00false12345678923256123456Trustcode1Vinicius de Moraes, 4242aaaCorregoFloripaSC88037240user@user.comVenda de servico12312345612RPS2016-08-29NT0.000.000.000.000.00074985.00false12345678923256123456Trustcode1Vinicius de Moraes, 4242aaaCorregoFloripaSC88037240user@user.comVenda de servico12312345613RPS2016-08-29NT0.000.000.000.000.00074985.00false12345678923256123456Trustcode1Vinicius de Moraes, 4242aaaCorregoFloripaSC88037240user@user.comVenda de servico12312345614RPS2016-08-29NT0.000.000.000.000.00074985.00false12345678923256123456Trustcode1Vinicius de Moraes, 4242aaaCorregoFloripaSC88037240user@user.comVenda de servico \ No newline at end of file diff --git a/tests/const.py b/tests/const.py new file mode 100644 index 0000000..41d77fb --- /dev/null +++ b/tests/const.py @@ -0,0 +1,56 @@ +LOTE_RPS = [ + { + 'assinatura': '123', + 'serie': '1', + 'numero': str(i), + 'data_emissao': '2016-08-29', + 'codigo_atividade': '07498', + 'total_servicos': '2.00', + 'total_deducoes': '3.00', + 'prestador': { + 'inscricao_municipal': '123456' + }, + 'tomador': { + 'tipo_cpfcnpj': 1, + 'cpf_cnpj': '12345678923256', + 'inscricao_municipal': '123456', + 'razao_social': 'Trustcode', + 'tipo_logradouro': '1', + 'complemento': 'aaa', + 'logradouro': 'Vinicius de Moraes, 42', + 'numero': '42', + 'bairro': 'Corrego', + 'cidade': 'Floripa', + 'uf': 'SC', + 'cep': '88037240', + 'email': 'user@user.com' + }, + 'codigo_atividade': '07498', + 'aliquota_atividade': '5.00', + 'descricao': 'Venda de servico' + } for i in range(5) +] + +DEFAULT_RPS = [ + { + 'assinatura': '123', + 'serie': '1', + 'numero': '1', + 'data_emissao': '2016-08-29', + 'codigo_atividade': '07498', + 'prestador': { + 'inscricao_municipal': '123456' + }, + 'tomador': { + 'tipo_cpfcnpj': 1, + 'cpf_cnpj': '12345678923256', + }, + } +] + +NFSE = { + 'cpf_cnpj': '12345678901234', + 'data_inicio': '2016-08-29', + 'data_fim': '2016-08-29', + 'lista_rps': [] +} diff --git a/tests/test_nfse_paulistana_email_tomador.py b/tests/test_nfse_paulistana_email_tomador.py new file mode 100644 index 0000000..846edc1 --- /dev/null +++ b/tests/test_nfse_paulistana_email_tomador.py @@ -0,0 +1,35 @@ +# coding=utf-8 + +import unittest +from pytrustnfe.xml import render_xml, sanitize_response +from tests.const import NFSE, DEFAULT_RPS + +template_path = 'pytrustnfe/nfse/paulistana/templates' + + +def _get_nfse(lista_rps): + nfse = NFSE + nfse['lista_rps'] = lista_rps + return nfse + + +def get_objects(nfse): + xml_rps = render_xml(template_path, 'EnvioRPS.xml', False, nfse=nfse) + _, obj_rps = sanitize_response(xml_rps) + + xml_lote_rps = render_xml(template_path, 'EnvioLoteRPS.xml', False, nfse=nfse) + _, obj_lote_rps = sanitize_response(xml_lote_rps) + + return obj_rps, obj_lote_rps + + +class test_nfse_paulistana_email_tomador(unittest.TestCase): + + def test_rps_sem_email(self): + nfse = _get_nfse(DEFAULT_RPS) + + obj_rps, obj_lote_rps = get_objects(nfse) + + self.assertFalse(hasattr(obj_rps.RPS, 'EmailTomador')) + self.assertFalse(hasattr(obj_lote_rps.RPS, 'EmailTomador')) + diff --git a/tests/test_nfse_paulistana_endereco_tomador.py b/tests/test_nfse_paulistana_endereco_tomador.py new file mode 100644 index 0000000..0f7e354 --- /dev/null +++ b/tests/test_nfse_paulistana_endereco_tomador.py @@ -0,0 +1,54 @@ +# coding=utf-8 + +import unittest +from pytrustnfe.xml import render_xml, sanitize_response +from tests.const import NFSE, DEFAULT_RPS + + +attrs = ['TipoLogradouro', 'Logradouro', 'NumeroEndereco', 'ComplementoEndereco', 'Bairro', 'CEP'] + +template_path = 'pytrustnfe/nfse/paulistana/templates' + + +def _get_nfse(lista_rps): + nfse = NFSE + nfse['lista_rps'] = lista_rps + return nfse + + +def get_objects(nfse): + xml_rps = render_xml(template_path, 'EnvioRPS.xml', False, nfse=nfse) + _, obj_rps = sanitize_response(xml_rps) + + xml_lote_rps = render_xml(template_path, 'EnvioLoteRPS.xml', False, nfse=nfse) + _, obj_lote_rps = sanitize_response(xml_lote_rps) + + return obj_rps, obj_lote_rps + + +class test_nfse_paulistana_endereco_tomador(unittest.TestCase): + + def test_rps_sem_cidade(self): + nfse = _get_nfse(DEFAULT_RPS) + + obj_rps, obj_lote_rps = get_objects(nfse) + + self.assertFalse(hasattr(obj_rps.RPS, 'EnderecoTomador')) + self.assertFalse(hasattr(obj_lote_rps.RPS, 'EnderecoTomador')) + + def test_rps_sem_dados_endereco(self): + lista_rps = DEFAULT_RPS + + for rps in lista_rps: + rps['tomador']['cidade'] = 'Florianópolis' + + nfse = _get_nfse(lista_rps) + + obj_rps, obj_lote_rps = get_objects(nfse) + + self.assertTrue(hasattr(obj_rps.RPS, 'EnderecoTomador')) + self.assertTrue(hasattr(obj_lote_rps.RPS, 'EnderecoTomador')) + + for attr in attrs: + self.assertFalse(hasattr(obj_rps.RPS.EnderecoTomador, attr)) + self.assertFalse(hasattr(obj_lote_rps.RPS.EnderecoTomador, attr)) diff --git a/tests/test_nfse_paulistana_para_lote.py b/tests/test_nfse_paulistana_para_lote.py new file mode 100644 index 0000000..1e89ee7 --- /dev/null +++ b/tests/test_nfse_paulistana_para_lote.py @@ -0,0 +1,28 @@ +# coding=utf-8 + +import os.path +import unittest +from pytrustnfe.xml import render_xml, sanitize_response +from tests.const import LOTE_RPS, NFSE + + +def _get_nfse(): + nfse = NFSE + nfse['lista_rps'] = LOTE_RPS + return nfse + + +class test_nfse_paulistana_para_lote(unittest.TestCase): + xml_path = os.path.join(os.path.dirname(__file__), 'XMLs') + template_path = 'pytrustnfe/nfse/paulistana/templates' + + def test_envio_nfse(self): + nfse = _get_nfse() + + xml_send = render_xml(self.template_path, 'EnvioLoteRPS.xml', False, nfse=nfse) + expected_xml = open(os.path.join(self.xml_path, 'xml_send_rps_batch_to_paulistana.xml'), 'r').read() + + _, obj = sanitize_response(xml_send) + + self.assertEqual(obj.Cabecalho.QtdRPS, 5) + self.assertEqual(xml_send, expected_xml) diff --git a/tests/test_nfse_paulistana_tipo_cpfcnpj.py b/tests/test_nfse_paulistana_tipo_cpfcnpj.py new file mode 100644 index 0000000..5a8a4d2 --- /dev/null +++ b/tests/test_nfse_paulistana_tipo_cpfcnpj.py @@ -0,0 +1,60 @@ +# coding=utf-8 + +import os.path +import unittest +from pytrustnfe.xml import render_xml, sanitize_response +from tests.const import DEFAULT_RPS, NFSE + +template_path = 'pytrustnfe/nfse/paulistana/templates' + + +def _get_nfse(tipo_cpfcnpj): + nfse = NFSE + lista_rps = DEFAULT_RPS + + for rps in lista_rps: + rps['tomador']['tipo_cpfcnpj'] = tipo_cpfcnpj + rps['tomador']['cpf_cnpj'] = '12345678923256' + + nfse['lista_rps'] = lista_rps + return nfse + + +def get_objects(nfse): + xml_rps = render_xml(template_path, 'EnvioRPS.xml', False, nfse=nfse) + _, obj_rps = sanitize_response(xml_rps) + + xml_lote_rps = render_xml(template_path, 'EnvioLoteRPS.xml', False, nfse=nfse) + _, obj_lote_rps = sanitize_response(xml_lote_rps) + + return obj_rps, obj_lote_rps + + +class test_nfse_paulistana_tipo_cpfcnpj(unittest.TestCase): + + def test_tipo_cpfcnpj_1(self): + nfse = _get_nfse(tipo_cpfcnpj=1) + + obj_rps, obj_lote_rps = get_objects(nfse) + + self.assertTrue(hasattr(obj_rps.RPS, 'CPFCNPJTomador')) + self.assertTrue(hasattr(obj_rps.RPS.CPFCNPJTomador, 'CPF')) + self.assertTrue(hasattr(obj_lote_rps.RPS, 'CPFCNPJTomador')) + self.assertTrue(hasattr(obj_lote_rps.RPS.CPFCNPJTomador, 'CPF')) + + def test_tipo_cpfcnpj_2(self): + nfse = _get_nfse(tipo_cpfcnpj=2) + + obj_rps, obj_lote_rps = get_objects(nfse) + + self.assertTrue(hasattr(obj_rps.RPS, 'CPFCNPJTomador')) + self.assertTrue(hasattr(obj_rps.RPS.CPFCNPJTomador, 'CNPJ')) + self.assertTrue(hasattr(obj_lote_rps.RPS, 'CPFCNPJTomador')) + self.assertTrue(hasattr(obj_lote_rps.RPS.CPFCNPJTomador, 'CNPJ')) + + def test_tipo_cpfcnpj_3(self): + nfse = _get_nfse(tipo_cpfcnpj=3) + + obj_rps, obj_lote_rps = get_objects(nfse) + + self.assertFalse(hasattr(obj_rps.RPS, 'CPFCNPJTomador')) diff --git a/tests/test_nfse_paulistana_valores_default.py b/tests/test_nfse_paulistana_valores_default.py new file mode 100644 index 0000000..3440743 --- /dev/null +++ b/tests/test_nfse_paulistana_valores_default.py @@ -0,0 +1,47 @@ +# coding=utf-8 + +import os.path +import unittest +from pytrustnfe.xml import render_xml, sanitize_response +from tests.const import DEFAULT_RPS, NFSE + +default_values = { + 'TipoRPS': 'RPS', + 'TributacaoRPS': 'T', + 'ValorCOFINS': 0.0, + 'ValorINSS': 0.0, + 'ValorIR': 0.0, + 'ValorPIS': 0.0, + 'ValorCSLL': 0.0, + 'ISSRetido': False +} +attrs = ['TipoRPS', 'TributacaoRPS', 'ValorPIS', 'ValorCOFINS', 'ValorINSS', 'ValorIR', 'ValorCSLL', 'ISSRetido'] + + +def _get_nfse(): + nfse = NFSE + nfse['lista_rps'] = DEFAULT_RPS + return nfse + + +class test_nfse_paulistana_valores_default(unittest.TestCase): + template_path = 'pytrustnfe/nfse/paulistana/templates' + xml_path = os.path.join(os.path.dirname(__file__), 'XMLs') + nfse = _get_nfse() + + def test_rps_sem_valores(self): + + xml_rps = render_xml(self.template_path, 'EnvioRPS.xml', False, nfse=self.nfse) + + _, obj = sanitize_response(xml_rps) + + for attr in attrs: + self.assertEqual(getattr(obj.RPS, attr), default_values[attr]) + + def test_lote_rps_sem_valores(self): + xml_lote_rps = render_xml(self.template_path, 'EnvioLoteRPS.xml', False, nfse=self.nfse) + + _, obj = sanitize_response(xml_lote_rps) + + for attr in attrs: + self.assertEqual(getattr(obj.RPS, attr), default_values[attr]) From 13900c782b6c12fb6df75ba3dced92bb829f02c9 Mon Sep 17 00:00:00 2001 From: Isabela Morais Date: Tue, 11 Feb 2020 09:40:51 -0300 Subject: [PATCH 7/8] test batch size --- tests/test_nfse_paulistana_para_lote.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_nfse_paulistana_para_lote.py b/tests/test_nfse_paulistana_para_lote.py index 1e89ee7..2612992 100644 --- a/tests/test_nfse_paulistana_para_lote.py +++ b/tests/test_nfse_paulistana_para_lote.py @@ -15,6 +15,7 @@ def _get_nfse(): class test_nfse_paulistana_para_lote(unittest.TestCase): xml_path = os.path.join(os.path.dirname(__file__), 'XMLs') template_path = 'pytrustnfe/nfse/paulistana/templates' + BATCH_SIZE = len(LOTE_RPS) def test_envio_nfse(self): nfse = _get_nfse() @@ -24,5 +25,5 @@ class test_nfse_paulistana_para_lote(unittest.TestCase): _, obj = sanitize_response(xml_send) - self.assertEqual(obj.Cabecalho.QtdRPS, 5) + self.assertEqual(obj.Cabecalho.QtdRPS, self.BATCH_SIZE) self.assertEqual(xml_send, expected_xml) From 79e192c9f8969fff9059f23012998c57e9e0ee71 Mon Sep 17 00:00:00 2001 From: Danimar Ribeiro Date: Wed, 12 Feb 2020 23:26:18 -0300 Subject: [PATCH 8/8] Increment version --- .travis.yml | 2 -- setup.py | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4e404cd..c3e7bbd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,6 @@ language: python python: - "3.6" -virtual_env: - system_site_packages: true install: - pip install --upgrade pip - pip install -r requirements.txt diff --git a/setup.py b/setup.py index 00299ec..e0594d3 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages -VERSION = "1.0.45" +VERSION = "1.0.46" setup(