realizada la lista

This commit is contained in:
2025-02-24 20:59:21 +01:00
parent c1cae0fcf7
commit 4601b15abe
12 changed files with 226 additions and 27 deletions

View File

@ -41,10 +41,18 @@ const SK_PERMISSION_MATRIX = [
"tarifa-acabado.edit", "tarifa-acabado.edit",
"tarifa-acabado.delete", "tarifa-acabado.delete",
"tarifa-acabado.menu", "tarifa-acabado.menu",
"servicio-acabado.create",
"servicio-acabado.edit",
"servicio-acabado.delete",
"servicio-acabado.menu",
"tarifa-encuadernacion.create", "tarifa-encuadernacion.create",
"tarifa-encuadernacion.edit", "tarifa-encuadernacion.edit",
"tarifa-encuadernacion.delete", "tarifa-encuadernacion.delete",
"tarifa-encuadernacion.menu", "tarifa-encuadernacion.menu",
"tarifa-extra.create",
"tarifa-extra.edit",
"tarifa-extra.delete",
"tarifa-extra.menu",
"tarifa-envio.create", "tarifa-envio.create",
"tarifa-envio.edit", "tarifa-envio.edit",
"tarifa-envio.delete", "tarifa-envio.delete",
@ -89,7 +97,6 @@ const SK_PERMISSION_MATRIX = [
"roles-permisos.edit", "roles-permisos.edit",
"roles-permisos.delete", "roles-permisos.delete",
"roles-permisos.menu", "roles-permisos.menu",
"tickets.create",
"tickets.edit", "tickets.edit",
"tickets.menu", "tickets.menu",
], ],
@ -129,7 +136,6 @@ const SK_PERMISSION_MATRIX = [
"direcciones.menu", "direcciones.menu",
"presupuesto.create", "presupuesto.create",
"presupuesto.edit", "presupuesto.edit",
"presupuesto.delete",
"presupuesto.menu", "presupuesto.menu",
"presupuesto-cliente.create", "presupuesto-cliente.create",
"presupuesto-cliente.edit", "presupuesto-cliente.edit",
@ -221,10 +227,6 @@ const SK_PERMISSION_MATRIX = [
"tarifa-encuadernacion.edit", "tarifa-encuadernacion.edit",
"tarifa-encuadernacion.delete", "tarifa-encuadernacion.delete",
"tarifa-encuadernacion.menu", "tarifa-encuadernacion.menu",
"tarifa-extra.create",
"tarifa-extra.edit",
"tarifa-extra.delete",
"tarifa-extra.menu",
"tarifa-envio.create", "tarifa-envio.create",
"tarifa-envio.edit", "tarifa-envio.edit",
"tarifa-envio.delete", "tarifa-envio.delete",
@ -269,7 +271,6 @@ const SK_PERMISSION_MATRIX = [
"roles-permisos.edit", "roles-permisos.edit",
"roles-permisos.delete", "roles-permisos.delete",
"roles-permisos.menu", "roles-permisos.menu",
"tickets.create",
"tickets.edit", "tickets.edit",
"tickets.menu", "tickets.menu",
], ],

View File

@ -41,6 +41,10 @@ const SK_PERMISSIONS = [
'tarifa-acabado.edit' => 'Can edit', 'tarifa-acabado.edit' => 'Can edit',
'tarifa-acabado.delete' => 'Can delete', 'tarifa-acabado.delete' => 'Can delete',
'tarifa-acabado.menu' => 'Menu shall be visualize', 'tarifa-acabado.menu' => 'Menu shall be visualize',
'servicio-acabado.create' => 'Can create',
'servicio-acabado.edit' => 'Can edit',
'servicio-acabado.delete' => 'Can delete',
'servicio-acabado.menu' => 'Menu shall be visualize',
'tarifa-encuadernacion.create' => 'Can create', 'tarifa-encuadernacion.create' => 'Can create',
'tarifa-encuadernacion.edit' => 'Can edit', 'tarifa-encuadernacion.edit' => 'Can edit',
'tarifa-encuadernacion.delete' => 'Can delete', 'tarifa-encuadernacion.delete' => 'Can delete',
@ -93,7 +97,6 @@ const SK_PERMISSIONS = [
'roles-permisos.edit' => 'Can edit', 'roles-permisos.edit' => 'Can edit',
'roles-permisos.delete' => 'Can delete', 'roles-permisos.delete' => 'Can delete',
'roles-permisos.menu' => 'Menu shall be visualize', 'roles-permisos.menu' => 'Menu shall be visualize',
'tickets.create' => 'Can create',
'tickets.edit' => 'Can edit', 'tickets.edit' => 'Can edit',
'tickets.menu' => 'Menu shall be visualize', 'tickets.menu' => 'Menu shall be visualize',
]; ];

View File

@ -209,6 +209,18 @@ $routes->group('tarifasmanipulado', ['namespace' => 'App\Controllers\Tarifas'],
$routes->resource('tarifasmanipulado', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'Tarifasmanipulado', 'except' => 'show,new,create,update']); $routes->resource('tarifasmanipulado', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'Tarifasmanipulado', 'except' => 'show,new,create,update']);
$routes->group('serviciosacabado', ['namespace' => 'App\Controllers\Tarifas\Acabados'], function ($routes) {
$routes->get('', 'ServiciosAcabado::index', ['as' => 'serviciosAcabadoList']);
$routes->get('add', 'ServiciosAcabado::add', ['as' => 'newServicioAcabado']);
$routes->post('add', 'ServiciosAcabado::add', ['as' => 'createServicioAcabado']);
$routes->get('edit/(:num)', 'ServiciosAcabado::edit/$1', ['as' => 'editServicioAcabado']);
$routes->post('edit/(:num)', 'ServiciosAcabado::edit/$1', ['as' => 'updateServicioAcabado']);
$routes->post('edit/(:num)', 'ServiciosAcabado::edit/$1', ['as' => 'updateServicioAcabado']);
$routes->get('datatable', 'ServiciosAcabado::datatable');
});
$routes->resource('tarifasmanipulado', ['namespace' => 'App\Controllers\Tarifas\Acabados', 'controller' => 'ServiciosAcabado', 'except' => 'show,new,create,update']);
$routes->group('tarifamanipuladolineas', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) { $routes->group('tarifamanipuladolineas', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) {
$routes->get('', 'Tarifamanipuladolineas::index', ['as' => 'tarifaManipuladoLineaList']); $routes->get('', 'Tarifamanipuladolineas::index', ['as' => 'tarifaManipuladoLineaList']);
$routes->get('add', 'Tarifamanipuladolineas::add', ['as' => 'newTarifaManipuladoLinea']); $routes->get('add', 'Tarifamanipuladolineas::add', ['as' => 'newTarifaManipuladoLinea']);

View File

@ -4,14 +4,14 @@ namespace App\Controllers\Tarifas\Acabados;
use App\Controllers\BaseResourceController; use App\Controllers\BaseResourceController;
use App\Entities\Tarifas\Acabados\ServicioAcabadoEntity; use App\Entities\Tarifas\Acabados\ServicioAcabadoEntity;
use App\Models\Collection; use App\Models\Tarifas\Acabados\ServicioAcabadoModel;
use App\Models\Tarifas\Acabados\ServiciosAcabadoModel; use CodeIgniter\I18n\Time;
use Hermawan\DataTables\DataTable;
class ServiciosAcabado extends BaseResourceController
class TarifaAcabados extends BaseResourceController
{ {
protected $modelName = ServicioAcabadoEntity::class; protected $modelName = ServicioAcabadoModel::class;
protected $format = 'json'; protected $format = 'json';
protected static $singularObjectName = 'Servicio Acabado'; protected static $singularObjectName = 'Servicio Acabado';
@ -23,7 +23,7 @@ class TarifaAcabados extends BaseResourceController
protected static $viewPath = 'themes/vuexy/form/tarifas/acabado/'; protected static $viewPath = 'themes/vuexy/form/tarifas/acabado/';
protected $indexRoute = 'servicioAcabadoList'; protected $indexRoute = 'serviciosAcabadoList';
public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger) public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger)
@ -36,7 +36,7 @@ class TarifaAcabados extends BaseResourceController
// Se indica el flag para los ficheros borrados // Se indica el flag para los ficheros borrados
$this->delete_flag = 1; $this->delete_flag = 1;
$this->viewData = ['usingServerSideDataTable' => true]; //$this->viewData = ['usingServerSideDataTable' => true];
// Breadcrumbs // Breadcrumbs
$this->viewData['breadcrumb'] = [ $this->viewData['breadcrumb'] = [
@ -44,6 +44,7 @@ class TarifaAcabados extends BaseResourceController
['title' => lang("App.menu_Servicioacabado"), 'route' => site_url('tarifas/acabados'), 'active' => true] ['title' => lang("App.menu_Servicioacabado"), 'route' => site_url('tarifas/acabados'), 'active' => true]
]; ];
helper("time");
parent::initController($request, $response, $logger); parent::initController($request, $response, $logger);
} }
@ -62,7 +63,21 @@ class TarifaAcabados extends BaseResourceController
$viewData = array_merge($this->viewData, $viewData); // merge any possible values from the parent controller class $viewData = array_merge($this->viewData, $viewData); // merge any possible values from the parent controller class
return view(static::$viewPath . 'viewServicioAcabadoList', $viewData); return view(static::$viewPath . 'viewServiciosAcabadoList', $viewData);
}
public function datatable(){
$model = model(ServicioAcabadoModel::class);
$q = $model->getDatatableQuery();
//return $this->response->setJSON($q->get());
return DataTable::of($q)
->add("action", fn($q) => $q->id)
->edit(
"updated_at",
fn($q) => Time::createFromFormat("Y-m-d H:i:s",$q->updated_at)->format("d/m/Y")
)
->toJson(returnAsObject: true);
} }
} }

View File

@ -17,11 +17,6 @@ class CreateServiciosAcabadoTable extends Migration
'unsigned' => true, 'unsigned' => true,
'auto_increment' => true, 'auto_increment' => true,
], ],
'tarifa_id' => [
'type' => 'INT',
'constraint' => 11,
'unsigned' => true,
],
'nombre' =>[ 'nombre' =>[
'type' => 'VARCHAR', 'type' => 'VARCHAR',
'constraint' => 100, 'constraint' => 100,
@ -31,6 +26,18 @@ class CreateServiciosAcabadoTable extends Migration
'type' => 'TEXT', 'type' => 'TEXT',
'null' => true, 'null' => true,
], ],
'acabado_cubierta' => [
'type' => 'BOOLEAN',
'default' => false,
],
'acabado_sobrecubierta' => [
'type' => 'BOOLEAN',
'default' => false,
],
'mostrar_en_presupuesto_cliente' => [
'type' => 'BOOLEAN',
'default' => true,
],
'user_updated_id' => [ 'user_updated_id' => [
'type' => 'INT', 'type' => 'INT',
'constraint' => 11, 'constraint' => 11,

View File

@ -797,6 +797,7 @@ return [
"menu_tarifamanipulado" => "Manipulado", "menu_tarifamanipulado" => "Manipulado",
"menu_tarifaencuadernacion" => "Encuadernación", "menu_tarifaencuadernacion" => "Encuadernación",
"menu_tarifapapelcompra" => "Papel compra", "menu_tarifapapelcompra" => "Papel compra",
"menu_serviciosAcabado" => "Servicios acabado",
"menu_tarifaacabado" => "Acabado", "menu_tarifaacabado" => "Acabado",
"menu_tarifapapeldefecto" => "Papel defecto", "menu_tarifapapeldefecto" => "Papel defecto",
"menu_tarifaenvio" => "Envío", "menu_tarifaenvio" => "Envío",

View File

@ -38,6 +38,7 @@ return [
'tarifaPreimpresionSection' => 'Tarifas de preimpresión', 'tarifaPreimpresionSection' => 'Tarifas de preimpresión',
'tarifaManipuladoSection' => 'Tarifas de manipulado', 'tarifaManipuladoSection' => 'Tarifas de manipulado',
'tarifaAcabadoSection' => 'Tarifas de acabado', 'tarifaAcabadoSection' => 'Tarifas de acabado',
'servicioAcabadoSection' => 'Servicios de acabado',
'tarifaEncuadernacionSection' => 'Tarifas de encuadernación', 'tarifaEncuadernacionSection' => 'Tarifas de encuadernación',
'tarifaEnvioSection' => 'Tarifas de envio', 'tarifaEnvioSection' => 'Tarifas de envio',
'tarifaExtraSection' => 'Tarifas extra', 'tarifaExtraSection' => 'Tarifas extra',

View File

@ -10,15 +10,16 @@ return [
'comentarios' => 'Comentarios', 'comentarios' => 'Comentarios',
'mostrar_en_presupuesto_cliente' => 'Mostrar en presupuesto (cliente)', 'mostrar_en_presupuesto_cliente' => 'Mostrar en presupuesto (cliente)',
'serviciosacabado' => 'Servicios Acabado', 'serviciosacabado' => 'Servicios Acabado',
'servicioacabado' => 'Servicio Acabado',
'tarifasacabado' => 'Tarifas Acabado', 'tarifasacabado' => 'Tarifas Acabado',
"servicio_cubierta" => "Acabado cubierta", "servicio_cubierta" => "Servicio cubierta",
"servicio_sobrecubierta" => "Acabado sobrecubierta", "servicio_sobrecubierta" => "Servicio sobrecubierta",
'tarifaacabado' => 'Tarifa Acabado', 'tarifaacabado' => 'Tarifa Acabado',
'servicioscabadoList' => 'Lista Servicios Acabado', 'servicioscabadoList' => 'Lista Servicios Acabado',
'updatedAt' => 'Actualizado en', 'updatedAt' => 'Actualizado en',
'createdAt' => 'Creado en', 'createdAt' => 'Creado en',
'deletedAt' => 'Borrado en', 'deletedAt' => 'Borrado en',
'userUpdateId' => 'ID Usuario "Actualizado en"', 'userUpdateId' => 'Modificado por',
'validation' => [ 'validation' => [
'nombre' => [ 'nombre' => [
'max_length' => 'El campo {field} no puede exceder {param} caracteres en longitud.', 'max_length' => 'El campo {field} no puede exceder {param} caracteres en longitud.',

View File

@ -1,17 +1,23 @@
<?php <?php
namespace App\Models\Tarifas\Acabados; namespace App\Models\Tarifas\Acabados;
use CodeIgniter\Database\BaseBuilder;
use CodeIgniter\Model; use CodeIgniter\Model;
class ServiciosAcabadoModel extends Model class ServicioAcabadoModel extends Model
{ {
protected $table = 'servicios_acabado'; protected $table = 'servicios_acabado';
protected $primaryKey = 'id'; protected $primaryKey = 'id';
protected $useSoftDeletes = true; protected $useSoftDeletes = true;
protected $allowedFields = ['tarifa_id', 'nombre', 'comentarios', 'mostrar_en_cliente', 'user_updated_id', 'created_at', 'updated_at', 'deleted_at']; protected $allowedFields = ['acabado_cubierta', 'acabado_sobrecubierta', 'nombre', 'comentarios', 'mostrar_en_presupuesto_cliente', 'user_updated_id', 'created_at', 'updated_at', 'deleted_at'];
protected $useTimestamps = true; protected $useTimestamps = true;
protected $dateFormat = 'datetime';
protected $createdField = 'created_at';
protected $updatedField = 'updated_at';
protected $deletedField = 'deleted_at';
protected $returnType = 'App\Entities\Tarifas\Acabados\ServicioAcabadoEntity'; protected $returnType = 'App\Entities\Tarifas\Acabados\ServicioAcabadoEntity';
protected $validationRules = [ protected $validationRules = [
@ -20,6 +26,24 @@ class ServiciosAcabadoModel extends Model
"rules" => "trim|required|max_length[100]", "rules" => "trim|required|max_length[100]",
], ],
]; ];
public function getDatatableQuery(): BaseBuilder
{
$builder = $this->db
->table($this->table . " t1")
->select(
"t1.id,
t1.nombre,
t1.acabado_cubierta,
t1.acabado_sobrecubierta,
t1.mostrar_en_presupuesto_cliente,
CONCAT(users.first_name, ' ', users.last_name) as user_updated,
t1.updated_at",
)
->join("users", "t1.user_updated_id = users.id", "left")
->where("t1.deleted_at", null);
return $builder;
}
} }

View File

@ -0,0 +1,57 @@
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->include('themes/_commonPartialsBs/_confirm2delete') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?>
<div class="row">
<div class="col-md-12">
<div class="card card-info">
<div class="card-header">
<h3 class="card-title"><?= lang('ServicioAcabado.servicioscabadoList') ?></h3>
<?= anchor(route_to('newServicioAcabado'), lang('Basic.global.addNew') . ' ' . lang('ServicioAcabado.servicioacabado'), ['class' => 'btn btn-primary float-end']); ?>
</div><!--//.card-header -->
<div class="card-body">
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
<table id="tableOfServiciosAcabado" class="table table-striped table-hover" style="width: 100%;">
<thead>
<tr>
<th><?= lang('ServicioAcabado.id') ?></th>
<th><?= lang('ServicioAcabado.nombre') ?></th>
<th><?= lang('ServicioAcabado.servicio_cubierta') ?></th>
<th><?= lang('ServicioAcabado.servicio_sobrecubierta') ?></th>
<th><?= lang('ServicioAcabado.mostrar_en_presupuesto_cliente') ?></th>
<th><?= lang('ServicioAcabado.userUpdateId') ?></th>
<th><?= lang('ServicioAcabado.updatedAt') ?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div><!--//.card-body -->
<div class="card-footer">
</div><!--//.card-footer -->
</div><!--//.card -->
</div><!--//.col -->
</div><!--//.row -->
<?= $this->endSection() ?>
<?= $this->section('additionalExternalJs') ?>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/dataTables.buttons.min.js") ?>"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.bootstrap5.min.js") ?>"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.html5.min.js") ?>"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.print.min.js") ?>"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/jszip/jszip.min.js") ?>"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/pdfmake/pdfmake.min.js") ?>" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/pdfmake/vfs_fonts.js") ?>"></script>
<script type="module" src="<?= site_url("/assets/js/safekat/pages/tarifas/serviciosAcabado/list.js") ?>"></script>
<?= $this->endSection() ?>

View File

@ -5,6 +5,7 @@
if ( if (
auth()->user()->can('tarifa-preimpresion.menu') || auth()->user()->can('tarifa-preimpresion.menu') ||
auth()->user()->can('tarifa-manipulado.menu') || auth()->user()->can('tarifa-manipulado.menu') ||
auth()->user()->can('servicio-acabado.menu') ||
auth()->user()->can('tarifa-acabado.menu') || auth()->user()->can('tarifa-acabado.menu') ||
auth()->user()->can('tarifa-encuadernacion.menu') || auth()->user()->can('tarifa-encuadernacion.menu') ||
auth()->user()->can('tarifa-envio.menu') || auth()->user()->can('tarifa-envio.menu') ||
@ -39,6 +40,13 @@ if (
</a> </a>
</li> </li>
<?php } ?> <?php } ?>
<?php if (auth()->user()->can('servicio-acabado.menu')) { ?>
<li class="menu-item">
<a href="<?= route_to('serviciosAcabadoList') ?>" class="menu-link">
<?= lang("App.menu_serviciosAcabado") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('tarifa-encuadernacion.menu')) { ?> <?php if (auth()->user()->can('tarifa-encuadernacion.menu')) { ?>
<li class="menu-item"> <li class="menu-item">
<a href="<?= site_url("tarifas/tarifasencuadernacion") ?>" class="menu-link"> <a href="<?= site_url("tarifas/tarifasencuadernacion") ?>" class="menu-link">

View File

@ -0,0 +1,69 @@
class listServiciosAcabado{
constructor(){}
init(){
this.table = $('#tableOfServiciosAcabado');
this.datatableColumns = [
{ data: 'id', searchable: true, sortable: true, width: "10%" },
{ data: 'nombre', searchable: true, sortable: true, width: "40%" },
{ data: 'acabado_cubierta', sortable: true, width: "10%", render: this.#renderBoolCell.bind(this) },
{ data: 'acabado_sobrecubierta', sortable: false, width: "10%", render: this.#renderBoolCell.bind(this) },
{ data: 'mostrar_en_presupuesto_cliente', searchable: false, sortable: true, width: "10%", render: this.#renderBoolCell.bind(this) },
{ data: 'user_updated', searchable: true, sortable: true },
{ data: 'updated_at', searchable: false, sortable: true },
{
data: 'action', searchable: false, sortable: false, width: "10%", render: this.#renderActionCell.bind(this)
},
]
this.initDatatableTareas();
}
initDatatableTareas() {
this.datatableTareas = this.table.DataTable({
processing: true,
//paging: true,
layout: {
topStart: 'pageLength',
topEnd: 'search',
bottomStart: 'info',
bottomEnd: 'paging'
},
serverSide: true,
responsive : true,
pageLength: 25,
language: {
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
},
columns: this.datatableColumns,
ajax: '/serviciosacabado/datatable'
});
}
#renderActionCell(d, t) {
let cell = `<div class="d-flex justify-content-start align-items-center gap-1">
<span class="edit"><a href="javascript:void(0);"><i class="ti ti-pencil ti-sm btn-edit mx-2" data-id="${d.id}"></i></a></span>
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete} mx-2" data-id="${d.id}"></i></a>
</div>`
return cell;
}
#renderBoolCell(d, t) {
let cell = d == 1 ? '<i class="ti ti-check"></i>' : '';
return cell;
}
}
$(function() {
new listServiciosAcabado().init();
})
export default listServiciosAcabado;