modificado los margenes por precio en lugar de por tirada y tipos

This commit is contained in:
2025-10-20 09:37:04 +02:00
parent 1888850a64
commit d3ef954ceb
14 changed files with 275 additions and 331 deletions

View File

@ -1,3 +1,5 @@
import {normalizeNumericFilter} from '../../utils.js';
(() => {
// si jQuery está cargado, añade CSRF a AJAX
const csrfToken = document.querySelector('meta[name="_csrf"]')?.getAttribute('content');
@ -22,7 +24,6 @@
processing: true,
serverSide: true,
orderCellsTop: true,
stateSave: true,
pageLength: 50,
language: { url: '/assets/libs/datatables/i18n/' + language + '.json' },
responsive: true,
@ -45,18 +46,12 @@
ajax: {
url: '/configuracion/margenes-presupuesto/datatable',
method: 'GET',
data: function (d) {
d.f_encuadernacion = $('#search-encuadernacion').val() || ''; // 'USER' | 'ADMIN' | 'SUPERADMIN' | ''
d.f_cubierta = $('#search-cubierta').val() || ''; // 'true' | 'false' | ''
}
},
order: [[0, 'asc']],
columns: [
{ data: 'id', name: 'id', orderable: true },
{ data: 'tipoEncuadernacion', name: 'tipoEncuadernacion', orderable: true },
{ data: 'tipoCubierta', name: 'tipoCubierta', orderable: true },
{ data: 'tiradaMin', name: 'tiradaMin', orderable: true },
{ data: 'tiradaMax', name: 'tiradaMax', orderable: true },
{ data: 'importeMin', name: 'importeMin', orderable: true },
{ data: 'importeMax', name: 'importeMax', orderable: true },
{ data: 'margenMax', name: 'margenMax', orderable: true },
{ data: 'margenMin', name: 'margenMin', orderable: true },
{ data: 'actions', name: 'actions' }
@ -69,7 +64,7 @@
const colIndex = table.settings()[0].aoColumns.findIndex(c => c.name === colName);
if (colIndex >= 0) {
table.column(colIndex).search(this.value).draw();
table.column(colIndex).search(normalizeNumericFilter(this.value)).draw();
}
});

View File

@ -64,4 +64,17 @@ export function bracketPrefix(obj, prefix) {
out[`${prefix}[${k}]`] = v;
});
return out;
}
export function normalizeNumericFilter(input) {
if (!input) return input;
// Convierte todos los números del string:
// - Quita separadores de miles con punto
// - Cambia coma decimal por punto
// Mantiene operadores (>=, <=, <, >) y rangos con '-'
return input.replace(
/\d{1,3}(?:\.\d{3})*(?:,\d+)?|\d+(?:,\d+)?/g,
(num) => num.replace(/\./g, '').replace(',', '.')
);
}