Add node lotes in addenda Boveda
This commit is contained in:
parent
c2544a4a94
commit
80102ebe1a
|
@ -239,14 +239,15 @@ class DictToCfdi():
|
||||||
type_boveda = self._data['addenda'].get('type', '')
|
type_boveda = self._data['addenda'].get('type', '')
|
||||||
type_client = self._data['addenda'].get('type_client', '')
|
type_client = self._data['addenda'].get('type_client', '')
|
||||||
data = self._data['addenda'].get('boveda', False)
|
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:
|
if type_client:
|
||||||
data = self._data['addenda'].get('cliente', False)
|
data = self._data['addenda'].get('cliente', False)
|
||||||
partes = self._data['addenda'].get('partes', ())
|
partes = self._data['addenda'].get('partes', ())
|
||||||
self._addenda_client(type_client, data, partes)
|
self._addenda_client(type_client, data, partes)
|
||||||
return
|
return
|
||||||
|
|
||||||
def _boveda(self, type_boveda, data):
|
def _boveda(self, type_boveda, data, lotes):
|
||||||
if not data:
|
if not data:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -271,6 +272,16 @@ class DictToCfdi():
|
||||||
for k, v in data.items():
|
for k, v in data.items():
|
||||||
node_name = f'{{{XMLNS}}}{k}'
|
node_name = f'{{{XMLNS}}}{k}'
|
||||||
ET.SubElement(node, node_name, v)
|
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':
|
elif type_boveda == '02':
|
||||||
for k, v in data.items():
|
for k, v in data.items():
|
||||||
node_name = f'{{{XMLNS}}}{k}'
|
node_name = f'{{{XMLNS}}}{k}'
|
||||||
|
@ -328,6 +339,7 @@ class DataToDict():
|
||||||
'05': '_conceptos',
|
'05': '_conceptos',
|
||||||
'06': '_impuestos',
|
'06': '_impuestos',
|
||||||
'10': '_leyendas',
|
'10': '_leyendas',
|
||||||
|
'49': '_addenda_lotes',
|
||||||
'50': '_boveda',
|
'50': '_boveda',
|
||||||
'51': '_addenda',
|
'51': '_addenda',
|
||||||
'52': '_addenda_partes',
|
'52': '_addenda_partes',
|
||||||
|
@ -338,6 +350,7 @@ class DataToDict():
|
||||||
self._cfdi = {'conceptos': [], 'complementos': {}, 'addenda': {}}
|
self._cfdi = {'conceptos': [], 'complementos': {}, 'addenda': {}}
|
||||||
self._type_header = ''
|
self._type_header = ''
|
||||||
self._partes = []
|
self._partes = []
|
||||||
|
self._lotes = []
|
||||||
self._process_data()
|
self._process_data()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -358,6 +371,7 @@ class DataToDict():
|
||||||
getattr(self, header)(parts[2:])
|
getattr(self, header)(parts[2:])
|
||||||
|
|
||||||
self._cfdi['addenda']['partes'] = self._partes
|
self._cfdi['addenda']['partes'] = self._partes
|
||||||
|
self._cfdi['addenda']['lotes'] = self._lotes
|
||||||
return
|
return
|
||||||
|
|
||||||
def _comprobante(self, data):
|
def _comprobante(self, data):
|
||||||
|
@ -626,6 +640,18 @@ class DataToDict():
|
||||||
self._cfdi['addenda']['cliente'] = data
|
self._cfdi['addenda']['cliente'] = data
|
||||||
return
|
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):
|
def _addenda_partes(self, parte):
|
||||||
if self._type_header == '2':
|
if self._type_header == '2':
|
||||||
attr = {'posicion': parte[0],
|
attr = {'posicion': parte[0],
|
||||||
|
|
Loading…
Reference in New Issue