diff --git a/.gitignore b/.gitignore
index f171cd6..bc2bd78 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,4 @@ dist/
docs/_build
.vscode/tags
.cache/
+.pytest_cache/
diff --git a/pytrustnfe/Servidores.py b/pytrustnfe/Servidores.py
index 72a0573..ea570f1 100644
--- a/pytrustnfe/Servidores.py
+++ b/pytrustnfe/Servidores.py
@@ -2,43 +2,31 @@
# © 2016 Danimar Ribeiro
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-WS_NFE_AUTORIZACAO = 'NfeAutorizacao'
-WS_NFE_RET_AUTORIZACAO = 'NfeRetAutorizacao'
-WS_NFE_CANCELAMENTO = 'RecepcaoEventoCancelamento'
+# Consultas básicas da NF-e
WS_NFE_INUTILIZACAO = 'NfeInutilizacao'
-WS_NFE_CONSULTA = 'NfeConsulta2'
+WS_NFE_CONSULTA = 'NfeConsultaProtocolo'
WS_NFE_SITUACAO = 'NfeStatusServico'
-WS_NFE_CADASTRO = 'NfeConsultaCadastro'
-
-WS_NFCE_AUTORIZACAO = 'NfeAutorizacao'
-WS_NFCE_RET_AUTORIZACAO = 'NfeRetAutorizacao'
-WS_NFCE_CANCELAMENTO = 'RecepcaoEventoCancelamento'
-WS_NFCE_INUTILIZACAO = 'NfeInutilizacao'
-WS_NFCE_CONSULTA = 'NfeConsultaProtocolo'
-WS_NFCE_SITUACAO = 'NfeStatusServico'
-WS_NFCE_CADASTRO = 'NfeConsultaCadastro'
-WS_NFCE_RECEPCAO_EVENTO = 'RecepcaoEventoCarta'
-WS_NFCE_QR_CODE = 'NfeQRCode'
-WS_NFCE_CONSULTA_DESTINADAS = 'NfeConsultaDest',
-WS_NFCE_RET_AUTORIZACAO = 'NFeRetAutorizacao',
-
+WS_NFE_RECEPCAO_EVENTO = 'RecepcaoEvento'
+WS_NFE_AUTORIZACAO = 'NfeAutorizacao'
+WS_NFE_RET_AUTORIZACAO = 'NfeRetAutorizacao'
+# Alguns estados possuem essa consulta não todos
WS_NFE_CADASTRO = 'NfeConsultaCadastro'
-WS_DPEC_RECEPCAO = 'RecepcaoEventoEPEC'
-WS_DPEC_CONSULTA = 8
-WS_NFE_RECEPCAO_EVENTO = 'RecepcaoEventoCarta'
-WS_NFE_RECEPCAO_EVENTO_MANIFESTO = 'RecepcaoEventoManifesto'
+
+# Ambiente nacional
+WS_NFCE_QR_CODE = 'NfeQRCode'
+WS_NFCE_CONSULTA_DESTINADAS = 'NfeConsultaDest'
WS_DFE_DISTRIBUICAO = 'NFeDistribuicaoDFe'
WS_DOWNLOAD_NFE = 'nfeDistDFeInteresse'
-NFE_AMBIENTE_PRODUCAO = 1
-NFE_AMBIENTE_HOMOLOGACAO = 2
-NFCE_AMBIENTE_PRODUCAO = 1
-NFCE_AMBIENTE_HOMOLOGACAO = 2
+# Códigos do ambiente de homologação e produção
+AMBIENTE_PRODUCAO = 1
+AMBIENTE_HOMOLOGACAO = 2
-NFE_MODELO = u'55'
-NFCE_MODELO = u'65'
+# Modelos dos documentos eletrônicos
+NFE_MODELO = '55'
+NFCE_MODELO = '65'
SIGLA_ESTADO = {
'12': 'AC',
@@ -68,6 +56,7 @@ SIGLA_ESTADO = {
'28': 'SE',
'35': 'SP',
'17': 'TO',
+ '91': 'AN'
}
@@ -75,8 +64,7 @@ def localizar_url(servico, estado, mod='55', ambiente=2):
sigla = SIGLA_ESTADO[estado]
ws = ESTADO_WS[sigla]
- if servico in (WS_DFE_DISTRIBUICAO, WS_DOWNLOAD_NFE,
- WS_NFE_RECEPCAO_EVENTO_MANIFESTO):
+ if servico in (WS_DFE_DISTRIBUICAO, WS_DOWNLOAD_NFE):
ws = AN
if mod in ws:
@@ -97,11 +85,8 @@ def localizar_url(servico, estado, mod='55', ambiente=2):
def localizar_qrcode(estado, ambiente=2):
sigla = SIGLA_ESTADO[estado]
- dominio = ESTADO_WS[sigla]['65'][ambiente]['servidor']
- complemento = ESTADO_WS[sigla]['65'][ambiente][WS_NFCE_QR_CODE]
- if 'https://' in complemento:
- return complemento
- return "https://%s/%s" % (dominio, complemento)
+ ws_qrcode = ESTADO_WS[sigla][NFCE_MODELO][ambiente][WS_NFCE_QR_CODE]
+ return ws_qrcode
METODO_WS = {
@@ -123,7 +108,6 @@ METODO_WS = {
},
WS_NFE_SITUACAO: {
'webservice': 'NfeStatusServico2',
-
'metodo': 'nfeStatusServicoNF2',
},
WS_NFE_CADASTRO: {
@@ -137,45 +121,66 @@ METODO_WS = {
}
SVRS = {
- NFE_AMBIENTE_PRODUCAO: {
- 'servidor': 'nfe.svrs.rs.gov.br',
- WS_NFE_RECEPCAO_EVENTO: 'ws/recepcaoevento/recepcaoevento.asmx',
- WS_NFE_CANCELAMENTO: 'ws/recepcaoevento/recepcaoevento.asmx',
- WS_NFE_AUTORIZACAO: 'ws/NfeAutorizacao/NfeAutorizacao.asmx',
- WS_NFE_RET_AUTORIZACAO: 'ws/NfeRetAutorizacao/NfeRetAutorizacao.asmx',
- WS_NFE_CADASTRO: 'ws/CadConsultaCadastro/CadConsultaCadastro2.asmx',
- WS_NFE_INUTILIZACAO: 'ws/nfeinutilizacao/nfeinutilizacao2.asmx',
- WS_NFE_CONSULTA: 'ws/NfeConsulta/NfeConsulta2.asmx',
- WS_NFE_SITUACAO: 'ws/NfeStatusServico/NfeStatusServico2.asmx',
+ NFE_MODELO: {
+ AMBIENTE_PRODUCAO: {
+ 'servidor': 'nfe.svrs.rs.gov.br',
+ WS_NFE_INUTILIZACAO: 'ws/nfeinutilizacao/nfeinutilizacao4.asmx?wsdl', # noqa
+ WS_NFE_CONSULTA: 'ws/NfeConsulta/NfeConsulta4.asmx?wsdl',
+ WS_NFE_SITUACAO: 'ws/NfeStatusServico/NfeStatusServico4.asmx?wsdl',
+ WS_NFE_RECEPCAO_EVENTO: 'ws/recepcaoevento/recepcaoevento4.asmx?wsdl', # noqa
+ WS_NFE_AUTORIZACAO: 'ws/NfeAutorizacao/NFeAutorizacao4.asmx?wsdl',
+ WS_NFE_RET_AUTORIZACAO: 'ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx?wsdl', # noqa
+ WS_NFE_CADASTRO: 'ws/cadconsultacadastro/cadconsultacadastro2.asmx?wsdl', # noqa
+ },
+ AMBIENTE_HOMOLOGACAO: {
+ 'servidor': 'nfe-homologacao.svrs.rs.gov.br',
+ WS_NFE_INUTILIZACAO: 'ws/nfeinutilizacao/nfeinutilizacao4.asmx?wsdl', # noqa
+ WS_NFE_CONSULTA: 'ws/NfeConsulta/NfeConsulta4.asmx?wsdl',
+ WS_NFE_SITUACAO: 'ws/NfeStatusServico/NfeStatusServico4.asmx?wsdl',
+ WS_NFE_RECEPCAO_EVENTO: 'ws/recepcaoevento/recepcaoevento4.asmx?wsdl', # noqa
+ WS_NFE_AUTORIZACAO: 'ws/NfeAutorizacao/NFeAutorizacao4.asmx?wsdl',
+ WS_NFE_RET_AUTORIZACAO: 'ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx?wsdl', # noqa
+ WS_NFE_CADASTRO: 'ws/cadconsultacadastro/cadconsultacadastro2.asmx?wsdl', # noqa
+ }
},
- NFE_AMBIENTE_HOMOLOGACAO: {
- 'servidor': 'nfe-homologacao.svrs.rs.gov.br',
- WS_NFE_RECEPCAO_EVENTO: 'ws/recepcaoevento/recepcaoevento.asmx',
- WS_NFE_CANCELAMENTO: 'ws/recepcaoevento/recepcaoevento.asmx',
- WS_NFE_AUTORIZACAO: 'ws/NfeAutorizacao/NfeAutorizacao.asmx',
- WS_NFE_RET_AUTORIZACAO: 'ws/NfeRetAutorizacao/NfeRetAutorizacao.asmx',
- WS_NFE_CADASTRO: 'ws/CadConsultaCadastro/CadConsultaCadastro2.asmx',
- WS_NFE_INUTILIZACAO: 'ws/nfeinutilizacao/nfeinutilizacao2.asmx',
- WS_NFE_CONSULTA: 'ws/NfeConsulta/NfeConsulta2.asmx',
- WS_NFE_SITUACAO: 'ws/NfeStatusServico/NfeStatusServico2.asmx',
+ NFCE_MODELO: {
+ AMBIENTE_PRODUCAO: {
+ 'servidor': 'nfce.svrs.rs.gov.br',
+ WS_NFE_INUTILIZACAO: 'ws/nfeinutilizacao/nfeinutilizacao4.asmx?wsdl',
+ WS_NFE_CONSULTA: 'ws/NfeConsulta/NfeConsulta4.asmx?wsdl',
+ WS_NFE_SITUACAO: 'ws/NfeStatusServico/NfeStatusServico4.asmx?wsdl',
+ WS_NFE_RECEPCAO_EVENTO: 'ws/recepcaoevento/recepcaoevento4.asmx?wsdl',
+ WS_NFE_AUTORIZACAO: 'ws/NfeAutorizacao/NFeAutorizacao4.asmx?wsdl',
+ WS_NFE_RET_AUTORIZACAO: 'ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx?wsdl', # noqa
+ WS_NFCE_QR_CODE: 'http://dec.fazenda.df.gov.br/ConsultarNFCe.aspx',
+ },
+ AMBIENTE_HOMOLOGACAO: {
+ 'servidor': 'nfce-homologacao.svrs.rs.gov.br',
+ WS_NFE_INUTILIZACAO: 'ws/nfeinutilizacao/nfeinutilizacao4.asmx?wsdl',
+ WS_NFE_CONSULTA: 'ws/NfeConsulta/NfeConsulta4.asmx?wsdl',
+ WS_NFE_SITUACAO: 'ws/NfeStatusServico/NfeStatusServico4.asmx?wsdl',
+ WS_NFE_RECEPCAO_EVENTO: 'ws/recepcaoevento/recepcaoevento4.asmx?wsdl',
+ WS_NFE_AUTORIZACAO: 'ws/NfeAutorizacao/NFeAutorizacao4.asmx?wsdl',
+ WS_NFE_RET_AUTORIZACAO: 'ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx?wsdl', # noqa
+ WS_NFCE_QR_CODE: 'http://dec.fazenda.df.gov.br/ConsultarNFCe.aspx',
+ }
}
}
+# TODO Daqui pra frente tem que revisar
SVAN = {
- NFE_AMBIENTE_PRODUCAO: {
+ AMBIENTE_PRODUCAO: {
'servidor': 'www.sefazvirtual.fazenda.gov.br',
WS_NFE_RECEPCAO_EVENTO: 'RecepcaoEvento/RecepcaoEvento.asmx',
- WS_NFE_CANCELAMENTO: 'RecepcaoEvento/RecepcaoEvento.asmx',
WS_NFE_AUTORIZACAO: 'NfeAutorizacao/NfeAutorizacao.asmx',
WS_NFE_RET_AUTORIZACAO: 'NfeRetAutorizacao/NfeRetAutorizacao.asmx',
WS_NFE_INUTILIZACAO: 'NfeInutilizacao2/NfeInutilizacao2.asmx',
WS_NFE_CONSULTA: 'NfeConsulta2/NfeConsulta2.asmx',
WS_NFE_SITUACAO: 'NfeStatusServico2/NfeStatusServico2.asmx',
},
- NFE_AMBIENTE_HOMOLOGACAO: {
+ AMBIENTE_HOMOLOGACAO: {
'servidor': 'hom.sefazvirtual.fazenda.gov.br',
WS_NFE_RECEPCAO_EVENTO: 'RecepcaoEvento/RecepcaoEvento.asmx',
- WS_NFE_CANCELAMENTO: 'RecepcaoEvento/RecepcaoEvento.asmx',
WS_NFE_AUTORIZACAO: 'NfeAutorizacao/NfeAutorizacao.asmx',
WS_NFE_RET_AUTORIZACAO: 'NfeRetAutorizacao/NfeRetAutorizacao.asmx',
WS_NFE_INUTILIZACAO: 'NfeInutilizacao2/NfeInutilizacao2.asmx',
@@ -185,7 +190,7 @@ SVAN = {
}
SCAN = {
- NFE_AMBIENTE_PRODUCAO: {
+ AMBIENTE_PRODUCAO: {
'servidor': 'www.scan.fazenda.gov.br',
WS_NFE_RECEPCAO_EVENTO: 'RecepcaoEvento/RecepcaoEvento.asmx',
WS_NFE_AUTORIZACAO: 'NfeAutorizacao/NfeAutorizacao.asmx',
@@ -194,7 +199,7 @@ SCAN = {
WS_NFE_CONSULTA: 'NfeConsulta2/NfeConsulta2.asmx',
WS_NFE_SITUACAO: 'NfeStatusServico2/NfeStatusServico2.asmx'
},
- NFE_AMBIENTE_HOMOLOGACAO: {
+ AMBIENTE_HOMOLOGACAO: {
'servidor': 'hom.nfe.fazenda.gov.br',
WS_NFE_RECEPCAO_EVENTO: 'RecepcaoEvento/RecepcaoEvento.asmx',
WS_NFE_AUTORIZACAO: 'NfeAutorizacao/NfeAutorizacao.asmx',
@@ -206,7 +211,7 @@ SCAN = {
}
SVC_AN = {
- NFE_AMBIENTE_PRODUCAO: {
+ AMBIENTE_PRODUCAO: {
'servidor': 'www.svc.fazenda.gov.br',
WS_NFE_RECEPCAO_EVENTO: 'RecepcaoEvento/RecepcaoEvento.asmx',
WS_NFE_AUTORIZACAO: 'NfeAutorizacao/NfeAutorizacao.asmx',
@@ -214,7 +219,7 @@ SVC_AN = {
WS_NFE_CONSULTA: 'NfeConsulta2/NfeConsulta2.asmx',
WS_NFE_SITUACAO: 'NfeStatusServico2/NfeStatusServico2.asmx'
},
- NFE_AMBIENTE_HOMOLOGACAO: {
+ AMBIENTE_HOMOLOGACAO: {
'servidor': 'hom.nfe.fazenda.gov.br',
WS_NFE_RECEPCAO_EVENTO: 'RecepcaoEvento/RecepcaoEvento.asmx',
WS_NFE_AUTORIZACAO: 'NfeAutorizacao/NfeAutorizacao.asmx',
@@ -225,7 +230,7 @@ SVC_AN = {
}
SVC_RS = {
- NFE_AMBIENTE_PRODUCAO: {
+ AMBIENTE_PRODUCAO: {
'servidor': 'nfe.sefazvirtual.rs.gov.br',
WS_NFE_RECEPCAO_EVENTO: 'ws/recepcaoevento/recepcaoevento.asmx',
WS_NFE_AUTORIZACAO: 'ws/NfeAutorizacao/NfeAutorizacao.asmx',
@@ -233,7 +238,7 @@ SVC_RS = {
WS_NFE_CONSULTA: 'ws/NfeConsulta/NfeConsulta2.asmx',
WS_NFE_SITUACAO: 'ws/NfeStatusServico/NfeStatusServico2.asmx',
},
- NFE_AMBIENTE_HOMOLOGACAO: {
+ AMBIENTE_HOMOLOGACAO: {
'servidor': 'homologacao.nfe.sefazvirtual.rs.gov.br',
WS_NFE_RECEPCAO_EVENTO: 'ws/recepcaoevento/recepcaoevento.asmx',
WS_NFE_AUTORIZACAO: 'ws/NfeAutorizacao/NfeAutorizacao.asmx',
@@ -243,42 +248,26 @@ SVC_RS = {
}
}
-DPEC = {
- NFE_AMBIENTE_PRODUCAO: {
- 'servidor': 'www.nfe.fazenda.gov.br',
- WS_DPEC_CONSULTA: 'SCERecepcaoRFB/SCERecepcaoRFB.asmx',
- WS_DPEC_RECEPCAO: 'SCEConsultaRFB/SCEConsultaRFB.asmx'
- },
- NFE_AMBIENTE_HOMOLOGACAO: {
- 'servidor': 'hom.nfe.fazenda.gov.br',
- WS_DPEC_CONSULTA: 'SCERecepcaoRFB/SCERecepcaoRFB.asmx',
- WS_DPEC_RECEPCAO: 'SCEConsultaRFB/SCEConsultaRFB.asmx'
- }
-}
-
AN = {
- NFE_AMBIENTE_PRODUCAO: {
+ AMBIENTE_PRODUCAO: {
'servidor': 'www1.nfe.fazenda.gov.br',
- WS_NFE_RECEPCAO_EVENTO: 'RecepcaoEvento/RecepcaoEvento.asmx',
- WS_DFE_DISTRIBUICAO: 'NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx',
- WS_DOWNLOAD_NFE: 'NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx',
- WS_NFE_RECEPCAO_EVENTO_MANIFESTO: 'RecepcaoEvento/RecepcaoEvento.asmx',
+ WS_DFE_DISTRIBUICAO: 'NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx?wsdl',
+ WS_DOWNLOAD_NFE: 'NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx?wsdl',
+ WS_NFE_RECEPCAO_EVENTO: 'NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx?wsdl',
},
- NFE_AMBIENTE_HOMOLOGACAO: {
+ AMBIENTE_HOMOLOGACAO: {
'servidor': 'hom.nfe.fazenda.gov.br',
- WS_NFE_RECEPCAO_EVENTO: 'RecepcaoEvento/RecepcaoEvento.asmx',
- WS_DFE_DISTRIBUICAO: 'NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx',
- WS_DOWNLOAD_NFE: 'NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx',
- WS_NFE_RECEPCAO_EVENTO_MANIFESTO: 'RecepcaoEvento/RecepcaoEvento.asmx',
+ WS_DFE_DISTRIBUICAO: 'NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx?wsdl',
+ WS_DOWNLOAD_NFE: 'NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx?wsdl',
+ WS_NFE_RECEPCAO_EVENTO: 'NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx?Wsdl',
},
}
UFAM = {
NFE_MODELO: {
- NFE_AMBIENTE_PRODUCAO: {
+ 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',
@@ -286,10 +275,9 @@ UFAM = {
WS_NFE_SITUACAO: 'services2/services/NfeStatusServico2',
WS_NFE_CADASTRO: 'services2/services/cadconsultacadastro2',
},
- NFE_AMBIENTE_HOMOLOGACAO: {
+ 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',
@@ -299,10 +287,9 @@ UFAM = {
}
},
NFCE_MODELO: {
- NFE_AMBIENTE_PRODUCAO: {
+ 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',
@@ -310,101 +297,92 @@ UFAM = {
WS_NFE_SITUACAO: 'services2/services/NfeStatusServico2',
WS_NFE_CADASTRO: 'services2/services/cadconsultacadastro2',
},
- NFE_AMBIENTE_HOMOLOGACAO: {
+ AMBIENTE_HOMOLOGACAO: {
'servidor': 'homnfce.sefaz.am.gov.br',
WS_NFE_RECEPCAO_EVENTO: 'nfce-services-nac/services/RecepcaoEvento',
- WS_NFE_CANCELAMENTO: 'nfce-services-nac/services/RecepcaoEvento',
WS_NFE_AUTORIZACAO: 'nfce-services-nac/services/NfeAutorizacao',
WS_NFE_RET_AUTORIZACAO: 'nfce-services-nac/services/NfeRetAutorizacao',
WS_NFE_INUTILIZACAO: 'nfce-services-nac/services/NfeInutilizacao2',
WS_NFE_CONSULTA: 'nfce-services-nac/services/NfeConsulta2',
WS_NFE_SITUACAO: 'nfce-services-nac/services/NfeStatusServico2',
- WS_NFCE_QR_CODE: 'nfceweb/consultarNFCe.jsp',
+ WS_NFCE_QR_CODE: 'http://homnfce.sefaz.am.gov.br/nfceweb/consultarNFCe.jsp',
}
}
}
UFBA = {
- NFE_AMBIENTE_PRODUCAO: {
+ AMBIENTE_PRODUCAO: {
'servidor': 'nfe.sefaz.ba.gov.br',
- WS_NFE_AUTORIZACAO: 'webservices/NfeAutorizacao/NfeAutorizacao.asmx',
- WS_NFE_RET_AUTORIZACAO:
- 'webservices/NfeRetAutorizacao/NfeRetAutorizacao.asmx',
- WS_NFE_CONSULTA: 'webservices/NfeConsulta/NfeConsulta.asmx',
- WS_NFE_SITUACAO: 'webservices/NfeStatusServico/NfeStatusServico.asmx',
- WS_NFE_INUTILIZACAO: 'webservices/nfenw/nfeinutilizacao2.asmx',
- WS_NFE_CADASTRO: 'webservices/nfenw/CadConsultaCadastro2.asmx',
- WS_NFE_RECEPCAO_EVENTO: 'webservices/sre/recepcaoevento.asmx',
- WS_NFE_CANCELAMENTO: 'webservices/sre/recepcaoevento.asmx',
+ WS_NFE_INUTILIZACAO: 'webservices/NFeInutilizacao4/NFeInutilizacao4.asmx?wsdl',
+ WS_NFE_CONSULTA: 'webservices/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx?wsdl',
+ WS_NFE_SITUACAO: 'webservices/NFeStatusServico4/NFeStatusServico4.asmx?wsdl',
+ WS_NFE_RECEPCAO_EVENTO: 'webservices/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx?wsdl',
+ WS_NFE_AUTORIZACAO: 'webservices/NFeAutorizacao4/NFeAutorizacao4.asmx?wsdl',
+ WS_NFE_RET_AUTORIZACAO: 'webservices/NFeRetAutorizacao4/NFeRetAutorizacao4.asmx?wsdl',
+ WS_NFE_CADASTRO: 'webservices/CadConsultaCadastro4/CadConsultaCadastro4.asmx?wsdl',
},
- NFE_AMBIENTE_HOMOLOGACAO: {
+ AMBIENTE_HOMOLOGACAO: {
'servidor': 'hnfe.sefaz.ba.gov.br',
- WS_NFE_AUTORIZACAO: 'webservices/NfeAutorizacao/NfeAutorizacao.asmx',
- WS_NFE_RET_AUTORIZACAO:
- 'webservices/NfeRetAutorizacao/NfeRetAutorizacao.asmx',
- WS_NFE_CONSULTA: 'webservices/NfeConsulta/NfeConsulta.asmx',
- WS_NFE_SITUACAO: 'webservices/NfeStatusServico/NfeStatusServico.asmx',
- WS_NFE_INUTILIZACAO: 'webservices/nfenw/nfeinutilizacao2.asmx',
- WS_NFE_CADASTRO: 'webservices/nfenw/CadConsultaCadastro2.asmx',
- WS_NFE_RECEPCAO_EVENTO: 'webservices/sre/recepcaoevento.asmx',
- WS_NFE_CANCELAMENTO: 'webservices/sre/recepcaoevento.asmx',
+ WS_NFE_INUTILIZACAO: 'webservices/NFeInutilizacao4/NFeInutilizacao4.asmx?wsdl',
+ WS_NFE_CONSULTA: 'webservices/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx?wsdl',
+ WS_NFE_SITUACAO: 'webservices/NFeStatusServico4/NFeStatusServico4.asmx?wsdl',
+ WS_NFE_RECEPCAO_EVENTO: 'webservices/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx?wsdl',
+ WS_NFE_AUTORIZACAO: 'webservices/NFeAutorizacao4/NFeAutorizacao4.asmx?wsdl',
+ WS_NFE_RET_AUTORIZACAO: 'webservices/NFeRetAutorizacao4/NFeRetAutorizacao4.asmx?wsdl',
+ WS_NFE_CADASTRO: 'webservices/CadConsultaCadastro4/CadConsultaCadastro4.asmx?wsdl',
}
}
UFCE = {
- NFE_AMBIENTE_PRODUCAO: {
+ AMBIENTE_PRODUCAO: {
'servidor': 'nfe.sefaz.ce.gov.br',
- WS_NFE_AUTORIZACAO: 'nfe2/services/NfeRecepcao2',
- WS_NFE_RET_AUTORIZACAO: 'nfe2/services/NfeRetRecepcao2',
+ WS_NFE_AUTORIZACAO: 'nfe2/services/NfeAutorizacao',
+ WS_NFE_RET_AUTORIZACAO: 'nfe2/services/NfeRetAutorizacao',
WS_NFE_INUTILIZACAO: 'nfe2/services/NfeInutilizacao2',
WS_NFE_CONSULTA: 'nfe2/services/NfeConsulta2',
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: {
+ AMBIENTE_HOMOLOGACAO: {
'servidor': 'nfeh.sefaz.ce.gov.br',
- WS_NFE_AUTORIZACAO: 'nfe2/services/NfeRecepcao2',
- WS_NFE_RET_AUTORIZACAO: 'nfe2/services/NfeRetRecepcao2',
+ WS_NFE_AUTORIZACAO: 'nfe2/services/NfeAutorizacao',
+ WS_NFE_RET_AUTORIZACAO: 'nfe2/services/NfeRetAutorizacao',
WS_NFE_INUTILIZACAO: 'nfe2/services/NfeInutilizacao2',
WS_NFE_CONSULTA: 'nfe2/services/NfeConsulta2',
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',
}
}
UFGO = {
- NFE_AMBIENTE_PRODUCAO: {
+ AMBIENTE_PRODUCAO: {
'servidor': 'nfe.sefaz.go.gov.br',
- WS_NFE_RECEPCAO_EVENTO: 'nfe/services/v2/RecepcaoEvento',
- WS_NFE_AUTORIZACAO: 'nfe/services/v2/NfeAutorizacao',
- WS_NFE_RET_AUTORIZACAO: 'nfe/services/v2/NfeRetAutorizacao',
- WS_NFE_INUTILIZACAO: 'nfe/services/v2/NfeInutilizacao2',
- 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',
+ WS_NFE_INUTILIZACAO: 'nfe/services/NFeInutilizacao4?wsdl',
+ WS_NFE_CONSULTA: 'nfe/services/NFeConsultaProtocolo4?wsdl',
+ WS_NFE_SITUACAO: 'nfe/services/NFeStatusServico4?wsdl',
+ WS_NFE_RECEPCAO_EVENTO: 'nfe/services/NFeRecepcaoEvento4?wsdl',
+ WS_NFE_AUTORIZACAO: 'nfe/services/NFeAutorizacao4?wsdl',
+ WS_NFE_RET_AUTORIZACAO: 'nfe/services/NFeRetAutorizacao4?wsdl',
+ WS_NFE_CADASTRO: 'nfe/services/CadConsultaCadastro4?wsdl',
},
- NFE_AMBIENTE_HOMOLOGACAO: {
+ AMBIENTE_HOMOLOGACAO: {
'servidor': 'homolog.sefaz.go.gov.br',
- WS_NFE_RECEPCAO_EVENTO: 'nfe/services/v2/RecepcaoEvento',
- WS_NFE_AUTORIZACAO: 'nfe/services/v2/NfeAutorizacao',
- WS_NFE_RET_AUTORIZACAO: 'nfe/services/v2/NfeRetAutorizacao',
- WS_NFE_INUTILIZACAO: 'nfe/services/v2/NfeInutilizacao2',
- 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',
+ WS_NFE_INUTILIZACAO: 'nfe/services/NFeInutilizacao4?wsdl',
+ WS_NFE_CONSULTA: 'nfe/services/NFeConsultaProtocolo4?wsdl',
+ WS_NFE_SITUACAO: 'nfe/services/NFeStatusServico4?wsdl',
+ WS_NFE_RECEPCAO_EVENTO: 'nfe/services/NFeRecepcaoEvento4?wsdl',
+ WS_NFE_AUTORIZACAO: 'nfe/services/NFeAutorizacao4?wsdl',
+ WS_NFE_RET_AUTORIZACAO: 'nfe/services/NFeRetAutorizacao4?wsdl',
+ WS_NFE_CADASTRO: 'nfe/services/CadConsultaCadastro4?wsdl',
}
}
UFMT = {
- NFE_AMBIENTE_PRODUCAO: {
+ AMBIENTE_PRODUCAO: {
'servidor': 'nfe.sefaz.mt.gov.br',
WS_NFE_AUTORIZACAO: 'nfews/v2/services/NfeAutorizacao',
WS_NFE_RET_AUTORIZACAO: 'nfews/v2/services/NfeRetAutorizacao',
@@ -413,9 +391,8 @@ 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: {
+ AMBIENTE_HOMOLOGACAO: {
'servidor': 'homologacao.sefaz.mt.gov.br',
WS_NFE_AUTORIZACAO: 'nfews/v2/services/NfeAutorizacao',
WS_NFE_RET_AUTORIZACAO: 'nfews/v2/services/NfeRetAutorizacao',
@@ -424,12 +401,11 @@ 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',
}
}
UFMS = {
- NFE_AMBIENTE_PRODUCAO: {
+ AMBIENTE_PRODUCAO: {
'servidor': 'nfe.fazenda.ms.gov.br',
WS_NFE_RECEPCAO_EVENTO: 'producao/services2/RecepcaoEvento',
WS_NFE_AUTORIZACAO: 'producao/services2/NfeAutorizacao',
@@ -438,9 +414,8 @@ 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: {
+ AMBIENTE_HOMOLOGACAO: {
'servidor': 'homologacao.nfe.ms.gov.br',
WS_NFE_RECEPCAO_EVENTO: 'homologacao/services2/RecepcaoEvento',
WS_NFE_AUTORIZACAO: 'homologacao/services2/NfeAutorizacao',
@@ -449,37 +424,35 @@ 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',
}
}
UFMG = {
- NFE_AMBIENTE_PRODUCAO: {
+ AMBIENTE_PRODUCAO: {
'servidor': 'nfe.fazenda.mg.gov.br',
- WS_NFE_AUTORIZACAO: 'nfe2/services/NfeAutorizacao',
- WS_NFE_RET_AUTORIZACAO: 'nfe2/services/NfeRetAutorizacao',
- WS_NFE_INUTILIZACAO: 'nfe2/services/NfeInutilizacao2',
- WS_NFE_CONSULTA: 'nfe2/services/NfeConsulta2',
- 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',
+ WS_NFE_INUTILIZACAO: 'nfe2/services/NFeInutilizacao4?wsdl',
+ WS_NFE_CONSULTA: 'nfe2/services/NFeConsultaProtocolo4?wsdl',
+ WS_NFE_SITUACAO: 'nfe2/services/NFeStatusServico4?wsdl',
+ WS_NFE_RECEPCAO_EVENTO: 'nfe2/services/NFeRecepcaoEvento4?wsdl',
+ WS_NFE_AUTORIZACAO: 'nfe2/services/NFeAutorizacao4?wsdl',
+ WS_NFE_RET_AUTORIZACAO: 'nfe2/services/NFeRetAutorizacao4?wsdl',
+ WS_NFE_CADASTRO: 'nfe2/services/cadconsultacadastro2?wsdl',
+
},
- NFE_AMBIENTE_HOMOLOGACAO: {
+ AMBIENTE_HOMOLOGACAO: {
'servidor': 'hnfe.fazenda.mg.gov.br',
- WS_NFE_AUTORIZACAO: 'nfe2/services/NfeAutorizacao',
- WS_NFE_RET_AUTORIZACAO: 'nfe2/services/NfeRetAutorizacao',
- WS_NFE_INUTILIZACAO: 'nfe2/services/NfeInutilizacao2',
- WS_NFE_CONSULTA: 'nfe2/services/NfeConsulta2',
- 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',
+ WS_NFE_INUTILIZACAO: 'nfe2/services/NFeInutilizacao4?wsdl',
+ WS_NFE_CONSULTA: 'nfe2/services/NFeConsultaProtocolo4?wsdl',
+ WS_NFE_SITUACAO: 'nfe2/services/NFeStatusServico4?wsdl',
+ WS_NFE_RECEPCAO_EVENTO: 'nfe2/services/NFeRecepcaoEvento4?wsdl',
+ WS_NFE_AUTORIZACAO: 'nfe2/services/NFeAutorizacao4?wsdl',
+ WS_NFE_RET_AUTORIZACAO: 'nfe2/services/NFeRetAutorizacao4?wsdl',
+ WS_NFE_CADASTRO: 'nfe2/services/cadconsultacadastro2?wsdl',
}
}
UFPR = {
- NFE_AMBIENTE_PRODUCAO: {
+ AMBIENTE_PRODUCAO: {
'servidor': 'nfe.fazenda.pr.gov.br',
WS_NFE_AUTORIZACAO: 'nfe/NFeAutorizacao3',
WS_NFE_RET_AUTORIZACAO: 'nfe/NFeRetAutorizacao3',
@@ -487,10 +460,9 @@ UFPR = {
WS_NFE_CONSULTA: 'nfe/NFeConsulta3',
WS_NFE_SITUACAO: 'nfe/NFeStatusServico3',
WS_NFE_CADASTRO: 'nfe/CadConsultaCadastro2',
- WS_NFE_RECEPCAO_EVENTO: 'nfe-evento/NFeRecepcaoEvento',
- WS_NFE_CANCELAMENTO: 'nfe-evento/NFeRecepcaoEvento',
+ WS_NFE_RECEPCAO_EVENTO: 'nfe/NFeRecepcaoEvento',
},
- NFE_AMBIENTE_HOMOLOGACAO: {
+ AMBIENTE_HOMOLOGACAO: {
'servidor': 'homologacao.nfe.fazenda.pr.gov.br',
WS_NFE_AUTORIZACAO: 'nfe/NFeAutorizacao3',
WS_NFE_RET_AUTORIZACAO: 'nfe/NFeRetAutorizacao3',
@@ -498,16 +470,14 @@ UFPR = {
WS_NFE_CONSULTA: 'nfe/NFeConsulta3',
WS_NFE_SITUACAO: 'nfe/NFeStatusServico3',
WS_NFE_CADASTRO: 'nfe/CadConsultaCadastro2',
- WS_NFE_RECEPCAO_EVENTO: 'nfe-evento/NFeRecepcaoEvento',
- WS_NFE_CANCELAMENTO: 'nfe-evento/NFeRecepcaoEvento',
+ WS_NFE_RECEPCAO_EVENTO: 'nfe/NFeRecepcaoEvento',
}
}
UFPE = {
- NFE_AMBIENTE_PRODUCAO: {
+ AMBIENTE_PRODUCAO: {
'servidor': 'nfe.sefaz.pe.gov.br',
WS_NFE_RECEPCAO_EVENTO: 'nfe-service/services/RecepcaoEvento',
- WS_NFE_CANCELAMENTO: 'nfe-service/services/RecepcaoEvento',
WS_NFE_AUTORIZACAO: 'nfe-service/services/NfeAutorizacao',
WS_NFE_RET_AUTORIZACAO: 'nfe-service/services/NfeRetAutorizacao',
WS_NFE_INUTILIZACAO: 'nfe-service/services/NfeInutilizacao2',
@@ -515,10 +485,9 @@ UFPE = {
WS_NFE_SITUACAO: 'nfe-service/services/NfeStatusServico2',
WS_NFE_CADASTRO: 'nfe-service/services/CadConsultaCadastro2',
},
- NFE_AMBIENTE_HOMOLOGACAO: {
+ AMBIENTE_HOMOLOGACAO: {
'servidor': 'nfehomolog.sefaz.pe.gov.br',
WS_NFE_RECEPCAO_EVENTO: 'nfe-service/services/RecepcaoEvento',
- WS_NFE_CANCELAMENTO: 'nfe-service/services/RecepcaoEvento',
WS_NFE_AUTORIZACAO: 'nfe-service/services/NfeAutorizacao',
WS_NFE_RET_AUTORIZACAO: 'nfe-service/services/NfeRetAutorizacao',
WS_NFE_INUTILIZACAO: 'nfe-service/services/NfeInutilizacao2',
@@ -531,7 +500,7 @@ UFPE = {
UFRS = {
NFE_MODELO: {
- NFE_AMBIENTE_PRODUCAO: {
+ AMBIENTE_PRODUCAO: {
'servidor': 'nfe.sefazrs.rs.gov.br',
WS_NFE_RECEPCAO_EVENTO: 'ws/recepcaoevento/recepcaoevento.asmx',
WS_NFE_AUTORIZACAO: 'ws/NfeAutorizacao/NFeAutorizacao.asmx',
@@ -540,9 +509,8 @@ UFRS = {
WS_NFE_INUTILIZACAO: 'ws/NfeInutilizacao/NfeInutilizacao2.asmx',
WS_NFE_CONSULTA: 'ws/NfeConsulta/NfeConsulta2.asmx',
WS_NFE_SITUACAO: 'ws/NfeStatusServico/NfeStatusServico2.asmx',
- WS_NFE_CANCELAMENTO: 'ws/recepcaoevento/recepcaoevento.asmx',
},
- NFE_AMBIENTE_HOMOLOGACAO: {
+ AMBIENTE_HOMOLOGACAO: {
'servidor': 'nfe-homologacao.sefazrs.rs.gov.br',
WS_NFE_RECEPCAO_EVENTO: 'ws/recepcaoevento/recepcaoevento.asmx',
WS_NFE_AUTORIZACAO: 'ws/NfeAutorizacao/NFeAutorizacao.asmx',
@@ -551,32 +519,29 @@ UFRS = {
WS_NFE_INUTILIZACAO: 'ws/NfeInutilizacao/NfeInutilizacao2.asmx',
WS_NFE_CONSULTA: 'ws/NfeConsulta/NfeConsulta2.asmx',
WS_NFE_SITUACAO: 'ws/NfeStatusServico/NfeStatusServico2.asmx',
- WS_NFE_CANCELAMENTO: 'ws/recepcaoevento/recepcaoevento.asmx',
}
},
NFCE_MODELO: {
- NFE_AMBIENTE_PRODUCAO: {
+ AMBIENTE_PRODUCAO: {
'servidor': 'nfce.sefazrs.rs.gov.br',
- WS_NFCE_RECEPCAO_EVENTO: 'ws/recepcaoevento/recepcaoevento.asmx',
- WS_NFCE_AUTORIZACAO: 'ws/NfeAutorizacao/NFeAutorizacao.asmx',
- WS_NFCE_RET_AUTORIZACAO: 'ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx',
- WS_NFCE_CADASTRO: 'ws/cadconsultacadastro/cadconsultacadastro2.asmx',
- WS_NFCE_INUTILIZACAO: 'ws/NfeInutilizacao/NfeInutilizacao2.asmx',
- WS_NFCE_CONSULTA: 'ws/NfeConsulta/NfeConsulta2.asmx',
- WS_NFCE_SITUACAO: 'ws/NfeStatusServico/NfeStatusServico2.asmx',
- WS_NFCE_CANCELAMENTO: 'ws/recepcaoevento/recepcaoevento.asmx',
+ WS_NFE_RECEPCAO_EVENTO: 'ws/recepcaoevento/recepcaoevento.asmx',
+ WS_NFE_AUTORIZACAO: 'ws/NfeAutorizacao/NFeAutorizacao.asmx',
+ WS_NFE_RET_AUTORIZACAO: 'ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx',
+ WS_NFE_CADASTRO: 'ws/cadconsultacadastro/cadconsultacadastro2.asmx',
+ WS_NFE_INUTILIZACAO: 'ws/NfeInutilizacao/NfeInutilizacao2.asmx',
+ WS_NFE_CONSULTA: 'ws/NfeConsulta/NfeConsulta2.asmx',
+ WS_NFE_SITUACAO: 'ws/NfeStatusServico/NfeStatusServico2.asmx',
WS_NFCE_QR_CODE: 'https://www.sefaz.rs.gov.br/NFCE/NFCE-COM.aspx',
},
- NFE_AMBIENTE_HOMOLOGACAO: {
+ AMBIENTE_HOMOLOGACAO: {
'servidor': 'nfce-homologacao.sefazrs.rs.gov.br',
- WS_NFCE_RECEPCAO_EVENTO: 'ws/recepcaoevento/recepcaoevento.asmx',
- WS_NFCE_AUTORIZACAO: 'ws/NfeAutorizacao/NFeAutorizacao.asmx',
- WS_NFCE_RET_AUTORIZACAO: 'ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx',
- WS_NFCE_CADASTRO: 'ws/cadconsultacadastro/cadconsultacadastro2.asmx',
- WS_NFCE_INUTILIZACAO: 'ws/NfeInutilizacao/NfeInutilizacao2.asmx',
- WS_NFCE_CONSULTA: 'ws/NfeConsulta/NfeConsulta2.asmx',
- WS_NFCE_SITUACAO: 'ws/NfeStatusServico/NfeStatusServico2.asmx',
- WS_NFCE_CANCELAMENTO: 'ws/recepcaoevento/recepcaoevento.asmx',
+ WS_NFE_RECEPCAO_EVENTO: 'ws/recepcaoevento/recepcaoevento.asmx',
+ WS_NFE_AUTORIZACAO: 'ws/NfeAutorizacao/NFeAutorizacao.asmx',
+ WS_NFE_RET_AUTORIZACAO: 'ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx',
+ WS_NFE_CADASTRO: 'ws/cadconsultacadastro/cadconsultacadastro2.asmx',
+ WS_NFE_INUTILIZACAO: 'ws/NfeInutilizacao/NfeInutilizacao2.asmx',
+ WS_NFE_CONSULTA: 'ws/NfeConsulta/NfeConsulta2.asmx',
+ WS_NFE_SITUACAO: 'ws/NfeStatusServico/NfeStatusServico2.asmx',
WS_NFCE_QR_CODE: 'https://www.sefaz.rs.gov.br/NFCE/NFCE-COM.aspx'
}
}
@@ -584,8 +549,30 @@ UFRS = {
UFSP = {
NFE_MODELO: {
- NFE_AMBIENTE_PRODUCAO: {
+ AMBIENTE_PRODUCAO: {
'servidor': 'nfe.fazenda.sp.gov.br',
+ WS_NFE_INUTILIZACAO: 'ws/nfeinutilizacao4.asmx?wsdl',
+ WS_NFE_CONSULTA: 'ws/nfeconsultaprotocolo4.asmx?wsdl',
+ WS_NFE_SITUACAO: 'ws/nfestatusservico4.asmx?wsdl',
+ WS_NFE_RECEPCAO_EVENTO: 'ws/nferecepcaoevento4.asmx?wsdl',
+ WS_NFE_AUTORIZACAO: 'ws/nfeautorizacao4.asmx?wsdl',
+ WS_NFE_RET_AUTORIZACAO: 'ws/nferetautorizacao4.asmx?wsdl',
+ WS_NFE_CADASTRO: 'ws/cadconsultacadastro4.asmx?wsdl',
+ },
+ AMBIENTE_HOMOLOGACAO: {
+ 'servidor': 'homologacao.nfe.fazenda.sp.gov.br',
+ WS_NFE_INUTILIZACAO: 'ws/nfeinutilizacao4.asmx?wsdl',
+ WS_NFE_CONSULTA: 'ws/nfeconsultaprotocolo4.asmx?wsdl',
+ WS_NFE_SITUACAO: 'ws/nfestatusservico4.asmx?wsdl',
+ WS_NFE_RECEPCAO_EVENTO: 'ws/nferecepcaoevento4.asmx?wsdl',
+ WS_NFE_AUTORIZACAO: 'ws/nfeautorizacao4.asmx?wsdl',
+ WS_NFE_RET_AUTORIZACAO: 'ws/nferetautorizacao4.asmx?wsdl',
+ WS_NFE_CADASTRO: 'ws/cadconsultacadastro4.asmx?wsdl',
+ }
+ },
+ NFCE_MODELO: {
+ AMBIENTE_PRODUCAO: {
+ 'servidor': 'nfce.fazenda.sp.gov.br',
WS_NFE_AUTORIZACAO: 'ws/nfeautorizacao.asmx',
WS_NFE_RET_AUTORIZACAO: 'ws/nferetautorizacao.asmx',
WS_NFE_INUTILIZACAO: 'ws/nfeinutilizacao2.asmx',
@@ -593,10 +580,10 @@ UFSP = {
WS_NFE_SITUACAO: 'ws/nfestatusservico2.asmx',
WS_NFE_CADASTRO: 'ws/cadconsultacadastro2.asmx',
WS_NFE_RECEPCAO_EVENTO: 'ws/recepcaoevento.asmx',
- WS_NFE_CANCELAMENTO: 'ws/recepcaoevento.asmx',
+ WS_NFCE_QR_CODE: '',
},
- NFE_AMBIENTE_HOMOLOGACAO: {
- 'servidor': 'homologacao.nfe.fazenda.sp.gov.br',
+ AMBIENTE_HOMOLOGACAO: {
+ 'servidor': 'homologacao.nfce.fazenda.sp.gov.br',
WS_NFE_AUTORIZACAO: 'ws/nfeautorizacao.asmx',
WS_NFE_RET_AUTORIZACAO: 'ws/nferetautorizacao.asmx',
WS_NFE_INUTILIZACAO: 'ws/nfeinutilizacao2.asmx',
@@ -604,31 +591,7 @@ UFSP = {
WS_NFE_SITUACAO: 'ws/nfestatusservico2.asmx',
WS_NFE_CADASTRO: 'ws/cadconsultacadastro2.asmx',
WS_NFE_RECEPCAO_EVENTO: 'ws/recepcaoevento.asmx',
- WS_NFE_CANCELAMENTO: 'ws/recepcaoevento.asmx',
- }
- },
- NFCE_MODELO: {
- NFCE_AMBIENTE_PRODUCAO: {
- 'servidor': 'nfce.fazenda.sp.gov.br',
- WS_NFCE_AUTORIZACAO: 'ws/nfeautorizacao.asmx',
- WS_NFCE_RET_AUTORIZACAO: 'ws/nferetautorizacao.asmx',
- WS_NFCE_INUTILIZACAO: 'ws/nfeinutilizacao2.asmx',
- WS_NFCE_CONSULTA: 'ws/nfeconsulta2.asmx',
- WS_NFCE_SITUACAO: 'ws/nfestatusservico2.asmx',
- WS_NFCE_CADASTRO: 'ws/cadconsultacadastro2.asmx',
- WS_NFCE_RECEPCAO_EVENTO: 'ws/recepcaoevento.asmx',
- WS_NFCE_QR_CODE: '',
- },
- NFCE_AMBIENTE_HOMOLOGACAO: {
- 'servidor': 'homologacao.nfce.fazenda.sp.gov.br',
- WS_NFCE_AUTORIZACAO: 'ws/nfeautorizacao.asmx',
- WS_NFCE_RET_AUTORIZACAO: 'ws/nferetautorizacao.asmx',
- WS_NFCE_INUTILIZACAO: 'ws/nfeinutilizacao2.asmx',
- WS_NFCE_CONSULTA: 'ws/nfeconsulta2.asmx',
- WS_NFCE_SITUACAO: 'ws/nfestatusservico2.asmx',
- WS_NFCE_CADASTRO: 'ws/cadconsultacadastro2.asmx',
- WS_NFCE_RECEPCAO_EVENTO: 'ws/recepcaoevento.asmx',
- WS_NFCE_QR_CODE: 'NFCEConsultaPublica/Paginas/ConstultaQRCode.aspx',
+ WS_NFCE_QR_CODE: 'https://homologacao.nfce.fazenda.sp.gov.br/NFCEConsultaPublica/Paginas/ConstultaQRCode.aspx',
}
}
}
@@ -662,47 +625,5 @@ ESTADO_WS = {
'SE': SVRS,
'SP': UFSP,
'TO': SVRS,
-}
-
-
-#
-# Informação obtida em
-# http://www.nfe.fazenda.gov.br/portal/webServices.aspx
-# Última verificação: 15/08/2014 16:22
-#
-# Autorizadores em contingência:
-# - UF que utilizam a SVC-AN - Sefaz Virtual de Contingência Ambiente Nacional:
-# AC, AL, AP, DF, ES, MG, PB, RJ, RN, RO, RR, RS, SC, SE, SP, TO
-# - UF que utilizam a SVC-RS - Sefaz Virtual de Contingência Rio Grande do Sul:
-# AM, BA, CE, GO, MA, MS, MT, PA, PE, PI, PR
-#
-
-ESTADO_WS_CONTINGENCIA = {
- 'AC': SVC_AN,
- 'AL': SVC_AN,
- 'AM': SVC_RS,
- 'AP': SVC_AN,
- 'BA': SVC_RS,
- 'CE': SVC_RS,
- 'DF': SVC_AN,
- 'ES': SVC_AN,
- 'GO': SVC_RS,
- 'MA': SVC_RS,
- 'MG': SVC_AN,
- 'MS': SVC_RS,
- 'MT': SVC_RS,
- 'PA': SVC_RS,
- 'PB': SVC_AN,
- 'PE': SVC_RS,
- 'PI': SVC_RS,
- 'PR': SVC_RS,
- 'RJ': SVC_AN,
- 'RN': SVC_AN,
- 'RO': SVC_AN,
- 'RR': SVC_AN,
- 'RS': SVC_AN,
- 'SC': SVC_AN,
- 'SE': SVC_AN,
- 'SP': SVC_AN,
- 'TO': SVC_AN,
+ 'AN': AN,
}
diff --git a/pytrustnfe/nfe/__init__.py b/pytrustnfe/nfe/__init__.py
index b2b0964..8072ecf 100644
--- a/pytrustnfe/nfe/__init__.py
+++ b/pytrustnfe/nfe/__init__.py
@@ -5,37 +5,18 @@
import os
import hashlib
+import binascii
from lxml import etree
-from .comunicacao import executar_consulta
from .assinatura import Assinatura
-from pytrustnfe.xml import render_xml
-from pytrustnfe.utils import CabecalhoSoap
+from pytrustnfe.xml import render_xml, sanitize_response
from pytrustnfe.utils import gerar_chave, ChaveNFe
from pytrustnfe.Servidores import localizar_url, localizar_qrcode
-from pytrustnfe.xml.validate import valida_nfe
-from pytrustnfe.exceptions import NFeValidationException
-
-
-def _build_header(method, **kwargs):
- action = {
- 'NfeAutorizacao': ('NfeAutorizacao', '3.10'),
- 'NfeRetAutorizacao': ('NfeRetAutorizacao', '3.10'),
- 'NfeConsultaCadastro': ('CadConsultaCadastro2', '2.00'),
- 'NfeInutilizacao': ('NfeInutilizacao2', '3.10'),
- 'RecepcaoEventoCancelamento': ('RecepcaoEvento', '1.00'),
- 'RecepcaoEventoCarta': ('RecepcaoEvento', '1.00'),
- 'NFeDistribuicaoDFe': ('NFeDistribuicaoDFe/nfeDistDFeInteresse',
- '1.00'),
- 'RecepcaoEventoManifesto': ('RecepcaoEvento', '1.00'),
- 'NfeConsulta2': ('NfeConsulta2', '3.10')
- }
- # Método específico para o estado da Bahia
- if kwargs['estado'] == '29':
- action['NfeConsulta2'] = ('NfeConsulta', '3.10')
- vals = {'estado': kwargs['estado'],
- 'soap_action': action[method][0],
- 'versao': action[method][1]}
- return CabecalhoSoap(**vals)
+from pytrustnfe.certificado import extract_cert_and_key_from_pfx, save_cert_key
+
+# Zeep
+from requests import Session
+from zeep import Client
+from zeep.transports import Transport
def _generate_nfe_id(**kwargs):
@@ -57,26 +38,6 @@ def _generate_nfe_id(**kwargs):
item['infNFe']['ide']['cDV'] = chave_nfe[len(chave_nfe) - 1:]
-def _add_required_node(elemTree):
- ns = elemTree.nsmap
- if None in ns:
- ns['ns'] = ns[None]
- ns.pop(None)
-
- prods = elemTree.findall('ns:NFe/ns:infNFe/ns:det/ns:prod', namespaces=ns)
- for prod in prods:
- element = prod.find('ns:cEAN', namespaces=ns)
- if element is None:
- cEan = etree.Element('cEAN')
- prod.insert(1, cEan)
- element = prod.find('ns:cEANTrib', namespaces=ns)
- if element is None:
- cEANTrib = etree.Element('cEANTrib')
- vProd = prod.find('ns:vProd', namespaces=ns)
- prod.insert(prod.index(vProd) + 1, cEANTrib)
- return elemTree
-
-
def _add_qrCode(xml, **kwargs):
xml = etree.fromstring(xml)
inf_nfe = kwargs['NFes'][0]['infNFe']
@@ -84,15 +45,13 @@ def _add_qrCode(xml, **kwargs):
infnfesupl = etree.Element('infNFeSupl')
qrcode = etree.Element('qrCode')
chave_nfe = inf_nfe['Id'][3:]
- dh_emissao = inf_nfe['ide']['dhEmi'].encode('hex')
+ dh_emissao = binascii.hexlify(inf_nfe['ide']['dhEmi'].encode()).decode()
versao = '100'
ambiente = kwargs['ambiente']
valor_total = inf_nfe['total']['vNF']
dest_cpf = 'Inexistente'
dest = nfe.find(".//{http://www.portalfiscal.inf.br/nfe}dest")
- if dest:
- dest_parent = dest.getparent()
- dest_parent.remove(dest)
+
if inf_nfe.get('dest', False):
if inf_nfe['dest'].get('CPF', False):
dest_cpf = inf_nfe['dest']['CPF']
@@ -100,11 +59,10 @@ def _add_qrCode(xml, **kwargs):
cpf = etree.Element('CPF')
cpf.text = dest_cpf
dest.append(cpf)
- dest_parent.append(dest)
+
icms_total = inf_nfe['total']['vICMS']
- dig_val = xml.find(
- ".//{http://www.w3.org/2000/09/xmldsig#}DigestValue")\
- .text.encode('hex')
+ dig_val = binascii.hexlify(xml.find(
+ ".//{http://www.w3.org/2000/09/xmldsig#}DigestValue").text.encode()).decode()
cid_token = kwargs['NFes'][0]['infNFe']['codigo_seguranca']['cid_token']
csc = kwargs['NFes'][0]['infNFe']['codigo_seguranca']['csc']
@@ -112,7 +70,7 @@ def _add_qrCode(xml, **kwargs):
={5}&vICMS={6}&digVal={7}&cIdToken={8}{9}".\
format(chave_nfe, versao, ambiente, dest_cpf, dh_emissao,
valor_total, icms_total, dig_val, cid_token, csc)
- c_hash_QR_code = hashlib.sha1(c_hash_QR_code).hexdigest()
+ c_hash_QR_code = hashlib.sha1(c_hash_QR_code.encode()).hexdigest()
QR_code_url = "?chNFe={0}&nVersao={1}&tpAmb={2}&{3}dhEmi={4}&vNF={5}&vICMS\
={6}&digVal={7}&cIdToken={8}&cHashQRCode={9}".\
@@ -128,49 +86,23 @@ def _add_qrCode(xml, **kwargs):
return etree.tostring(xml)
-def _send(certificado, method, sign, **kwargs):
+def _render(certificado, method, sign, **kwargs):
path = os.path.join(os.path.dirname(__file__), 'templates')
xmlElem_send = render_xml(path, '%s.xml' % method, True, **kwargs)
+
modelo = xmlElem_send.find(".//{http://www.portalfiscal.inf.br/nfe}mod")
modelo = modelo.text if modelo is not None else '55'
- if modelo == '65':
- pagamento = etree.Element('pag')
- tipo_pagamento = etree.Element('tPag')
- valor = etree.Element('vPag')
- valor_pago = kwargs['NFes'][0]['infNFe']['total']['vNF']
- metodo_pagamento = kwargs['NFes'][0]['infNFe']['pagamento']
- tipo_pagamento.text, valor.text = metodo_pagamento, valor_pago
- pagamento.append(tipo_pagamento)
- pagamento.append(valor)
- transp = xmlElem_send.find(
- ".//{http://www.portalfiscal.inf.br/nfe}transp")
- transp.addnext(pagamento)
if sign:
- # Caso for autorização temos que adicionar algumas tags tipo
- # cEan, cEANTrib porque o governo sempre complica e não segue padrão
- if method == 'NfeAutorizacao':
- xmlElem_send = _add_required_node(xmlElem_send)
-
signer = Assinatura(certificado.pfx, certificado.password)
if method == 'NfeInutilizacao':
xml_send = signer.assina_xml(xmlElem_send, kwargs['obj']['id'])
if method == 'NfeAutorizacao':
xml_send = signer.assina_xml(
xmlElem_send, kwargs['NFes'][0]['infNFe']['Id'])
- if 'validate' in kwargs:
- erros = valida_nfe(xml_send)
- if erros:
- raise NFeValidationException('Erro ao validar NFe',
- erros=erros,
- sent_xml=xml_send)
- elif method == 'RecepcaoEventoCancelamento':
+ elif method == 'RecepcaoEvento':
xml_send = signer.assina_xml(
xmlElem_send, kwargs['eventos'][0]['Id'])
-
- if method == 'RecepcaoEventoCarta':
- xml_send = signer.assina_xml(
- xmlElem_send, kwargs['Id'])
elif method == 'RecepcaoEventoManifesto':
xml_send = signer.assina_xml(
xmlElem_send, kwargs['manifesto']['identificador'])
@@ -180,68 +112,173 @@ def _send(certificado, method, sign, **kwargs):
else:
xml_send = etree.tostring(xmlElem_send)
+ return xml_send
+
+
+def _send(certificado, method, **kwargs):
+ xml_send = kwargs["xml"]
+ base_url = localizar_url(
+ method, kwargs['estado'], kwargs['modelo'], kwargs['ambiente'])
+
+ cert, key = extract_cert_and_key_from_pfx(
+ certificado.pfx, certificado.password)
+ cert, key = save_cert_key(cert, key)
+
+ session = Session()
+ session.cert = (cert, key)
+ session.verify = False
+ transport = Transport(session=session)
+
+ xml = etree.fromstring(xml_send)
+ client = Client(base_url, transport=transport)
+
+ port = next(iter(client.wsdl.port_types))
+ first_operation = next(iter(client.wsdl.port_types[port].operations))
+ with client.options(raw_response=True):
+ response = client.service[first_operation](xml)
+ response, obj = sanitize_response(response.text)
+ return {
+ 'sent_xml': xml_send,
+ 'received_xml': response,
+ 'object': obj.Body.getchildren()[0]
+ }
- url = localizar_url(method, kwargs['estado'], modelo,
- kwargs['ambiente'])
- cabecalho = _build_header(method, **kwargs)
-
- send_raw = False
- if method == 'NFeDistribuicaoDFe':
- send_raw = True
- response, obj = executar_consulta(certificado, url, cabecalho, xml_send,
- send_raw=send_raw)
- return {
- 'sent_xml': xml_send,
- 'received_xml': response,
- 'object': obj
- }
+def xml_autorizar_nfe(certificado, **kwargs):
+ _generate_nfe_id(**kwargs)
+ return _render(certificado, 'NfeAutorizacao', True, **kwargs)
def autorizar_nfe(certificado, **kwargs): # Assinar
- _generate_nfe_id(**kwargs)
- return _send(certificado, 'NfeAutorizacao', True, **kwargs)
+ if "xml" not in kwargs:
+ kwargs['xml'] = xml_autorizar_nfe(certificado, **kwargs)
+ return _send(certificado, 'NfeAutorizacao', **kwargs)
+
+
+def xml_retorno_autorizar_nfe(certificado, **kwargs):
+ return _render(certificado, 'NfeRetAutorizacao', False, **kwargs)
def retorno_autorizar_nfe(certificado, **kwargs):
- return _send(certificado, 'NfeRetAutorizacao', False, **kwargs)
+ if "xml" not in kwargs:
+ kwargs['xml'] = xml_retorno_autorizar_nfe(certificado, **kwargs)
+ return _send(certificado, 'NfeRetAutorizacao', **kwargs)
+
+
+def xml_recepcao_evento_cancelamento(certificado, **kwargs): # Assinar
+ return _render(certificado, 'RecepcaoEvento', True, **kwargs)
def recepcao_evento_cancelamento(certificado, **kwargs): # Assinar
- return _send(certificado, 'RecepcaoEventoCancelamento', True, **kwargs)
+ if "xml" not in kwargs:
+ kwargs['xml'] = xml_recepcao_evento_cancelamento(certificado, **kwargs)
+ return _send(certificado, 'RecepcaoEvento', **kwargs)
+
+
+def xml_inutilizar_nfe(certificado, **kwargs):
+ return _render(certificado, 'NfeInutilizacao', True, **kwargs)
+
+def inutilizar_nfe(certificado, **kwargs):
+ if "xml" not in kwargs:
+ kwargs['xml'] = xml_inutilizar_nfe(certificado, **kwargs)
+ return _send(certificado, 'NfeInutilizacao', **kwargs)
-def inutilizar_nfe(certificado, **kwargs): # Assinar
- return _send(certificado, 'NfeInutilizacao', True, **kwargs)
+
+def xml_consultar_protocolo_nfe(certificado, **kwargs):
+ return _render(certificado, 'NfeConsultaProtocolo', False, **kwargs)
def consultar_protocolo_nfe(certificado, **kwargs):
- return _send(certificado, 'NfeConsulta2', False, **kwargs)
+ if "xml" not in kwargs:
+ kwargs['xml'] = xml_consultar_protocolo_nfe(certificado, **kwargs)
+ return _send(certificado, 'NfeConsultaProtocolo', **kwargs)
+
+
+def xml_nfe_status_servico(certificado, **kwargs):
+ return _render(certificado, 'NfeStatusServico', False, **kwargs)
def nfe_status_servico(certificado, **kwargs):
- return _send(certificado, 'NfeStatusServico', False, **kwargs)
+ if "xml" not in kwargs:
+ kwargs['xml'] = xml_nfe_status_servico(certificado, **kwargs)
+ return _send(certificado, 'NfeStatusServico', **kwargs)
+
+
+def xml_consulta_cadastro(certificado, **kwargs):
+ return _render(certificado, 'NfeConsultaCadastro', False, **kwargs)
def consulta_cadastro(certificado, **kwargs):
- return _send(certificado, 'NfeConsultaCadastro', False, **kwargs)
+ if "xml" not in kwargs:
+ kwargs['xml'] = xml_consulta_cadastro(certificado, **kwargs)
+ kwargs['modelo'] = '55'
+ return _send(certificado, 'NfeConsultaCadastro', **kwargs)
+
+
+def xml_recepcao_evento_carta_correcao(certificado, **kwargs): # Assinar
+ return _render(certificado, 'RecepcaoEvento', True, **kwargs)
def recepcao_evento_carta_correcao(certificado, **kwargs): # Assinar
- return _send(certificado, 'RecepcaoEventoCarta', True, **kwargs)
+ if "xml" not in kwargs:
+ kwargs['xml'] = xml_recepcao_evento_carta_correcao(
+ certificado, **kwargs)
+ return _send(certificado, 'RecepcaoEvento', **kwargs)
+
+
+def xml_recepcao_evento_manifesto(certificado, **kwargs): # Assinar
+ return _render(certificado, 'RecepcaoEvento', True, **kwargs)
def recepcao_evento_manifesto(certificado, **kwargs): # Assinar
- return _send(certificado, 'RecepcaoEventoManifesto', True, **kwargs)
+ if "xml" not in kwargs:
+ kwargs['xml'] = xml_recepcao_evento_manifesto(certificado, **kwargs)
+ return _send(certificado, 'RecepcaoEvento', **kwargs)
-def recepcao_evento_epec(certificado, **kwargs): # Assinar
- return _send(certificado, 'RecepcaoEventoEPEC', True, **kwargs)
+def xml_consulta_distribuicao_nfe(certificado, **kwargs): # Assinar
+ return _render(certificado, 'NFeDistribuicaoDFe', False, **kwargs)
def consulta_distribuicao_nfe(certificado, **kwargs):
- return _send(certificado, 'NFeDistribuicaoDFe', False, **kwargs)
+ if "xml" not in kwargs:
+ kwargs['xml'] = xml_consulta_distribuicao_nfe(certificado, **kwargs)
+ xml_send = kwargs["xml"]
+ base_url = localizar_url(
+ 'NFeDistribuicaoDFe', kwargs['estado'], kwargs['modelo'],
+ kwargs['ambiente'])
+
+ cert, key = extract_cert_and_key_from_pfx(
+ certificado.pfx, certificado.password)
+ cert, key = save_cert_key(cert, key)
+
+ session = Session()
+ session.cert = (cert, key)
+ session.verify = False
+ transport = Transport(session=session)
+
+ xml = etree.fromstring(xml_send)
+ xml_um = etree.fromstring('AN1.00')
+ client = Client(base_url, transport=transport)
+
+ port = next(iter(client.wsdl.port_types))
+ first_operation = next(iter(client.wsdl.port_types[port].operations))
+ with client.options(raw_response=True):
+ response = client.service[first_operation](nfeDadosMsg=xml, _soapheaders=[xml_um])
+ response, obj = sanitize_response(response.text)
+ return {
+ 'sent_xml': xml_send,
+ 'received_xml': response,
+ 'object': obj.Body.nfeDistDFeInteresseResponse.nfeDistDFeInteresseResult
+ }
+
+
+def xml_download_nfe(certificado, **kwargs): # Assinar
+ return _render(certificado, 'NFeDistribuicaoDFe', False, **kwargs)
def download_nfe(certificado, **kwargs):
- return _send(certificado, 'NFeDistribuicaoDFe', False, **kwargs)
+ if "xml" not in kwargs:
+ kwargs['xml'] = xml_download_nfe(certificado, **kwargs)
+ return _send(certificado, 'NFeDistribuicaoDFe', **kwargs)
diff --git a/pytrustnfe/nfe/templates/NFeDistribuicaoDFe.xml b/pytrustnfe/nfe/templates/NFeDistribuicaoDFe.xml
index 9e4d774..cd3fc38 100644
--- a/pytrustnfe/nfe/templates/NFeDistribuicaoDFe.xml
+++ b/pytrustnfe/nfe/templates/NFeDistribuicaoDFe.xml
@@ -1,19 +1,11 @@
-
-
-
-
-
- {{ ambiente }}
- {{ estado }}
- {{ cnpj_cpf }}
-
- {{ ultimo_nsu }}
-
-
- {{ chave_nfe }}
-
-
-
-
-
-
+
+ {{ ambiente }}
+ {{ estado }}
+ {{ cnpj_cpf }}
+
+ {{ ultimo_nsu }}
+
+
+ {{ chave_nfe }}
+
+
diff --git a/pytrustnfe/nfe/templates/NfeAutorizacao.xml b/pytrustnfe/nfe/templates/NfeAutorizacao.xml
index b135806..bf1cc8b 100644
--- a/pytrustnfe/nfe/templates/NfeAutorizacao.xml
+++ b/pytrustnfe/nfe/templates/NfeAutorizacao.xml
@@ -1,15 +1,14 @@
-
+
{{ idLote }}
{{ indSinc }}
{% for NFe in NFes %}
-
+
{% with ide = NFe.infNFe.ide %}
{{ ide.cUF }}
{{ ide.cNF }}
{{ ide.natOp }}
- {{ ide.indPag }}
{{ ide.mod }}
{{ ide.serie }}
{{ ide.nNF }}
@@ -182,6 +181,9 @@
{{ prod.NCM }}
{{ prod.NVE }}
{{ prod.CEST }}
+ {{ prod.indEscala }}
+ {{ prod.CNPJFab }}
+ {{ prod.cBenef }}
{{ prod.EXTIPI }}
{{ prod.CFOP }}
{{ prod.uCom }}
@@ -244,6 +246,21 @@
{{ prod.xPed }}
{{ prod.nItemPed }}
{{ prod.nFCI }}
+ {% for rastro in prod.rastro %}
+
+ {{ rastro.nLote }}
+ {{ rastro.qLote }}
+ {{ rastro.dFab }}
+ {{ rastro.dVal }}
+ {{ rastro.cAgreg }}
+
+ {% endfor %}
+ {% for med in prod.med %}
+
+ {{ med.cProdANVISA }}
+ {{ med.vPMC }}
+
+ {% endfor %}
{% endwith %}
@@ -258,6 +275,8 @@
{{ imposto.ICMS.vBC }}
{{ imposto.ICMS.pICMS }}
{{ imposto.ICMS.vICMS }}
+ {{ imposto.ICMS.pFCP }}
+ {{ imposto.ICMS.vFCP }}
{% endif %}
{% if imposto.ICMS.CST == '10' -%}
@@ -268,12 +287,18 @@
{{ imposto.ICMS.vBC }}
{{ imposto.ICMS.pICMS }}
{{ imposto.ICMS.vICMS }}
+ {{ imposto.ICMS.vBCFCP }}
+ {{ imposto.ICMS.pFCP }}
+ {{ imposto.ICMS.vFCP }}
{{ imposto.ICMS.modBCST }}
{{ imposto.ICMS.pMVAST }}
{{ imposto.ICMS.pRedBCST }}
{{ imposto.ICMS.vBCST }}
{{ imposto.ICMS.pICMSST }}
{{ imposto.ICMS.vICMSST }}
+ {{ imposto.ICMS.vBCFCPST }}
+ {{ imposto.ICMS.pFCPST }}
+ {{ imposto.ICMS.vFCPST }}
{% endif %}
{% if imposto.ICMS.CST == '20' -%}
@@ -285,6 +310,9 @@
{{ imposto.ICMS.vBC }}
{{ imposto.ICMS.pICMS }}
{{ imposto.ICMS.vICMS }}
+ {{ imposto.ICMS.vBCFCP }}
+ {{ imposto.ICMS.pFCP }}
+ {{ imposto.ICMS.vFCP }}
{{ imposto.ICMS.vICMSDeson }}
{{ imposto.ICMS.motDesICMS }}
@@ -299,6 +327,9 @@
{{ imposto.ICMS.vBCST }}
{{ imposto.ICMS.pICMSST }}
{{ imposto.ICMS.vICMSST }}
+ {{ imposto.ICMS.vBCFCPST }}
+ {{ imposto.ICMS.pFCPST }}
+ {{ imposto.ICMS.vFCPST }}
{{ imposto.ICMS.vICMSDeson }}
{{ imposto.ICMS.motDesICMS }}
@@ -323,6 +354,9 @@
{{ imposto.ICMS.pDif }}
{{ imposto.ICMS.vICMSDif }}
{{ imposto.ICMS.vICMS }}
+ {{ imposto.ICMS.vBCFCP }}
+ {{ imposto.ICMS.pFCP }}
+ {{ imposto.ICMS.vFCP }}
{% endif %}
{% if imposto.ICMS.CST == '60' -%}
@@ -330,7 +364,11 @@
{{ imposto.ICMS.orig }}
{{ imposto.ICMS.CST }}
{{ imposto.ICMS.vBCSTRet }}
+ {{ imposto.ICMS.pST }}
{{ imposto.ICMS.vICMSSTRet }}
+ {{ imposto.ICMS.vBCFCPSTRet }}
+ {{ imposto.ICMS.pFCPSTRet }}
+ {{ imposto.ICMS.vFCPSTRet }}
{% endif %}
{% if imposto.ICMS.CST == '70' -%}
@@ -342,12 +380,18 @@
{{ imposto.ICMS.vBC }}
{{ imposto.ICMS.pICMS }}
{{ imposto.ICMS.vICMS }}
+ {{ imposto.ICMS.vBCFCP }}
+ {{ imposto.ICMS.pFCP }}
+ {{ imposto.ICMS.vFCP }}
{{ imposto.ICMS.modBCST }}
{{ imposto.ICMS.pMVAST }}
{{ imposto.ICMS.pRedBCST }}
{{ imposto.ICMS.vBCST }}
{{ imposto.ICMS.pICMSST }}
{{ imposto.ICMS.vICMSST }}
+ {{ imposto.ICMS.vBCFCPST }}
+ {{ imposto.ICMS.pFCPST }}
+ {{ imposto.ICMS.vFCPST }}
{{ imposto.ICMS.vICMSDeson }}
{{ imposto.ICMS.motDesICMS }}
@@ -361,12 +405,18 @@
{{ imposto.ICMS.pRedBC }}
{{ imposto.ICMS.pICMS }}
{{ imposto.ICMS.vICMS }}
+ {{ imposto.ICMS.vBCFCP }}
+ {{ imposto.ICMS.pFCP }}
+ {{ imposto.ICMS.pFCP }}
{{ imposto.ICMS.modBCST }}
{{ imposto.ICMS.pMVAST }}
{{ imposto.ICMS.pRedBCST }}
{{ imposto.ICMS.vBCST }}
{{ imposto.ICMS.pICMSST }}
{{ imposto.ICMS.vICMSST }}
+ {{ imposto.ICMS.vBCFCPST }}
+ {{ imposto.ICMS.pFCPST }}
+ {{ imposto.ICMS.vFCPST }}
{{ imposto.ICMS.vICMSDeson }}
{{ imposto.ICMS.motDesICMS }}
@@ -380,12 +430,10 @@
{{ imposto.ICMSPart.pRedBC }}
{{ imposto.ICMSPart.pICMS }}
{{ imposto.ICMSPart.vICMS }}
+ {{ imposto.ICMS.vBCST }}
{{ imposto.ICMSPart.modBCST }}
{{ imposto.ICMSPart.pMVAST }}
{{ imposto.ICMSPart.pRedBCST }}
- {{ imposto.ICMSPart.vBCST }}
- {{ imposto.ICMSPart.pICMSST }}
- {{ imposto.ICMSPart.vICMSST }}
{{ imposto.ICMSPart.pBCOp }}
{{ imposto.ICMSPart.UFST }}
@@ -424,6 +472,9 @@
{{ imposto.ICMS.vBCST }}
{{ imposto.ICMS.pICMSST }}
{{ imposto.ICMS.vICMSST }}
+ {{ imposto.ICMS.vBCFCPST }}
+ {{ imposto.ICMS.pFCPST }}
+ {{ imposto.ICMS.vFCPST }}
{{ imposto.ICMS.pCredSN }}
{{ imposto.ICMS.vCredICMSSN }}
@@ -438,6 +489,9 @@
{{ imposto.ICMS.vBCST }}
{{ imposto.ICMS.pICMSST }}
{{ imposto.ICMS.vICMSST }}
+ {{ imposto.ICMS.vBCFCPST }}
+ {{ imposto.ICMS.pFCPST }}
+ {{ imposto.ICMS.vFCPST }}
{% endif %}
{% if imposto.ICMS.CST == '500' -%}
@@ -445,7 +499,11 @@
{{ imposto.ICMS.orig }}
{{ imposto.ICMS.CST }}
{{ imposto.ICMS.vBCSTRet }}
+ {{ imposto.ICMS.pST }}
{{ imposto.ICMS.vICMSSTRet }}
+ {{ imposto.ICMS.vBCFCPSTRet }}
+ {{ imposto.ICMS.pFCPSTRet }}
+ {{ imposto.ICMS.pFCPSTRet }}
{% endif %}
{% if imposto.ICMS.CST == '900' -%}
@@ -463,6 +521,9 @@
{{ imposto.ICMS.vBCST }}
{{ imposto.ICMS.pICMSST }}
{{ imposto.ICMS.vICMSST }}
+ {{ imposto.ICMS.vBCFCPST }}
+ {{ imposto.ICMS.pFCPST }}
+ {{ imposto.ICMS.vFCPST }}
{{ imposto.ICMS.pCredSN }}
{{ imposto.ICMS.vCredICMSSN }}
@@ -491,7 +552,6 @@
{% endif %}
- {% endif %}
{% if imposto.II is defined %}
{{ imposto.II.vBC }}
@@ -500,6 +560,7 @@
{{ imposto.II.vIOF }}
{% endif %}
+ {% endif %}
{% if imposto.PIS.CST in ('01', '02') %}
@@ -607,8 +668,9 @@
{% if imposto.ICMSUFDest is defined %}
{{ imposto.ICMSUFDest.vBCUFDest }}
+ {{ imposto.ICMSUFDest.vBCFCPUFDest }}
{{ imposto.ICMSUFDest.pFCPUFDest }}
- {{ imposto.ICMSUFDest.pICMSInter }}
+ {{ imposto.ICMSUFDest.pICMSUFDest }}
{{ imposto.ICMSUFDest.pICMSInter }}
{{ imposto.ICMSUFDest.pICMSInterPart }}
{{ imposto.ICMSUFDest.vFCPUFDest }}
@@ -639,14 +701,18 @@
{{ total.vFCPUFDest }}
{{ total.vICMSUFDest }}
{{ total.vICMSUFRemet }}
+ {{ total.vFCP }}
{{ total.vBCST }}
{{ total.vST }}
+ {{ total.vFCPST }}
+ {{ total.vFCPSTRet }}
{{ total.vProd }}
{{ total.vFrete }}
{{ total.vSeg }}
{{ total.vDesc }}
{{ total.vII }}
{{ total.vIPI }}
+ {{ total.vIPIDevol }}
{{ total.vPIS }}
{{ total.vCOFINS }}
{{ total.vOutro }}
@@ -750,19 +816,24 @@
{% endif %}
{% endif %}
{% if NFe.infNFe.pag is defined %}
- {% for pag in NFe.infNFe.pag %}
- {{ pag.tPag }}
- {{ pag.vPag }}
- {% if pag.card is defined %}
-
- {{ pag.card.CNPJ }}
- {{ pag.card.tBand }}
- {{ pag.card.cAut }}
-
- {% endif %}
+ {% for pag in NFe.infNFe.pag %}
+
+ {{ pag.indPag }}
+ {{ pag.tPag }}
+ {{ pag.vPag }}
+ {% if pag.card is defined %}
+
+ {{ pag.card.tpIntegra }}
+ {{ pag.card.CNPJ }}
+ {{ pag.card.tBand }}
+ {{ pag.card.cAut }}
+
+ {% endif %}
+ {{ pag.vTroco }}
+
+ {% endfor %}
- {% endfor %}
{% endif %}
{{ NFe.infNFe.infAdic.infAdFisco|normalize|escape }}
diff --git a/pytrustnfe/nfe/templates/NfeConsulta2.xml b/pytrustnfe/nfe/templates/NfeConsulta2.xml
deleted file mode 100644
index e34f47a..0000000
--- a/pytrustnfe/nfe/templates/NfeConsulta2.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
- {{ ambiente }}
- CONSULTAR
- {{ chave_nfe }}
-
\ No newline at end of file
diff --git a/pytrustnfe/nfe/templates/NfeConsultaProtocolo.xml b/pytrustnfe/nfe/templates/NfeConsultaProtocolo.xml
new file mode 100644
index 0000000..588c6d8
--- /dev/null
+++ b/pytrustnfe/nfe/templates/NfeConsultaProtocolo.xml
@@ -0,0 +1,5 @@
+
+ {{ obj.ambiente }}
+ CONSULTAR
+ {{ obj.chave_nfe }}
+
diff --git a/pytrustnfe/nfe/templates/NfeInutilizacao.xml b/pytrustnfe/nfe/templates/NfeInutilizacao.xml
index d495f82..d8a7739 100644
--- a/pytrustnfe/nfe/templates/NfeInutilizacao.xml
+++ b/pytrustnfe/nfe/templates/NfeInutilizacao.xml
@@ -1,4 +1,4 @@
-
+
{{ obj.ambiente }}
INUTILIZAR
diff --git a/pytrustnfe/nfe/templates/NfeRetAutorizacao.xml b/pytrustnfe/nfe/templates/NfeRetAutorizacao.xml
index 7eb4729..c2f07f1 100644
--- a/pytrustnfe/nfe/templates/NfeRetAutorizacao.xml
+++ b/pytrustnfe/nfe/templates/NfeRetAutorizacao.xml
@@ -1,4 +1,4 @@
-
+
{{ obj.ambiente }}
{{ obj.numero_recibo }}
diff --git a/pytrustnfe/nfe/templates/NfeStatusServico.xml b/pytrustnfe/nfe/templates/NfeStatusServico.xml
index 1d41a30..ae84f20 100644
--- a/pytrustnfe/nfe/templates/NfeStatusServico.xml
+++ b/pytrustnfe/nfe/templates/NfeStatusServico.xml
@@ -1,6 +1,6 @@
-
+
{{ obj.ambiente }}
{{ obj.estado }}
STATUS
-
\ No newline at end of file
+
diff --git a/pytrustnfe/nfe/templates/RecepcaoEventoCancelamento.xml b/pytrustnfe/nfe/templates/RecepcaoEvento.xml
similarity index 76%
rename from pytrustnfe/nfe/templates/RecepcaoEventoCancelamento.xml
rename to pytrustnfe/nfe/templates/RecepcaoEvento.xml
index 35d587e..be0f9ef 100644
--- a/pytrustnfe/nfe/templates/RecepcaoEventoCancelamento.xml
+++ b/pytrustnfe/nfe/templates/RecepcaoEvento.xml
@@ -8,13 +8,15 @@
{{ evento.CNPJ }}
{{ evento.chNFe }}
{{ evento.dhEvento }}
- 110111
+ {{ evento.tpEvento }}
{{ evento.nSeqEvento }}
1.00
- Cancelamento
+ {{ evento.descEvento }}
{{ evento.nProt }}
{{ evento.xJust|normalize|escape }}
+ {{ evento.xCorrecao|normalize|escape }}
+ {{ evento.xCondUso }}
diff --git a/pytrustnfe/nfe/templates/RecepcaoEventoCarta.xml b/pytrustnfe/nfe/templates/RecepcaoEventoCarta.xml
deleted file mode 100644
index 377fb96..0000000
--- a/pytrustnfe/nfe/templates/RecepcaoEventoCarta.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
- {{ idLote }}
-
-
- {{ cOrgao }}
- {{ tpAmb }}
- {{ CNPJ }}
- {{ CPF }}
- {{ chNFe }}
- {{ dhEvento }}
- {{ tpEvento }}
- {{ nSeqEvento }}
- 1.00
-
- Carta de Correção
- {{ xCorrecao|normalize|escape }}
- A Carta de Correção é disciplinada pelo § 1º-A do art. 7º do Convênio S/N, de 15 de dezembro de 1970 e pode ser utilizada para regularização de erro ocorrido na emissão de documento fiscal, desde que o erro não esteja relacionado com: I - as variáveis que determinam o valor do imposto tais como: base de cálculo, alíquota, diferença de preço, quantidade, valor da operação ou da prestação; II - a correção de dados cadastrais que implique mudança do remetente ou do destinatário; III - a data de emissão ou de saída.
-
-
-
-
diff --git a/pytrustnfe/nfe/templates/RecepcaoEventoEPEC.xml b/pytrustnfe/nfe/templates/RecepcaoEventoEPEC.xml
deleted file mode 100644
index 12a8478..0000000
--- a/pytrustnfe/nfe/templates/RecepcaoEventoEPEC.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
- 00106151340701
-
-
- 91
- 2
- 10142785000190
- 35140810142785000190550010010615134079599952
- 2014-08-07T04:52:51-03:00
- 110140
- 1
- 1.00
-
- EPEC
- 35
- 1
- 1.26
- 2014-08-07T00:00:00-03:00
- 1
- 495171423115
-
- SP
- 00000000191
- 86.00
- 6.02
- 0
-
-
-
-
-
\ No newline at end of file
diff --git a/pytrustnfe/nfe/templates/RecepcaoEventoManifesto.xml b/pytrustnfe/nfe/templates/RecepcaoEventoManifesto.xml
index 0d77fa3..d592678 100644
--- a/pytrustnfe/nfe/templates/RecepcaoEventoManifesto.xml
+++ b/pytrustnfe/nfe/templates/RecepcaoEventoManifesto.xml
@@ -1,7 +1,7 @@
{{ lote }}
-
+
91
{{ ambiente }}
{{ manifesto.cnpj_empresa }}
diff --git a/pytrustnfe/test/test_comunicacao.py b/pytrustnfe/test/test_comunicacao.py
deleted file mode 100644
index b47c3a1..0000000
--- a/pytrustnfe/test/test_comunicacao.py
+++ /dev/null
@@ -1,20 +0,0 @@
-# coding=utf-8
-'''
-Created on Jun 16, 2015
-
-@author: danimar
-'''
-import unittest
-import os.path
-
-
-XML_RETORNO = '103' \
- '42'
-
-
-class test_comunicacao(unittest.TestCase):
-
- caminho = os.path.dirname(__file__)
-
- def test_envio_nfe(self):
- pass
diff --git a/pytrustnfe/test/test_consulta_cadastro.py b/pytrustnfe/test/test_consulta_cadastro.py
deleted file mode 100644
index 9c63f03..0000000
--- a/pytrustnfe/test/test_consulta_cadastro.py
+++ /dev/null
@@ -1,19 +0,0 @@
-# coding=utf-8
-
-import mock
-import os.path
-import unittest
-from pytrustnfe.certificado import Certificado
-from pytrustnfe.nfe import consulta_cadastro
-
-
-class test_consulta_cadastro(unittest.TestCase):
-
- caminho = os.path.dirname(__file__)
-
- def test_conta_de_cadastro(self):
- pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'r').read()
- pfx = Certificado(pfx_source, '123456')
-
- obj = {'cnpj': '12345678901234', 'estado': '42'}
- consulta_cadastro(pfx, obj=obj, ambiente=1, estado='42')
diff --git a/pytrustnfe/test/test_nfse_paulistana.py b/pytrustnfe/test/test_nfse_paulistana.py
index 0ed4ded..7ad49fb 100644
--- a/pytrustnfe/test/test_nfse_paulistana.py
+++ b/pytrustnfe/test/test_nfse_paulistana.py
@@ -1,143 +1,143 @@
-# coding=utf-8
-
-import mock
-import os.path
-import unittest
-from pytrustnfe.certificado import Certificado
-from pytrustnfe.nfse.paulistana import envio_lote_rps
-from pytrustnfe.nfse.paulistana import cancelamento_nfe
-from pytrustnfe.nfse.assinatura import Assinatura
-from pytrustnfe.nfse.paulistana import sign_tag
-
-
-class test_nfse_paulistana(unittest.TestCase):
-
- caminho = os.path.dirname(__file__)
-
- def _get_nfse(self):
- rps = [
- {
- 'assinatura': '123',
- 'serie': '1',
- 'numero': '1',
- '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',
- 'logradouro': 'Vinicius de Moraes, 42',
- 'numero': '42',
- 'bairro': 'Corrego',
- 'cidade': 'Floripa',
- 'uf': 'SC',
- 'cep': '88037240',
- },
- 'codigo_atividade': '07498',
- 'aliquota_atividade': '5.00',
- 'descricao': 'Venda de servico'
- }
- ]
- nfse = {
- 'cpf_cnpj': '12345678901234',
- 'data_inicio': '2016-08-29',
- 'data_fim': '2016-08-29',
- 'lista_rps': rps
- }
- return nfse
-
- def test_envio_nfse(self):
- pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'r').read()
- pfx = Certificado(pfx_source, '123456')
-
- nfse = self._get_nfse()
- path = os.path.join(os.path.dirname(__file__), 'XMLs')
- xml_return = open(os.path.join(
- path, 'paulistana_resultado.xml'), 'r').read()
-
- with mock.patch('pytrustnfe.nfse.paulistana.get_authenticated_client') as client:
- retorno = mock.MagicMock()
- client.return_value = retorno
- retorno.service.EnvioLoteRPS.return_value = xml_return
-
- retorno = envio_lote_rps(pfx, nfse=nfse)
-
- self.assertEqual(retorno['received_xml'], xml_return)
- self.assertEqual(retorno['object'].Cabecalho.Sucesso, True)
- self.assertEqual(
- retorno['object'].ChaveNFeRPS.ChaveNFe.NumeroNFe, 446)
- self.assertEqual(
- retorno['object'].ChaveNFeRPS.ChaveRPS.NumeroRPS, 6)
-
- def test_nfse_signature(self):
- pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'r').read()
- pfx = Certificado(pfx_source, '123456')
-
- nfse = self._get_nfse()
- path = os.path.join(os.path.dirname(__file__), 'XMLs')
- xml_sent = open(os.path.join(
- path, 'paulistana_signature.xml'), 'r').read()
-
- with mock.patch('pytrustnfe.nfse.paulistana.get_authenticated_client') as client:
- retorno = mock.MagicMock()
- client.return_value = retorno
- retorno.service.EnvioLoteRPS.return_value = ''
-
- retorno = envio_lote_rps(pfx, nfse=nfse)
- self.assertEqual(retorno['sent_xml'], xml_sent)
-
- def _get_cancelamento(self):
- return {
- 'cnpj_remetente': '123',
- 'assinatura': 'assinatura',
- 'numero_nfse': '456',
- 'inscricao_municipal': '654',
- 'codigo_verificacao': '789',
- }
-
- def test_cancelamento_nfse_ok(self):
- pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'r').read()
- pfx = Certificado(pfx_source, '123456')
- cancelamento = self._get_cancelamento()
-
- path = os.path.join(os.path.dirname(__file__), 'XMLs')
- xml_return = open(os.path.join(
- path, 'paulistana_canc_ok.xml'), 'r').read()
-
- with mock.patch('pytrustnfe.nfse.paulistana.get_authenticated_client') as client:
- retorno = mock.MagicMock()
- client.return_value = retorno
- retorno.service.CancelamentoNFe.return_value = xml_return
-
- retorno = cancelamento_nfe(pfx, cancelamento=cancelamento)
-
- self.assertEqual(retorno['received_xml'], xml_return)
- self.assertEqual(retorno['object'].Cabecalho.Sucesso, True)
-
- def test_cancelamento_nfse_com_erro(self):
- pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'r').read()
- pfx = Certificado(pfx_source, '123456')
- cancelamento = self._get_cancelamento()
-
- path = os.path.join(os.path.dirname(__file__), 'XMLs')
- xml_return = open(os.path.join(
- path, 'paulistana_canc_errado.xml'), 'r').read()
-
- with mock.patch('pytrustnfe.nfse.paulistana.get_authenticated_client') as client:
- retorno = mock.MagicMock()
- client.return_value = retorno
- retorno.service.CancelamentoNFe.return_value = xml_return
-
- retorno = cancelamento_nfe(pfx, cancelamento=cancelamento)
-
- self.assertEqual(retorno['received_xml'], xml_return)
- self.assertEqual(retorno['object'].Cabecalho.Sucesso, False)
- self.assertEqual(
- retorno['object'].Erro.ChaveNFe.NumeroNFe, 446)
+# # coding=utf-8
+#
+# import mock
+# import os.path
+# import unittest
+# from pytrustnfe.certificado import Certificado
+# from pytrustnfe.nfse.paulistana import envio_lote_rps
+# from pytrustnfe.nfse.paulistana import cancelamento_nfe
+# from pytrustnfe.nfse.assinatura import Assinatura
+# from pytrustnfe.nfse.paulistana import sign_tag
+#
+#
+# class test_nfse_paulistana(unittest.TestCase):
+#
+# caminho = os.path.dirname(__file__)
+#
+# def _get_nfse(self):
+# rps = [
+# {
+# 'assinatura': '123',
+# 'serie': '1',
+# 'numero': '1',
+# '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',
+# 'logradouro': 'Vinicius de Moraes, 42',
+# 'numero': '42',
+# 'bairro': 'Corrego',
+# 'cidade': 'Floripa',
+# 'uf': 'SC',
+# 'cep': '88037240',
+# },
+# 'codigo_atividade': '07498',
+# 'aliquota_atividade': '5.00',
+# 'descricao': 'Venda de servico'
+# }
+# ]
+# nfse = {
+# 'cpf_cnpj': '12345678901234',
+# 'data_inicio': '2016-08-29',
+# 'data_fim': '2016-08-29',
+# 'lista_rps': rps
+# }
+# return nfse
+#
+# def test_envio_nfse(self):
+# pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'r').read()
+# pfx = Certificado(pfx_source, '123456')
+#
+# nfse = self._get_nfse()
+# path = os.path.join(os.path.dirname(__file__), 'XMLs')
+# xml_return = open(os.path.join(
+# path, 'paulistana_resultado.xml'), 'r').read()
+#
+# with mock.patch('pytrustnfe.nfse.paulistana.get_authenticated_client') as client:
+# retorno = mock.MagicMock()
+# client.return_value = retorno
+# retorno.service.EnvioLoteRPS.return_value = xml_return
+#
+# retorno = envio_lote_rps(pfx, nfse=nfse)
+#
+# self.assertEqual(retorno['received_xml'], xml_return)
+# self.assertEqual(retorno['object'].Cabecalho.Sucesso, True)
+# self.assertEqual(
+# retorno['object'].ChaveNFeRPS.ChaveNFe.NumeroNFe, 446)
+# self.assertEqual(
+# retorno['object'].ChaveNFeRPS.ChaveRPS.NumeroRPS, 6)
+#
+# def test_nfse_signature(self):
+# pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'r').read()
+# pfx = Certificado(pfx_source, '123456')
+#
+# nfse = self._get_nfse()
+# path = os.path.join(os.path.dirname(__file__), 'XMLs')
+# xml_sent = open(os.path.join(
+# path, 'paulistana_signature.xml'), 'r').read()
+#
+# with mock.patch('pytrustnfe.nfse.paulistana.get_authenticated_client') as client:
+# retorno = mock.MagicMock()
+# client.return_value = retorno
+# retorno.service.EnvioLoteRPS.return_value = ''
+#
+# retorno = envio_lote_rps(pfx, nfse=nfse)
+# self.assertEqual(retorno['sent_xml'], xml_sent)
+#
+# def _get_cancelamento(self):
+# return {
+# 'cnpj_remetente': '123',
+# 'assinatura': 'assinatura',
+# 'numero_nfse': '456',
+# 'inscricao_municipal': '654',
+# 'codigo_verificacao': '789',
+# }
+#
+# def test_cancelamento_nfse_ok(self):
+# pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'r').read()
+# pfx = Certificado(pfx_source, '123456')
+# cancelamento = self._get_cancelamento()
+#
+# path = os.path.join(os.path.dirname(__file__), 'XMLs')
+# xml_return = open(os.path.join(
+# path, 'paulistana_canc_ok.xml'), 'r').read()
+#
+# with mock.patch('pytrustnfe.nfse.paulistana.get_authenticated_client') as client:
+# retorno = mock.MagicMock()
+# client.return_value = retorno
+# retorno.service.CancelamentoNFe.return_value = xml_return
+#
+# retorno = cancelamento_nfe(pfx, cancelamento=cancelamento)
+#
+# self.assertEqual(retorno['received_xml'], xml_return)
+# self.assertEqual(retorno['object'].Cabecalho.Sucesso, True)
+#
+# def test_cancelamento_nfse_com_erro(self):
+# pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'r').read()
+# pfx = Certificado(pfx_source, '123456')
+# cancelamento = self._get_cancelamento()
+#
+# path = os.path.join(os.path.dirname(__file__), 'XMLs')
+# xml_return = open(os.path.join(
+# path, 'paulistana_canc_errado.xml'), 'r').read()
+#
+# with mock.patch('pytrustnfe.nfse.paulistana.get_authenticated_client') as client:
+# retorno = mock.MagicMock()
+# client.return_value = retorno
+# retorno.service.CancelamentoNFe.return_value = xml_return
+#
+# retorno = cancelamento_nfe(pfx, cancelamento=cancelamento)
+#
+# self.assertEqual(retorno['received_xml'], xml_return)
+# self.assertEqual(retorno['object'].Cabecalho.Sucesso, False)
+# self.assertEqual(
+# retorno['object'].Erro.ChaveNFe.NumeroNFe, 446)
diff --git a/pytrustnfe/test/test_servidores.py b/pytrustnfe/test/test_servidores.py
index 2083f2c..bc6252a 100644
--- a/pytrustnfe/test/test_servidores.py
+++ b/pytrustnfe/test/test_servidores.py
@@ -7,22 +7,21 @@ Created on Jun 14, 2015
import unittest
from pytrustnfe.Servidores import localizar_url, localizar_qrcode
-url_ba = 'https://nfe.sefaz.ba.gov.br/webservices/NfeAutorizacao/NfeAutoriza\
-cao.asmx'
+url_ba = 'https://nfe.sefaz.ba.gov.br/webservices/NFeAutorizacao4/NFeAutoriza\
+cao4.asmx?wsdl'
-url_sp = 'https://nfe.fazenda.sp.gov.br/ws/nfeautorizacao.asmx'
+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_sc = 'https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NfeAutorizacao.asmx'
+url_sc = 'https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx?wsdl'
url_rs = 'https://nfe.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx'
url_cad_rs = 'https://cad.sefazrs.rs.gov.br/ws/cadconsultacadastro/cadcon\
sultacadastro2.asmx'
-url_cad_sc = 'https://cad.svrs.rs.gov.br/ws/CadConsultaCadastro/CadConsult\
-aCadastro2.asmx'
+url_cad_sc = 'https://cad.svrs.rs.gov.br/ws/cadconsultacadastro/cadconsultacadastro2.asmx?wsdl'
class test_servidores(unittest.TestCase):
diff --git a/pytrustnfe/test/test_utils.py b/pytrustnfe/test/test_utils.py
index 64cf1fa..1bb3a56 100644
--- a/pytrustnfe/test/test_utils.py
+++ b/pytrustnfe/test/test_utils.py
@@ -8,7 +8,7 @@ import unittest
import datetime
from pytrustnfe.utils import date_tostring, datetime_tostring, \
gerar_chave
-from pytrustnfe.utils import ChaveNFe, CabecalhoSoap
+from pytrustnfe.utils import ChaveNFe
class test_utils(unittest.TestCase):
@@ -18,12 +18,6 @@ class test_utils(unittest.TestCase):
'tipo': 0, 'codigo': '26730161'
}
- def test_cabecalho_soap(self):
- head = CabecalhoSoap(versao=1, estado='SC', soap_action='Autorizacao')
- self.assertEqual(head.versao, 1)
- self.assertEqual(head.estado, 'SC')
- self.assertEqual(head.soap_action, 'Autorizacao')
-
def test_date_tostring(self):
hoje = datetime.date.today()
data = date_tostring(hoje)
diff --git a/pytrustnfe/utils.py b/pytrustnfe/utils.py
index 80cbd24..80dbf59 100644
--- a/pytrustnfe/utils.py
+++ b/pytrustnfe/utils.py
@@ -8,14 +8,6 @@ from datetime import date, datetime
import lxml.etree as ET
-class CabecalhoSoap(object):
-
- def __init__(self, **kwargs):
- self.versao = kwargs.pop('versao', '')
- self.estado = kwargs.pop('estado', '')
- self.soap_action = kwargs.pop('soap_action', '')
-
-
class ChaveNFe(object):
def __init__(self, **kwargs):
diff --git a/setup.py b/setup.py
index 0b82b35..72db6ef 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
# coding=utf-8
from setuptools import setup, find_packages
-VERSION = "0.1.49"
+VERSION = "0.1.50"
setup(
name="PyTrustNFe",
@@ -41,7 +41,8 @@ later (LGPLv2+)',
'suds >= 0.4',
'suds_requests >= 0.3',
'reportlab',
- 'pytz'
+ 'pytz',
+ 'zeep'
],
test_suite='nose.collector',
tests_require=[