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=[