From 180b845b1a694e5a220eba59f5f4bda8aab41cea Mon Sep 17 00:00:00 2001 From: Jaime Jimenez Date: Tue, 25 Mar 2025 17:44:43 +0100 Subject: [PATCH] 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();