diff --git a/source/app/controllers/util.py b/source/app/controllers/util.py index e80941a..de8c97d 100644 --- a/source/app/controllers/util.py +++ b/source/app/controllers/util.py @@ -760,8 +760,29 @@ class LIBO(object): self._sheet.copyRange(nc.getCellAddress(), source.getRangeAddress()) return + def _copy_paste_rows(self, cell, count): + dispatch = self._create_instance('com.sun.star.frame.DispatchHelper') + + row = cell.getCellAddress().Row + source = self._sheet.getRows().getByIndex(row) + self._template.getCurrentController().select(source) + frame = self._template.getCurrentController().getFrame() + dispatch.executeDispatch(frame, '.uno:Copy', '', 0, ()) + + target = self._sheet.getCellRangeByPosition(0, row + 1, 0, row + count) + self._template.getCurrentController().select(target) + dispatch.executeDispatch(frame, '.uno:Paste', '', 0, ()) + return + def _conceptos(self, data): first = True + col1 = [] + col2 = [] + col3 = [] + col4 = [] + col5 = [] + col6 = [] + count = len(data)-1 for concepto in data: key = concepto.get('noidentificacion', '') description = concepto['descripcion'] @@ -779,16 +800,36 @@ class LIBO(object): cell_6 = self._set_cell('{importe}', importe, value=True) if len(data) > 1: row = cell_1.getCellAddress().Row + 1 - self._sheet.getRows().insertByIndex(row, len(data)-1) + self._sheet.getRows().insertByIndex(row, count) + self._copy_paste_rows(cell_1, count) + row = cell_1.getCellAddress().Row else: - self._copy_row(cell_1) - cell_1 = self._set_cell(v=key, cell=cell_1) - cell_2 = self._set_cell(v=description, cell=cell_2) - cell_3 = self._set_cell(v=unidad, cell=cell_3) - cell_4 = self._set_cell(v=cantidad, cell=cell_4, value=True) - cell_5 = self._set_cell(v=valor_unitario, cell=cell_5, value=True) - cell_6 = self._set_cell(v=importe, cell=cell_6, value=True) + col1.append((key,)) + col2.append((description,)) + col3.append((unidad,)) + col4.append((float(cantidad),)) + col5.append((float(valor_unitario),)) + col6.append((float(importe),)) + col = cell_1.getCellAddress().Column + target1 = self._sheet.getCellRangeByPosition(col, row+1, col, row+count) + col = cell_2.getCellAddress().Column + target2 = self._sheet.getCellRangeByPosition(col, row+1, col, row+count) + col = cell_3.getCellAddress().Column + target3 = self._sheet.getCellRangeByPosition(col, row+1, col, row+count) + col = cell_4.getCellAddress().Column + target4 = self._sheet.getCellRangeByPosition(col, row+1, col, row+count) + col = cell_5.getCellAddress().Column + target5 = self._sheet.getCellRangeByPosition(col, row+1, col, row+count) + col = cell_6.getCellAddress().Column + target6 = self._sheet.getCellRangeByPosition(col, row+1, col, row+count) + + target1.setFormulaArray(tuple(col1)) + target2.setDataArray(tuple(col2)) + target3.setFormulaArray(tuple(col3)) + target4.setDataArray(tuple(col4)) + target5.setDataArray(tuple(col5)) + target6.setDataArray(tuple(col6)) return def _add_totales(self, data): diff --git a/source/static/js/controller/invoices.js b/source/static/js/controller/invoices.js index 2bc88d4..f1f463c 100644 --- a/source/static/js/controller/invoices.js +++ b/source/static/js/controller/invoices.js @@ -1592,7 +1592,8 @@ function generate_pdf(id){ function grid_preinvoices_click(id, e, node){ if(id.column == 'pdf'){ - generate_pdf(id.row) + //~ generate_pdf(id.row) + window.open('/doc/pre/' + id, '_blank') }else if(id.column == 'email'){ enviar_prefactura(id) } diff --git a/source/static/js/ui/products.js b/source/static/js/ui/products.js index d83904e..72dd511 100644 --- a/source/static/js/ui/products.js +++ b/source/static/js/ui/products.js @@ -209,9 +209,10 @@ var multi_products = { var app_products = { - id: "app_products", + id: 'app_products', rows:[ - {view: "template", id: "th_products", type: "header", template:"Administración de Productos" }, + {view: 'template', id: 'th_products', type: 'header', + template: 'Administración de Productos y Servicios'}, multi_products ], } diff --git a/source/templates/plantilla_factura.ods b/source/templates/plantilla_factura.ods index 1f332ce..c66d20f 100644 Binary files a/source/templates/plantilla_factura.ods and b/source/templates/plantilla_factura.ods differ