From f20f46e184aea4efe2a58e0598a6e1607a623c27 Mon Sep 17 00:00:00 2001 From: Junior Tada Date: Wed, 23 Dec 2015 17:02:30 -0200 Subject: [PATCH] =?UTF-8?q?Serializa=C3=A7ao=20cancelar=20ginfes=20vers?= =?UTF-8?q?=C3=A3o=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pynfe/processamento/autorizador_nfse.py | 20 +++++++++++++++----- pynfe/processamento/serializacao.py | 5 ++++- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/pynfe/processamento/autorizador_nfse.py b/pynfe/processamento/autorizador_nfse.py index 43fcde5..2a75a64 100644 --- a/pynfe/processamento/autorizador_nfse.py +++ b/pynfe/processamento/autorizador_nfse.py @@ -1,4 +1,3 @@ -import ipdb from pyxb import BIND from importlib import import_module # import pynfe.utils.nfse.ginfes.servico_enviar_lote_rps_envio_v03 as servico_enviar_lote_rps_envio_v03 @@ -369,7 +368,7 @@ class SerializacaoGinfes(InterfaceAutorizador): enviarLote.LoteRps = lote return enviarLote.toxml("UTF-8", element_name='ns1:EnviarLoteRpsEnvio') - def cancelar(self, nfse): + def cancelar(self, nfse, codigo): """Retorna string de um XML gerado a partir do XML Schema (XSD). Binding gerado pelo modulo PyXB.""" # id nfse @@ -383,7 +382,7 @@ class SerializacaoGinfes(InterfaceAutorizador): info_pedido = _tipos.tcInfPedidoCancelamento() info_pedido.Id = '1' info_pedido.IdentificacaoNfse = id_nfse - info_pedido.CodigoCancelamento = 'C001' + info_pedido.CodigoCancelamento = codigo # Pedido pedido = _tipos.tcPedidoCancelamento() @@ -393,8 +392,19 @@ class SerializacaoGinfes(InterfaceAutorizador): cancelar = servico_cancelar_nfse_envio_v03.CancelarNfseEnvio() cancelar.Pedido = pedido - return cancelar.toxml(element_name='CancelarNfseEnvio') - + return cancelar.toxml(element_name='ns1:CancelarNfseEnvio') + + def cancelar_v2(self, nfse): + ## serialização utilizando lxml + from lxml import etree + ns1 = 'http://www.ginfes.com.br/servico_cancelar_nfse_envio' + ns2 = 'http://www.ginfes.com.br/tipos' + raiz = etree.Element('{%s}CancelarNfseEnvio'%ns1, nsmap={'ns1': ns1, 'ns2':ns2}) + prestador = etree.SubElement(raiz, '{%s}Prestador'%ns1) + etree.SubElement(prestador, '{%s}Cnpj'%ns2).text = nfse.emitente.cnpj + etree.SubElement(prestador, '{%s}InscricaoMunicipal'%ns2).text = nfse.emitente.inscricao_municipal + etree.SubElement(raiz, '{%s}NumeroNfse'%ns1).text = nfse.identificador + return etree.tostring(raiz, encoding='unicode') def cabecalho(self): # info diff --git a/pynfe/processamento/serializacao.py b/pynfe/processamento/serializacao.py index 94106b6..1a1cda2 100644 --- a/pynfe/processamento/serializacao.py +++ b/pynfe/processamento/serializacao.py @@ -616,7 +616,10 @@ class SerializacaoNfse(object): def cancelar(self, nfse): if self.autorizador.lower() == 'ginfes': from pynfe.processamento.autorizador_nfse import SerializacaoGinfes - return SerializacaoGinfes().cancelar(nfse) + ## versao 3 + #return SerializacaoGinfes().cancelar(nfse) + ## versao 2 + return SerializacaoGinfes().cancelar_v2(nfse) elif self.autorizador.lower() == 'betha': from pynfe.processamento.autorizador_nfse import SerializacaoBetha return SerializacaoBetha().cancelar(nfse)