Browse Source

refatoração em comunicação nfse

pull/7/head
Leonardo Tada 10 years ago
parent
commit
493909378b
  1. 4
      pynfe/processamento/autorizador_nfse.py
  2. 61
      pynfe/processamento/comunicacao.py

4
pynfe/processamento/autorizador_nfse.py

@ -303,7 +303,7 @@ class SerializacaoGinfes(InterfaceAutorizador):
consulta = servico_consultar_lote_rps_envio_v03.ConsultarLoteRpsEnvio() consulta = servico_consultar_lote_rps_envio_v03.ConsultarLoteRpsEnvio()
consulta.Prestador = id_prestador consulta.Prestador = id_prestador
consulta.Protocolo = numero
consulta.Protocolo = str(numero)
return consulta.toxml(element_name='ns1:ConsultarLoteRps') return consulta.toxml(element_name='ns1:ConsultarLoteRps')
@ -315,7 +315,7 @@ class SerializacaoGinfes(InterfaceAutorizador):
consulta = servico_consultar_situacao_lote_rps_envio_v03.ConsultarSituacaoLoteRpsEnvio() consulta = servico_consultar_situacao_lote_rps_envio_v03.ConsultarSituacaoLoteRpsEnvio()
consulta.Prestador = id_prestador consulta.Prestador = id_prestador
consulta.Protocolo = numero
consulta.Protocolo = str(numero)
return consulta.toxml(element_name='ns1:ConsultarSituacaoLoteRps') return consulta.toxml(element_name='ns1:ConsultarSituacaoLoteRps')

61
pynfe/processamento/comunicacao.py

@ -382,26 +382,27 @@ class ComunicacaoNfse(Comunicacao):
_versao = '' _versao = ''
_namespace = '' _namespace = ''
def __init__(self, certificado, certificado_senha, homologacao=False):
def __init__(self, certificado, certificado_senha, autorizador, homologacao=False):
self.certificado = certificado self.certificado = certificado
self.certificado_senha = certificado_senha self.certificado_senha = certificado_senha
self._ambiente = 2 if homologacao else 1 self._ambiente = 2 if homologacao else 1
self.autorizador = autorizador.upper()
def autorizacao(self, autorizador, nota):
if autorizador.upper() == 'BETHA':
def autorizacao(self, nota):
if self.autorizador == 'BETHA':
self._namespace = NAMESPACE_BETHA self._namespace = NAMESPACE_BETHA
self._versao = '2.02' self._versao = '2.02'
# url do serviço # url do serviço
url = self._get_url(autorizador)
url = self._get_url()
# xml # xml
xml = etree.tostring(nota, encoding='unicode', pretty_print=False) xml = etree.tostring(nota, encoding='unicode', pretty_print=False)
# comunica via wsdl # comunica via wsdl
return self._post2(url, xml, 'gerar') return self._post2(url, xml, 'gerar')
def enviar_lote(self, autorizador, xml):
def enviar_lote(self, xml):
# url do serviço # url do serviço
url = self._get_url(autorizador)
if autorizador.upper() == 'GINFES':
url = self._get_url()
if self.autorizador == 'GINFES':
self._namespace = 'http://www.ginfes.com.br/cabecalho_v03.xsd' self._namespace = 'http://www.ginfes.com.br/cabecalho_v03.xsd'
self._versao = '3' self._versao = '3'
# comunica via wsdl # comunica via wsdl
@ -409,10 +410,10 @@ class ComunicacaoNfse(Comunicacao):
else: else:
raise Exception('Este método só esta implementado no autorizador ginfes.') raise Exception('Este método só esta implementado no autorizador ginfes.')
def consulta(self, autorizador, xml):
def consultar(self, xml):
# url do serviço # url do serviço
url = self._get_url(autorizador)
if autorizador.upper() == 'GINFES':
url = self._get_url()
if self.autorizador == 'GINFES':
self._namespace = 'http://www.ginfes.com.br/cabecalho_v03.xsd' self._namespace = 'http://www.ginfes.com.br/cabecalho_v03.xsd'
self._versao = '3' self._versao = '3'
# xml # xml
@ -422,28 +423,28 @@ class ComunicacaoNfse(Comunicacao):
else: else:
raise Exception('Este método só esta implementado no autorizador ginfes.') raise Exception('Este método só esta implementado no autorizador ginfes.')
def consulta_rps(self, autorizador, xml):
if autorizador.upper() == 'BETHA':
def consultar_rps(self, xml):
if self.autorizador == 'BETHA':
self._namespace = NAMESPACE_BETHA self._namespace = NAMESPACE_BETHA
self._versao = '2.02' self._versao = '2.02'
# url do serviço # url do serviço
url = self._get_url(autorizador)
url = self._get_url()
# comunica via wsdl # comunica via wsdl
return self._post2(url, xml, 'consultaRps') return self._post2(url, xml, 'consultaRps')
def consulta_faixa(self, autorizador, xml):
if autorizador.upper() == 'BETHA':
def consultar_faixa(self, xml):
if self.autorizador == 'BETHA':
self._namespace = NAMESPACE_BETHA self._namespace = NAMESPACE_BETHA
self._versao = '2.02' self._versao = '2.02'
# url do serviço # url do serviço
url = self._get_url(autorizador)
url = self._get_url()
# comunica via wsdl # comunica via wsdl
return self._post2(url, xml, 'consultaFaixa') return self._post2(url, xml, 'consultaFaixa')
def consulta_lote(self, autorizador, xml):
def consultar_lote(self, xml):
# url do serviço # url do serviço
url = self._get_url(autorizador)
if autorizador.upper() == 'GINFES':
url = self._get_url()
if self.autorizador == 'GINFES':
self._namespace = 'http://www.ginfes.com.br/cabecalho_v03.xsd' self._namespace = 'http://www.ginfes.com.br/cabecalho_v03.xsd'
self._versao = '3' self._versao = '3'
# comunica via wsdl # comunica via wsdl
@ -451,10 +452,10 @@ class ComunicacaoNfse(Comunicacao):
else: else:
raise Exception('Este método só esta implementado no autorizador ginfes.') raise Exception('Este método só esta implementado no autorizador ginfes.')
def consulta_situacao_lote(self, autorizador, xml):
def consultar_situacao_lote(self, xml):
# url do serviço # url do serviço
url = self._get_url(autorizador)
if autorizador.upper() == 'GINFES':
url = self._get_url()
if self.autorizador == 'GINFES':
self._namespace = 'http://www.ginfes.com.br/cabecalho_v03.xsd' self._namespace = 'http://www.ginfes.com.br/cabecalho_v03.xsd'
self._versao = '3' self._versao = '3'
# comunica via wsdl # comunica via wsdl
@ -462,17 +463,17 @@ class ComunicacaoNfse(Comunicacao):
else: else:
raise Exception('Este método só esta implementado no autorizador ginfes.') raise Exception('Este método só esta implementado no autorizador ginfes.')
def cancelar(self, autorizador, xml):
def cancelar(self, xml):
# url do serviço # url do serviço
url = self._get_url(autorizador)
url = self._get_url()
# Betha # Betha
if autorizador.upper() == 'BETHA':
if self.autorizador == 'BETHA':
self._namespace = NAMESPACE_BETHA self._namespace = NAMESPACE_BETHA
self._versao = '2.02' self._versao = '2.02'
# comunica via wsdl # comunica via wsdl
return self._post(url, xml, 'cancelar') return self._post(url, xml, 'cancelar')
# Ginfes # Ginfes
elif autorizador.upper() == 'GINFES':
elif self.autorizador == 'GINFES':
self._namespace = 'http://www.ginfes.com.br/cabecalho_v03.xsd' self._namespace = 'http://www.ginfes.com.br/cabecalho_v03.xsd'
self._versao = '3' self._versao = '3'
return self._post_https(url, xml, 'cancelar') return self._post_https(url, xml, 'cancelar')
@ -501,14 +502,14 @@ class ComunicacaoNfse(Comunicacao):
from pynfe.processamento.autorizador_nfse import SerializacaoGinfes from pynfe.processamento.autorizador_nfse import SerializacaoGinfes
return SerializacaoGinfes().cabecalho() return SerializacaoGinfes().cabecalho()
def _get_url(self, autorizador):
def _get_url(self):
""" Retorna a url para comunicação com o webservice """ """ Retorna a url para comunicação com o webservice """
if self._ambiente == 1: if self._ambiente == 1:
ambiente = 'HTTPS' ambiente = 'HTTPS'
else: else:
ambiente = 'HOMOLOGACAO' ambiente = 'HOMOLOGACAO'
if autorizador.upper() in NFSE:
self.url = NFSE[autorizador.upper()][ambiente]
if self.autorizador in NFSE:
self.url = NFSE[self.autorizador][ambiente]
else: else:
raise Exception('Autorizador nao encontrado!') raise Exception('Autorizador nao encontrado!')
return self.url return self.url
@ -571,6 +572,6 @@ class ComunicacaoNfse(Comunicacao):
return cliente.service.CancelarNfse(xml) return cliente.service.CancelarNfse(xml)
# TODO outros metodos # TODO outros metodos
else: else:
pass
raise Exception('Método não implementado no autorizador.')
except Exception as e: except Exception as e:
raise e raise e
Loading…
Cancel
Save