Browse Source

Implantação de consulta Nfse por faixa de numeração

pull/7/head
Junior Tada 10 years ago
parent
commit
52c2fab62d
  1. 29
      pynfe/processamento/comunicacao.py
  2. 19
      pynfe/processamento/serializacao.py

29
pynfe/processamento/comunicacao.py

@ -385,6 +385,17 @@ class ComunicacaoNfse(Comunicacao):
# 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':
self._namespace = NAMESPACE_BETHA
self._versao = '2.02'
# url do serviço
url = self._get_url(autorizador)
# xml
xml = xml.replace('ns1:','').replace(':ns1','').replace('<?xml version="1.0" ?>','')
# comunica via wsdl
return self._post2(url, xml, 'consultaFaixa')
def cancelar(self, autorizador, nota): def cancelar(self, autorizador, nota):
if autorizador.upper() == 'BETHA': if autorizador.upper() == 'BETHA':
self._namespace = NAMESPACE_BETHA self._namespace = NAMESPACE_BETHA
@ -412,15 +423,6 @@ class ComunicacaoNfse(Comunicacao):
else: else:
return raiz return raiz
def _construir_xml(self, dados):
"""Mota o XML para o envio via SOAP"""
raiz = etree.Element('{%s}Envelope'%NAMESPACE_SOAP, nsmap={'e': self._namespace})
etree.SubElement(raiz, '{%s}Header'%NAMESPACE_SOAP)
body = etree.SubElement(raiz, '{%s}Body'%NAMESPACE_SOAP)
body.append(dados)
return raiz
def _get_url(self, autorizador): def _get_url(self, autorizador):
""" 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:
@ -433,13 +435,6 @@ class ComunicacaoNfse(Comunicacao):
raise Exception('Autorizador nao encontrado!') raise Exception('Autorizador nao encontrado!')
return self.url return self.url
def _post_header(self):
u"""Retorna um dicionário com os atributos para o cabeçalho da requisição HTTP"""
return {
u'content-type': u'application/soap+xml; charset=utf-8;',
u'Accept': u'application/soap+xml; charset=utf-8;',
}
def _post(self, url, xml): def _post(self, url, xml):
certificadoA1 = CertificadoA1(self.certificado) certificadoA1 = CertificadoA1(self.certificado)
chave, cert = certificadoA1.separar_arquivo(self.certificado_senha, caminho=True) chave, cert = certificadoA1.separar_arquivo(self.certificado_senha, caminho=True)
@ -478,6 +473,8 @@ class ComunicacaoNfse(Comunicacao):
return cliente.service.GerarNfse(cabecalho, xml) return cliente.service.GerarNfse(cabecalho, xml)
elif metodo == 'consultaRps': elif metodo == 'consultaRps':
return cliente.service.ConsultarNfsePorRps(cabecalho, xml) return cliente.service.ConsultarNfsePorRps(cabecalho, xml)
elif metodo == 'consultaFaixa':
return cliente.service.ConsultarNfseFaixa(cabecalho, xml)
elif metodo == 'cancelar': elif metodo == 'cancelar':
return cliente.service.CancelarNfse(cabecalho, xml) return cliente.service.CancelarNfse(cabecalho, xml)
# TODO outros metodos # TODO outros metodos

19
pynfe/processamento/serializacao.py

@ -696,6 +696,25 @@ class SerializacaoNfse(Serializacao):
return consulta.toxml(element_name='ConsultarNfseRpsEnvio') return consulta.toxml(element_name='ConsultarNfseRpsEnvio')
def consultarFaixa(self, emitente, inicio, fim, pagina):
"""Retorna string de um XML gerado a partir do
XML Schema (XSD). Binding gerado pelo modulo PyXB."""
# Prestador
id_prestador = nfse_schema.tcIdentificacaoPrestador()
id_prestador.CpfCnpj = emitente.cnpj
id_prestador.InscricaoMunicipal = emitente.inscricao_municipal
consulta = nfse_schema.ConsultarNfseFaixaEnvio()
consulta.Prestador = id_prestador
consulta.Pagina = pagina
# É necessário BIND antes de atribuir numero final e numero inicial
consulta.Faixa = BIND()
consulta.Faixa.NumeroNfseInicial = inicio
consulta.Faixa.NumeroNfseFinal = fim
return consulta.toxml(element_name='ConsultarNfseFaixaEnvio')
def cancelar(self, nfse): def cancelar(self, nfse):
"""Retorna string de um XML gerado a partir do """Retorna string de um XML gerado a partir do
XML Schema (XSD). Binding gerado pelo modulo PyXB.""" XML Schema (XSD). Binding gerado pelo modulo PyXB."""

Loading…
Cancel
Save