Merge branch 'main' into bug/users_overwrited

This commit is contained in:
amazuecos
2025-04-04 01:33:35 +02:00
16 changed files with 293 additions and 211 deletions

View File

@ -21,8 +21,6 @@ const SK_PERMISSION_MATRIX = [
"presupuesto-cliente.edit",
"presupuesto-cliente.delete",
"presupuesto-cliente.menu",
"pedidos-validacion.view",
"pedidos-validacion.menu",
"pedidos-activos.view",
"pedidos-activos.menu",
"pedidos-finalizados.view",
@ -31,8 +29,6 @@ const SK_PERMISSION_MATRIX = [
"pedidos-cancelados.menu",
"pedidos-todos.view",
"pedidos-todos.menu",
"pedidos-gestion.toprod",
"pedidos-gestion.menu",
"tarifa-preimpresion.create",
"tarifa-preimpresion.edit",
"tarifa-preimpresion.delete",
@ -224,6 +220,10 @@ const SK_PERMISSION_MATRIX = [
"proveedores.menu",
"tickets.edit",
"tickets.menu",
"facturas.create",
"facturas.edit",
"facturas.vencimientos",
"facturas.menu",
],
"contabilidad" => [
"token.token",

View File

@ -103,4 +103,8 @@ const SK_PERMISSIONS = [
'roles-permisos.menu' => 'Menu shall be visualize',
'tickets.edit' => 'Can edit',
'tickets.menu' => 'Menu shall be visualize',
'facturas.create' => 'Can create',
'facturas.edit' => 'Can edit',
'facturas.vencimientos' => 'Can vencimientos',
'facturas.menu' => 'Menu shall be visualize',
];

View File

@ -50,6 +50,8 @@ class Proveedores extends \App\Controllers\BaseResourceController {
public function index() {
checkPermission('proveedores.menu');
$viewData = [
'currentModule' => static::$controllerSlug,
@ -67,9 +69,7 @@ class Proveedores extends \App\Controllers\BaseResourceController {
public function add() {
checkPermission('proveedores.create');
if ($this->request->getPost()) :
@ -138,6 +138,8 @@ class Proveedores extends \App\Controllers\BaseResourceController {
} // end function add()
public function edit($requestedId = null) {
checkPermission('proveedores.edit');
if ($requestedId == null) :
return $this->redirect2listView();

View File

@ -41,6 +41,7 @@ class Facturas extends \App\Controllers\BaseResourceController
public function index()
{
checkPermission('facturas.menu');
if (auth()->user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor')) {
// Se obtiene el cliente ID a partir del usuario de la sesion
@ -62,6 +63,7 @@ class Facturas extends \App\Controllers\BaseResourceController
public function list()
{
checkGroups(['admin', 'cliente-admin', 'cliente-editor', 'contabilidad']);
$viewData = [
'currentModule' => static::$controllerSlug,
@ -103,6 +105,8 @@ class Facturas extends \App\Controllers\BaseResourceController
public function add()
{
checkPermission('facturas.create');
if ($this->request->getPost()):
$nullIfEmpty = true; // !(phpversion() >= '8.1');
@ -200,6 +204,7 @@ class Facturas extends \App\Controllers\BaseResourceController
public function edit($id = null)
{
checkPermission('facturas.edit');
if ($id == null):
return $this->redirect2listView();
@ -328,26 +333,29 @@ class Facturas extends \App\Controllers\BaseResourceController
}
)
->add("action", callback: function ($q) {
if ($q->estado == 'borrador') {
return '
if (auth()->user()->can('facturas.edit')) {
if ($q->estado == 'borrador') {
return '
<div class="btn-group btn-group-sm">
<a href="javascript:void(0);"><i class="ti ti-pencil ti-sm btn-edit mx-2" data-id="' . $q->id . '"></i></a>
</div>
';
} else {
return '
} else {
return '
<div class="btn-group btn-group-sm">
<a href="javascript:void(0);"><i class="ti ti-eye ti-sm btn-edit mx-2" data-id="' . $q->id . '"></i></a>
</div>
';
}
}
} else
return '';
});
if ($clienteId != -1) {
$result->hide('cliente');
$result->hide('creditoAsegurado');
if(!$dataForClienteForm){
if (!$dataForClienteForm) {
$result->hide('estado');
$result->hide('estado_pago');
$result->hide('estado_pago');
}
$result->hide('forma_pago');
$result->hide('vencimiento');
@ -357,7 +365,8 @@ class Facturas extends \App\Controllers\BaseResourceController
return $result->toJson(returnAsObject: true);
}
public function getDatosFacturacionClienteForm($cliente_id){
public function getDatosFacturacionClienteForm($cliente_id)
{
return $this->respond($this->model->getSumatoriosFacturacionCliente($cliente_id));
}
@ -498,7 +507,7 @@ class Facturas extends \App\Controllers\BaseResourceController
->update();
$this->model->db->query('DELETE FROM facturas_pedidos_lineas WHERE factura_id=' . $id);
// $message = lang('Basic.global.deleteSuccess', [$objName]); IMN commented
$message = lang('Basic.global.deleteSuccess', [lang('Basic.global.record')]);
$response = $this->respondDeleted(['id' => $id, 'msg' => $message]);

View File

@ -35,6 +35,7 @@ class Actividad extends BaseResourceController
public function index()
{
checkPermission('actividad.menu');
$viewData = [

View File

@ -40,6 +40,7 @@ class Ajustes extends BaseResourceController
public function settings()
{
checkPermission('ajustes.menu');
$id = 1;
$settingsEntity = $this->model->find($id);

View File

@ -44,7 +44,7 @@ class Ticketcontroller extends \App\Controllers\BaseResourceController
public function index()
{
//checkPermission('tickets.menu');
checkPermission('tickets.menu');
$viewData = [
'currentModule' => static::$controllerSlug,
@ -69,7 +69,7 @@ class Ticketcontroller extends \App\Controllers\BaseResourceController
public function add()
{
//checkPermission('tickets.create', $this->indexRoute);
checkPermission('tickets.create');
if ($this->request->getPost()):
@ -145,6 +145,9 @@ class Ticketcontroller extends \App\Controllers\BaseResourceController
public function edit($requestedId = null)
{
checkPermission('tickets.edit');
$modelRespuesta = new \App\Models\Soporte\TicketRespuestaModel();
if ($requestedId == null):

View File

@ -120,3 +120,37 @@ if (!function_exists('checkPermission')) {
}
}
if (!function_exists('checkGroups')) {
/**
* Verifica si el usuario pertenece a alguno de los grupos especificados.
*
* @param array $groups Lista de grupos permitidos.
* @param string|null $redirectRoute Ruta de redirección si no pertenece a ningún grupo.
* @return \CodeIgniter\HTTP\RedirectResponse|null
*/
function checkGroups(array $groups, string $redirectRoute = null)
{
$session = \Config\Services::session();
$response = \Config\Services::response();
$auth = auth(); // Shield auth service
$user = $auth->user();
$inGroup = false;
foreach ($groups as $group) {
if ($user->inGroup($group)) {
$inGroup = true;
break;
}
}
if (!$inGroup) {
$session->setFlashdata('errorMessage', 'No tiene permisos de acceso.');
$route = $redirectRoute ?? 'home';
return $response->redirect(route_to($route));
}
return null;
}
}

View File

@ -59,7 +59,9 @@ return [
'seriesFacturasSection' => 'Series facturas',
'ajustesSection' => 'Ajustes',
'actividadSection' => 'Accesos',
'facturasSection' => 'Facturas',
'albaranesPermission' => 'Albaranes',
'vencimientosPermission' => 'Vencimientos',
"ticketsSection" => "Tickets",
'validation' => [

View File

@ -2,35 +2,45 @@
/**
* MENU COMPRAS
*/
if (auth()->user()->inGroup('beta')) {
?>
<!-- BUY -->
<li class="menu-item">
<a href="javascript:void(0);" class="menu-link menu-toggle">
<i class="menu-icon tf-icons ti ti-shopping-cart"></i>
<?= lang("App.menu_compras") ?>
</a>
<ul class="menu-sub">
<li class="menu-item">
<a href="<?= site_url("servicios/compras") ?>" class="menu-link">
<?= lang("App.menu_compras") ?>
</a>
</li>
<li class="menu-item">
<a href="<?= site_url("servicios/productos") ?>" class="menu-link">
<?= lang("App.menu_productos") ?>
</a>
</li>
<li class="menu-item">
<a href="<?= site_url("compras/proveedores") ?>" class="menu-link">
<?= lang("App.menu_proveedores") ?>
</a>
</li>
<li class="menu-item">
<a href="<?= site_url("servicios/compras/ajustes") ?>" class="menu-link">
<?= lang("App.menu_compras_ajustes") ?>
</a>
</li>
</ul>
</li>
<?php } ?>
if (
auth()->user()->can('proveedores.menu') ||
auth()->user()->inGroup('beta')
) {
?>
<!-- COMPRAS -->
<li class="menu-item">
<a href="javascript:void(0);" class="menu-link menu-toggle">
<i class="menu-icon tf-icons ti ti-shopping-cart"></i>
<?= lang("App.menu_compras") ?>
</a>
<ul class="menu-sub">
<?php if (auth()->user()->can('proveedores.menu')) { ?>
<li class="menu-item">
<a href="<?= site_url("compras/proveedores") ?>" class="menu-link">
<?= lang("App.menu_proveedores") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->inGroup('beta')) { ?>
<li class="menu-item">
<a href="<?= site_url("servicios/compras") ?>" class="menu-link">
<?= lang("App.menu_compras") ?>
</a>
</li>
<li class="menu-item">
<a href="<?= site_url("servicios/productos") ?>" class="menu-link">
<?= lang("App.menu_productos") ?>
</a>
</li>
<li class="menu-item">
<a href="<?= site_url("servicios/compras/ajustes") ?>" class="menu-link">
<?= lang("App.menu_compras_ajustes") ?>
</a>
</li>
<?php } ?>
</ul>
</li>
<?php } ?>

View File

@ -6,127 +6,127 @@
if (
auth()->user()->can('paises.menu') ||
auth()->user()->can('formas-pago.menu') ||
auth()->user()->can('papel-genericosk .menu') ||
auth()->user()->can('papel-generico.menu') ||
auth()->user()->can('papel-impresion.menu') ||
auth()->user()->can('maquinas.menu') ||
auth()->user()->can('maquinas-defecto.menu') ||
auth()->user()->can('usuarios.menu') ||
auth()->user()->can('roles-permisos.menu')
) {
?>
<li class="menu-item">
<a href="javascript:void(0);" class="menu-link menu-toggle">
<i class="menu-icon tf-icons ti ti-adjustments-horizontal"></i>
<?= lang("App.menu_configuration") ?>
</a>
<ul class="menu-sub">
?>
<li class="menu-item">
<a href="javascript:void(0);" class="menu-link menu-toggle">
<i class="menu-icon tf-icons ti ti-adjustments-horizontal"></i>
<?= lang("App.menu_configuration") ?>
</a>
<ul class="menu-sub">
<?php if (auth()->user()->can('paises.menu')) { ?>
<li class="menu-item">
<a href="<?= route_to('paisList') ?>" class="menu-link">
<?= lang("App.menu_paises") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('formas-pago.menu')) { ?>
<li class="menu-item">
<a href="<?= route_to('formasPagoList') ?>" class="menu-link">
<?= lang("App.menu_formas_pago") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('papel-generico.menu')) { ?>
<li class="menu-item">
<a href="<?= site_url("configuracion/papelesgenericos") ?>" class="menu-link">
<?= lang("App.menu_papelgenerico") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('papel-impresion.menu')) { ?>
<li class="menu-item">
<a href="<?= site_url("configuracion/papelesimpresion") ?>" class="menu-link">
<?= lang("App.menu_papelimpresion") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('maquinas.menu')) { ?>
<li class="menu-item">
<a href="<?= site_url("configuracion/maquinas") ?>" class="menu-link">
<?= lang("App.menu_maquina") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('maquinas-defecto.menu')) { ?>
<li class="menu-item">
<a href="<?= site_url("configuracion/maquinasdefecto") ?>" class="menu-link">
<?= lang("App.menu_maquina_defecto") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->inGroup('admin') || auth()->user()->inGroup('beta')) { ?>
<li class="menu-item">
<a href="<?= route_to("maquinaTareaList") ?>" class="menu-link">
<?= lang("App.menu_maquina_tareas") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('usuarios.menu')) { ?>
<li class="menu-item">
<a href="<?= site_url("configuracion/users") ?>" class="menu-link">
<?= lang("App.menu_users") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('roles-permisos.menu')) { ?>
<li class="menu-item">
<a href="<?= site_url("configuracion/group") ?>" class="menu-link">
<?= lang("App.menu_permission_group") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('proveedores.menu')) { ?>
<li class="menu-item">
<a href="<?= route_to("proveedorList") ?>" class="menu-link">
<?= lang("App.menu_proveedores") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('ubicaciones.menu')) { ?>
<li class="menu-item">
<a href="<?= route_to("ubicacionesList") ?>" class="menu-link">
<?= lang("App.menu_ubicaciones") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('series-facturas.menu')) { ?>
<li class="menu-item">
<a href="<?= route_to("seriesFacturasList") ?>" class="menu-link">
<?= lang("App.menu_series_facturas") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('paises.menu')) { ?>
<li class="menu-item">
<a href="<?= route_to('paisList') ?>" class="menu-link">
<?= lang("App.menu_paises") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('formas-pago.menu')) { ?>
<li class="menu-item">
<a href="<?= route_to('formasPagoList') ?>" class="menu-link">
<?= lang("App.menu_formas_pago") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('papel-generico.menu')) { ?>
<li class="menu-item">
<a href="<?= site_url("configuracion/papelesgenericos") ?>" class="menu-link">
<?= lang("App.menu_papelgenerico") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('papel-impresion.menu')) { ?>
<li class="menu-item">
<a href="<?= site_url("configuracion/papelesimpresion") ?>" class="menu-link">
<?= lang("App.menu_papelimpresion") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('maquinas.menu')) { ?>
<li class="menu-item">
<a href="<?= site_url("configuracion/maquinas") ?>" class="menu-link">
<?= lang("App.menu_maquina") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('maquinas-defecto.menu')) { ?>
<li class="menu-item">
<a href="<?= site_url("configuracion/maquinasdefecto") ?>" class="menu-link">
<?= lang("App.menu_maquina_defecto") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->inGroup('admin')) { ?>
<li class="menu-item">
<a href="<?= route_to("maquinaTareaList") ?>" class="menu-link">
<?= lang("App.menu_maquina_tareas") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('usuarios.menu')) { ?>
<li class="menu-item">
<a href="<?= site_url("configuracion/users") ?>" class="menu-link">
<?= lang("App.menu_users") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('roles-permisos.menu')) { ?>
<li class="menu-item">
<a href="<?= site_url("configuracion/group") ?>" class="menu-link">
<?= lang("App.menu_permission_group") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('proveedores.menu')) { ?>
<li class="menu-item">
<a href="<?= route_to("proveedorList") ?>" class="menu-link">
<?= lang("App.menu_proveedores") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('ubicaciones.menu')) { ?>
<li class="menu-item">
<a href="<?= route_to("ubicacionesList") ?>" class="menu-link">
<?= lang("App.menu_ubicaciones") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('series-facturas.menu')) { ?>
<li class="menu-item">
<a href="<?= route_to("seriesFacturasList") ?>" class="menu-link">
<?= lang("App.menu_series_facturas") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->inGroup('admin') || auth()->user()->inGroup('beta')) { ?>
<li class="menu-item">
<a href="<?= route_to('erroresPresupuestoIndex') ?>" class="menu-link">
<?= lang("App.menu_error_presupuesto") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->inGroup('admin') || auth()->user()->inGroup('beta')) { ?>
<li class="menu-item">
<a href="<?= route_to('variablesIndex') ?>" class="menu-link">
<?= lang("App.menu_variables") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->inGroup('admin') || auth()->user()->inGroup('beta')) { ?>
<li class="menu-item">
<a href="<?= route_to('configMessagesIndex') ?>" class="menu-link">
<?= lang("App.menu_config_messages") ?>
</a>
</li>
<?php } ?>
</ul>
</li>
<?php if (auth()->user()->inGroup('admin')) { ?>
<li class="menu-item">
<a href="<?= route_to('erroresPresupuestoIndex') ?>" class="menu-link">
<?= lang("App.menu_error_presupuesto") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->inGroup('admin')) { ?>
<li class="menu-item">
<a href="<?= route_to('variablesIndex') ?>" class="menu-link">
<?= lang("App.menu_variables") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->inGroup('admin')) { ?>
<li class="menu-item">
<a href="<?= route_to('configMessagesIndex') ?>" class="menu-link">
<?= lang("App.menu_config_messages") ?>
</a>
</li>
<?php } ?>
</ul>
</li>
<?php } ?>

View File

@ -12,15 +12,10 @@ if (auth()->user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente
</a>
<ul class="menu-sub">
<li class="menu-item">
<a href="<?= site_url("facturas/list") ?>" class="menu-link">
<a href="<?= route_to('facturasList') ?>" class="menu-link">
<?= lang("App.menu_facturas") ?>
</a>
</li>
<li class="menu-item">
<a href="<?= site_url("facturas/albaranes") ?>" class="menu-link">
<?= lang("App.menu_albaran") ?>
</a>
</li>
</ul>
</li>
<?php } ?>

View File

@ -2,35 +2,34 @@
/**
* MENU FACTURACION
*/
if (auth()->user()->inGroup('beta')) {
if (auth()->user()->can('facturas.menu')) {
?>
<!-- Invoicing -->
<!-- FACTURACION -->
<li class="menu-item">
<a href="javascript:void(0);" class="menu-link menu-toggle">
<i class="menu-icon tf-icons ti ti-file-dollar"></i>
<?= lang("App.menu_facturación") ?>
</a>
<ul class="menu-sub">
<?php if (auth()->user()->can('facturas.create')): ?>
<li class="menu-item">
<a href="<?= route_to('newFactura') ?>" class="menu-link">
<?= lang("App.menu_facturas_nueva") ?>
</a>
</li>
<?php endif; ?>
<li class="menu-item">
<a href="<?= route_to('newFactura') ?>" class="menu-link">
<?= lang("App.menu_facturas_nueva") ?>
</a>
</li>
<li class="menu-item">
<a href="<?= site_url("facturas/list") ?>" class="menu-link">
<a href="<?= route_to('facturasList') ?>" class="menu-link">
<?= lang("App.menu_facturas") ?>
</a>
</li>
<li class="menu-item">
<a href="<?= site_url("facturas/vencimientos") ?>" class="menu-link">
<?= lang("App.menu_facturas_vencimiento") ?>
</a>
</li>
<li class="menu-item">
<a href="<?= site_url("facturas/albaranes") ?>" class="menu-link">
<?= lang("App.menu_albaran") ?>
</a>
</li>
<?php if (auth()->user()->can('facturas.vencimientos')): ?>
<li class="menu-item">
<a href="<?= site_url("facturas/vencimientos") ?>" class="menu-link">
<?= lang("App.menu_facturas_vencimiento") ?>
</a>
</li>
<?php endif; ?>
</ul>
</li>
<?php } ?>

View File

@ -2,9 +2,9 @@
/**
* MENU MENSAJES
*/
if (auth()->user()->inGroup('beta') || auth()->user()->inGroup('cliente-editor')) {
if (auth()->user()->inGroup('cliente-editor')) {
?>
<!-- Messages -->
<!-- Mensajeria -->
<li class="menu-item">
<a href="<?= route_to('mensajeriaView') ?>" class="menu-link">
<i class="menu-icon tf-icons ti ti-message"></i>

View File

@ -1,22 +1,37 @@
<!-- Soporte -->
<li class="menu-item">
<a href="javascript:void(0);" class="menu-link menu-toggle">
<i class="menu-icon tf-icons ti ti-help"></i>
<?= lang("App.menu_soporte") ?>
</a>
<ul class="menu-sub">
<?php
/**
* MENU SOPORTE
*/
if (
auth()->user()->can('tickets.menu')
) {
?>
<li class="menu-item">
<a href="<?= route_to("NewTicket") ?>" class="menu-link">
<?= lang("App.menu_soporte_new_ticket") ?>
</a>
</li>
<!-- Soporte -->
<li class="menu-item">
<a href="javascript:void(0);" class="menu-link menu-toggle">
<i class="menu-icon tf-icons ti ti-help"></i>
<?= lang("App.menu_soporte") ?>
</a>
<ul class="menu-sub">
<li class="menu-item">
<a href="<?= route_to("TicketIndex") ?>" class="menu-link">
<?= lang("App.menu_soporte_ticket_list") ?>
</a>
</li>
<?php if (auth()->user()->can('tickets.create')) { ?>
<li class="menu-item">
<a href="<?= route_to("NewTicket") ?>" class="menu-link">
<?= lang("App.menu_soporte_new_ticket") ?>
</a>
</li>
<?php } ?>
</ul>
</li>
<?php if (auth()->user()->can('tickets.edit')) { ?>
<li class="menu-item">
<a href="<?= route_to("TicketIndex") ?>" class="menu-link">
<?= lang("App.menu_soporte_ticket_list") ?>
</a>
</li>
<?php } ?>
</ul>
</li>
<?php } ?>

View File

@ -186,6 +186,13 @@ class Envios {
self.recogerTaller.prop('checked', true);
self.insertarEnvio.addClass('d-none');
self.modalYesNo.hide();
$(document).trigger('update-presupuesto', {
update_lineas: false,
update_servicios: false,
update_envios: false,
update_resumen: true,
update_tiradas_alternativas: true
});
});
}
else {