Browse Source

[feat] Grupo de pessoas autorizadas a baixar XML

pull/90/head
leogregianin 5 years ago
parent
commit
f0ca867a6c
No known key found for this signature in database GPG Key ID: BBCE23B6DC23016D
  1. 12
      pynfe/entidades/notafiscal.py
  2. 17
      pynfe/processamento/serializacao.py

12
pynfe/entidades/notafiscal.py

@ -145,6 +145,9 @@ class NotaFiscal(Entidade):
# - Local de entrega diferente do destinatario (Sim/Nao)
local_entrega_diferente_destinatario = False
# - Autorizados a baixar XML (lista 1 para * / ManyToManyField)
autorizados_baixar_xml = None
# - Produtos e Servicos (lista 1 para * / ManyToManyField)
produtos_e_servicos = None
@ -349,6 +352,7 @@ class NotaFiscal(Entidade):
processos_referenciados = None
def __init__(self, *args, **kwargs):
self.autorizados_baixar_xml = []
self.notas_fiscais_referenciadas = []
self.produtos_e_servicos = []
self.transporte_volumes = []
@ -362,6 +366,11 @@ class NotaFiscal(Entidade):
def __str__(self):
return ' '.join([str(self.modelo), self.serie, self.numero_nf])
def adicionar_autorizados_baixar_xml(self, **kwargs):
obj = AutorizadosBaixarXML(**kwargs)
self.autorizados_baixar_xml.append(obj)
return obj
def adicionar_nota_fiscal_referenciada(self, **kwargs):
u"""Adiciona uma instancia de Nota Fisca referenciada"""
obj = NotaFiscalReferenciada(**kwargs)
@ -1026,3 +1035,6 @@ class NotaFiscalResponsavelTecnico(Entidade):
email = str()
fone = str()
csrt = str()
class AutorizadosBaixarXML(Entidade):
CPFCNPJ = str()

17
pynfe/processamento/serializacao.py

@ -214,6 +214,19 @@ class SerializacaoXML(Serializacao):
else:
return raiz
def _serializar_autorizados_baixar_xml(self, autorizados_baixar_xml, tag_raiz='autXML', retorna_string=True):
raiz = etree.Element(tag_raiz)
if len(so_numeros(autorizados_baixar_xml.CPFCNPJ)) == 11:
etree.SubElement(raiz, 'CPF').text = so_numeros(autorizados_baixar_xml.CPFCNPJ)
else:
etree.SubElement(raiz, 'CNPJ').text = so_numeros(autorizados_baixar_xml.CPFCNPJ)
if retorna_string:
return etree.tostring(raiz, encoding="unicode", pretty_print=True)
else:
return raiz
def _serializar_produto_servico(self, produto_servico, modelo, tag_raiz='det', retorna_string=True):
raiz = etree.Element(tag_raiz)
@ -555,6 +568,10 @@ class SerializacaoXML(Serializacao):
tag_raiz='entrega',
))
# Autorizados a baixar o XML
for num, item in enumerate(nota_fiscal.autorizados_baixar_xml):
raiz.append(self._serializar_autorizados_baixar_xml(item, retorna_string=False))
# Itens
for num, item in enumerate(nota_fiscal.produtos_e_servicos):
det = self._serializar_produto_servico(item, modelo=nota_fiscal.modelo, retorna_string=False)

Loading…
Cancel
Save