Browse Source
Merge pull request #265 from danimaribeiro/gabicavalcante-master3
Merge pull request #265 from danimaribeiro/gabicavalcante-master3
Adicionando NFSe de Natalpull/266/head
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
54 changed files with 2980 additions and 2233 deletions
-
6.flake8
-
4.gitignore
-
61docs/conf.py
-
1030pytrustnfe/Servidores.py
-
8pytrustnfe/__init__.py
-
12pytrustnfe/certificado.py
-
12pytrustnfe/client.py
-
4pytrustnfe/exceptions.py
-
165pytrustnfe/nfe/__init__.py
-
27pytrustnfe/nfe/assinatura.py
-
348pytrustnfe/nfe/danfce.py
-
1054pytrustnfe/nfe/danfe.py
-
34pytrustnfe/nfe/patch.py
-
43pytrustnfe/nfse/aparecida/__init__.py
-
23pytrustnfe/nfse/assinatura.py
-
76pytrustnfe/nfse/betha/__init__.py
-
51pytrustnfe/nfse/bh/__init__.py
-
21pytrustnfe/nfse/bh/assinatura.py
-
53pytrustnfe/nfse/carioca/__init__.py
-
67pytrustnfe/nfse/dsf/__init__.py
-
94pytrustnfe/nfse/floripa/__init__.py
-
57pytrustnfe/nfse/ginfes/__init__.py
-
40pytrustnfe/nfse/imperial/__init__.py
-
47pytrustnfe/nfse/mga/__init__.py
-
17pytrustnfe/nfse/mga/assinatura.py
-
116pytrustnfe/nfse/natal/__init__.py
-
8pytrustnfe/nfse/natal/templates/EnvelopeSoap.xml
-
111pytrustnfe/nfse/natal/templates/Exemplo_LoteRPS.xml
-
112pytrustnfe/nfse/natal/templates/Rps.xml
-
3pytrustnfe/nfse/natal/templates/cabecalho.xml
-
15pytrustnfe/nfse/natal/templates/cancelarNfse.xml
-
7pytrustnfe/nfse/natal/templates/consultarLoteRps.xml
-
11pytrustnfe/nfse/natal/templates/recepcionarLoteRps.xml
-
68pytrustnfe/nfse/paulistana/__init__.py
-
64pytrustnfe/nfse/simpliss/__init__.py
-
34pytrustnfe/nfse/susesu/__init__.py
-
9pytrustnfe/nfse/susesu/templates/EnviarNota.xml
-
262pytrustnfe/urls.py
-
60pytrustnfe/utils.py
-
19pytrustnfe/xml/__init__.py
-
27pytrustnfe/xml/filters.py
-
4pytrustnfe/xml/validate.py
-
4requirements-dev.txt
-
76setup.py
-
154tests/XMLs/natal_sent_xml.xml
-
68tests/test_assinatura.py
-
110tests/test_certificado.py
-
6tests/test_danfe.py
-
13tests/test_ginfes.py
-
145tests/test_nfse_paulistana.py
-
37tests/test_servidores.py
-
118tests/test_utils.py
-
17tests/test_xml.py
-
33tests/test_xml_serializacao.py
@ -0,0 +1,6 @@ |
|||||
|
[flake8] |
||||
|
ignore = E203, E266, E501, W503, F403, E402, E265, E231 |
||||
|
max-line-length = 79 |
||||
|
max-complexity = 18 |
||||
|
select = B,C,E,F,W,T4,B9 |
||||
|
exclude = .git,__pycache__,api/specs/,migrations/ |
||||
1030
pytrustnfe/Servidores.py
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
1054
pytrustnfe/nfe/danfe.py
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,116 @@ |
|||||
|
# © 2019 Danimar Ribeiro, Trustcode |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
||||
|
|
||||
|
import os |
||||
|
from OpenSSL import crypto |
||||
|
from base64 import b64encode |
||||
|
|
||||
|
from requests import Session |
||||
|
from zeep import Client |
||||
|
from zeep.transports import Transport |
||||
|
from requests.packages.urllib3 import disable_warnings |
||||
|
|
||||
|
from pytrustnfe.xml import render_xml, sanitize_response |
||||
|
from pytrustnfe.certificado import extract_cert_and_key_from_pfx, save_cert_key |
||||
|
from pytrustnfe.nfe.assinatura import Assinatura |
||||
|
from lxml import etree |
||||
|
|
||||
|
|
||||
|
def sign_rps(path, certificado, **kwargs): |
||||
|
if "nfse" in kwargs: |
||||
|
lote = "" |
||||
|
for item in kwargs["nfse"]["lista_rps"]: |
||||
|
data = {"rps": item} |
||||
|
xml_rps = render_xml(path, "Rps.xml", True, **data) |
||||
|
|
||||
|
signer = Assinatura(certificado.pfx, certificado.password) |
||||
|
lote += signer.assina_xml( |
||||
|
xml_rps, f"rps:{item.get('numero')}{item.get('serie')}", getchildren=True |
||||
|
) |
||||
|
return lote |
||||
|
return "" |
||||
|
|
||||
|
|
||||
|
def _render(certificado, method, **kwargs): |
||||
|
path = os.path.join(os.path.dirname(__file__), "templates") |
||||
|
parser = etree.XMLParser( |
||||
|
remove_blank_text=True, remove_comments=True, strip_cdata=False |
||||
|
) |
||||
|
|
||||
|
lote = "" |
||||
|
referencia = "" |
||||
|
if method == "RecepcionarLoteRps": |
||||
|
referencia = "lote" |
||||
|
lote = sign_rps(path, certificado, **kwargs) |
||||
|
|
||||
|
kwargs["lote"] = lote |
||||
|
xml_send = render_xml(path, "%s.xml" % method, False, **kwargs) |
||||
|
|
||||
|
signer = Assinatura(certificado.pfx, certificado.password) |
||||
|
|
||||
|
xml_send = signer.assina_xml(etree.fromstring( |
||||
|
xml_send, parser=parser), f"{referencia}", getchildren=True) |
||||
|
return xml_send |
||||
|
|
||||
|
|
||||
|
def _send(certificado, method, **kwargs): |
||||
|
base_url = "" |
||||
|
if kwargs["ambiente"] == "producao": |
||||
|
base_url = "https://wsnfsev1.natal.rn.gov.br:8444" |
||||
|
else: |
||||
|
base_url = "https://wsnfsev1homologacao.natal.rn.gov.br:8443/axis2/services/NfseWSServiceV1?wsdl" |
||||
|
|
||||
|
base_url = "https://wsnfsev1homologacao.natal.rn.gov.br:8443/axis2/services/NfseWSServiceV1?wsdl" |
||||
|
cert, key = extract_cert_and_key_from_pfx( |
||||
|
certificado.pfx, certificado.password) |
||||
|
cert, key = save_cert_key(cert, key) |
||||
|
|
||||
|
disable_warnings() |
||||
|
session = Session() |
||||
|
session.cert = (cert, key) |
||||
|
session.verify = False |
||||
|
transport = Transport(session=session) |
||||
|
|
||||
|
client = Client(wsdl=base_url, transport=transport) |
||||
|
xml_send = {} |
||||
|
xml_send = { |
||||
|
"nfseDadosMsg": kwargs["xml"], |
||||
|
"nfseCabecMsg": """<?xml version="1.0"?> |
||||
|
<cabecalho xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" versao="1" xmlns="http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd"> |
||||
|
<versaoDados>1</versaoDados> |
||||
|
</cabecalho>""", |
||||
|
} |
||||
|
|
||||
|
response = client.service[method](**xml_send) |
||||
|
response, obj = sanitize_response(response) |
||||
|
return {"sent_xml": xml_send, "received_xml": response, "object": obj} |
||||
|
|
||||
|
|
||||
|
def xml_recepcionar_lote_rps(certificado, **kwargs): |
||||
|
return _render(certificado, "RecepcionarLoteRps", **kwargs) |
||||
|
|
||||
|
|
||||
|
def recepcionar_lote_rps(certificado, **kwargs): |
||||
|
if "xml" not in kwargs: |
||||
|
kwargs["xml"] = xml_recepcionar_lote_rps(certificado, **kwargs) |
||||
|
return _send(certificado, "RecepcionarLoteRps", **kwargs) |
||||
|
|
||||
|
|
||||
|
def xml_consultar_lote_rps(certificado, **kwargs): |
||||
|
return _render(certificado, "ConsultarLoteRps", **kwargs) |
||||
|
|
||||
|
|
||||
|
def consultar_lote_rps(certificado, **kwargs): |
||||
|
if "xml" not in kwargs: |
||||
|
kwargs["xml"] = xml_consultar_lote_rps(certificado, **kwargs) |
||||
|
return _send(certificado, "ConsultarLoteRps", **kwargs) |
||||
|
|
||||
|
|
||||
|
def xml_cancelar_nfse(certificado, **kwargs): |
||||
|
return _render(certificado, "cancelarNfse", **kwargs) |
||||
|
|
||||
|
|
||||
|
def cancelar_nfse(certificado, **kwargs): |
||||
|
if "xml" not in kwargs: |
||||
|
kwargs["xml"] = xml_cancelar_nfse(certificado, **kwargs) |
||||
|
return _send(certificado, "cancelarNfse", **kwargs) |
||||
@ -0,0 +1,8 @@ |
|||||
|
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> |
||||
|
<soap:Body> |
||||
|
<RecepcionarLoteRpsRequest xmlns="http://nfse.abrasf.org.br"> |
||||
|
<nfseCabecMsg><![CDATA[{% include 'cabecalho.xml' %}]]></nfseCabecMsg> |
||||
|
<nfseDadosMsg><![CDATA[{% include 'RecepcionarLoteRps.xml' %}]]></nfseDadosMsg> |
||||
|
</RecepcionarLoteRpsRequest> |
||||
|
</soap:Body> |
||||
|
</soap:Envelope> |
||||
@ -0,0 +1,111 @@ |
|||||
|
<EnviarLoteRpsEnvio xmlns="http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd"> |
||||
|
<LoteRps Id="lote"> |
||||
|
<NumeroLote>1</NumeroLote> |
||||
|
<Cnpj>27596568000505</Cnpj> |
||||
|
<InscricaoMunicipal>1000047</InscricaoMunicipal> |
||||
|
<QuantidadeRps>1</QuantidadeRps> |
||||
|
<ListaRps> |
||||
|
<Rps> |
||||
|
<InfRps Id="rps:1ABCDZ"> |
||||
|
<IdentificacaoRps> |
||||
|
<Numero>1</Numero> |
||||
|
<Serie>ABCDH</Serie> |
||||
|
<Tipo>1</Tipo> |
||||
|
</IdentificacaoRps> |
||||
|
<DataEmissao>2010-06-16T21:00:00</DataEmissao> |
||||
|
<NaturezaOperacao>1</NaturezaOperacao> |
||||
|
<RegimeEspecialTributacao>6</RegimeEspecialTributacao> |
||||
|
<OptanteSimplesNacional>1</OptanteSimplesNacional> |
||||
|
<IncentivadorCultural>2</IncentivadorCultural> |
||||
|
<Status>1</Status> |
||||
|
<Servico> |
||||
|
<Valores> |
||||
|
<ValorServicos>1000</ValorServicos> |
||||
|
<ValorPis>10</ValorPis> |
||||
|
<ValorCofins>10</ValorCofins> |
||||
|
<ValorInss>10</ValorInss> |
||||
|
<ValorIr>10</ValorIr> |
||||
|
<ValorCsll>10</ValorCsll> |
||||
|
<IssRetido>1</IssRetido> |
||||
|
<ValorIss>50</ValorIss> |
||||
|
<OutrasRetencoes>10</OutrasRetencoes> |
||||
|
<BaseCalculo>1000</BaseCalculo> |
||||
|
<Aliquota>0.05</Aliquota> |
||||
|
</Valores> |
||||
|
<ItemListaServico>11.01</ItemListaServico> |
||||
|
<CodigoCnae>4520005</CodigoCnae> |
||||
|
<Discriminacao>Teste.</Discriminacao> |
||||
|
<CodigoMunicipio>3106200</CodigoMunicipio> |
||||
|
</Servico> |
||||
|
<Prestador> |
||||
|
<Cnpj>27596568000505</Cnpj> |
||||
|
<InscricaoMunicipal>1000047</InscricaoMunicipal> |
||||
|
</Prestador> |
||||
|
<Tomador> |
||||
|
<IdentificacaoTomador> |
||||
|
<CpfCnpj> |
||||
|
<Cnpj>24533572000102</Cnpj> |
||||
|
</CpfCnpj> |
||||
|
<InscricaoMunicipal>1000039</InscricaoMunicipal> |
||||
|
</IdentificacaoTomador> |
||||
|
<RazaoSocial>INSCRICAO DE TESTE SIATU - DAGUA -PAULINOS</RazaoSocial> |
||||
|
<Endereco> |
||||
|
<Endereco>DA BAHIA</Endereco> |
||||
|
<Numero>200</Numero> |
||||
|
<Complemento>ANDAR 14</Complemento> |
||||
|
<Bairro>CENTRO</Bairro> |
||||
|
<CodigoMunicipio>2408102</CodigoMunicipio> |
||||
|
<Uf>RN</Uf> |
||||
|
<Cep>30160010</Cep> |
||||
|
</Endereco> |
||||
|
<Contato> |
||||
|
<Email>marcelo@teste.com.br</Email> |
||||
|
</Contato> |
||||
|
</Tomador> |
||||
|
<ConstrucaoCivil> |
||||
|
<CodigoObra>1234</CodigoObra> |
||||
|
<Art>1234</Art> |
||||
|
</ConstrucaoCivil> |
||||
|
</InfRps> |
||||
|
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> |
||||
|
<SignedInfo> |
||||
|
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" /> |
||||
|
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> |
||||
|
<Reference URI="#rps:1ABCDZ"> |
||||
|
<Transforms> |
||||
|
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> |
||||
|
</Transforms> |
||||
|
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> |
||||
|
<DigestValue>mMyQLAm4psxx52kaD8Jlta3ouPM=</DigestValue> |
||||
|
</Reference> |
||||
|
</SignedInfo> |
||||
|
<SignatureValue>qBKfaNz6RbsYUxCOrjGZ9zrdgiGL7QSBxjlhYRlKDNlDERlDWvM8gi28yus8FoUb0v2CTKKIBz0tzfqxgk60rke4YCMkTzdWfpm7ofMIhYC9VHqbWdInC20znOKygJy5hyIx6JBoyXbejnw/0KF+2E1P1ZehqXJWZqY+KPaIGAY=</SignatureValue> |
||||
|
<KeyInfo> |
||||
|
<X509Data> |
||||
|
<X509Certificate>MIIE7DCCA9SgAwIBAgIQZMlLC9ZEsHWsnvJNdMI2yzANBgkqhkiG9w0BAQUFADBqMQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDEsMCoGA1UECxMjU2VjcmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwgLSBTUkYxGDAWBgNVBAMTD0FDIFBST0RFTUdFIFNSRjAeFw0wNzEwMzEwMDAwMDBaFw0xMDEwMzAyMzU5NTlaMIGQMQswCQYDVQQGEwJCUjETMBEGA1UEChQKSUNQLUJyYXNpbDEqMCgGA1UECxQhU2VjcmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwtU1JGMRIwEAYDVQQLFAlTUkYgZS1DUEYxLDAqBgNVBAMTI0VER0FSIERPIENBUk1PIEZFUlJFSVJBOjQzMjYwMTUyNjg3MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6M+9XT5KLQN3IH8mAr+S6vxiochY/EwF8EhtNoxPTYl+zr0Dh+eZsRG31bN410nr2OrwncrRorMK8Ngq+j3FnNF0nIMigaaa5NAEfIk3Yy4kuqrTUZBpqUJvCqc3mkF3C3XD0MTmtbVTWCvYIk+qn3t5ShHyMnQcuah5Q0ItSbQIDAQABo4IB6TCCAeUwgZUGA1UdEQSBjTCBiqA9BgVgTAEDAaA0BDIyMTAzMTk2NDQzMjYwMTUyNjg3MDAwMDAwMDAwMDAwMDAwMDBNLTI4ODQwODVTU1BNR6AXBgVgTAEDBqAOBAwwMDAwMDAwMDAwMDCgHgYFYEwBAwWgFQQTMDAwMDAwMDAwMDAwMDAwMDAwMIEQZWRnYXJAcGJoLmdvdi5icjAJBgNVHRMEAjAAMF8GA1UdHwRYMFYwVKBSoFCGTmh0dHA6Ly9pY3AtYnJhc2lsLmNlcnRpc2lnbi5jb20uYnIvcmVwb3NpdG9yaW8vbGNyL0FDUFJPREVNR0VTUkYvTGF0ZXN0Q1JMLmNybDAfBgNVHSMEGDAWgBTdO9vtjZcRRUMBQ020Ev0O7niacDAOBgNVHQ8BAf8EBAMCBeAwVQYDVR0gBE4wTDBKBgZgTAECAxQwQDA+BggrBgEFBQcCARYyaHR0cDovL2ljcC1icmFzaWwuY2VydGlzaWduLmNvbS5ici9yZXBvc2l0b3Jpby9kcGMwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMCMDgGCCsGAQUFBwEBBCwwKjAoBggrBgEFBQcwAYYcaHR0cDovL29jc3AuY2VydGlzaWduLmNvbS5icjANBgkqhkiG9w0BAQUFAAOCAQEAYFcjZj4lGVEREHBaHtcRletWS6/mvpkxmodwj3ele5yXsxuqSZd7ebHbKewXx7gkyaWFkFAxFanQhls2tYKjg6haqt2b0AO1FsitVIHkMcxRwkU9G+1ec8yfdxymra2VdXazkxuvqKABgxkqKnaFdHjje7cjWDgwparymH64mTlHkSQz59GutJW0xfwBHcMGx0/9/iIug6pfMQivWf0NMVpFNzxO5ZNPEuOeBhVDxQr4+KB+4B9xDai/3J6f42UNbSy+z3xuB0K8/7V7BsFUYOYFSNnBrXhvbvXtZOtteX65V0r1+RJJX5OK+PAPhZ57T1LEmHMggdo5kli3Nr1KFQ==</X509Certificate> |
||||
|
</X509Data> |
||||
|
</KeyInfo> |
||||
|
</Signature> |
||||
|
</Rps> |
||||
|
</ListaRps> |
||||
|
</LoteRps> |
||||
|
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="Ass_lote"> |
||||
|
<SignedInfo> |
||||
|
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" /> |
||||
|
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> |
||||
|
<Reference URI="#lote"> |
||||
|
<Transforms> |
||||
|
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> |
||||
|
</Transforms> |
||||
|
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> |
||||
|
<DigestValue>n42EhtzDSnZ071g+44ZMBCc74UQ=</DigestValue> |
||||
|
</Reference> |
||||
|
</SignedInfo> |
||||
|
<SignatureValue>pQyeXnJ2S9KyUJ1BE3k3PZuDpk7WkD2nMPLoELSLJeNBe9TwmLhImsIUS4inAUreuTsjfrs2BUmChN6jPA0/1cSR0GbblLsHFN+IwPE2dnPN/u0vIOmsan4MuW1OnlH6KexmDHRj/uFwjoXfSJ0JJE1u9bYdbsp5LGlFuc//CCQ=</SignatureValue> |
||||
|
<KeyInfo> |
||||
|
<X509Data> |
||||
|
<X509Certificate>MIIE7DCCA9SgAwIBAgIQZMlLC9ZEsHWsnvJNdMI2yzANBgkqhkiG9w0BAQUFADBqMQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDEsMCoGA1UECxMjU2VjcmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwgLSBTUkYxGDAWBgNVBAMTD0FDIFBST0RFTUdFIFNSRjAeFw0wNzEwMzEwMDAwMDBaFw0xMDEwMzAyMzU5NTlaMIGQMQswCQYDVQQGEwJCUjETMBEGA1UEChQKSUNQLUJyYXNpbDEqMCgGA1UECxQhU2VjcmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwtU1JGMRIwEAYDVQQLFAlTUkYgZS1DUEYxLDAqBgNVBAMTI0VER0FSIERPIENBUk1PIEZFUlJFSVJBOjQzMjYwMTUyNjg3MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6M+9XT5KLQN3IH8mAr+S6vxiochY/EwF8EhtNoxPTYl+zr0Dh+eZsRG31bN410nr2OrwncrRorMK8Ngq+j3FnNF0nIMigaaa5NAEfIk3Yy4kuqrTUZBpqUJvCqc3mkF3C3XD0MTmtbVTWCvYIk+qn3t5ShHyMnQcuah5Q0ItSbQIDAQABo4IB6TCCAeUwgZUGA1UdEQSBjTCBiqA9BgVgTAEDAaA0BDIyMTAzMTk2NDQzMjYwMTUyNjg3MDAwMDAwMDAwMDAwMDAwMDBNLTI4ODQwODVTU1BNR6AXBgVgTAEDBqAOBAwwMDAwMDAwMDAwMDCgHgYFYEwBAwWgFQQTMDAwMDAwMDAwMDAwMDAwMDAwMIEQZWRnYXJAcGJoLmdvdi5icjAJBgNVHRMEAjAAMF8GA1UdHwRYMFYwVKBSoFCGTmh0dHA6Ly9pY3AtYnJhc2lsLmNlcnRpc2lnbi5jb20uYnIvcmVwb3NpdG9yaW8vbGNyL0FDUFJPREVNR0VTUkYvTGF0ZXN0Q1JMLmNybDAfBgNVHSMEGDAWgBTdO9vtjZcRRUMBQ020Ev0O7niacDAOBgNVHQ8BAf8EBAMCBeAwVQYDVR0gBE4wTDBKBgZgTAECAxQwQDA+BggrBgEFBQcCARYyaHR0cDovL2ljcC1icmFzaWwuY2VydGlzaWduLmNvbS5ici9yZXBvc2l0b3Jpby9kcGMwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMCMDgGCCsGAQUFBwEBBCwwKjAoBggrBgEFBQcwAYYcaHR0cDovL29jc3AuY2VydGlzaWduLmNvbS5icjANBgkqhkiG9w0BAQUFAAOCAQEAYFcjZj4lGVEREHBaHtcRletWS6/mvpkxmodwj3ele5yXsxuqSZd7ebHbKewXx7gkyaWFkFAxFanQhls2tYKjg6haqt2b0AO1FsitVIHkMcxRwkU9G+1ec8yfdxymra2VdXazkxuvqKABgxkqKnaFdHjje7cjWDgwparymH64mTlHkSQz59GutJW0xfwBHcMGx0/9/iIug6pfMQivWf0NMVpFNzxO5ZNPEuOeBhVDxQr4+KB+4B9xDai/3J6f42UNbSy+z3xuB0K8/7V7BsFUYOYFSNnBrXhvbvXtZOtteX65V0r1+RJJX5OK+PAPhZ57T1LEmHMggdo5kli3Nr1KFQ==</X509Certificate> |
||||
|
</X509Data> |
||||
|
</KeyInfo> |
||||
|
</Signature> |
||||
|
</EnviarLoteRpsEnvio> |
||||
@ -0,0 +1,112 @@ |
|||||
|
<Rps> |
||||
|
<InfRps Id="rps:{{ rps.numero }}{{ rps.serie }}"> |
||||
|
<IdentificacaoRps> |
||||
|
<Numero>{{ rps.numero }}</Numero> |
||||
|
<Serie>{{ rps.serie }}</Serie> |
||||
|
<Tipo>{{ rps.tipo_rps }}</Tipo> |
||||
|
</IdentificacaoRps> |
||||
|
<DataEmissao>{{ rps.data_emissao }}</DataEmissao> |
||||
|
<NaturezaOperacao>{{ rps.natureza_operacao }}</NaturezaOperacao> |
||||
|
<RegimeEspecialTributacao>{{ rps.regime_tributacao }}</RegimeEspecialTributacao> |
||||
|
<OptanteSimplesNacional>{{ rps.optante_simples }}</OptanteSimplesNacional> |
||||
|
<IncentivadorCultural>{{ rps.incentivador_cultural }}</IncentivadorCultural> |
||||
|
<Status>{{ rps.status }}</Status> |
||||
|
<Servico> |
||||
|
<Valores> |
||||
|
<ValorServicos>{{ rps.servico.valor_servico }}</ValorServicos> |
||||
|
<ValorPis>{{ rps.servico.pis }}</ValorPis> |
||||
|
<ValorCofins>{{ rps.servico.cofins }}</ValorCofins> |
||||
|
<ValorInss>{{ rps.servico.inss }}</ValorInss> |
||||
|
<ValorIr>{{ rps.servico.ir }}</ValorIr> |
||||
|
<ValorCsll>{{ rps.servico.csll }}</ValorCsll> |
||||
|
<IssRetido>{{ rps.servico.iss_retido }}</IssRetido> |
||||
|
<ValorIss>{{ rps.servico.iss }}</ValorIss> |
||||
|
<OutrasRetencoes>{{ rps.servico.retencoes }}</OutrasRetencoes> |
||||
|
<BaseCalculo>{{ rps.servico.base_calculo }}</BaseCalculo> |
||||
|
<Aliquota>{{ rps.servico.aliquota }}</Aliquota> |
||||
|
</Valores> |
||||
|
<ItemListaServico>{{ rps.servico.codigo_servico }}</ItemListaServico> |
||||
|
<CodigoCnae>{{ rps.servico.cnae_servico }}</CodigoCnae> |
||||
|
<Discriminacao>{{ rps.servico.discriminacao }}</Discriminacao> |
||||
|
<CodigoMunicipio>{{ rps.servico.codigo_municipio }}</CodigoMunicipio> |
||||
|
</Servico> |
||||
|
<Prestador> |
||||
|
<Cnpj>{{ rps.prestador.cnpj }}</Cnpj> |
||||
|
<InscricaoMunicipal>{{ rps.prestador.inscricao_municipal }}</InscricaoMunicipal> |
||||
|
<RazaoSocial>{{ rps.prestador.razaosocial }}</RazaoSocial> |
||||
|
<NomeFantasia>{{ rps.prestador.fantasia }}</NomeFantasia> |
||||
|
<Endereco> |
||||
|
<Endereco>{{ rps.prestador.endereco }}</Endereco> |
||||
|
<Numero>{{ rps.prestador.numero }}</Numero> |
||||
|
<Complemento>{{ rps.prestador.complemento }}</Complemento> |
||||
|
<Bairro>{{ rps.prestador.bairro }}</Bairro> |
||||
|
<CodigoMunicipio>{{ rps.prestador.codigomunicipal }}</CodigoMunicipio> |
||||
|
<Uf>{{ rps.prestador.uf }}</Uf> |
||||
|
<Cep>{{ rps.prestador.cep }}</Cep> |
||||
|
</Endereco> |
||||
|
<Contato> |
||||
|
{% if rps.prestador.telefone is defined -%} |
||||
|
<Telefone>{{ rps.prestador.telefone }}</Telefone> |
||||
|
{% endif %} |
||||
|
{% if rps.prestador.email is defined -%} |
||||
|
<Email>{{ rps.prestador.email }}</Email> |
||||
|
{% endif %} |
||||
|
</Contato> |
||||
|
</Prestador> |
||||
|
<Tomador> |
||||
|
<IdentificacaoTomador> |
||||
|
<CpfCnpj> |
||||
|
{% if rps.tomador.cpf_cnpj|length == 14 %} |
||||
|
<Cnpj>{{ rps.tomador.cpf_cnpj }}</Cnpj> |
||||
|
{% endif %} |
||||
|
{% if rps.tomador.cpf_cnpj|length == 11 %} |
||||
|
<Cpf>{{ rps.tomador.cpf_cnpj }}</Cpf> |
||||
|
{% endif %} |
||||
|
</CpfCnpj> |
||||
|
{% if rps.tomador.inscricao_municipal is defined -%} |
||||
|
<InscricaoMunicipal>{{ rps.tomador.inscricao_municipal }}</InscricaoMunicipal> |
||||
|
{% endif %} |
||||
|
</IdentificacaoTomador> |
||||
|
<RazaoSocial>{{ rps.tomador.razao_social }}</RazaoSocial> |
||||
|
<Endereco> |
||||
|
<Endereco>{{ rps.tomador.endereco }}</Endereco> |
||||
|
<Numero>{{ rps.tomador.numero }}</Numero> |
||||
|
<Complemento>{{ rps.tomador.complemento }}</Complemento> |
||||
|
<Bairro>{{ rps.tomador.bairro }}</Bairro> |
||||
|
<CodigoMunicipio>{{ rps.tomador.codigo_municipio }}</CodigoMunicipio> |
||||
|
<Uf>{{ rps.tomador.uf }}</Uf> |
||||
|
<Cep>{{ rps.tomador.cep }}</Cep> |
||||
|
</Endereco> |
||||
|
<Contato> |
||||
|
{% if rps.tomador.telefone is defined -%} |
||||
|
<Telefone>{{ rps.tomador.telefone }}</Telefone> |
||||
|
{% endif %} |
||||
|
{% if rps.tomador.email is defined -%} |
||||
|
<Email>{{ rps.tomador.email }}</Email> |
||||
|
{% endif %} |
||||
|
</Contato> |
||||
|
{% if rps.tomador.orgao_gerador is defined -%} |
||||
|
<OrgaoGerador> |
||||
|
<CodigoMunicipio>{{ rps.tomador.orgao_gerador.codigo_municipio }}</CodigoMunicipio> |
||||
|
<Uf>{{ rps.tomador.orgao_gerador.uf }}</Uf> |
||||
|
</OrgaoGerador> |
||||
|
{% endif %} |
||||
|
</Tomador> |
||||
|
{% if rps.intermediario is defined -%} |
||||
|
<IntermediarioServico> |
||||
|
<RazaoSocial>{{ rps.intermediario.razao_social }}</RazaoSocial> |
||||
|
<CpfCnpj> |
||||
|
<Cnpj>{{ rps.intermediario.cnpj }}</Cnpj> |
||||
|
</CpfCnpj> |
||||
|
<InscricaoMunicipal>{{ rps.intermediario.inscricao_municipal }}</InscricaoMunicipal> |
||||
|
</IntermediarioServico> |
||||
|
{% endif %} |
||||
|
{% if rps.construcao_civil is defined -%} |
||||
|
<ContrucaoCivil> |
||||
|
<CodigoObra>{{ rps.construcao_civil.codigo_obra }}</CodigoObra> |
||||
|
<Art>{{ rps.construcao_civil.art }}</Art> |
||||
|
</ContrucaoCivil> |
||||
|
{% endif %} |
||||
|
</InfRps> |
||||
|
<Signature Id="placeholder"></Signature> |
||||
|
</Rps> |
||||
@ -0,0 +1,3 @@ |
|||||
|
<cabecalho versao="2.01" xmlns="http://www.abrasf.org.br/nfse.xsd"> |
||||
|
<versaoDados>2.01</versaoDados> |
||||
|
</cabecalho> |
||||
@ -0,0 +1,15 @@ |
|||||
|
<CancelarNfseEnvio xmlns="http://nfse.abrasf.org.br"> |
||||
|
<Pedido> |
||||
|
<InfPedidoCancelamento Id="1"> |
||||
|
<IdentificacaoNfse> |
||||
|
<Numero>{{ cancelamento.numero_nfse }}</Numero> |
||||
|
<CpfCnpj> |
||||
|
<Cnpj>{{ cancelamento.cnpj_prestador }}</Cnpj> |
||||
|
</CpfCnpj> |
||||
|
<InscricaoMunicipal>{{ cancelamento.inscricao_municipal }}</InscricaoMunicipal> |
||||
|
<CodigoMunicipio>{{ cancelamento.cidade }}</CodigoMunicipio> |
||||
|
</IdentificacaoNfse> |
||||
|
<CodigoCancelamento>{{ cancelamento.codigo_cancelamento }}</CodigoCancelamento> |
||||
|
</InfPedidoCancelamento> |
||||
|
</Pedido> |
||||
|
</CancelarNfseEnvio> |
||||
@ -0,0 +1,7 @@ |
|||||
|
<ConsultarLoteRpsEnvio xmlns="http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd"> |
||||
|
<Prestador> |
||||
|
<Cnpj>{{ consulta.cnpj_prestador }}</Cnpj> |
||||
|
<InscricaoMunicipal>{{ consulta.inscricao_municipal }}</InscricaoMunicipal> |
||||
|
</Prestador> |
||||
|
<Protocolo>{{ consulta.protocolo }}</Protocolo> |
||||
|
</ConsultarLoteRpsEnvio> |
||||
@ -0,0 +1,11 @@ |
|||||
|
<EnviarLoteRpsEnvio xmlns="http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd"> |
||||
|
<LoteRps Id="lote"> |
||||
|
<NumeroLote>{{ nfse.numero_lote }}</NumeroLote> |
||||
|
<Cnpj>{{ nfse.cnpj_prestador }}</Cnpj> |
||||
|
<InscricaoMunicipal>{{ nfse.inscricao_municipal }}</InscricaoMunicipal> |
||||
|
<QuantidadeRps>{{ nfse.lista_rps|length }}</QuantidadeRps> |
||||
|
<ListaRps> |
||||
|
{{lote}} |
||||
|
</ListaRps> |
||||
|
</LoteRps> |
||||
|
</EnviarLoteRpsEnvio> |
||||
@ -0,0 +1,4 @@ |
|||||
|
pytest==5.3.4 |
||||
|
pytest-cov==2.8.1 |
||||
|
black==19.10b0 |
||||
|
flake8==3.7.9 |
||||
@ -0,0 +1,154 @@ |
|||||
|
<?xml version="1.0" ?> |
||||
|
<EnviarLoteRpsEnvio xmlns="http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd"> |
||||
|
<LoteRps Id="lote"> |
||||
|
<NumeroLote>1</NumeroLote> |
||||
|
<Cnpj>24533572000102</Cnpj> |
||||
|
<InscricaoMunicipal>2143992</InscricaoMunicipal> |
||||
|
<QuantidadeRps>1</QuantidadeRps> |
||||
|
<ListaRps> |
||||
|
<Rps> |
||||
|
<InfRps Id="rps:1UNICA"> |
||||
|
<IdentificacaoRps> |
||||
|
<Numero>1</Numero> |
||||
|
<Serie>UNICA</Serie> |
||||
|
<Tipo>1</Tipo> |
||||
|
</IdentificacaoRps> |
||||
|
<DataEmissao>2010-06-16T21:00:00</DataEmissao> |
||||
|
<NaturezaOperacao>1</NaturezaOperacao> |
||||
|
<RegimeEspecialTributacao>1</RegimeEspecialTributacao> |
||||
|
<OptanteSimplesNacional>1</OptanteSimplesNacional> |
||||
|
<IncentivadorCultural>2</IncentivadorCultural> |
||||
|
<Status>1</Status> |
||||
|
<Servico> |
||||
|
<Valores> |
||||
|
<ValorServicos>1.00</ValorServicos> |
||||
|
<ValorPis>0</ValorPis> |
||||
|
<ValorCofins>0</ValorCofins> |
||||
|
<ValorInss>0</ValorInss> |
||||
|
<ValorIr>0</ValorIr> |
||||
|
<ValorCsll>0</ValorCsll> |
||||
|
<IssRetido>2</IssRetido> |
||||
|
<ValorIss>2</ValorIss> |
||||
|
<OutrasRetencoes>2</OutrasRetencoes> |
||||
|
<BaseCalculo>0.00</BaseCalculo> |
||||
|
<Aliquota>2</Aliquota> |
||||
|
</Valores> |
||||
|
<ItemListaServico>01.07</ItemListaServico> |
||||
|
<CodigoCnae>6209100</CodigoCnae> |
||||
|
<Discriminacao>Sistema NFSe</Discriminacao> |
||||
|
<CodigoMunicipio>2408102</CodigoMunicipio> |
||||
|
</Servico> |
||||
|
<Prestador> |
||||
|
<Cnpj>24533572000102</Cnpj> |
||||
|
<InscricaoMunicipal>2143992</InscricaoMunicipal> |
||||
|
</Prestador> |
||||
|
<Tomador> |
||||
|
<IdentificacaoTomador> |
||||
|
<CpfCnpj> |
||||
|
<Cnpj>01812418000166</Cnpj> |
||||
|
</CpfCnpj> |
||||
|
<InscricaoMunicipal>2143992</InscricaoMunicipal> |
||||
|
</IdentificacaoTomador> |
||||
|
<RazaoSocial>MARIO</RazaoSocial> |
||||
|
<Endereco> |
||||
|
<Endereco>RUA GROBEIRO</Endereco> |
||||
|
<Numero>128</Numero> |
||||
|
<Complemento>ANDAR 14</Complemento> |
||||
|
<Bairro>Lagoa Nova</Bairro> |
||||
|
<CodigoMunicipio>3159506</CodigoMunicipio> |
||||
|
<Uf>BH</Uf> |
||||
|
<Cep>30160010</Cep> |
||||
|
</Endereco> |
||||
|
<Contato> |
||||
|
<Email>mario@email.com.br</Email> |
||||
|
</Contato> |
||||
|
</Tomador> |
||||
|
</InfRps> |
||||
|
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> |
||||
|
<SignedInfo> |
||||
|
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/> |
||||
|
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> |
||||
|
<Reference URI="#rps:1UNICA"> |
||||
|
<Transforms> |
||||
|
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> |
||||
|
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/> |
||||
|
</Transforms> |
||||
|
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> |
||||
|
<DigestValue>CqxPWMfRKwecg6TEoFNA82URG5I=</DigestValue> |
||||
|
</Reference> |
||||
|
</SignedInfo> |
||||
|
<SignatureValue>DIzLfhkM5HaOEMqHZcOXgAnHahgLuvtRF/ArPPyYKT/Dg0sg+ia/MjNchc2pH/eTOiqgj5s5UkxXgYBYHKVSuIvMfDqE+IYEanTYxzDqUhVwBlq4Vv9b8hNuE41D/qWCiC8zJswuOS8bPm+jHntFM/Fr7b6LAZV2Zuc5ITaCrkmRvKZ7HHhsffPk6gkb/NdzwdsYf8nSEbiFhujTXUswqkDWzQYxnwvp0ElU1Ev2SjqDG/oU0EG7vWMhuOP3wyDqVxF75cnEKW9RY1joiTxeiSBsYnivYC8t44MuHk9LAKaB17edlIEta+4MC9bAAmj2mkKxdJJJXjYHJLfw4WCJmg==</SignatureValue> |
||||
|
<KeyInfo> |
||||
|
<X509Data> |
||||
|
<X509Certificate>MIIIMTCCBhmgAwIBAgIIDBYcAk2MYI0wDQYJKoZIhvcNAQELBQAwcjELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxNjA0BgNVBAsTLVNlY3JldGFyaWEgZGEgUmVjZWl0YSBGZWRlcmFsIGRvIEJyYXNpbCAtIFJGQjEWMBQGA1UEAxMNQUMgT05MSU5FIFJGQjAeFw0xOTA5MTgwMDAwMjZaFw0yMDA5MTcwMDAwMjZaMIIBADELMAkGA1UEBhMCQlIxCzAJBgNVBAgMAlJOMQ4wDAYDVQQHDAVOQVRBTDETMBEGA1UECgwKSUNQLUJyYXNpbDE2MDQGA1UECwwtU2VjcmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwgZG8gQnJhc2lsIC0gUkZCMRYwFAYDVQQLDA1SRkIgZS1DTlBKIEExMSIwIAYDVQQLDBlBUiBTT0xJTU9FUyBDRVJUSUZJQ0FET1JBMRcwFQYDVQQLDA4yMjc1OTUzMTAwMDEwMzEyMDAGA1UEAwwpVFNNWCBTRVJWSUNPUyBERSBUSSBFSVJFTEk6MjM4MDkwNzAwMDAxOTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDJ9LXn3SvQ02Gx9+aGiQh3cJ9A7J7w2eOWRVcjYo147tTsVNbpbJM56D5rvQ4uYLYTGEg9gnWRs/xkg/WwKmbC/ax3j/tJG62Boj8DF1QoGkiVfSOQbCYXnO9nDZ7fKRwUKXkLnpjNGnsZr/FIt6U3nNv/HJ5uwfmHRi3NPeMIkyQR+HogOUWChu8ZJz2quQu4tpNePV3GhW4h0o0Ggoq2YTIRhAidobjq7FWCu2jYkTEZ08h5fLn2bMLhaUgO1iBoJjzE1nD1C5wat4arxtzIz25q8lytp21q1kFD/Lkyh+RMjbngqeS8IBBrnMi0zeartgxtOKSdQD7PXzHFcuzzAgMBAAGjggM5MIIDNTCBoQYIKwYBBQUHAQEEgZQwgZEwXAYIKwYBBQUHMAKGUGh0dHA6Ly9pY3AtYnJhc2lsLnZwa2kudmFsaWRjZXJ0aWZpY2Fkb3JhLmNvbS5ici9hYy1vbmxpbmVyZmIvYWMtb25saW5lcmZidjIucDdiMDEGCCsGAQUFBzABhiVodHRwOi8vb2NzcC52YWxpZGNlcnRpZmljYWRvcmEuY29tLmJyMAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAUkZp2jCuokxiYmHoD5MvstbAZJ/8wdQYDVR0gBG4wbDBqBgZgTAECATcwYDBeBggrBgEFBQcCARZSaHR0cDovL2ljcC1icmFzaWwudnBraS52YWxpZGNlcnRpZmljYWRvcmEuY29tLmJyL2FjLW9ubGluZXJmYi9kcGMtYWMtb25saW5lcmZiLnBkZjCCAQYGA1UdHwSB/jCB+zBVoFOgUYZPaHR0cDovL2ljcC1icmFzaWwudmFsaWRjZXJ0aWZpY2Fkb3JhLmNvbS5ici9hYy1vbmxpbmVyZmIvbGNyLWFjLW9ubGluZXJmYnYyLmNybDBWoFSgUoZQaHR0cDovL2ljcC1icmFzaWwyLnZhbGlkY2VydGlmaWNhZG9yYS5jb20uYnIvYWMtb25saW5lcmZiL2xjci1hYy1vbmxpbmVyZmJ2Mi5jcmwwSqBIoEaGRGh0dHA6Ly9yZXBvc2l0b3Jpby5pY3BicmFzaWwuZ292LmJyL2xjci9WQUxJRC9sY3ItYWMtb25saW5lcmZidjIuY3JsMA4GA1UdDwEB/wQEAwIF4DAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgbIGA1UdEQSBqjCBp4ERdGhpYWdvQHNncC5uZXQuYnKgOAYFYEwBAwSgLwQtMDMwNjE5ODQwNTQ5NzkyODQ4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwoCQGBWBMAQMCoBsEGVRISUFHTyBTQU1QQUlPIE1PTlRFTkVHUk+gGQYFYEwBAwOgEAQOMjM4MDkwNzAwMDAxOTCgFwYFYEwBAwegDgQMMDAwMDAwMDAwMDAwMA0GCSqGSIb3DQEBCwUAA4ICAQC+cp3UMxJPgs5JYHJmCJrCAw4qq4BMH7JWDUufvhiYKkWfWfhLMRidqRcPez+6u0EML5riw7uH3NoF/Byw5v8RY5/8diI7d5TB/SsM8wl9De3BiL5n9cC2oK5yF+OfvTFdMYPx7VnlGpVjeEEDAcflrX2zM6u6D/Me2xu0g0YnbLhYKcjjXBlmkm2fZrn0fo8te4OanvYMDbCiP1MROQUk95hxzn5/dZ8OdLuZ2Q+GwLGADKV4p6CEy6U8U/1Hi2Dt+py2hphRbGHdP/QB59dxayQSYEq38HSsdbgNnWrRe0L8W2xkoAkq2a0U0rW3sKae5dlrHs9hIsXrgDXHFl58snjTatz5g17IJ704ztshroRiWCiyJOsP12yvc8ildHN/u9li2YBxBr/9F3O3k2MKHYdVe10VNZMtmlhBcUlrC/bECbrJF/uIfGk5UMC9Tx8ROYsI8Rsfs1fS8KnjlOPav6ikoZUnHsZiU75Dp/9i9wxf5txPzjCEqG7UwjXEATC2ldlF+F1ZUbmREydeLcAHZu5eMBoRiNvl41E5LHbAfs42cnpI7QXbiqN30EcNkCVtYlcy04q00fJ4CnI1WANuslfa6srLnaiWVUSCeYiDBK3FS+mwa8ixT7MjhKs/6BOBoYlaDzZm242gbvh1eG8/XcDjT4BAGr5aA/cHnjEiXw==</X509Certificate> |
||||
|
</X509Data> |
||||
|
</KeyInfo> |
||||
|
</Signature> |
||||
|
</Rps> |
||||
|
</ListaRps> |
||||
|
</LoteRps> |
||||
|
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> |
||||
|
<SignedInfo> |
||||
|
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/> |
||||
|
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> |
||||
|
<Reference URI="#lote"> |
||||
|
<Transforms> |
||||
|
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> |
||||
|
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/> |
||||
|
</Transforms> |
||||
|
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> |
||||
|
<DigestValue>3OyPtYPIjU7Vm5azBnCaQVBCBxM=</DigestValue> |
||||
|
</Reference> |
||||
|
</SignedInfo> |
||||
|
<SignatureValue>psdrJW0dE9bnGbK5UJchL/h4vRm5HUWPzkkX4LbCLJopsOAdR0l0M787njoX7b4tWwrPysgdNWfhGngNoiD6iVqXyNhbuHZftUJIlDUudAHIxjhrMJdiNVXQDz8lBYzOta8HMMGQqHzzEg6DCVSZ1zeF5D2Nu2I7UL12P3jTDPtrapLC0YHxcRamGcG48I5tMo1qCKPxtkePkwx13PahkET+aExnb+5sexl+nhzfFJIKC0mfIRtoLyLEidNxalzzfMLbDxwe6WGgJS66+VKOeYNL89Gn2yp17uMZdnS08a6tUKy8t7sZt9W3ktrrjCofRlkwK8dq8jsh/GIw8hXLkg==</SignatureValue> |
||||
|
<KeyInfo> |
||||
|
<X509Data> |
||||
|
<X509Certificate>MIIIMTCCBhmgAwIBAgIIDBYcAk2MYI0wDQYJKoZIhvcNAQELBQAwcjELMAkGA1UE |
||||
|
BhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxNjA0BgNVBAsTLVNlY3JldGFyaWEg |
||||
|
ZGEgUmVjZWl0YSBGZWRlcmFsIGRvIEJyYXNpbCAtIFJGQjEWMBQGA1UEAxMNQUMg |
||||
|
T05MSU5FIFJGQjAeFw0xOTA5MTgwMDAwMjZaFw0yMDA5MTcwMDAwMjZaMIIBADEL |
||||
|
MAkGA1UEBhMCQlIxCzAJBgNVBAgMAlJOMQ4wDAYDVQQHDAVOQVRBTDETMBEGA1UE |
||||
|
CgwKSUNQLUJyYXNpbDE2MDQGA1UECwwtU2VjcmV0YXJpYSBkYSBSZWNlaXRhIEZl |
||||
|
ZGVyYWwgZG8gQnJhc2lsIC0gUkZCMRYwFAYDVQQLDA1SRkIgZS1DTlBKIEExMSIw |
||||
|
IAYDVQQLDBlBUiBTT0xJTU9FUyBDRVJUSUZJQ0FET1JBMRcwFQYDVQQLDA4yMjc1 |
||||
|
OTUzMTAwMDEwMzEyMDAGA1UEAwwpVFNNWCBTRVJWSUNPUyBERSBUSSBFSVJFTEk6 |
||||
|
MjM4MDkwNzAwMDAxOTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDJ |
||||
|
9LXn3SvQ02Gx9+aGiQh3cJ9A7J7w2eOWRVcjYo147tTsVNbpbJM56D5rvQ4uYLYT |
||||
|
GEg9gnWRs/xkg/WwKmbC/ax3j/tJG62Boj8DF1QoGkiVfSOQbCYXnO9nDZ7fKRwU |
||||
|
KXkLnpjNGnsZr/FIt6U3nNv/HJ5uwfmHRi3NPeMIkyQR+HogOUWChu8ZJz2quQu4 |
||||
|
tpNePV3GhW4h0o0Ggoq2YTIRhAidobjq7FWCu2jYkTEZ08h5fLn2bMLhaUgO1iBo |
||||
|
JjzE1nD1C5wat4arxtzIz25q8lytp21q1kFD/Lkyh+RMjbngqeS8IBBrnMi0zear |
||||
|
tgxtOKSdQD7PXzHFcuzzAgMBAAGjggM5MIIDNTCBoQYIKwYBBQUHAQEEgZQwgZEw |
||||
|
XAYIKwYBBQUHMAKGUGh0dHA6Ly9pY3AtYnJhc2lsLnZwa2kudmFsaWRjZXJ0aWZp |
||||
|
Y2Fkb3JhLmNvbS5ici9hYy1vbmxpbmVyZmIvYWMtb25saW5lcmZidjIucDdiMDEG |
||||
|
CCsGAQUFBzABhiVodHRwOi8vb2NzcC52YWxpZGNlcnRpZmljYWRvcmEuY29tLmJy |
||||
|
MAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAUkZp2jCuokxiYmHoD5MvstbAZJ/8wdQYD |
||||
|
VR0gBG4wbDBqBgZgTAECATcwYDBeBggrBgEFBQcCARZSaHR0cDovL2ljcC1icmFz |
||||
|
aWwudnBraS52YWxpZGNlcnRpZmljYWRvcmEuY29tLmJyL2FjLW9ubGluZXJmYi9k |
||||
|
cGMtYWMtb25saW5lcmZiLnBkZjCCAQYGA1UdHwSB/jCB+zBVoFOgUYZPaHR0cDov |
||||
|
L2ljcC1icmFzaWwudmFsaWRjZXJ0aWZpY2Fkb3JhLmNvbS5ici9hYy1vbmxpbmVy |
||||
|
ZmIvbGNyLWFjLW9ubGluZXJmYnYyLmNybDBWoFSgUoZQaHR0cDovL2ljcC1icmFz |
||||
|
aWwyLnZhbGlkY2VydGlmaWNhZG9yYS5jb20uYnIvYWMtb25saW5lcmZiL2xjci1h |
||||
|
Yy1vbmxpbmVyZmJ2Mi5jcmwwSqBIoEaGRGh0dHA6Ly9yZXBvc2l0b3Jpby5pY3Bi |
||||
|
cmFzaWwuZ292LmJyL2xjci9WQUxJRC9sY3ItYWMtb25saW5lcmZidjIuY3JsMA4G |
||||
|
A1UdDwEB/wQEAwIF4DAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgbIG |
||||
|
A1UdEQSBqjCBp4ERdGhpYWdvQHNncC5uZXQuYnKgOAYFYEwBAwSgLwQtMDMwNjE5 |
||||
|
ODQwNTQ5NzkyODQ4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwoCQGBWBMAQMC |
||||
|
oBsEGVRISUFHTyBTQU1QQUlPIE1PTlRFTkVHUk+gGQYFYEwBAwOgEAQOMjM4MDkw |
||||
|
NzAwMDAxOTCgFwYFYEwBAwegDgQMMDAwMDAwMDAwMDAwMA0GCSqGSIb3DQEBCwUA |
||||
|
A4ICAQC+cp3UMxJPgs5JYHJmCJrCAw4qq4BMH7JWDUufvhiYKkWfWfhLMRidqRcP |
||||
|
ez+6u0EML5riw7uH3NoF/Byw5v8RY5/8diI7d5TB/SsM8wl9De3BiL5n9cC2oK5y |
||||
|
F+OfvTFdMYPx7VnlGpVjeEEDAcflrX2zM6u6D/Me2xu0g0YnbLhYKcjjXBlmkm2f |
||||
|
Zrn0fo8te4OanvYMDbCiP1MROQUk95hxzn5/dZ8OdLuZ2Q+GwLGADKV4p6CEy6U8 |
||||
|
U/1Hi2Dt+py2hphRbGHdP/QB59dxayQSYEq38HSsdbgNnWrRe0L8W2xkoAkq2a0U |
||||
|
0rW3sKae5dlrHs9hIsXrgDXHFl58snjTatz5g17IJ704ztshroRiWCiyJOsP12yv |
||||
|
c8ildHN/u9li2YBxBr/9F3O3k2MKHYdVe10VNZMtmlhBcUlrC/bECbrJF/uIfGk5 |
||||
|
UMC9Tx8ROYsI8Rsfs1fS8KnjlOPav6ikoZUnHsZiU75Dp/9i9wxf5txPzjCEqG7U |
||||
|
wjXEATC2ldlF+F1ZUbmREydeLcAHZu5eMBoRiNvl41E5LHbAfs42cnpI7QXbiqN3 |
||||
|
0EcNkCVtYlcy04q00fJ4CnI1WANuslfa6srLnaiWVUSCeYiDBK3FS+mwa8ixT7Mj |
||||
|
hKs/6BOBoYlaDzZm242gbvh1eG8/XcDjT4BAGr5aA/cHnjEiXw== |
||||
|
</X509Certificate> |
||||
|
</X509Data> |
||||
|
</KeyInfo> |
||||
|
</Signature> |
||||
|
</EnviarLoteRpsEnvio> |
||||
@ -1,47 +1,46 @@ |
|||||
# coding=utf-8 |
# coding=utf-8 |
||||
''' |
|
||||
|
""" |
||||
Created on Jun 14, 2015 |
Created on Jun 14, 2015 |
||||
|
|
||||
@author: danimar |
@author: danimar |
||||
''' |
|
||||
|
""" |
||||
import unittest |
import unittest |
||||
from pytrustnfe.Servidores import localizar_url, localizar_qrcode |
from pytrustnfe.Servidores import localizar_url, localizar_qrcode |
||||
|
|
||||
url_ba = 'https://nfe.sefaz.ba.gov.br/webservices/NFeAutorizacao4/NFeAutoriza\ |
|
||||
cao4.asmx?wsdl' |
|
||||
|
url_ba = "https://nfe.sefaz.ba.gov.br/webservices/NFeAutorizacao4/NFeAutoriza\ |
||||
|
cao4.asmx?wsdl" |
||||
|
|
||||
url_sp = 'https://nfe.fazenda.sp.gov.br/ws/nfeautorizacao4.asmx?wsdl' |
|
||||
|
url_sp = "https://nfe.fazenda.sp.gov.br/ws/nfeautorizacao4.asmx?wsdl" |
||||
|
|
||||
url_qrcode_homologacao_sp = 'https://homologacao.nfce.fazenda.sp.gov.br/NFCEConsultaPublica/Paginas/ConstultaQRCode.aspx' |
|
||||
|
url_qrcode_homologacao_sp = "https://homologacao.nfce.fazenda.sp.gov.br/NFCEConsultaPublica/Paginas/ConstultaQRCode.aspx" |
||||
|
|
||||
url_sc = 'https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx?wsdl' |
|
||||
|
url_sc = "https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx?wsdl" |
||||
|
|
||||
url_rs = 'https://nfe.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx?wsdl' |
|
||||
|
url_rs = "https://nfe.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx?wsdl" |
||||
|
|
||||
url_cad_rs = 'https://cad.sefazrs.rs.gov.br/ws/cadconsultacadastro/cadconsultacadastro4.asmx?wsdl' |
|
||||
|
url_cad_rs = "https://cad.sefazrs.rs.gov.br/ws/cadconsultacadastro/cadconsultacadastro4.asmx?wsdl" |
||||
|
|
||||
url_cad_sc = 'https://cad.svrs.rs.gov.br/ws/cadconsultacadastro/cadconsulta\ |
|
||||
cadastro4.asmx?wsdl' |
|
||||
|
url_cad_sc = "https://cad.svrs.rs.gov.br/ws/cadconsultacadastro/cadconsulta\ |
||||
|
cadastro4.asmx?wsdl" |
||||
|
|
||||
|
|
||||
class test_servidores(unittest.TestCase): |
class test_servidores(unittest.TestCase): |
||||
|
|
||||
def test_localizar_url(self): |
def test_localizar_url(self): |
||||
url = localizar_url('NfeAutorizacao', '29', ambiente=1) |
|
||||
|
url = localizar_url("NfeAutorizacao", "29", ambiente=1) |
||||
self.assertEqual(url, url_ba) |
self.assertEqual(url, url_ba) |
||||
url = localizar_url('NfeAutorizacao', '35', ambiente=1) |
|
||||
|
url = localizar_url("NfeAutorizacao", "35", ambiente=1) |
||||
self.assertEqual(url, url_sp) |
self.assertEqual(url, url_sp) |
||||
url = localizar_url('NfeAutorizacao', '42', ambiente=1) |
|
||||
|
url = localizar_url("NfeAutorizacao", "42", ambiente=1) |
||||
self.assertEqual(url, url_sc) |
self.assertEqual(url, url_sc) |
||||
url = localizar_url('NfeAutorizacao', '43', ambiente=1) |
|
||||
|
url = localizar_url("NfeAutorizacao", "43", ambiente=1) |
||||
self.assertEqual(url, url_rs) |
self.assertEqual(url, url_rs) |
||||
|
|
||||
url = localizar_url('NfeConsultaCadastro', '43', ambiente=2) |
|
||||
|
url = localizar_url("NfeConsultaCadastro", "43", ambiente=2) |
||||
self.assertEqual(url, url_cad_rs) |
self.assertEqual(url, url_cad_rs) |
||||
|
|
||||
url = localizar_url('NfeConsultaCadastro', '42', ambiente=2) |
|
||||
|
url = localizar_url("NfeConsultaCadastro", "42", ambiente=2) |
||||
self.assertEqual(url, url_cad_sc) |
self.assertEqual(url, url_cad_sc) |
||||
|
|
||||
def test_localizar_qrcode(self): |
def test_localizar_qrcode(self): |
||||
url = localizar_qrcode('35') |
|
||||
|
url = localizar_qrcode("35") |
||||
self.assertEqual(url, url_qrcode_homologacao_sp) |
self.assertEqual(url, url_qrcode_homologacao_sp) |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue