diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index 8af1cf19..3f27da17 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -260,6 +260,18 @@ $routes->group('maquinaspapelesimpresion', ['namespace' => 'App\Controllers\Conf $routes->resource('maquinastarifasimpresion', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Maquinastarifasimpresion', 'except' => 'show,new,create,update']); +$routes->group('maquinadefecto', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { + $routes->get('', 'Maquinadefecto::index', ['as' => 'maquinaPorDefectoList']); + $routes->get('index', 'Maquinadefecto::index', ['as' => 'maquinaPorDefectoIndex']); + $routes->get('list', 'Maquinadefecto::index', ['as' => 'maquinaPorDefectoList2']); + $routes->get('add', 'Maquinadefecto::add', ['as' => 'newMaquinaPorDefecto']); + $routes->post('add', 'Maquinadefecto::add', ['as' => 'createMaquinaPorDefecto']); + $routes->get('edit/(:num)', 'Maquinadefecto::edit/$1', ['as' => 'editMaquinaPorDefecto']); + $routes->post('edit/(:num)', 'Maquinadefecto::edit/$1', ['as' => 'updateMaquinaPorDefecto']); + $routes->get('delete/(:num)', 'Maquinadefecto::delete/$1', ['as' => 'deleteMaquinaPorDefecto']); + $routes->post('allmenuitems', 'Maquinadefecto::allItemsSelect', ['as' => 'select2ItemsOfMaquinasPorDefecto']); + $routes->post('menuitems', 'Maquinadefecto::menuItems', ['as' => 'menuItemsOfMaquinasPorDefecto']); +}); $routes->group('profile', ['namespace' => 'App\Controllers'], function ($routes) { $routes->get('', 'Profile::index', ['as' => 'profileList']); diff --git a/ci4/app/Entities/Configuracion/MaquinaDefectoEntity.php b/ci4/app/Entities/Configuracion/MaquinaDefectoEntity.php new file mode 100644 index 00000000..b98c83ba --- /dev/null +++ b/ci4/app/Entities/Configuracion/MaquinaDefectoEntity.php @@ -0,0 +1,36 @@ + null, + "tipo" => null, + "ancho_min" => 0.0, + "ancho_max" => 0.0, + "alto_min" => 0.0, + "alto_max" => 0.0, + "tirada_min" => 1, + "tirada_max" => 10000, + "maquina_id" => null, + "user_created_id" => 0, + "user_updated_id" => 0, + "is_deleted" => 0, + "created_at" => null, + "updated_at" => null, + ]; + protected $casts = [ + "ancho_min" => "float", + "ancho_max" => "float", + "alto_min" => "float", + "alto_max" => "float", + "tirada_min" => "int", + "tirada_max" => "int", + "maquina_id" => "int", + "user_created_id" => "int", + "user_updated_id" => "int", + "is_deleted" => "int", + ]; +} diff --git a/ci4/app/Models/Configuracion/MaquinaDefectoModel.php b/ci4/app/Models/Configuracion/MaquinaDefectoModel.php new file mode 100644 index 00000000..58e0fe12 --- /dev/null +++ b/ci4/app/Models/Configuracion/MaquinaDefectoModel.php @@ -0,0 +1,118 @@ + [ + "label" => "MaquinaPorDefectoes.altoMax", + "rules" => "required|decimal", + ], + "alto_min" => [ + "label" => "MaquinaPorDefectoes.altoMin", + "rules" => "required|decimal", + ], + "ancho_max" => [ + "label" => "MaquinaPorDefectoes.anchoMax", + "rules" => "required|decimal", + ], + "ancho_min" => [ + "label" => "MaquinaPorDefectoes.anchoMin", + "rules" => "required|decimal", + ], + "tipo" => [ + "label" => "MaquinaPorDefectoes.tipo", + "rules" => "required|in_list[bn,bnhq,color,portada,cubierta,rotativa]", + ], + "tirada_max" => [ + "label" => "MaquinaPorDefectoes.tiradaMax", + "rules" => "required|integer", + ], + "tirada_min" => [ + "label" => "MaquinaPorDefectoes.tiradaMin", + "rules" => "required|integer", + ], + ]; + + protected $validationMessages = [ + "alto_max" => [ + "decimal" => "MaquinaPorDefectoes.validation.alto_max.decimal", + "required" => "MaquinaPorDefectoes.validation.alto_max.required", + ], + "alto_min" => [ + "decimal" => "MaquinaPorDefectoes.validation.alto_min.decimal", + "required" => "MaquinaPorDefectoes.validation.alto_min.required", + ], + "ancho_max" => [ + "decimal" => "MaquinaPorDefectoes.validation.ancho_max.decimal", + "required" => "MaquinaPorDefectoes.validation.ancho_max.required", + ], + "ancho_min" => [ + "decimal" => "MaquinaPorDefectoes.validation.ancho_min.decimal", + "required" => "MaquinaPorDefectoes.validation.ancho_min.required", + ], + "tipo" => [ + "in_list" => "MaquinaPorDefectoes.validation.tipo.in_list", + "required" => "MaquinaPorDefectoes.validation.tipo.required", + ], + "tirada_max" => [ + "integer" => "MaquinaPorDefectoes.validation.tirada_max.integer", + "required" => "MaquinaPorDefectoes.validation.tirada_max.required", + ], + "tirada_min" => [ + "integer" => "MaquinaPorDefectoes.validation.tirada_min.integer", + "required" => "MaquinaPorDefectoes.validation.tirada_min.required", + ], + ]; + + public function findAllWithMaquinas(string $selcols = "*", int $limit = null, int $offset = 0) + { + $sql = + "SELECT t1." . + $selcols . + ", t2.nombre AS maquina FROM " . + $this->table . + " t1 LEFT JOIN lg_maquinas t2 ON t1.maquina_id = t2.id"; + if (!is_null($limit) && intval($limit) > 0) { + $sql .= " LIMIT " . $limit; + } + + if (!is_null($offset) && intval($offset) > 0) { + $sql .= " OFFSET " . $offset; + } + + $query = $this->db->query($sql); + $result = $query->getResultObject(); + return $result; + } +} diff --git a/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/_maquinaPorDefectoFormItems.php b/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/_maquinaPorDefectoFormItems.php new file mode 100644 index 00000000..aa62aae8 --- /dev/null +++ b/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/_maquinaPorDefectoFormItems.php @@ -0,0 +1,80 @@ +
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+
+ + +
+ +
+ +
\ No newline at end of file diff --git a/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/viewMaquinaPorDefectoForm.php b/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/viewMaquinaPorDefectoForm.php new file mode 100644 index 00000000..d31358aa --- /dev/null +++ b/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/viewMaquinaPorDefectoForm.php @@ -0,0 +1,64 @@ +include("Themes/_commonPartialsBs/select2bs5") ?> +extend("Themes/" . config("Basics")->theme["name"] . "/AdminLayout/defaultLayout") ?> +section("content") ?> +
+
+
+
+

+
+
+ +
+ + getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?> + +
+ +
+
+
+
+endSection() ?> + + +section("additionalInlineJs") ?> + + + $('#maquinaId').select2({ + theme: 'bootstrap-5', + allowClear: false, + ajax: { + url: '', + type: 'post', + dataType: 'json', + + data: function (params) { + return { + id: 'id', + text: 'nombre', + searchTerm: params.term, + : v + }; + }, + delay: 60, + processResults: function (response) { + + yeniden(response.); + + return { + results: response.menu + }; + }, + + cache: true + } + }); + + +endSection() ?> diff --git a/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/viewMaquinaPorDefectoList.php b/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/viewMaquinaPorDefectoList.php new file mode 100644 index 00000000..0c2c4482 --- /dev/null +++ b/ci4/app/Views/themes/backend/vuexy/form/configuracion/maquinas/viewMaquinaPorDefectoList.php @@ -0,0 +1,138 @@ +include('Themes/_commonPartialsBs/select2bs5') ?> +include('Themes/_commonPartialsBs/datatables') ?> +extend('Themes/'.config('Basics')->theme['name'].'/AdminLayout/defaultLayout') ?> +section('content'); ?> +
+
+ +
+
+

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ id), lang('Basic.global.edit'), ['class'=>'btn btn-sm btn-warning btn-edit me-1', 'data-id'=>$item->id,]); ?> + 'btn btn-sm btn-danger btn-delete ms-1', 'data-href'=>route_to('deleteMaquinaPorDefecto', $item->id), 'data-bs-toggle'=>'modal', 'data-bs-target'=>'#confirm2delete']); ?> + + id ?> + + tipo) ?> + + ancho_min) ?> + + ancho_max) ?> + + alto_min) ?> + + alto_max) ?> + + tirada_min) ?> + + tirada_max) ?> + + maquina) ?> + + id), lang('Basic.global.edit'), ['class'=>'btn btn-sm btn-warning btn-edit me-1', 'data-id'=>$item->id,]); ?> + 'btn btn-sm btn-danger btn-delete ms-1', 'data-href'=>route_to('deleteMaquinaPorDefecto', $item->id), 'data-bs-toggle'=>'modal', 'data-bs-target'=>'#confirm2delete']); ?> +
+
+ +
+
+
+ +endSection() ?> + + +section('css') ?> + +endSection() ?> + + +section('additionalExternalJs') ?> + + + + + + + + + + +endSection() ?> + +section('additionalInlineJs') ?> + + const lastColNr2 = $(".using-exportable-data-table").find("tr:first th").length - 1; + theTable = $('.using-exportable-data-table').DataTable({ + "responsive": true, + "paging": true, + "lengthMenu": [ 5, 10, 25, 50, 75, 100, 250, 500, 1000, 2500 ], + "pageLength": 10, + "lengthChange": true, + "searching": true, + "ordering": true, + "info": true, + "dom": 'lfrtipB', // 'lfBrtip', // you can try different layout combinations by uncommenting one or the other + // "dom": '<"top"lf><"clear">rt<"bottom"ipB><"clear">', // remember to comment this line if you uncomment the above + "buttons": [ + 'copy', 'csv', 'excel', 'print', { + extend: 'pdfHtml5', + orientation: 'landscape', + pageSize: 'A4' + } + ], + "autoWidth": true, + "scrollX": true, + "stateSave": true, + "language": { + url: "/assets/dt/languages[$currentLocale] ?? config('Basics')->i18n ?>.json" + }, + "columnDefs": [ + { + orderable: false, + searchable: false, + targets: [0,lastColNr2] + } + ] + }); +endSection() ?> \ No newline at end of file