import ClassSelect from '../../../components/select2.js'; import { getToken } from '../../../common/common.js'; import Ajax from '../../../components/ajax.js'; class LineasPresupuesto { constructor(domItem, functions = {}) { this.domItem = domItem; this.getDimensionLibro = functions.getDimensionLibro; this.table = null; this.csrf_token = getToken(); this.csrf_hash = $('#mainContainer').find('input[name="' + this.csrf_token + '"]').val(); this.addLineaManual = this.domItem.find("#btn_addLinea"); } init() { const self = this; this.#initTable(); this.addLineaManual.on('click', this.#insertLineaManual.bind(this)); // Botones de borrar de las lineas de presupuesto $(document).on('click', '.btn-delete-lp', function (e) { const row = $(this).closest('tr'); const data = self.table.row(row).data() self.table.row(row) .remove() .draw(); // TO-DO /*updatePresupuesto({ update_lineas: false, update_servicios: true, update_envios: true, update_resumen: true, update_tiradas_alternativas: true }) if (data.row_id == 'lp_guardas') servicioGuardas(false) */ // Si existe cubierta, hay que actualizar con el valor del lomo if (self.table.row('#lp_cubierta').length > 0) { self.obtenerLinea('lp_cubierta', false, false); } }); // Evento para recalcular las lineas de presupuesto $(document).on('update-lineas-presupuesto', this.updateLineasPresupuesto.bind(this)); $('.insertarLinea').on("click", this.#insertarLineaComparador.bind(this)); $('.paginas-lp').on('change', this.checkPaginasLineasPresupuesto.bind(this)); } #initTable() { const self = this; const lastColNr_lp = $('#tableLineasPresupuesto').find("tr:first th").length - 1; const actionBtns_lp = function (data) { return ` `; }; this.table = new DataTable('#tableLineasPresupuesto', { scrollX: true, searching: false, paging: false, info: false, ordering: true, responsive: true, select: false, rowId: 'row_id', language: { url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" }, columnDefs: [ { targets: 0, className: 'dt-control', orderable: false, data: null, defaultContent: '' }, { targets: [1, 2, 3, 4, 5, 6, 7, 8, 9], orderable: false, visible: false, }, { targets: [11, 12, 13, 14, 15, 16, 17, 18, 19, 20], orderable: false, }, { targets: [10], orderable: true, visible: false, }, { orderable: false, searchable: false, targets: [lastColNr_lp] }, ], columns: [ { data: null }, { data: 'tarifa_impresion_id' }, { data: 'maquina_ancho' }, { data: 'maquina_alto' }, { data: 'maquina_impresion_ancho' }, { data: 'maquina_impresion_alto' }, { data: 'formas' }, { data: 'formas_v' }, { data: 'formas_h' }, { data: 'formas_orientacion' }, { data: 'position', type: "num", render: function (data, type, row, meta) { if (row.row_id.includes('_bn')) { return 0; } else if (row.row_id.includes('_color')) { return 1; } else if (row.row_id.includes('_cubierta')) { return 2; } else if (row.row_id.includes('_sobrecubierta')) { return 3; } else if (row.row_id.includes('_guardas')) { return 4; } } }, { data: 'icon', render: function (data, type, row, meta) { return '' } }, { data: 'paginas', render: function (data, type, row, meta) { if (row.row_id != "lp_cubierta" && row.row_id != "lp_sobrecubierta" && row.row_id != "lp_guardas") return ''; else if (row.row_id == "lp_cubierta") { let select = '' return select; } else if (row.row_id == "lp_guardas") { let select = '' return select; } else { return ''; } } }, { data: 'papel', render: function (data, type, row, meta) { var select = $('') .attr('id', row.row_id + '_gramaje') .attr('name', row.row_id + '_gramaje') .addClass('form-control form-select-sm lp-cell lp-select ')//+ row.row_class + '-select') .css('min-width', '40px') if (data) { var option = ''; select.append(option); } return select[0].outerHTML } }, { data: 'papel_impresion', render: function (data, type, row, meta) { var select = $('') .attr('id', row.row_id + '_maquina') .attr('name', row.row_id + '_maquina') .addClass('form-control form-select-sm lp-cell lp-select ' + row.row_class + '-select') .css('min-width', '110px') if (data) { var option = ''; select.append(option); } return select[0].outerHTML } }, { data: 'tiempo', render: function (data, type, row, meta) { return ''; } }, { data: 'lomo', render: function (data, type, row, meta) { return ''; } }, { data: 'peso', render: function (data, type, row, meta) { return ''; } }, { data: 'total_linea', render: function (data, type, row, meta) { return ''; } }, { data: actionBtns_lp, className: 'row-edit dt-center' } ], "order": [10, 'asc'], }); this.table.on('click', 'td.dt-control', function (e) { let tr = e.target.closest('tr'); let row = self.table.row(tr); if (row.child.isShown()) { // This row is already open - close it row.child.hide(); } else { // Open this row row.child(self.formatRow(row.data())).show(); } }); this.table.on('draw', function () { $("#lomo_cubierta").val(self.getLomoInterior()); $("#lomo_sobrecubierta").val(parseFloat(self.getLomoInterior()) + parseFloat(self.getLomoCubierta())); self.checkPaginasLineasPresupuesto(); self.mostrarTabsPreview(); }); } updateLineasPresupuesto() { $('#tableLineasPresupuesto tbody tr:visible ').each(function () { $('#' + this.id + '_maquina').trigger('change'); }) } cargarDatos(data) { const self = this; data[1].forEach(function (lp) { const formas = JSON.parse(lp.formas) lp.dimensiones_maquina = [formas.maquina_ancho, formas.maquina_alto] lp.dimensiones_maquina_impresion = [formas.maquina_impresion_ancho, formas.maquina_impresion_alto] lp.num_formas = { value: formas.formas, num_formas_verticales: formas.formas_v, num_formas_horizontales: formas.formas_h, posicion_formas: formas.formas_orientacion } lp['tipo_maquina'] = lp['maquina_tipo'] lp['precio_impresion_horas'] = lp['precio_impresion'] lp['margen_impresion_horas'] = lp['margen_impresion'] lp['precio_libro'] = lp['libro'] lp['precio_pedido'] = lp['total_papel_pedido'] lp['total_impresion'] = lp['total_linea'] lp['precios_pliegos'] = lp['pliegos_precio'] lp['papel_generico_id'] = lp['papel_id'] let dateObj = new Date(lp['tiempo_maquina'] * 1000); const hours = dateObj.getUTCHours(); const minutes = dateObj.getUTCMinutes(); const seconds = dateObj.getSeconds(); lp['tiempo_maquina'] = hours.toString().padStart(2, '0') + ':' + minutes.toString().padStart(2, '0') + ':' + seconds.toString().padStart(2, '0'); if (lp.maquina_tipo == 'inkjet') { lp.datosTipologias = { negro: lp.rotativa_negro, cyan: lp.rotativa_cyan, magenta: lp.rotativa_magenta, amarillo: lp.rotativa_amarillo, cg: lp.rotativa_cg, gota_negro: lp.rotativa_gota_negro, gota_color: lp.rotativa_gota_color, } lp['paginas_color'] = lp['rotativa_pag_color'] lp['totalImpresion'] = lp['rotativa_total_impresion'] lp['a_favor_fibra'] = lp['rotativa_a_favor_fibra'] lp['resolucion'] = lp['rotativa_resolucion'] lp['superficie'] = lp['rotativa_area_paginas'] lp['num_gotas_negro'] = lp['rotativa_num_gotas_negro'] lp['num_gotas_cyan'] = lp['rotativa_num_gotas_cyan'] lp['num_gotas_magenta'] = lp['rotativa_num_gotas_magenta'] lp['num_gotas_amarillo'] = lp['rotativa_num_gotas_amarillo'] lp['num_gotas_cg'] = lp['rotativa_num_gotas_cg'] lp['precio_pagina_negro'] = lp['rotativa_precio_pag_negro'] lp['precio_pagina_color'] = lp['rotativa_precio_pag_color'] lp['factor_altura'] = lp['rotativa_factor_altura'] lp['factor_anchura'] = lp['rotativa_factor_anchura'] lp['paginas_por_pliego'] = lp['rotativa_pag_por_pliego'] lp['clicks_libro'] = lp['rotativa_clicks_libro'] lp['peso_gotas_negro'] = lp['rotativa_peso_gotas_negro'] lp['peso_gotas_cyan'] = lp['rotativa_peso_gotas_cyan'] lp['peso_gotas_magenta'] = lp['rotativa_peso_gotas_magenta'] lp['peso_gotas_amarillo'] = lp['rotativa_peso_gotas_amarillo'] lp['peso_gotas_cg'] = lp['rotativa_peso_gotas_cg'] lp['clicks_pedido'] = lp['rotativa_clicks_total'] lp['precio_click_pedido'] = lp['precio_click_pedido'] lp['margen_click_pedido'] = lp['margen_click_pedido'] lp['precio_tinta'] = lp['rotativa_precio_tinta'] lp['peso_gotas_negro_pedido'] = lp['rotativa_peso_gotas_negro_pedido'] lp['peso_gotas_cyan_pedido'] = lp['rotativa_peso_gotas_cyan_pedido'] lp['peso_gotas_magenta_pedido'] = lp['rotativa_peso_gotas_magenta_pedido'] lp['peso_gotas_amarillo_pedido'] = lp['rotativa_peso_gotas_amarillo_pedido'] lp['peso_gotas_cg_pedido'] = lp['rotativa_peso_gotas_cg_pedido'] } if (lp.tipo.includes('rot')) { lp['maquina_velocidad'] = lp['rotativa_mxm'] lp['metros_papel_libro'] = lp['rotativa_metros_libro'] lp['metros_papel_total'] = lp['rotativa_metros_total'] lp['velocidad_corte'] = lp['rotativa_velocidad_corte'] lp['precio_hora_corte'] = lp['rotativa_precio_hora_corte'] lp['tiempo_corte'] = lp['rotativa_tiempo_corte'] lp['total_corte'] = lp['rotativa_total_corte'] } lp['areaPaginas'] = lp['rotativa_superficie'] let rowData = self.#processRowData(lp, lp.tipo, lp.tipo.replace(/_/g, '-')); let row = self.table.row("#" + lp.tipo); self.table.row.add(rowData).draw() row = self.table.row("#" + lp.tipo); row.child(self.formatRow(row.data())).show(); self.#addEventosLineas(lp.tipo, lp.maquina_tipo == 'inkjet' ? true : false); if (lp.tipo == 'lp_guardas') lp['paginas_impresion'] = lp.paginas_impresion; }); } guardarLineasPresupuesto() { data = []; this.table.rows().every(function (rowIdx, tableLoop, rowLoop) { var rowData = this.data(); const formas = { maquina_ancho: rowData.maquina_ancho, maquina_alto: rowData.maquina_alto, maquina_impresion_ancho: rowData.maquina_impresion_ancho, maquina_impresion_alto: rowData.maquina_impresion_alto, formas: rowData.formas, formas_v: rowData.formas_v, formas_h: rowData.formas_h, formas_orientacion: rowData.formas_orientacion, } var t_maq_str = rowData.tiempo.split(':'); // split it at the colons var t_maq = 0 if (t_maq_str.length == 3) t_maq = (+t_maq_str[0]) * 3600 + (+t_maq_str[1]) * 60 + (+t_maq_str[2]); linea_data = { presupuesto_id: presupuesto_id, tipo: rowData.row_id, paginas: (rowData.row_id == 'lp_guardas') ? (($('#tipo_impresion_id').val() == 1 || $('#tipo_impresion_id').val() == 3) ? 8 : 4) : rowData.paginas, papel_id: rowData.papel, gramaje: rowData.gramaje, papel_impresion_id: rowData.papel_impresion_id, papel_impresion: rowData.papel_impresion, maquina_id: rowData.maquina_id, maquina: rowData.maquina, maquina_tipo: rowData.maquinaTipo, tiempo_maquina: t_maq, pliegos_libro: rowData.numeroPliegos, pliegos_pedido: rowData.pliegosPedido, pliegos_precio: rowData.precioPliego, libro: rowData.libro, total_papel_pedido: rowData.totalPapelPedido, margen_papel_pedido: rowData.margenPapelPedido, mano: rowData.lomo, peso: rowData.peso, precio_click: rowData.click, precio_click_pedido: rowData.totalClicks, margen_click_pedido: rowData.margenClicks, check_papel_total: $('#' + rowData.row_id + '_checkPapel').is(":checked") ? 1 : 0, check_impresion_total: $('#' + rowData.row_id + '_checkClicks').is(":checked") ? 1 : 0, tarifa_impresion_id: rowData.tarifa_impresion_id, formas: JSON.stringify(formas), horas_maquina: rowData.horasMaquina, precio_hora: rowData.precioHora, precio_impresion: rowData.precioImpresion, margen_impresion: rowData.margenImpresion, total_linea: rowData.total_linea, } if (rowData.row_id == 'lp_guardas') linea_data.paginas_impresion = rowData.paginas_impresion // maquina rotativa o inkjet if (linea_data.maquina_tipo == 'inkjet') { linea_data.rotativa_pag_color = rowData.numPagColor linea_data.rotativa_total_impresion = rowData.totalImpresion linea_data.rotativa_a_favor_fibra = rowData.aFavorFibra, linea_data.rotativa_negro = rowData.cobNegro linea_data.rotativa_cyan = rowData.cobCyan linea_data.rotativa_magenta = rowData.cobMagenta linea_data.rotativa_amarillo = rowData.cobAmarillo linea_data.rotativa_cg = rowData.cobCG linea_data.rotativa_gota_negro = rowData.gotaNegro linea_data.rotativa_gota_color = rowData.gotaColor linea_data.rotativa_resolucion = rowData.resolucion linea_data.rotativa_area_paginas = rowData.areaPaginas linea_data.rotativa_num_gotas_negro = rowData.gotaNegro linea_data.rotativa_num_gotas_cyan = rowData.gotasCyan linea_data.rotativa_num_gotas_magenta = rowData.gotasMagenta linea_data.rotativa_num_gotas_amarillo = rowData.gotasAmarillo linea_data.rotativa_num_gotas_cg = rowData.gotasCG linea_data.rotativa_precio_pag_negro = rowData.precioPagNegro linea_data.rotativa_precio_pag_color = rowData.precioPagColor linea_data.rotativa_factor_altura = rowData.factorAltura linea_data.rotativa_factor_anchura = rowData.factorAnchura linea_data.rotativa_pag_por_pliego = rowData.paginasPliego linea_data.rotativa_clicks_libro = rowData.clicksLibro linea_data.rotativa_peso_gotas_negro = rowData.gTintaNegro linea_data.rotativa_peso_gotas_cyan = rowData.gTintaCyan linea_data.rotativa_peso_gotas_magenta = rowData.gTintaMagenta linea_data.rotativa_peso_gotas_amarillo = rowData.gTintaAmarillo linea_data.rotativa_peso_gotas_cg = rowData.gTintaCG linea_data.rotativa_clicks_total = rowData.clicksPedido linea_data.precio_click_pedido = rowData.totalClicksPedido linea_data.rotativa_precio_tinta = rowData.totalTinta linea_data.rotativa_peso_gotas_negro_pedido = rowData.gTintaNegroPed linea_data.rotativa_peso_gotas_cyan_pedido = rowData.gTintaCyanPed linea_data.rotativa_peso_gotas_magenta_pedido = rowData.gTintaMagentaPed linea_data.rotativa_peso_gotas_amarillo_pedido = rowData.gTintaAmarilloPed linea_data.rotativa_peso_gotas_cg_pedido = rowData.gTintaCGPed } if (linea_data.tipo.includes('rot')) { linea_data.rotativa_mxm = rowData.metrosMinuto linea_data.rotativa_metros_libro = rowData.metrosPapelLibro linea_data.rotativa_metros_total = rowData.metrosPapelTotal linea_data.rotativa_velocidad_corte = rowData.velocidadCorte linea_data.rotativa_precio_hora_corte = rowData.precioHoraCorte linea_data.rotativa_tiempo_corte = rowData.tiempoCorte linea_data.rotativa_total_corte = rowData.totalCorte linea_data.rotativa_a_favor_fibra = rowData.aFavorFibra == true ? 1 : 0 } data.push(linea_data) }); /* var datos = { tipo: 'lineasPresupuesto', datos: data, presupuesto_id: presupuesto_id, } datos = Object.assign(datos, window.token_ajax); await $.ajax({ type: 'post', url: window.routes_lp.updateDataOfPresupuestoAdmin, data: datos, dataType: 'json', success: function (response) { token = response[window.csrf_token]; yeniden(token); } }).fail(function (jqXHR, textStatus, error) { // Handle error here console.log(jqXHR) });*/ } mostrarTabsPreview() { const table = $('#tableLineasPresupuesto').DataTable(); // Clear all existing tabs $('*[id*=tab-pv-]').hide().find('.active').removeClass('active'); $('*[id*=pv_]').removeClass('active show'); // Enable active tabs table.rows().every(function () { const lpName = this.data().row_id.replace('lp_', ''); const tabName = lpName.replace('_', '-'); if (['bn', 'bnhq', 'color', 'colorhq', 'rot_bn', 'rot_color', 'guardas', 'cubierta', 'sobrecubierta'].includes(lpName)) { $(`#tab-pv-${tabName}`).show(); if (lpName === 'cubierta') { $(`#tab-pv-${tabName}`).show(); $(`#tab-pv-esquema-${tabName}`).show(); } } }); } checkPaginasLineasPresupuesto() { let cantidad_total = 0 this.table.rows().every(function (rowIdx, tableLoop, rowLoop) { let rowData = this.data(); if (rowData.row_id != 'lp_cubierta' && rowData.row_id != 'lp_sobrecubierta' && rowData.row_id != 'lp_guardas') cantidad_total += parseInt(rowData.paginas) }) let htmlString = '' if (cantidad_total != parseInt($('#paginas').val())) { htmlString = ` `; } $('#divAlarmasLineasPresupuesto').html(htmlString) } #insertLineaManual() { let dataRows = this.table.rows().data(); switch ($('#addLineasPresupuesto').val()) { // Se chequean todas las lineas de negro y todas las de color // (solo una de cada en interior) case 'lp_bn': var hayLinea = false for (let number = 0; number < dataRows.length; number++) { if (dataRows[number].row_id == 'lp_bn' || dataRows[number].row_id == 'lp_bnhq' || dataRows[number].row_id == 'lp_rot_bn') { hayLinea = true; continue; } } if (hayLinea) { popErrorAlert(window.language.Presupuestos.errores.lineaDuplicada, 'divAlarmasLineasPresupuesto'); break; } var data = this.#processRowData({ tipo_maquina: 'toner' }, 'lp_bn', 'lp-bn'); this.table.row.add(data).draw(); this.#addEventosLineas('lp_bn', false); break; case 'lp_bnhq': var hayLinea = false for (let number = 0; number < dataRows.length; number++) { if (dataRows[number].row_id == 'lp_bn' || dataRows[number].row_id == 'lp_bnhq' || dataRows[number].row_id == 'lp_rot_bn') { hayLinea = true continue } } if (hayLinea) { popErrorAlert(window.language.Presupuestos.errores.lineaDuplicada, 'divAlarmasLineasPresupuesto'); break } var data = this.#processRowData({ tipo_maquina: 'toner' }, 'lp_bnhq', 'lp-bnhq'); this.table.row.add(data).draw() this.#addEventosLineas('lp_bnhq', false); break case 'lp_color': var hayLinea = false for (let number = 0; number < dataRows.length; number++) { if (dataRows[number].row_id == 'lp_color' || dataRows[number].row_id == 'lp_colorhq' || dataRows[number].row_id == 'lp_rot_color') { hayLinea = true; continue; } } if (hayLinea) { popErrorAlert(window.language.Presupuestos.errores.lineaDuplicada, 'divAlarmasLineasPresupuesto'); break; } var data = this.#processRowData({ tipo_maquina: 'toner' }, 'lp_color', 'lp-color'); this.table.row.add(data).draw(); this.#addEventosLineas('lp_color', false); break case 'lp_colorhq': var hayLinea = false for (let number = 0; number < dataRows.length; number++) { if (dataRows[number].row_id == 'lp_color' || dataRows[number].row_id == 'lp_colorhq' || dataRows[number].row_id == 'lp_rot_color') { hayLinea = true continue } } if (hayLinea) { popErrorAlert(window.language.Presupuestos.errores.lineaDuplicada, 'divAlarmasLineasPresupuesto'); break; } var data = this.#processRowData({ tipo_maquina: 'toner' }, 'lp_colorhq', 'lp-colorhq'); this.table.row.add(data).draw(); this.#addEventosLineas('lp_colorhq', false); break; case 'lp_rot_bn': var hayLinea = false for (let number = 0; number < dataRows.length; number++) { if (dataRows[number].row_id == 'lp_bn' || dataRows[number].row_id == 'lp_bnhq' || dataRows[number].row_id == 'lp_rot_bn') { hayLinea = true; continue; } } if (hayLinea) { popErrorAlert(window.language.Presupuestos.errores.lineaDuplicada, 'divAlarmasLineasPresupuesto'); break; } var data = this.#processRowData({ tipo_maquina: 'toner' }, 'lp_rot_bn', 'lp-rot-bn'); this.table.row.add(data).draw(); this.#addEventosLineas('lp_rot_bn', false); break case 'lp_rot_color': var hayLinea = false for (let number = 0; number < dataRows.length; number++) { if (dataRows[number].row_id == 'lp_color' || dataRows[number].row_id == 'lp_colorhq' || dataRows[number].row_id == 'lp_rot_color') { hayLinea = true; continue; } } if (hayLinea) { popErrorAlert(window.language.Presupuestos.errores.lineaDuplicada, 'divAlarmasLineasPresupuesto'); break; } var data = this.#processRowData({ tipo_maquina: 'toner' }, 'lp_rot_color', 'lp-rot-color'); this.table.row.add(data).draw() this.#addEventosLineas('lp_rot_color', false); break; case 'lp_cubierta': var hayLinea = false for (let number = 0; number < dataRows.length; number++) { if (dataRows[number].row_id == 'lp_cubierta') { hayLinea = true; continue; } } if (hayLinea) { popErrorAlert(window.language.Presupuestos.errores.lineaDuplicada, 'divAlarmasLineasPresupuesto'); break; } var data = this.#processRowData({ tipo_maquina: 'toner' }, 'lp_cubierta', 'lp-cubierta'); this.table.row.add(data).draw(); this.#addEventosLineas('lp_cubierta', false); break case 'lp_sobrecubierta': var hayLinea = false for (let number = 0; number < dataRows.length; number++) { if (dataRows[number].row_id == 'lp_sobrecubierta') { hayLinea = true; continue; } } if (hayLinea) { popErrorAlert(window.language.Presupuestos.errores.lineaDuplicada, 'divAlarmasLineasPresupuesto'); break; } var data = this.#processRowData({ tipo_maquina: 'toner' }, 'lp_sobrecubierta', 'lp-sobrecubierta'); this.table.row.add(data).draw(); this.#addEventosLineas('lp_sobrecubierta', false); break case 'lp_guardas': var hayLinea = false for (let number = 0; number < dataRows.length; number++) { if (dataRows[number].row_id == 'lp_guardas') { hayLinea = true; continue; } } if (hayLinea) { popErrorAlert(window.language.Presupuestos.errores.lineaDuplicada, 'divAlarmasLineasPresupuesto'); break; } var data = this.#processRowData({ tipo_maquina: 'toner' }, 'lp_guardas', 'lp-guardas'); this.table.row.add(data).draw() this.#addEventosLineas('lp_guardas', false); servicioGuardas(true); break default: break } this.table.columns.adjust(); } #processRowData(row, rowId, rowClass) { var icon = "" if (rowId == 'lp_bn') { if (row.tipo_maquina == 'toner') icon = '/themes/vuexy/img/safekat/presupuestos/icon_bn.png' else icon = '/themes/vuexy/img/safekat/presupuestos/icon_inkjet_bn.png'; } else if (rowId == 'lp_bnhq') { if (row.tipo_maquina == 'toner') icon = '/themes/vuexy/img/safekat/presupuestos/icon_bnhq.png'; else icon = '/themes/vuexy/img/safekat/presupuestos/icon_inkjet_bn.png'; } else if (rowId == 'lp_color') { if (row.tipo_maquina == 'toner') icon = '/themes/vuexy/img/safekat/presupuestos/icon_color.png'; else icon = '/themes/vuexy/img/safekat/presupuestos/icon_inkjet_color.png'; } else if (rowId == 'lp_colorhq') { if (row.tipo_maquina == 'toner') icon = '/themes/vuexy/img/safekat/presupuestos/icon_colorhq.png'; else icon = '/themes/vuexy/img/safekat/presupuestos/icon_inkjet_color.png'; } else if (rowId == 'lp_cubierta') icon = '/themes/vuexy/img/safekat/presupuestos/icon_cubierta.png'; else if (rowId == 'lp_sobrecubierta') icon = '/themes/vuexy/img/safekat/presupuestos/icon_sobrecubierta.png'; else if (rowId == 'lp_guardas') icon = '/themes/vuexy/img/safekat/presupuestos/icon_guardas.png'; else if (rowId == 'lp_rot_bn') icon = '/themes/vuexy/img/safekat/presupuestos/icon_rotativa_bn.png'; else if (rowId == 'lp_rot_color') icon = '/themes/vuexy/img/safekat/presupuestos/icon_rotativa_color.png'; const blank_line = (typeof row.tarifa_impresion_id === 'undefined') ? 1 : 0; var data = { 'row_id': rowId, 'row_class': rowClass, 'tarifa_impresion_id': blank_line ? 0 : isNaN(parseInt(row.tarifa_impresion_id)) ? "" : parseInt(row.tarifa_impresion_id), 'maquina_ancho': blank_line ? 0 : isNaN(parseFloat(row.dimensiones_maquina[0])) ? "" : parseFloat(row.dimensiones_maquina[0]), 'maquina_alto': blank_line ? 0 : isNaN(parseFloat(row.dimensiones_maquina[1])) ? "" : parseFloat(row.dimensiones_maquina[1]), 'maquina_impresion_ancho': blank_line ? 0 : isNaN(parseFloat(row.dimensiones_maquina_impresion[0])) ? "" : parseFloat(row.dimensiones_maquina_impresion[0]), 'maquina_impresion_alto': blank_line ? 0 : isNaN(parseFloat(row.dimensiones_maquina_impresion[1])) ? "" : parseFloat(row.dimensiones_maquina_impresion[1]), 'formas': blank_line ? 0 : isNaN(parseInt(row.num_formas.value)) ? 0 : parseInt(row.num_formas.value), 'formas_v': blank_line ? 0 : isNaN(parseInt(row.num_formas.num_formas_verticales)) ? 0 : parseInt(row.num_formas.num_formas_verticales), 'formas_h': blank_line ? 0 : isNaN(parseInt(row.num_formas.num_formas_horizontales)) ? 0 : parseInt(row.num_formas.num_formas_horizontales), 'formas_orientacion': blank_line ? 0 : row.num_formas.posicion_formas, 'icon': icon, 'paginas': blank_line ? 0 : row.paginas, 'paginas_impresion': rowId == 'lp_guardas' ? row.paginas_impresion : 0, 'papel': blank_line ? "" : row.papel_generico_id, 'papel_nombre': blank_line ? "" : row.papel_generico, 'gramaje': blank_line ? "" : row.gramaje, 'papel_impresion': blank_line ? "" : row.papel_impresion, 'papel_impresion_id': blank_line ? "" : row.papel_impresion_id, 'maquina': blank_line ? "" : row.maquina, 'maquina_id': blank_line ? "" : row.maquina_id, 'tiempo': blank_line ? "" : row.tiempo_maquina, 'lomo': isNaN(parseFloat(row.mano)) ? "" : parseFloat(row.mano).toFixed(2), 'peso': isNaN(parseFloat(row.peso)) ? "" : parseFloat(row.peso).toFixed(2), 'total_linea': isNaN(parseFloat(row.total_impresion)) ? "" : parseFloat(row.total_impresion).toFixed(2), 'numeroPliegos': isNaN(parseFloat(row.pliegos_libro)) ? "" : parseFloat(row.pliegos_libro).toFixed(0), 'pliegosPedido': isNaN(parseFloat(row.pliegos_pedido)) ? "" : parseFloat(row.pliegos_pedido).toFixed(0), 'precioPliego': isNaN(parseFloat(row.precios_pliegos)) ? "" : parseFloat(row.precios_pliegos).toFixed(6), 'libro': isNaN(parseFloat(row.precio_libro)) ? "" : parseFloat(row.precio_libro).toFixed(2), 'totalPapelPedido': isNaN(parseFloat(row.precio_pedido)) ? "" : parseFloat(row.precio_pedido).toFixed(2), 'margenPapelPedido': isNaN(parseFloat(row.margen_papel_pedido)) ? "" : parseFloat(row.margen_papel_pedido).toFixed(2), 'click': isNaN(parseFloat(row.precio_click)) ? "" : parseFloat(row.precio_click).toFixed(6), 'totalClicks': isNaN(parseFloat(row.precio_click_pedido)) ? "" : parseFloat(row.precio_click_pedido).toFixed(2), 'margenClicks': isNaN(parseFloat(row.margen_click_pedido)) ? "" : parseFloat(row.margen_click_pedido).toFixed(2), 'horasMaquina': isNaN(parseFloat(row.horas_maquina)) ? "" : parseFloat(row.horas_maquina).toFixed(4), 'precioHora': isNaN(parseFloat(row.precio_hora)) ? "" : parseFloat(row.precio_hora).toFixed(2), 'precioImpresion': isNaN(parseFloat(row.precio_impresion_horas)) ? "" : parseFloat(row.precio_impresion_horas).toFixed(2), 'margenImpresion': isNaN(parseFloat(row.margen_impresion_horas)) ? "" : parseFloat(row.margen_impresion_horas).toFixed(2), 'maquinaTipo': row.tipo_maquina, 'check_papel_total': row.check_papel_total, 'check_impresion_total': row.check_impresion_total, } if (row.tipo_maquina == 'inkjet') { data.numPagColor = row.paginas_color data.aFavorFibra = row.a_favor_fibra data.cobNegro = isNaN(parseFloat(row.datosTipologias.negro)) ? "" : parseFloat(row.datosTipologias.negro).toFixed(2) data.cobCyan = isNaN(parseFloat(row.datosTipologias.cyan)) ? "" : parseFloat(row.datosTipologias.cyan).toFixed(2) data.cobMagenta = isNaN(parseFloat(row.datosTipologias.magenta)) ? "" : parseFloat(row.datosTipologias.magenta).toFixed(2) data.cobAmarillo = isNaN(parseFloat(row.datosTipologias.amarillo)) ? "" : parseFloat(row.datosTipologias.amarillo).toFixed(2) data.gotaNegro = isNaN(parseFloat(row.datosTipologias.gota_negro)) ? "" : parseFloat(row.datosTipologias.gota_negro).toFixed(2) data.gotaColor = isNaN(parseFloat(row.datosTipologias.gota_color)) ? "" : parseFloat(row.datosTipologias.gota_color).toFixed(2) data.resolucion = isNaN(parseFloat(row.resolucion)) ? "" : parseFloat(row.resolucion).toFixed(0) data.areaPaginas = isNaN(parseFloat(row.superficie)) ? "" : parseFloat(row.superficie).toFixed(2) data.gotasNegro = isNaN(parseFloat(row.num_gotas_negro)) ? "" : parseFloat(row.num_gotas_negro).toFixed(0) data.gotasCyan = isNaN(parseFloat(row.num_gotas_cyan)) ? "" : parseFloat(row.num_gotas_cyan).toFixed(0) data.gotasMagenta = isNaN(parseFloat(row.num_gotas_magenta)) ? "" : parseFloat(row.num_gotas_magenta).toFixed(0) data.gotasAmarillo = isNaN(parseFloat(row.num_gotas_amarillo)) ? "" : parseFloat(row.num_gotas_amarillo).toFixed(0) data.precioPagNegro = isNaN(parseFloat(row.precio_pagina_negro)) ? "" : parseFloat(row.precio_pagina_negro).toFixed(6) data.precioPagColor = isNaN(parseFloat(row.precio_pagina_color)) ? "" : parseFloat(row.precio_pagina_color).toFixed(6) data.factorAltura = isNaN(parseFloat(row.factor_altura)) ? "" : parseFloat(row.factor_altura).toFixed(2) data.factorAnchura = isNaN(parseFloat(row.factor_anchura)) ? "" : parseFloat(row.factor_anchura).toFixed(2) data.paginasPliego = isNaN(parseFloat(row.paginas_por_pliego)) ? "" : parseFloat(row.paginas_por_pliego).toFixed(2) if (rowId.includes('rot')) { data.metrosMinuto = isNaN(parseFloat(row.maquina_velocidad)) ? "" : parseFloat(row.maquina_velocidad).toFixed(2) data.metrosPapelLibro = isNaN(parseFloat(row.metros_papel_libro)) ? "" : parseFloat(row.metros_papel_libro).toFixed(2) data.metrosPapelTotal = isNaN(parseFloat(row.metros_papel_total)) ? "" : parseFloat(row.metros_papel_total).toFixed(2) data.velocidadCorte = isNaN(parseFloat(row.velocidad_corte)) ? "" : parseFloat(row.velocidad_corte).toFixed(2) data.precioHoraCorte = isNaN(parseFloat(row.precio_hora_corte)) ? "" : parseFloat(row.precio_hora_corte).toFixed(2) data.tiempoCorte = isNaN(parseFloat(row.tiempo_corte)) ? "" : parseFloat(row.tiempo_corte).toFixed(2) data.totalCorte = isNaN(parseFloat(row.total_corte)) ? "" : parseFloat(row.total_corte).toFixed(2) } else { data.totalCorte = 0 } data.clicksLibro = isNaN(parseFloat(row.clicks_libro)) ? "" : parseFloat(row.clicks_libro).toFixed(0) data.gTintaNegro = isNaN(parseFloat(row.peso_gotas_negro)) ? "" : parseFloat(row.peso_gotas_negro).toFixed(2) data.gTintaCyan = isNaN(parseFloat(row.peso_gotas_cyan)) ? "" : parseFloat(row.peso_gotas_cyan).toFixed(2) data.gTintaMagenta = isNaN(parseFloat(row.peso_gotas_magenta)) ? "" : parseFloat(row.peso_gotas_magenta).toFixed(2) data.gTintaAmarillo = isNaN(parseFloat(row.peso_gotas_amarillo)) ? "" : parseFloat(row.peso_gotas_amarillo).toFixed(2) data.clicksPedido = isNaN(parseFloat(row.clicks_pedido)) ? "" : parseFloat(row.clicks_pedido).toFixed(0) data.totalClicksPedido = isNaN(parseFloat(row.precio_click_pedido)) ? "" : parseFloat(row.precio_click_pedido).toFixed(2) data.totalTinta = isNaN(parseFloat(row.precio_tinta)) ? "" : parseFloat(row.precio_tinta).toFixed(2) data.totalImpresion = isNaN(parseFloat(row.precio_click_pedido + row.precio_tinta + data.totalCorte)) ? "" : parseFloat(row.precio_click_pedido + row.precio_tinta + data.totalCorte).toFixed(2) data.gTintaNegroPed = isNaN(parseFloat(row.peso_gotas_negro_pedido)) ? "" : parseFloat(row.peso_gotas_negro_pedido).toFixed(2) data.gTintaCyanPed = isNaN(parseFloat(row.peso_gotas_cyan_pedido)) ? "" : parseFloat(row.peso_gotas_cyan_pedido).toFixed(2) data.gTintaMagentaPed = isNaN(parseFloat(row.peso_gotas_magenta_pedido)) ? "" : parseFloat(row.peso_gotas_magenta_pedido).toFixed(2) data.gTintaAmarilloPed = isNaN(parseFloat(row.peso_gotas_amarillo_pedido)) ? "" : parseFloat(row.peso_gotas_amarillo_pedido).toFixed(2) if (!rowId.includes('rot')) { data.cobCG = isNaN(parseFloat(row.datosTipologias.cg)) ? "" : parseFloat(row.datosTipologias.cg).toFixed(2) data.gotasCG = isNaN(parseFloat(row.num_gotas_cg)) ? "" : parseFloat(row.num_gotas_cg).toFixed(2) data.gTintaCG = isNaN(parseFloat(row.peso_gotas_cg)) ? "" : parseFloat(row.peso_gotas_cg).toFixed(2) data.gTintaCGPed = isNaN(parseFloat(row.peso_gotas_cg_pedido)) ? "" : parseFloat(row.peso_gotas_cg_pedido).toFixed(2) } data.alto_click = row.alto_click } return data } formatRow(d) { var value = '' + '' + '' + '' + '
' + '
' + window.language.Presupuestos.numeroPliegos + '' + '
' + '
' + window.language.Presupuestos.pliegosPedido + '' + '
' + '
' + window.language.Presupuestos.precioPliego + '' + '
' + '
' + window.language.Presupuestos.libro + '' + '
' + '
' + window.language.Presupuestos.totalPapelPedido + '' + '
' + '' + '
' + '' + '
' + '
' + window.language.Presupuestos.click + '' + '
' + '
' + window.language.Presupuestos.totalClicks + '' + '
' + '
' + window.language.Presupuestos.horas + '' + '
' + '
' + window.language.Presupuestos.precioHora + '' + '
' + '
' + window.language.Presupuestos.precioImpresion + '' + '
' + '
' + '' + '
' + '' + '' + '
' + '' value += '' if (d.maquinaTipo == 'inkjet') { value += '' + '' + '' + '' + '
' + '
' + '' + '
' + '
' + window.language.Presupuestos.numPagColor + '' + '
' + ((d.row_id.includes('rot')) ? '
' + window.language.Presupuestos.saturacion + '' + '
' : '') + '
' + window.language.Presupuestos.cobNegro + '' + '
' + '
' + window.language.Presupuestos.cobCyan + '' + '
' + '
' + window.language.Presupuestos.cobMagenta + '' + '
' + '
' + window.language.Presupuestos.cobAmarillo + '' + '
' + ((!d.row_id.includes('rot')) ? '
' + window.language.Presupuestos.cobCG + '' + '
' : '') + '
' + window.language.Presupuestos.gotaNegro + '' + '
' + '
' + window.language.Presupuestos.gotaColor + '' + '
' + '
' + window.language.Presupuestos.aFavorFibra + '' + '
' + '
' + '' + '
' + '
' + '' + '' + '' + '' + '' + '' + '
' + ((!d.row_id.includes('rot')) ? '
' + window.language.Presupuestos.factorAltura + '' + '
' + '
' + window.language.Presupuestos.factorAnchura + '' + '
' : '') + (d.row_id.includes('rot') ? '
' : '' + (d.row_id.includes('rot') ? '
' + window.language.Presupuestos.resolucion + '' + '
' : '') + (d.row_id.includes('rot') ? '
' + window.language.Presupuestos.areaPaginas + '' + '
' : '') + '
' + window.language.Presupuestos.gotasNegro + '' + '
' + '
' + window.language.Presupuestos.gotasCyan + '' + '
' + '
' + window.language.Presupuestos.gotasMagenta + '' + '
' + '
' + window.language.Presupuestos.gotasAmarillo + '' + '
' + (!(d.row_id.includes('rot')) ? '
' + window.language.Presupuestos.gotasCG + '' + '
' : '') + '
' + window.language.Presupuestos.precioPagNegro + '' + '
' + '
' + window.language.Presupuestos.precioPagColor + '' + '
' + (d.row_id.includes('rot') ? '
' + window.language.Presupuestos.factorAltura + '' + '
' + '
' + window.language.Presupuestos.factorAnchura + '' + '
' : '') + (d.row_id.includes('rot') ? '
' + window.language.Presupuestos.paginasPliego + '' + '
' : '') + '
' + '' + '' + '' + '' + '' + '' + '
' + (d.row_id.includes('rot') ? '
' : '' + (d.row_id.includes('rot') ? '
' : '' + (d.row_id.includes('rot') ? '
' + window.language.Presupuestos.clicksLibro + '' + '
' : '') + ((!d.row_id.includes('rot')) ? '
' + window.language.Presupuestos.saturacion + '' + '
' : '') + ((!d.row_id.includes('rot')) ? '
' + window.language.Presupuestos.paginasPliego + '' + '
' : '') + '
' + window.language.Presupuestos.gTintaNegro + '' + '
' + '
' + window.language.Presupuestos.gTintaCyan + '' + '
' + '
' + window.language.Presupuestos.gTintaMagenta + '' + '
' + '
' + window.language.Presupuestos.gTintaAmarillo + '' + '
' + (!(d.row_id.includes('rot')) ? '
' + window.language.Presupuestos.gTintaCG + '' + '
' : '') + ((!d.row_id.includes('rot')) ? '
' + window.language.Presupuestos.clicksLibro + '' + '
' : '') + '
' + window.language.Presupuestos.clicksPedido + '' + '
' + '
' + window.language.Presupuestos.totalClicks + '' + '
' + '
' + window.language.Presupuestos.totalTinta + '' + '
' + (d.row_id.includes('rot') ? '
' : '' + '
' + window.language.Presupuestos.totalImpresion + '' + '
' + '
' + '' + '' + '' + '' + '' + '' + '
' + ((!d.row_id.includes('rot')) ? '
' + window.language.Presupuestos.resolucion + '' + '
' : '') + ((!d.row_id.includes('rot')) ? '
' + window.language.Presupuestos.areaPaginas + '' + '
' : '') + (d.row_id.includes('rot') ? '
' : '' + (d.row_id.includes('rot') ? '
' : '' + (d.row_id.includes('rot') ? '
' : '' + '
' + window.language.Presupuestos.gTintaNegroPed + '' + '
' + '
' + window.language.Presupuestos.gTintaCyanPed + '' + '
' + '
' + window.language.Presupuestos.gTintaMagentaPed + '' + '
' + '
' + window.language.Presupuestos.gTintaAmarilloPed + '' + '
' + (!(d.row_id.includes('rot')) ? '
' + window.language.Presupuestos.gTintaCGPed + '' + '
' : '') + '
' + '' + '' } return $(value).toArray(); } getLomoInterior() { let lomo = 0; $('#tableLineasPresupuesto').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) { var rowData = this.data(); if (rowData.row_id != 'lp_cubierta' && rowData.tipo != 'lp_sobrecubierta') lomo += parseFloat(rowData.lomo); } ); return lomo; } getLomoCubierta() { let lomo = 0; $('#tableLineasPresupuesto').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) { var rowData = this.data(); if (rowData.row_id == 'lp_cubierta') lomo += parseFloat(rowData.lomo); } ); return lomo; } obtenerLinea(linea = 'lp_bn', fromComparador = false, updatedTipologias = false, input_data = {}) { const self = this; const dimension = this.getDimensionLibro(); if (Object.keys(input_data).length == 0) { input_data = { papel_generico_id: $('#' + linea + '_papel option:selected').val(), papel_generico: $('#' + linea + '_papel option:selected').text().trim(), gramaje: $('#' + linea + '_gramaje option:selected').text().trim(), maquina_id: $('#' + linea + '_maquina option:selected').val(), papel_impresion_id: $('#' + linea + '_papelImpresion option:selected').val() } if (linea.includes('rot')) { input_data.fibra = fromComparador == false ? ($('#lp_rot_color_aFavorFibra').prop('checked') ? 1 : 0) : 1; } if (linea == 'lp_cubierta') { input_data.paginas = parseInt($('#lp_cubierta_paginas option:selected').val()); } else if (linea == 'lp_sobrecubierta') { input_data.paginas = 4; } else if (linea == 'lp_guardas') { input_data.paginas = (parseInt($('#tipo_impresion_id').val()) == 1 || parseInt($('#tipo_impresion_id').val()) == 3) ? 8 : 4; input_data.paginas_impresion = parseInt($('#lp_guardas_paginas option:selected').val()); } else { input_data.paginas = parseInt($('#' + linea + '_paginas').val()); } } if (input_data.maquina_id == undefined || input_data.maquina_id == '') { return; } if (linea != 'lp_guardas' && linea != 'lp_sobrecubierta' && linea != 'lp_faja') { if (input_data.paginas == 0) return; } let uso = 'interior'; switch (linea) { case 'lp_cubierta': uso = 'cubierta'; break; case 'lp_sobrecubierta': uso = 'sobrecubierta'; break; case 'lp_guardas': uso = 'guardas'; break; case 'lp_rot_bn': case 'lp_rot_color': uso = 'interior_rot'; break; } let color = 1; if (linea == 'lp_bn' || linea == 'lp_bnhq' || linea == 'lp_rot_bn') { color = 0; } let hq = 1; if (linea == 'lp_bn' || linea == 'lp_color' || linea == 'lp_rot_bn' || linea == 'lp_rot_color') { hq = 0; } var datos = { tipo_impresion_id: $('#tipo_impresion_id').val(), type: uso, color: color, hq: hq, paginas: input_data.paginas, tirada: parseInt($('#tirada').val()), merma: parseInt($('#merma').val()), ancho: dimension.ancho, alto: dimension.alto, papel_generico_id: input_data.papel_generico_id, papel_generico: input_data.papel_generico, gramaje: input_data.gramaje, cliente_id: $('#clienteId').find(":selected").val(), }; if (linea.includes('rot')) { if (fromComparador) { datos.paginas_negro = parseInt($('#compPaginasNegro').val()) datos.paginas_color = parseInt($('#compPaginasColor').val()) } else { let paginas_color = isNaN(parseInt($('#lp_rot_color_numPagColor').val())) ? input_data.paginas : parseInt($('#lp_rot_color_numPagColor').val()) datos.paginas_negro = input_data.paginas - paginas_color; datos.paginas_color = paginas_color; } datos.a_favor_fibra = fromComparador == false ? ($('#lp_rot_color_aFavorFibra').prop('checked') ? 1 : 0) : 1; } else if (linea == 'lp_cubierta') { datos.solapas = $('#solapas').is(':checked') ? 1 : 0; datos.solapas_ancho = $('#solapas').is(':checked') ? parseInt($('#solapas_ancho').val()) : 0; datos.lomo = $('#lomo_cubierta').val(); } else if (linea == 'lp_sobrecubierta') { datos.solapas = $('#solapas_sobrecubierta').is(':checked') ? 1 : 0; datos.solapas_ancho = $('#solapas_sobrecubierta').is(':checked') ? parseInt($('#solapas_ancho_sobrecubierta').val()) : 0; datos.lomo = $('#lomo_sobrecubierta').val(); } else if (linea == 'lp_guardas') { datos.paginas_impresion = input_data.paginas_impresion; } datos = Object.assign(datos, window.token_ajax); // Si es inkjet, existe este check if ($('#' + linea + '_aFavorFibra').length) { datos.a_favor_fibra = $('#' + linea + '_aFavorFibra').prop('checked') } if (updatedTipologias && $('#' + linea + '_gotaNegro').length) { datos.gota_negro = $('#' + linea + '_gotaNegro').val() datos.gota_color = $('#' + linea + '_gotaColor').val() datos.negro = $('#' + linea + '_cobNegro').val() datos.cyan = $('#' + linea + '_cobCyan').val() datos.magenta = $('#' + linea + '_cobMagenta').val() datos.amarillo = $('#' + linea + '_cobAmarillo').val() if ($('#' + linea + '_cobCG').length) { datos.cg = $('#' + linea + '_cobCG').val() } } new Ajax('/presupuestoadmin/getlinea', datos, {}, (response) => { if (response.lineas.length > 0) { $.each(response.lineas, function (key, value) { // Se cogen los valores de la linea con los datos correspondientes if (value.fields.maquina_id === input_data.maquina_id && value.fields.papel_generico_id === input_data.papel_generico_id && value.fields.papel_impresion_id === input_data.papel_impresion_id) { // Si viene del comparador if (Object.keys(input_data).length == 0) { value.fields.check_papel_total = $('#' + linea + '_checkPapel').is(":checked") ? 1 : 0 value.fields.check_impresion_total = $('#' + linea + '_checkClicks').is(":checked") ? 1 : 0 } else { value.fields.check_papel_total = 1 value.fields.check_impresion_total = 1 } self.rellenarDatosLinea(linea, value.fields); return false; } }); } else { let pags = $("#" + linea + "_paginas").val() $("." + linea + "-input").val("0") $("#" + linea + "_paginas").val(pags) } }, (error) => { console.error(error); } ).post(); } rellenarDatosLinea(linea, row, fromComparator = false) { if (fromComparator) { var input_data = { paginas: row.paginas, papel_generico_id: row.papelGenericoId, gramaje: row.gramaje, papel_impresion_id: row.papelImpresionId, maquina_id: row.maquinaId, } this.obtenerLinea(linea, fromComparator, false, input_data) } else { // Se guarda el estado de "ver calculos" const mostrar_calculos = ($(".calculos_" + linea).css('display') == 'table-row') // Si viene de hacerlo a mano... let data = this.#processRowData(row, linea, linea.replace('_', '-')); let currentRow = this.table.row('#' + linea); if (currentRow.length > 0) this.table.row('#' + linea).data(data).draw() else { this.table.row.add(data).draw() currentRow = this.table.row('#' + linea); } currentRow.child(this.formatRow(currentRow.data())).show(); this.#addEventosLineas(linea, data.maquinaTipo == 'inkjet' ? true : false); $('#' + linea + '_checkPapel').trigger('change'); /* TO-DO calcular_mermas() updatePresupuesto({ update_lineas: false, update_servicios: true, update_envios: true, update_resumen: true, update_tiradas_alternativas: true }) */ // Si existe cubierta, hay que actualizar con el valor del lomo if (linea != 'lp_cubierta' && linea != 'lp_sobrecubierta' && this.table.row('#lp_cubierta').length > 0) { this.obtenerLinea('lp_cubierta', false, false); } if (mostrar_calculos) { $(".calculos_" + linea).css('display', 'table-row') } } this.table.columns.adjust(); } #addEventosLineas(tipoLinea, isInkjet = false) { const self = this; let tipo = 'negro'; let uso = 'interior'; switch (tipoLinea) { case 'lp_negrohq': tipo = 'negrohq'; break; case 'lp_rot_color': case 'lp_color': tipo = 'color'; break; case 'lp_colorhq': case 'lp_guardas': case 'lp_cubierta': case 'lp_sobrecubierta': tipo = 'colorhq'; break default: break; } switch (tipoLinea) { case 'lp_cubierta': uso = 'cubierta'; break; case 'lp_sobrecubierta': uso = 'sobrecubierta'; break; case 'lp_guardas': uso = 'guardas'; break; case 'lp_rot_bn': case 'lp_rot_color': uso = 'rotativa'; break; default: break; } let select_papel = new ClassSelect($('#' + tipoLinea + '_papel'), '/presupuestoadmin/papelgenerico', 'Seleccione papel', false, { [this.csrf_token]: this.csrf_hash, tipo_impresion: () => $("#tipo_impresion_id").val(), tirada: () => $('#tirada').val(), tipo: tipo, uso: uso, }, $('body')); select_papel.init(); let select_gramaje = new ClassSelect($('#' + tipoLinea + '_gramaje'), '/presupuestoadmin/papelgramaje', 'Seleccione gramaje', false, { [this.csrf_token]: this.csrf_hash, papel_generico: () => select_papel.getVal(), tipo_impresion: () => $("#tipo_impresion_id").val(), tirada: () => $('#tirada').val(), tipo: tipo, uso: uso, }, $('body')); select_gramaje.init(); let papel_impresion = new ClassSelect($('#' + tipoLinea + '_papelImpresion'), '/presupuestoadmin/papelimpresion', 'Seleccione papel', false, { [this.csrf_token]: this.csrf_hash, papel_generico: () => select_papel.getVal(), gramaje: () => select_gramaje.getVal(), tipo_impresion: () => $("#tipo_impresion_id").val(), tipo: tipo, uso: uso, }, $('body')); papel_impresion.init(); let merma = uso == 'interior' ? $('#merma').val() : $('#mermacubierta').val(); uso = ((uso == 'guardas') ? 'cubierta' : uso); let maquinas = new ClassSelect($('#' + tipoLinea + '_maquina'), '/presupuestoadmin/maquinas', 'Seleccione maquina', false, { [this.csrf_token]: this.csrf_hash, ancho: () => this.getDimensionLibro().ancho, alto: () => this.getDimensionLibro().alto, solapas: () => uso == 'cubierta' ? $('#solapas').prop('checked') : $('#solapas_sobrecubierta').prop('checked'), solapas_ancho: () => uso == 'cubierta' ? $('#solapas_ancho').val() : $('#solapas_ancho_sobrecubierta').val(), tirada: () => $('#tirada').val(), merma: merma, papel_impresion: () => papel_impresion.getVal(), tipo_impresion: () => $("#tipo_impresion_id").val(), tarifa_tipo: tipo, uso_tarifa: uso == 'rotativa' ? 'interior' : uso, is_rotativa: () => tipoLinea.includes('rot') ? 1 : 0, lomo_redondo: () => (this.tipo_impresion_id == 1 || this.tipo_impresion_id == 3) ? $('#compLomoRedondo').val() : 0, lomo: () => uso == 'sobrecubierta' ? this.getLomoCubierta() + this.getLomoInterior() : this.getLomoInterior(), }, $('body')); maquinas.init(); $('#' + tipoLinea + '_papel').on("change", () => { select_gramaje.reset(); papel_impresion.reset(); maquinas.reset(); }); $('#' + tipoLinea + '_gramaje').on('change', () => { papel_impresion.reset(); maquinas.reset(); }); $('#' + tipoLinea + '_papelImpresion').on("change", () => { maquinas.reset(); }); $('#' + tipoLinea + '_maquina').on("change", function (event) { self.obtenerLinea(tipoLinea, false, false, {}, event); // Pasamos explícitamente 'tipoLinea' }.bind(this)); $('#' + tipoLinea + '_paginas').on("change", function (event) { if (tipoLinea != 'lp_sobrecubierta') { self.obtenerLinea(tipoLinea, false, false, {}, event); // Pasamos explícitamente 'tipoLinea' } }.bind(this)); $('#' + tipoLinea + '_vercalculos').on("click", () => self.verCalculosInkjet(tipoLinea)); if (isInkjet) { $('.' + tipoLinea.replace('_', '-') + '-tipologia').on("change", () => { this.change_tipologia(tipoLinea); }); $('#' + tipoLinea + '_defecto').on("click", () => { this.lp_por_defecto(tipoLinea); }); $('#' + tipoLinea + '_aFavorFibra').on("change", () => { this.change_aFavorFibra(tipoLinea); }); } } verCalculosInkjet(linea) { if ($(".calculos_" + linea).css('display') == 'none') $(".calculos_" + linea).css('display', 'table-row') else { $(".calculos_" + linea).css('display', 'none') } } change_aFavorFibra(linea) { let paginas_ok = true; if (linea.includes('lp_bn') || linea.includes('lp_color') || linea.includes('lp_rot')) { paginas_ok = parseInt($('#' + linea + '_paginas').val()) > 0; } if (paginas_ok && parseInt($('#' + linea + '_papel option:selected').val()) > 0 && $('#' + linea + '_gramaje option:selected').text().length > 0 && parseInt($('#' + linea + '_papelImpresion option:selected').val()) > 0 ) { var rowData = this.table.row('#' + linea).data() rowData.aFavorFibra = $('#' + linea + '_aFavorFibra').prop('checked') this.table.row('#' + linea).data(rowData).draw(false) this.obtenerLinea(linea, false, true); } } change_tipologia(linea) { let paginas_ok = true; if (linea.includes('lp_bn') || linea.includes('lp_color') || linea.includes('lp_rot')) { paginas_ok = parseInt($('#' + linea + '_paginas').val()) > 0; } if (paginas_ok && parseInt($('#' + linea + '_papel option:selected').val()) > 0 && $('#' + linea + '_gramaje option:selected').text().length > 0 && parseInt($('#' + linea + '_papelImpresion option:selected').val()) > 0 ) { this.obtenerLinea(linea, false, true, {}); } } lp_por_defecto(linea) { let paginas_ok = true; if (linea.includes('lp_bn') || linea.includes('lp_color') || linea.includes('lp_rot')) { paginas_ok = parseInt($('#' + linea + '_paginas').val()) > 0; } if (paginas_ok && parseInt($('#' + linea + '_papel option:selected').val()) > 0 && $('#' + linea + '_gramaje option:selected').text().length > 0 && parseInt($('#' + linea + '_papelImpresion option:selected').val()) > 0 ) { this.obtenerLinea(linea); } } #insertarLineaComparador(e) { const self = this; if (e.target.id.includes("Plana") || e.target.id.includes("Rotativa")) { for (let i = self.table.rows().data().length - 1; i >= 0; i--) { let row = self.table.row(i).data(); if (row.row_id.includes('lp_bn') || row.row_id.includes('lp_color') || row.row_id.includes('lp_rot')) { self.table.row(i).remove(); } } self.table.draw(); if (e.target.id.includes("Plana")) { var rows = $("#tableCompIntPlana").DataTable().rows('.selected').data().toArray(); for (const row of rows) { if (row['tipo'] == 'bn') { this.rellenarDatosLinea('lp_bn', row, true); } else if (row['tipo'] == 'bnhq') { this.rellenarDatosLinea('lp_bnhq', row, true); } else if (row['tipo'] == 'color') { this.rellenarDatosLinea('lp_color', row, true); } else if (row['tipo'] == 'colorhq') { this.rellenarDatosLinea('lp_colorhq', row, true); } } } if (e.target.id.includes("Rotativa")) { var rows = $("#tableCompIntRotativa").DataTable().rows('.selected').data().toArray(); for (const row of rows) { if (row['paginasColor'] == 0) { this.rellenarDatosLinea('lp_rot_bn', row, true); } else if (row['paginasColor'] > 0) { this.rellenarDatosLinea('lp_rot_color', row, true); } } } } if (e.target.id.includes("Cubierta")) { for (let i = self.table.rows().data().length - 1; i >= 0; i--) { let row = self.table.row(i).data(); // Obtener datos de la fila actual if (row.row_id.includes('lp_cubierta') || row.row_id.includes('lp_sobrecubierta')) { self.table.row(i).remove(); // Eliminar fila } } self.table.draw(); var rows = $("#tableCompCubierta").DataTable().rows('.selected').data().toArray(); for (const row of rows) { if (row.tipo == 'cubierta') { this.rellenarDatosLinea('lp_cubierta', row, true); /* TO-DO if ($('#acabado_cubierta_id').val() > 0) insertar_acabado_exterior($('#acabado_cubierta_id').val(), window.Presupuestos.cubierta) */ } if (row.tipo == 'sobrecubierta') { this.rellenarDatosLinea('lp_sobrecubierta', row, true); /* TO-DO if ($('#acabado_sobrecubierta_id').val() > 0) insertar_acabado_exterior($('#acabado_sobrecubierta_id').val(), window.Presupuestos.sobrecubierta) */ } } } if (e.target.id.includes("Guardas")) { self.table.rows().data().toArray().forEach((row, index) => { const rowIdx = self.table.row(index).index(); // Obtener el índice actual de la fila if (row.row_id.includes('lp_guardas')) { self.table.row(rowIdx).remove(); // Eliminar fila por índice } }); self.table.draw(); var rows = $("#tableCompGuardas").DataTable().rows('.selected').data().toArray(); for (const row of rows) { this.rellenarDatosLinea('lp_guardas', row, true); } /* TO-DO servicioGuardas(true) */ } /* TO-DO updatePresupuesto({ update_lineas: false, update_servicios: true, update_envios: false, update_resumen: true, update_tiradas_alternativas: true }) */ } } export default LineasPresupuesto;