@@ -223,6 +222,9 @@ function updateTotales(updateLP=true, updateServicios=true, updateEnvio=true){
$('#totalCostes').text((totalCostes).toFixed(2) + '€')
$('#totalMargenes').text((totalMargenes).toFixed(2) + '€')
+ if($('#total_descuentoPercent').val()<0){
+ $('#total_descuentoPercent').val(0)
+ }
var totalAntesDescuento = totalCostes + totalMargenes
var totalDescuento = totalAntesDescuento * parseInt($('#total_descuentoPercent').val())/100
var totalPresupuesto = totalAntesDescuento - totalDescuento
diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js
new file mode 100644
index 00000000..82d78679
--- /dev/null
+++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js
@@ -0,0 +1,158 @@
+// Selección de la última columna de la tabla de tiradas
+const lastColNr_tiradasAlt = $('#tableTiradas').find("tr:first th").length - 1;
+
+
+// Función para generar los botones de acción de la tabla de tiradas
+const actionBtns_tiradasAlt = function (data) {
+ return `
+
+ `;
+};
+
+
+// Inicializaciones de la tabla de tiradas
+var tableTiradas;
+var editor;
+
+
+(async () => {
+ while (!window.hasOwnProperty("editor_url") && !window.hasOwnProperty("editor_headers"))
+ await new Promise(resolve => setTimeout(resolve, 200));
+ initEditorTiradas()
+
+ while (!window.hasOwnProperty("datatable_lang_url"))
+ await new Promise(resolve => setTimeout(resolve, 200));
+ initTableTiradas();
+
+ // For debugging purposes
+ tableTiradas.row.add({
+ tirada: 15,
+ coste_impresion: 0,
+ coste_envio: 0,
+ margen: 0,
+ total_pedido: 0,
+ precio_unidad: 0
+ }).draw(false);
+})();
+
+
+function initEditorTiradas() {
+
+ editor = new $.fn.dataTable.Editor({
+ ajax: {
+ url: window.editor_url,
+ headers: window.editor_headers,
+
+ },
+ table: "#tableTiradas",
+ idSrc: 'id',
+ fields: [
+ {
+ name: "tirada",
+ }, {
+ name: "coste_impresion",
+ type: "hidden"
+ }, {
+ name: "coste_envio",
+ type: "hidden"
+ }, {
+ name: "margen",
+ type: "hidden"
+ }, {
+ name: "total_pedido",
+ type: "hidden"
+ }, {
+ name: "precio_unidad",
+ type: "hidden"
+ }, {
+ name: "json_tiradas",
+ type: "hidden"
+ },
+ ]
+ });
+}
+
+function initTableTiradas() {
+ tableTiradas = $('#tableTiradas').DataTable({
+ "language": {
+ "url": window.datatable_lang_url
+ },
+ "paging": false,
+ "info": false,
+ "searching": false,
+ "ordering": false,
+ "autoWidth": false,
+ "responsive": true,
+ "dom": '<"mt-4"><"float-end"B><"float-start"l>
', //"Blt",
+ "columnDefs": [
+ {
+ orderable: false,
+ searchable: false,
+ targets: [lastColNr_tiradasAlt]
+ },
+ ],
+ "columns": [
+ { data: "tirada" },
+ { data: 'coste_impresion' },
+ { data: 'coste_envio' },
+ { data: 'margen' },
+ { data: 'total_pedido' },
+ { data: 'precio_unidad' },
+ {
+ data: actionBtns_tiradasAlt,
+ className: 'row-edit dt-center'
+ }
+ ],
+ "buttons": [{
+ className: 'btn btn-primary float-end me-sm-3 me-1',
+ text: '',
+ extend: "createInline",
+ editor: editor,
+ formOptions: {
+ submitTrigger: -1,
+ submitHtml: '',
+ }
+ }]
+ });
+}
+
+
+// Evento de borrado de una fila de la tabla de tiradas
+$(document).on('click', '.btn-delete-tirada', function (e) {
+
+ console.log(generate_json_tiradas());
+ const row = $(this).closest('tr');
+ tableTiradas.row(row)
+ .remove()
+ .draw();
+})
+
+
+// Función para generar el JSON de las lineas de presupuesto para calcular las tiradas
+function generate_json_tiradas() {
+ const data = $('#tableLineasPresupuesto').DataTable().data().toArray();
+
+ return JSON.stringify(filterData(data,
+ ['paginas',
+ 'numPagColor',
+ 'paginas_impresion',
+ 'papel_impresion_id',
+ 'gramaje',
+ 'maquina_id',
+ 'maquinaTipo',
+ 'row_id']));
+}
+
+
+// Función para filtrar las columnas de la tabla de tiradas
+function filterData(data, keys) {
+ return data.map(obj => {
+ const newObj = {};
+ keys.forEach(key => {
+ if (obj.hasOwnProperty(key)) {
+ newObj[key] = obj[key];
+ }
+ });
+ return newObj;
+ });
+}
\ No newline at end of file
diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.php
new file mode 100644
index 00000000..313b7100
--- /dev/null
+++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.php
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
= lang('Presupuestos.tiradasInfoIVA') ?>
+
+
+
+
+ | = lang('Presupuestos.tirada') ?> |
+ = lang('Presupuestos.tiradaImpresion') ?> |
+ = lang('Presupuestos.tiradaEnvio') ?> |
+ = lang('Presupuestos.tiradaMargen') ?> |
+ = lang('Presupuestos.totalPedido') ?> |
+ = lang('Presupuestos.precioUnidad') ?> |
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+= $this->section("additionalInlineJs") ?>
+ window.datatable_lang_url = "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json";
+ window.editor_url = "= route_to('editorOfMaquinasTarifaImpresion') ?>";
+
+ window.editor_headers= {= csrf_token() ?? "token" ?>: = csrf_token() ?>v};
+
+= $this->endSection() ?>
+
+
+
+
+
+
+
diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php
index 5d395b27..627d7dc0 100755
--- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php
+++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php
@@ -25,7 +25,8 @@
= view("themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios") ?>
= view("themes/backend/vuexy/form/presupuestos/cosidotapablanda/_comentariosItems") ?>
= view("themes/backend/vuexy/form/presupuestos/cosidotapablanda/_resumenPresupuestoItems") ?>
-
+ = view("themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems") ?>
+
@@ -249,6 +250,7 @@ const url_parts = url.split('/');
+
= $this->endSection() ?>