From a5a2181faae5641046500939aa2f4d3845deeb0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Tue, 28 Nov 2023 12:08:27 +0100 Subject: [PATCH] finalizado servicios encuadernado --- ci4/app/Config/Routes.php | 2 + .../Presupuestos/Cosidotapablanda.php | 4 +- .../Presupuestoencuadernaciones.php | 46 ++- .../Tarifas/Tarifaencuadernacionlineas.php | 2 - .../Tarifas/Tarifasencuadernacion.php | 9 + ci4/app/Controllers/Test.php | 4 +- .../Tarifas/TarifaEncuadernacionEntity.php | 4 + ci4/app/Language/es/Presupuestos.php | 7 +- ci4/app/Language/es/Tarifaencuadernacion.php | 2 + .../PresupuestoEncuadernacionesModel.php | 100 +++++- .../Tarifas/TarifaEncuadernacionModel.php | 27 +- .../cosidotapablanda/_datosLibroItems.php | 10 + .../cosidotapablanda/_datosServiciosItems.php | 322 ++++++++++++++---- .../cosidotapablanda/comparador.js | 10 - .../viewCosidotapablandaForm.php | 1 + .../_tarifaEncuadernacionFormItems.php | 28 +- .../viewTarifaEncuadernacionList.php | 6 +- 17 files changed, 489 insertions(+), 95 deletions(-) diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index 1755decb..a55d5608 100755 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -488,6 +488,8 @@ $routes->group('serviciosacabados', ['namespace' => 'App\Controllers\Presupuesto $routes->group('serviciosencuadernaciones', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { $routes->post('datatable', 'Presupuestoencuadernaciones::datatable', ['as' => 'dataTableOfPresupuestoEncuadernaciones']); $routes->post('menuitems', 'Presupuestoencuadernaciones::menuItems', ['as' => 'menuItemsOfPresupuestoEncuadernaciones']); + $routes->get('delete/(:num)', 'Presupuestoencuadernaciones::delete/$1', ['as' => 'deletePresupuestoencuadernaciones']); + $routes->post('edit/(:num)', 'Presupuestoencuadernaciones::edit/$1', ['as' => 'updateCosidotapablanda']); }); diff --git a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php index 91b8eb24..bcb9b199 100755 --- a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php +++ b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php @@ -988,10 +988,10 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { $model = model('App\Models\Tarifas\TarifaEncuadernacionModel'); $data = $model->getServiciosEncuadernacionSelector(); - array_unshift($data, (object)array( + /*array_unshift($data, (object)array( "value" => 0, "label" => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.servicioEncuadernado'))]) - )); + ));*/ return $data; } diff --git a/ci4/app/Controllers/Presupuestos/Presupuestoencuadernaciones.php b/ci4/app/Controllers/Presupuestos/Presupuestoencuadernaciones.php index 845174ac..7e030ca7 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestoencuadernaciones.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestoencuadernaciones.php @@ -32,22 +32,62 @@ class Presupuestoencuadernaciones extends \App\Controllers\GoBaseResourceControl } + public function edit($requestedId = null) + { + + if ($requestedId == null) : + return; + endif; + + $postData = $this->request->getJSON(); + $tarifas = array_column($postData->datos, 'tarifa_id'); + if(count($tarifas)>0){ + $this->model->deleteServiciosNotInArray($requestedId, $tarifas); + } + else{ + $this->model->deleteAllServicios($requestedId); + } + + $this->model->updateTarifas($requestedId, $postData->datos); + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + $data = [ + $csrfTokenName => $newTokenHash + ]; + + return $this->respond($data); + } + + public function datatable() { if ($this->request->isAJAX()) { $reqData = $this->request->getPost(); - $tarifa_encuadernacion_id = $reqData['tarifa_encuadernacion_id'] ?? 0; + $tipo = $reqData['tipo'] ?? null; + if(is_null($tipo) || $tipo=='tarifa'){ + $tarifa_encuadernacion_id = $reqData['tarifa_encuadernacion_id'] ?? 0; + $proveedor_id = $reqData['proveedor_id'] ?? 0; + } + else{ + $solapas = $reqData['solapas'] ?? -1; + } $paginas = $reqData['paginas'] ?? 0; $tirada = $reqData['tirada'] ?? 0; $ancho = $reqData['ancho'] ?? 0; $alto = $reqData['alto'] ?? 0; - $proveedor_id = $reqData['proveedor_id'] ?? 0; + $POD = $reqData['POD'] ?? 0; $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); - $values = $this->model->getPrecioTarifa($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto, $proveedor_id, $POD); + if(is_null($tipo)) + $values = $this->model->getPrecioTarifa($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto, $proveedor_id, $POD); + else if($tipo=='tarifa') + $values = $this->model->getPrecioTarifa($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto, -1, $POD); + else + $values = $this->model->initPresupuesto(4, $solapas, $tirada, $paginas, $ancho, $alto, $POD); $data = [ 'values' => $values, $csrfTokenName => $newTokenHash diff --git a/ci4/app/Controllers/Tarifas/Tarifaencuadernacionlineas.php b/ci4/app/Controllers/Tarifas/Tarifaencuadernacionlineas.php index 256db11c..a177b825 100755 --- a/ci4/app/Controllers/Tarifas/Tarifaencuadernacionlineas.php +++ b/ci4/app/Controllers/Tarifas/Tarifaencuadernacionlineas.php @@ -83,7 +83,6 @@ class Tarifaencuadernacionlineas extends \App\Controllers\GoBaseResourceControll $sanitizedData = $this->sanitized($postData, $nullIfEmpty); - $noException = true; if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : @@ -156,7 +155,6 @@ class Tarifaencuadernacionlineas extends \App\Controllers\GoBaseResourceControll $sanitizedData = $this->sanitized($postData, $nullIfEmpty); - $noException = true; if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : diff --git a/ci4/app/Controllers/Tarifas/Tarifasencuadernacion.php b/ci4/app/Controllers/Tarifas/Tarifasencuadernacion.php index a0210a38..39416789 100755 --- a/ci4/app/Controllers/Tarifas/Tarifasencuadernacion.php +++ b/ci4/app/Controllers/Tarifas/Tarifasencuadernacion.php @@ -177,6 +177,15 @@ class Tarifasencuadernacion extends \App\Controllers\GoBaseResourceController if ($this->request->getPost('mostrar_en_presupuesto') == null) { $sanitizedData['mostrar_en_presupuesto'] = false; } + + if ($this->request->getPost('tipo_encuadernacion') == null) { + $sanitizedData['tipo_encuadernacion'] = false; + } + + if ($this->request->getPost('servicio_encuadernacion') == null) { + $sanitizedData['servicio_encuadernacion'] = false; + } + $noException = true; if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index e45b298b..88f2db03 100755 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -18,12 +18,12 @@ class Test extends BaseController public function index() { echo '
';
-        var_dump($this->get_precio_tarifa(1,200,110,150,210, 8, 30)['precio_unidad']);
+        //var_dump($this->get_precio_tarifa(18,200,110,150,210, 115, 30));
         
         //$model = model('App\Models\Configuracion\ConfiguracionSistemaModel');
         //var_dump($this->init_presupuesto_encuadernacion(4, 1, 300, 100, 150, 210, 30) );
 
-        //var_dump($this->get_tarifa_enc(1, 100, 300, 150, 210));
+        var_dump($this->get_tarifa_enc(18, 200, 110, 150, 210));
         echo '
'; } diff --git a/ci4/app/Entities/Tarifas/TarifaEncuadernacionEntity.php b/ci4/app/Entities/Tarifas/TarifaEncuadernacionEntity.php index 9fa7fb51..f3c2f738 100755 --- a/ci4/app/Entities/Tarifas/TarifaEncuadernacionEntity.php +++ b/ci4/app/Entities/Tarifas/TarifaEncuadernacionEntity.php @@ -12,6 +12,8 @@ class TarifaEncuadernacionEntity extends \CodeIgniter\Entity\Entity "precio_min" => 0, "importe_fijo" => 0, "mostrar_en_presupuesto" => 1, + "tipo_encuadernacion" => 0, + "servicio_encuadernacion" => 0, "user_created_id" => 0, "user_updated_id" => 0, "is_deleted" => 0, @@ -23,6 +25,8 @@ class TarifaEncuadernacionEntity extends \CodeIgniter\Entity\Entity "precio_min" => "float", "importe_fijo" => "float", "mostrar_en_presupuesto" => "int", + "tipo_encuadernacion" => "int", + "servicio_encuadernacion" => "int", "user_created_id" => "int", "user_updated_id" => "int", "is_deleted" => "int", diff --git a/ci4/app/Language/es/Presupuestos.php b/ci4/app/Language/es/Presupuestos.php index 84b54617..685f1b3a 100755 --- a/ci4/app/Language/es/Presupuestos.php +++ b/ci4/app/Language/es/Presupuestos.php @@ -150,7 +150,9 @@ return [ 'servicioAcabado' => 'Servicio de acabado', 'servicioPreimpresion' => 'Servicio de preimpresión', - 'servicioEncuadernado' => 'Servicio de encuadernado', + 'servicioEncuadernado' => 'Servicio de encuadernación', + 'servicioEncuadernadoList' => 'Servicios de encuadernación', + 'servicioManipulado' => 'Servicio de manipulado', 'comentarios' => 'Comentarios', 'comentariosCliente' => 'Comentarios cliente', @@ -169,6 +171,8 @@ return [ 'precioTotal' => 'Precio total', 'serviciosEncDefault' => 'Servicios Enc. por defecto', 'tarifa' => 'Tarifa', + 'insertar' => 'Insertar', + 'no_disponible' => 'No disponible', 'validation' => [ @@ -184,6 +188,7 @@ return [ 'dimension' => 'La dimensión del libro tiene que ser mayor que 60mm', 'lineaDuplicada' => 'Ya existe ese tipo de linea en el presupuesto', 'errorRotColor' => 'Papeles y gramajes deben ser iguales en color y BN', + 'error_servicios_anadidos' => 'Hay servicios sin datos' ], diff --git a/ci4/app/Language/es/Tarifaencuadernacion.php b/ci4/app/Language/es/Tarifaencuadernacion.php index 8b3aa73b..0fcb2bd7 100755 --- a/ci4/app/Language/es/Tarifaencuadernacion.php +++ b/ci4/app/Language/es/Tarifaencuadernacion.php @@ -19,6 +19,8 @@ return [ 'tiradaMax' => 'Tirada Max', 'tiradaMin' => 'Tirada Min', 'mostrar_en_presupuesto' => 'Mostrar en presupuesto', + 'tipo_encuadernacion' => 'Tipo encuardernación', + 'servicio_encuadernacion' => 'Servicio encuardernación', 'updatedAt' => 'Actualizado en', 'userCreatedId' => 'ID Usuario \"Creado en\"', 'userUpdateId' => 'ID Usuario \"Actualizado en\"', diff --git a/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php b/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php index cd10f98a..0014d33f 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php @@ -70,6 +70,8 @@ class PresupuestoEncuadernacionesModel extends \App\Models\GoBaseModel 'tarifa_nombre'=> $tarifa_value[0]->tarifa_enc_nombre, 'precio_unidad'=> $result_data[0], 'total'=> $result_data[1], + 'proveedor' => $tarifa_value[0]->proveedor_nombre, + 'proveedor_id' => $tarifa_value[0]->proveedor_id, ]); } else{ @@ -77,8 +79,9 @@ class PresupuestoEncuadernacionesModel extends \App\Models\GoBaseModel (object)[ 'tarifa_id'=> $tarifa['tarifa_encuadernacion_id'], 'tarifa_nombre'=> $tarifa['tarifa_encuadernacion_nombre'], - 'precio_unidad'=> -1, - 'total'=> -1, + 'proveedor' => lang('Presupuestos.no_disponible'), + 'precio_unidad'=> 0, + 'total'=> 0, ]); } } @@ -106,13 +109,31 @@ class PresupuestoEncuadernacionesModel extends \App\Models\GoBaseModel public function getPrecioTarifa($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto, $proveedor_id, $POD){ $modelTarifa = model('App\Models\Tarifas\TarifaEncuadernacionModel'); - $tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacion($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto, $proveedor_id); + if($proveedor_id != -1) + $tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacion($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto, $proveedor_id); + else + $tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacion($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto); if (count($tarifa_value)>0) { $result_data = $this->calcularTarifa($tarifa_value[0], $paginas, $POD<$tirada?false:true); - return [ - 'precio_unidad'=> $result_data[0], - 'precio_total'=> $result_data[1], - ]; + $ret_array[] = (object)[ + 'tarifa_id'=> $tarifa_value[0]->tarifa_enc_id, + 'tarifa_nombre'=> $tarifa_value[0]->tarifa_enc_nombre, + 'precio_unidad'=> $result_data[0], + 'total'=> $result_data[1], + 'proveedor' => $tarifa_value[0]->proveedor_nombre, + 'proveedor_id' => $tarifa_value[0]->proveedor_id, + ]; + return $ret_array; + } + else{ + $ret_array[] = (object)[ + 'tarifa_id'=> $tarifa_encuadernacion_id, + 'tarifa_nombre'=> $modelTarifa->getNombreTarifaEncuadernacion($tarifa_encuadernacion_id)[0]->nombre, + 'proveedor' => lang('Presupuestos.no_disponible'), + 'precio_unidad'=> 0, + 'total'=> 0, + ]; + return $ret_array; } return []; } @@ -133,14 +154,71 @@ class PresupuestoEncuadernacionesModel extends \App\Models\GoBaseModel return [$precio_unidad, $total]; } + public function getIdFromTarifa($tarifa_id){ + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t1.id AS id" + ); + $builder->where('t1.tarifa_encuadernado_id', $tarifa_id); + return $builder; + } - public function delete_line($presupuesto_id){ + + public function deleteAllServicios($presupuesto_id){ + + $this->db + ->table($this->table . " t1") + ->where('presupuesto_id', $presupuesto_id) + ->delete(); + } + + public function deleteServiciosNotInArray($presupuesto_id, $tarifas_id){ $builder = $this->db - ->table($this->table . " t1") - ->where('t1.presupuesto_id', $presupuesto_id) - ->delete(); + ->table($this->table . " t1"); + $builder->where('presupuesto_id', $presupuesto_id); + foreach($tarifas_id as $id){ + $builder->where('tarifa_encuadernado_id !=', $id); + } + $builder->delete(); + } + + public function updateTarifas($presupuesto_id, $tarifas){ + + foreach($tarifas as $tarifa){ + + $proveedor = $tarifa->proveedor_id=='undefined'?'NULL':$tarifa->proveedor_id; + $builder = $this->db + ->table($this->table . " t1"); + $builder->select("id"); + $builder->where('presupuesto_id', $presupuesto_id); + $builder->where('tarifa_encuadernado_id', $tarifa->tarifa_id); + $result = $builder->get()->getResultObject(); + if(count($result)>0){ + $this->db + ->table($this->table . " t1") + ->where('presupuesto_id', $presupuesto_id) + ->where('tarifa_encuadernado_id', $tarifa->tarifa_id) + ->set('proveedor_id', $proveedor, false) + ->set('precio_unidad', $tarifa->precio_unidad) + ->set('precio_total', $tarifa->precio_total) + ->update(); + + + } + else{ + $this->db + ->table($this->table . " t1") + ->set('presupuesto_id', $presupuesto_id) + ->set('tarifa_encuadernado_id', $tarifa->tarifa_id) + ->set('proveedor_id', $proveedor, false) + ->set('precio_unidad', $tarifa->precio_unidad) + ->set('precio_total', $tarifa->precio_total) + ->insert(); + } + } } /** diff --git a/ci4/app/Models/Tarifas/TarifaEncuadernacionModel.php b/ci4/app/Models/Tarifas/TarifaEncuadernacionModel.php index d1bcef5c..1ce82779 100755 --- a/ci4/app/Models/Tarifas/TarifaEncuadernacionModel.php +++ b/ci4/app/Models/Tarifas/TarifaEncuadernacionModel.php @@ -17,6 +17,8 @@ class TarifaEncuadernacionModel extends \App\Models\GoBaseModel 1 => "t1.precio_min", 2 => "t1.importe_fijo", 3 => "t1.mostrar_en_presupuesto", + 4 => "t1.tipo_encuadernacion", + 5 => "t1.servicio_encuadernacion", ]; @@ -25,6 +27,8 @@ class TarifaEncuadernacionModel extends \App\Models\GoBaseModel "precio_min", "importe_fijo", "mostrar_en_presupuesto", + "tipo_encuadernacion", + "servicio_encuadernacion", "deleted_at", "is_deleted", "user_created_id", @@ -82,7 +86,8 @@ class TarifaEncuadernacionModel extends \App\Models\GoBaseModel public function getResource(string $search = "") { $builder = $this->db->table($this->table . " t1")->select("t1.id AS id, t1.nombre AS nombre, - t1.precio_min AS precio_min, t1.importe_fijo AS importe_fijo, t1.mostrar_en_presupuesto AS mostrar_en_presupuesto"); + t1.precio_min AS precio_min, t1.importe_fijo AS importe_fijo, t1.mostrar_en_presupuesto AS mostrar_en_presupuesto, + t1.tipo_encuadernacion AS tipo_encuadernacion, t1.servicio_encuadernacion AS servicio_encuadernacion"); //JJO $builder->where("t1.is_deleted", 0); @@ -106,7 +111,23 @@ class TarifaEncuadernacionModel extends \App\Models\GoBaseModel "t1.id as value, t1.nombre AS label" ) ->where("t1.is_deleted", 0) - ->where("t1.mostrar_en_presupuesto", 1); + ->where("t1.servicio_encuadernacion", 1); + + return $builder->orderBy("t1.nombre", "asc")->get()->getResultObject(); + } + + public function getNombreTarifaEncuadernacion($id=-1) + { + /* + Todos los servicios de encuadernacion activas que se pueden usar en presupuestos + */ + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t1.nombre AS nombre" + ) + ->where("t1.id", $id) + ->where("t1.is_deleted", 0); return $builder->orderBy("t1.nombre", "asc")->get()->getResultObject(); } @@ -127,7 +148,7 @@ class TarifaEncuadernacionModel extends \App\Models\GoBaseModel ->join("tarifa_encuadernacion_dimensiones t4", "t3.dimensiones_id = t4.id", "left") ->join("lg_proveedores t5", "t2.proveedor_id = t5.id", "left") ->where("t1.is_deleted", 0) - ->where("t1.mostrar_en_presupuesto", 1) + //->where("t1.mostrar_en_presupuesto", 1) ->where("t2.is_deleted", 0) ->where("t3.is_deleted", 0); 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 11607afc..894b0d0c 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 @@ -315,4 +315,14 @@ $('#papelFormatoAlto').on('change', function (e){ alto_libro = getDimensionLibro().alto; }) +$("#solapas").on("click", function () { + var e = document.getElementById('div_solapas_ancho'); + if (document.getElementById('solapas').checked) { + e.style.display = "flex"; + } + else { + e.style.display = "none"; + } + get_tarifas_enc('default'); +}); endSection() ?> 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 2f5e9c79..705cf4c3 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 @@ -94,6 +94,10 @@
+
+
+
+
@@ -108,27 +112,29 @@ - - - - tarifa_encuadernado_id ?> - nombre ?> - - precio_unidad ?> - - - id ?> - - + + +
+
+ +
+
+ +
+ +
@@ -167,11 +173,27 @@ id=-1 } - const actionBtns = function(data) { - return ` - - `; - }; + + + // 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 table = ""; + if($(this).closest('table').attr('id').includes('tableOfServiciosEncuadernacion')){ + table = "tableOfServiciosEncuadernacion"; + } + else{ + table = ""; + } + + document.getElementById(table).deleteRow(rowId); + + check_serv_enc_error() + + }); + endSection() ?> @@ -243,29 +265,7 @@ ); } ); - // Delete row - $(document).on('click', '.btn-delete', function(e) { - $(".btn-remove").attr('data-id', $(this).attr('data-id')); - }); - - $(document).on('click', '.btn-remove', function(e) { - const dataId = $(this).attr('data-id'); - const row = $(this).closest('tr'); - if ($.isNumeric(dataId)) { - $.ajax({ - url: `/serviciosacabados/delete/${dataId}`, - method: 'GET', - }).done((data, textStatus, jqXHR) => { - $('#confirm2delete').modal('toggle'); - theTable.clearPipeline(); - theTable.row($(row)).invalidate().draw(); - popSuccessAlert(data.msg ?? jqXHR.statusText); - }).fail((jqXHR, textStatus, errorThrown) => { - popErrorAlert(jqXHR.responseJSON.messages.error) - }) - } - }); - + var theTable = $('#tableOfServiciosAcabado').DataTable( { draw: 1, serverSide: true, @@ -342,12 +342,37 @@ // Generación de la lista de servicios de acabado (id, nombre) const encuadernadosList = ; - function init_servicio_encuadernado(){ - $('.proveedor_enc').each(function() { - - const tarifa_id = this.id.split('_')[2] - $('#' + this.id).select2({ + function init_servicio_encuadernado(){ + const serviciosencuadernadosList = ; + + $('#add_servicio_enc_list').select2({ + allowClear: false, + minimumResultsForSearch: -1, + placeholder: '' + }) + + serviciosencuadernadosList.forEach((element) =>{ + + const tarifa_id = element.tarifa_encuadernado_id + var proveedor_nombre = element.proveedor===null?'': element.proveedor + + $('#tableOfServiciosEncuadernacion tr:last').after( + ''+ + '' + element.tarifa_encuadernado_id + '' + + '' + element.nombre + '' + + '' + + '' + parseFloat(element.precio_unidad).toFixed(2) + '' + + '' + + ''+ + '' + ); + + $('#proveedor_enc_' + element.tarifa_encuadernado_id).select2({ allowClear: false, minimumResultsForSearch: -1, ajax: { @@ -383,13 +408,12 @@ cache: true } }); + $('#proveedor_enc_' + element.tarifa_encuadernado_id).on('change', proveedor_enc_event) }); - - + check_serv_enc_error() } - $('.proveedor_enc').on('change', function(){ - + function proveedor_enc_event(){ const dimension = getDimensionLibro(); if(parseInt($('#tirada').val())+parseInt($('#merma').val())>0){ var tirada = parseInt($('#tirada').val())+parseInt($('#merma').val()) @@ -415,8 +439,8 @@ data: datos, success: function (data) { - $('#precio_unidad_' + datos.tarifa_encuadernacion_id).text(parseFloat(data.values.precio_unidad).toFixed(2)) - $('#precio_total_' + datos.tarifa_encuadernacion_id).val(parseFloat(data.values.precio_total).toFixed(2)) + $('#precio_unidad_' + datos.tarifa_encuadernacion_id).text(parseFloat(data.values[0].precio_unidad).toFixed(2)) + $('#precio_total_' + datos.tarifa_encuadernacion_id).val(parseFloat(data.values[0].total).toFixed(2)) yeniden(data.); return true; }, @@ -425,12 +449,194 @@ } }) return false; - }) - - + } + function check_serv_enc_error(){ + + var htmlString = ''; + + if($('#tableOfServiciosEncuadernacion tr > td:contains(' + '' + ')').length > 0){ + htmlString = ` + `; + } + $('#serv-enc-error').html(htmlString) + } + + + function get_tarifas_enc(tipo=null, tarifa_id = -1){ + const dimension = getDimensionLibro(); + + if(parseInt($('#tirada').val())+parseInt($('#merma').val())>0){ + var tirada = parseInt($('#tirada').val())+parseInt($('#merma').val()) + } + else{ + var tirada = 0 + } + + var datos = { + tarifa_encuadernacion_id : tarifa_id, + solapas: $('#solapas').is(':checked')?1:0, + paginas: parseInt($('#paginas').val())>0?parseInt($('#paginas').val()):0, + tirada: tirada, + ancho: dimension.ancho, + alto: dimension.alto, + POD: POD, + : v + }; + + if(tipo != null) + datos['tipo'] = tipo; + + $.ajax({ + type: "POST", + url: '', + data: datos, + success: function (data) { + + if(tipo=='default') + $("#tableOfServiciosEncuadernacion").find("tr:gt(0)").remove(); + data.values.forEach((row) => { + $('#tableOfServiciosEncuadernacion tr:last').after( + ''+ + '' + row.tarifa_id + '' + + '' + row.tarifa_nombre + '' + + '' + + '' + row.precio_unidad.toFixed(2) + '' + + '' + + ''+ + '' + ); + + $('#proveedor_enc_' + row.tarifa_id).select2({ + allowClear: false, + minimumResultsForSearch: -1, + ajax: { + url: '', + type: 'post', + dataType: 'json', + + data: function (params) { + + if(parseInt($('#tirada').val())+parseInt($('#merma').val())>0){ + var tirada = parseInt($('#tirada').val())+parseInt($('#merma').val()) + } + else{ + var tirada = 0 + } + return { + tarifa_id: row.tarifa_id, + paginas: parseInt($('#paginas').val())>0?parseInt($('#paginas').val()):0, + tirada: tirada, + ancho: ancho_libro, + alto: alto_libro, + searchtxt: params.term, // search term + : v + }; + }, + delay: 60, + processResults: function (response) { + yeniden(response.); + return { + results: response.menu + }; + }, + cache: true + } + }); + + $('#proveedor_enc_' + row.tarifa_id).on('change', proveedor_enc_event) + + + }); + + check_serv_enc_error() + yeniden(data.); + return true; + }, + error: function(e){ + return false; + } + }) + return false; + } + + + $('#serv_enc_default').on('click', function(){ + get_tarifas_enc('default'); + }) + + $('#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("Ese servicio ya existe", 'serv-enc-alert') + } + } + check_serv_enc_error() + }) + + + function save_servicios(){ + var datos = [] + $("#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() + break + case 4: + values['precio_total'] = $(this).children(":first").val() + break + } + }) + if(Object.keys(values).length>0) + datos.push(values) + }) + + const domain = window.location.origin + + fetch(domain + "/presupuestos/presupuestoencuadernaciones/edit/" + id , { + method: "POST", + body: JSON.stringify({ + datos: datos, + : v + }), + headers: { + "Content-type": "application/json; charset=UTF-8" + } + }) + .then(response => response.json()) + .then(data => { + yeniden(data.); + }); + + } + init_servicio_encuadernado() + endSection() ?> diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js index f7a77ad2..42722358 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js @@ -86,16 +86,6 @@ $('#paginas').on("change", function () { } }); -$("#solapas").on("click", function () { - var e = document.getElementById('div_solapas_ancho'); - if (document.getElementById('solapas').checked) { - e.style.display = "flex"; - } - else { - e.style.display = "none"; - } -}); - $('#compRetractilado').on("change", function () { 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 47f5c8da..c2f40a50 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 @@ -115,6 +115,7 @@ else{ $('#presupuestoForm').on( "submit", function( event ) { event.preventDefault(); + save_servicios(); $.when(fill_bbdd_from_lp(id).then(function (data, textStatus, jqXHR){ generateCompJSON() form = $('#presupuestoForm').serialize() diff --git a/ci4/app/Views/themes/backend/vuexy/form/tarifas/encuadernacion/_tarifaEncuadernacionFormItems.php b/ci4/app/Views/themes/backend/vuexy/form/tarifas/encuadernacion/_tarifaEncuadernacionFormItems.php index 89e34635..7aadb56f 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/tarifas/encuadernacion/_tarifaEncuadernacionFormItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/tarifas/encuadernacion/_tarifaEncuadernacionFormItems.php @@ -23,14 +23,38 @@
-
+
-
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/ci4/app/Views/themes/backend/vuexy/form/tarifas/encuadernacion/viewTarifaEncuadernacionList.php b/ci4/app/Views/themes/backend/vuexy/form/tarifas/encuadernacion/viewTarifaEncuadernacionList.php index c053adf8..45bc779a 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/tarifas/encuadernacion/viewTarifaEncuadernacionList.php +++ b/ci4/app/Views/themes/backend/vuexy/form/tarifas/encuadernacion/viewTarifaEncuadernacionList.php @@ -20,6 +20,8 @@ + + @@ -91,12 +93,14 @@ { 'data': 'precio_min' }, { 'data': 'importe_fijo' }, { 'data': 'mostrar_en_presupuesto' }, + { 'data': 'tipo_encuadernacion' }, + { 'data': 'servicio_encuadernacion' }, { 'data': actionBtns } ] }); theTable.on( 'draw.dt', function () { - const boolCols = [3]; + const boolCols = [3,4,5]; for (let coln of boolCols) { theTable.column(coln, { page: 'current' }).nodes().each( function (cell, i) { cell.innerHTML = cell.innerHTML == '1' ? '' : '';