Skip to content

Commit

Permalink
Merge pull request #264 from danimaribeiro/loggi/master3
Browse files Browse the repository at this point in the history
Loggi/master3
  • Loading branch information
danimaribeiro committed Feb 13, 2020
2 parents 0b2e3ce + 79e192c commit 4eaaa83
Show file tree
Hide file tree
Showing 12 changed files with 347 additions and 32 deletions.
2 changes: 0 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -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
Expand Down
19 changes: 17 additions & 2 deletions pytrustnfe/nfse/paulistana/templates/EnvioLoteRPS.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<transacao>false</transacao>
<dtInicio>{{ nfse.data_inicio }}</dtInicio>
<dtFim>{{ nfse.data_fim }}</dtFim>
<QtdRPS>1</QtdRPS>
<QtdRPS>{{ nfse.lista_rps|length }}</QtdRPS>
<ValorTotalServicos>{{ nfse.total_servicos }}</ValorTotalServicos>
<ValorTotalDeducoes>{{ nfse.total_deducoes }}</ValorTotalDeducoes>
</Cabecalho>
Expand All @@ -32,6 +32,7 @@
<CodigoServico>{{ rps.codigo_atividade }}</CodigoServico>
<AliquotaServicos>{{ rps.aliquota_atividade }}</AliquotaServicos>
<ISSRetido>{{ rps.iss_retido | default('false') }}</ISSRetido>
{% if rps.tomador.tipo_cpfcnpj != 3 %}
<CPFCNPJTomador>
{% if rps.tomador.tipo_cpfcnpj == 1 -%}
<CPF>{{ rps.tomador.cpf_cnpj }}</CPF>
Expand All @@ -40,20 +41,34 @@
<CNPJ>{{ rps.tomador.cpf_cnpj }}</CNPJ>
{% endif %}
</CPFCNPJTomador>
{% endif %}
{% if rps.tomador.inscricao_municipal -%}
<InscricaoMunicipalTomador>{{ rps.tomador.inscricao_municipal }}</InscricaoMunicipalTomador>
{% endif %}
<RazaoSocialTomador>{{ rps.tomador.razao_social|normalize|escape }}</RazaoSocialTomador>
{% if rps.tomador.cidade %}
<EnderecoTomador>
{% if rps.tomador.tipo_logradouro %}
<TipoLogradouro>{{ rps.tomador.tipo_logradouro }}</TipoLogradouro>
{% endif %}
{% if rps.tomador.logradouro %}
<Logradouro>{{ rps.tomador.logradouro|normalize|escape }}</Logradouro>
{% endif %}
{% if rps.tomador.numero %}
<NumeroEndereco>{{ rps.tomador.numero }}</NumeroEndereco>
{% endif %}
{% if rps.tomador.complemento %}
<ComplementoEndereco>{{ rps.tomador.complemento|normalize|escape }}</ComplementoEndereco>
{% endif %}
{% if rps.tomador.bairro %}
<Bairro>{{ rps.tomador.bairro }}</Bairro>
{% endif %}
<Cidade>{{ rps.tomador.cidade }}</Cidade>
<UF>{{ rps.tomador.uf }}</UF>
<CEP>{{ rps.tomador.cep }}</CEP>
{% if rps.tomador.cep %}<CEP>{{ rps.tomador.cep }}</CEP>{% endif %}
</EnderecoTomador>
{% endif %}
{% if rps.tomador.email %}<EmailTomador>{{ rps.tomador.email }}</EmailTomador>{% endif %}
<Discriminacao>{{ rps.descricao|normalize|escape }}</Discriminacao>
<ValorCargaTributaria>{{ rps.valor_carga_tributaria }}</ValorCargaTributaria>
<FonteCargaTributaria>{{ rps.fonte_carga_tributaria }}</FonteCargaTributaria>
Expand Down
60 changes: 39 additions & 21 deletions pytrustnfe/nfse/paulistana/templates/EnvioRPS.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,21 @@
<SerieRPS>{{ rps.serie }}</SerieRPS>
<NumeroRPS>{{ rps.numero }}</NumeroRPS>
</ChaveRPS>
<TipoRPS>RPS-M</TipoRPS>
<TipoRPS>{{ rps.tipo_rps | default('RPS') }}</TipoRPS>
<DataEmissao>{{ rps.data_emissao }}</DataEmissao>
<StatusRPS>N</StatusRPS>
<TributacaoRPS>T</TributacaoRPS>
<ValorServicos>{{ nfse.total_servicos }}</ValorServicos>
<ValorDeducoes>{{ nfse.total_deducoes }}</ValorDeducoes>
<ValorPIS>{{ rps.valor_pis }}</ValorPIS>
<ValorCOFINS>{{ rps.valor_cofins }}</ValorCOFINS>
<ValorINSS>{{ rps.valor_inss }}</ValorINSS>
<ValorIR>{{ rps.valor_pis }}</ValorIR>
<ValorCSLL>{{ rps.valor_csll }}</ValorCSLL>
<TributacaoRPS>{{ rps.tributacao_rps | default('T') }}</TributacaoRPS>
<ValorServicos>{{ rps.valor_servico }}</ValorServicos>
<ValorDeducoes>{{ rps.valor_deducao }}</ValorDeducoes>
<ValorPIS>{{ rps.valor_pis | default('0.00') }}</ValorPIS>
<ValorCOFINS>{{ rps.valor_cofins | default('0.00') }}</ValorCOFINS>
<ValorINSS>{{ rps.valor_inss | default('0.00') }}</ValorINSS>
<ValorIR>{{ rps.valor_ir | default('0.00') }}</ValorIR>
<ValorCSLL>{{ rps.valor_csll | default('0.00') }}</ValorCSLL>
<CodigoServico>{{ rps.codigo_atividade }}</CodigoServico>
<AliquotaServicos>{{ rps.aliquota_atividade }}</AliquotaServicos>
<ISSRetido>false</ISSRetido>
<ISSRetido>{{ rps.iss_retido | default('false') }}</ISSRetido>
{% if rps.tomador.tipo_cpfcnpj != 3 %}
<CPFCNPJTomador>
{% if rps.tomador.tipo_cpfcnpj == 1 -%}
<CPF>{{ rps.tomador.cpf_cnpj }}</CPF>
Expand All @@ -34,20 +35,37 @@
<CNPJ>{{ rps.tomador.cpf_cnpj }}</CNPJ>
{% endif %}
</CPFCNPJTomador>
<RazaoSocialTomador>{{ rps.tomador.razao_social }}</RazaoSocialTomador>
{% endif %}
{% if rps.tomador.inscricao_municipal -%}
<InscricaoMunicipalTomador>{{ rps.tomador.inscricao_municipal }}</InscricaoMunicipalTomador>
{% endif %}
<RazaoSocialTomador>{{ rps.tomador.razao_social|normalize|escape }}</RazaoSocialTomador>
{% if rps.tomador.cidade %}
<EnderecoTomador>
<TipoLogradouro>{{ rps.tomador.tipo_logradouro }}</TipoLogradouro>
<Logradouro>{{ rps.tomador.logradouro }}</Logradouro>
<NumeroEndereco>{{ rps.tomador.numero }}</NumeroEndereco>
<ComplementoEndereco>{{ rps.tomador.complemento }}</ComplementoEndereco>
<Bairro>{{ rps.tomador.bairro }}</Bairro>
<Cidade>{{ rps.tomador.cidade }}</Cidade>
<UF>{{ rps.tomador.uf }}</UF>
<CEP>{{ rps.tomador.cep }}</CEP>
{% if rps.tomador.tipo_logradouro %}
<TipoLogradouro>{{ rps.tomador.tipo_logradouro }}</TipoLogradouro>
{% endif %}
{% if rps.tomador.logradouro %}
<Logradouro>{{ rps.tomador.logradouro|normalize|escape }}</Logradouro>
{% endif %}
{% if rps.tomador.numero %}
<NumeroEndereco>{{ rps.tomador.numero }}</NumeroEndereco>
{% endif %}
{% if rps.tomador.complemento %}
<ComplementoEndereco>{{ rps.tomador.complemento|normalize|escape }}</ComplementoEndereco>
{% endif %}
{% if rps.tomador.bairro %}
<Bairro>{{ rps.tomador.bairro }}</Bairro>
{% endif %}
<Cidade>{{ rps.tomador.cidade }}</Cidade>
<UF>{{ rps.tomador.uf }}</UF>
{% if rps.tomador.cep %}<CEP>{{ rps.tomador.cep }}</CEP>{% endif %}
</EnderecoTomador>
<Discriminacao>{{ rps.descricao }}</Discriminacao>
{% endif %}
{% if rps.tomador.email %}<EmailTomador>{{ rps.tomador.email }}</EmailTomador>{% endif %}
<Discriminacao>{{ rps.descricao|normalize|escape }}</Discriminacao>
<ValorCargaTributaria>{{ rps.valor_carga_tributaria }}</ValorCargaTributaria>
<FonteCargaTributaria>{{ rps.fonte_carga_tributaria }}</FonteCargaTributaria>
{% endfor %}
</RPS>
{% endfor %}
</PedidoEnvioRPS>
6 changes: 4 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
from setuptools import setup, find_packages


VERSION = "1.0.45"
VERSION = "1.0.46"


setup(
name="PyTrustNFe3",
name="pytrustnfe3",
version=VERSION,
author="Danimar Ribeiro",
author_email='danimaribeiro@gmail.com',
Expand Down Expand Up @@ -48,6 +48,8 @@
long_description=open('README.md', 'r').read(),
long_description_content_type='text/markdown',
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',
Expand Down
10 changes: 5 additions & 5 deletions tests/XMLs/paulistana_signature.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<PedidoEnvioLoteRPS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.prefeitura.sp.gov.br/nfe"><Cabecalho xmlns="" Versao="1"><CPFCNPJRemetente><CNPJ>12345678901234</CNPJ></CPFCNPJRemetente><transacao>false</transacao><dtInicio>2016-08-29</dtInicio><dtFim>2016-08-29</dtFim><QtdRPS>1</QtdRPS><ValorTotalServicos/><ValorTotalDeducoes/></Cabecalho><RPS xmlns=""><Assinatura>E4fpHYkQa7Naxn6IKGb7NwwZu5tPk/KXJ9hCwtZgq0xvKS450aQqqBL+7Iv46lTgqrSMu7+gLrl+LC1qs/8aT2mbHE8uaVFSbzwZ+sF/BkcT6nsFHLMswEiTAEs95Jb7hN1cC91xqQGRH4buw0TzxHKmhuLJ22WwtG/scxyKtjM=</Assinatura><ChaveRPS><InscricaoPrestador>123456</InscricaoPrestador><SerieRPS>1</SerieRPS><NumeroRPS>1</NumeroRPS></ChaveRPS><TipoRPS>RPS</TipoRPS><DataEmissao>2016-08-29</DataEmissao><StatusRPS>N</StatusRPS><TributacaoRPS>T</TributacaoRPS><ValorServicos/><ValorDeducoes/><ValorPIS>0.00</ValorPIS><ValorCOFINS>0.00</ValorCOFINS><ValorINSS>0.00</ValorINSS><ValorIR>0.00</ValorIR><ValorCSLL>0.00</ValorCSLL><CodigoServico>07498</CodigoServico><AliquotaServicos>5.00</AliquotaServicos><ISSRetido>false</ISSRetido><CPFCNPJTomador/><InscricaoMunicipalTomador>123456</InscricaoMunicipalTomador><RazaoSocialTomador>Trustcode</RazaoSocialTomador><EnderecoTomador><TipoLogradouro>1</TipoLogradouro><Logradouro>Vinicius de Moraes, 42</Logradouro><NumeroEndereco>42</NumeroEndereco><ComplementoEndereco/><Bairro>Corrego</Bairro><Cidade>Floripa</Cidade><UF>SC</UF><CEP>88037240</CEP></EnderecoTomador><Discriminacao>Venda de servico</Discriminacao><ValorCargaTributaria/><FonteCargaTributaria/></RPS><Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<PedidoEnvioLoteRPS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.prefeitura.sp.gov.br/nfe"><Cabecalho xmlns="" Versao="1"><CPFCNPJRemetente><CNPJ>12345678901234</CNPJ></CPFCNPJRemetente><transacao>false</transacao><dtInicio>2016-08-29</dtInicio><dtFim>2016-08-29</dtFim><QtdRPS>1</QtdRPS><ValorTotalServicos/><ValorTotalDeducoes/></Cabecalho><RPS xmlns=""><Assinatura>E4fpHYkQa7Naxn6IKGb7NwwZu5tPk/KXJ9hCwtZgq0xvKS450aQqqBL+7Iv46lTgqrSMu7+gLrl+LC1qs/8aT2mbHE8uaVFSbzwZ+sF/BkcT6nsFHLMswEiTAEs95Jb7hN1cC91xqQGRH4buw0TzxHKmhuLJ22WwtG/scxyKtjM=</Assinatura><ChaveRPS><InscricaoPrestador>123456</InscricaoPrestador><SerieRPS>1</SerieRPS><NumeroRPS>1</NumeroRPS></ChaveRPS><TipoRPS>RPS</TipoRPS><DataEmissao>2016-08-29</DataEmissao><StatusRPS>N</StatusRPS><TributacaoRPS>T</TributacaoRPS><ValorServicos/><ValorDeducoes/><ValorPIS>0.00</ValorPIS><ValorCOFINS>0.00</ValorCOFINS><ValorINSS>0.00</ValorINSS><ValorIR>0.00</ValorIR><ValorCSLL>0.00</ValorCSLL><CodigoServico>07498</CodigoServico><AliquotaServicos>5.00</AliquotaServicos><ISSRetido>false</ISSRetido><CPFCNPJTomador/><InscricaoMunicipalTomador>123456</InscricaoMunicipalTomador><RazaoSocialTomador>Trustcode</RazaoSocialTomador><EnderecoTomador><TipoLogradouro>1</TipoLogradouro><Logradouro>Vinicius de Moraes, 42</Logradouro><NumeroEndereco>42</NumeroEndereco><Bairro>Corrego</Bairro><Cidade>Floripa</Cidade><UF>SC</UF><CEP>88037240</CEP></EnderecoTomador><Discriminacao>Venda de servico</Discriminacao><ValorCargaTributaria/><FonteCargaTributaria/></RPS><Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
Expand All @@ -8,12 +8,12 @@
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>IAh8GGlbp/Tnqma+2RZ7UrGZhTc=</DigestValue>
<DigestValue>Thwvs++WdhRuXOVgMxXTY/9Zih0=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>gjkMTCq0uuaX8tkRBlLjgybn8a2O4Axl6HHq1MN8nnEMliERcziU3pa3r1jbghlE
EUyIO8bTZ0V7c05pQvHQgVUHcSo6vHld4ZQNk7JfMfmpez4uxrUeuSrSqSLCwT9W
NmTY9EJ16GyrQNELw+SkYuEFOvqZTU3qjDZkLddQ8bc=</SignatureValue>
<SignatureValue>fvJR0msutiLI9KpUY/8VDPqmDeGYpXt/JvY6LUQZlGjjGb71jM2cLEHotM4lwJLi
WKLvhSBbaLQQm/OFm1KbQ8TRrEJl8NMYv2bABNoH9OxIn5Ecnb4jxCCAaIDN3iXy
B7oYCq5nqtfsFGplU29enQ//1SrRTE4MDsOwoN8bX0c=</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIICMTCCAZqgAwIBAgIQfYOsIEVuAJ1FwwcTrY0t1DANBgkqhkiG9w0BAQUFADBX
Expand Down
1 change: 1 addition & 0 deletions tests/XMLs/xml_send_rps_batch_to_paulistana.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<PedidoEnvioLoteRPS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.prefeitura.sp.gov.br/nfe"><Cabecalho xmlns="" Versao="1"><CPFCNPJRemetente><CNPJ>12345678901234</CNPJ></CPFCNPJRemetente><transacao>false</transacao><dtInicio>2016-08-29</dtInicio><dtFim>2016-08-29</dtFim><QtdRPS>5</QtdRPS><ValorTotalServicos/><ValorTotalDeducoes/></Cabecalho><RPS xmlns=""><Assinatura>123</Assinatura><ChaveRPS><InscricaoPrestador>123456</InscricaoPrestador><SerieRPS>1</SerieRPS><NumeroRPS>0</NumeroRPS></ChaveRPS><TipoRPS>RPS</TipoRPS><DataEmissao>2016-08-29</DataEmissao><StatusRPS>N</StatusRPS><TributacaoRPS>T</TributacaoRPS><ValorServicos/><ValorDeducoes/><ValorPIS>0.00</ValorPIS><ValorCOFINS>0.00</ValorCOFINS><ValorINSS>0.00</ValorINSS><ValorIR>0.00</ValorIR><ValorCSLL>0.00</ValorCSLL><CodigoServico>07498</CodigoServico><AliquotaServicos>5.00</AliquotaServicos><ISSRetido>false</ISSRetido><CPFCNPJTomador><CPF>12345678923256</CPF></CPFCNPJTomador><InscricaoMunicipalTomador>123456</InscricaoMunicipalTomador><RazaoSocialTomador>Trustcode</RazaoSocialTomador><EnderecoTomador><TipoLogradouro>1</TipoLogradouro><Logradouro>Vinicius de Moraes, 42</Logradouro><NumeroEndereco>42</NumeroEndereco><ComplementoEndereco>aaa</ComplementoEndereco><Bairro>Corrego</Bairro><Cidade>Floripa</Cidade><UF>SC</UF><CEP>88037240</CEP></EnderecoTomador><EmailTomador>user@user.com</EmailTomador><Discriminacao>Venda de servico</Discriminacao><ValorCargaTributaria/><FonteCargaTributaria/></RPS><RPS xmlns=""><Assinatura>123</Assinatura><ChaveRPS><InscricaoPrestador>123456</InscricaoPrestador><SerieRPS>1</SerieRPS><NumeroRPS>1</NumeroRPS></ChaveRPS><TipoRPS>RPS</TipoRPS><DataEmissao>2016-08-29</DataEmissao><StatusRPS>N</StatusRPS><TributacaoRPS>T</TributacaoRPS><ValorServicos/><ValorDeducoes/><ValorPIS>0.00</ValorPIS><ValorCOFINS>0.00</ValorCOFINS><ValorINSS>0.00</ValorINSS><ValorIR>0.00</ValorIR><ValorCSLL>0.00</ValorCSLL><CodigoServico>07498</CodigoServico><AliquotaServicos>5.00</AliquotaServicos><ISSRetido>false</ISSRetido><CPFCNPJTomador><CPF>12345678923256</CPF></CPFCNPJTomador><InscricaoMunicipalTomador>123456</InscricaoMunicipalTomador><RazaoSocialTomador>Trustcode</RazaoSocialTomador><EnderecoTomador><TipoLogradouro>1</TipoLogradouro><Logradouro>Vinicius de Moraes, 42</Logradouro><NumeroEndereco>42</NumeroEndereco><ComplementoEndereco>aaa</ComplementoEndereco><Bairro>Corrego</Bairro><Cidade>Floripa</Cidade><UF>SC</UF><CEP>88037240</CEP></EnderecoTomador><EmailTomador>user@user.com</EmailTomador><Discriminacao>Venda de servico</Discriminacao><ValorCargaTributaria/><FonteCargaTributaria/></RPS><RPS xmlns=""><Assinatura>123</Assinatura><ChaveRPS><InscricaoPrestador>123456</InscricaoPrestador><SerieRPS>1</SerieRPS><NumeroRPS>2</NumeroRPS></ChaveRPS><TipoRPS>RPS</TipoRPS><DataEmissao>2016-08-29</DataEmissao><StatusRPS>N</StatusRPS><TributacaoRPS>T</TributacaoRPS><ValorServicos/><ValorDeducoes/><ValorPIS>0.00</ValorPIS><ValorCOFINS>0.00</ValorCOFINS><ValorINSS>0.00</ValorINSS><ValorIR>0.00</ValorIR><ValorCSLL>0.00</ValorCSLL><CodigoServico>07498</CodigoServico><AliquotaServicos>5.00</AliquotaServicos><ISSRetido>false</ISSRetido><CPFCNPJTomador><CPF>12345678923256</CPF></CPFCNPJTomador><InscricaoMunicipalTomador>123456</InscricaoMunicipalTomador><RazaoSocialTomador>Trustcode</RazaoSocialTomador><EnderecoTomador><TipoLogradouro>1</TipoLogradouro><Logradouro>Vinicius de Moraes, 42</Logradouro><NumeroEndereco>42</NumeroEndereco><ComplementoEndereco>aaa</ComplementoEndereco><Bairro>Corrego</Bairro><Cidade>Floripa</Cidade><UF>SC</UF><CEP>88037240</CEP></EnderecoTomador><EmailTomador>user@user.com</EmailTomador><Discriminacao>Venda de servico</Discriminacao><ValorCargaTributaria/><FonteCargaTributaria/></RPS><RPS xmlns=""><Assinatura>123</Assinatura><ChaveRPS><InscricaoPrestador>123456</InscricaoPrestador><SerieRPS>1</SerieRPS><NumeroRPS>3</NumeroRPS></ChaveRPS><TipoRPS>RPS</TipoRPS><DataEmissao>2016-08-29</DataEmissao><StatusRPS>N</StatusRPS><TributacaoRPS>T</TributacaoRPS><ValorServicos/><ValorDeducoes/><ValorPIS>0.00</ValorPIS><ValorCOFINS>0.00</ValorCOFINS><ValorINSS>0.00</ValorINSS><ValorIR>0.00</ValorIR><ValorCSLL>0.00</ValorCSLL><CodigoServico>07498</CodigoServico><AliquotaServicos>5.00</AliquotaServicos><ISSRetido>false</ISSRetido><CPFCNPJTomador><CPF>12345678923256</CPF></CPFCNPJTomador><InscricaoMunicipalTomador>123456</InscricaoMunicipalTomador><RazaoSocialTomador>Trustcode</RazaoSocialTomador><EnderecoTomador><TipoLogradouro>1</TipoLogradouro><Logradouro>Vinicius de Moraes, 42</Logradouro><NumeroEndereco>42</NumeroEndereco><ComplementoEndereco>aaa</ComplementoEndereco><Bairro>Corrego</Bairro><Cidade>Floripa</Cidade><UF>SC</UF><CEP>88037240</CEP></EnderecoTomador><EmailTomador>user@user.com</EmailTomador><Discriminacao>Venda de servico</Discriminacao><ValorCargaTributaria/><FonteCargaTributaria/></RPS><RPS xmlns=""><Assinatura>123</Assinatura><ChaveRPS><InscricaoPrestador>123456</InscricaoPrestador><SerieRPS>1</SerieRPS><NumeroRPS>4</NumeroRPS></ChaveRPS><TipoRPS>RPS</TipoRPS><DataEmissao>2016-08-29</DataEmissao><StatusRPS>N</StatusRPS><TributacaoRPS>T</TributacaoRPS><ValorServicos/><ValorDeducoes/><ValorPIS>0.00</ValorPIS><ValorCOFINS>0.00</ValorCOFINS><ValorINSS>0.00</ValorINSS><ValorIR>0.00</ValorIR><ValorCSLL>0.00</ValorCSLL><CodigoServico>07498</CodigoServico><AliquotaServicos>5.00</AliquotaServicos><ISSRetido>false</ISSRetido><CPFCNPJTomador><CPF>12345678923256</CPF></CPFCNPJTomador><InscricaoMunicipalTomador>123456</InscricaoMunicipalTomador><RazaoSocialTomador>Trustcode</RazaoSocialTomador><EnderecoTomador><TipoLogradouro>1</TipoLogradouro><Logradouro>Vinicius de Moraes, 42</Logradouro><NumeroEndereco>42</NumeroEndereco><ComplementoEndereco>aaa</ComplementoEndereco><Bairro>Corrego</Bairro><Cidade>Floripa</Cidade><UF>SC</UF><CEP>88037240</CEP></EnderecoTomador><EmailTomador>user@user.com</EmailTomador><Discriminacao>Venda de servico</Discriminacao><ValorCargaTributaria/><FonteCargaTributaria/></RPS></PedidoEnvioLoteRPS>
56 changes: 56 additions & 0 deletions tests/const.py
Original file line number Diff line number Diff line change
@@ -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': []
}
35 changes: 35 additions & 0 deletions tests/test_nfse_paulistana_email_tomador.py
Original file line number Diff line number Diff line change
@@ -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'))

Loading

0 comments on commit 4eaaa83

Please sign in to comment.