diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index df17c46b..74a9f57d 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -663,21 +663,25 @@ $routes->group('serviciosacabados', ['namespace' => 'App\Controllers\Presupuesto $routes->post('menuitems', 'Presupuestoacabados::menuItems', ['as' => 'menuItemsOfPresupuestoAcabados']); $routes->post('edit/(:num)', 'Presupuestoacabados::edit/$1', ['as' => 'updatePresupuestoacabados']); $routes->get('cargar', 'Presupuestoacabados::cargar'); + $routes->post('update/(:num)', 'Presupuestoacabados::update/$1'); }); + $routes->group('serviciosencuadernaciones', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { $routes->post('datatable', 'Presupuestoencuadernaciones::datatable', ['as' => 'dataTableOfPresupuestoEncuadernaciones']); $routes->post('getvalues', 'Presupuestoencuadernaciones::getRowValues'); $routes->post('menuitems', 'Presupuestoencuadernaciones::menuItems', ['as' => 'menuItemsOfPresupuestoEncuadernaciones']); $routes->get('delete/(:num)', 'Presupuestoencuadernaciones::delete/$1', ['as' => 'deletePresupuestoencuadernaciones']); $routes->post('edit/(:num)', 'Presupuestoencuadernaciones::edit/$1', ['as' => 'updatePresupuestoencuadernaciones']); - + $routes->post('update/(:num)', 'Presupuestoencuadernaciones::update/$1'); }); $routes->group('serviciosmanipulados', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { $routes->post('getvalues', 'Presupuestomanipulados::getRowValues'); $routes->post('datatable', 'Presupuestomanipulados::datatable', ['as' => 'dataTableOfPresupuestoManipulados']); $routes->post('edit/(:num)', 'Presupuestomanipulados::edit/$1', ['as' => 'updatePresupuestomanipulados']); + $routes->post('update/(:num)', 'Presupuestomanipulados::update/$1'); + $routes->get('serviciosolapas', 'Presupuestomanipulados::getServicioSolapas'); }); $routes->group('serviciospreimpresiones', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { diff --git a/ci4/app/Controllers/Presupuestos/Presupuestoacabados.php b/ci4/app/Controllers/Presupuestos/Presupuestoacabados.php index e39e9df1..097dcb39 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestoacabados.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestoacabados.php @@ -69,23 +69,26 @@ class Presupuestoacabados extends \App\Controllers\BaseResourceController return; endif; - $postData = $this->request->getJSON(); - $tarifas = array_column($postData->datos, 'tarifa_id'); - $tirada = $postData->tirada ?? 0; - $POD = $postData->POD ?? 0; + $postData = $this->request->getPost(); + $datos_tarifas = $postData['datos'] ?? []; + $tirada = $postData['tirada'] ?? 0; + $POD = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; $result = []; - if (count($tarifas) > 0) { - foreach ($tarifas as $tarifa) { - $values = $this->model->getPrecioTarifa($tarifa, $tirada, $POD); - array_push($result, $values); + if (count($datos_tarifas) > 0) { + foreach ($datos_tarifas as $tarifa) { + $proveedor = $tarifa['proveedor_id'] == '' ? -1 : $tarifa['proveedor_id']; + $values = $this->model->getPrecioTarifa($tarifa['tarifa_id'], $tirada, $proveedor, $POD); + $values[0]->cubierta = $tarifa['cubierta'] ?? 0; + $values[0]->sobrecubierta = $tarifa['sobrecubierta'] ?? 0; + array_push($result, $values[0]); } } $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); $data = [ - 'lines' => $result, + 'lineas' => $result, $csrfTokenName => $newTokenHash ]; diff --git a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php index bb989119..750083b9 100644 --- a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php @@ -510,6 +510,13 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $data['servicios'] = $this->getLineasServicios($presupuesto)[1]; + if (intval($presupuesto->envios_recoge_cliente) == 1) { + $data['direcciones']['entrega_taller'] = 1; + } else { + $data['direcciones']['entrega_taller'] = 0; + $data['direcciones'] = $this->obtenerDireccionesEnvio($id, $presupuesto->cliente_id); + } + /* @@ -1422,4 +1429,17 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController return PresupuestoService::checkLineasEnvios($direccionesEnvio); } + + protected function obtenerDireccionesEnvio($id, $cliente_id) + { + $model = model('App\Models\Presupuestos\PresupuestoDireccionesModel'); + $model_direcciones = model('App\Models\Clientes\ClienteDireccionesModel'); + $direcciones = $model + ->join('lg_proveedores', 'presupuesto_direcciones.proveedor_id = lg_proveedores.id') + ->join('lg_paises', 'presupuesto_direcciones.pais_id = lg_paises.id') + ->select('presupuesto_direcciones.*, lg_proveedores.nombre AS proveedor, lg_paises.nombre AS pais') + ->where('presupuesto_id', $id)->findAll(); + + return $direcciones; + } } diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index b398a9fe..dc493501 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -345,6 +345,53 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $lomo += floatval($linea['mano']); } } + + //Guardas + $guardas = $reqData['guardas'] ?? []; + if ($guardas != "false" && $guardas != null) { + $datos_guardas = [ + 'papel' => $modelPapelGenerico->getIdFromCode($guardas['papel']), + 'gramaje' => intval($guardas['gramaje']), + 'caras' => intval($guardas['caras']), + ]; + } else + $datos_guardas = false; + $guardas = []; + $peso_guardas = 0.0; + $coste_guardas = 0.0; + if ($datos_guardas != 0) { + if (count($datos_guardas) != 0 && $datos_guardas) { + + $guardas = $datos_guardas; + $input_data['papel_generico'] = $datos_guardas['papel'] ?? 0; + $input_data['gramaje'] = $datos_guardas['gramaje'] ?? 0; + $input_data['datosPedido']->paginas = 8; + $input_data['paginas_color'] = 8; + $input_data['datosPedido']->paginas_impresion = $datos_guardas['caras'] ?? 0; + $input_data['datosPedido']->solapas_ancho = 0; + $input_data['datosPedido']->solapas = 0; + $input_data['isColor'] = 1; + $input_data['isHq'] = 1; + $input_data['uso'] = 'guardas'; + + // Para el caso de Fresado y Cosido tapa dura, las guardas son un diptico + // y hay que imprimirlas como "cosido" (dos hojas pegadas). En el caso de espiral + // o wire-o tapa dura, las guardas se imprimen como hojas sueltas + if ($tipo_impresion_id == 1 || $tipo_impresion_id == 3) { + $input_data['datosPedido']->isCosido = true; + } else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 7) { + $input_data['datosPedido']->isCosido = false; + } + + $guardas = PresupuestoClienteService::obtenerGuardas($input_data); + + foreach ($guardas as $linea) { + if (count($linea) > 0) { + $lomo += floatval($linea['mano']); + } + } + } + } $lomo = round($lomo, 2); $errors = [ 'status' => 0, @@ -659,7 +706,21 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController if ($interior == null) { return $this->failServerError('Error al calcular el interior'); } - $anchoTotal = $interior[0]['mano']; + + $anchoTotal = 0; + if(count($interior) == 2) { + + if(count($interior[0]) > 0) + $anchoTotal += $interior[0]['mano']; + if(count($interior[1]) > 0) + $anchoTotal += $interior[1]['mano']; + } + else{ + if(count($interior) > 0) + $anchoTotal += $interior['mano']; + } + + // le añadimos 2*ancho libro $anchoTotal += 2 * $datosPedido->ancho; // le añadimos los dobleces de las solapas diff --git a/ci4/app/Controllers/Presupuestos/Presupuestoencuadernaciones.php b/ci4/app/Controllers/Presupuestos/Presupuestoencuadernaciones.php index 09b577cd..ace1c37c 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestoencuadernaciones.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestoencuadernaciones.php @@ -69,30 +69,30 @@ class Presupuestoencuadernaciones extends \App\Controllers\BaseResourceControlle return; endif; - $postData = $this->request->getJSON(); - $tarifas = array_column($postData->datos, 'tarifa_id'); - $tirada = $postData->tirada ?? 0; - $paginas = $postData->paginas ?? 0; - $POD = $postData->POD ?? 0; - $ancho = $postData->ancho ?? 0; - $alto = $postData->alto ?? 0; + $postData = $this->request->getPost(); + $datos_tarifas = $postData['datos'] ?? []; + $tirada = $postData['tirada'] ?? 0; + $paginas = $postData['paginas'] ?? 0; + $POD = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; + $ancho = $postData['ancho'] ?? 0; + $alto = $postData['alto'] ?? 0; $result = []; - if (count($tarifas) > 0) { - foreach ($tarifas as $tarifa) { - if ($tarifaModel->isTarifaPorHoras($tarifa)) { - $values = $this->model->getPrecioTarifaHoras($tarifa, $paginas, $tirada, -1, $POD); + if (count($datos_tarifas) > 0) { + foreach ($datos_tarifas as $tarifa) { + if ($tarifaModel->isTarifaPorHoras($tarifa['tarifa_id'])) { + $values = $this->model->getPrecioTarifaHoras($tarifa['tarifa_id'], $paginas, $tirada, -1, $POD); } else { - $values = $this->model->getPrecioTarifa($tarifa, $paginas, $tirada, $ancho, $alto, -1, $POD); + $values = $this->model->getPrecioTarifa($tarifa['tarifa_id'], $paginas, $tirada, $ancho, $alto, -1, $POD); } - array_push($result, $values); + array_push($result, $values[0]); } } $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); $data = [ - 'lines' => $result, + 'lineas' => $result, $csrfTokenName => $newTokenHash ]; diff --git a/ci4/app/Controllers/Presupuestos/Presupuestomanipulados.php b/ci4/app/Controllers/Presupuestos/Presupuestomanipulados.php index e78b5191..fb00fe11 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestomanipulados.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestomanipulados.php @@ -63,6 +63,27 @@ class Presupuestomanipulados extends \App\Controllers\BaseResourceController return $this->respond($data); } + public function getServicioSolapas(){ + + if($this->request->isAJAX()){ + + $servicio = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('servicio_solapas')->value; + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + + $data = [ + 'service' => $servicio, + $csrfTokenName => $newTokenHash + ]; + + return $this->respond($data); + } + else{ + return $this->failUnauthorized('Invalid request', 403); + } + } + public function update($requestedId = null) { @@ -70,23 +91,23 @@ class Presupuestomanipulados extends \App\Controllers\BaseResourceController return; endif; - $postData = $this->request->getJSON(); - $tarifas = array_column($postData->datos, 'tarifa_id'); - $tirada = $postData->tirada ?? 0; - $POD = $postData->POD ?? 0; + $postData = $this->request->getPost(); + $tarifas = $postData['datos'] ?? []; + $tirada = $postData['tirada'] ?? 0; + $POD = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; $result = []; if(count($tarifas)>0){ foreach ($tarifas as $tarifa){ $values = $this->model->getPrecioTarifa($tarifa, $tirada, $POD); - array_push($result, $values); + array_push($result, $values[0]); } } $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); $data = [ - 'lines' => $result, + 'lineas' => $result, $csrfTokenName => $newTokenHash ]; diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosEnvios.js b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosEnvios.js index dcfde390..052213a2 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosEnvios.js +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosEnvios.js @@ -1,9 +1,4 @@ -const actionBtns_direcciones = function(data) { - return ` - - - `; -}; +/* // Funcion para obtener el peso total del libro function get_peso_libro(){ @@ -203,7 +198,7 @@ $('#insertar_direccion').on('click', function(){ $newAddDialog.modal('show') }) -const lastColNr_direcciones = $('#tableOfDireccionesEnvio').find("tr:first th").length - 1; + $(document).on('click', '.delete-add-row', function(e) { @@ -280,67 +275,6 @@ $('#recoger_en_taller').change(function(){ }) -let tableEnvios = $('#tableOfDireccionesEnvio').DataTable( { - draw:5, - serverSide: false, - processing: true, - autoWidth: true, - responsive: true, - order: [[ 0, "asc" ]], - pageLength: 20, - lengthChange: false, - searching: false, - paging: false, - info: false, - scrollX: true, - - columns: [ - { 'data': 'tarifa_id' }, - { 'data': 'cantidad' }, - { 'data': 'peso' }, - { 'data': 'att' }, - { 'data': 'email' }, - { 'data': 'direccion' }, - { 'data': 'cp' }, - { 'data': 'municipio' }, - { 'data': 'paisId' , - render: function(data, type, row, meta) { - var pais = window.paisList.find(element => element.id == data); - return pais['nombre']; - }, - }, - { 'data': 'telefono' }, - { 'data': 'proveedor'}, - { 'data': 'proveedor_id'}, - { 'data': 'precio' }, - { 'data': 'margen' }, - { 'data': 'entregaPieCalle' }, - { - data: actionBtns_direcciones, - className: 'row-edit dt-center' - } - ], - columnDefs: [ - { - orderable: false, - searchable: false, - targets: [lastColNr_direcciones] - }, - {"orderData": [ 0], "targets": 0 }, - - ], - columnDefs: [ - { - target: [0,11,13,14], - visible: false, - searchable: false - }, - ], - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - }, - - } ); @@ -421,3 +355,4 @@ function load_datos_envios(){ } +*/ \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosEnvios.php b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosEnvios.php index b1aa33f1..d428143f 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosEnvios.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosEnvios.php @@ -14,7 +14,7 @@ - + @@ -27,8 +27,8 @@ - - + + diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosServiciosItems.js b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosServiciosItems.js deleted file mode 100644 index e19a166c..00000000 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_datosServiciosItems.js +++ /dev/null @@ -1,2075 +0,0 @@ -/**************************************************************************************** - * Seccion para las funciones generales de la pagina - ***************************************************************************************/ -/* - - - -$('#serv_default').on('click', function(){ - get_tarifas_enc('default').then( - get_tarifas_manipulado('default') - ) - showBreadCrumbSaveButton(true); -}) - -// Delete row -$(document).on('click', '.btn-delete-serv', function(e) { - const dataId = $(this).attr('data-id'); - const rowId = $(this).closest('td').parent()[0].sectionRowIndex; - var dataText = null; - - var table = ""; - if($(this).closest('table').attr('id').includes('tableOfServiciosEncuadernacion')){ - table = "tableOfServiciosEncuadernacion"; - } - else if($(this).closest('table').attr('id').includes('tableOfServiciosAcabado')){ - table = "tableOfServiciosAcabado"; - dataText = $(this).attr('data-text'); - } - else if($(this).closest('table').attr('id').includes('tableOfServiciosManipulado')){ - table = "tableOfServiciosManipulado"; - } - else if($(this).closest('table').attr('id').includes('tableOfServiciosPreimpresion')){ - table = "tableOfServiciosPreimpresion"; - } - else if($(this).closest('table').attr('id').includes('tableOfServiciosExtra')){ - table = "tableOfServiciosExtra"; - } - else{ - table = ""; - } - - if(table != ""){ - if(dataText==null){ - $('#' + table).DataTable().rows( function ( idx, data, node ) { - return data[0] === dataId; - } ) - .remove() - .draw(); - } - $('#' + table).DataTable().rows( function ( idx, data, node ) { - return ((data[0] === dataId) && (data[1]=== dataText)); - } ) - .remove() - .draw(); - } - - check_serv_enc_error() - check_serv_acabado_error() - check_serv_preimpresion_error() - check_serv_manipulado_error() - check_serv_extra_error() - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true - }) - //updateTotales(false, true, false) - showBreadCrumbSaveButton(true); - -}); - -function save_servicios(){ - - var datosAcabado = get_datos_acabado() - var datosEnc = get_datos_encuadernacion() - var datosManipulado = get_datos_manipulado() - var datosPreimpresion = get_datos_preimpresion() - var datosServiciosExtra = get_datos_serviciosextra() - - const domain = window.location.origin - - const url = window.location.href; - const url_parts = url.split('/'); - var id = -1; - if(url_parts[url_parts.length-2] == 'edit'){ - id = url_parts[url_parts.length-1]; - } - - fetch(domain + "/presupuestos/presupuestoencuadernaciones/edit/" + id , { - method: "POST", - body: JSON.stringify(Object.assign({datos: datosEnc}, window.token_ajax)), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - yeniden(data[window.csrf_token]); - }) - .then( - fetch(domain + "/presupuestos/presupuestomanipulados/edit/" + id , { - method: "POST", - body: JSON.stringify(Object.assign({datos: datosManipulado}, window.token_ajax)), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - yeniden(data[window.csrf_token]); - }) - ) - .then( - fetch(domain + "/presupuestos/presupuestoacabados/edit/" + id , { - method: "POST", - body: JSON.stringify(Object.assign({datos: datosAcabado}, window.token_ajax)), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - yeniden(data[window.csrf_token]); - }) - ) - .then( - fetch(domain + "/presupuestos/presupuestopreimpresiones/edit/" + id , { - method: "POST", - body: JSON.stringify(Object.assign({datos: datosPreimpresion}, window.token_ajax)), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - yeniden(data[window.csrf_token]); - }) - ) - - .then( - fetch(domain + "/presupuestos/presupuestoserviciosextra/edit/" + id , { - method: "POST", - body: JSON.stringify(Object.assign({datos: datosServiciosExtra}, window.token_ajax)), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - yeniden(data[window.csrf_token]); - }) - ) -} -*/ - -/**************************************************************************************** - * Seccion para los servicios de acabado - ***************************************************************************************/ -/*var tableServiciosAcabado = new DataTable('#tableOfServiciosAcabado',{ - scrollX: true, - searching: false, - paging: false, - info: false, - ordering: false, - responsive: true, - select: false, - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - }, -}); - -tableServiciosAcabado.on('draw', function(){ - - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) -}) - -function init_servicio_acabado(){ - - $('#add_servicio_acabado_list').select2({ - allowClear: false, - minimumResultsForSearch: -1, - placeholder: window.Presupuestos.servicioAcabadoList - }) - - window.serviciosacabadosList.forEach((element) =>{ - - nombre_completo = element.nombre - if (element.cubierta == 1){ - nombre_completo += ' (' + window.Presupuestos.cubierta + ')' - } - else if (element.sobrecubierta == 1){ - nombre_completo += ' (' + window.Presupuestos.sobrecubierta + ')' - } - - var precio_unidad = parseFloat(element.precio_unidad).toFixed(2) - var margen = parseFloat(element.margen).toFixed(2) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - tableServiciosAcabado.row.add([ - element.tarifa_acabado_id, - nombre_completo, - '', - '' + precio_unidad_coste + ' / ' + precio_unidad + '', - '', - '', - '' - ]).draw(false) - - $('#proveedor_acabado_' + element.tarifa_acabado_id).select2({ - allowClear: false, - minimumResultsForSearch: -1, - ajax: { - url: window.routes_servicios.menuItemsOfPresupuestoAcabados, - type: 'post', - dataType: 'json', - - data: function (params) { - - if(parseInt($('#tirada').val())>0){ - var tirada = parseInt($('#tirada').val()) - } - else{ - var tirada = 0 - } - - var return_data = { - tarifa_id: element.tarifa_acabado_id, - tirada: tirada, - }; - return_data = Object.assign(return_data, window.token_ajax); - - return return_data; - }, - delay: 60, - processResults: function (response) { - yeniden(response[window.csrf_token]); - return { - results: response.menu - }; - }, - cache: true - } - }); - $('#proveedor_acabado_' + element.tarifa_acabado_id).on('change', select_acabado_event) - - - $('#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}) - }) - - }) - - check_serv_acabado_error() -} - -function select_acabado_event(){ - - if(parseInt($('#tirada').val())>0){ - var tirada = parseInt($('#tirada').val()) - } - else{ - var tirada = 0 - } - - var tarifa_id = null; - if(this.id.includes('proveedor_acabado')){ - tarifa_id = this.id.split('_')[2]; - } - else{ - tarifa_id = this.id.split('_')[1]; - } - - var datos = { - tarifa_acabado_id: tarifa_id, - tirada: tirada, - proveedor_id: parseInt($('#proveedor_acabado_' + tarifa_id).select2('data')[0].id), - POD: parseInt($('#POD').val()) - }; - datos = Object.assign(datos, window.token_ajax); - - $.ajax({ - type: "POST", - url: window.routes_servicios.dataTableOfPresupuestoAcabados, - data: datos, - success: function (data) { - - var precio_unidad = parseFloat(data.values[0].precio_unidad).toFixed(2) - var margen = parseFloat(data.values[0].margen).toFixed(2) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - $('#precio_unidad_acabado_' + datos.tarifa_acabado_id).text(precio_unidad_coste + ' / ' + precio_unidad) - $('#precio_total_acabado_' + datos.tarifa_acabado_id).val(parseFloat(data.values[0].total).toFixed(2)) - $('#acabado_margen_' + datos.tarifa_acabado_id).val(margen) - - yeniden(data[window.csrf_token]); - return true; - }, - error: function(e){ - return false; - } - }) - return false; -} - -function check_serv_acabado_error(){ - - var htmlString = ''; - - $('#tableOfServiciosAcabado tr').each(function(){ - if($(this).find('td').eq(2).text() == '0.00'){ - htmlString = ` - `; - } - }) - $('#serv-acabado-error').html(htmlString) -} - -function get_tarifas_acabado(tarifa_id = -1, uso=null){ - - if(parseInt($('#tirada').val())>0){ - var tirada = parseInt($('#tirada').val()) - } - else{ - var tirada = 0 - } - - var datos = { - tarifa_acabado_id : tarifa_id, - tirada: tirada, - POD: parseInt($('#POD').val()) - }; - datos = Object.assign(datos, window.token_ajax) - - - $.ajax({ - type: "POST", - url: window.routes_servicios.dataTableOfPresupuestoAcabados, - data: datos, - success: function (data) { - - data.values.forEach((row) => { - - nombre = row.tarifa_nombre - if(uso!= null) - nombre += ' (' + uso + ')' - - var precio_unidad = parseFloat(row.precio_unidad).toFixed(2) - var margen = parseFloat(row.margen).toFixed(2) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - tableServiciosAcabado.row.add([ - row.tarifa_id, - nombre, - '', - '' + precio_unidad_coste + ' / ' + precio_unidad + '', - '', - '', - '' - ]).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}) - }) - - - - $('#proveedor_acabado_' + row.tarifa_id).select2({ - allowClear: false, - minimumResultsForSearch: -1, - ajax: { - url: window.routes_servicios.menuItemsOfPresupuestoAcabados, - type: 'post', - dataType: 'json', - - data: function (params) { - - if(parseInt($('#tirada').val())>0){ - var tirada = parseInt($('#tirada').val()) - } - else{ - var tirada = 0 - } - - var return_data = { - tarifa_id: row.tarifa_id, - tirada: tirada, - }; - return_data = Object.assign(return_data, window.token_ajax); - - return return_data; - }, - delay: 60, - processResults: function (response) { - yeniden(response[window.csrf_token]); - return { - results: response.menu - }; - }, - cache: true - } - }); - $('#proveedor_acabado_' + row.tarifa_id).on('change', select_acabado_event) - }); - - check_serv_acabado_error() - yeniden(data[window.csrf_token]); - return true; - }, - error: function(e){ - return false; - } - }) - return false; -} - -function servicioRetractilado(){ - if($('#retractilado').prop('checked')){ - $('#add_servicio_acabado_list').val(window.serviciosAutomaticos.retractilado) - $('#insertar_serv_acabado').click() - } - else{ - var row_indexes = tableServiciosAcabado.rows().eq( 0 ).filter( function (rowIdx) { - return tableServiciosAcabado.cell( rowIdx, 0 ).data() == window.serviciosAutomaticos.retractilado ? true : false; - } ); - if(row_indexes.length > 0){ - tableServiciosAcabado.row(row_indexes[0]).remove().draw() - check_serv_acabado_error() - } - } -} - -function servicioRetractilado5(){ - if($('#retractilado5').prop('checked')){ - $('#add_servicio_acabado_list').val(window.serviciosAutomaticos.retractilado5) - $('#insertar_serv_acabado').click() - } - else{ - var row_indexes = tableServiciosAcabado.rows().eq( 0 ).filter( function (rowIdx) { - return tableServiciosAcabado.cell( rowIdx, 0 ).data() == window.serviciosAutomaticos.retractilado5 ? true : false; - } ); - if(row_indexes.length > 0){ - tableServiciosAcabado.row(row_indexes[0]).remove().draw() - check_serv_acabado_error() - } - } -} - -function servicioFajaColor(){ - if($('#fajaColor').prop('checked')){ - $('#add_servicio_acabado_list').val(window.serviciosAutomaticos.fajaColor) - $('#insertar_serv_acabado').click() - } - else{ - var row_indexes = tableServiciosAcabado.rows().eq( 0 ).filter( function (rowIdx) { - return tableServiciosAcabado.cell( rowIdx, 0 ).data() == window.serviciosAutomaticos.fajaColor ? true : false; - } ); - if(row_indexes.length > 0){ - tableServiciosAcabado.row(row_indexes[0]).remove().draw() - check_serv_acabado_error() - } - } -} - -$('#insertar_serv_acabado').on('click', function(){ - const tarifa_text = $('#add_servicio_acabado_list').select2('data')[0].text.trim(); - - if(tarifa_text.length > 0){ - var table = $("#tableOfServiciosAcabado").DataTable(); - var rows = table.rows().data().toArray(); - var found = rows.some(row => row[1] === tarifa_text); - - if(!found) - get_tarifas_acabado($('#add_servicio_acabado_list').select2('data')[0].id); - else - popErrorAlert(window.Presupuestos.errores.error_servicios_duplicados, 'serv-acabado-alert'); - } - check_serv_acabado_error(); - showBreadCrumbSaveButton(true); - -}) - - -function insertar_acabado_exterior($servicio_id, $uso=""){ - - const tarifa_text = '(' +$uso + ')' - - var tablaAcabados = $("#tableOfServiciosAcabado").DataTable() - tablaAcabados.rows().every(function () { - var data = this.data(); - if(data[1].includes(tarifa_text)){ - this.remove().draw(false); - } - }) - - get_tarifas_acabado($servicio_id, $uso); - tablaAcabados.draw(); - check_serv_acabado_error() -} - -function get_datos_acabado(){ - - var datosAcabado = [] - if($('#tableOfServiciosAcabado').DataTable().rows().count()>0){ - $("#tableOfServiciosAcabado tr").each(function (index,tr) { - var values = {} - $(this).find("td").each(function (index2) { - - switch (index2) { - case 0: - values['tarifa_id'] = $(this).text() - break - case 1: - if($(this).text().includes(window.Presupuestos.cubierta)) - values['cubierta'] = 1 - else - values['cubierta'] = 0 - if($(this).text().includes(window.Presupuestos.sobrecubierta)) - values['sobrecubierta'] = 1 - else - values['sobrecubierta'] = 0 - break - case 2: - values['proveedor_id'] = $(this).children(":first").select2('data')[0].id - break - case 3: - values['precio_unidad'] = $(this).text().split('/')[1].trim() - break - case 4: - values['precio_total'] = $(this).children(":first").val() - break - case 5: - values['margen'] = $(this).text() - break - } - }) - if(Object.keys(values).length>0) - datosAcabado.push(values) - }) - } - return datosAcabado -} - - -async function get_servAcabados_tiradasAlternativas(tirada){ - - const url = window.location.href; - const url_parts = url.split('/'); - var id = -1; - if(url_parts[url_parts.length-2] == 'edit'){ - id = url_parts[url_parts.length-1]; - } - - var serviciosAcabados ={ - coste: 0.0, - margen: 0.0, - } - var json_data = { - datos: get_datos_acabado(), - tirada: parseInt(tirada), - POD: $('#POD').val() - } - if(json_data.datos.length>0){ - - json_data = Object.assign(json_data, window.token_ajax); - - await fetch(window.location.origin + "/presupuestos/presupuestoacabados/update/" + id , { - method: "POST", - body: JSON.stringify(json_data), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .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; - }); - - }); - } - return serviciosAcabados; -} - -*/ -/**************************************************************************************** - * Seccion para los servicios de encuadernación - ***************************************************************************************/ -var tableServiciosEnc = new DataTable('#tableOfServiciosEncuadernacion',{ - scrollX: true, - searching: false, - paging: false, - info: false, - ordering: false, - responsive: true, - select: false, - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - }, - -}); - -tableServiciosEnc.on('draw', function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) -}) - -function init_servicio_encuadernado(){ - - - $('#add_servicio_enc_list').select2({ - allowClear: false, - minimumResultsForSearch: -1, - placeholder: window.Presupuestos.servicioEncuadernadoList - }) - - window.serviciosencuadernadosList.forEach((element) =>{ - - const tarifa_id = element.tarifa_encuadernado_id - var proveedor_nombre = element.proveedor===null? window.Presupuestos.no_disponible: element.proveedor - - var precio_unidad = parseFloat(element.precio_unidad).toFixed(2) - var margen = parseFloat(element.margen).toFixed(0) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - var linea = [ - element.tarifa_encuadernado_id, - element.nombre, - '', - '' + precio_unidad_coste + ' / ' + precio_unidad + '', - (element.hasOwnProperty('paginas_por_cuadernillo') && element.paginas_por_cuadernillo!=null)?selectForCuadernillos(element.tarifa_encuadernado_id, element.paginas_por_cuadernillo):'', - '' + convertirTiempo(element.tiempo) + '', - '', - '', - '' - ] - - tableServiciosEnc.row.add(linea).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, - minimumResultsForSearch: -1, - ajax: { - url: window.routes_servicios.menuItemsOfPresupuestoEncuadernaciones, - type: 'post', - dataType: 'json', - - data: function (params) { - - const dimension = getDimensionLibro(); - - if(parseInt($('#tirada').val())>0){ - var tirada = parseInt($('#tirada').val()) - } - else{ - var tirada = 0 - } - - var return_data = { - tarifa_id: tarifa_id, - paginas: parseInt($('#paginas').val())>0?parseInt($('#paginas').val()):0, - tirada: tirada, - ancho: dimension.ancho, - alto: dimension.alto, - searchtxt: params.term, // search term - }; - return_data = Object.assign(return_data, window.token_ajax); - - return return_data; - }, - delay: 60, - processResults: function (response) { - yeniden(response[window.csrf_token]); - return { - results: response.menu - }; - }, - cache: true - } - }); - $('#proveedor_enc_' + element.tarifa_encuadernado_id).on('change', select_enc_event) - - if(element.hasOwnProperty('paginas_por_cuadernillo') && element.paginas_por_cuadernillo!=null){ - - $('#cuadernillos_' + element.tarifa_encuadernado_id).select2({ - allowClear: false, - minimumResultsForSearch: -1, - }); - - $('#cuadernillos_' + element.tarifa_encuadernado_id).on('change', select_enc_event) - } - - }); - check_serv_enc_error() - -} - -function selectForCuadernillos(tarifa_id, select_value){ - const value_list = [32, 28, 24, 20, 16]; - var string = - ''; - return string; -} - -function convertirTiempo(horas){ - if(horas != null){ - if(parseFloat(horas)>0){ - const seconds = parseFloat(horas) * 3600; - // se convierte a formato hh:mm:ss - const h = Math.floor(seconds / 3600); - const minutos = Math.floor((seconds % 3600) / 60); - const segundos = Math.round(seconds % 60, 0); - return h + ':' + minutos + ':' + segundos; - } - else{ - return ""; - } - - } - else{ - return ""; - } -} - -function select_enc_event(){ - - const dimension = getDimensionLibro(); - - if(parseInt($('#tirada').val())>0){ - var tirada = parseInt($('#tirada').val()) - } - else{ - var tirada = 0 - } - - var tarifa_id = null; - if(this.id.includes('proveedor_enc')){ - tarifa_id = this.id.split('_')[2]; - } - else{ - tarifa_id = this.id.split('_')[1]; - } - // se checkea si el elemento #cuadernillos_ + tarifa_id existe - var paginas_por_cuadernillo = null; - if($('#cuadernillos_' + tarifa_id).length){ - paginas_por_cuadernillo = parseInt($('#cuadernillos_' + tarifa_id).select2('data')[0].id); - } - - var datos = { - tarifa_encuadernacion_id: tarifa_id, - paginas: parseInt($('#paginas').val())>0?parseInt($('#paginas').val()):0, - tirada: tirada, - ancho: dimension.ancho, - alto: dimension.alto, - paginas_por_cuadernillo: paginas_por_cuadernillo, - proveedor_id: parseInt($('#proveedor_enc_' + tarifa_id).select2('data')[0].id), - POD: parseInt($('#POD').val()) - }; - datos = Object.assign(datos, window.token_ajax); - - $.ajax({ - type: "POST", - url: window.routes_servicios.dataTableOfPresupuestoEncuadernaciones, - data: datos, - success: function (data) { - - var precio_unidad = parseFloat(data.values[0].precio_unidad).toFixed(2) - var margen = parseFloat(data.values[0].margen).toFixed(0) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - $('#precio_unidad_encuadernado_' + datos.tarifa_encuadernacion_id).text(precio_unidad_coste + ' / ' + precio_unidad) - $('#tiempo_encuadernado_' + datos.tarifa_encuadernacion_id).text(convertirTiempo(data.values[0].tiempo)) - $('#precio_total_encuadernado_' + datos.tarifa_encuadernacion_id).val(parseFloat(data.values[0].total).toFixed(2)) - $('#enc_margen_' + datos.tarifa_encuadernacion_id).val(margen) - - yeniden(data[window.csrf_token]); - return true; - }, - error: function(e){ - return false; - } - }) - return false; -} - - -function check_serv_enc_error(){ - - var htmlString = ''; - - $('#tableOfServiciosEncuadernacion tr').each(function(){ - if($(this).find('td').eq(3).text() == '0.00'){ - htmlString = ` - `; - } - }) - $('#serv-enc-error').html(htmlString) -} - - -async function get_tarifas_enc(tipo=null, tarifa_id = -1){ - const dimension = getDimensionLibro(); - - if(parseInt($('#tirada').val())>0){ - var tirada = parseInt($('#tirada').val()) - } - else{ - var tirada = 0 - } - - var datos = { - tarifa_encuadernacion_id : tarifa_id, - tirada: tirada, - paginas: parseInt($('#paginas').val())>0?parseInt($('#paginas').val()):0, - ancho: dimension.ancho, - alto: dimension.alto, - POD: parseInt($('#POD').val()) - }; - datos = Object.assign(datos, window.token_ajax) - - if(tipo != null){ - datos['tipo'] = tipo; - datos['tipo_impresion_id'] = parseInt($('#tipo_impresion_id').val()) - } - - $.ajax({ - type: "POST", - url: window.routes_servicios.dataTableOfPresupuestoEncuadernaciones, - data: datos, - success: function (data) { - - if(tipo=='default') - tableServiciosEnc.clear().draw() - - data.values.forEach((row) => { - - var precio_unidad = parseFloat(row.precio_unidad).toFixed(2) - var margen = parseFloat(row.margen).toFixed(0) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - tableServiciosEnc.row.add([ - row.tarifa_id, - row.tarifa_nombre, - '', - '' + precio_unidad_coste + ' / ' + precio_unidad + '', - (row.hasOwnProperty('paginas_por_cuadernillo') && row.paginas_por_cuadernillo!=null)?selectForCuadernillos(row.tarifa_id, 32):'', - '' + convertirTiempo(row.tiempo) + '', - '', - '', - '' - ]).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, - minimumResultsForSearch: -1, - ajax: { - url: window.routes_servicios.menuItemsOfPresupuestoEncuadernaciones, - type: 'post', - dataType: 'json', - - data: function (params) { - - if( parseInt( $('#tirada').val() )>0){ - var tirada = parseInt($('#tirada').val()) - } - else{ - var tirada = 0 - } - - var return_data = { - tarifa_id: row.tarifa_id, - paginas: parseInt($('#paginas').val())>0?parseInt($('#paginas').val()):0, - tirada: tirada, - ancho: dimension.ancho, - alto: dimension.alto, - searchtxt: params.term, // search term - } - return_data = Object.assign(return_data, window.token_ajax); - return return_data; - }, - delay: 60, - processResults: function (response) { - yeniden(response[window.csrf_token]); - return { - results: response.menu - }; - }, - cache: true - } - }); - - $('#proveedor_enc_' + row.tarifa_id).on('change', select_enc_event) - - - if(row.hasOwnProperty('paginas_por_cuadernillo') && row.paginas_por_cuadernillo!=null){ - $('#cuadernillos_' + row.tarifa_id).select2({ - allowClear: false, - minimumResultsForSearch: -1, - }); - - $('#cuadernillos_' + row.tarifa_id).on('change', select_enc_event) - } - }); - check_serv_enc_error() - yeniden(data[window.csrf_token]); - return true; - }, - error: function(e){ - return false; - } - }) - return false; -} - - -$('#insertar_serv_enc').on('click', function(){ - const tarifa_text = $('#add_servicio_enc_list').select2('data')[0].text.trim() - - if( $('#add_servicio_enc_list').select2('data')[0].text.trim().length > 0){ - if($('#tableOfServiciosEncuadernacion tr > td:contains(' + tarifa_text + ')').length == 0) - get_tarifas_enc('tarifa', $('#add_servicio_enc_list').select2('data')[0].id); - else{ - popErrorAlert(window.Presupuestos.errores.error_servicios_duplicados, 'serv-enc-alert') - } - } - check_serv_enc_error() -}) - - -function get_datos_encuadernacion(){ - - var datosEnc = [] - if($("#tableOfServiciosEncuadernacion").DataTable().rows().count()>0){ - $("#tableOfServiciosEncuadernacion tr").each(function (index,tr) { - var values = {} - $(this).find("td").each(function (index2) { - - switch (index2) { - case 0: - values['tarifa_id'] = $(this).text() - break - case 2: - values['proveedor_id'] = $(this).children(":first").select2('data')[0].id - break - case 3: - values['precio_unidad'] = $(this).text().split('/')[1].trim() - break - case 4: - values['paginas_por_cuadernillo'] = $(this).children(":first").val() - // Si el valor es "undefined" se pone a null - if(values['paginas_por_cuadernillo'] == "undefined") - values['paginas_por_cuadernillo'] = null - case 5: - values['tiempo'] = $(this).text() - // se pasa el string hh:mm:ss a horas - if(values['tiempo'] != null) - values['tiempo'] = parseInt(values['tiempo'].split(':')[0]) + parseInt(values['tiempo'].split(':')[1])/60 + parseInt(values['tiempo'].split(':')[2])/3600 - break - case 6: - values['precio_total'] = $(this).children(":first").val() - break - case 7: - values['margen'] = $(this).text() - break - } - }) - if(Object.keys(values).length>0) - datosEnc.push(values) - }) - } - - return datosEnc -} - - -async function get_servEncuadernacion_tiradasAlternativas(tirada, paginas, ancho, alto){ - - const url = window.location.href; - const url_parts = url.split('/'); - var id = -1; - if(url_parts[url_parts.length-2] == 'edit'){ - id = url_parts[url_parts.length-1]; - } - - var serviciosEncuadernacion ={ - coste: 0.0, - margen: 0.0, - } - - var json_data = { - datos: get_datos_encuadernacion(), - tirada: parseInt(tirada), - paginas: parseInt(paginas), - ancho: ancho, - alto: alto, - POD: $('#POD').val() - } - - if(json_data.datos.length>0){ - json_data = Object.assign(json_data, window.token_ajax); - - await fetch(window.location.origin + "/presupuestos/presupuestoencuadernaciones/update/" + id , { - method: "POST", - body: JSON.stringify(json_data), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .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; - -} - - -/**************************************************************************************** - * Seccion para los servicios de manipulado - ***************************************************************************************/ -/* -var tableServiciosManipulado = new DataTable('#tableOfServiciosManipulado',{ - scrollX: true, - searching: false, - paging: false, - info: false, - ordering: false, - responsive: true, - select: false, - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - }, -}); - -tableServiciosManipulado.on('draw', function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) -}) - -function init_servicio_manipulado(){ - - $('#add_servicio_manipulado_list').select2({ - allowClear: false, - minimumResultsForSearch: -1, - placeholder: window.Presupuestos.servicioManipuladoList - }) - - window.serviciosmanipuladoList.forEach((element) =>{ - - var precio_unidad = parseFloat(element.precio_unidad).toFixed(2) - var margen = parseFloat(element.margen).toFixed(0) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - tableServiciosManipulado.row.add([ - element.tarifa_manipulado_id, - element.nombre, - '' + precio_unidad_coste + ' / ' + precio_unidad + '', - '', - '', - '' - ]).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() -} - -function check_serv_manipulado_error(){ - - var htmlString = ''; - - $('#tableOfServiciosManipulado tr').each(function(){ - if($(this).find('td').eq(2).text() == '0.00'){ - htmlString = ` - `; - } - }) - $('#serv-manipulado-error').html(htmlString) -} - -async function get_tarifas_manipulado(tipo=null, tarifa_id = -1){ - - if(parseInt($('#tirada').val())>0){ - var tirada = parseInt($('#tirada').val()) - } - else{ - var tirada = 0 - } - - var datos = { - tarifa_manipulado_id : tarifa_id, - tirada: tirada, - POD: parseInt($('#POD').val()) - }; - datos = Object.assign(datos, window.token_ajax) - - if(tipo != null){ - datos['tipo'] = tipo; - datos['solapas'] = $('#solapas').is(':checked')?1:0; - datos['tipo_impresion_id'] = parseInt($('#tipo_impresion_id').val()); - } - - - - $.ajax({ - type: "POST", - url: window.routes_servicios.dataTableOfPresupuestoManipulados, - data: datos, - success: function (data) { - - if(tipo=='default') - tableServiciosManipulado.clear().draw() - - data.values.forEach((row) => { - - var precio_unidad = parseFloat(row.precio_unidad).toFixed(2) - var margen = parseFloat(row.margen).toFixed(0) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - tableServiciosManipulado.row.add([ - row.tarifa_id, - row.tarifa_nombre, - '' + precio_unidad_coste + ' / ' + precio_unidad + '', - '', - '', - '' - ]).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}) - }) - }); - check_serv_manipulado_error() - yeniden(data[window.csrf_token]); - return true; - }, - error: function(e){ - return false; - } - }) - return false; -} - -$('#insertar_serv_manipulado').on('click', function(){ - const tarifa_text = $('#add_servicio_manipulado_list').select2('data')[0].text.trim() - - if( $('#add_servicio_manipulado_list').select2('data')[0].text.trim().length > 0){ - if($('#tableOfServiciosManipulado tr > td:contains(' + tarifa_text + ')').length == 0){ - get_tarifas_manipulado(null, $('#add_servicio_manipulado_list').select2('data')[0].id); - } - else{ - popErrorAlert(window.Presupuestos.errores.error_servicios_duplicados, 'serv-manipulado-alert') - } - } - check_serv_manipulado_error() -}) - - -function servicioGuardas(add_service = false){ - if(add_service){ - $('#add_servicio_manipulado_list').val(window.serviciosAutomaticos.plegadoGuardas) - $('#insertar_serv_manipulado').click() - } - else{ - var row_indexes = tableServiciosManipulado.rows().eq( 0 ).filter( function (rowIdx) { - return tableServiciosManipulado.cell( rowIdx, 0 ).data() == window.serviciosAutomaticos.plegadoGuardas ? true : false; - } ); - if(row_indexes.length > 0){ - tableServiciosManipulado.row(row_indexes[0]).remove().draw() - check_serv_manipulado_error() - } - } -} - -function get_datos_manipulado(){ - - var datosManipulado = [] - if($("#tableOfServiciosManipulado").DataTable().rows().count()>0){ - - $("#tableOfServiciosManipulado tr").each(function (index,tr) { - var values = {} - $(this).find("td").each(function (index2) { - - switch (index2) { - case 0: - values['tarifa_id'] = $(this).text() - break - case 2: - values['precio_unidad'] = $(this).text().split('/')[1].trim() - break - case 3: - values['precio_total'] = $(this).children(":first").val() - break - case 4: - values['margen'] = $(this).text() - break - } - }) - if(Object.keys(values).length>0) - datosManipulado.push(values) - }) - } - - return datosManipulado -} - - -async function get_servManipulado_tiradasAlternativas(tirada){ - - const url = window.location.href; - const url_parts = url.split('/'); - var id = -1; - if(url_parts[url_parts.length-2] == 'edit'){ - id = url_parts[url_parts.length-1]; - } - - var serviciosManipulado ={ - coste: 0.0, - margen: 0.0, - } - var json_data = { - datos: get_datos_manipulado(), - tirada: parseInt(tirada), - POD: $('#POD').val() - } - if(json_data.datos.length>0){ - json_data = Object.assign(json_data, window.token_ajax); - - await fetch(window.location.origin + "/presupuestos/presupuestomanipulados/update/" + id , { - method: "POST", - body: JSON.stringify(json_data), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .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; -} - */ - -/**************************************************************************************** - * Seccion para los servicios de preimpresión - ***************************************************************************************/ -var tableServiciosPreimpresion = new DataTable('#tableOfServiciosPreimpresion',{ - scrollX: true, - searching: false, - paging: false, - info: false, - ordering: false, - responsive: true, - select: false, - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - } -}); - -tableServiciosPreimpresion.on('draw', function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) -}) - - -function init_servicio_preimpresion(){ - - - $('#add_servicio_preimpresion_list').select2({ - allowClear: false, - minimumResultsForSearch: -1, - placeholder: window.Presupuestos.servicioPreimpresionList - }) - - window.serviciospreimpresionList.forEach((element) =>{ - - var precio = parseFloat(element.precio).toFixed(2) - var margen = parseFloat(element.margen).toFixed(2) - var coste = (precio/(1+margen/100)).toFixed(2) - - tableServiciosPreimpresion.row.add([ - element.tarifa_preimpresion_id, - element.nombre, - '' + coste + '', - '', - '', - '' - ]).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}) - }) - - }) - check_serv_preimpresion_error() -} - -function check_serv_preimpresion_error(){ - - var htmlString = ''; - - $('#tableOfServiciosPreimpresion tr').each(function(){ - - if(parseFloat($(this).find('td:eq(2) input').val()) == '0'){ - htmlString = ` - `; - } - }) - $('#serv-preimpresion-error').html(htmlString) -} - -function get_tarifas_preimpresion(tarifa_id = -1){ - - var datos = { - tarifa_preimpresion_id : tarifa_id, - }; - datos = Object.assign(datos, window.token_ajax) - - - $.ajax({ - type: "POST", - url: window.routes_servicios.dataTableOfPresupuestoPreimpresion, - data: datos, - success: function (data) { - - data.values.forEach((row) => { - - var precio = parseFloat(row.precio).toFixed(2) - var margen = parseFloat(row.margen).toFixed(2) - var coste = (precio/(1+margen/100)).toFixed(2) - - tableServiciosPreimpresion.row.add([ - row.tarifa_id, - row.tarifa_nombre, - '' + coste + '', - '', - '', - '' - ]).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}) - }) - - }); - check_serv_preimpresion_error() - yeniden(data[window.csrf_token]); - return true; - }, - error: function(e){ - return false; - } - }) - return false; -} - - -function servicioPrototipo(){ - if($('#prototipo').prop('checked')){ - $('#add_servicio_extra_list').val(serviciosAutomaticos.prototipo) - $('#insertar_serv_extra').click() - } - else{ - var row_indexes = tableServiciosExtra.rows().eq( 0 ).filter( function (rowIdx) { - return tableServiciosExtra.cell( rowIdx, 0 ).data() == serviciosAutomaticos.prototipo ? true : false; - } ); - if(row_indexes.length > 0){ - tableServiciosExtra.row(row_indexes[0]).remove().draw() - check_serv_preimpresion_error() - } - } -} - -function servicioFerro(){ - var row_indexes = tableServiciosExtra.rows().eq( 0 ).filter( function (rowIdx) { - return tableServiciosExtra.cell( rowIdx, 0 ).data() == serviciosAutomaticos.ferro ? true : false; - } ); - if($('#ferro').prop('checked')){ - if(row_indexes.length == 0){ - $('#add_servicio_extra_list').val(serviciosAutomaticos.ferro) - $('#insertar_serv_extra').click() - } - } - else{ - if(row_indexes.length > 0){ - tableServiciosExtra.row(row_indexes[0]).remove().draw() - check_serv_extra_error() - } - } -} - -$('#insertar_serv_preimpresion').on('click', function(){ - - let data = $('#add_servicio_preimpresion_list').select2('data'); - if (data.length > 0) { - const tarifa_text = data[0].text.trim(); - if (tarifa_text.length > 0) { - if ($('#tableOfServiciosPreimpresion tr > td:contains(' + tarifa_text + ')').length == 0) - get_tarifas_preimpresion(data[0].id); - else { - popErrorAlert(window.Presupuestos.errores.error_servicios_duplicados, 'serv-preimpresion-alert'); - } - } - } - check_serv_preimpresion_error() -}) - - -function get_datos_preimpresion(){ - - var datosPreimpresion = [] - if($("#tableOfServiciosPreimpresion").DataTable().rows().count()>0){ - - $("#tableOfServiciosPreimpresion tr").each(function (index,tr) { - var values = {} - $(this).find("td").each(function (index2) { - - switch (index2) { - case 0: - values['tarifa_id'] = $(this).text() - break - case 3: - values['precio'] = $(this).children(":first").val() - break - case 4: - values['margen'] = $(this).text() - break - } - }) - if(Object.keys(values).length>0) - datosPreimpresion.push(values) - }) - } - - return datosPreimpresion -} - - -async function get_servPreimpresion_tiradasAlternativas(){ - - const url = window.location.href; - const url_parts = url.split('/'); - var id = -1; - if(url_parts[url_parts.length-2] == 'edit'){ - id = url_parts[url_parts.length-1]; - } - - var serviciosPreimpresion ={ - coste: 0.0, - margen: 0.0, - } - var json_data = { - datos: get_datos_preimpresion(), - POD: $('#POD').val() - } - if(json_data.datos.length>0){ - - json_data = Object.assign(json_data, window.token_ajax); - - await fetch(window.location.origin + "/presupuestos/presupuestopreimpresiones/update/" + id , { - method: "POST", - body: JSON.stringify(json_data), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .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; -} - - - - - -/**************************************************************************************** - * Seccion para los servicios extra - ***************************************************************************************/ -var tableServiciosExtra = new DataTable('#tableOfServiciosExtra',{ - scrollX: true, - searching: false, - paging: false, - info: false, - ordering: false, - responsive: true, - select: false, - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - } -}); - -tableServiciosExtra.on('draw', function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) -}) - -function init_servicio_extra(){ - - - $('#add_servicio_extra_list').select2({ - allowClear: false, - minimumResultsForSearch: -1, - placeholder: window.Presupuestos.servicioextraList - }) - - window.serviciosextraList.forEach((element) =>{ - - var precio = parseFloat(element.precio).toFixed(2) - var margen = parseFloat(element.margen).toFixed(2) - var coste = (precio/(1+margen/100)).toFixed(2) - - tableServiciosExtra.row.add([ - element.tarifa_extra_id, - element.nombre, - '' + coste + '', - '', - '', - '' - ]).draw(false) - - $('#precio_servicioextra_' + element.tarifa_extra_id).on('change', function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) - }) - - }) - check_serv_extra_error() -} - -function check_serv_extra_error(){ - - var htmlString = ''; - - $('#tableOfServiciosExtra tr').each(function(){ - - if(parseFloat($(this).find('td:eq(2) input').val()) == '0'){ - htmlString = ` - `; - } - }) - $('#serv-preimpresion-error').html(htmlString) -} - -function get_tarifas_extra(tarifa_id = -1){ - - var datos = { - tarifa_extra_id : tarifa_id, - }; - datos = Object.assign(datos, window.token_ajax) - - - $.ajax({ - type: "POST", - url: window.routes_servicios.dataTableOfPresupuestoServiciosExtra, - data: datos, - success: function (data) { - - data.values.forEach((row) => { - - var precio = parseFloat(row.precio).toFixed(2) - var margen = parseFloat(row.margen).toFixed(2) - var coste = (precio/(1+margen/100)).toFixed(2) - - tableServiciosExtra.row.add([ - row.tarifa_id, - row.tarifa_nombre, - '' + coste + '', - '', - '', - '' - ]).draw(false) - - $('#precio_servicioextra_' + row.tarifa_id).on('change', function(){ - updatePresupuesto({ - update_lineas: false, - update_servicios: false, - update_envios: false, - update_resumen: true, - update_tiradas_alternativas: true}) - }) - - }); - check_serv_extra_error() - yeniden(data[window.csrf_token]); - return true; - }, - error: function(e){ - return false; - } - }) - return false; -} - - -$('#insertar_serv_extra').on('click', function(){ - const tarifa_text = $('#add_servicio_extra_list').select2('data')[0].text.trim() - - if( $('#add_servicio_extra_list').select2('data')[0].text.trim().length > 0){ - if($('#tableOfServiciosExtra tr > td:contains(' + tarifa_text + ')').length == 0) - get_tarifas_extra($('#add_servicio_extra_list').select2('data')[0].id); - else{ - popErrorAlert(window.Presupuestos.errores.error_servicios_duplicados, 'serv-extra-alert') - } - } - check_serv_extra_error() -}) - - -function get_datos_serviciosextra(){ - - var datosServiciosExtra = [] - if($("#tableOfServiciosExtra").DataTable().rows().count()>0){ - - $("#tableOfServiciosExtra tr").each(function (index,tr) { - var values = {} - $(this).find("td").each(function (index2) { - - switch (index2) { - case 0: - values['tarifa_id'] = $(this).text() - break - case 3: - values['precio'] = $(this).children(":first").val() - break - case 4: - values['margen'] = $(this).text() - break - } - }) - if(Object.keys(values).length>0) - datosServiciosExtra.push(values) - }) - } - - return datosServiciosExtra; -} - - -async function get_servExtra_tiradasAlternativas(){ - - const url = window.location.href; - const url_parts = url.split('/'); - var id = -1; - if(url_parts[url_parts.length-2] == 'edit'){ - id = url_parts[url_parts.length-1]; - } - - var serviciosExtra ={ - coste: 0.0, - margen: 0.0, - } - var json_data = { - datos: get_datos_serviciosextra(), - POD: $('#POD').val() - } - if(json_data.datos.length>0){ - - json_data = Object.assign(json_data, window.token_ajax); - - await fetch(window.location.origin + "/presupuestos/presupuestoserviciosextra/update/" + id , { - method: "POST", - body: JSON.stringify(json_data), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - //const values = await response.json(); - yeniden(data[window.csrf_token]); - data.lines.forEach((line) => { - serviciosExtra.coste += parseFloat(line[0].precio); - serviciosExtra.margen += parseFloat(line[0].precio)*parseFloat(line[0].margen)/100.0; - }); - - }); - } - return serviciosExtra; -} - - -/**************************************************************************************** - * Seccion para "otros" - ***************************************************************************************/ -async function actualizar_servicios(update_preimpresion=false){ - - const domain = window.location.origin - const url = window.location.href; - const url_parts = url.split('/'); - var id = -1; - if(url_parts[url_parts.length-2] == 'edit'){ - id = url_parts[url_parts.length-1]; - } - - const dimension = getDimensionLibro(); - - if(parseInt($('#tirada').val())>0){ - var tirada = parseInt($('#tirada').val()) - } - else{ - var tirada = 0 - } - var paginas = parseInt($('#paginas').val())>0?parseInt($('#paginas').val()):0 - - var datos_json_acabados = { - datos: get_datos_acabado(), - tirada: tirada, - POD: parseInt($('#POD').val()), - } - datos_json_acabados = Object.assign(datos_json_acabados, window.token_ajax); - - var datos_json_encuadernacion = { - datos: get_datos_encuadernacion(), - tirada: tirada, - paginas: paginas, - ancho: dimension.ancho, - alto: dimension.alto, - POD: parseInt($('#POD').val()), - } - datos_json_encuadernacion = Object.assign(datos_json_encuadernacion, window.token_ajax); - - var datos_json_manipulado = { - datos: get_datos_manipulado(), - tirada: tirada, - POD: parseInt($('#POD').val()), - } - datos_json_manipulado = Object.assign(datos_json_manipulado, window.token_ajax); - - var datos_json_preimpresion = { - datos: get_datos_preimpresion(), - } - datos_json_preimpresion = Object.assign(datos_json_preimpresion, window.token_ajax); - - - var datos_json_serviciosextra = { - datos: get_datos_serviciosextra(), - } - datos_json_preimpresion = Object.assign(datos_json_preimpresion, window.token_ajax); - - fetch(domain + "/presupuestos/presupuestoacabados/update/" + id , { - method: "POST", - body: JSON.stringify(datos_json_acabados), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - data.lines.forEach((line) => { - - var precio_unidad = parseFloat(line[0].precio_unidad).toFixed(2) - var margen = parseFloat(line[0].margen).toFixed(0) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - $('#proveedor_acabado_' + line[0].tarifa_id).off('change') - if(line[0].hasOwnProperty('proveedor_id')){ - $('#proveedor_acabado_' + line[0].tarifa_id) - .append('') - } - else{ - $('#proveedor_acabado_' + line[0].tarifa_id).empty() - .append('') - } - $('#precio_unidad_acabado_' + line[0].tarifa_id).text(precio_unidad_coste + " / " + precio_unidad) - $('#precio_total_acabado_' + line[0].tarifa_id).val(parseFloat(line[0].total).toFixed(2)) - $('#acabado_margen_' + line[0].tarifa_id).text(margen) - $('#proveedor_acabado_' + line[0].tarifa_id).on('change', select_enc_event) - }); - check_serv_acabado_error() - yeniden(data[window.csrf_token]); - }).then( - - fetch(domain + "/presupuestos/presupuestoencuadernaciones/update/" + id , { - method: "POST", - body: JSON.stringify(datos_json_encuadernacion), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - data.lines.forEach((line) => { - - var precio_unidad = parseFloat(line[0].precio_unidad).toFixed(2) - var margen = parseFloat(line[0].margen).toFixed(0) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - $('#proveedor_enc_' + line[0].tarifa_id).off('change') - if(line[0].hasOwnProperty('proveedor_id')){ - $('#proveedor_enc_' + line[0].tarifa_id) - .append('') - } - else{ - $('#proveedor_enc_' + line[0].tarifa_id).empty() - .append('') - } - $('#precio_unidad_encuadernado_' + line[0].tarifa_id).text(precio_unidad_coste + " / " + precio_unidad) - $('#precio_total_encuadernado_' + line[0].tarifa_id).val(parseFloat(line[0].total).toFixed(2)) - $('#enc_margen_' + line[0].tarifa_id).val(margen) - $('#proveedor_enc_' + line[0].tarifa_id).on('change', select_enc_event) - }); - check_serv_enc_error() - yeniden(data[window.csrf_token]); - }).then( - fetch(domain + "/presupuestos/presupuestomanipulados/update/" + id , { - method: "POST", - body: JSON.stringify(datos_json_manipulado), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - data.lines.forEach((line) => { - - var precio_unidad = parseFloat(line[0].precio_unidad).toFixed(2) - var margen = parseFloat(line[0].margen).toFixed(0) - var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2) - - $('#precio_unidad_manipulado_' + line[0].tarifa_id).text(precio_unidad_coste + " / " + precio_unidad) - $('#precio_total_manipulado_' + line[0].tarifa_id).val(parseFloat(line[0].total).toFixed(2)) - $('#manipulado_margen_' + line[0].tarifa_id).val(margen) - }); - check_serv_manipulado_error() - yeniden(data[window.csrf_token]); - }).then(function(){ - if(update_preimpresion){ - fetch(domain + "/presupuestos/presupuestopreimpresiones/update/" + id , { - method: "POST", - body: JSON.stringify(datos_json_preimpresion), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - - data.lines.forEach((line) => { - - var precio = parseFloat(line[0].total).toFixed(2) - var margen = parseFloat(line[0].margen).toFixed(2) - var coste = (precio/(1+margen/100)).toFixed(2) - - $('#coste_preimprecion_' + line[0].tarifa_id).text(coste) - $('#precio_preimpresion_' + line[0].tarifa_id).val(precio) - $('#preimpresion_margen_' + line[0].tarifa_id).val(margen) - }); - check_serv_preimpresion_error() - yeniden(data[window.csrf_token]); - }) - } - }).then(function(){ - if(update_preimpresion){ - fetch(domain + "/presupuestos/presupuestoserviciosextra/update/" + id , { - method: "POST", - body: JSON.stringify(datos_json_serviciosextra), - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(response => response.json()) - .then(data => { - - var precio = parseFloat(data[0].total).toFixed(2) - var margen = parseFloat(data[0].margen).toFixed(2) - var coste = (precio/(1+margen/100)).toFixed(2) - - data.lines.forEach((line) => { - $('#coste_servicioextra_' + line[0].tarifa_id).text(coste) - $('#precio_serviciosextra_' + line[0].tarifa_id).val(precio) - $('#serviciosextra_margen_' + line[0].tarifa_id).val(margen) - }); - check_serv_preimpresion_error(); - yeniden(data[window.csrf_token]); - }) - } - }) - ) - ) - -} - -function popAlert(message, alertClass, alertIcon, containerId = 'sk-alert'){ - var htmlString = ` - `; - if(containerId == 'sk-alert'){ - $(window).scrollTop(0); - } - $('#' + containerId).hide().empty().html(htmlString).fadeIn("slow", function(){ - setTimeout(function(){ - $('#' + containerId).fadeOut("slow"); - }, 5000); - }); -} diff --git a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js index 3f0bf29b..7d1b80cc 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js @@ -7,6 +7,7 @@ import Comparador from './sections/comparador.js'; import LineasPresupuesto from './sections/lineasPresupuesto.js'; import PreviewFormasAdmin from './sections/previewFormasAdmin.js'; import Servicios from './sections/servicios.js'; +import Envios from './sections/envios.js'; class PresupuestoAdminEdit { @@ -38,6 +39,7 @@ class PresupuestoAdminEdit { this.previewFormasAdmin = null; this.servicios = new Servicios(); + this.envios = new Envios(); this.calcularPresupuesto = false; } @@ -67,6 +69,7 @@ class PresupuestoAdminEdit { this.datosLibro.init(); this.comparador.init(); this.lineasPresupuesto.init(); + this.envios.init(); this.previewFormasAdmin = new PreviewFormasAdmin(tipoLibro, this.tipoTapa, { @@ -124,6 +127,7 @@ class PresupuestoAdminEdit { self.lineasPresupuesto.cargarDatos(response.data.lineasPresupuesto); self.servicios.cargar(response.data.servicios); + self.envios.cargar(response.data.direcciones); /*self.direcciones.handleChangeCliente(); self.direcciones.cargarDatos(response.data.direcciones, response.data.datosGenerales); diff --git a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/datosLibro.js b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/datosLibro.js index b7957ec0..9971f72d 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/datosLibro.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/datosLibro.js @@ -66,8 +66,8 @@ class DatosLibro { this.acabadoSobrecubierta.init(); this.acabadoCubierta.item.on('select2:select', function () { - - $(document).trigger('add-servicio-lineas', 'acabadoCubierta'); + + $(document).trigger('add-servicio-lineas', 'acabadoCubierta'); }); this.acabadoSobrecubierta.item.on('select2:select', function () { $(document).trigger('add-servicio-lineas', 'acabadoSobrecubierta'); @@ -96,9 +96,10 @@ class DatosLibro { $('.formato-libro').on('change', function () { $(document).trigger('update-lineas-presupuesto'); + $(document).trigger('update-servicios'); + /* TO-DO updatePresupuesto({ - update_servicios: true, update_envios: true, update_resumen: true, update_tiradas_alternativas: true @@ -116,7 +117,7 @@ class DatosLibro { $(document).trigger('remove-servicio-lineas', 'fajaColor'); } } - + changeFerro() { if (this.ferro.prop('checked')) { @@ -130,7 +131,7 @@ class DatosLibro { changePrototipo() { if (this.prototipo.prop('checked')) { - + $(document).trigger('add-servicio-lineas', 'prototipo'); this.ferro.prop('checked', true).trigger('change'); } @@ -183,33 +184,32 @@ class DatosLibro { this.checkPaginasPresupuesto(); $(document).trigger('update-lineas-presupuesto'); - + $(document).trigger('update-servicios'); // TO-DO /*updatePresupuesto({ - update_servicios: true, update_envios: true, update_resumen: true, update_tiradas_alternativas: true })*/ } - - changeTipoTamanio(){ - - if(this.tamanioPersonalizado.prop('checked')){ + + changeTipoTamanio() { + + if (this.tamanioPersonalizado.prop('checked')) { $('.tamanio-personalizado').removeClass('d-none'); $('.tamanio-estandar').addClass('d-none'); this.tamanio.setVal(''); - $("#label_papelFormatoId").text( + $("#label_papelFormatoId").text( window.language.Presupuestos.papelFormatoId + " (" + window.language.Presupuestos.papelFormatoAncho + " x " + window.language.Presupuestos.papelFormatoAncho + ")*"); } - else{ + else { this.anchoPersonalizado.val(""); this.altoPersonalizado.val(""); $('.tamanio-personalizado').addClass('d-none'); $('.tamanio-estandar').removeClass('d-none'); - $("#label_papelFormatoId").text( + $("#label_papelFormatoId").text( window.language.Presupuestos.papelFormatoId + '*'); } $(document).trigger('update-lineas-presupuesto'); @@ -218,59 +218,67 @@ class DatosLibro { changeSolapasCubierta() { - if (this.solapasCubierta.prop('checked')) { - $('#div_solapas_ancho').removeClass('d-none'); - } - else { - $('#div_solapas_ancho').divSolapasCubierta.addClass('d-none'); - this.anchoSolapasCubierta.val(0); - } - $('#serv_default').trigger('click'); + setTimeout(() => { + if (this.solapasCubierta.prop('checked')) { + $('#div_solapas_ancho').removeClass('d-none'); + $(document).trigger('add-servicio-lineas', 'solapas'); + } + else { + $('#div_solapas_ancho').addClass('d-none'); + this.anchoSolapasCubierta.val(60); + $(document).trigger('remove-servicio-lineas', 'solapas'); + } + }, 100); + $(document).trigger('update-servicios'); } changeSolapasSobrecubierta() { - + if (this.solapasSobrecubierta.prop('checked')) { this.divSolapasSobrecubierta.removeClass('d-none'); + $(document).trigger('remove-servicio-lineas', 'solapas'); } else { this.divSolapasSobrecubierta.addClass('d-none'); - this.anchoSolapasSobrecubierta.val(0); + this.anchoSolapasSobrecubierta.val(60); + $(document).trigger('add-servicio-lineas', 'solapas'); } - $('#serv_default').trigger('click'); + $(document).trigger('update-servicios'); + } changePaginas() { - - if($('#tipo_impresion_id').val() == 21){ - if(parseInt($('#paginas').val()) > 80){ + + if ($('#tipo_impresion_id').val() == 21) { + if (parseInt($('#paginas').val()) > 80) { $('#paginas').val(80) } } - - if(window.location.href.includes('edit')){ - + + if (window.location.href.includes('edit')) { + this.checkPaginasPresupuesto(); - + // Si es negro o color if ($('#tipoImpresion').select2('data')[0].id == 'negro' || $('#tipoImpresion').select2('data')[0].id == 'color') { - $('#compPaginasNegro').val(parseInt($('#paginas').val())-parseInt($('#compPaginasColor').val())); + $('#compPaginasNegro').val(parseInt($('#paginas').val()) - parseInt($('#compPaginasColor').val())); $('#compPaginasNegro').trigger('change') } // Si es negrohq o colorhq if ($('#tipoImpresion').select2('data')[0].id == 'negrohq' || $('#tipoImpresion').select2('data')[0].id == 'colorhq') { - $('#compPaginasNegrohq').val(parseInt($('#paginas').val())-parseInt($('#compPaginasColorhq').val())); + $('#compPaginasNegrohq').val(parseInt($('#paginas').val()) - parseInt($('#compPaginasColorhq').val())); $('#compPaginasNegrohq').trigger('change'); } - + + $(document).trigger('update-lineas-presupuesto'); + $(document).trigger('update-servicios'); + // TO-DO /* updatePresupuesto({ - update_lineas: true, - update_servicios: true, update_envios: true, update_resumen: true, update_tiradas_alternativas: true @@ -278,16 +286,16 @@ class DatosLibro { */ } } - - + + changeTirada(update_tiradas_alternativas = true) { - + this.calcular_mermas() - + const url2 = window.location.href; const url_parts2 = url2.split('/'); - - if(url_parts2[url_parts2.length-2] == 'edit'){ + + if (url_parts2[url_parts2.length - 2] == 'edit') { $(document).trigger('update-lineas-presupuesto'); //update_servicios(false) //updateLineasPresupuesto() @@ -314,35 +322,35 @@ class DatosLibro { */ } } - - calcular_mermas(){ - + + calcular_mermas() { + const tirada = parseInt($('#tirada').val()); const POD = parseInt($('#POD').val()); let merma = 0; let htmlString = ''; - - if(tirada> POD){ - merma = tirada*0.1<=POD ? tirada*0.1 : POD; + + if (tirada > POD) { + merma = tirada * 0.1 <= POD ? tirada * 0.1 : POD; } - else{ + else { let merma_lineas = [] - $('#tableLineasPresupuesto').DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) { + $('#tableLineasPresupuesto').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) { var rowData = this.data(); - if(rowData.row_id != 'lp_guardas' && rowData.row_id != 'lp_cubierta' && rowData.row_id != 'lp_sobrecubierta'){ - const formas_linea = parseInt($('#isCosido').val())==0?parseInt(rowData.formas):parseInt(rowData.formas)/2 - if(formas_linea > tirada) - merma_lineas.push(formas_linea-tirada) + if (rowData.row_id != 'lp_guardas' && rowData.row_id != 'lp_cubierta' && rowData.row_id != 'lp_sobrecubierta') { + const formas_linea = parseInt($('#isCosido').val()) == 0 ? parseInt(rowData.formas) : parseInt(rowData.formas) / 2 + if (formas_linea > tirada) + merma_lineas.push(formas_linea - tirada) else - merma_lineas.push(tirada%formas_linea) + merma_lineas.push(tirada % formas_linea) } - + }) - - - if(merma_lineas.length>0) + + + if (merma_lineas.length > 0) merma = Math.max(...merma_lineas) - else{ + else { htmlString = ` `; - - + `; + + merma = 0 - + } - + } $('#mermacubierta').val(parseInt(merma)) $('#merma').val(parseInt(merma)) @@ -392,15 +400,15 @@ class DatosLibro { $('#tipo_impresion_id').val() == 5 || $('#tipo_impresion_id').val() == 7) { $(".solapas-cubierta-div").addClass('d-none'); } - else{ + else { if (datos.solapasCubierta) { this.solapasCubierta.prop('checked', true); this.anchoSolapasCubierta.val(datos.solapasCubiertaAncho); this.divSolapasSobrecubierta.removeClass('d-none'); } - else{ + else { this.solapasCubierta.prop('checked', false); - this.anchoSolapasCubierta.val(0); + this.anchoSolapasCubierta.val(60); this.divSolapasSobrecubierta.addClass('d-none'); } } @@ -409,12 +417,12 @@ class DatosLibro { this.anchoSolapasSobrecubierta.val(datos.solapasSobrecubiertaAncho); $('#div_solapas_ancho_sobrecubierta').removeClass('d-none'); } - else{ + else { this.solapasSobrecubierta.prop('checked', false); this.anchoSolapasSobrecubierta.val(60); $('#div_solapas_ancho_sobrecubierta').addClass('d-none'); } - + this.acabadoCubierta.setOption(datos.acabadoCubierta.id, datos.acabadoCubierta.text); diff --git a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/envios.js b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/envios.js new file mode 100644 index 00000000..ff58c712 --- /dev/null +++ b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/envios.js @@ -0,0 +1,125 @@ +import Ajax from "../../../components/ajax.js"; +import { getToken } from "../../../common/common.js"; + +class Envios { + + constructor() { + + this.csrf_token = getToken(); + this.csrf_hash = $('#mainContainer').find('input[name="' + this.csrf_token + '"]').val(); + + this.recogerTaller = $('#recoger_en_taller'); + + this.table = null; + } + + init() { + + const self = this; + + this.table = $('#tableOfDireccionesEnvio').DataTable({ + draw: 5, + serverSide: false, + processing: true, + autoWidth: true, + responsive: true, + order: [[0, "asc"]], + pageLength: 20, + lengthChange: false, + searching: false, + paging: false, + info: false, + scrollX: true, + + columns: [ + { 'data': 'tarifa_id' }, + { 'data': 'cantidad' }, + { 'data': 'peso' }, + { 'data': 'att' }, + { 'data': 'email' }, + { 'data': 'direccion' }, + { 'data': 'cp' }, + { 'data': 'municipio' }, + { 'data': 'pais' }, + { 'data': 'telefono' }, + { 'data': 'proveedor' }, + { 'data': 'proveedor_id' }, + { 'data': 'precio' }, + { 'data': 'margen' }, + { 'data': 'entregaPieCalle' }, + { + data: function (row, type, set, meta) { + return ` + + + `; + }, + className: 'row-edit dt-center' + } + ], + columnDefs: [ + { + orderable: false, + searchable: false, + targets: [$('#tableOfDireccionesEnvio').find("tr:first th").length - 1] + }, + { "orderData": [0], "targets": 0 }, + + ], + columnDefs: [ + { + target: [11], + visible: false, + searchable: false + }, + ], + language: { + url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" + }, + + drawCallback: function (settings) { + self.check_unidades_enviadas(); + } + + }); + } + + cargar(datos) { + if (datos.entrega_taller) { + this.recogerTaller.prop('checked', true); + } + else { + this.table.rows.add(datos).draw(); + } + } + + check_unidades_enviadas() { + + var cantidad_total = 0 + this.table.rows().every(function (rowIdx, tableLoop, rowLoop) { + cantidad_total += parseInt(this.data().cantidad) + }); + + const tirada = parseInt($('#tirada').val()); + let htmlString = ''; + if (cantidad_total < tirada && this.recogerTaller.prop('checked') === false) { + htmlString = ` + `; + $('#alert-envios').html(htmlString); + return false; + } + $('#alert-envios').html(htmlString); + return true; + } +} + +export default Envios; \ No newline at end of file diff --git a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/lineasPresupuesto.js b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/lineasPresupuesto.js index 092cdcda..e6a4cd10 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/lineasPresupuesto.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/lineasPresupuesto.js @@ -37,7 +37,6 @@ class LineasPresupuesto { // TO-DO /*updatePresupuesto({ - update_servicios: true, update_envios: true, update_resumen: true, update_tiradas_alternativas: true @@ -1605,8 +1604,6 @@ class LineasPresupuesto { calcular_mermas() updatePresupuesto({ - update_lineas: false, - update_servicios: true, update_envios: true, update_resumen: true, update_tiradas_alternativas: true @@ -1923,10 +1920,10 @@ class LineasPresupuesto { */ } + + /* TO-DO updatePresupuesto({ - update_lineas: false, - update_servicios: true, update_envios: false, update_resumen: true, update_tiradas_alternativas: true diff --git a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/servicios.js b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/servicios.js index a6d64f93..6724c21a 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/servicios.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/servicios.js @@ -53,9 +53,9 @@ class Servicios { }) $(document).on('add-servicio-lineas', this.addServicio.bind(this)); - $(document).on('remove-servicio-lineas', this.addServicio.bind(this)); + $(document).on('remove-servicio-lineas', this.removeServicio.bind(this)); + - $(document).on('change', '.update-totales-servicios', function () { @@ -71,6 +71,7 @@ class Servicios { showBreadCrumbSaveButton(true); }); + $(document).on('update-servicios', this.updateServicios.bind(this)); } cargar(datos) { @@ -96,13 +97,25 @@ class Servicios { else if (servicio == 'acabadoSobrecubierta') { this.serviciosAcabado.updateAcabadosExteriores(0, 1); } + else if (servicio == 'solapas') { + this.ServiciosManipulado.addSolapas(); + } + } - removeServicio(servicio) { + removeServicio(event, servicio) { + if (servicio == 'solapas') { + this.ServiciosManipulado.removeSolapas(); + } } + updateServicios() { + this.serviciosAcabado.updateServicios(); + this.ServiciosEncuadernacion.updateServicios(); + this.ServiciosManipulado.updateServicios(); + } } class ServiciosAcabado { @@ -231,6 +244,11 @@ class ServiciosAcabado { self.check_serv_acabado_error(); } + /* TO-DO + updatePresupuesto({ + update_resumen: true, + update_tiradas_alternativas: true}) + */ }); @@ -253,6 +271,45 @@ class ServiciosAcabado { }); */ } + updateServicios() { + + const self = this; + + const id = window.location.href.split('/').pop(); + const tarifa_ids = this.table.rows().data().toArray().map(row => row.tarifa_id); + const proveedor_ids = this.table.rows().data().toArray().map(row => row.proveedor_id); + const cubiertas = this.table.rows().data().toArray().map(row => row.cubierta); + const sobrecubiertas = this.table.rows().data().toArray().map(row => row.sobrecubierta); + // emparejar los tarifa_ids con los proveedor_ids + let tarifa_data = []; + for (let i = 0; i < tarifa_ids.length; i++) { + tarifa_data.push({ tarifa_id: tarifa_ids[i], proveedor_id: proveedor_ids[i], cubierta: cubiertas[i], sobrecubierta: sobrecubiertas[i] }); + } + + let tirada = 0; + if (parseInt($('#tirada').val()) > 0) { + tirada = parseInt($('#tirada').val()) + } + if (tarifa_ids.length > 0 && tirada > 0) { + const data = { + datos: tarifa_data, + tirada: tirada + }; + new Ajax('/serviciosacabados/update/' + id, data, {}, + function (response) { + if (response.lineas) { + self.table.clear().draw(); + self.table.rows.add(response.lineas).draw(); + } + }, + function (error) { + console.error(error); + } + ).post(); + } + + } + updateAcabadosExteriores(cubierta, sobrecubierta) { this.table.rows().every(function () { @@ -461,6 +518,11 @@ class ServiciosPreimpresion { drawCallback: function (settings) { self.check_serv_preimpresion_error(); + /* TO-DO + updatePresupuesto({ + update_resumen: true, + update_tiradas_alternativas: true}) + */ } @@ -750,6 +812,12 @@ class ServiciosEncuadernacion { }) self.check_serv_enc_error(); + + /* TO-DO + updatePresupuesto({ + update_resumen: true, + update_tiradas_alternativas: true}) + */ } }); @@ -772,6 +840,52 @@ class ServiciosEncuadernacion { }); */ } + updateServicios() { + + const self = this; + + const id = window.location.href.split('/').pop(); + const tarifa_ids = this.table.rows().data().toArray().map(row => row.tarifa_id); + const proveedor_ids = this.table.rows().data().toArray().map(row => row.proveedor_id); + const cuadernillos = this.table.rows().data().toArray().map(row => row.paginas_por_cuadernillo); + + let tarifa_data = []; + for (let i = 0; i < tarifa_ids.length; i++) { + tarifa_data.push({ tarifa_id: tarifa_ids[i], proveedor_id: proveedor_ids[i], paginas_por_cuadernillo: cuadernillos[i] }); + } + + let tirada = 0; + if (parseInt($('#tirada').val()) > 0) { + tirada = parseInt($('#tirada').val()) + } + let paginas = 0; + if (parseInt($('#paginas').val()) > 0) { + paginas = parseInt($('#paginas').val()) + } + + const dimension = self.getDimensionLibro(); + if (tarifa_ids.length > 0 && tirada > 0) { + const data = { + datos: tarifa_data, + tirada: tirada, + paginas: paginas, + ancho: dimension.ancho, + alto: dimension.alto, + }; + new Ajax('/serviciosencuadernaciones/update/' + id, data, {}, + function (response) { + if (response.lineas) { + self.table.clear().draw(); + self.table.rows.add(response.lineas).draw(); + } + }, + function (error) { + console.error(error); + } + ).post(); + } + } + cargarServiciosEncuadernacion(datos) { this.table.rows.add(datos).draw(); @@ -779,8 +893,6 @@ class ServiciosEncuadernacion { async getServiciosDefecto() { - this.table.clear().draw(); - const self = this; let tirada = 0; @@ -806,6 +918,7 @@ class ServiciosEncuadernacion { new Ajax('/serviciosencuadernaciones/datatable', datos, {}, function (response) { if (response.values) { + self.table.clear().draw(); self.table.rows.add(response.values).draw(); } }, @@ -1041,6 +1154,12 @@ class ServiciosManipulado { drawCallback: function (settings) { self.check_serv_manipulado_error(); + + /* TO-DO + updatePresupuesto({ + update_resumen: true, + update_tiradas_alternativas: true}) + */ } }); @@ -1072,8 +1191,6 @@ class ServiciosManipulado { async getServiciosDefecto() { - this.table.clear().draw(); - const self = this; let tirada = 0; @@ -1091,6 +1208,7 @@ class ServiciosManipulado { new Ajax('/serviciosmanipulados/datatable', datos, {}, function (response) { if (response.values) { + self.table.clear().draw(); self.table.rows.add(response.values).draw(); } }, @@ -1104,6 +1222,86 @@ class ServiciosManipulado { showBreadCrumbSaveButton(true); } + addSolapas() { + + const self = this; + new Ajax('/serviciosmanipulados/serviciosolapas', {}, {}, + function (response) { + if (response.service) { + + const tarifa_id = response.service; + var rows = self.table.rows().data().toArray(); + var found = rows.some(row => row.tarifa_id === tarifa_id); + + if (!found) + self.getPresupuestoManipulado(tarifa_id); + + } + }, + function (error) { + console.error(error); + } + ).get(); + } + + removeSolapas() { + + const self = this; + + new Ajax('/serviciosmanipulados/serviciosolapas', {}, {}, + function (response) { + if (response.service) { + + const tarifa_id = response.service; + var rows = self.table.rows().data().toArray(); + for (let i = 0; i < rows.length; i++) { + if (rows[i]['tarifa_id'] == tarifa_id) { + self.table.row(i).remove().draw(); + break; + } + } + + } + }, + function (error) { + console.error(error); + } + ).get(); + } + + updateServicios() { + + const self = this; + + const id = window.location.href.split('/').pop(); + const tarifa_ids = this.table.rows().data().toArray().map(row => row.tarifa_id); + + let tirada = 0; + if (parseInt($('#tirada').val()) > 0) { + tirada = parseInt($('#tirada').val()) + } + + if (tarifa_ids.length > 0) { + const data = { + datos: tarifa_ids, + solapas: $('#solapas').is(':checked') ? 1 : 0, + tirada: tirada + }; + new Ajax('/serviciosmanipulados/update/' + id, data, {}, + function (response) { + if (response.lineas) { + self.table.clear().draw(); + self.table.rows.add(response.lineas).draw(); + } + }, + function (error) { + console.error(error); + } + ).post(); + } + + } + getPresupuestoManipulado(tarifa_id = -1) { const self = this; @@ -1238,6 +1436,12 @@ class ServiciosExtra { drawCallback: function (settings) { self.check_serv_extra_error(); + + /* TO-DO + updatePresupuesto({ + update_resumen: true, + update_tiradas_alternativas: true}) + */ } diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js index b4ed5a8c..8ae649f8 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js @@ -677,6 +677,8 @@ class PresupuestoCliente { }, } + this.datos.guardas = this.disenioCubierta.getGuardas(); + if (calcularSolapas) { return; } @@ -700,7 +702,7 @@ class PresupuestoCliente { carasImpresion: this.disenioCubierta.carasCubierta.val(), }; - this.datos.guardas = this.disenioCubierta.getGuardas(); + this.datos.sobrecubierta = this.disenioCubierta.getSobrecubierta(); this.datos.faja = this.disenioCubierta.getFaja();
Tarifa_idTARIFA ID Proveedor_id MargenEntrega a piePallets?