diff --git a/pytrustnfe/Servidores.py b/pytrustnfe/Servidores.py
index ab1f8d4..e728c9e 100644
--- a/pytrustnfe/Servidores.py
+++ b/pytrustnfe/Servidores.py
@@ -84,7 +84,7 @@ def localizar_url(servico, estado, mod='55', ambiente=2):
if sigla == 'RS' and servico == WS_NFE_CADASTRO:
dominio = 'cad.sefazrs.rs.gov.br'
- if sigla in ('AC', 'RN', 'PB', 'SC') and \
+ if sigla in ('AC', 'RN', 'PB', 'SC', 'RJ') and \
servico == WS_NFE_CADASTRO:
dominio = 'cad.svrs.rs.gov.br'
@@ -284,6 +284,7 @@ UFAM = {
NFE_AMBIENTE_PRODUCAO: {
'servidor': 'nfe.sefaz.am.gov.br',
WS_NFE_RECEPCAO_EVENTO: 'services2/services/RecepcaoEvento',
+ WS_NFE_CANCELAMENTO: 'services2/services/RecepcaoEvento',
WS_NFE_AUTORIZACAO: 'services2/services/NfeAutorizacao',
WS_NFE_RET_AUTORIZACAO: 'services2/services/NfeRetAutorizacao',
WS_NFE_INUTILIZACAO: 'services2/services/NfeInutilizacao2',
@@ -294,6 +295,7 @@ UFAM = {
NFE_AMBIENTE_HOMOLOGACAO: {
'servidor': 'homnfe.sefaz.am.gov.br',
WS_NFE_RECEPCAO_EVENTO: 'services2/services/RecepcaoEvento',
+ WS_NFE_CANCELAMENTO: 'services2/services/RecepcaoEvento',
WS_NFE_AUTORIZACAO: 'services2/services/NfeAutorizacao',
WS_NFE_RET_AUTORIZACAO: 'services2/services/NfeRetAutorizacao',
WS_NFE_INUTILIZACAO: 'services2/services/NfeInutilizacao2',
@@ -314,6 +316,7 @@ UFBA = {
WS_NFE_INUTILIZACAO: 'webservices/nfenw/nfeinutilizacao2.asmx',
WS_NFE_CADASTRO: 'webservices/nfenw/CadConsultaCadastro2.asmx',
WS_NFE_RECEPCAO_EVENTO: 'webservices/sre/recepcaoevento',
+ WS_NFE_CANCELAMENTO: 'webservices/sre/recepcaoevento',
},
NFE_AMBIENTE_HOMOLOGACAO: {
'servidor': 'hnfe.sefaz.ba.gov.br',
@@ -325,6 +328,7 @@ UFBA = {
WS_NFE_INUTILIZACAO: 'webservices/nfenw/nfeinutilizacao2.asmx',
WS_NFE_CADASTRO: 'webservices/nfenw/CadConsultaCadastro2.asmx',
WS_NFE_RECEPCAO_EVENTO: 'webservices/sre/recepcaoevento',
+ WS_NFE_CANCELAMENTO: 'webservices/sre/recepcaoevento',
}
}
@@ -338,6 +342,7 @@ UFCE = {
WS_NFE_SITUACAO: 'nfe2/services/NfeStatusServico2',
WS_NFE_CADASTRO: 'nfe2/services/CadConsultaCadastro2',
WS_NFE_RECEPCAO_EVENTO: 'nfe2/services/RecepcaoEvento',
+ WS_NFE_CANCELAMENTO: 'nfe2/services/RecepcaoEvento',
},
NFE_AMBIENTE_HOMOLOGACAO: {
'servidor': 'nfeh.sefaz.ce.gov.br',
@@ -348,6 +353,7 @@ UFCE = {
WS_NFE_SITUACAO: 'nfe2/services/NfeStatusServico2',
WS_NFE_CADASTRO: 'nfe2/services/CadConsultaCadastro2',
WS_NFE_RECEPCAO_EVENTO: 'nfe2/services/RecepcaoEvento',
+ WS_NFE_CANCELAMENTO: 'nfe2/services/RecepcaoEvento',
}
}
@@ -362,6 +368,7 @@ UFGO = {
WS_NFE_CONSULTA: 'nfe/services/v2/NfeConsulta2',
WS_NFE_SITUACAO: 'nfe/services/v2/NfeStatusServico2',
WS_NFE_CADASTRO: 'nfe/services/v2/CadConsultaCadastro2',
+ WS_NFE_CANCELAMENTO: 'nfe/services/v2/RecepcaoEvento',
},
NFE_AMBIENTE_HOMOLOGACAO: {
'servidor': 'homolog.sefaz.go.gov.br',
@@ -372,6 +379,7 @@ UFGO = {
WS_NFE_CONSULTA: 'nfe/services/v2/NfeConsulta2',
WS_NFE_SITUACAO: 'nfe/services/v2/NfeStatusServico2',
WS_NFE_CADASTRO: 'nfe/services/v2/CadConsultaCadastro2',
+ WS_NFE_CANCELAMENTO: 'nfe/services/v2/RecepcaoEvento',
}
}
@@ -386,6 +394,7 @@ UFMT = {
WS_NFE_SITUACAO: 'nfews/v2/services/NfeStatusServico2',
WS_NFE_CADASTRO: 'nfews/v2/services/CadConsultaCadastro2',
WS_NFE_RECEPCAO_EVENTO: 'nfews/v2/services/RecepcaoEvento',
+ WS_NFE_CANCELAMENTO: 'nfews/v2/services/RecepcaoEvento',
},
NFE_AMBIENTE_HOMOLOGACAO: {
'servidor': 'homologacao.sefaz.mt.gov.br',
@@ -396,6 +405,7 @@ UFMT = {
WS_NFE_SITUACAO: 'nfews/v2/services/NfeStatusServico2',
WS_NFE_CADASTRO: 'nfews/v2/services/CadConsultaCadastro2',
WS_NFE_RECEPCAO_EVENTO: 'nfews/v2/services/RecepcaoEvento',
+ WS_NFE_CANCELAMENTO: 'nfews/v2/services/RecepcaoEvento',
}
}
@@ -409,6 +419,7 @@ UFMS = {
WS_NFE_INUTILIZACAO: 'producao/services2/NfeInutilizacao2',
WS_NFE_CONSULTA: 'producao/services2/NfeConsulta2',
WS_NFE_SITUACAO: 'producao/services2/NfeStatusServico2',
+ WS_NFE_CANCELAMENTO: 'producao/services2/RecepcaoEvento',
},
NFE_AMBIENTE_HOMOLOGACAO: {
'servidor': 'homologacao.nfe.ms.gov.br',
@@ -419,6 +430,7 @@ UFMS = {
WS_NFE_INUTILIZACAO: 'homologacao/services2/NfeInutilizacao2',
WS_NFE_CONSULTA: 'homologacao/services2/NfeConsulta2',
WS_NFE_SITUACAO: 'homologacao/services2/NfeStatusServico2',
+ WS_NFE_CANCELAMENTO: 'homologacao/services2/RecepcaoEvento',
}
}
@@ -432,6 +444,7 @@ UFMG = {
WS_NFE_SITUACAO: 'nfe2/services/NfeStatus2',
WS_NFE_CADASTRO: 'nfe2/services/cadconsultacadastro2',
WS_NFE_RECEPCAO_EVENTO: 'nfe2/services/RecepcaoEvento',
+ WS_NFE_CANCELAMENTO: 'nfe2/services/RecepcaoEvento',
},
NFE_AMBIENTE_HOMOLOGACAO: {
'servidor': 'hnfe.fazenda.mg.gov.br',
@@ -442,6 +455,7 @@ UFMG = {
WS_NFE_SITUACAO: 'nfe2/services/NfeStatus2',
WS_NFE_CADASTRO: 'nfe2/services/cadconsultacadastro2',
WS_NFE_RECEPCAO_EVENTO: 'nfe2/services/RecepcaoEvento',
+ WS_NFE_CANCELAMENTO: 'nfe2/services/RecepcaoEvento',
}
}
@@ -455,6 +469,7 @@ UFPR = {
WS_NFE_SITUACAO: 'nfe/NFeStatusServico3',
WS_NFE_CADASTRO: 'nfe/CadConsultaCadastro2',
WS_NFE_RECEPCAO_EVENTO: 'nfe-evento/NFeRecepcaoEvento',
+ WS_NFE_CANCELAMENTO: 'nfe-evento/NFeRecepcaoEvento',
},
NFE_AMBIENTE_HOMOLOGACAO: {
'servidor': 'homologacao.nfe.fazenda.pr.gov.br',
@@ -465,6 +480,7 @@ UFPR = {
WS_NFE_SITUACAO: 'nfe/NFeStatusServico3',
WS_NFE_CADASTRO: 'nfe/CadConsultaCadastro2',
WS_NFE_RECEPCAO_EVENTO: 'nfe-evento/NFeRecepcaoEvento',
+ WS_NFE_CANCELAMENTO: 'nfe-evento/NFeRecepcaoEvento',
}
}
diff --git a/pytrustnfe/nfse/ginfes/templates/Rps.xml b/pytrustnfe/nfse/ginfes/templates/Rps.xml
index 6f7b12a..b65ac46 100644
--- a/pytrustnfe/nfse/ginfes/templates/Rps.xml
+++ b/pytrustnfe/nfse/ginfes/templates/Rps.xml
@@ -27,11 +27,11 @@
{{ rps.valor_csll }}
{{ rps.iss_retido }}
{{ rps.valor_iss }}
- {{ rps.valor_iss_retido }}
{{ rps.outras_retencoes }}
{{ rps.base_calculo }}
- {{ rps.aliquota }}
+ {{ rps.aliquota_issqn }}
{{ rps.valor_liquido_nfse }}
+ {{ rps.valor_iss_retido }}
{{ rps.desconto_incondicionado }}
{{ rps.desconto_condicionado }}
diff --git a/pytrustnfe/nfse/simpliss/__init__.py b/pytrustnfe/nfse/simpliss/__init__.py
index 14820d7..62daa4a 100644
--- a/pytrustnfe/nfse/simpliss/__init__.py
+++ b/pytrustnfe/nfse/simpliss/__init__.py
@@ -19,13 +19,6 @@ def _render_xml(certificado, method, **kwargs):
xml_send = render_xml(path, '%s.xml' % method, True, **kwargs)
xml_send = etree.tostring(xml_send)
- # cert, key = extract_cert_and_key_from_pfx(
- # certificado.pfx, certificado.password)
- # cert, key = save_cert_key(cert, key)
- #
- # pfx_path = certificado.save_pfx()
- # signer = Assinatura(pfx_path, certificado.password)
- # xml_send = signer.assina_xml(xml_send, '')
return xml_send
@@ -114,3 +107,13 @@ def cancelar_nfse(certificado, **kwargs):
if "xml" not in kwargs:
kwargs['xml'] = xml_cancelar_nfse(certificado, **kwargs)
return _send('CancelarNfse', **kwargs)
+
+
+def xml_gerar_nfse(certificado, **kwargs):
+ return _render_xml(certificado, 'GerarNfse', **kwargs)
+
+
+def gerar_nfse(certificado, **kwargs):
+ if "xml" not in kwargs:
+ kwargs['xml'] = xml_recepcionar_lote_rps(certificado, **kwargs)
+ return _send('GerarNfse', **kwargs)
diff --git a/pytrustnfe/nfse/simpliss/templates/GerarNfse.xml b/pytrustnfe/nfse/simpliss/templates/GerarNfse.xml
new file mode 100644
index 0000000..72b6282
--- /dev/null
+++ b/pytrustnfe/nfse/simpliss/templates/GerarNfse.xml
@@ -0,0 +1,97 @@
+
+
+
+ {{ nfse.cnpj_prestador }}
+ {{ nfse.inscricao_municipal }}
+
+ {% for rps in nfse.lista_rps -%}
+
+ {{ rps.natureza_operacao }}
+ {{ rps.regime_tributacao }}
+ {{ rps.optante_simples }}
+ {{ rps.incentivador_cultural }}
+ {{ rps.status }}
+ {{ rps.data_emissao }}
+ {{ rps.outras_informacoes }}
+
+
+ {{ rps.valor_servico }}
+ {{ rps.valor_deducao }}
+ {{ rps.valor_pis }}
+ {{ rps.valor_cofins }}
+ {{ rps.valor_inss }}
+ {{ rps.valor_ir }}
+ {{ rps.valor_csll }}
+ {{ rps.iss_retido }}
+ {{ rps.valor_iss }}
+ {{ rps.valor_iss_retido }}
+ {{ rps.outras_retencoes }}
+ {{ rps.base_calculo }}
+ {{ rps.aliquota_issqn }}
+ {{ rps.valor_liquido_nfse }}
+ {{ rps.desconto_incondicionado }}
+ {{ rps.desconto_condicionado }}
+
+ {{ rps.codigo_servico }}
+ {{ rps.cnae }}
+ {{ rps.codigo_tributacao }}
+ {{ rps.descricao }}
+ {{ rps.codigo_municipio }}
+ {% for item in rps.itens_servico -%}
+
+ {{ item.descricao }}
+ {{ item.quantidade }}
+ {{ item.valor_unitario }}
+
+ {% endfor %}
+
+
+
+
+ {% if rps.tomador.cnpj_cpf|length == 14 %}
+ {{ rps.tomador.cnpj_cpf }}
+ {% endif %}
+ {% if rps.tomador.cnpj_cpf|length == 11 %}
+ {{ rps.tomador.cnpj_cpf }}
+ {% endif %}
+
+ {{ rps.tomador.inscricao_municipal }}
+
+ {{ rps.tomador.razao_social }}
+
+ {{ rps.tomador.logradouro }}
+ {{ rps.tomador.numero }}
+ {{ rps.tomador.complemento }}
+ {{ rps.tomador.bairro }}
+ {{ rps.tomador.cidade }}
+ {{ rps.tomador.uf }}
+ {{ rps.tomador.cep }}
+
+
+ {{ rps.tomador.telefone }}
+ {{ rps.tomador.email }}
+
+
+ {% if rps.intermediario is defined -%}
+
+ {{ rps.intermediario.razao_social }}
+
+ {{ rps.intermediario.cnpj }}
+
+ {{ rps.intermediario.inscricao_municipal }}
+
+ {% endif %}
+ {% if rps.construcao_civil is defined -%}
+
+ {{ rps.construcao_civil.codigo_obra }}
+ {{ rps.construcao_civil.art }}
+
+ {% endif %}
+
+ {% endfor %}
+
+
+ {{ nfse.cnpj_prestador }}
+ {{ nfse.senha }}
+
+
diff --git a/pytrustnfe/nfse/simpliss/templates/Rps.xml b/pytrustnfe/nfse/simpliss/templates/Rps.xml
index 6b1fe3e..9032b53 100644
--- a/pytrustnfe/nfse/simpliss/templates/Rps.xml
+++ b/pytrustnfe/nfse/simpliss/templates/Rps.xml
@@ -30,7 +30,7 @@
{{ rps.valor_iss_retido }}
{{ rps.outras_retencoes }}
{{ rps.base_calculo }}
- {{ rps.aliquota }}
+ {{ rps.aliquota_issqn }}
{{ rps.valor_liquido_nfse }}
{{ rps.desconto_incondicionado }}
{{ rps.desconto_condicionado }}
diff --git a/pytrustnfe/test/test_simpliss.py b/pytrustnfe/test/test_simpliss.py
deleted file mode 100644
index 5107b85..0000000
--- a/pytrustnfe/test/test_simpliss.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# -*- coding: utf-8 -*-
-# © 2016 Danimar Ribeiro, Trustcode
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-import os.path
-import unittest
-from pytrustnfe.certificado import Certificado
-from pytrustnfe.nfse.simpliss import recepcionar_lote_rps
-
-
-class test_nfse_simpliss(unittest.TestCase):
-
- caminho = os.path.dirname(__file__)
-
- def test_recepcionar_lote(self):
- pfx_source = open('/home/danimar/Downloads/machado.pfx', 'r').read()
- pfx = Certificado(pfx_source, '123456789')
-
- dados = {'cnpj_prestador': '12345678910234',
- 'inscricao_prestador': '123',
- 'protocolo': '123'}
- response = recepcionar_lote_rps(
- pfx, nfse=dados, ambiente='homologacao')
- print response
diff --git a/pytrustnfe/test/test_susesu.py b/pytrustnfe/test/test_susesu.py
deleted file mode 100644
index 3390af7..0000000
--- a/pytrustnfe/test/test_susesu.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# -*- coding: utf-8 -*-
-# © 2016 Danimar Ribeiro, Trustcode
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-import os.path
-import unittest
-from pytrustnfe.nfse.susesu import enviar_nota_retorna_url
-
-
-class test_nfse_susesu(unittest.TestCase):
-
- caminho = os.path.dirname(__file__)
-
- def test_enviar_nota_url_nota(self):
- dados = {
- 'cnpj_prestador': '21118045000135',
- 'codigo_prefeitura': 3150,
- 'senha_nfd': 'fiscalb',
- 'prestador': {},
- 'tomador': {}
- }
- response = enviar_nota_retorna_url(ambiente='homologacao', nfse=dados)
- self.assertEqual(response['received_xml'],
- '0-Numero da nota fiscal invalido.')
diff --git a/setup.py b/setup.py
index aa52877..0ae7f00 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
# coding=utf-8
from setuptools import setup, find_packages
-VERSION = "0.1.32"
+VERSION = "0.1.33"
setup(
name="PyTrustNFe",