diff --git a/pynfe/processamento/comunicacao.py b/pynfe/processamento/comunicacao.py index a8a42dd..ac56a05 100644 --- a/pynfe/processamento/comunicacao.py +++ b/pynfe/processamento/comunicacao.py @@ -374,23 +374,16 @@ class ComunicacaoNfse(Comunicacao): # comunica via wsdl return self._post2(url, xml, 'gerar') - def consulta_nota(self, autorizador, nota): + def consulta_rps(self, autorizador, xml): if autorizador.upper() == 'BETHA': self._namespace = NAMESPACE_BETHA self._versao = '2.02' # url do serviço - url = self._get_url(autorizador) + NFSE[autorizador.upper()]['CONSULTA_RPS'] - # consulta - raiz = etree.Element('ConsultarNfsePorRps') - # cabecalho - raiz.append(self._cabecalho_soap()) - dados = etree.SubElement(raiz, 'nfseDadosMsg') - dados.append(nota) - # xml soap - xml = self._construir_xml(raiz) - - retorno = self._post(url, xml) - return retorno + url = self._get_url(autorizador) + # xml + xml = xml.replace('ns1:','').replace(':ns1','').replace('','') + # comunica via wsdl + return self._post2(url, xml, 'consultaRps') def cancelar(self, autorizador): pass @@ -475,8 +468,11 @@ class ComunicacaoNfse(Comunicacao): # gerar nfse if metodo == 'gerar': return cliente.service.GerarNfse(cabecalho, xml) + elif metodo == 'consultaRps': + return cliente.service.ConsultarNfsePorRps(cabecalho, xml) elif metodo == 'cancelar': pass + # TODO outros metodos else: pass except Exception as e: diff --git a/pynfe/processamento/serializacao.py b/pynfe/processamento/serializacao.py index 4c932b2..38b55ee 100644 --- a/pynfe/processamento/serializacao.py +++ b/pynfe/processamento/serializacao.py @@ -675,8 +675,26 @@ class SerializacaoNfse(Serializacao): return gnfse.toxml(element_name='GerarNfseEnvio') - def consultar(self, numero): - pass + def consultar(self, nfse): + """Retorna string de um XML gerado a partir do + XML Schema (XSD). Binding gerado pelo modulo PyXB.""" + + # Rps + id_rps = nfse_schema.tcIdentificacaoRps() + id_rps.Numero = nfse.identificador + id_rps.Serie = nfse.serie + id_rps.Tipo = nfse.tipo + + # Prestador + id_prestador = nfse_schema.tcIdentificacaoPrestador() + id_prestador.CpfCnpj = nfse.emitente.cnpj + id_prestador.InscricaoMunicipal = nfse.emitente.inscricao_municipal + + consulta = nfse_schema.ConsultarNfseRpsEnvio() + consulta.IdentificacaoRps = id_rps + consulta.Prestador = id_prestador + + return consulta.toxml(element_name='ConsultarNfseRpsEnvio') def cancelar(self, dados): pass