diff --git a/ci4/app/Views/themes/vuexy/form/pedidos/_albaranesItems.php b/ci4/app/Views/themes/vuexy/form/pedidos/_albaranesItems.php index 12049a0f..5ed9c93a 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 = parseInt($(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 ); @@ -567,6 +584,12 @@ $(document).on('change', '.albaran_linea', function(){ 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', @@ -574,7 +597,7 @@ $(document).on('change', '.albaran_linea', function(){ success: function(response){ if('error' in response){ - + } } }); @@ -610,6 +633,7 @@ function borrar_albaranes(){ } } } + cambios_cantidad_albaranes(); } }); }); @@ -630,6 +654,7 @@ function borrar_albaran(albaran_id){ $('#accordioAlbaran' + albaran_id).remove(); } } + cambios_cantidad_albaranes(); } } }); @@ -711,21 +736,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(); diff --git a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js index 8f18578d..5ba716e9 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());