diff --git a/source/app/controllers/util.py b/source/app/controllers/util.py index 2b7c45f..65f5468 100644 --- a/source/app/controllers/util.py +++ b/source/app/controllers/util.py @@ -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): diff --git a/source/app/controllers/utils.py b/source/app/controllers/utils.py index 2497bff..11c064c 100644 --- a/source/app/controllers/utils.py +++ b/source/app/controllers/utils.py @@ -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]