From d4af79a22daf41f9786002056277121ed5cd22f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Mon, 11 Mar 2024 13:47:40 +0100 Subject: [PATCH 1/6] =?UTF-8?q?a=C3=B1adido=20orden=20y=20boton=20de=20usa?= =?UTF-8?q?r=20tirada?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_lineasPresupuestoItems.php | 7 +++++- .../_tiradasAlternativasItems.js | 22 ++++++++++++++++--- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php index 49105ce8..3229b73a 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php @@ -1047,7 +1047,12 @@ $('.insertarLinea').on("click", function (e) { } servicioGuardas(true) } - + + + update_servicios().then(function(){ + update_tiradas_alternativas() + }) + }); diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js index 3449163d..2358dff4 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js @@ -5,6 +5,7 @@ const lastColNr_tiradasAlt = $('#tableTiradas').find("tr:first th").length - 1; // Función para generar los botones de acción de la tabla de tiradas const actionBtns_tiradasAlt = function (data) { return ` + `; }; @@ -157,7 +158,7 @@ function add_tirada_alternativa(tirada_alt) { } else { var htmlString = ''; - if(!typeIsOk){ + if(typeIsOk){ htmlString = ` `; } - $('#alert-tiradas_alt').html(htmlString); + $('#alert-tiradas_alt').hide().empty().html(htmlString).fadeIn("slow", function(){ + setTimeout(function(){ + $('#alert-tiradas_alt').fadeOut("slow"); + }, 5000); + }); } @@ -212,7 +217,7 @@ function initTableTiradas() { "paging": false, "info": false, "searching": false, - "ordering": false, + "ordering": true, "autoWidth": false, "responsive": true, "columnDefs": [ @@ -238,6 +243,7 @@ function initTableTiradas() { className: 'row-edit dt-center' } ], + order: [[0, 'asc']] }); } @@ -251,6 +257,16 @@ $(document).on('click', '.btn-delete-tirada', function (e) { }) +// Función para usar la tirada alternativa como tirada principal +$(document).on('click', '.comfirm-tirada-alt', function (e) { + + const row = $(this).closest('tr'); + const data = tableTiradas.row(row).data(); + $('#tirada').val(data.tirada); + $('#tirada').trigger('change'); +}) + + // Función para generar el JSON de las lineas de presupuesto para calcular las tiradas function generate_json_tiradas() { From 744dd5853cb50ea383f3aa96e4e5e22f5a10ce76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Mon, 11 Mar 2024 15:42:22 +0100 Subject: [PATCH 2/6] mejorando actualizacion de presupuesto --- .../cosidotapablanda/_datosEnvios.php | 29 +++- .../cosidotapablanda/_datosLibroItems.php | 38 +++++- .../cosidotapablanda/_datosServiciosItems.js | 125 ++++++++++-------- .../cosidotapablanda/_datosServiciosItems.php | 103 +++++++++++++-- .../_lineasPresupuestoItems.php | 114 +++++++++++----- .../_presupuestoDireccionesForm.php | 9 +- .../_resumenPresupuestoItems.php | 11 +- .../_tiradasAlternativasItems.js | 6 +- .../viewCosidotapablandaForm.php | 64 +++++++++ 9 files changed, 385 insertions(+), 114 deletions(-) diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios.php index b973d9c5..8137b3d2 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios.php @@ -141,7 +141,14 @@ function updateTablaEnvios(){ .draw(); checkInsertar() - updateTotales(false, false, true) + //updateTotales(false, false, true) + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: true + }) } else{ popErrorAlert('', 'error-tarifa') @@ -155,7 +162,14 @@ $(document).on('click', '.delete-add-row', function(e) { .remove() .draw(); checkInsertar() - updateTotales(false, false, true) + //updateTotales(false, false, true) + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: true + }) }) @@ -382,9 +396,16 @@ function load_datos_envios(){ }) .draw(); checkInsertar() - updateTotales(false, false, true) + //updateTotales(false, false, true) + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: false + }) }); - $('#tableOfDireccionesEnvio').bind('draw.dt', update_tiradas_alternativas); + //$('#tableOfDireccionesEnvio').bind('draw.dt', update_tiradas_alternativas); }) } diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php index 543a1f26..f1039c7e 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php @@ -335,7 +335,7 @@ $('#paginas').on("change", function () { if(url_parts2[url_parts2.length-2] == 'edit'){ checkPaginasPresupuesto() - updateLineasPresupuesto() + // Si es negro o color if ($('#tipoImpresion').select2('data')[0].id == 'negro' || $('#tipoImpresion').select2('data')[0].id == 'color') { @@ -349,7 +349,15 @@ $('#paginas').on("change", function () { $('#compPaginasNegrohq').trigger('change'); } - update_servicios(false) + //update_servicios(false) + //updateLineasPresupuesto() + updatePresupuesto({ + update_lineas: true, + update_servicios: true, + update_envios: true, + update_resumen: true, + update_tiradas_alternativas: true + }) } }); @@ -369,8 +377,15 @@ $('#tirada').on("change", function () { const url_parts2 = url2.split('/'); if(url_parts2[url_parts2.length-2] == 'edit'){ - update_servicios(false) - updateLineasPresupuesto() + //update_servicios(false) + //updateLineasPresupuesto() + updatePresupuesto({ + update_lineas: true, + update_servicios: true, + update_envios: true, + update_resumen: true, + update_tiradas_alternativas: false + }) checkInsertar() } }) @@ -493,8 +508,7 @@ function event_change_formato(){ ancho_libro = getDimensionLibro().ancho; alto_libro = getDimensionLibro().alto; - checkPaginasPresupuesto() - updateLineasPresupuesto() + // Si es negro o color if ($('#tipoImpresion').select2('data')[0].id == 'negro' || $('#tipoImpresion').select2('data')[0].id == 'color') { @@ -509,7 +523,17 @@ function event_change_formato(){ $('#compPapelCubierta').trigger('change'); $('#compPapelSobrecubierta').trigger('change'); - update_servicios(false) + checkPaginasPresupuesto() + + updatePresupuesto({ + update_lineas: true, + update_servicios: true, + update_envios: true, + update_resumen: true, + update_tiradas_alternativas: true + }) + //updateLineasPresupuesto() + //update_servicios(false) } diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.js index f70e6d8b..208117c0 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.js +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.js @@ -52,22 +52,25 @@ async function get_servAcabados_tiradasAlternativas(tirada){ tirada: parseInt(tirada), POD: $('#POD').val() } - json_data = Object.assign(json_data, window.token_ajax); + if(json_data.datos.length>0){ + + json_data = Object.assign(json_data, window.token_ajax); - const response = await fetch(window.location.origin + "/presupuestos/presupuestoacabados/update/" + id , { - method: "POST", - body: JSON.stringify(json_data), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - const values = await response.json(); - yeniden(values[window.csrf_token]); - values.lines.forEach((line) => { - - serviciosAcabados.coste += parseFloat(line[0].total); - serviciosAcabados.margen += parseFloat(line[0].total)*parseFloat(line[0].margen)/100.0; - }); + const response = await fetch(window.location.origin + "/presupuestos/presupuestoacabados/update/" + id , { + method: "POST", + body: JSON.stringify(json_data), + headers: { + "Content-type": "application/json; charset=UTF-8" + } + }) + const values = await response.json(); + yeniden(values[window.csrf_token]); + values.lines.forEach((line) => { + + serviciosAcabados.coste += parseFloat(line[0].total); + serviciosAcabados.margen += parseFloat(line[0].total)*parseFloat(line[0].margen)/100.0; + }); + } return serviciosAcabados; } @@ -123,21 +126,24 @@ async function get_servEncuadernacion_tiradasAlternativas(tirada, paginas, ancho alto: alto, POD: $('#POD').val() } - json_data = Object.assign(json_data, window.token_ajax); - const response = await fetch(window.location.origin + "/presupuestos/presupuestoencuadernaciones/update/" + id , { - method: "POST", - body: JSON.stringify(json_data), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - const values = await response.json(); - yeniden(values[window.csrf_token]); - values.lines.forEach((line) => { - serviciosEncuadernacion.coste += parseFloat(line[0].total); - serviciosEncuadernacion.margen += parseFloat(line[0].total)*parseFloat(line[0].margen)/100.0; - }); + if(json_data.datos.length>0){ + json_data = Object.assign(json_data, window.token_ajax); + + const response = await fetch(window.location.origin + "/presupuestos/presupuestoencuadernaciones/update/" + id , { + method: "POST", + body: JSON.stringify(json_data), + headers: { + "Content-type": "application/json; charset=UTF-8" + } + }) + const values = await response.json(); + yeniden(values[window.csrf_token]); + values.lines.forEach((line) => { + serviciosEncuadernacion.coste += parseFloat(line[0].total); + serviciosEncuadernacion.margen += parseFloat(line[0].total)*parseFloat(line[0].margen)/100.0; + }); + } return serviciosEncuadernacion; } @@ -188,21 +194,23 @@ async function get_servManipulado_tiradasAlternativas(tirada){ tirada: parseInt(tirada), POD: $('#POD').val() } - json_data = Object.assign(json_data, window.token_ajax); + if(json_data.datos.length>0){ + json_data = Object.assign(json_data, window.token_ajax); - const response = await fetch(window.location.origin + "/presupuestos/presupuestomanipulados/update/" + id , { - method: "POST", - body: JSON.stringify(json_data), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - const values = await response.json(); - yeniden(values[window.csrf_token]); - values.lines.forEach((line) => { - serviciosManipulado.coste += parseFloat(line[0].total); - serviciosManipulado.margen += parseFloat(line[0].total)*parseFloat(line[0].margen)/100.0; - }); + const response = await fetch(window.location.origin + "/presupuestos/presupuestomanipulados/update/" + id , { + method: "POST", + body: JSON.stringify(json_data), + headers: { + "Content-type": "application/json; charset=UTF-8" + } + }) + const values = await response.json(); + yeniden(values[window.csrf_token]); + values.lines.forEach((line) => { + serviciosManipulado.coste += parseFloat(line[0].total); + serviciosManipulado.margen += parseFloat(line[0].total)*parseFloat(line[0].margen)/100.0; + }); + } return serviciosManipulado; } @@ -247,20 +255,23 @@ async function get_servPreimpresion_tiradasAlternativas(){ datos: get_datos_preimpresion(), POD: $('#POD').val() } - json_data = Object.assign(json_data, window.token_ajax); + if(json_data.datos.length>0){ - const response = await fetch(window.location.origin + "/presupuestos/presupuestopreimpresiones/update/" + id , { - method: "POST", - body: JSON.stringify(json_data), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - const values = await response.json(); - yeniden(values[window.csrf_token]); - values.lines.forEach((line) => { - serviciosPreimpresion.coste += parseFloat(line[0].precio); - serviciosPreimpresion.margen += parseFloat(line[0].precio)*parseFloat(line[0].margen)/100.0; - }); + json_data = Object.assign(json_data, window.token_ajax); + + const response = await fetch(window.location.origin + "/presupuestos/presupuestopreimpresiones/update/" + id , { + method: "POST", + body: JSON.stringify(json_data), + headers: { + "Content-type": "application/json; charset=UTF-8" + } + }) + const values = await response.json(); + yeniden(values[window.csrf_token]); + values.lines.forEach((line) => { + serviciosPreimpresion.coste += parseFloat(line[0].precio); + serviciosPreimpresion.margen += parseFloat(line[0].precio)*parseFloat(line[0].margen)/100.0; + }); + } return serviciosPreimpresion; } \ No newline at end of file diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.php index dbc84863..5876de3f 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.php @@ -298,6 +298,14 @@ check_serv_acabado_error() check_serv_preimpresion_error() check_serv_manipulado_error() + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: true + }) + //updateTotales(false, true, false) }); @@ -374,7 +382,8 @@ ) } - function update_servicios(update_preimpresion=false){ + function actualizar_servicios(update_preimpresion=false){ + const domain = window.location.origin const dimension = getDimensionLibro(); @@ -448,6 +457,7 @@ $('#proveedor_enc_' + line[0].tarifa_id).on('change', proveedor_enc_event) }); check_serv_enc_error() + //updateTotales(false, true, false) yeniden(data.); }).then( fetch(domain + "/presupuestos/presupuestomanipulados/update/" + id , { @@ -470,6 +480,7 @@ $('#manipulado_margen_' + line[0].tarifa_id).val(parseFloat(line[0].margen).toFixed(2)) }); check_serv_manipulado_error() + //updateTotales(false, true, false) yeniden(data.); }).then(function(){ if(update_preimpresion){ @@ -492,6 +503,7 @@ }); check_serv_preimpresion_error() yeniden(data.); + //updateTotales(false, true, false) }) } }) @@ -521,9 +533,9 @@ language: { url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" }, - "drawCallback": function(settings ) { + /*"drawCallback": function(settings ) { updateTotales(false, true, false) - } + }*/ }); @@ -553,6 +565,15 @@ '', '' ]).draw(false) + + //updateTotales(false, true, false) + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: false + }) }) check_serv_acabado_error() @@ -616,6 +637,16 @@ '' ]).draw(false) }); + if(data.values.lenght > 0){ + //updateTotales(false, true, false) + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: false + }) + } check_serv_acabado_error() yeniden(data.); @@ -732,9 +763,9 @@ language: { url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" }, - "drawCallback": function(settings ) { + /*"drawCallback": function(settings ) { updateTotales(false, true, false) - } + }*/ }); @@ -806,6 +837,14 @@ $('#proveedor_enc_' + element.tarifa_encuadernado_id).on('change', proveedor_enc_event) }); + //updateTotales(false, true, false) + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: false + }) check_serv_enc_error() } @@ -839,6 +878,14 @@ $('#precio_unidad_encuadernado_' + datos.tarifa_encuadernacion_id).text(parseFloat(data.values[0].precio_unidad).toFixed(2)) $('#precio_total_encuadernado_' + datos.tarifa_encuadernacion_id).val(parseFloat(data.values[0].total).toFixed(2)) $('#enc_margen_' + datos.tarifa_encuadernacion_id).val(parseFloat(data.values[0].margen).toFixed(2)) + //updateTotales(false, true, false) + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: false + }) yeniden(data.); return true; }, @@ -964,6 +1011,16 @@ }); + if(data.values.lenght > 0){ + //updateTotales(false, true, false) + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: false + }) + } check_serv_enc_error() yeniden(data.); return true; @@ -1009,9 +1066,9 @@ language: { url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" }, - "drawCallback": function(settings ) { + /*"drawCallback": function(settings ) { updateTotales(false, true, false) - } + }*/ }); @@ -1104,6 +1161,16 @@ ]).draw(false) }); + if(data.values.lenght > 0){ + //updateTotales(false, true, false) + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: false + }) + } check_serv_manipulado_error() yeniden(data.); return true; @@ -1167,9 +1234,9 @@ language: { url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" }, - "drawCallback": function(settings ) { + /*"drawCallback": function(settings ) { updateTotales(false, true, false) - } + }*/ }); @@ -1194,6 +1261,14 @@ ]).draw(false) }) + //updateTotales(false, true, false) + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: false + }) check_serv_preimpresion_error() } @@ -1243,6 +1318,16 @@ ]).draw(false) }); + if(data.values.lenght > 0){ + //updateTotales(false, true, false) + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: false + }) + } check_serv_preimpresion_error() yeniden(data.); return true; diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php index 3229b73a..2033ce9f 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php @@ -1049,10 +1049,9 @@ $('.insertarLinea').on("click", function (e) { } - update_servicios().then(function(){ - update_tiradas_alternativas() - }) - + update_servicios() + + }); @@ -1562,9 +1561,16 @@ function fill_lp_bn(row, fromComparator=false){ $('#lp_bn_checkPapel').change() calcular_mermas() - updateTotales(true, false, false); - updateTablaEnvios() + //updateTotales(true, false, false); + //updateTablaEnvios() + 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 check_update_cubierta() @@ -1889,9 +1895,15 @@ function fill_lp_color(row, fromComparator=false){ $('#lp_color_checkPapel').change() calcular_mermas() - updateTotales(true, false, false); - - updateTablaEnvios() + //updateTotales(true, false, false); + //updateTablaEnvios() + 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 check_update_cubierta() @@ -2214,9 +2226,15 @@ function fill_lp_bnhq(row, fromComparator=false){ $('#lp_bnhq_checkPapel').change() calcular_mermas() - updateTotales(true, false, false); - - updateTablaEnvios() + //updateTotales(true, false, false); + //updateTablaEnvios() + 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 check_update_cubierta() @@ -2548,9 +2566,15 @@ function fill_lp_colorhq(row, fromComparator=false){ $('#lp_colorhq_checkPapel').change() calcular_mermas() - updateTotales(true, false, false); - - updateTablaEnvios() + //updateTotales(true, false, false); + //updateTablaEnvios() + 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 check_update_cubierta() @@ -2887,9 +2911,15 @@ function fill_lp_rot_bn(row, fromComparador=false){ $('#lp_rot_bn_checkPapel').change() calcular_mermas() - updateTotales(true, false, false); - - updateTablaEnvios() + //updateTotales(true, false, false); + //updateTablaEnvios() + 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 check_update_cubierta() @@ -3230,9 +3260,15 @@ function fill_lp_rot_color(row, fromComparador=false){ $('#lp_rot_color_checkPapel').change() calcular_mermas() - updateTotales(true, false, false); - - updateTablaEnvios() + //updateTotales(true, false, false); + //updateTablaEnvios() + 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 check_update_cubierta() @@ -3507,9 +3543,15 @@ function fill_lp_cubierta(row, fromComparador=false){ check_update_sobrecubierta() calcular_mermas() - updateTotales(true, false, false); - - updateTablaEnvios() + //updateTotales(true, false, false); + //updateTablaEnvios() + updatePresupuesto({ + update_lineas: false, + update_servicios: true, + update_envios: true, + update_resumen: true, + update_tiradas_alternativas: true + }) } @@ -3769,9 +3811,15 @@ function fill_lp_sobrecubierta(row, fromComparador=false){ $('#lp_sobrecubierta_checkPapel').change() calcular_mermas() - updateTotales(true, false, false); - - updateTablaEnvios() + //updateTotales(true, false, false); + //updateTablaEnvios() + updatePresupuesto({ + update_lineas: false, + update_servicios: true, + update_envios: true, + update_resumen: true, + update_tiradas_alternativas: true + }) } @@ -3963,9 +4011,15 @@ function fill_lp_guardas(row, fromComparador=false){ $('#lp_guardas_checkPapel').change() calcular_mermas() - updateTotales(true, false, false); - - updateTablaEnvios() + //updateTotales(true, false, false); + //updateTablaEnvios() + 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 check_update_cubierta() diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_presupuestoDireccionesForm.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_presupuestoDireccionesForm.php index ee35fd5f..34bb8273 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_presupuestoDireccionesForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_presupuestoDireccionesForm.php @@ -250,7 +250,14 @@ $('#saveDireccionEnvio').on('click', function(){ }) } checkInsertar() - updateTotales(false, false, true) + //updateTotales(false, false, true) + updatePresupuesto({ + update_lineas: false, + update_servicios: true, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: true + }) $('#addressForm').modal("hide"); } diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_resumenPresupuestoItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_resumenPresupuestoItems.php index 32c509ad..2b9a9e4b 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_resumenPresupuestoItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_resumenPresupuestoItems.php @@ -235,8 +235,7 @@ function updateTotales(updateLP=true, updateServicios=true, updateEnvio=true){ $('#totalAntesDescuento').text((totalAntesDescuento).toFixed(2) + '€') $('#descuentoTotal').text((totalDescuento).toFixed(2) + '€') $('#totalDespuesDecuento').text((totalPresupuesto).toFixed(2) + '€') - $('#precioUnidadPresupuesto').text((precioUnidad).toFixed(2) + '€') - + $('#precioUnidadPresupuesto').text((precioUnidad).toFixed(2) + '€') } function getValuesResumenForm(){ @@ -272,7 +271,13 @@ function getValuesResumenForm(){ $(".update-totales").on("change", function(){ - updateTotales(true, true, true) + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: true + }) }) endSection() ?> diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js index 2358dff4..6499c6b2 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js @@ -23,7 +23,7 @@ var tableTiradas; initTableTiradas(); fill_tiradas_alternativas(); - $('.tiradas-alternativas').each(function() { + /*$('.tiradas-alternativas').each(function() { if ($(this).is('input')) { $(this).bind('change', update_tiradas_alternativas); } else if ($(this).is('button')) { @@ -35,12 +35,12 @@ var tableTiradas; // para los botones de borrar $(this).bind('click', update_tiradas_alternativas); } - }); + });*/ })(); -function update_tiradas_alternativas(){ +function actualizar_tiradas_alternativas(){ // se obtiene la primera columna de la tabla de tiradas const data = tableTiradas.rows().data().toArray(); // se borra la tabla de tiradas diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php index 1e354ad2..4e731b6e 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php @@ -298,6 +298,70 @@ const url_parts = url.split('/'); + + + + + + section("additionalInlineJs") ?> + + function updatePresupuesto({update_lineas = false, update_servicios = false, update_envios = false,update_resumen = false, update_tiradas_alternativas = false}) { + + new Promise( + function(resolve, reject){ + if(update_lineas){ + updateLineasPresupuesto() + } + else + resolve() + } + ).then(function(){ + new Promise( + function(resolve, reject){ + if(update_servicios){ + actualizar_servicios() + } + else + resolve() + } + ) + }).then(function(){ + new Promise( + function(resolve, reject){ + if(update_envios){ + updateTablaEnvios() + } + else + resolve() + } + ) + }).then(function(){ + new Promise( + function(resolve, reject){ + if(update_resumen){ + updateTotales() + } + else + resolve() + } + ) + }).then(function(){ + new Promise( + function(resolve, reject){ + if(update_tiradas_alternativas){ + actualizar_tiradas_alternativas() + } + else + resolve() + } + ) + }) + } + + endSection() ?> + + + From cd9c3df8ebf739198a324bd77d709025822cb50d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= <“jaimejimenezortega@gmail.com”> Date: Mon, 11 Mar 2024 21:37:37 +0100 Subject: [PATCH 3/6] falta resolver el envio en el calculo de las tiradas alt --- .../cosidotapablanda/_datosLibroItems.php | 23 ++-- .../cosidotapablanda/_datosServiciosItems.js | 85 ++++++++------ .../cosidotapablanda/_datosServiciosItems.php | 108 +++++++++++++++--- .../_lineasPresupuestoItems.php | 61 +++++----- .../_resumenPresupuestoItems.php | 2 +- .../_tiradasAlternativasItems.js | 56 +++++---- .../viewCosidotapablandaForm.php | 21 ++-- 7 files changed, 243 insertions(+), 113 deletions(-) diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php index f1039c7e..f11d7dcb 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosLibroItems.php @@ -369,7 +369,7 @@ $('.solapas_sobrecubierta').on('change', function(){ $('#compGramajeSobrecubierta').trigger('change') }) -$('#tirada').on("change", function () { +$('#tirada').on("change", function (update_tiradas_alternativas = true) { calcular_mermas() @@ -379,13 +379,22 @@ $('#tirada').on("change", function () { if(url_parts2[url_parts2.length-2] == 'edit'){ //update_servicios(false) //updateLineasPresupuesto() + if(update_tiradas_alternativas) updatePresupuesto({ - update_lineas: true, - update_servicios: true, - update_envios: true, - update_resumen: true, - update_tiradas_alternativas: false - }) + update_lineas: true, + update_servicios: false, + update_envios: false, + update_resumen: false, + update_tiradas_alternativas: false + }) + else + updatePresupuesto({ + update_lineas: true, + update_servicios: false, + update_envios: false, + update_resumen: false, + update_tiradas_alternativas: false + }) checkInsertar() } }) diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.js index 208117c0..0e108317 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.js +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.js @@ -43,11 +43,11 @@ function get_datos_acabado(){ async function get_servAcabados_tiradasAlternativas(tirada){ - serviciosAcabados ={ + var serviciosAcabados ={ coste: 0.0, margen: 0.0, } - json_data = { + var json_data = { datos: get_datos_acabado(), tirada: parseInt(tirada), POD: $('#POD').val() @@ -56,19 +56,23 @@ async function get_servAcabados_tiradasAlternativas(tirada){ json_data = Object.assign(json_data, window.token_ajax); - const response = await fetch(window.location.origin + "/presupuestos/presupuestoacabados/update/" + id , { + await fetch(window.location.origin + "/presupuestos/presupuestoacabados/update/" + id , { method: "POST", body: JSON.stringify(json_data), headers: { "Content-type": "application/json; charset=UTF-8" } }) - const values = await response.json(); - yeniden(values[window.csrf_token]); - values.lines.forEach((line) => { + .then(response => response.json()) + .then(data => { + + //const values = await response.json(); + yeniden(data[window.csrf_token]); + data.lines.forEach((line) => { + serviciosAcabados.coste += parseFloat(line[0].total); + serviciosAcabados.margen += parseFloat(line[0].total)*parseFloat(line[0].margen)/100.0; + }); - serviciosAcabados.coste += parseFloat(line[0].total); - serviciosAcabados.margen += parseFloat(line[0].total)*parseFloat(line[0].margen)/100.0; }); } return serviciosAcabados; @@ -114,11 +118,13 @@ function get_datos_encuadernacion(){ async function get_servEncuadernacion_tiradasAlternativas(tirada, paginas, ancho, alto){ - serviciosEncuadernacion ={ + + var serviciosEncuadernacion ={ coste: 0.0, margen: 0.0, } - json_data = { + + var json_data = { datos: get_datos_encuadernacion(), tirada: parseInt(tirada), paginas: parseInt(paginas), @@ -130,21 +136,27 @@ async function get_servEncuadernacion_tiradasAlternativas(tirada, paginas, ancho if(json_data.datos.length>0){ json_data = Object.assign(json_data, window.token_ajax); - const response = await fetch(window.location.origin + "/presupuestos/presupuestoencuadernaciones/update/" + id , { + await fetch(window.location.origin + "/presupuestos/presupuestoencuadernaciones/update/" + id , { method: "POST", body: JSON.stringify(json_data), headers: { "Content-type": "application/json; charset=UTF-8" } }) - const values = await response.json(); - yeniden(values[window.csrf_token]); - values.lines.forEach((line) => { - serviciosEncuadernacion.coste += parseFloat(line[0].total); - serviciosEncuadernacion.margen += parseFloat(line[0].total)*parseFloat(line[0].margen)/100.0; + .then(response => response.json()) + .then(data => { + + //const values = await response.json(); + yeniden(data[window.csrf_token]); + data.lines.forEach((line) => { + serviciosEncuadernacion.coste += parseFloat(line[0].total); + serviciosEncuadernacion.margen += parseFloat(line[0].total)*parseFloat(line[0].margen)/100.0; + }); + }); } return serviciosEncuadernacion; + } @@ -185,11 +197,11 @@ function get_datos_manipulado(){ async function get_servManipulado_tiradasAlternativas(tirada){ - serviciosManipulado ={ + var serviciosManipulado ={ coste: 0.0, margen: 0.0, } - json_data = { + var json_data = { datos: get_datos_manipulado(), tirada: parseInt(tirada), POD: $('#POD').val() @@ -197,18 +209,22 @@ async function get_servManipulado_tiradasAlternativas(tirada){ if(json_data.datos.length>0){ json_data = Object.assign(json_data, window.token_ajax); - const response = await fetch(window.location.origin + "/presupuestos/presupuestomanipulados/update/" + id , { + await fetch(window.location.origin + "/presupuestos/presupuestomanipulados/update/" + id , { method: "POST", body: JSON.stringify(json_data), headers: { "Content-type": "application/json; charset=UTF-8" } }) - const values = await response.json(); - yeniden(values[window.csrf_token]); - values.lines.forEach((line) => { - serviciosManipulado.coste += parseFloat(line[0].total); - serviciosManipulado.margen += parseFloat(line[0].total)*parseFloat(line[0].margen)/100.0; + .then(response => response.json()) + .then(data => { + //const values = await response.json(); + yeniden(data[window.csrf_token]); + data.lines.forEach((line) => { + serviciosManipulado.coste += parseFloat(line[0].total); + serviciosManipulado.margen += parseFloat(line[0].total)*parseFloat(line[0].margen)/100.0; + }); + }); } return serviciosManipulado; @@ -246,12 +262,13 @@ function get_datos_preimpresion(){ return datosPreimpresion } + async function get_servPreimpresion_tiradasAlternativas(){ - serviciosPreimpresion ={ + var serviciosPreimpresion ={ coste: 0.0, margen: 0.0, } - json_data = { + var json_data = { datos: get_datos_preimpresion(), POD: $('#POD').val() } @@ -259,18 +276,22 @@ async function get_servPreimpresion_tiradasAlternativas(){ json_data = Object.assign(json_data, window.token_ajax); - const response = await fetch(window.location.origin + "/presupuestos/presupuestopreimpresiones/update/" + id , { + await fetch(window.location.origin + "/presupuestos/presupuestopreimpresiones/update/" + id , { method: "POST", body: JSON.stringify(json_data), headers: { "Content-type": "application/json; charset=UTF-8" } }) - const values = await response.json(); - yeniden(values[window.csrf_token]); - values.lines.forEach((line) => { - serviciosPreimpresion.coste += parseFloat(line[0].precio); - serviciosPreimpresion.margen += parseFloat(line[0].precio)*parseFloat(line[0].margen)/100.0; + .then(response => response.json()) + .then(data => { + //const values = await response.json(); + yeniden(data[window.csrf_token]); + data.lines.forEach((line) => { + serviciosPreimpresion.coste += parseFloat(line[0].precio); + serviciosPreimpresion.margen += parseFloat(line[0].precio)*parseFloat(line[0].margen)/100.0; + }); + }); } return serviciosPreimpresion; diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.php index 5876de3f..4347f727 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.php @@ -382,7 +382,7 @@ ) } - function actualizar_servicios(update_preimpresion=false){ + async function actualizar_servicios(update_preimpresion=false){ const domain = window.location.origin const dimension = getDimensionLibro(); @@ -561,10 +561,19 @@ element.tarifa_acabado_id, nombre_completo, '' + parseFloat(element.precio_unidad).toFixed(2) + '', - '', + '', '', '' ]).draw(false) + + $('#precio_total_acabado_' + element.tarifa_acabado_id).on('change', function(){ + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: true}) + }) //updateTotales(false, true, false) updatePresupuesto({ @@ -572,7 +581,7 @@ update_servicios: false, update_envios: false, update_resumen: true, - update_tiradas_alternativas: false + update_tiradas_alternativas: true }) }) @@ -632,10 +641,20 @@ row.tarifa_id, nombre, '' + parseFloat(row.precio_unidad).toFixed(2) + '', - '', + '', '', '' ]).draw(false) + + $('#precio_total_acabado_' + row.tarifa_id).on('change', function(){ + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: true}) + }) + }); if(data.values.lenght > 0){ //updateTotales(false, true, false) @@ -644,7 +663,7 @@ update_servicios: false, update_envios: false, update_resumen: true, - update_tiradas_alternativas: false + update_tiradas_alternativas: true }) } @@ -793,10 +812,19 @@ '' + '', '' + parseFloat(element.precio_unidad).toFixed(2) + '', - '', + '', '', '' ]).draw(false) + + $('#precio_total_encuadernado_' + element.tarifa_encuadernado_id).on('change', function(){ + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: true}) + }) $('#proveedor_enc_' + element.tarifa_encuadernado_id).select2({ allowClear: false, @@ -843,7 +871,7 @@ update_servicios: false, update_envios: false, update_resumen: true, - update_tiradas_alternativas: false + update_tiradas_alternativas: true }) check_serv_enc_error() @@ -884,7 +912,7 @@ update_servicios: false, update_envios: false, update_resumen: true, - update_tiradas_alternativas: false + update_tiradas_alternativas: true }) yeniden(data.); return true; @@ -964,10 +992,19 @@ '' + '', '' + parseFloat(row.precio_unidad).toFixed(2) + '', - '', + '', '', '' ]).draw(false) + + $('#precio_total_encuadernado_' + row.tarifa_id).on('change', function(){ + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: true}) + }) $('#proveedor_enc_' + row.tarifa_id).select2({ allowClear: false, @@ -1018,7 +1055,7 @@ update_servicios: false, update_envios: false, update_resumen: true, - update_tiradas_alternativas: false + update_tiradas_alternativas: true }) } check_serv_enc_error() @@ -1087,10 +1124,19 @@ element.tarifa_manipulado_id, element.nombre, '' + parseFloat(element.precio_unidad).toFixed(2) + '', - '', + '', '', '' ]).draw(false) + + $('#precio_total_manipulado_' + element.tarifa_manipulado_id).on('change', function(){ + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: true}) + }) }) check_serv_manipulado_error() @@ -1155,10 +1201,19 @@ row.tarifa_id, row.tarifa_nombre, '' + parseFloat(row.precio_unidad).toFixed(2) + '', - '', + '', '', '' ]).draw(false) + + $('#precio_total_manipulado_' + row.tarifa_id).on('change', function(){ + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: true}) + }) }); if(data.values.lenght > 0){ @@ -1168,7 +1223,7 @@ update_servicios: false, update_envios: false, update_resumen: true, - update_tiradas_alternativas: false + update_tiradas_alternativas: true }) } check_serv_manipulado_error() @@ -1255,10 +1310,19 @@ tableServiciosPreimpresion.row.add([ element.tarifa_preimpresion_id, element.nombre, - '', + '', '', '' ]).draw(false) + + $('#precio_preimpresion_' + element.tarifa_preimpresion_id).on('change', function(){ + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: true}) + }) }) //updateTotales(false, true, false) @@ -1267,7 +1331,7 @@ update_servicios: false, update_envios: false, update_resumen: true, - update_tiradas_alternativas: false + update_tiradas_alternativas: true }) check_serv_preimpresion_error() } @@ -1312,10 +1376,20 @@ tableServiciosPreimpresion.row.add([ row.tarifa_id, row.tarifa_nombre, - '', + '', '', '' ]).draw(false) + + $('#precio_preimpresion_' + row.tarifa_id).on('change', function(){ + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: true}) + }) + }); if(data.values.lenght > 0){ @@ -1325,7 +1399,7 @@ update_servicios: false, update_envios: false, update_resumen: true, - update_tiradas_alternativas: false + update_tiradas_alternativas: true }) } check_serv_preimpresion_error() diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php index 2033ce9f..bdd99a6f 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.php @@ -700,7 +700,14 @@ $(document).on('click', '.btn-delete-lp', function(e) { .remove() .draw(); - updateTablaEnvios() + //updateTablaEnvios() + 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) @@ -1404,7 +1411,7 @@ function change_lp_bn_aFavorFibra(){ } -function calcularPresupuesto_bn(input_data={}, updatedTipologias = false){ +async function calcularPresupuesto_bn(input_data={}, updatedTipologias = false){ const dimension = getDimensionLibro(); @@ -1454,7 +1461,7 @@ function calcularPresupuesto_bn(input_data={}, updatedTipologias = false){ } } - $.ajax({ + await $.ajax({ type: "POST", url: "/cosidotapablanda/datatable", data: datos, @@ -1768,7 +1775,7 @@ function change_lp_color_aFavorFibra(){ -function calcularPresupuesto_color(input_data={}, updatedTipologias = false){ +async function calcularPresupuesto_color(input_data={}, updatedTipologias = false){ const dimension = getDimensionLibro(); @@ -1818,7 +1825,7 @@ function calcularPresupuesto_color(input_data={}, updatedTipologias = false){ datos.a_favor_fibra = $('#lp_color_aFavorFibra').prop('checked') } - $.ajax({ + await $.ajax({ type: "POST", url: "/cosidotapablanda/datatable", data: datos, @@ -2099,7 +2106,7 @@ function change_lp_bnhq_aFavorFibra(){ } -function calcularPresupuesto_bnhq(input_data={}, updatedTipologias = false){ +async function calcularPresupuesto_bnhq(input_data={}, updatedTipologias = false){ const dimension = getDimensionLibro(); @@ -2149,7 +2156,7 @@ function calcularPresupuesto_bnhq(input_data={}, updatedTipologias = false){ datos.a_favor_fibra = $('#lp_bnhq_aFavorFibra').prop('checked')?1:0 } - $.ajax({ + await $.ajax({ type: "POST", url: "/cosidotapablanda/datatable", data: datos, @@ -2438,7 +2445,7 @@ function change_lp_colorhq_aFavorFibra(){ } -function calcularPresupuesto_colorhq(input_data={}, updatedTipologias = false){ +async function calcularPresupuesto_colorhq(input_data={}, updatedTipologias = false){ const dimension = getDimensionLibro(); @@ -2488,7 +2495,7 @@ function calcularPresupuesto_colorhq(input_data={}, updatedTipologias = false){ datos.a_favor_fibra = $('#lp_colorhq_aFavorFibra').prop('checked')?1:0 } - $.ajax({ + await $.ajax({ type: "POST", url: "/cosidotapablanda/datatable", data: datos, @@ -3095,7 +3102,7 @@ function change_lp_rot_color_aFavorFibra(){ } -function calcularPresupuesto_rot_color(fromComparador=false, updatedTipologias=false, input_data={}){ +async function calcularPresupuesto_rot_color(fromComparador=false, updatedTipologias=false, input_data={}){ const dimension = getDimensionLibro(); @@ -3148,7 +3155,7 @@ function calcularPresupuesto_rot_color(fromComparador=false, updatedTipologias=f datos.amarillo= $('#lp_rot_color_cobAmarillo').val() } - $.ajax({ + await $.ajax({ type: "POST", url: "/cosidotapablanda/datatable", data: datos, @@ -3426,7 +3433,7 @@ function change_lp_cubierta_paginas(){ } -function calcularPresupuesto_cubierta(fromComparador=false, input_data={}){ +async function calcularPresupuesto_cubierta(fromComparador=false, input_data={}){ const dimension = getDimensionLibro(); @@ -3465,7 +3472,7 @@ function calcularPresupuesto_cubierta(fromComparador=false, input_data={}){ : v } - $.ajax({ + await $.ajax({ type: "POST", url: "/cosidotapablanda/datatable", data: datos, @@ -3691,7 +3698,7 @@ function change_lp_sobrecubierta_maquina(){ } -function calcularPresupuesto_sobrecubierta(fromComparador=false, input_data={}){ +async function calcularPresupuesto_sobrecubierta(fromComparador=false, input_data={}){ const dimension = getDimensionLibro(); @@ -3730,7 +3737,7 @@ function calcularPresupuesto_sobrecubierta(fromComparador=false, input_data={}){ : v } - $.ajax({ + await $.ajax({ type: "POST", url: "/cosidotapablanda/datatable", data: datos, @@ -3898,7 +3905,7 @@ function clear_guardas(){ } -function calcularPresupuesto_guardas(fromComparador=false, input_data={}){ +async function calcularPresupuesto_guardas(fromComparador=false, input_data={}){ const dimension = getDimensionLibro(); @@ -3934,7 +3941,7 @@ function calcularPresupuesto_guardas(fromComparador=false, input_data={}){ : v }; - $.ajax({ + await $.ajax({ type: "POST", url: "/cosidotapablanda/datatable", data: datos, @@ -4449,33 +4456,33 @@ async function fill_bbdd_from_lp(presupuesto_id){ } -function updateLineasPresupuesto(){ +async function updateLineasPresupuesto(){ - $('#tableLineasPresupuesto tbody tr:visible ').each(function(){ + $('#tableLineasPresupuesto tbody tr:visible ').each(async function(){ if(this.id.endsWith('lp_bn')){ - calcularPresupuesto_bn({}, true); + await calcularPresupuesto_bn({}, true); } else if(this.id.endsWith('lp_bnhq')){ - calcularPresupuesto_bnhq({}, true); + await calcularPresupuesto_bnhq({}, true); } else if(this.id.endsWith('lp_color')){ - calcularPresupuesto_color({}, true); + await calcularPresupuesto_color({}, true); } else if(this.id.endsWith('lp_colorhq')){ - calcularPresupuesto_colorhq({}, true); + await calcularPresupuesto_colorhq({}, true); } else if(this.id.endsWith('lp_rot_bn')){ - calcularPresupuesto_rot_bn(false, true, {}) + await calcularPresupuesto_rot_bn(false, true, {}) } else if(this.id.endsWith('lp_rot_color')){ - calcularPresupuesto_rot_color(false, true, {}) + await calcularPresupuesto_rot_color(false, true, {}) } else if(this.id.endsWith('_cubierta')){ - calcularPresupuesto_cubierta(false, {}) + await calcularPresupuesto_cubierta(false, {}) } else if(this.id.endsWith('_guardas')){ - calcularPresupuesto_guardas(false, {}) + await calcularPresupuesto_guardas(false, {}) } }) diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_resumenPresupuestoItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_resumenPresupuestoItems.php index 2b9a9e4b..65b8bdc2 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_resumenPresupuestoItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_resumenPresupuestoItems.php @@ -276,7 +276,7 @@ $(".update-totales").on("change", function(){ update_servicios: false, update_envios: false, update_resumen: true, - update_tiradas_alternativas: true + update_tiradas_alternativas: false }) }) diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js index 6499c6b2..8ecb9e22 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js @@ -40,16 +40,18 @@ var tableTiradas; })(); -function actualizar_tiradas_alternativas(){ - // se obtiene la primera columna de la tabla de tiradas - const data = tableTiradas.rows().data().toArray(); - // se borra la tabla de tiradas - tableTiradas.clear().draw(); - const tiradas = data.map(row => row.tirada); - // por cada tirada, se añade una fila a la tabla de tiradas - tiradas.forEach(tirada => { - add_tirada_alternativa(tirada); - }); +async function actualizar_tiradas_alternativas(){ + if(tableTiradas !== undefined && tableTiradas.rows().count() > 0){ + // se obtiene la primera columna de la tabla de tiradas + const data = tableTiradas.rows().data().toArray(); + // se borra la tabla de tiradas + tableTiradas.clear().draw(); + const tiradas = data.map(row => row.tirada); + // por cada tirada, se añade una fila a la tabla de tiradas + await tiradas.forEach(async function(tirada){ + await add_tirada_alternativa(tirada); + }); + } } @@ -63,7 +65,7 @@ $('#add_tirada_alt').on('click', function () { // Funcion para añadir una tirada alternativa -function add_tirada_alternativa(tirada_alt) { +async function add_tirada_alternativa(tirada_alt) { // se comprueba que la tirada no existe ya en la tabla const exists = tableTiradas.rows().data().toArray().some(row => row.tirada == tirada_alt); @@ -93,7 +95,7 @@ function add_tirada_alternativa(tirada_alt) { datos = Object.assign(datos, window.token_ajax); // Se realiza la petición AJAX - $.ajax({ + await $.ajax({ type: "POST", url: window.get_tirada_url, data: datos, @@ -110,28 +112,38 @@ function add_tirada_alternativa(tirada_alt) { if(data.lineas.length >0){ // Se cogen los valores de la linea con los datos correspondientes - $.each(data.lineas, function(key, value) { + data.lineas.forEach(function(value) { coste_total += value.total_coste; margen_total += value.total_margen; }); + + console.log(datos.tirada); // Se obtiene el precio de los servicios const valueAcabados = await get_servAcabados_tiradasAlternativas(parseInt(datos.tirada)); - costes_servicios += valueAcabados.coste; - margen_servicios += valueAcabados.margen; + costes_servicios += parseFloat(valueAcabados.coste); + margen_servicios += parseFloat(valueAcabados.margen); + + console.log('coste acabados ('+ datos.tirada +'): ' + valueAcabados.coste); const valueEncuadernacion = await get_servEncuadernacion_tiradasAlternativas( parseInt(datos.tirada), parseInt( $('#paginas').val()), parseInt(dimension.ancho), parseInt(dimension.alto)); - costes_servicios += valueEncuadernacion.coste; - margen_servicios += valueEncuadernacion.margen; + costes_servicios += parseFloat(valueEncuadernacion.coste); + margen_servicios += parseFloat(valueEncuadernacion.margen); + + console.log('coste encuadernacion ('+ datos.tirada +'): ' + valueEncuadernacion.coste); const valueManipulado = await get_servManipulado_tiradasAlternativas(parseInt(datos.tirada)); - costes_servicios += valueManipulado.coste; - margen_servicios += valueManipulado.margen; + costes_servicios += parseFloat(valueManipulado.coste); + margen_servicios += parseFloat(valueManipulado.margen); + + console.log('coste manipulado ('+ datos.tirada +'): ' + valueManipulado.coste); const valuePreimpresion = await get_servPreimpresion_tiradasAlternativas(parseInt(datos.tirada)); - costes_servicios += valuePreimpresion.coste; - margen_servicios += valuePreimpresion.margen; + costes_servicios += parseFloat(valuePreimpresion.coste); + margen_servicios += parseFloat(valuePreimpresion.margen); + + console.log('coste preimpresion ('+ datos.tirada +'): ' + valuePreimpresion.coste); const valueTransporte = await get_coste_envio_tiradasAlternativas(parseInt(datos.tirada)); coste_envio = valueTransporte.coste; @@ -263,7 +275,7 @@ $(document).on('click', '.comfirm-tirada-alt', function (e) { const row = $(this).closest('tr'); const data = tableTiradas.row(row).data(); $('#tirada').val(data.tirada); - $('#tirada').trigger('change'); + $('#tirada').trigger('change', [false]); }) diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php index 4e731b6e..23aad873 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php @@ -305,21 +305,28 @@ const url_parts = url.split('/'); section("additionalInlineJs") ?> - function updatePresupuesto({update_lineas = false, update_servicios = false, update_envios = false,update_resumen = false, update_tiradas_alternativas = false}) { + async function updatePresupuesto( + { + update_lineas = false, + update_servicios = false, + update_envios = false, + update_resumen = false, + update_tiradas_alternativas = false + }) { new Promise( - function(resolve, reject){ + async function(resolve, reject){ if(update_lineas){ - updateLineasPresupuesto() + await updateLineasPresupuesto() } else resolve() } ).then(function(){ new Promise( - function(resolve, reject){ + async function(resolve, reject){ if(update_servicios){ - actualizar_servicios() + await actualizar_servicios() } else resolve() @@ -347,9 +354,9 @@ const url_parts = url.split('/'); ) }).then(function(){ new Promise( - function(resolve, reject){ + async function(resolve, reject){ if(update_tiradas_alternativas){ - actualizar_tiradas_alternativas() + await actualizar_tiradas_alternativas() } else resolve() From fc415706d940eb9a0508abae51d4053c99831247 Mon Sep 17 00:00:00 2001 From: 75134972k <75134972k@csic.es> Date: Tue, 12 Mar 2024 15:31:46 +0100 Subject: [PATCH 4/6] moviendo todo a ficheros js --- ci4/app/Controllers/Js_loader.php | 31 + .../themes/_commonPartialsBs/translate.js | 1 + .../cosidotapablanda/_datosEnvios.js | 113 + .../cosidotapablanda/_datosEnvios.php | 100 +- .../_lineasPresupuestoItems.js | 3320 +++++++++++++++++ .../_lineasPresupuestoItems.php | 3301 ---------------- .../cosidotapablanda/_presupuestos.js | 91 + .../_resumenPresupuestoItems.php | 203 - .../cosidotapablanda/_resumenPresupuestos.js | 195 + .../_tiradasAlternativasItems.js | 17 +- .../viewCosidotapablandaForm.php | 71 +- 11 files changed, 3766 insertions(+), 3677 deletions(-) create mode 100644 ci4/app/Views/themes/_commonPartialsBs/translate.js create mode 100644 ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.js create mode 100644 ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_presupuestos.js create mode 100644 ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_resumenPresupuestos.js diff --git a/ci4/app/Controllers/Js_loader.php b/ci4/app/Controllers/Js_loader.php index d6600618..f4176c99 100755 --- a/ci4/app/Controllers/Js_loader.php +++ b/ci4/app/Controllers/Js_loader.php @@ -21,12 +21,31 @@ class Js_loader extends BaseController } + function translate_js($translationFile) + { + $this->response->setHeader('Content-Type', 'text/javascript'); + + $locale = service('request')->getLocale(); + $path = "Language/{$locale}/$translationFile.php"; + $lang = require APPPATH.$path; + + return view('themes/_commonPartialsBs/translate.js', ['array_php' => $lang, 'var_name' => $translationFile]); + + } + + function previsualizador_js() { $this->response->setHeader('Content-Type', 'text/javascript'); return view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/previews.js'); } + function lineasPresupuesto_js() + { + $this->response->setHeader('Content-Type', 'text/javascript'); + return view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.js'); + } + function tiradasAlternativas_js() { $this->response->setHeader('Content-Type', 'text/javascript'); @@ -45,5 +64,17 @@ class Js_loader extends BaseController return view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios.js'); } + function resumenPresupuestos_js() + { + $this->response->setHeader('Content-Type', 'text/javascript'); + return view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/_resumenPresupuestos.js'); + } + + function presupuestos_js() + { + $this->response->setHeader('Content-Type', 'text/javascript'); + return view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/_presupuestos.js'); + } + } \ No newline at end of file diff --git a/ci4/app/Views/themes/_commonPartialsBs/translate.js b/ci4/app/Views/themes/_commonPartialsBs/translate.js new file mode 100644 index 00000000..0ebaad63 --- /dev/null +++ b/ci4/app/Views/themes/_commonPartialsBs/translate.js @@ -0,0 +1 @@ +window. = ; \ No newline at end of file diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios.js index 5d584c1d..7c5f4aee 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios.js +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios.js @@ -1,3 +1,10 @@ +const actionBtns_direcciones = function(data) { + return ` + + + `; +}; + // Funcion para obtener el peso total del libro function get_peso_libro(){ @@ -51,6 +58,9 @@ async function get_coste_envio_tiradasAlternativas(tirada){ const cantidad = Math.floor(tirada*porcentaje/100.0); const peso_envio = cantidad*peso_libro/1000.0; const datos_tarifa = await get_precio_envio(peso_envio, rowData.paisId, rowData.cp, parseInt(rowData.entregaPieCalle)==1?'palets':'cajas'); + + console.log({porcentaje, cantidad, tirada, tirada_inicial}); + if(datos_tarifa.id!=null){ @@ -68,4 +78,107 @@ async function get_coste_envio_tiradasAlternativas(tirada){ } return {coste, margen}; +} + + +function checkInsertar(){ + + var cantidad_total = 0 + $('#tableOfDireccionesEnvio').DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) { + var data = this.data(); + cantidad_total += parseInt(data.cantidad ) + } ); + var htmlString = '' + if(cantidad_total < parseInt($('#tirada').val())){ + $('#rowInsertar').css('display', 'flex') + } + else{ + $('#rowInsertar').css('display', 'none') + } + + if(cantidad_total != parseInt($('#tirada').val())){ + htmlString = ` + `; + } + $('#alert-envios').html(htmlString) +} + + +async function updateTablaEnvios(tirada_inicial = null, tirada = null){ + + var peso_total_libro = get_peso_libro(); + + $('#tableOfDireccionesEnvio').DataTable().rows().every(async function ( rowIdx, tableLoop, rowLoop ) { + + var rowData = this.data(); + + if(tirada_inicial!=null && tirada!=null){ + const porcentaje = parseInt(rowData.cantidad)/tirada_inicial*100.0; + const cantidad = Math.floor(tirada*porcentaje/100.0); + rowData.cantidad = cantidad + } + const peso_envio = peso_total_libro*parseInt(rowData.cantidad)/1000.0; + + var datos_tarifa = await get_precio_envio(peso_envio, rowData.paisId, rowData.cp, parseInt(rowData.entregaPieCalle)==1?'palets':'cajas'); + + + if(datos_tarifa.id!=null){ + + if(peso_envio>parseFloat(datos_tarifa.peso_max)){ + datos_tarifa.precio = parseFloat(datos_tarifa.peso_min) + (peso_envio-parseFloat(datos_tarifa.peso_min))*parseFloat(datos_tarifa.precio_adicional); + } + // si no se calcula linealmente + else{ + m=((parseFloat(datos_tarifa.precio_max)-parseFloat(datos_tarifa.precio_min))/(parseFloat(datos_tarifa.peso_max)-parseFloat(datos_tarifa.peso_min))); + b=parseFloat(datos_tarifa.precio_max)-m*parseFloat(datos_tarifa.peso_max); + datos_tarifa.precio = parseFloat(m*peso_envio+b); + } + + + datos_tarifa.cantidad = parseInt($('#add_cantidad').val()); + datos_tarifa.peso = peso_envio; + + $('#tableOfDireccionesEnvio').DataTable().row(rowIdx) + .data({ + 'tarifa_id': datos_tarifa.id, + 'cantidad': rowData.cantidad, + 'peso': datos_tarifa.peso.toFixed(3), + 'att': rowData.att, + 'email': rowData.email, + 'direccion': rowData.direccion, + 'cp': rowData.cp, + 'municipio': rowData.municipio, + 'provincia': rowData.provincia, + 'paisId': rowData.paisId, + 'telefono': rowData.telefono, + 'proveedor': datos_tarifa.proveedor, + 'proveedor_id': datos_tarifa.proveedor_id, + 'precio': datos_tarifa.precio.toFixed(2), + 'margen': datos_tarifa.margen, + 'entregaPieCalle': rowData.entregaPieCalle, + 'actionBtns_direcciones': actionBtns_direcciones, + }) + .draw(); + + checkInsertar() + //updateTotales(false, false, true) + updatePresupuesto({ + update_lineas: false, + update_servicios: false, + update_envios: false, + update_resumen: true, + update_tiradas_alternativas: true + }) + } + else{ + popErrorAlert(window.error_no_tarifa_envio, 'error-tarifa') + } + }) } \ No newline at end of file diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios.php index 8137b3d2..72afd123 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios.php @@ -83,78 +83,6 @@ $('#insertar_direccion').on('click', function(){ const lastColNr_direcciones = $('#tableOfDireccionesEnvio').find("tr:first th").length - 1; -const actionBtns_direcciones = function(data) { - return ` - - - `; -}; - -function updateTablaEnvios(){ - - var peso_total_libro = get_peso_libro(); - - tableEnvios.rows().every(async function ( rowIdx, tableLoop, rowLoop ) { - - var rowData = this.data(); - const peso_envio = peso_total_libro*parseInt(rowData.cantidad)/1000.0; - - var datos_tarifa = await get_precio_envio(peso_envio, rowData.paisId, rowData.cp, parseInt(rowData.entregaPieCalle)==1?'palets':'cajas'); - - - if(datos_tarifa.id!=null){ - - if(peso_envio>parseFloat(datos_tarifa.peso_max)){ - datos_tarifa.precio = parseFloat(datos_tarifa.peso_min) + (peso_envio-parseFloat(datos_tarifa.peso_min))*parseFloat(datos_tarifa.precio_adicional); - } - // si no se calcula linealmente - else{ - m=((parseFloat(datos_tarifa.precio_max)-parseFloat(datos_tarifa.precio_min))/(parseFloat(datos_tarifa.peso_max)-parseFloat(datos_tarifa.peso_min))); - b=parseFloat(datos_tarifa.precio_max)-m*parseFloat(datos_tarifa.peso_max); - datos_tarifa.precio = parseFloat(m*peso_envio+b); - } - - - datos_tarifa.cantidad = parseInt($('#add_cantidad').val()); - datos_tarifa.peso = peso_envio; - - tableEnvios.row(rowIdx) - .data({ - 'tarifa_id': datos_tarifa.id, - 'cantidad': rowData.cantidad, - 'peso': datos_tarifa.peso.toFixed(3), - 'att': rowData.att, - 'email': rowData.email, - 'direccion': rowData.direccion, - 'cp': rowData.cp, - 'municipio': rowData.municipio, - 'provincia': rowData.provincia, - 'paisId': rowData.paisId, - 'telefono': rowData.telefono, - 'proveedor': datos_tarifa.proveedor, - 'proveedor_id': datos_tarifa.proveedor_id, - 'precio': datos_tarifa.precio.toFixed(2), - 'margen': datos_tarifa.margen, - 'entregaPieCalle': rowData.entregaPieCalle, - 'actionBtns_direcciones': actionBtns_direcciones, - }) - .draw(); - - checkInsertar() - //updateTotales(false, false, true) - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true - }) - } - else{ - popErrorAlert('', 'error-tarifa') - } - }) -} $(document).on('click', '.delete-add-row', function(e) { const row = $(this).closest('tr'); @@ -293,33 +221,7 @@ var tableEnvios = $('#tableOfDireccionesEnvio').DataTable( { -function checkInsertar(){ - cantidad_total = 0 - tableEnvios.rows().every( function ( rowIdx, tableLoop, rowLoop ) { - var data = this.data(); - cantidad_total += parseInt(data.cantidad ) - } ); - htmlString = '' - if(cantidad_total < parseInt($('#tirada').val())){ - $('#rowInsertar').css('display', 'flex') - } - else{ - $('#rowInsertar').css('display', 'none') - } - if(cantidad_total != parseInt($('#tirada').val())){ - htmlString = ` - `; - } - $('#alert-envios').html(htmlString) -} function save_datos_envios(){ $.post( '', @@ -411,5 +313,5 @@ function load_datos_envios(){ window.url_get_precio_envio = ''; - +window.error_no_tarifa_envio = '' endSection() ?> \ No newline at end of file diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.js new file mode 100644 index 00000000..9a6740e7 --- /dev/null +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.js @@ -0,0 +1,3320 @@ +/*********************** + * Funcionamiento general de la página + ************************/ +// variable para controlar el foco en los inputs +let focused = 0; + +function change_focus(){ + // se comprueba que el elemento es un input + if($('#'+focused).is('input')){ + if(focused){ + $('#'+focused).focus(); + $('#'+focused).select(); + focused = 0; + } + } +} + + +// Formatting function for row details - modify as you need +function format(d) { + + var value = ''+ + ''+ + ''+ + ''+ + '
' + + '
' + + window.Presupuestos.numeroPliegos + + ''+ + '
'+ + '
' + + window.Presupuestos.pliegosPedido + + ''+ + '
'+ + '
' + + window.Presupuestos.precioPliego + + ''+ + '
'+ + '
' + + window.Presupuestos.libro + + ''+ + '
'+ + '
' + + window.Presupuestos.totalPapelPedido + + ''+ + '
'+ + '' + + '
' + + '' + + '
'+ + '
' + + window.Presupuestos.click + + ''+ + '
'+ + '
' + + window.Presupuestos.totalClicks + + ''+ + '
'+ + '
' + + window.Presupuestos.horas + + ''+ + '
'+ + '
' + + window.Presupuestos.precioHora + + ''+ + '
'+ + '
' + + window.Presupuestos.precioImpresion + + ''+ + '
'+ + '
' + + '' + + '
'+ + '' + + '' + + '
' + + '' + + + + + value += '' + + if(d.maquinaTipo=='inkjet'){ + value += + ''+ + ''+ + ''+ + ''+ + '
' + + '
' + + '' + + '
'+ + '
' + + window.Presupuestos.numPagColor + + '' + + '
' + + ((d.row_id.includes('rot'))?'
' + + window.Presupuestos.saturacion + + '' + + '
':'') + + '
' + + window.Presupuestos.cobNegro + + '' + + '
' + + '
' + + window.Presupuestos.cobCyan + + '' + + '
' + + '
' + + window.Presupuestos.cobMagenta + + '' + + '
' + + '
' + + window.Presupuestos.cobAmarillo + + '' + + '
' + + ((!d.row_id.includes('rot'))? + '
' + + window.Presupuestos.cobCG + + '' + + '
':'') + + '
' + + window.Presupuestos.gotaNegro + + '' + + '
' + + '
' + + window.Presupuestos.gotaColor + + '' + + '
' + + '
' + + window.Presupuestos.aFavorFibra + + '' + + '
' + + '
' + + '' + + '
' + + '
' + + + '' + + '' + + ''+ + ''+ + ''+ + ''+ + '
' + + ((!d.row_id.includes('rot'))? + '
' + + window.Presupuestos.factorAltura + + '' + + '
' + + '
' + + window.Presupuestos.factorAnchura + + '' + + '
':'') + + (d.row_id.includes('rot')?'
': '' + + + (d.row_id.includes('rot')?'
' + + window.Presupuestos.resolucion + + '' + + '
':'') + + (d.row_id.includes('rot')?'
' + + window.Presupuestos.areaPaginas + + '' + + '
':'') + + '
' + + window.Presupuestos.gotasNegro + + '' + + '
' + + '
' + + window.Presupuestos.gotasCyan + + '' + + '
' + + '
' + + window.Presupuestos.gotasMagenta + + '' + + '
' + + '
' + + window.Presupuestos.gotasAmarillo + + '' + + '
' + + (!(d.row_id.includes('rot'))?'
' + + window.Presupuestos.gotasCG + + '' + + '
':'') + + '
' + + window.Presupuestos.precioPagNegro + + '' + + '
' + + '
' + + window.Presupuestos.precioPagColor + + '' + + '
' + + (d.row_id.includes('rot')? + '
' + + window.Presupuestos.factorAltura + + '' + + '
' + + '
' + + window.Presupuestos.factorAnchura + + '' + + '
':'') + + (d.row_id.includes('rot')?'
' + + window.Presupuestos.paginasPliego + + '' + + '
':'') + + '
' + + '' + + '' + + ''+ + ''+ + ''+ + ''+ + '
' + + (d.row_id.includes('rot')?'
': '' + + (d.row_id.includes('rot')?'
': '' + + (d.row_id.includes('rot')?'
' + + window.Presupuestos.clicksLibro + + '' + + '
':'') + + ((!d.row_id.includes('rot'))?'
' + + window.Presupuestos.saturacion + + '' + + '
':'') + + ((!d.row_id.includes('rot'))?'
' + + window.Presupuestos.paginasPliego + + '' + + '
':'') + + '
' + + window.Presupuestos.gTintaNegro + + '' + + '
' + + '
' + + window.Presupuestos.gTintaCyan + + '' + + '
' + + '
' + + window.Presupuestos.gTintaMagenta + + '' + + '
' + + '
' + + window.Presupuestos.gTintaAmarillo + + '' + + '
' + + (!(d.row_id.includes('rot'))?'
' + + window.Presupuestos.gTintaCG + + '' + + '
':'') + + ((!d.row_id.includes('rot'))?'
' + + window.Presupuestos.clicksLibro + + '' + + '
':'') + + '
' + + window.Presupuestos.clicksPedido + + '' + + '
' + + '
' + + window.Presupuestos.totalClicks + + '' + + '
' + + '
' + + window.Presupuestos.totalTinta + + '' + + '
' + + (d.row_id.includes('rot')?'
': '' + + '
' + + window.Presupuestos.totalImpresion + + '' + + '
' + + '
' + + '' + + '' + + ''+ + ''+ + ''+ + ''+ + '
' + + ((!d.row_id.includes('rot'))?'
' + + window.Presupuestos.resolucion + + '' + + '
':'') + + ((!d.row_id.includes('rot'))?'
' + + window.Presupuestos.areaPaginas + + '' + + '
':'') + + (d.row_id.includes('rot')?'
': '' + + (d.row_id.includes('rot')?'
': '' + + (d.row_id.includes('rot')?'
': '' + + '
' + + window.Presupuestos.gTintaNegroPed + + '' + + '
' + + '
' + + window.Presupuestos.gTintaCyanPed + + '' + + '
' + + '
' + + window.Presupuestos.gTintaMagentaPed + + '' + + '
' + + '
' + + window.Presupuestos.gTintaAmarilloPed + + ''+ + '
' + + (!(d.row_id.includes('rot'))?'
' + + window.Presupuestos.gTintaCGPed + + ''+ + '
':'') + + '
' + + '' + + '' + } + + return $(value).toArray(); +} + +const lastColNr_lp = $('#tableLineasPresupuesto').find("tr:first th").length - 1; + +const actionBtns_lp = function(data) { + return ` + + `; +}; + +var tableLineasPresupuesto = 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"){ + select = '' + + return select; + } + else if(row.row_id == "lp_guardas"){ + 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') + + 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') + + 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' ] +}); + +tableLineasPresupuesto.on( 'draw.dt', function () { + checkPaginasPresupuesto() + getVisibleTabs() +} ); + + +$(document).on('click', '.btn-delete-lp', function(e) { + + const row = $(this).closest('tr'); + data = tableLineasPresupuesto.row( row ).data() + tableLineasPresupuesto.row( row ) + .remove() + .draw(); + + //updateTablaEnvios() + 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 + check_update_cubierta() +}) + + + +// Add event listener for opening and closing details +tableLineasPresupuesto.on('click', 'td.dt-control', function (e) { + let tr = e.target.closest('tr'); + let row = tableLineasPresupuesto.row(tr); + + if (row.child.isShown()) { + // This row is already open - close it + row.child.hide(); + } + else { + // Open this row + row.child(format(row.data())).show(); + } +}); + +function processRowData(row, rowId, rowClass){ + + var icon = "" + if(rowId=='lp_bn'){ + if(row.tipo_maquina=='toner') + icon = '' + else + icon = '' + } + + else if(rowId=='lp_bnhq'){ + if(row.tipo_maquina=='toner') + icon = '' + else + icon = '' + } + else if(rowId=='lp_color'){ + if(row.tipo_maquina=='toner') + icon = '' + else + icon = '' + } + else if(rowId=='lp_colorhq'){ + if(row.tipo_maquina=='toner') + icon = '' + else + icon = '' + } + + else if(rowId=='lp_cubierta') + icon = '' + else if(rowId=='lp_sobrecubierta') + icon = '' + else if(rowId=='lp_guardas') + icon = '' + else if(rowId=='lp_rot_bn') + icon = '' + else if(rowId=='lp_rot_color') + icon = '' + + 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, + '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 +} + + + +$('.paginas-lp').on('change', function(){ + checkPaginasPresupuesto() +}) + + +function verCalculosInkjet(e){ + if($( ".calculos_" + e.data.rowId ).css('display') == 'none') + $( ".calculos_" + e.data.rowId ).css('display', 'table-row') + else{ + $( ".calculos_" + e.data.rowId ).css('display', 'none') + } +}; + + + +function clear_interior(row_id = ''){ + switch(row_id) { + case 'lp_bn': + clear_lp_bn(true); + break; + case 'lp_color': + clear_lp_color(true); + break; + case 'lp_bnhq': + clear_lp_bnhq(true); + break; + case 'lp_colorhq': + clear_lp_colorhq(true); + break; + default: + clear_lp_bn(true); + clear_lp_color(true); + clear_lp_bnhq(true); + clear_lp_colorhq(true); + break; + } + if(row_id.length>0) + tableLineasPresupuesto.row( row_id ) + .remove() + .draw(); + else{ + tableLineasPresupuesto.row( '#lp_bn' ) + .remove().draw() + tableLineasPresupuesto.row( '#lp_bnhq' ) + .remove().draw() + tableLineasPresupuesto.row( '#lp_color' ) + .remove().draw() + tableLineasPresupuesto.row( '#lp_colorhq' ) + .remove().draw() + } +} + + +function clear_rotativa(row_id = ''){ + switch(row_id) { + case 'lp_rot_bn': + clear_lp_rot_bn(true); + break; + case 'lp_rot_color': + clear_lp_rot_color(true); + break; + default: + clear_lp_rot_bn(true); + clear_lp_rot_color(true); + break; + } + if(row_id.length>0) + tableLineasPresupuesto.row( row_id ) + .remove() + .draw(); + else{ + tableLineasPresupuesto.row( '#lp_rot_bn' ) + .remove().draw() + tableLineasPresupuesto.row( '#lp_rot_color' ) + .remove().draw() + } +} + + +function clear_cubierta(){ + clear_lp_cubierta(true); +} + +function clear_sobrecubierta(){ + clear_lp_sobrecubierta(true); +} + + +$('.insertarLinea').on("click", function (e) { + + if(e.target.id.includes("Plana")){ + + clear_interior(); + clear_rotativa(); + + var rows = $("#tableCompIntPlana").DataTable().rows( '.selected' ).data().toArray(); + + for(row of rows){ + if(row['tipo'] =='bn'){ + fill_lp_bn(row, true); + } + else if(row['tipo'] =='bnhq'){ + fill_lp_bnhq(row, true); + } + else if(row['tipo'] =='color'){ + fill_lp_color(row, true); + } + else if(row['tipo'] =='colorhq'){ + fill_lp_colorhq(row, true); + } + } + } + if(e.target.id.includes("Rotativa")){ + + clear_rotativa(); + clear_interior(); + + var rows = $("#tableCompIntRotativa").DataTable().rows( '.selected' ).data().toArray(); + for(row of rows){ + if(row['paginasColor'] ==0){ + fill_lp_rot_bn(row, true); + } + else if(row['paginasColor'] >0){ + fill_lp_rot_color(row, true); + } + } + } + + if(e.target.id.includes("Cubierta")){ + + clear_cubierta(); + + var rows = $("#tableCompCubierta").DataTable().rows( '.selected' ).data().toArray(); + for(row of rows){ + if(row.tipo == 'cubierta'){ + fill_lp_cubierta(row, true); + if($('#acabado_cubierta_id').val() > 0) + insertar_acabado_exterior($('#acabado_cubierta_id').val(), '') + } + } + + clear_sobrecubierta(); + + for(row of rows){ + if(row.tipo == 'sobrecubierta'){ + fill_lp_sobrecubierta(row, true); + if($('#acabado_sobrecubierta_id').val() > 0) + insertar_acabado_exterior($('#acabado_sobrecubierta_id').val(), '') + } + } + } + + if(e.target.id.includes("Guardas")){ + + clear_guardas(); + + var rows = $("#tableCompGuardas").DataTable().rows( '.selected' ).data().toArray(); + for(row of rows){ + fill_lp_guardas(row, true); + } + servicioGuardas(true) + } + + + update_servicios() + + +}); + + +$('#btn_addLinea').on("click", function (e) { + + var dataRows = tableLineasPresupuesto + .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;number0){ + + $.each(data.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 = $('#lp_bn' + '_checkPapel').is(":checked")?1:0 + value.fields.check_impresion_total = $('#lp_bn' + '_checkClicks').is(":checked")?1:0 + + } + else{ + value.fields.check_papel_total = 1 + value.fields.check_impresion_total = 1 + } + fill_lp_bn(value.fields); + + return false; + } + else{ + clear_lp_bn(false); + } + + }); + + } + else{ + + } + yeniden(data[window.csrf_token]); + + }, + error: function(e){ + + } + }) +} + +function clear_lp_bn(clear_selectors){ + let pags = $("#lp_bn_paginas" ).val() + $(".lp-bn-input" ).val("0") + $("#lp_bn_paginas" ).val(pags) + if(clear_selectors) + $( ".lp-bn-select").empty() +} + + + +function change_lp_bn_maquina(){ + if(parseInt($('#lp_bn_paginas').val())>0){ + calcularPresupuesto_bn(); + } +} + + +function change_lp_bn_paginas(){ + + if( parseInt($('#lp_bn_paginas').val())>0 && + parseInt($('#lp_bn_papel option:selected').val())>0 && + $('#lp_bn_gramaje option:selected').text().length>0 && + parseInt($('#lp_bn_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_bn(); + } +} + + +function change_lp_bn_aFavorFibra(){ + + if( parseInt($('#lp_bn_paginas').val())>0 && + parseInt($('#lp_bn_papel option:selected').val())>0 && + $('#lp_bn_gramaje option:selected').text().length>0 && + parseInt($('#lp_bn_papelImpresion option:selected').val())>0 + ){ + var rowData = tableLineasPresupuesto.row('#lp_bn').data() + rowData.aFavorFibra = $('#lp_bn_aFavorFibra').prop('checked') + tableLineasPresupuesto.row('#lp_bn').data(rowData).draw(false) + + calcularPresupuesto_bn(false, true); + } +} + + +function change_lp_bn_tipologia(){ + + if( parseInt($('#lp_bn_paginas').val())>0 && + parseInt($('#lp_bn_papel option:selected').val())>0 && + $('#lp_bn_gramaje option:selected').text().length>0 && + parseInt($('#lp_bn_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_bn({},true); + } +} + + +function por_defecto_lp_bn(){ + + if( parseInt($('#lp_bn_paginas').val())>0 && + parseInt($('#lp_bn_papel option:selected').val())>0 && + $('#lp_bn_gramaje option:selected').text().length>0 && + parseInt($('#lp_bn_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_bn(); + } +} + + +function fill_lp_bn(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, + } + calcularPresupuesto_bn(input_data) + } + else{ + // Se guarda el estado de "ver calculos" + mostrar_calculos = ($( ".calculos_lp_bn").css('display') == 'table-row') + + // Si viene de hacerlo a mano... + data = processRowData(row, 'lp_bn', 'lp-bn'); + + var row = tableLineasPresupuesto.row('#lp_bn'); + if(row.length>0) + tableLineasPresupuesto.row('#lp_bn').data(data).draw() + else{ + tableLineasPresupuesto.row.add(data).draw() + row = tableLineasPresupuesto.row('#lp_bn'); + } + row.child(format(row.data())).show(); + + eventos_lp_bn(data.maquinaTipo=='inkjet'?true:false) + + $('#lp_bn_checkPapel').change() + + calcular_mermas() + + //updateTotales(true, false, false); + //updateTablaEnvios() + 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 + check_update_cubierta() + + if(mostrar_calculos){ + $( ".calculos_lp_bn").css('display','table-row') + } + } + + $("#tableLineasPresupuesto").DataTable().columns.adjust(); + +} + +function eventos_lp_bn(isInkjet = false){ + $('#lp_bn_papel').bind("focus", {clear_selectors: true}, clear_lp_bn); + $('#lp_bn_gramaje').bind("focus", set_lp_bn_gramaje); + $('#lp_bn_papelImpresion').focus("focus", set_lp_bn_papelImpresion); + $('#lp_bn_maquina').bind("focus", set_lp_bn_maquina); + $('#lp_bn_maquina').bind("change", change_lp_bn_maquina); + $('#lp_bn_vercalculos').bind("click", {rowId: 'lp_bn'}, verCalculosInkjet); + + if(isInkjet){ + $('.lp-bn-tipologia').bind("change", change_lp_bn_tipologia); + $('#lp_bn_defecto').bind("click", por_defecto_lp_bn); + $('#lp_bn_aFavorFibra').bind("change", change_lp_bn_aFavorFibra); + } +} + + + +/*********************** + * Funciones LP BN + ************************/ +async function calcularPresupuesto_color(input_data={}, updatedTipologias = false){ + + const dimension = getDimensionLibro(); + + if(Object.keys(input_data).length == 0){ + + input_data = { + paginas:parseInt($('#lp_color_paginas').val()), + papel_generico_id: $('#lp_color_papel option:selected').val(), + papel_generico: $('#lp_color_papel option:selected').text().trim(), + gramaje: $('#lp_color_gramaje option:selected').text().trim(), + maquina_id: $('#lp_color_maquina option:selected').val(), + papel_impresion_id: $('#lp_color_papelImpresion option:selected').val() + } + } + + let datos = { + tipo_impresion_id: $('#tipo_impresion_id').val(), + type: 'interior', + color: 1, + hq: 0, + 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(), + }; + datos = Object.assign(datos, window.token_ajax); + + if(updatedTipologias && $('#lp_color_gotaNegro').length){ + datos.gota_negro= $('#lp_color_gotaNegro').val() + datos.gota_color= $('#lp_color_gotaColor').val() + datos.negro= $('#lp_color_cobNegro').val() + datos.cyan= $('#lp_color_cobCyan').val() + datos.magenta= $('#lp_color_cobMagenta').val() + datos.amarillo= $('#lp_color_cobAmarillo').val() + if ($('#lp_color_cobCG').length){ + datos.cg = $('#lp_color_cobCG').val() + } + } + + // Si es inkjet, existe este check + if ($('#lp_color_aFavorFibra').length){ + datos.a_favor_fibra = $('#lp_color_aFavorFibra').prop('checked') + } + + await $.ajax({ + type: "POST", + url: "/cosidotapablanda/datatable", + data: datos, + success: function (data) { + + if(data.lineas.length >0){ + // Se cogen los valores de la linea con los datos correspondientes + $.each(data.lineas, function(key, value) { + 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) { + + if(Object.keys(input_data).length == 0){ + value.fields.check_papel_total = $('#lp_color' + '_checkPapel').is(":checked")?1:0 + value.fields.check_impresion_total = $('#lp_color' + '_checkClicks').is(":checked")?1:0 + } + else{ + value.fields.check_papel_total = 1 + value.fields.check_impresion_total = 1 + } + fill_lp_color(value.fields); + return false; + } + else{ + clear_lp_color(false); + } + + }); + + } + else{ + + } + yeniden(data[window.csrf_token]); + + }, + error: function(e){ + + } + }) +} + +function clear_lp_color(clear_selectors){ + let pags = $("#lp_color_paginas" ).val() + $(".lp-color-input" ).val("0") + $("#lp_color_paginas" ).val(pags) + if(clear_selectors) + $( ".lp-color-select").empty() +} + + +function change_lp_color_maquina(){ + + if(parseInt($('#lp_color_paginas').val())>0){ + calcularPresupuesto_color(); + } +} + + +function change_lp_color_paginas(){ + + if( parseInt($('#lp_color_paginas').val())>0 && + parseInt($('#lp_color_papel option:selected').val())>0 && + $('#lp_color_gramaje option:selected').text().length>0 && + parseInt($('#lp_color_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_color(); + } +} + +function change_lp_color_tipologia(){ + + if( parseInt($('#lp_color_paginas').val())>0 && + parseInt($('#lp_color_papel option:selected').val())>0 && + $('#lp_color_gramaje option:selected').text().length>0 && + parseInt($('#lp_color_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_color({},true); + } +} + + +function por_defecto_lp_color(){ + + if( parseInt($('#lp_color_paginas').val())>0 && + parseInt($('#lp_color_papel option:selected').val())>0 && + $('#lp_color_gramaje option:selected').text().length>0 && + parseInt($('#lp_color_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_color(); + } +} + + +function change_lp_color_aFavorFibra(){ + + if( parseInt($('#lp_color_paginas').val())>0 && + parseInt($('#lp_color_papel option:selected').val())>0 && + $('#lp_color_gramaje option:selected').text().length>0 && + parseInt($('#lp_color_papelImpresion option:selected').val())>0 + ){ + var rowData = tableLineasPresupuesto.row('#lp_color').data() + rowData.aFavorFibra = $('#lp_color_aFavorFibra').prop('checked') + tableLineasPresupuesto.row('#lp_color').data(rowData).draw(false) + + calcularPresupuesto_color(false, true); + } +} + + +function fill_lp_color(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, + } + calcularPresupuesto_color(input_data) + } + else{ + // Se guarda el estado de "ver calculos" + mostrar_calculos = ($( ".calculos_lp_color").css('display') == 'table-row') + + // Si viene de hacerlo a mano... + data = processRowData(row, 'lp_color', 'lp-color'); + + var row = tableLineasPresupuesto.row('#lp_color'); + if(row.length>0) + tableLineasPresupuesto.row('#lp_color').data(data).draw() + else{ + tableLineasPresupuesto.row.add(data).draw() + row = tableLineasPresupuesto.row('#lp_color'); + } + row.child(format(row.data())).show(); + + eventos_lp_color(data.maquinaTipo=='inkjet'?true:false) + + $('#lp_color_checkPapel').change() + + calcular_mermas() + //updateTotales(true, false, false); + //updateTablaEnvios() + 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 + check_update_cubierta() + if(mostrar_calculos){ + $( ".calculos_lp_color").css('display','table-row') + } + } + + $("#tableLineasPresupuesto").DataTable().columns.adjust(); + +} + +function eventos_lp_color(isInkjet = false){ + + $('#lp_color_papel').bind("focus", {clear_selectors: true}, clear_lp_color); + $('#lp_color_gramaje').bind("focus", set_lp_color_gramaje); + $('#lp_color_papelImpresion').focus("focus", set_lp_color_papelImpresion); + $('#lp_color_maquina').bind("focus", set_lp_color_maquina); + $('#lp_color_maquina').bind("change", change_lp_color_maquina); + $('#lp_color_paginas').bind("change", change_lp_color_paginas); + $('#lp_color_vercalculos').bind("click", {rowId: 'lp_color'}, verCalculosInkjet); + + if(isInkjet){ + $('.lp-color-tipologia').bind("change", change_lp_color_tipologia); + $('#lp_color_defecto').bind("click", por_defecto_lp_color); + $('#lp_color_aFavorFibra').bind("change", change_lp_color_aFavorFibra); + } +} + + + +/*********************** + * Funciones LP BNHQ + ************************/ +function clear_lp_bnhq(clear_selectors){ + let pags = $("#lp_bnhq_paginas" ).val() + $(".lp-bnhq-input" ).val("0") + $("#lp_bnhq_paginas" ).val(pags) + if(clear_selectors) + $( ".lp-bnhq-select").empty() +} + + +function change_lp_bnhq_maquina(){ + + if(parseInt($('#lp_bnhq_paginas').val())>0){ + calcularPresupuesto_bnhq(); + } +} + +function change_lp_bnhq_paginas(){ + + if( parseInt($('#lp_bnhq_paginas').val())>0 && + parseInt($('#lp_bnhq_papel option:selected').val())>0 && + $('#lp_bnhq_gramaje option:selected').text().length>0 && + parseInt($('#lp_bnhq_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_bnhq(); + } +} + + +function change_lp_bnhq_tipologia(){ + + if( parseInt($('#lp_bnhq_paginas').val())>0 && + parseInt($('#lp_bnhq_papel option:selected').val())>0 && + $('#lp_bnhq_gramaje option:selected').text().length>0 && + parseInt($('#lp_bnhq_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_bnhq({},true); + } +} + + +function por_defecto_lp_bnhq(){ + + if( parseInt($('#lp_bnhq_paginas').val())>0 && + parseInt($('#lp_bnhq_papel option:selected').val())>0 && + $('#lp_bnhq_gramaje option:selected').text().length>0 && + parseInt($('#lp_bnhq_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_bnhq(); + } +} + +function change_lp_bnhq_aFavorFibra(){ + + if( parseInt($('#lp_bnhq_paginas').val())>0 && + parseInt($('#lp_bnhq_papel option:selected').val())>0 && + $('#lp_bnhq_gramaje option:selected').text().length>0 && + parseInt($('#lp_bnhq_papelImpresion option:selected').val())>0 + ){ + var rowData = tableLineasPresupuesto.row('#lp_bnhq').data() + rowData.aFavorFibra = $('#lp_bnhq_aFavorFibra').prop('checked') + tableLineasPresupuesto.row('#lp_bnhq').data(rowData).draw(false) + + calcularPresupuesto_bnhq(false, true); + } +} + + +async function calcularPresupuesto_bnhq(input_data={}, updatedTipologias = false){ + + const dimension = getDimensionLibro(); + + if(Object.keys(input_data).length == 0){ + + input_data = { + paginas:parseInt($('#lp_bnhq_paginas').val()), + papel_generico_id: $('#lp_bnhq_papel option:selected').val(), + papel_generico: $('#lp_bnhq_papel option:selected').text().trim(), + gramaje: $('#lp_bnhq_gramaje option:selected').text().trim(), + maquina_id: $('#lp_bnhq_maquina option:selected').val(), + papel_impresion_id: $('#lp_bnhq_papelImpresion option:selected').val() + } + } + + let datos = { + tipo_impresion_id: $('#tipo_impresion_id').val(), + type: 'interior', + color: 0, + hq: 1, + 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(), + }; + datos = Object.assign(datos, window.token_ajax); + + if(updatedTipologias && $('#lp_bnhq_gotaNegro').length){ + datos.gota_negro= $('#lp_bnhq_gotaNegro').val() + datos.gota_color= $('#lp_bnhq_gotaColor').val() + datos.negro= $('#lp_bnhq_cobNegro').val() + datos.cyan= $('#lp_bnhq_cobCyan').val() + datos.magenta= $('#lp_bnhq_cobMagenta').val() + datos.amarillo= $('#lp_bnhq_cobAmarillo').val() + if ($('#lp_bnhq_cobCG').length){ + datos.cg = $('#lp_bnhq_cobCG').val() + } + } + + // Si es inkjet, existe este check + if ($('#lp_bnhq_aFavorFibra').length){ + datos.a_favor_fibra = $('#lp_bnhq_aFavorFibra').prop('checked')?1:0 + } + + await $.ajax({ + type: "POST", + url: "/cosidotapablanda/datatable", + data: datos, + success: function (data) { + + if(data.lineas.length >0){ + // Se cogen los valores de la linea con los datos correspondientes + $.each(data.lineas, function(key, value) { + 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) { + + if(Object.keys(input_data).length == 0){ + value.fields.check_papel_total = $('#lp_bnhq' + '_checkPapel').is(":checked")?1:0 + value.fields.check_impresion_total = $('#lp_bnhq' + '_checkClicks').is(":checked")?1:0 + } + else{ + value.fields.check_papel_total = 1 + value.fields.check_impresion_total = 1 + } + fill_lp_bnhq(value.fields); + return false; + } + else{ + clear_lp_bnhq(false); + } + + }); + + } + else{ + + } + yeniden(data[window.csrf_token]); + + }, + error: function(e){ + + } + }) +} + +function fill_lp_bnhq(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, + } + calcularPresupuesto_bnhq(input_data) + } + else{ + // Se guarda el estado de "ver calculos" + mostrar_calculos = ($( ".calculos_lp_bnhq").css('display') == 'table-row') + // Si viene de hacerlo a mano... + data = processRowData(row, 'lp_bnhq', 'lp-bnhq'); + focused = $(':focus').attr('id'); + + var row = tableLineasPresupuesto.row('#lp_bnhq'); + if(row.length>0) + tableLineasPresupuesto.row('#lp_bnhq').data(data).draw() + else{ + tableLineasPresupuesto.row.add(data).draw() + row = tableLineasPresupuesto.row('#lp_bnhq'); + } + row.child(format(row.data())).show(); + + eventos_lp_bnhq(data.maquinaTipo=='inkjet'?true:false) + + $('#lp_bnhq_checkPapel').change() + + calcular_mermas() + //updateTotales(true, false, false); + //updateTablaEnvios() + 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 + check_update_cubierta() + + if(mostrar_calculos){ + $( ".calculos_lp_bnhq").css('display','table-row') + } + } + + $("#tableLineasPresupuesto").DataTable().columns.adjust(); + change_focus(); +} + +function eventos_lp_bnhq(isInkjet = false){ + $('#lp_bnhq_papel').bind("focus", {clear_selectors: true}, clear_lp_bnhq); + $('#lp_bnhq_gramaje').bind("focus", set_lp_bnhq_gramaje); + $('#lp_bnhq_papelImpresion').focus("focus", set_lp_bnhq_papelImpresion); + $('#lp_bnhq_maquina').bind("focus", set_lp_bnhq_maquina); + $('#lp_bnhq_maquina').bind("change", change_lp_bnhq_maquina); + $('#lp_bnhq_paginas').bind("change", change_lp_bnhq_paginas); + $('#lp_bnhq_vercalculos').bind("click", {rowId: 'lp_bnhq'}, verCalculosInkjet); + + if(isInkjet){ + $('.lp-bnhq-tipologia').bind("change", change_lp_bnhq_tipologia); + $('#lp_bnhq_defecto').bind("click", por_defecto_lp_bnhq); + $('#lp_bnhq_aFavorFibra').bind("change", change_lp_bnhq_aFavorFibra); + } +} + + +/*********************** + * Funciones LP COLORHQ + ************************/ +function clear_lp_colorhq(clear_selectors){ + let pags = $("#lp_colorhq_paginas" ).val() + $(".lp-colorhq-input" ).val("0") + $("#lp_colorhq_paginas" ).val(pags) + if(clear_selectors) + $( ".lp-colorhq-select").empty() +} + + +function change_lp_colorhq_maquina(){ + + if(parseInt($('#lp_colorhq_paginas').val())>0){ + calcularPresupuesto_colorhq(); + } +} + + +function change_lp_colorhq_paginas(){ + + if( parseInt($('#lp_colorhq_paginas').val())>0 && + parseInt($('#lp_colorhq_papel option:selected').val())>0 && + $('#lp_colorhq_gramaje option:selected').text().length>0 && + parseInt($('#lp_colorhq_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_colorhq(); + } +} + + +function change_lp_colorhq_tipologia(){ + + // Se obtiene el id del elemento que ha disparado el evento + var id = $(this).attr('id') + + if( parseInt($('#lp_colorhq_paginas').val())>0 && + parseInt($('#lp_colorhq_papel option:selected').val())>0 && + $('#lp_colorhq_gramaje option:selected').text().length>0 && + parseInt($('#lp_colorhq_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_colorhq({},true); + + } +} + + +function por_defecto_lp_colorhq(){ + + if( parseInt($('#lp_colorhq_paginas').val())>0 && + parseInt($('#lp_colorhq_papel option:selected').val())>0 && + $('#lp_colorhq_gramaje option:selected').text().length>0 && + parseInt($('#lp_colorhq_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_colorhq(); + } +} + + +function change_lp_colorhq_aFavorFibra(){ + + if( parseInt($('#lp_colorhq_paginas').val())>0 && + parseInt($('#lp_colorhq_papel option:selected').val())>0 && + $('#lp_colorhq_gramaje option:selected').text().length>0 && + parseInt($('#lp_colorhq_papelImpresion option:selected').val())>0 + ){ + var rowData = tableLineasPresupuesto.row('#lp_colorhq').data() + rowData.aFavorFibra = $('#lp_colorhq_aFavorFibra').prop('checked') + tableLineasPresupuesto.row('#lp_colorhq').data(rowData).draw(false) + + calcularPresupuesto_colorhq(false, true); + } +} + + +async function calcularPresupuesto_colorhq(input_data={}, updatedTipologias = false){ + + const dimension = getDimensionLibro(); + + if(Object.keys(input_data).length == 0){ + + input_data = { + paginas:parseInt($('#lp_colorhq_paginas').val()), + papel_generico_id: $('#lp_colorhq_papel option:selected').val(), + papel_generico: $('#lp_colorhq_papel option:selected').text().trim(), + gramaje: $('#lp_colorhq_gramaje option:selected').text().trim(), + maquina_id: $('#lp_colorhq_maquina option:selected').val(), + papel_impresion_id: $('#lp_colorhq_papelImpresion option:selected').val() + } + } + + let datos = { + tipo_impresion_id: $('#tipo_impresion_id').val(), + type: 'interior', + color: 1, + hq: 1, + 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(), + }; + datos = Object.assign(datos, window.token_ajax); + + if(updatedTipologias && $('#lp_colorhq_gotaNegro').length){ + datos.gota_negro= $('#lp_colorhq_gotaNegro').val() + datos.gota_color= $('#lp_colorhq_gotaColor').val() + datos.negro= $('#lp_colorhq_cobNegro').val() + datos.cyan= $('#lp_colorhq_cobCyan').val() + datos.magenta= $('#lp_colorhq_cobMagenta').val() + datos.amarillo= $('#lp_colorhq_cobAmarillo').val() + if ($('#lp_colorhq_cobCG').length){ + datos.cg = $('#lp_colorhq_cobCG').val() + } + } + + // Si es inkjet, existe este check + if ($('#lp_colorhq_aFavorFibra').length){ + datos.a_favor_fibra = $('#lp_colorhq_aFavorFibra').prop('checked')?1:0 + } + + await $.ajax({ + type: "POST", + url: "/cosidotapablanda/datatable", + data: datos, + success: function (data) { + + if(data.lineas.length >0){ + // Se cogen los valores de la linea con los datos correspondientes + $.each(data.lineas, function(key, value) { + 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) { + + if(Object.keys(input_data).length == 0){ + value.fields.check_papel_total = $('#lp_colorhq' + '_checkPapel').is(":checked")?1:0 + value.fields.check_impresion_total = $('#lp_colorhq' + '_checkClicks').is(":checked")?1:0 + } + else{ + value.fields.check_papel_total = 1 + value.fields.check_impresion_total = 1 + } + fill_lp_colorhq(value.fields); + return false; + } + else{ + clear_lp_colorhq(false); + } + + }); + + } + else{ + + } + yeniden(data[window.csrf_token]); + + }, + error: function(e){ + + } + }) +} + + +function fill_lp_colorhq(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, + } + calcularPresupuesto_colorhq(input_data) + } + else{ + // Se guarda el estado de "ver calculos" + mostrar_calculos = ($( ".calculos_lp_colorhq").css('display') == 'table-row') + focused = $(':focus').attr('id'); + + // Si viene de hacerlo a mano... + data = processRowData(row, 'lp_colorhq', 'lp-colorhq'); + + var row = tableLineasPresupuesto.row('#lp_colorhq'); + if(row.length>0) + tableLineasPresupuesto.row('#lp_colorhq').data(data).draw() + else{ + tableLineasPresupuesto.row.add(data).draw() + row = tableLineasPresupuesto.row('#lp_colorhq'); + } + row.child(format(row.data())).show(); + + eventos_lp_colorhq(data.maquinaTipo=='inkjet'?true:false) + + $('#lp_colorhq_checkPapel').change() + + calcular_mermas() + //updateTotales(true, false, false); + //updateTablaEnvios() + 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 + check_update_cubierta() + + if(mostrar_calculos){ + $( ".calculos_lp_colorhq").css('display','table-row') + } + } + + $("#tableLineasPresupuesto").DataTable().columns.adjust(); + change_focus(); +} + +function eventos_lp_colorhq(isInkjet = false){ + + $('#lp_colorhq_papel').bind("focus", {clear_selectors: true}, clear_lp_colorhq); + $('#lp_colorhq_gramaje').bind("focus", set_lp_colorhq_gramaje); + $('#lp_colorhq_papelImpresion').focus("focus", set_lp_colorhq_papelImpresion); + $('#lp_colorhq_maquina').bind("focus", set_lp_colorhq_maquina); + $('#lp_colorhq_maquina').bind("change", change_lp_colorhq_maquina); + $('#lp_colorhq_paginas').bind("change", change_lp_colorhq_paginas); + $('#lp_colorhq_vercalculos').bind("click", {rowId: 'lp_colorhq'}, verCalculosInkjet); + + if(isInkjet){ + $('.lp-colorhq-tipologia').bind("change", change_lp_colorhq_tipologia); + $('#lp_colorhq_defecto').bind("click", por_defecto_lp_colorhq); + $('#lp_colorhq_aFavorFibra').bind("change", change_lp_colorhq_aFavorFibra); + } +} + + + +/*********************** + * Funciones LP ROT_BN + ************************/ +function clear_lp_rot_bn(clear_selectors){ + let pags = $("#lp_rot_bn_paginas" ).val() + $(".lp-rot-bn-input" ).val("0") + $("#lp_rot_bn_paginas" ).val(pags) + if(clear_selectors) + $( ".lp-rotbn-select").empty() +} + + +function change_lp_rot_bn_maquina(){ + + if(parseInt($('#lp_rot_bn_paginas').val())>0){ + calcularPresupuesto_rot_bn(true,false); + } +} + + +function change_lp_rot_bn_paginas(){ + + if( parseInt($('#lp_rot_bn_paginas').val())>0 && + parseInt($('#lp_rot_bn_papel option:selected').val())>0 && + $('#lp_rot_bn_gramaje option:selected').text().length>0 && + parseInt($('#lp_rot_bn_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_rot_bn(); + } +} + + +function change_lp_rot_bn_aFavorFibra(){ + + + if( parseInt($('#lp_rot_bn_paginas').val())>0 && + parseInt($('#lp_rot_bn_papel option:selected').val())>0 && + $('#lp_rot_bn_gramaje option:selected').text().length>0 && + parseInt($('#lp_rot_bn_papelImpresion option:selected').val())>0 + ){ + var rowData = tableLineasPresupuesto.row('#lp_rot_bn').data() + rowData.aFavorFibra = $('#lp_rot_bn_aFavorFibra').prop('checked') + tableLineasPresupuesto.row('#lp_rot_bn').data(rowData).draw(false) + + + calcularPresupuesto_rot_bn(false, true); + } +} + + +async function calcularPresupuesto_rot_bn(fromComparador=false, updatedTipologias=false, input_data={}){ + + const dimension = getDimensionLibro(); + + if(Object.keys(input_data).length == 0){ + + input_data = { + paginas:parseInt($('#lp_rot_bn_paginas').val()), + papel_generico_id: $('#lp_rot_bn_papel option:selected').val(), + papel_generico: $('#lp_rot_bn_papel option:selected').text().trim(), + gramaje: $('#lp_rot_bn_gramaje option:selected').text().trim(), + maquina_id: $('#lp_rot_bn_maquina option:selected').val(), + papel_impresion_id: $('#lp_rot_bn_papelImpresion option:selected').val(), + fibra: fromComparador==false? ($('#lp_rot_bn_aFavorFibra').prop('checked')?1:0):1 + } + } + + let datos = { + tipo_impresion_id: $('#tipo_impresion_id').val(), + type: 'interior_rot', + color: 0, + hq: 0, + paginas: input_data.paginas, + paginas_negro: input_data.paginas, + paginas_color: 0, + 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(), + a_favor_fibra: fromComparador==false? ($('#lp_rot_bn_aFavorFibra').prop('checked')?1:0):1, + }; + datos = Object.assign(datos, window.token_ajax); + + if(updatedTipologias){ + datos.gota_negro= $('#lp_rot_bn_gotaNegro').val() + datos.gota_color= $('#lp_rot_bn_gotaColor').val() + datos.negro= $('#lp_rot_bn_cobNegro').val() + datos.cyan= $('#lp_rot_bn_cobCyan').val() + datos.magenta= $('#lp_rot_bn_cobMagenta').val() + datos.amarillo= $('#lp_rot_bn_cobAmarillo').val() + } + + await $.ajax({ + type: "POST", + url: "/cosidotapablanda/datatable", + data: datos, + success: function (data) { + + if(data.lineas.length >0){ + // Se cogen los valores de la linea con los datos correspondientes + $.each(data.lineas, function(key, value) { + + if(fromComparador){ + 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) { + + value.fields.check_papel_total = 1 + value.fields.check_impresion_total = 1 + fill_lp_rot_bn(value.fields); + return false; + } + } + else 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 && + value.fields.a_favor_fibra == input_data.fibra) { + + value.fields.check_papel_total = $('#lp_rot_bn' + '_checkPapel').is(":checked")?1:0 + value.fields.check_impresion_total = $('#lp_rot_bn' + '_checkClicks').is(":checked")?1:0 + fill_lp_rot_bn(value.fields); + return false; + } + clear_lp_rot_bn(false); + }); + + } + else{ + + } + yeniden(data[window.csrf_token]); + + }, + error: function(e){ + + } + }) +} + + +function change_lp_rot_bn_tipologia(){ + + if( parseInt($('#lp_rot_bn_paginas').val())>0 && + parseInt($('#lp_rot_bn_papel option:selected').val())>0 && + $('#lp_rot_bn_gramaje option:selected').text().length>0 && + parseInt($('#lp_rot_bn_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_rot_bn(false,true); + + } +} + + +function por_defecto_lp_rot_bn(wait_result = false){ + + if( parseInt($('#lp_rot_bn_paginas').val())>0 && + parseInt($('#lp_rot_bn_papel option:selected').val())>0 && + $('#lp_rot_bn_gramaje option:selected').text().length>0 && + parseInt($('#lp_rot_bn_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_rot_bn(false); + } +} + + +function fill_lp_rot_bn(row, fromComparador=false){ + + if(fromComparador){ + + var input_data = { + paginas: row.paginas, + papel_generico_id: row.papelGenericoId, + gramaje: row.gramaje, + papel_impresion_id: row.papelImpresionId, + maquina_id: row.maquinaId, + fibra: row.aFavorFibra=='no'?0:1 + } + + calcularPresupuesto_rot_bn(true, false, input_data); + + } + else{ + // Se guarda el estado de "ver calculos" + mostrar_calculos = ($( ".calculos_lp_rot_bn").css('display') == 'table-row') + focused = $(':focus').attr('id'); + + // Si viene de hacerlo a mano... + data = processRowData(row, 'lp_rot_bn', 'lp-rot-bn'); + + var row = tableLineasPresupuesto.row('#lp_rot_bn'); + if(row.length>0) + tableLineasPresupuesto.row('#lp_rot_bn').data(data).draw() + else{ + tableLineasPresupuesto.row.add(data).draw() + row = tableLineasPresupuesto.row('#lp_rot_bn'); + } + row.child(format(row.data())).show(); + + eventos_lp_rot_bn() + + $('#lp_rot_bn_checkPapel').change() + + calcular_mermas() + //updateTotales(true, false, false); + //updateTablaEnvios() + 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 + check_update_cubierta() + + if(mostrar_calculos){ + $( ".calculos_lp_rot_bn").css('display','table-row') + } + } + + $('.lp_rot_bn').css('display', '') + $("#tableLineasPresupuesto").DataTable().columns.adjust(); + change_focus(); +} + +function eventos_lp_rot_bn(){ + $('#lp_rot_bn_papel').bind("focus", {clear_selectors: true}, clear_lp_rot_bn); + $('#lp_rot_bn_gramaje').bind("focus", set_lp_rot_bn_gramaje); + $('#lp_rot_bn_papelImpresion').focus("focus", set_lp_rot_bn_papelImpresion); + $('#lp_rot_bn_maquina').bind("focus", set_lp_rot_bn_maquina); + $('#lp_rot_bn_maquina').bind("change", change_lp_rot_bn_maquina); + $('#lp_rot_bn_paginas').bind("change", change_lp_rot_bn_paginas); + $('#lp_rot_bn_vercalculos').bind("click", {rowId: 'lp_rot_bn'}, verCalculosInkjet); + $('#lp_rot_bn_aFavorFibra').bind("change", change_lp_rot_bn_aFavorFibra); + $('.lp-rot-bn-tipologia').bind("change", change_lp_rot_bn_tipologia); + $('#lp_rot_bn_defecto').bind("click", por_defecto_lp_rot_bn); + +} + + +/*********************** + * Funciones LP ROT_COLOR + ************************/ +function clear_lp_rot_color(clear_selectors){ + let pags = $("#lp_rot_color_paginas" ).val() + $(".lp-rot-color-input" ).val("0") + $("#lp_rot_color_paginas" ).val(pags) + if(clear_selectors) + $( ".lp-rotcolor-select").empty() +} + + +function change_lp_rot_color_maquina(){ + + if(parseInt($('#lp_rot_color_paginas').val())>0){ + + calcularPresupuesto_rot_color(true,false); + } +} + + +function change_lp_rot_color_paginas(){ + + if( parseInt($('#lp_rot_color_paginas').val())>0 && + parseInt($('#lp_rot_color_papel option:selected').val())>0 && + $('#lp_rot_color_gramaje option:selected').text().length>0 && + parseInt($('#lp_rot_color_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_rot_color(); + } +} + + +function change_lp_rot_color_aFavorFibra(){ + + if( parseInt($('#lp_rot_color_paginas').val())>0 && + parseInt($('#lp_rot_color_papel option:selected').val())>0 && + $('#lp_rot_color_gramaje option:selected').text().length>0 && + parseInt($('#lp_rot_color_papelImpresion option:selected').val())>0 + ){ + var rowData = tableLineasPresupuesto.row('#lp_rot_color').data() + rowData.aFavorFibra = $('#lp_rot_color_aFavorFibra').prop('checked') + tableLineasPresupuesto.row('#lp_rot_color').data(rowData).draw(false) + + calcularPresupuesto_rot_color(false, true); + } +} + + +async function calcularPresupuesto_rot_color(fromComparador=false, updatedTipologias=false, input_data={}){ + + const dimension = getDimensionLibro(); + + if(Object.keys(input_data).length == 0){ + + input_data = { + paginas:parseInt($('#lp_rot_color_paginas').val()), + papel_generico_id: $('#lp_rot_color_papel option:selected').val(), + papel_generico: $('#lp_rot_color_papel option:selected').text().trim(), + gramaje: $('#lp_rot_color_gramaje option:selected').text().trim(), + maquina_id: $('#lp_rot_color_maquina option:selected').val(), + papel_impresion_id: $('#lp_rot_color_papelImpresion option:selected').val(), + fibra: fromComparador==false? ($('#lp_rot_color_aFavorFibra').prop('checked')?1:0):1 + } + } + + paginas_color = isNaN(parseInt($('#lp_rot_color_numPagColor').val()))?input_data.paginas:parseInt($('#lp_rot_color_numPagColor').val()) + + let datos = { + tipo_impresion_id: $('#tipo_impresion_id').val(), + type: 'interior_rot', + color: 1, + hq: 0, + paginas: input_data.paginas, + paginas_negro: input_data.paginas-paginas_color, + paginas_color: paginas_color, + 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(), + a_favor_fibra: fromComparador==false? ($('#lp_rot_color_aFavorFibra').prop('checked')?1:0):1, + }; + datos = Object.assign(datos, window.token_ajax); + + if(fromComparador){ + datos.paginas_negro = parseInt($('#compPaginasNegro').val()) + datos.paginas_color = parseInt($('#compPaginasColor').val()) + } + + if(updatedTipologias){ + datos.gota_negro= $('#lp_rot_color_gotaNegro').val() + datos.gota_color= $('#lp_rot_color_gotaColor').val() + datos.negro= $('#lp_rot_color_cobNegro').val() + datos.cyan= $('#lp_rot_color_cobCyan').val() + datos.magenta= $('#lp_rot_color_cobMagenta').val() + datos.amarillo= $('#lp_rot_color_cobAmarillo').val() + } + + await $.ajax({ + type: "POST", + url: "/cosidotapablanda/datatable", + data: datos, + success: function (data) { + + if(data.lineas.length >0){ + // Se cogen los valores de la linea con los datos correspondientes + $.each(data.lineas, function(key, value) { + fibra = $('#lp_rot_color_aFavorFibra').prop('checked') + if(fromComparador){ + 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) { + + value.fields.check_papel_total = 1 + value.fields.check_impresion_total = 1 + fill_lp_rot_color(value.fields); + return false; + } + } + else 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 && + value.fields.a_favor_fibra == input_data.fibra) { + + value.fields.check_papel_total = $('#lp_rot_color' + '_checkPapel').is(":checked")?1:0 + value.fields.check_impresion_total = $('#lp_rot_color' + '_checkClicks').is(":checked")?1:0 + + fill_lp_rot_color(value.fields); + return false; + } + clear_lp_rot_color(false); + }); + + } + else{ + + } + yeniden(data[window.csrf_token]); + + }, + error: function(e){ + + } + }) +} + + +function change_lp_rot_color_tipologia(){ + + if( parseInt($('#lp_rot_color_paginas').val())>0 && + parseInt($('#lp_rot_color_papel option:selected').val())>0 && + $('#lp_rot_color_gramaje option:selected').text().length>0 && + parseInt($('#lp_rot_color_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_rot_color(false,true); + } +} + + +function por_defecto_lp_rot_color(){ + + if( parseInt($('#lp_rot_color_paginas').val())>0 && + parseInt($('#lp_rot_color_papel option:selected').val())>0 && + $('#lp_rot_color_gramaje option:selected').text().length>0 && + parseInt($('#lp_rot_color_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_rot_color(false); + } +} + + +function fill_lp_rot_color(row, fromComparador=false){ + + if(fromComparador){ + var input_data = { + paginas: row.paginas, + papel_generico_id: row.papelGenericoId, + gramaje: row.gramaje, + papel_impresion_id: row.papelImpresionId, + maquina_id: row.maquinaId, + fibra: row.aFavorFibra=='no'?0:1 + } + + calcularPresupuesto_rot_color(true, false, input_data); + + } + else{ + // Se guarda el estado de "ver calculos" + mostrar_calculos = ($( ".calculos_lp_rot_color").css('display') == 'table-row') + focused = $(':focus').attr('id'); + + // Si viene de hacerlo a mano... + data = processRowData(row, 'lp_rot_color', 'lp-rot-color'); + + var row = tableLineasPresupuesto.row('#lp_rot_color'); + if(row.length>0) + tableLineasPresupuesto.row('#lp_rot_color').data(data).draw() + else{ + tableLineasPresupuesto.row.add(data).draw() + row = tableLineasPresupuesto.row('#lp_rot_color'); + } + row.child(format(row.data())).show(); + + eventos_lp_rot_color() + + $('#lp_rot_color_checkPapel').change() + + calcular_mermas() + //updateTotales(true, false, false); + //updateTablaEnvios() + 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 + check_update_cubierta() + + if(mostrar_calculos){ + $( ".calculos_lp_rot_color").css('display','table-row') + } + } + + $("#tableLineasPresupuesto").DataTable().columns.adjust(); + change_focus(); +} + +function eventos_lp_rot_color(){ + $('#lp_rot_color_papel').bind("focus", {clear_selectors: true}, clear_lp_rot_color); + $('#lp_rot_color_gramaje').bind("focus", set_lp_rot_color_gramaje); + $('#lp_rot_color_papelImpresion').focus("focus", set_lp_rot_color_papelImpresion); + $('#lp_rot_color_maquina').bind("focus", set_lp_rot_color_maquina); + $('#lp_rot_color_maquina').bind("change", change_lp_rot_color_maquina); + $('#lp_rot_color_paginas').bind("change", change_lp_rot_color_paginas); + $('#lp_rot_color_numPagColor').bind("change", change_lp_rot_color_paginas); + $('#lp_rot_color_vercalculos').bind("click", {rowId: 'lp_rot_color'}, verCalculosInkjet); + $('#lp_rot_color_aFavorFibra').bind("change", change_lp_rot_color_aFavorFibra); + $('.lp-rot-color-tipologia').bind("change", change_lp_rot_color_tipologia); + $('#lp_rot_color_defecto').bind("click", por_defecto_lp_rot_color); +} + + +/*********************** + * Funciones LP CUBIERTA + ************************/ +function clear_lp_cubierta(clear_selectors){ + let pags = $("#lp_cubierta_paginas option:selected" ).val() + $(".lp-cubierta-input" ).val("0") + $("#lp_cubierta_paginas" ).val(pags) + if(clear_selectors) + $( ".lp-cubierta-select").empty() +} + + +function change_lp_cubierta_maquina(){ + + if(parseInt($('#lp_cubierta_paginas option:selected').val())>0){ + calcularPresupuesto_cubierta(); + } +} + + +function change_lp_cubierta_paginas(){ + + if( parseInt($('#lp_cubierta_paginas option:selected').val())>0 && + parseInt($('#lp_cubierta_papel option:selected').val())>0 && + $('#lp_cubierta_gramaje option:selected').text().length>0 && + parseInt($('#lp_cubierta_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_cubierta(); + } +} + + +async function calcularPresupuesto_cubierta(fromComparador=false, input_data={}){ + + const dimension = getDimensionLibro(); + + if(Object.keys(input_data).length == 0){ + + input_data = { + paginas:parseInt($('#lp_cubierta_paginas option:selected').val()), + papel_generico_id: $('#lp_cubierta_papel option:selected').val(), + papel_generico: $('#lp_cubierta_papel option:selected').text().trim(), + gramaje: $('#lp_cubierta_gramaje option:selected').text().trim(), + maquina_id: $('#lp_cubierta_maquina option:selected').val(), + papel_impresion_id: $('#lp_cubierta_papelImpresion option:selected').val() + } + } + + + let datos = { + tipo_impresion_id: $('#tipo_impresion_id').val(), + type: 'cubierta', + color: 1, + hq: 1, + paginas: input_data.paginas, + paginas_negro: 0, + paginas_color: 0, + solapas: $('#solapas').is(':checked')?1:0, + solapas_ancho: $('#solapas').is(':checked')?parseInt($('#solapas_ancho').val()):0, + tirada: parseInt($('#tirada').val()), + merma: parseInt($('#mermacubierta').val()), + ancho: dimension.ancho, + alto: dimension.alto, + lomo: getLomoLineasPresupuesto(), + papel_generico_id: input_data.papel_generico_id, + papel_generico: input_data.papel_generico, + gramaje: input_data.gramaje, + cliente_id: $('#clienteId').find(":selected").val(), + } + datos = Object.assign(datos, window.token_ajax); + + await $.ajax({ + type: "POST", + url: "/cosidotapablanda/datatable", + data: datos, + success: function (data) { + + if(data.lineas.length >0){ + // Se cogen los valores de la linea con los datos correspondientes + $.each(data.lineas, function(key, value) { + 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) { + + if(Object.keys(input_data).length == 0){ + value.fields.check_papel_total = $('#lp_cubierta' + '_checkPapel').is(":checked")?1:0 + value.fields.check_impresion_total = $('#lp_cubierta' + '_checkClicks').is(":checked")?1:0 + } + else{ + value.fields.check_papel_total = 1 + value.fields.check_impresion_total = 1 + } + fill_lp_cubierta(value.fields); + return false; + } + clear_lp_cubierta(false); + }); + + } + else{ + + } + yeniden(data[window.csrf_token]); + + }, + error: function(e){ + + } + }) +} + + +function fill_lp_cubierta(row, fromComparador=false){ + + if(fromComparador){ + + var input_data = { + paginas: row.paginas, + papel_generico_id: row.papelGenericoId, + gramaje: row.gramaje, + papel_impresion_id: row.papelImpresionId, + maquina_id: row.maquinaId, + } + + calcularPresupuesto_cubierta(false, input_data); + + } + else{ + + // Si viene de hacerlo a mano... + data = processRowData(row, 'lp_cubierta', 'lp-cubierta'); + focused = $(':focus').attr('id'); + + var row = tableLineasPresupuesto.row('#lp_cubierta'); + if(row.length>0) + tableLineasPresupuesto.row('#lp_cubierta').data(data).draw() + else{ + tableLineasPresupuesto.row.add(data).draw() + row = tableLineasPresupuesto.row('#lp_cubierta'); + } + row.child(format(row.data())).show(); + + eventos_lp_cubierta() + + $('#lp_cubierta_checkPapel').change() + + check_update_sobrecubierta() + + calcular_mermas() + //updateTotales(true, false, false); + //updateTablaEnvios() + updatePresupuesto({ + update_lineas: false, + update_servicios: true, + update_envios: true, + update_resumen: true, + update_tiradas_alternativas: true + }) + + } + + $("#tableLineasPresupuesto").DataTable().columns.adjust(); + change_focus(); +} + +function eventos_lp_cubierta(){ + + $('#lp_cubierta_papel').bind("focus", {clear_selectors: true}, clear_lp_cubierta); + $('#lp_cubierta_gramaje').bind("focus", set_lp_cubierta_gramaje); + $('#lp_cubierta_papelImpresion').focus("focus", set_lp_cubierta_papelImpresion); + $('#lp_cubierta_maquina').bind("focus", set_lp_cubierta_maquina); + $('#lp_cubierta_maquina').bind("change", change_lp_cubierta_maquina); + $('#lp_cubierta_paginas').bind("change", change_lp_cubierta_paginas); + $('#lp_cubierta_vercalculos').bind("click", {rowId: 'lp_cubierta'}, verCalculosInkjet); +} + + +function check_update_cubierta(){ + let row = tableLineasPresupuesto.row('#lp_cubierta'); + if(row.length>0){ + calcularPresupuesto_cubierta() + } +} + + +/*********************** + * Funciones LP SOBRECUBIERTA + ************************/ +function clear_lp_sobrecubierta(clear_selectors){ + $(".lp-sobrecubierta-input" ).val("0") + if(clear_selectors) + $( ".lp-sobrecubierta-select").empty() +} + + +function change_lp_sobrecubierta_maquina(){ + + calcularPresupuesto_sobrecubierta(); +} + + +async function calcularPresupuesto_sobrecubierta(fromComparador=false, input_data={}){ + + const dimension = getDimensionLibro(); + + if(Object.keys(input_data).length == 0){ + + input_data = { + paginas:4, + papel_generico_id: $('#lp_sobrecubierta_papel option:selected').val(), + papel_generico: $('#lp_sobrecubierta_papel option:selected').text().trim(), + gramaje: $('#lp_sobrecubierta_gramaje option:selected').text().trim(), + maquina_id: $('#lp_sobrecubierta_maquina option:selected').val(), + papel_impresion_id: $('#lp_sobrecubierta_papelImpresion option:selected').val() + } + } + + + let datos = { + tipo_impresion_id: $('#tipo_impresion_id').val(), + type: 'sobrecubierta', + color: 1, + hq: 1, + paginas: input_data.paginas, + paginas_negro: 0, + paginas_color: 0, + solapas: $('#solapas_sobrecubierta').is(':checked')?1:0, + solapas_ancho: $('#solapas_sobrecubierta').is(':checked')?parseInt($('#solapas_ancho_sobrecubierta').val()):0, + tirada: parseInt($('#tirada').val()), + merma: parseInt($('#mermacubierta').val()), + ancho: dimension.ancho, + alto: dimension.alto, + lomo: getLomoLineasPresupuesto() + getLomoCubiertaLineasPresupuesto, + papel_generico_id: input_data.papel_generico_id, + papel_generico: input_data.papel_generico, + gramaje: input_data.gramaje, + cliente_id: $('#clienteId').find(":selected").val(), + } + datos = Object.assign(datos, window.token_ajax); + + await $.ajax({ + type: "POST", + url: "/cosidotapablanda/datatable", + data: datos, + success: function (data) { + + if(data.lineas.length >0){ + // Se cogen los valores de la linea con los datos correspondientes + $.each(data.lineas, function(key, value) { + 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) { + + if(Object.keys(input_data).length == 0){ + value.fields.check_papel_total = $('#lp_sobrecubierta' + '_checkPapel').is(":checked")?1:0 + value.fields.check_impresion_total = $('#lp_sobrecubierta' + '_checkClicks').is(":checked")?1:0 + } + else{ + value.fields.check_papel_total = 1 + value.fields.check_impresion_total = 1 + } + fill_lp_sobrecubierta(value.fields); + return false; + } + clear_lp_sobrecubierta(false); + }); + + } + else{ + + } + yeniden(data[window.csrf_token]); + + }, + error: function(e){ + + } + }) +} + + +function fill_lp_sobrecubierta(row, fromComparador=false){ + + if(fromComparador){ + + var input_data = { + paginas: row.paginas, + papel_generico_id: row.papelGenericoId, + gramaje: row.gramaje, + papel_impresion_id: row.papelImpresionId, + maquina_id: row.maquinaId, + } + + calcularPresupuesto_sobrecubierta(false, input_data); + + } + else{ + + var portadaObjeto = { + anchoLibro:row.dimensiones_libro[0], + altoLibro:row.dimensiones_libro[1], + solapas:$('#solapas_ancho').val(), + lomo:row.mano}; + + // Si viene de hacerlo a mano... + data = processRowData(row, 'lp_sobrecubierta', 'lp-sobrecubierta'); + + var row = tableLineasPresupuesto.row('#lp_sobrecubierta'); + if(row.length>0) + tableLineasPresupuesto.row('#lp_sobrecubierta').data(data).draw() + else{ + tableLineasPresupuesto.row.add(data).draw() + row = tableLineasPresupuesto.row('#lp_sobrecubierta'); + } + row.child(format(row.data())).show(); + + eventos_lp_sobrecubierta() + + $('#lp_sobrecubierta_checkPapel').change() + + calcular_mermas() + //updateTotales(true, false, false); + //updateTablaEnvios() + updatePresupuesto({ + update_lineas: false, + update_servicios: true, + update_envios: true, + update_resumen: true, + update_tiradas_alternativas: true + }) + + } + + $("#tableLineasPresupuesto").DataTable().columns.adjust(); + +} + +function eventos_lp_sobrecubierta(){ + + $('#lp_sobrecubierta_papel').bind("focus", {clear_selectors: true}, clear_lp_sobrecubierta); + $('#lp_sobrecubierta_gramaje').bind("focus", set_lp_sobrecubierta_gramaje); + $('#lp_sobrecubierta_papelImpresion').focus("focus", set_lp_sobrecubierta_papelImpresion); + $('#lp_sobrecubierta_maquina').bind("focus", set_lp_sobrecubierta_maquina); + $('#lp_sobrecubierta_maquina').bind("change", change_lp_sobrecubierta_maquina); + $('#lp_sobrecubierta_vercalculos').bind("click", {rowId: 'lp_sobrecubierta'}, verCalculosInkjet); +} + + +function check_update_sobrecubierta(){ + let row = tableLineasPresupuesto.row('#lp_sobrecubierta'); + if(row.length>0){ + calcularPresupuesto_sobrecubierta() + } +} + + +function getLomoLineasPresupuesto(){ + let lomoTotal = 0 + try{ + tableLineasPresupuesto.rows().every( function ( rowIdx, tableLoop, rowLoop ) { + var rowData = this.data(); + if(rowData.row_id != 'lp_cubierta' && rowData.tipo != 'lp_sobrecubierta') + lomoTotal += parseFloat(rowData.lomo) + }) + } + catch(error){ + lomoTotal = 0 + } + return lomoTotal +} + +function getLomoCubiertaLineasPresupuesto(){ + let lomoTotal = 0 + try{ + tableLineasPresupuesto.rows().every( function ( rowIdx, tableLoop, rowLoop ) { + var rowData = this.data(); + if(rowData.row_id == 'lp_cubierta') + lomoTotal += parseFloat(rowData.lomo) + }) + } + catch(error){ + lomoTotal = 0 + } + return lomoTotal +} + + + +/*********************** + * Funciones LP GUARDAS + ************************/ +function clear_lp_guardas(clear_selectors){ + let pags = $("#lp_guardas_paginas option:selected" ).val() + $(".lp-guardas-input" ).val("0") + $("#lp_guardas_paginas" ).val(pags) + if(clear_selectors){ + $( "#lp_guardas_maquina").empty() + $( "#lp_guardas_papelImpresion").empty() + } + +} + + +function clear_guardas(){ + clear_lp_guardas(true); +} + + +async function calcularPresupuesto_guardas(fromComparador=false, input_data={}){ + + const dimension = getDimensionLibro(); + + if(Object.keys(input_data).length == 0){ + + input_data = { + paginas: (parseInt($('#tipo_impresion_id').val()) == 1 || parseInt($('#tipo_impresion_id').val()) == 3)?8:4, + paginas_impresion: parseInt($('#lp_guardas_paginas option:selected').val()), + papel_generico_id: $('#lp_guardas_papel option:selected').val(), + papel_generico: $('#lp_guardas_papel option:selected').text().trim(), + gramaje: 170, + maquina_id: $('#lp_guardas_maquina option:selected').val(), + papel_impresion_id: $('#lp_guardas_papelImpresion option:selected').val() + } + } + + + var datos = { + tipo_impresion_id: $('#tipo_impresion_id').val(), + type: 'guardas', + color: 1, + hq: 1, + paginas: (parseInt($('#tipo_impresion_id').val()) == 1 || parseInt($('#tipo_impresion_id').val()) == 3)?8:4, + paginas_impresion: input_data.paginas_impresion, + 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(), + }; + datos = Object.assign(datos, window.token_ajax); + + await $.ajax({ + type: "POST", + url: "/cosidotapablanda/datatable", + data: datos, + success: function (data) { + + if(data.lineas.length >0){ + // Se cogen los valores de la linea con los datos correspondientes + $.each(data.lineas, function(key, value) { + 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) { + + if(Object.keys(input_data).length == 0){ + value.fields.check_papel_total = $('#lp_guardas' + '_checkPapel').is(":checked")?1:0 + value.fields.check_impresion_total = $('#lp_guardas' + '_checkClicks').is(":checked")?1:0 + } + else{ + value.fields.check_papel_total = 1 + value.fields.check_impresion_total = 1 + } + fill_lp_guardas(value.fields); + return false; + } + clear_lp_guardas(false); + }); + + } + else{ + + } + yeniden(data[window.csrf_token]); + + }, + error: function(e){ + + } + }) +} + +function fill_lp_guardas(row, fromComparador=false){ + + if(fromComparador){ + + var input_data = { + paginas: row.paginas, + paginas_impresion: row.paginas_impresion, + papel_generico_id: row.papelGenericoId, + gramaje: row.gramaje, + papel_impresion_id: row.papelImpresionId, + maquina_id: row.maquinaId, + } + + calcularPresupuesto_guardas(false, input_data); + + } + else{ + // Se guarda el estado de "ver calculos" + mostrar_calculos = ($( ".calculos_lp_guardas").css('display') == 'table-row') + + // Si viene de hacerlo a mano... + data = processRowData(row, 'lp_guardas', 'lp-guardas'); + + var row = tableLineasPresupuesto.row('#lp_guardas'); + if(row.length>0) + tableLineasPresupuesto.row('#lp_guardas').data(data).draw() + else{ + tableLineasPresupuesto.row.add(data).draw() + row = tableLineasPresupuesto.row('#lp_guardas'); + } + row.child(format(row.data())).show(); + + eventos_lp_guardas(data.maquinaTipo=='inkjet'?true:false) + + $('#lp_guardas_checkPapel').change() + + calcular_mermas() + //updateTotales(true, false, false); + //updateTablaEnvios() + 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 + check_update_cubierta() + + if(mostrar_calculos){ + $( ".calculos_lp_guardas").css('display','table-row') + } + + } + $("#tableLineasPresupuesto").DataTable().columns.adjust(); +} + +function eventos_lp_guardas(isInkjet = false){ + + $('#lp_guardas_papel').bind("focus", {clear_selectors: true}, clear_lp_guardas); + $('#lp_guardas_papelImpresion').focus("focus", set_lp_guardas_papelImpresion); + $('#lp_guardas_maquina').bind("focus", set_lp_guardas_maquina); + $('#lp_guardas_maquina').bind("change", calcularPresupuesto_guardas); + $('#lp_guardas_paginas').bind("change", change_lp_guardas_paginas); + + if(isInkjet){ + $('#lp_guardas_vercalculos').bind("click", {rowId: 'lp_guardas'}, verCalculosInkjet); + $('.lp-guardas-tipologia').bind("change", change_lp_guardas_tipologia); + $('#lp_guardas_defecto').bind("click", por_defecto_lp_guardas); + $('#lp_guardas_aFavorFibra').bind("change", change_lp_guardas_aFavorFibra); + } +} + +function change_lp_guardas_tipologia(){ + + if( parseInt($('#lp_guardas_papel option:selected').val())>0 && + parseInt($('#lp_guardas_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_guardas({},true); + } +} + + +function por_defecto_lp_guardas(){ + + if( parseInt($('#lp_guardas_papel option:selected').val())>0 && + parseInt($('#lp_guardas_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_guardas(); + } +} + + +function change_lp_guardas_aFavorFibra(){ + + if( parseInt($('#lp_guardas_papel option:selected').val())>0 && + parseInt($('#lp_guardas_papelImpresion option:selected').val())>0 + ){ + var rowData = tableLineasPresupuesto.row('#lp_guardas').data() + rowData.aFavorFibra = $('#lp_guardas_aFavorFibra').prop('checked') + tableLineasPresupuesto.row('#lp_guardas').data(rowData).draw(false) + + calcularPresupuesto_guardas(false, true); + } +} + +function change_lp_guardas_paginas(){ + + if( parseInt($('#lp_guardas_papel option:selected').val())>0 && + parseInt($('#lp_guardas_papelImpresion option:selected').val())>0 + ){ + + calcularPresupuesto_guardas(); + } +} + +async function set_lp_guardas_maquina(){ + + await $.ajax({ + type: 'post', + url: '', + beforeSend: function() { + $('#lp_guardas_maquina').empty() + clear_lp_guardas(false) + }, + data: { + tipo: 'maquina', + uso: 'colorhq', + tipoLinea: "guardas", + is_rotativa: 0, + ancho: getDimensionLibro().ancho, + alto: getDimensionLibro().alto, + datos: parseInt($('#tirada').val()) + parseInt($('#merma').val()), + papel_impresion: $('#lp_guardas_papelImpresion option:selected').val() , + : v + }, + dataType: 'json', + success: function (data) { + yeniden(data[window.csrf_token]); + $.each(data.menu, function(item){ + var option = $('