Primera versión completa de la representación impresa de la Carta Porte
This commit is contained in:
parent
88bb6d9411
commit
ea145c630b
|
@ -941,6 +941,8 @@ class LIBO(object):
|
|||
# ~ print(data)
|
||||
figuras = data.pop('figuras')
|
||||
mercancias = data.pop('mercancias')
|
||||
detalle = mercancias.pop('detalle')
|
||||
mercancias = mercancias.pop('mercancias')
|
||||
autotransporte = data.pop('autotransporte')
|
||||
ubicaciones = data.pop('ubicaciones')
|
||||
|
||||
|
@ -950,9 +952,11 @@ class LIBO(object):
|
|||
self._set_cell(f'{{cp.{k}}}', v)
|
||||
for k, v in autotransporte.items():
|
||||
self._set_cell(f'{{cp.{k}}}', v)
|
||||
for k, v in mercancias.items():
|
||||
self._set_cell(f'{{cp.{k}}}', v)
|
||||
|
||||
first = True
|
||||
count = len(ubicaciones) - 1
|
||||
count = len(ubicaciones)
|
||||
for i, ubicacion in enumerate(ubicaciones):
|
||||
tipo = ubicacion['TipoUbicacion']
|
||||
nombre = ubicacion['NombreRemitenteDestinatario']
|
||||
|
@ -969,7 +973,7 @@ class LIBO(object):
|
|||
cell_5 = self._set_cell('{cp.Domicilio}', domicilio)
|
||||
|
||||
row = cell_1.CellAddress.Row + 1
|
||||
self._sheet.getRows().insertByIndex(row, count)
|
||||
self._sheet.getRows().insertByIndex(row, count - 1)
|
||||
self._copy_paste_rows(cell_1, count)
|
||||
else:
|
||||
cell_1 = self._set_cell(v=tipo, cell=cell_1)
|
||||
|
@ -978,6 +982,32 @@ class LIBO(object):
|
|||
cell_4 = self._set_cell(v=fecha, cell=cell_4)
|
||||
cell_5 = self._set_cell(v=domicilio, cell=cell_5)
|
||||
|
||||
first = True
|
||||
count = len(detalle)
|
||||
for i, mercancia in enumerate(detalle):
|
||||
clave = mercancia['BienesTransp']
|
||||
descripcion = mercancia['Descripcion']
|
||||
unidad = mercancia['ClaveUnidad']
|
||||
cantidad = mercancia['Cantidad']
|
||||
peso = mercancia['PesoEnKg']
|
||||
if first:
|
||||
first = False
|
||||
cell_1 = self._set_cell('{cp.BienesTransp}', clave)
|
||||
cell_2 = self._set_cell('{cp.Descripcion}', descripcion)
|
||||
cell_3 = self._set_cell('{cp.ClaveUnidad}', unidad)
|
||||
cell_4 = self._set_cell('{cp.Cantidad}', cantidad)
|
||||
cell_5 = self._set_cell('{cp.PesoEnKg}', peso)
|
||||
if count > 1:
|
||||
row = cell_1.CellAddress.Row + 1
|
||||
self._sheet.getRows().insertByIndex(row, count - 1)
|
||||
self._copy_paste_rows(cell_1, count)
|
||||
else:
|
||||
cell_1 = self._set_cell(v=clave, cell=cell_1)
|
||||
cell_2 = self._set_cell(v=descripcion, cell=cell_2)
|
||||
cell_3 = self._set_cell(v=unidad, cell=cell_3)
|
||||
cell_4 = self._set_cell(v=cantidad, cell=cell_4)
|
||||
cell_5 = self._set_cell(v=peso, cell=cell_5)
|
||||
|
||||
return
|
||||
|
||||
def _nomina(self, data):
|
||||
|
|
|
@ -356,9 +356,13 @@ class CfdiToDict(object):
|
|||
figuras['TipoFigura'] = self.tipo_figura[figuras['TipoFigura']]
|
||||
values['figuras'] = figuras
|
||||
elif 'Mercancias' in node.tag:
|
||||
mercancias = [CaseInsensitiveDict(n.attrib)
|
||||
mercancias = CaseInsensitiveDict(node.attrib)
|
||||
detalle = [CaseInsensitiveDict(n.attrib)
|
||||
for n in node if 'Mercancia' in n.tag]
|
||||
values['mercancias'] = mercancias
|
||||
values['mercancias'] = {
|
||||
'mercancias': mercancias,
|
||||
'detalle': detalle,
|
||||
}
|
||||
|
||||
path = '//cartaporte20:Autotransporte'
|
||||
node_auto = node.xpath(path, namespaces=self.NS)[0]
|
||||
|
|
Loading…
Reference in New Issue