From 180b845b1a694e5a220eba59f5f4bda8aab41cea Mon Sep 17 00:00:00 2001 From: Jaime Jimenez Date: Tue, 25 Mar 2025 17:44:43 +0100 Subject: [PATCH 1/3] modificando albaranes --- .../vuexy/form/pedidos/_albaranesItems.php | 53 ++++++++++++++++--- .../vuexy/form/pedidos/_lineasItems.php | 1 + 2 files changed, 46 insertions(+), 8 deletions(-) diff --git a/ci4/app/Views/themes/vuexy/form/pedidos/_albaranesItems.php b/ci4/app/Views/themes/vuexy/form/pedidos/_albaranesItems.php index 12049a0f..65449fdb 100644 --- a/ci4/app/Views/themes/vuexy/form/pedidos/_albaranesItems.php +++ b/ci4/app/Views/themes/vuexy/form/pedidos/_albaranesItems.php @@ -57,7 +57,7 @@ $('#generar_albaranes').on('click', function(){ generarAlbaran(item); }); } - calcular_cantidades_albaranes(); + cambios_cantidad_albaranes(); } }); }) @@ -451,13 +451,28 @@ function generarAlbaran(item){ $(document).on('change', '#tablaAlbaran' + item.albaran.id + ' .cantidad-albaran', function(){ + let table = $('#tablaAlbaran' + item.albaran.id).DataTable(); let row = $(this).closest('tr'); // Encuentra la fila actual let rowIndex = table.row(row).index(); // Obtiene el índice de la fila - let newValue = $(this).val(); // Obtiene el nuevo valor del input - // Actualiza el DataTable - table.cell(rowIndex, 2).data(newValue); - calcular_cantidades_albaranes(); + + const previousValue = table.cell(rowIndex, 2).data(); + const newValue = $(this).val(); // Obtiene el nuevo valor del input + + let cantidad = calcular_cantidad_albaranes(); + + if(cantidad-previousValue+newValue <= parseInt($('#total_tirada').val()) ){ + // Actualiza el DataTable + table.cell(rowIndex, 2).data(newValue); + const cajas = parseInt(table.cell(rowIndex, 6).data()); + table.cell(rowIndex, 7).data(parseInt(newValue/cajas)); + cambios_cantidad_albaranes(); + } + else{ + $(this).val(previousValue); + table.cell(rowIndex, 7).data(previousValue); + table.draw(); + } }); } @@ -502,6 +517,8 @@ $(document).on('change', '.mostrar-precios', function(){ var albaran_id = $(this).attr('albaran_id'); var table = $('#tablaAlbaran' + albaran_id).DataTable(); + + var url = ''; url = url.replace(':id', albaran_id ); @@ -563,6 +580,16 @@ $(document).on('change', '.albaran_linea', function(){ }; data[elementId.split('_').slice(0, -1).join('_')] = $(this).val(); + if(elementId.includes('cajas')){ + var cajas = $(this).val(); + var linea_id = elementId.split('_').slice(-1)[0]; + var table = $('#tablaAlbaran' + $(this).attr('albaran')).DataTable(); + var row = table.row($(this).closest('tr')).index(); + var cantidad = table.cell(row, 2).data(); + table.cell(row, 7).data(parseInt(cantidad/cajas)); + data['ejemplares_por_caja'] = parseInt(cantidad/cajas); + } + var linea_id = $(this).attr('linea'); var url = ''; url = url.replace(':id', linea_id ); @@ -711,21 +738,31 @@ $.ajax({ generarAlbaran(item); }); - calcular_cantidades_albaranes(); + cambios_cantidad_albaranes(); } } }); -function calcular_cantidades_albaranes(){ +function calcular_cantidad_albaranes(){ let cantidad_albaranes = 0; const tablas = $('.table.table-albaran'); + const tabla_pedido = $('#tableOfLineasPedido').DataTable(); + const titulo = tabla_pedido.column(3).data().toArray()[0]; for(var i = 0; i < tablas.length; i++){ var table = $(tablas[i]).DataTable(); table.rows().every(function(){ - cantidad_albaranes += parseInt(this.data().cantidad) || 0; + if(titulo && titulo.length >0 && this.data() && titulo.includes(this.data().titulo)){ + cantidad_albaranes += parseInt(this.data().cantidad) || 0; + } }); } + return cantidad_albaranes; +} + + +function cambios_cantidad_albaranes(){ + const cantidad_albaranes = calcular_cantidad_albaranes(); check_cantidad_albaranes(cantidad_albaranes); } diff --git a/ci4/app/Views/themes/vuexy/form/pedidos/_lineasItems.php b/ci4/app/Views/themes/vuexy/form/pedidos/_lineasItems.php index 3f23051b..9bf0a87a 100644 --- a/ci4/app/Views/themes/vuexy/form/pedidos/_lineasItems.php +++ b/ci4/app/Views/themes/vuexy/form/pedidos/_lineasItems.php @@ -99,6 +99,7 @@ var tableOfLineasPedido = new DataTable('#tableOfLineasPedido',{ drawCallback: function(){ $(this.api().table().container()).find('table').css('width', '100%'); this.api().columns.adjust(); + cambios_cantidad_albaranes(); }, footerCallback: function (row, data, start, end, display) { let api = this.api(); From c54242eb24aec31a5b62a001d76f2bc73b7e9851 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Tue, 25 Mar 2025 18:00:02 +0100 Subject: [PATCH 2/3] terminadas modificaciones albaranes --- .../vuexy/form/pedidos/_albaranesItems.php | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/ci4/app/Views/themes/vuexy/form/pedidos/_albaranesItems.php b/ci4/app/Views/themes/vuexy/form/pedidos/_albaranesItems.php index 65449fdb..5ed9c93a 100644 --- a/ci4/app/Views/themes/vuexy/form/pedidos/_albaranesItems.php +++ b/ci4/app/Views/themes/vuexy/form/pedidos/_albaranesItems.php @@ -457,7 +457,7 @@ function generarAlbaran(item){ let rowIndex = table.row(row).index(); // Obtiene el índice de la fila const previousValue = table.cell(rowIndex, 2).data(); - const newValue = $(this).val(); // Obtiene el nuevo valor del input + const newValue = parseInt($(this).val()); // Obtiene el nuevo valor del input let cantidad = calcular_cantidad_albaranes(); @@ -580,20 +580,16 @@ $(document).on('change', '.albaran_linea', function(){ }; data[elementId.split('_').slice(0, -1).join('_')] = $(this).val(); - if(elementId.includes('cajas')){ - var cajas = $(this).val(); - var linea_id = elementId.split('_').slice(-1)[0]; - var table = $('#tablaAlbaran' + $(this).attr('albaran')).DataTable(); - var row = table.row($(this).closest('tr')).index(); - var cantidad = table.cell(row, 2).data(); - table.cell(row, 7).data(parseInt(cantidad/cajas)); - data['ejemplares_por_caja'] = parseInt(cantidad/cajas); - } - var linea_id = $(this).attr('linea'); var url = ''; url = url.replace(':id', linea_id ); + if(elementId.includes('cajas')){ + var cajas = $(this).val(); + var linea_id = elementId.split('_').slice(-1)[0]; + $('#ejemplares_por_caja_' + linea_id).val(parseInt($('#cantidad_' + linea_id).val()/cajas)).trigger('change'); + } + $.ajax({ url: url, type: 'POST', @@ -601,7 +597,7 @@ $(document).on('change', '.albaran_linea', function(){ success: function(response){ if('error' in response){ - + } } }); @@ -637,6 +633,7 @@ function borrar_albaranes(){ } } } + cambios_cantidad_albaranes(); } }); }); @@ -657,6 +654,7 @@ function borrar_albaran(albaran_id){ $('#accordioAlbaran' + albaran_id).remove(); } } + cambios_cantidad_albaranes(); } } }); From 37fba3604a21f6d752f6954a368e733f81428753 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Tue, 25 Mar 2025 18:25:11 +0100 Subject: [PATCH 3/3] arreglado el guardar tiradas alternativas en presupuesto admin --- .../safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js | 2 ++ .../pages/presupuestoAdmin/sections/tiradasAlternativas.js | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js index 1784b657..568fe2e5 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js @@ -293,6 +293,8 @@ class PresupuestoAdminEdit { this.comparador.generateCompJSON(); datos.comparador_json_data = $('#comparador_json_data').val(); + datos.tirada_alternativa_json_data = this.tiradasAlternativas.generate_json_tiradas(); + return datos; } diff --git a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/tiradasAlternativas.js b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/tiradasAlternativas.js index cb35c80e..133f5bb5 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/tiradasAlternativas.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/tiradasAlternativas.js @@ -166,6 +166,11 @@ class TiradasAlernativas { } } + if(this.generate_json_lp() == "[]"){ + popErrorAlert('No hay líneas de presupuesto', 'alert-tiradas_alt'); + return; + } + const dimension = this.getDimensionLibro(); const envios = JSON.stringify($('#tableOfDireccionesEnvio').DataTable().rows().data().toArray());