mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
realizada la lista
This commit is contained in:
@ -41,10 +41,18 @@ const SK_PERMISSION_MATRIX = [
|
||||
"tarifa-acabado.edit",
|
||||
"tarifa-acabado.delete",
|
||||
"tarifa-acabado.menu",
|
||||
"servicio-acabado.create",
|
||||
"servicio-acabado.edit",
|
||||
"servicio-acabado.delete",
|
||||
"servicio-acabado.menu",
|
||||
"tarifa-encuadernacion.create",
|
||||
"tarifa-encuadernacion.edit",
|
||||
"tarifa-encuadernacion.delete",
|
||||
"tarifa-encuadernacion.menu",
|
||||
"tarifa-extra.create",
|
||||
"tarifa-extra.edit",
|
||||
"tarifa-extra.delete",
|
||||
"tarifa-extra.menu",
|
||||
"tarifa-envio.create",
|
||||
"tarifa-envio.edit",
|
||||
"tarifa-envio.delete",
|
||||
@ -89,7 +97,6 @@ const SK_PERMISSION_MATRIX = [
|
||||
"roles-permisos.edit",
|
||||
"roles-permisos.delete",
|
||||
"roles-permisos.menu",
|
||||
"tickets.create",
|
||||
"tickets.edit",
|
||||
"tickets.menu",
|
||||
],
|
||||
@ -129,7 +136,6 @@ const SK_PERMISSION_MATRIX = [
|
||||
"direcciones.menu",
|
||||
"presupuesto.create",
|
||||
"presupuesto.edit",
|
||||
"presupuesto.delete",
|
||||
"presupuesto.menu",
|
||||
"presupuesto-cliente.create",
|
||||
"presupuesto-cliente.edit",
|
||||
@ -221,10 +227,6 @@ const SK_PERMISSION_MATRIX = [
|
||||
"tarifa-encuadernacion.edit",
|
||||
"tarifa-encuadernacion.delete",
|
||||
"tarifa-encuadernacion.menu",
|
||||
"tarifa-extra.create",
|
||||
"tarifa-extra.edit",
|
||||
"tarifa-extra.delete",
|
||||
"tarifa-extra.menu",
|
||||
"tarifa-envio.create",
|
||||
"tarifa-envio.edit",
|
||||
"tarifa-envio.delete",
|
||||
@ -269,7 +271,6 @@ const SK_PERMISSION_MATRIX = [
|
||||
"roles-permisos.edit",
|
||||
"roles-permisos.delete",
|
||||
"roles-permisos.menu",
|
||||
"tickets.create",
|
||||
"tickets.edit",
|
||||
"tickets.menu",
|
||||
],
|
||||
|
||||
@ -41,6 +41,10 @@ const SK_PERMISSIONS = [
|
||||
'tarifa-acabado.edit' => 'Can edit',
|
||||
'tarifa-acabado.delete' => 'Can delete',
|
||||
'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.edit' => 'Can edit',
|
||||
'tarifa-encuadernacion.delete' => 'Can delete',
|
||||
@ -93,7 +97,6 @@ const SK_PERMISSIONS = [
|
||||
'roles-permisos.edit' => 'Can edit',
|
||||
'roles-permisos.delete' => 'Can delete',
|
||||
'roles-permisos.menu' => 'Menu shall be visualize',
|
||||
'tickets.create' => 'Can create',
|
||||
'tickets.edit' => 'Can edit',
|
||||
'tickets.menu' => 'Menu shall be visualize',
|
||||
];
|
||||
|
||||
@ -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->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->get('', 'Tarifamanipuladolineas::index', ['as' => 'tarifaManipuladoLineaList']);
|
||||
$routes->get('add', 'Tarifamanipuladolineas::add', ['as' => 'newTarifaManipuladoLinea']);
|
||||
|
||||
@ -4,14 +4,14 @@ namespace App\Controllers\Tarifas\Acabados;
|
||||
|
||||
use App\Controllers\BaseResourceController;
|
||||
use App\Entities\Tarifas\Acabados\ServicioAcabadoEntity;
|
||||
use App\Models\Collection;
|
||||
use App\Models\Tarifas\Acabados\ServiciosAcabadoModel;
|
||||
use App\Models\Tarifas\Acabados\ServicioAcabadoModel;
|
||||
use CodeIgniter\I18n\Time;
|
||||
use Hermawan\DataTables\DataTable;
|
||||
|
||||
|
||||
class TarifaAcabados extends BaseResourceController
|
||||
class ServiciosAcabado extends BaseResourceController
|
||||
{
|
||||
|
||||
protected $modelName = ServicioAcabadoEntity::class;
|
||||
protected $modelName = ServicioAcabadoModel::class;
|
||||
protected $format = 'json';
|
||||
|
||||
protected static $singularObjectName = 'Servicio Acabado';
|
||||
@ -23,7 +23,7 @@ class TarifaAcabados extends BaseResourceController
|
||||
|
||||
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)
|
||||
@ -36,7 +36,7 @@ class TarifaAcabados extends BaseResourceController
|
||||
// Se indica el flag para los ficheros borrados
|
||||
$this->delete_flag = 1;
|
||||
|
||||
$this->viewData = ['usingServerSideDataTable' => true];
|
||||
//$this->viewData = ['usingServerSideDataTable' => true];
|
||||
|
||||
// Breadcrumbs
|
||||
$this->viewData['breadcrumb'] = [
|
||||
@ -44,6 +44,7 @@ class TarifaAcabados extends BaseResourceController
|
||||
['title' => lang("App.menu_Servicioacabado"), 'route' => site_url('tarifas/acabados'), 'active' => true]
|
||||
];
|
||||
|
||||
helper("time");
|
||||
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
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -17,11 +17,6 @@ class CreateServiciosAcabadoTable extends Migration
|
||||
'unsigned' => true,
|
||||
'auto_increment' => true,
|
||||
],
|
||||
'tarifa_id' => [
|
||||
'type' => 'INT',
|
||||
'constraint' => 11,
|
||||
'unsigned' => true,
|
||||
],
|
||||
'nombre' =>[
|
||||
'type' => 'VARCHAR',
|
||||
'constraint' => 100,
|
||||
@ -31,6 +26,18 @@ class CreateServiciosAcabadoTable extends Migration
|
||||
'type' => 'TEXT',
|
||||
'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' => [
|
||||
'type' => 'INT',
|
||||
'constraint' => 11,
|
||||
|
||||
@ -797,6 +797,7 @@ return [
|
||||
"menu_tarifamanipulado" => "Manipulado",
|
||||
"menu_tarifaencuadernacion" => "Encuadernación",
|
||||
"menu_tarifapapelcompra" => "Papel compra",
|
||||
"menu_serviciosAcabado" => "Servicios acabado",
|
||||
"menu_tarifaacabado" => "Acabado",
|
||||
"menu_tarifapapeldefecto" => "Papel defecto",
|
||||
"menu_tarifaenvio" => "Envío",
|
||||
|
||||
@ -38,6 +38,7 @@ return [
|
||||
'tarifaPreimpresionSection' => 'Tarifas de preimpresión',
|
||||
'tarifaManipuladoSection' => 'Tarifas de manipulado',
|
||||
'tarifaAcabadoSection' => 'Tarifas de acabado',
|
||||
'servicioAcabadoSection' => 'Servicios de acabado',
|
||||
'tarifaEncuadernacionSection' => 'Tarifas de encuadernación',
|
||||
'tarifaEnvioSection' => 'Tarifas de envio',
|
||||
'tarifaExtraSection' => 'Tarifas extra',
|
||||
|
||||
@ -10,15 +10,16 @@ return [
|
||||
'comentarios' => 'Comentarios',
|
||||
'mostrar_en_presupuesto_cliente' => 'Mostrar en presupuesto (cliente)',
|
||||
'serviciosacabado' => 'Servicios Acabado',
|
||||
'servicioacabado' => 'Servicio Acabado',
|
||||
'tarifasacabado' => 'Tarifas Acabado',
|
||||
"servicio_cubierta" => "Acabado cubierta",
|
||||
"servicio_sobrecubierta" => "Acabado sobrecubierta",
|
||||
"servicio_cubierta" => "Servicio cubierta",
|
||||
"servicio_sobrecubierta" => "Servicio sobrecubierta",
|
||||
'tarifaacabado' => 'Tarifa Acabado',
|
||||
'servicioscabadoList' => 'Lista Servicios Acabado',
|
||||
'updatedAt' => 'Actualizado en',
|
||||
'createdAt' => 'Creado en',
|
||||
'deletedAt' => 'Borrado en',
|
||||
'userUpdateId' => 'ID Usuario "Actualizado en"',
|
||||
'userUpdateId' => 'Modificado por',
|
||||
'validation' => [
|
||||
'nombre' => [
|
||||
'max_length' => 'El campo {field} no puede exceder {param} caracteres en longitud.',
|
||||
|
||||
@ -1,17 +1,23 @@
|
||||
<?php
|
||||
namespace App\Models\Tarifas\Acabados;
|
||||
|
||||
use CodeIgniter\Database\BaseBuilder;
|
||||
|
||||
use CodeIgniter\Model;
|
||||
|
||||
class ServiciosAcabadoModel extends Model
|
||||
class ServicioAcabadoModel extends Model
|
||||
{
|
||||
protected $table = 'servicios_acabado';
|
||||
protected $table = 'servicios_acabado';
|
||||
protected $primaryKey = 'id';
|
||||
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 $dateFormat = 'datetime';
|
||||
protected $createdField = 'created_at';
|
||||
protected $updatedField = 'updated_at';
|
||||
protected $deletedField = 'deleted_at';
|
||||
|
||||
protected $returnType = 'App\Entities\Tarifas\Acabados\ServicioAcabadoEntity';
|
||||
|
||||
protected $validationRules = [
|
||||
@ -20,6 +26,24 @@ class ServiciosAcabadoModel extends Model
|
||||
"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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -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() ?>
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
if (
|
||||
auth()->user()->can('tarifa-preimpresion.menu') ||
|
||||
auth()->user()->can('tarifa-manipulado.menu') ||
|
||||
auth()->user()->can('servicio-acabado.menu') ||
|
||||
auth()->user()->can('tarifa-acabado.menu') ||
|
||||
auth()->user()->can('tarifa-encuadernacion.menu') ||
|
||||
auth()->user()->can('tarifa-envio.menu') ||
|
||||
@ -39,6 +40,13 @@ if (
|
||||
</a>
|
||||
</li>
|
||||
<?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')) { ?>
|
||||
<li class="menu-item">
|
||||
<a href="<?= site_url("tarifas/tarifasencuadernacion") ?>" class="menu-link">
|
||||
|
||||
@ -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;
|
||||
Reference in New Issue
Block a user