Add node lotes in addenda Boveda

This commit is contained in:
el Mau 2022-11-04 21:15:30 -06:00
parent c2544a4a94
commit 80102ebe1a
1 changed files with 28 additions and 2 deletions

View File

@ -239,14 +239,15 @@ class DictToCfdi():
type_boveda = self._data['addenda'].get('type', '')
type_client = self._data['addenda'].get('type_client', '')
data = self._data['addenda'].get('boveda', False)
self._boveda(type_boveda, data)
lotes = self._data['addenda']['lotes']
self._boveda(type_boveda, data, lotes)
if type_client:
data = self._data['addenda'].get('cliente', False)
partes = self._data['addenda'].get('partes', ())
self._addenda_client(type_client, data, partes)
return
def _boveda(self, type_boveda, data):
def _boveda(self, type_boveda, data, lotes):
if not data:
return
@ -271,6 +272,16 @@ class DictToCfdi():
for k, v in data.items():
node_name = f'{{{XMLNS}}}{k}'
ET.SubElement(node, node_name, v)
if lotes:
node_name = f'{{{XMLNS}}}Lotes'
node_lotes = ET.SubElement(node, node_name)
for lote in lotes:
node_name = f'{{{XMLNS}}}Lote'
node_lote = ET.SubElement(node_lotes, node_name)
for k2, v2 in lote.items():
node_name = f'{{{XMLNS}}}{k2}'
sn = ET.SubElement(node_lote, node_name)
sn.text = v2
elif type_boveda == '02':
for k, v in data.items():
node_name = f'{{{XMLNS}}}{k}'
@ -328,6 +339,7 @@ class DataToDict():
'05': '_conceptos',
'06': '_impuestos',
'10': '_leyendas',
'49': '_addenda_lotes',
'50': '_boveda',
'51': '_addenda',
'52': '_addenda_partes',
@ -338,6 +350,7 @@ class DataToDict():
self._cfdi = {'conceptos': [], 'complementos': {}, 'addenda': {}}
self._type_header = ''
self._partes = []
self._lotes = []
self._process_data()
@property
@ -358,6 +371,7 @@ class DataToDict():
getattr(self, header)(parts[2:])
self._cfdi['addenda']['partes'] = self._partes
self._cfdi['addenda']['lotes'] = self._lotes
return
def _comprobante(self, data):
@ -626,6 +640,18 @@ class DataToDict():
self._cfdi['addenda']['cliente'] = data
return
def _addenda_lotes(self, lote):
attr = {
'IVM_InvoiceID': '',
'POline': lote[0],
'NoIdentificacion': lote[1],
'Lote': lote[2],
'Cantidad': lote[3],
'Fecha': lote[4],
}
self._lotes.append(attr)
return
def _addenda_partes(self, parte):
if self._type_header == '2':
attr = {'posicion': parte[0],