terminado comparador plana

This commit is contained in:
2024-12-17 23:35:44 +01:00
parent 2df473edb6
commit bb138019d5
4 changed files with 158 additions and 98 deletions

View File

@ -162,6 +162,8 @@ class Comparador {
this.btnInsertarPlana = $('#insertarPlanaBtn');
this.btnInsertarRotativa = $('#insertarRotativaBtn');
this.btnInsertarCubierta = $('#insertarCubiertaBtn');
this.cargando = false;
}
init() {
@ -261,10 +263,6 @@ class Comparador {
$("#tableLineasPresupuesto").DataTable().columns.adjust();
}
});
this.paginasNegro.on("change", this.#changePaginasComparador.bind(this));
this.paginasNegrohq.on("change", this.#changePaginasComparador.bind(this));
this.paginasColor.on("change", this.#changePaginasComparador.bind(this));
this.paginasColorhq.on("change", this.#changePaginasComparador.bind(this));
$('.comp_negro_items').on('change', this.obtenerComparadorInterior.bind(this));
$('.comp_negrohq_items').on('change', this.obtenerComparadorInterior.bind(this));
@ -275,25 +273,25 @@ class Comparador {
#changePaginasComparador(element) {
const paginas = parseInt($('#paginas').val());
const newPaginas = parseInt($(element.currentTarget).val());
const newPaginas = parseInt($('#' + element).val());
if (paginas < newPaginas) {
$(element.currentTarget).val(paginas)
$('#' + element).val(paginas)
}
if ($(element.currentTarget).attr('id') == this.paginasNegro.attr('id')) {
if (element == this.paginasNegro.attr('id')) {
if (!$('.comp-color-selected').hasClass('d-none')) {
this.paginasColor.val((paginas - newPaginas) > 0 ? paginas - newPaginas : 0);
}
}
else if ($(element.currentTarget).attr('id') == this.paginasNegro.attr('id')) {
else if (element == this.paginasNegrohq.attr('id')) {
if (!$('.comp-colorhq-selected').hasClass('d-none')) {
this.paginasColorhq.val((paginas - newPaginas) > 0 ? paginas - newPaginas : 0);
}
}
else if ($(element.currentTarget).attr('id') == this.paginasColor.attr('id')) {
else if (element == this.paginasColor.attr('id')) {
this.paginasNegro.val((paginas - newPaginas) > 0 ? paginas - newPaginas : 0);
}
else if ($(element.currentTarget).attr('id') == this.paginasColorhq.attr('id')) {
else if (element == this.paginasColorhq.attr('id')) {
this.paginasNegrohq.val((paginas - newPaginas) > 0 ? paginas - newPaginas : 0);
}
}
@ -301,6 +299,8 @@ class Comparador {
cargarDatos(datos) {
this.cargando = true;
this.tipo_impresion.val(datos.tipo_impresion).trigger('change');
this.updateOpcionesComparador();
this.comparador_json.val(JSON.stringify(datos.json_data));
@ -340,6 +340,9 @@ class Comparador {
this.posPagColor.val(datos.posPagColor);
this.#computarPaginasColor(datos.posPagColor);
}
this.cargando = false;
this.paginasNegro.trigger('change');
}
@ -763,7 +766,7 @@ class Comparador {
gramajes.push(this.gramajeNegro);
}
for (let element of papeles) {
if (element.getVal() == 0 || element.getVal() == null) {
if (element.getVal() == 0 || element.getVal() == null) {
popErrorAlert(window.language.Presupuestos.errores.seleccionePapel, 'divAlarmasComparador');
return { error: true, data: {} };
}
@ -778,21 +781,21 @@ class Comparador {
if (this.tipo_impresion.val().includes('color')) {
if (this.tipo_impresion.val().includes('hq')) {
papel_generico.color= { id: this.papelColorhq.getVal(), nombre: this.papelColorhq.getText() };
gramaje.color= this.gramajeColorhq.getVal();
papel_generico.color = { id: this.papelColorhq.getVal(), nombre: this.papelColorhq.getText() };
gramaje.color = this.gramajeColorhq.getVal();
paginasColor = this.paginasColorhq.val();
}
papel_generico.negro= { id: this.papelNegrohq.getVal(), nombre: this.papelNegrohq.getText() } ;
gramaje.negro= this.gramajeNegrohq.getVal() ;
papel_generico.negro = { id: this.papelNegrohq.getVal(), nombre: this.papelNegrohq.getText() };
gramaje.negro = this.gramajeNegrohq.getVal();
}
else {
if (this.tipo_impresion.val().includes('hq')) {
papel_generico.color = { id: this.papelColor.getVal(), nombre: this.papelColor.getText() } ;
gramaje.color = this.gramajeColor.getVal() ;
papel_generico.color = { id: this.papelColor.getVal(), nombre: this.papelColor.getText() };
gramaje.color = this.gramajeColor.getVal();
paginasColor = this.paginasColor.val();
}
papel_generico.negro= { id: this.papelNegro.getVal(), nombre: this.papelNegro.getText() } ;
gramaje.negro= this.gramajeNegro.getVal() ;
papel_generico.negro = { id: this.papelNegro.getVal(), nombre: this.papelNegro.getText() };
gramaje.negro = this.gramajeNegro.getVal();
}
}
@ -817,7 +820,6 @@ class Comparador {
uso: uso,
tipo_impresion_id: this.tipo_impresion_id,
cliente_id: $('#clienteId').select2('data')[0].id,
papelInteriorDiferente: 1,
papel_generico: papel_generico,
gramaje: gramaje,
isColor: this.tipo_impresion.val().includes('color'),
@ -829,11 +831,20 @@ class Comparador {
return { error: false, data: datos };
}
obtenerComparadorInterior(actualizarLineaPlana = false, actualizarLineaRot = false) {
obtenerComparadorInterior(event, actualizarLineaPlana = false, actualizarLineaRot = false) {
try {
const self = this;
if (this.cargando) {
return
}
if (event.currentTarget.id.includes('Paginas')) {
this.#changePaginasComparador(event.currentTarget.id);
}
this.tableCompIntPlana.clear().draw();
this.tableCompIntRotativa.clear().draw();
this.btnInsertarPlana.addClass('d-none');
@ -841,19 +852,51 @@ class Comparador {
$('#title_int_plana').html(window.language.Presupuestos.compInteriorPlana);
const datosComp = this.getDataForComp('interior');
if(datosComp.error){
if (datosComp.error) {
return;
}
else{
else {
datosComp.data[this.csrf_token] = this.csrf_hash;
new Ajax('/presupuestoadmin/comparadorplana',
datosComp.data,
{},
(response) =>{
console.log(response);
(response) => {
if (response.data.negro.length > 0) {
const isHq = response.data.negro[0].fields.tipo_linea.includes('hq');
let sorted = response.data.negro.sort(
(p1, p2) => ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) < (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ?
-1 : ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) > (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? 1 : 0);
sorted.forEach(function (linea) {
if (typeof linea.error == "undefined")
$('#tableCompIntPlana').DataTable().row
.add(self.getRowFromLineaInt(isHq ? 'bnhq' : 'bn', linea))
.draw()
});
}
if (response.data.color.length > 0) {
const isHq = response.data.color[0].fields.tipo_linea.includes('hq');
let sorted = response.data.color.sort(
(p1, p2) => ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) < (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ?
-1 : ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) > (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? 1 : 0);
sorted.forEach(function (linea) {
if (typeof linea.error == "undefined")
$('#tableCompIntPlana').DataTable().row
.add(self.getRowFromLineaInt(isHq ? 'colorhq' : 'color', linea))
.draw()
});
}
this.selectIntLineas();
if ($('#tableCompIntPlana').DataTable().rows().count() > 0) {
$('#title_int_plana').html(window.language.Presupuestos.compInteriorPlana + ' (' + self.tableCompIntPlana.rows().count() + ')');
$('#insertarPlanaBtn').removeClass('d-none');
}
else{
$('#title_int_plana').html(window.language.Presupuestos.compInteriorPlana);
$('#insertarPlanaBtn').addClass('d-none');
}
},
(error) =>{
(error) => {
console.log(error);
}
).post();
@ -895,6 +938,70 @@ class Comparador {
}
selectIntLineas() {
var negro_selected = false;
var color_selected = false;
$("#tableCompIntPlana").DataTable().rows('.selected').deselect();
$("#tableCompIntPlana").DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) {
if (!negro_selected && $('#tableCompIntPlana').DataTable().cell(rowIdx, 0).data().includes('bn')) {
$("#tableCompIntPlana").DataTable().row(rowIdx).nodes().to$().toggleClass('selected');
negro_selected = true;
}
if (!color_selected && $('#tableCompIntPlana').DataTable().cell(rowIdx, 0).data().includes('color')) {
$("#tableCompIntPlana").DataTable().row(rowIdx).nodes().to$().toggleClass('selected');
color_selected = true;
}
});
var table = $("#tableCompIntPlana").DataTable();
var rows = table.rows('.selected').indexes();
var data = table.rows(rows).data();
var value_total = 0.00;
for (let i = 0; i < data.length; i++) {
value_total += parseFloat(data[i]['total'])
}
$('#total_comp_plana').html(value_total.toFixed(2));
}
getRowFromLineaInt(tipo, linea) {
const precio_impresion = isNaN(parseFloat(linea.fields.precio_impresion_horas + linea.fields.margen_impresion_horas + linea.fields.precio_click_pedido)) ? "" :
parseFloat(linea.fields.precio_impresion_horas + linea.fields.margen_impresion_horas + linea.fields.precio_click_pedido).toFixed(2);
let data = {
'tipo': tipo,
'paginas': linea.fields.paginas,
'papel': linea.fields.papel_generico,
'gramaje': linea.fields.gramaje,
'marca': linea.fields.papel_impresion,
'maquina': linea.fields.maquina,
'numeroPliegos': isNaN(parseFloat(linea.fields.pliegos_libro)) ? "" : parseFloat(linea.fields.pliegos_libro).toFixed(2),
'pliegosPedido': isNaN(parseFloat(linea.fields.pliegos_pedido)) ? "" : parseFloat(linea.fields.pliegos_pedido).toFixed(2),
'precioPliego': isNaN(parseFloat(linea.fields.precios_pliegos)) ? "" : parseFloat(linea.fields.precios_pliegos).toFixed(6),
'libro': isNaN(parseFloat(linea.fields.precio_libro)) ? "" : parseFloat(linea.fields.precio_libro).toFixed(2),
'totalPapelPedido': isNaN(parseFloat(linea.fields.precio_pedido)) ? "" : parseFloat(linea.fields.precio_pedido).toFixed(2),
'lomo': isNaN(parseFloat(linea.fields.mano)) ? "" : parseFloat(linea.fields.mano).toFixed(2),
'peso': isNaN(parseFloat(linea.fields.peso)) ? "" : parseFloat(linea.fields.peso).toFixed(2),
'horasMaquina': isNaN(parseFloat(linea.fields.horas_maquina)) ? "" : parseFloat(linea.fields.horas_maquina).toFixed(2),
'precioImpresion': precio_impresion,
'total': isNaN(parseFloat(linea.fields.total_impresion).toFixed(2)) ? "" : parseFloat(linea.fields.total_impresion).toFixed(2),
'maquinaId': linea.fields.maquina_id,
'maquinaVelocidad': linea.fields.maquina_velocidad,
'tiempoMaquina': linea.fields.tiempo_maquina,
'papelGenericoId': linea.fields.papel_generico_id,
'papelImpresionId': linea.fields.papel_impresion_id,
'tarifa_impresion_id': linea.fields.tarifa_impresion_id,
}
if (data['tipo'] == 'guardas')
data['paginas_impresion'] = linea.fields.paginas_impresion;
return data;
}
}
/*