@@ -166,19 +166,32 @@ def consulta_nota(self, modelo, chave, contingencia=False):
166166 xml = self ._construir_xml_soap ('NFeConsultaProtocolo4' , raiz )
167167 return self ._post (url , xml )
168168
169- def consulta_distribuicao (self , cnpj = None , cpf = None , chave = None , nsu = 0 ):
170- """
171- O XML do pedido de distribuição suporta três tipos de consultas que são definidas de acordo com a tag
172- informada no XML. As tags são distNSU, consNSU e consChNFe.
173- a) distNSU – Distribuição de Conjunto de DF-e a Partir do NSU Informado
174- b) consNSU – Consulta DF-e Vinculado ao NSU Informado
175- c) consChNFe – Consulta de NF-e por Chave de Acesso Informada
169+ def consulta_distribuicao (self , cnpj = None , cpf = None , chave = None , nsu = 0 , consulta_nsu_especifico = False ):
170+ """
171+ O XML do pedido de distribuição suporta três tipos de consultas
172+ que são definidas de acordo com a tag informada no XML.
173+
174+ As tags são distNSU, consNSU e consChNFe:
175+ a) distNSU – Distribuição de Conjunto de DF-e a Partir do NSU Informado
176+ b) consNSU – Consulta DF-e Vinculado ao NSU Informado
177+ c) consChNFe – Consulta de NF-e por Chave de Acesso Informada
178+
176179 :param cnpj: CNPJ do interessado
177180 :param cpf: CPF do interessado
178181 :param chave: Chave da NF-e a ser consultada
179- :param nsu: Ultimo nsu ou nsu específico para ser consultado.
180- :return:
182+ :param nsu: Ultimo nsu ou nsu específico para ser consultado
183+ :param consulta_nsu_especifico:
184+ True para consulta por nsu específico
185+ False para consulta por nsu último
186+ :return: xml do resultado da consulta
187+
188+ Exemplos de usos:
189+ * consChNFe: consulta_distribuicao(cnpj=CNPJ, chave=CHAVE)
190+ * distNSU: consulta_distribuicao(cnpj=CNPJ, chave=None, nsu=0, consulta_nsu_especifico=False)
191+ * consNSU: consulta_distribuicao(cnpj=CNPJ, chave=None, nsu=10, consulta_nsu_especifico=True)
192+
181193 """
194+
182195 # url
183196 url = self ._get_url_an (consulta = 'DISTRIBUICAO' )
184197 # Monta XML para envio da requisição
@@ -190,16 +203,20 @@ def consulta_distribuicao(self, cnpj=None, cpf=None, chave=None, nsu=0):
190203 etree .SubElement (raiz , 'CNPJ' ).text = cnpj
191204 else :
192205 etree .SubElement (raiz , 'CPF' ).text = cpf
193- if not chave :
206+
207+ if not chave and not consulta_nsu_especifico :
194208 distNSU = etree .SubElement (raiz , 'distNSU' )
195209 etree .SubElement (distNSU , 'ultNSU' ).text = str (nsu ).zfill (15 )
196210 if chave :
197211 consChNFe = etree .SubElement (raiz , 'consChNFe' )
198212 etree .SubElement (consChNFe , 'chNFe' ).text = chave
199- #Monta XML para envio da requisição
213+ if consulta_nsu_especifico :
214+ consNSU = etree .SubElement (raiz , 'consNSU' )
215+ etree .SubElement (consNSU , 'NSU' ).text = str (nsu ).zfill (15 )
216+
217+ # Monta XML para envio da requisição
200218 xml = self ._construir_xml_soap ('NFeDistribuicaoDFe' , raiz )
201219
202-
203220 return self ._post (url , xml )
204221
205222 def consulta_cadastro (self , modelo , cnpj ):
0 commit comments