From d4cf24b93a0e794993e092d981601948bd57e25c Mon Sep 17 00:00:00 2001 From: Raphael Rodrigues Nogueira Date: Thu, 8 Feb 2018 00:03:51 -0300 Subject: [PATCH 1/4] =?UTF-8?q?ATUALIZA=C3=87=C3=83O=20CANCELAMENTO=20NFE?= =?UTF-8?q?=20PAR=C3=81=20(#74)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Servidor Cancelamento SVAN Servidor Cancelamento SVAN * Update Servidores.py --- pytrustnfe/Servidores.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pytrustnfe/Servidores.py b/pytrustnfe/Servidores.py index 8ff98cd..181462b 100644 --- a/pytrustnfe/Servidores.py +++ b/pytrustnfe/Servidores.py @@ -165,6 +165,7 @@ SVAN = { NFE_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', @@ -174,6 +175,7 @@ SVAN = { NFE_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', From 93af1134514ef2af6f03d0ed8210601fe57a399e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio=20Luna?= Date: Fri, 23 Mar 2018 15:38:13 -0300 Subject: [PATCH 2/4] =?UTF-8?q?Corrige=20met=C3=B3dos=20e=20layout=20para?= =?UTF-8?q?=20consulta=20de=20protocolo=20da=20NF-e.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pytrustnfe/Servidores.py | 2 +- pytrustnfe/nfe/__init__.py | 5 +++-- pytrustnfe/nfe/templates/NfeConsulta2.xml | 5 +++++ pytrustnfe/nfe/templates/NfeConsultaProtocolo.xml | 6 ------ setup.py | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 pytrustnfe/nfe/templates/NfeConsulta2.xml delete mode 100644 pytrustnfe/nfe/templates/NfeConsultaProtocolo.xml diff --git a/pytrustnfe/Servidores.py b/pytrustnfe/Servidores.py index 181462b..72a0573 100644 --- a/pytrustnfe/Servidores.py +++ b/pytrustnfe/Servidores.py @@ -6,7 +6,7 @@ WS_NFE_AUTORIZACAO = 'NfeAutorizacao' WS_NFE_RET_AUTORIZACAO = 'NfeRetAutorizacao' WS_NFE_CANCELAMENTO = 'RecepcaoEventoCancelamento' WS_NFE_INUTILIZACAO = 'NfeInutilizacao' -WS_NFE_CONSULTA = 'NfeConsultaProtocolo' +WS_NFE_CONSULTA = 'NfeConsulta2' WS_NFE_SITUACAO = 'NfeStatusServico' WS_NFE_CADASTRO = 'NfeConsultaCadastro' diff --git a/pytrustnfe/nfe/__init__.py b/pytrustnfe/nfe/__init__.py index f00ee9f..ea57408 100644 --- a/pytrustnfe/nfe/__init__.py +++ b/pytrustnfe/nfe/__init__.py @@ -27,6 +27,7 @@ def _build_header(method, **kwargs): 'NFeDistribuicaoDFe': ('NFeDistribuicaoDFe/nfeDistDFeInteresse', '1.00'), 'RecepcaoEventoManifesto': ('RecepcaoEvento', '1.00'), + 'NfeConsulta2': ('NfeConsulta2', '3.10') } vals = {'estado': kwargs['estado'], 'soap_action': action[method][0], @@ -139,7 +140,7 @@ def _send(certificado, method, sign, **kwargs): pagamento.append(tipo_pagamento) pagamento.append(valor) transp = xmlElem_send.find( - ".//{http://www.portalfiscal.inf.br/nfe}transp") + ".//{http://www.portalfiscal.inf.br/nfe}transp") transp.addnext(pagamento) if sign: @@ -212,7 +213,7 @@ def inutilizar_nfe(certificado, **kwargs): # Assinar def consultar_protocolo_nfe(certificado, **kwargs): - return _send(certificado, 'NfeConsultaProtocolo', True, **kwargs) + return _send(certificado, 'NfeConsulta2', False, **kwargs) def nfe_status_servico(certificado, **kwargs): diff --git a/pytrustnfe/nfe/templates/NfeConsulta2.xml b/pytrustnfe/nfe/templates/NfeConsulta2.xml new file mode 100644 index 0000000..e34f47a --- /dev/null +++ b/pytrustnfe/nfe/templates/NfeConsulta2.xml @@ -0,0 +1,5 @@ + + {{ ambiente }} + CONSULTAR + {{ chave_nfe }} + \ No newline at end of file diff --git a/pytrustnfe/nfe/templates/NfeConsultaProtocolo.xml b/pytrustnfe/nfe/templates/NfeConsultaProtocolo.xml deleted file mode 100644 index 0156d9e..0000000 --- a/pytrustnfe/nfe/templates/NfeConsultaProtocolo.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - {{ obj.ambiente }} - CONSULTAR - {{ obj.chave_nfe }} - \ No newline at end of file diff --git a/setup.py b/setup.py index 2b186be..d862966 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ # coding=utf-8 from setuptools import setup, find_packages -VERSION = "0.1.44" +VERSION = "0.1.45" setup( name="PyTrustNFe", From db083bfe59749df5b1846f9450fc9fbd3fe90dcc Mon Sep 17 00:00:00 2001 From: carcaroff Date: Thu, 29 Mar 2018 18:24:59 -0300 Subject: [PATCH 3/4] [FEAT][10.0]Cancelado no DANFE --- pytrustnfe/nfe/danfe.py | 12 ++++++++++++ pytrustnfe/utils.py | 13 +++++++++++++ setup.py | 2 +- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/pytrustnfe/nfe/danfe.py b/pytrustnfe/nfe/danfe.py index c1fb83c..4cb1a83 100644 --- a/pytrustnfe/nfe/danfe.py +++ b/pytrustnfe/nfe/danfe.py @@ -181,6 +181,8 @@ class danfe(object): ".//{http://www.portalfiscal.inf.br/nfe}protNFe") elem_emit = oXML.find(".//{http://www.portalfiscal.inf.br/nfe}emit") elem_ide = oXML.find(".//{http://www.portalfiscal.inf.br/nfe}ide") + elem_evento = oXML.find( + ".//{http://www.portalfiscal.inf.br/nfe}infEvento") cChave = elem_infNFe.attrib.get('Id')[3:] barcode128 = code128.Code128( @@ -308,6 +310,16 @@ class danfe(object): self.string(self.nLeft + 65, 449, 'SEM VALOR FISCAL') self.canvas.restoreState() + # Cancelado + if tagtext(oNode=elem_evento, cTag='xEvento') == \ + 'Cancelamento registrado': + self.canvas.saveState() + self.canvas.rotate(45) + self.canvas.setFont('NimbusSanL-Bold', 60) + self.canvas.setFillColorRGB(1, 0.2, 0.2) + self.string(self.nLeft + 80, 275, 'CANCELADO') + self.canvas.restoreState() + self.nlin += 48 def destinatario(self, oXML=None): diff --git a/pytrustnfe/utils.py b/pytrustnfe/utils.py index b53ba37..b37080e 100644 --- a/pytrustnfe/utils.py +++ b/pytrustnfe/utils.py @@ -95,3 +95,16 @@ def gerar_nfeproc(envio, recibo): root.append(nfe) root.append(protocolo) return ET.tostring(root) + + +def gerar_nfeproc_cancel(nfe_proc, cancelamento): + import ipdb + ipdb.set_trace() + docEnvio = ET.fromstring(nfe_proc) + docCancel = ET.fromstring(cancelamento) + + ev_cancelamento = _find_node(docCancel, "retEvento") + if ev_cancelamento is None: + return '' + docEnvio.append(ev_cancelamento) + return ET.tostring(docEnvio) diff --git a/setup.py b/setup.py index d862966..514789b 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ # coding=utf-8 from setuptools import setup, find_packages -VERSION = "0.1.45" +VERSION = "0.1.46" setup( name="PyTrustNFe", From f5167cee96524dc8f85824edccd5b0bd3adf4509 Mon Sep 17 00:00:00 2001 From: Johny Chen Jy <31947361+carcaroff@users.noreply.github.com> Date: Thu, 29 Mar 2018 18:34:07 -0300 Subject: [PATCH 4/4] Update utils.py ;-; --- pytrustnfe/utils.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/pytrustnfe/utils.py b/pytrustnfe/utils.py index b37080e..80cbd24 100644 --- a/pytrustnfe/utils.py +++ b/pytrustnfe/utils.py @@ -98,8 +98,6 @@ def gerar_nfeproc(envio, recibo): def gerar_nfeproc_cancel(nfe_proc, cancelamento): - import ipdb - ipdb.set_trace() docEnvio = ET.fromstring(nfe_proc) docCancel = ET.fromstring(cancelamento)