Browse Source

Serialização de cancelamenteo de NFS-e ginfes

pull/7/head
Junior Tada 10 years ago
parent
commit
3703487d1f
  1. 29
      pynfe/processamento/autorizador_nfse.py
  2. 26
      pynfe/processamento/comunicacao.py
  3. 11
      pynfe/processamento/serializacao.py
  4. 4
      pynfe/utils/nfse/ginfes/servico_cancelar_nfse_envio_v03.py

29
pynfe/processamento/autorizador_nfse.py

@ -244,8 +244,10 @@ class SerializacaoGinfes(InterfaceAutorizador):
# importa
global _tipos, servico_consultar_nfse_envio_v03
global servico_enviar_lote_rps_envio_v03, cabecalho_v03
global servico_cancelar_nfse_envio_v03
_tipos = import_module('pynfe.utils.nfse.ginfes._tipos')
servico_consultar_nfse_envio_v03 = import_module('pynfe.utils.nfse.ginfes.servico_consultar_nfse_envio_v03')
servico_cancelar_nfse_envio_v03 = import_module('pynfe.utils.nfse.ginfes.servico_cancelar_nfse_envio_v03')
servico_enviar_lote_rps_envio_v03 = import_module('pynfe.utils.nfse.ginfes.servico_enviar_lote_rps_envio_v03')
cabecalho_v03 = import_module('pynfe.utils.nfse.ginfes.cabecalho_v03')
@ -367,6 +369,33 @@ class SerializacaoGinfes(InterfaceAutorizador):
enviarLote.LoteRps = lote
return enviarLote.toxml("UTF-8", element_name='ns1:EnviarLoteRpsEnvio')
def cancelar(self, nfse):
"""Retorna string de um XML gerado a partir do
XML Schema (XSD). Binding gerado pelo modulo PyXB."""
# id nfse
id_nfse = _tipos.tcIdentificacaoNfse()
id_nfse.Numero = nfse.identificador
id_nfse.Cnpj = nfse.emitente.cnpj
id_nfse.InscricaoMunicipal = nfse.emitente.inscricao_municipal
id_nfse.CodigoMunicipio = nfse.emitente.endereco_cod_municipio
# Info Pedido de cancelamento
info_pedido = _tipos.tcInfPedidoCancelamento()
info_pedido.Id = '1'
info_pedido.IdentificacaoNfse = id_nfse
info_pedido.CodigoCancelamento = 'C001'
# Pedido
pedido = _tipos.tcPedidoCancelamento()
pedido.InfPedidoCancelamento = info_pedido
# Cancelamento
cancelar = servico_cancelar_nfse_envio_v03.CancelarNfseEnvio()
cancelar.Pedido = pedido
return cancelar.toxml(element_name='CancelarNfseEnvio')
def cabecalho(self):
# info
cabecalho = cabecalho_v03.cabecalho()

26
pynfe/processamento/comunicacao.py

@ -427,16 +427,28 @@ class ComunicacaoNfse(Comunicacao):
# comunica via wsdl
return self._post2(url, xml, 'consultaFaixa')
def cancelar(self, autorizador, nota):
def cancelar(self, autorizador, xml):
# url do serviço
url = self._get_url(autorizador)
# Betha
if autorizador.upper() == 'BETHA':
self._namespace = NAMESPACE_BETHA
self._versao = '2.02'
# url do serviço
url = self._get_url(autorizador)
# xml
xml = etree.tostring(nota, encoding='unicode', pretty_print=False)
# comunica via wsdl
return self._post2(url, xml, 'cancelar')
# comunica via wsdl
return self._post(url, xml, 'cancelar')
# Ginfes
elif autorizador.upper() == 'GINFES':
self._namespace = 'http://www.ginfes.com.br/cabecalho_v03.xsd'
self._versao = '3'
# xml
xml = '<?xml version="1.0" encoding="UTF-8"?>' + xml
# comunica via wsdl
return xml
#return self._post_https(url, xml, 'consulta')
# TODO outros autorizadres
else:
raise Exception('Autorizador não suportado!')
def _cabecalho(self, retorna_string=True):
u"""Monta o XML do cabeçalho da requisição wsdl"""

11
pynfe/processamento/serializacao.py

@ -612,7 +612,16 @@ class SerializacaoNfse(object):
if self.autorizador.lower() == 'ginfes':
from pynfe.processamento.autorizador_nfse import SerializacaoGinfes
return SerializacaoGinfes().consultar_nfse(emitente, numero, inicio, fim)
def cancelar(self, nfse):
if self.autorizador.lower() == 'ginfes':
from pynfe.processamento.autorizador_nfse import SerializacaoGinfes
return SerializacaoGinfes().cancelar(nfse)
elif self.autorizador.lower() == 'betha':
from pynfe.processamento.autorizador_nfse import SerializacaoBetha
return SerializacaoBetha().cancelar(nfse)
else:
raise Exception('Autorizador não suportado para cancelamento!')
class SerializacaoPipes(Serializacao):
"""Serialização utilizada pela SEFAZ-SP para a importação de notas."""

4
pynfe/utils/nfse/ginfes/servico_cancelar_nfse_envio_v03.py

@ -24,8 +24,8 @@ if pyxb.__version__ != _PyXBVersion:
raise pyxb.PyXBVersionError(_PyXBVersion)
# Import bindings for namespaces imported into schema
import _tipos as _ImportedBinding__tipos
import _dsig as _ImportedBinding__dsig
from pynfe.utils.nfse.ginfes import _tipos as _ImportedBinding__tipos
from pynfe.utils.nfse.ginfes import _dsig as _ImportedBinding__dsig
import pyxb.binding.datatypes
# NOTE: All namespace declarations are reserved within the binding

Loading…
Cancel
Save