Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: implementado pra que a consulta_distribuicao das CTe tenha possibilidade de fazer consulta especifico de NSU #342

Merged
merged 1 commit into from
Jun 14, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 19 additions & 3 deletions pynfe/processamento/comunicacao.py
Original file line number Diff line number Diff line change
Expand Up @@ -1184,7 +1184,7 @@ def status_servico(self):
xml = self._construir_xml_soap("CteStatusServico", raiz)
return self._post(url, xml)

def consulta_distribuicao(self, cnpj=None, cpf=None, chave=None, nsu=0):
def consulta_distribuicao(self, cnpj=None, cpf=None, chave=None, nsu=0, consulta_nsu_especifico=False):
"""
O XML do pedido de distribuição suporta três tipos de consultas que são
definidas de acordo com a tag informada no XML.
Expand All @@ -1196,8 +1196,19 @@ def consulta_distribuicao(self, cnpj=None, cpf=None, chave=None, nsu=0):
:param cpf: CPF do interessado
:param chave: Chave do CT-e a ser consultada
:param nsu: Ultimo nsu ou nsu específico para ser consultado.
:return:
:param consulta_nsu_especifico:
True para consulta por nsu específico
False para consulta por nsu último
:return: xml do resultado da consulta

Exemplos de usos:
* consChNFe: consulta_distribuicao(cnpj=CNPJ, chave=CHAVE)
* distNSU: consulta_distribuicao(cnpj=CNPJ, chave=None, nsu=0,
consulta_nsu_especifico=False)
* consNSU: consulta_distribuicao(cnpj=CNPJ, chave=None, nsu=10,
consulta_nsu_especifico=True)
"""

# url
url = self._get_url_an(consulta="DISTRIBUICAO")
# Monta XML para envio da requisição
Expand All @@ -1209,12 +1220,17 @@ def consulta_distribuicao(self, cnpj=None, cpf=None, chave=None, nsu=0):
etree.SubElement(raiz, "CNPJ").text = cnpj
else:
etree.SubElement(raiz, "CPF").text = cpf
if not chave:

if not chave and not consulta_nsu_especifico:
distNSU = etree.SubElement(raiz, "distNSU")
etree.SubElement(distNSU, "ultNSU").text = str(nsu).zfill(15)
if chave:
consChCTe = etree.SubElement(raiz, "consChCTe")
etree.SubElement(consChCTe, "chCTe").text = chave
if consulta_nsu_especifico:
consNSU = etree.SubElement(raiz, "consNSU")
etree.SubElement(consNSU, "NSU").text = str(nsu).zfill(15)

# Monta XML para envio da requisição
xml = self._construir_xml_soap("CTeDistribuicaoDFe", raiz)
return self._post(url, xml)
Expand Down
Loading