From c0de7ec23887c6d1281c12aa450b91c455ea7103 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 8 Apr 2025 14:45:14 +0200 Subject: [PATCH 01/14] Cambiadas rutas de maquinas, papel generico, papel impresion, perfil y paises --- ci4/app/Config/Routes.php | 134 ++++++++++-------- ci4/app/Config/Routing.php | 4 +- .../Controllers/Configuracion/Maquinas.php | 2 +- .../Configuracion/Papelesgenericos.php | 2 +- .../Configuracion/Papelesimpresion.php | 2 +- .../configuracion/paises/_paisFormItems.php | 120 ++++++++-------- .../configuracion/paises/viewPaisList.php | 2 +- .../form/presupuestos/admin/_previewItems.php | 66 ++++----- .../vuexy/form/profile/profileDetails.php | 7 +- .../themes/vuexy/main/menu_digitalizacion.php | 2 +- .../themes/vuexy/main/menu_maquetacion.php | 2 +- .../vuexy/main/menus/configuracion_menu.php | 6 +- .../js/safekat/pages/maquinas/duplicate.js | 2 +- .../js/safekat/pages/maquinas/maquinasList.js | 4 +- 14 files changed, 186 insertions(+), 169 deletions(-) diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index eb781603..701fd863 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -85,6 +85,73 @@ $routes->group('tarifas', ['namespace' => 'App\Controllers\Tarifas'], function ( /* Rutas para configuraciones */ $routes->group('configuracion', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { + /* Paises */ + $routes->group('paises', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { + $routes->get('', 'Paises::index', ['as' => 'paisList']); + $routes->get('add', 'Paises::add', ['as' => 'newPais']); + $routes->post('add', 'Paises::add', ['as' => 'createPais']); + $routes->post('create', 'Paises::create', ['as' => 'ajaxCreatePais']); + $routes->put('update/(:num)', 'Paises::update/$1', ['as' => 'ajaxUpdatePais']); + $routes->match(['get', 'post'], 'edit/(:num)', 'Paises::edit/$1', ['as' => 'updatePais']); + $routes->post('datatable', 'Paises::datatable', ['as' => 'dataTableOfPaises']); + $routes->post('allmenuitems', 'Paises::allItemsSelect', ['as' => 'select2ItemsOfPaises']); + $routes->post('menuitems', 'Paises::menuItems', ['as' => 'menuItemsOfPaises']); + $routes->get('menuitems2', 'Paises::menuItems2', ['as' => 'menuItemsOfPaises2']); + }); + + + /* Papeles genericos */ + $routes->group('papelesgenericos', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { + $routes->get('', 'Papelesgenericos::index', ['as' => 'papelGenericoList']); + $routes->delete('', 'Papelesgenericos::index', ['as' => 'papelGenericoList2']); + $routes->get('add', 'Papelesgenericos::add', ['as' => 'newPapelGenerico']); + $routes->post('add', 'Papelesgenericos::add', ['as' => 'createPapelGenerico']); + $routes->post('create', 'Papelesgenericos::create', ['as' => 'ajaxCreatePapelGenerico']); + $routes->put('(:num)/update', 'Papelesgenericos::update/$1', ['as' => 'ajaxUpdatePapelGenerico']); + $routes->match(['get', 'post'], 'edit/(:num)', 'Papelesgenericos::edit/$1', ['as' => 'updatePapelGenerico']); + $routes->post('datatable', 'Papelesgenericos::datatable', ['as' => 'dataTableOfPapelesGenericos']); + $routes->post('allmenuitems', 'Papelesgenericos::allItemsSelect', ['as' => 'select2ItemsOfPapelesGenericos']); + $routes->post('menuitems', 'Papelesgenericos::menuItems', ['as' => 'menuItemsOfPapelesGenericos']); + $routes->get('getpapelcliente', 'Papelesgenericos::getPapelCliente', ['as' => 'getPapelCliente']); + $routes->get('selectpapelespecial', 'Papelesgenericos::selectPapelEspecial', ['as' => 'selectPapelEspecial']); + }); + + /* Papeles impresion */ + $routes->group('papelesimpresion', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { + $routes->get('', 'Papelesimpresion::index', ['as' => 'papelImpresionList']); + $routes->get('add', 'Papelesimpresion::add', ['as' => 'newPapelImpresion']); + $routes->post('add', 'Papelesimpresion::add', ['as' => 'createPapelImpresion']); + $routes->post('create', 'Papelesimpresion::create', ['as' => 'ajaxCreatePapelImpresion']); + $routes->put('(:num)/update', 'Papelesimpresion::update/$1', ['as' => 'ajaxUpdatePapelImpresion']); + $routes->match(['get', 'post'], 'edit/(:num)', 'Papelesimpresion::edit/$1', ['as' => 'updatePapelImpresion']); + $routes->post('datatable', 'Papelesimpresion::datatable', ['as' => 'dataTableOfPapelesImpresion']); + $routes->post('allmenuitems', 'Papelesimpresion::allItemsSelect', ['as' => 'select2ItemsOfPapelesImpresion']); + $routes->post('menuitems', 'Papelesimpresion::menuItems', ['as' => 'menuItemsOfPapelesImpresion']); + $routes->post('duplicate/(:num)', 'Papelesimpresion::duplicate/$1', ['as' => 'duplicatePapelImpresion']); + $routes->get('select', 'Papelesimpresion::papel_impresion_select', ['as' => 'papelImpresionSelect']); + $routes->get('show/(:num)', 'Papelesimpresion::papel_impresion_find/$1', ['as' => 'showPapelImpresion']); + + }); + + /* Maquinas */ + $routes->group('maquinas', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { + $routes->get('', 'Maquinas::index', ['as' => 'maquinaList']); + $routes->get('add', 'Maquinas::add', ['as' => 'newMaquina']); + $routes->get('edit/(:num)', 'Maquinas::edit/$1'); + $routes->get('delete/(:num)', 'Maquinas::delete/$1'); + $routes->post('add', 'Maquinas::add', ['as' => 'createMaquina']); + $routes->post('create', 'Maquinas::create', ['as' => 'ajaxCreateMaquina']); + $routes->put('update/(:num)', 'Maquinas::update/$1', ['as' => 'ajaxUpdateMaquina']); + $routes->match(['get', 'post'], 'edit/(:num)', 'Maquinas::edit/$1', ['as' => 'updateMaquina']); + $routes->post('datatable', 'Maquinas::datatable', ['as' => 'dataTableOfMaquinas']); + $routes->post('allmenuitems', 'Maquinas::allItemsSelect', ['as' => 'select2ItemsOfMaquinas']); + $routes->post('menuitems', 'Maquinas::menuItems', ['as' => 'menuItemsOfMaquinas']); + $routes->post('duplicate/(:num)', 'Maquinas::duplicate/$1', ['as' => 'duplicateMaquina']); + $routes->get('(:num)', 'Maquinas::find_maquina/$1', ['as' => 'findMaquina']); + $routes->get('select', 'Maquinas::select', ['as' => 'selectMaquinas']); + }); + + /* Ubicaciones */ $routes->group('ubicaciones', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { @@ -267,39 +334,9 @@ $routes->group('imposiciones', ['namespace' => 'App\Controllers\Configuracion'], }); $routes->resource('imposiciones', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Imposiciones', 'except' => 'show,new,create,update']); -$routes->group('papelesgenericos', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { - $routes->get('', 'Papelesgenericos::index', ['as' => 'papelGenericoList']); - $routes->delete('', 'Papelesgenericos::index', ['as' => 'papelGenericoList2']); - $routes->get('add', 'Papelesgenericos::add', ['as' => 'newPapelGenerico']); - $routes->post('add', 'Papelesgenericos::add', ['as' => 'createPapelGenerico']); - $routes->post('create', 'Papelesgenericos::create', ['as' => 'ajaxCreatePapelGenerico']); - $routes->put('(:num)/update', 'Papelesgenericos::update/$1', ['as' => 'ajaxUpdatePapelGenerico']); - $routes->post('edit/(:num)', 'Papelesgenericos::edit/$1', ['as' => 'updatePapelGenerico']); - $routes->post('datatable', 'Papelesgenericos::datatable', ['as' => 'dataTableOfPapelesGenericos']); - $routes->post('allmenuitems', 'Papelesgenericos::allItemsSelect', ['as' => 'select2ItemsOfPapelesGenericos']); - $routes->post('menuitems', 'Papelesgenericos::menuItems', ['as' => 'menuItemsOfPapelesGenericos']); - $routes->get('getpapelcliente', 'Papelesgenericos::getPapelCliente', ['as' => 'getPapelCliente']); - $routes->get('selectpapelespecial', 'Papelesgenericos::selectPapelEspecial', ['as' => 'selectPapelEspecial']); -}); -$routes->resource('papelesgenericos', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Papelesgenericos', 'except' => 'show,new,create,update']); - -$routes->group('papelesimpresion', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { - $routes->get('', 'Papelesimpresion::index', ['as' => 'papelImpresionList']); - $routes->get('add', 'Papelesimpresion::add', ['as' => 'newPapelImpresion']); - $routes->post('add', 'Papelesimpresion::add', ['as' => 'createPapelImpresion']); - $routes->post('create', 'Papelesimpresion::create', ['as' => 'ajaxCreatePapelImpresion']); - $routes->put('(:num)/update', 'Papelesimpresion::update/$1', ['as' => 'ajaxUpdatePapelImpresion']); - $routes->post('edit/(:num)', 'Papelesimpresion::edit/$1', ['as' => 'updatePapelImpresion']); - $routes->post('datatable', 'Papelesimpresion::datatable', ['as' => 'dataTableOfPapelesImpresion']); - $routes->post('allmenuitems', 'Papelesimpresion::allItemsSelect', ['as' => 'select2ItemsOfPapelesImpresion']); - $routes->post('menuitems', 'Papelesimpresion::menuItems', ['as' => 'menuItemsOfPapelesImpresion']); - $routes->post('duplicate/(:num)', 'Papelesimpresion::duplicate/$1', ['as' => 'duplicatePapelImpresion']); - $routes->get('select', 'Papelesimpresion::papel_impresion_select', ['as' => 'papelImpresionSelect']); - $routes->get('show/(:num)', 'Papelesimpresion::papel_impresion_find/$1', ['as' => 'showPapelImpresion']); -}); -$routes->resource('papelesimpresion', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Papelesimpresion', 'except' => 'show,new,create,update']); +//$routes->resource('papelesimpresion', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Papelesimpresion', 'except' => 'show,new,create,update']); $routes->group('papelimpresiontipologias', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { $routes->get('add', 'Papelimpresiontipologias::add', ['as' => 'newPapelImpresionTipologia']); @@ -318,23 +355,7 @@ $routes->group('papelesimpresionmargenes', ['namespace' => 'App\Controllers\Conf }); $routes->resource('papelesimpresionmargenes', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Papelimpresionmargenes', 'except' => 'show,new,create,update']); -$routes->group('maquinas', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { - $routes->get('', 'Maquinas::index', ['as' => 'maquinaList']); - $routes->get('add', 'Maquinas::add', ['as' => 'newMaquina']); - $routes->get('edit/(:num)', 'Maquinas::edit/$1'); - $routes->get('delete/(:num)', 'Maquinas::delete/$1'); - $routes->post('add', 'Maquinas::add', ['as' => 'createMaquina']); - $routes->post('create', 'Maquinas::create', ['as' => 'ajaxCreateMaquina']); - $routes->put('update/(:num)', 'Maquinas::update/$1', ['as' => 'ajaxUpdateMaquina']); - $routes->post('edit/(:num)', 'Maquinas::edit/$1', ['as' => 'updateMaquina']); - $routes->post('datatable', 'Maquinas::datatable', ['as' => 'dataTableOfMaquinas']); - $routes->post('allmenuitems', 'Maquinas::allItemsSelect', ['as' => 'select2ItemsOfMaquinas']); - $routes->post('menuitems', 'Maquinas::menuItems', ['as' => 'menuItemsOfMaquinas']); - $routes->post('duplicate/(:num)', 'Maquinas::duplicate/$1', ['as' => 'duplicateMaquina']); - $routes->get('(:num)', 'Maquinas::find_maquina/$1', ['as' => 'findMaquina']); - $routes->get('select', 'Maquinas::select', ['as' => 'selectMaquinas']); -}); -$routes->resource('maquinas', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Maquinas', 'except' => 'show,new,create,update']); +//$routes->resource('maquinas', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Maquinas', 'except' => 'show,new,create,update']); $routes->group('maquinastarifasimpresion', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { @@ -388,6 +409,7 @@ $routes->group('profile', ['namespace' => 'App\Controllers'], function ($routes) $routes->get('', 'Profile::index', ['as' => 'profileList']); $routes->get('index', 'Profile::index', ['as' => 'profileIndex']); $routes->get('list', 'Profile::index', ['as' => 'profileList2']); + $routes->match(['get', 'post'], 'store', 'Profile::store', ['as' => 'profileStore']); }); @@ -417,19 +439,7 @@ $routes->group('formas-pago', ['namespace' => 'App\Controllers\Configuracion'], $routes->resource('formas-pago', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'FormasPago', 'except' => 'show,new,create,update']); -$routes->group('paises', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { - $routes->get('', 'Paises::index', ['as' => 'paisList']); - $routes->get('add', 'Paises::add', ['as' => 'newPais']); - $routes->post('add', 'Paises::add', ['as' => 'createPais']); - $routes->post('create', 'Paises::create', ['as' => 'ajaxCreatePais']); - $routes->put('(:num)/update', 'Paises::update/$1', ['as' => 'ajaxUpdatePais']); - $routes->post('(:num)/edit', 'Paises::edit/$1', ['as' => 'updatePais']); - $routes->post('datatable', 'Paises::datatable', ['as' => 'dataTableOfPaises']); - $routes->post('allmenuitems', 'Paises::allItemsSelect', ['as' => 'select2ItemsOfPaises']); - $routes->post('menuitems', 'Paises::menuItems', ['as' => 'menuItemsOfPaises']); - $routes->get('menuitems2', 'Paises::menuItems2', ['as' => 'menuItemsOfPaises2']); -}); -$routes->resource('paises', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Paises', 'except' => 'show,new,create,update']); +//$routes->resource('paises', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Paises', 'except' => 'show,new,create,update']); $routes->group('provincias', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { @@ -592,7 +602,7 @@ $routes->group('tarifasenvioszonas', ['namespace' => 'App\Controllers\Tarifas'], }); $routes->resource('tarifasenvioszonas', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'Tarifasenvioszonas', 'except' => 'show,new,create,update']); -/* Compras */ +/* Compras */ $routes->group('compras', ['namespace' => 'App\Controllers\Compras'], function ($routes) { $routes->group('proveedores', ['namespace' => 'App\Controllers\Compras'], function ($routes) { $routes->get('', 'Proveedores::index', ['as' => 'proveedorList']); diff --git a/ci4/app/Config/Routing.php b/ci4/app/Config/Routing.php index 220d2074..ae93cab1 100644 --- a/ci4/app/Config/Routing.php +++ b/ci4/app/Config/Routing.php @@ -88,7 +88,7 @@ class Routing extends BaseRouting * * If FALSE, will stop searching and do NO automatic routing. */ - public bool $autoRoute = false; + public bool $autoRoute = false; /** * If TRUE, will enable the use of the 'prioritize' option @@ -96,7 +96,7 @@ class Routing extends BaseRouting * * Default: false */ - public bool $prioritize = false; + public bool $prioritize = true; /** * Map of URI segments and namespaces. For Auto Routing (Improved). diff --git a/ci4/app/Controllers/Configuracion/Maquinas.php b/ci4/app/Controllers/Configuracion/Maquinas.php index 99f88e96..384f0026 100755 --- a/ci4/app/Controllers/Configuracion/Maquinas.php +++ b/ci4/app/Controllers/Configuracion/Maquinas.php @@ -46,7 +46,7 @@ class Maquinas extends \App\Controllers\BaseResourceController // Breadcrumbs (IMN) $this->viewData['breadcrumb'] = [ ['title' => lang("App.menu_configuration"), 'route' => "javascript:void(0);", 'active' => false], - ['title' => lang("App.menu_maquina"), 'route' => site_url('configuracion/maquinas'), 'active' => true] + ['title' => lang("App.menu_maquina"), 'route' => route_to('maquinaList'), 'active' => true] ]; parent::initController($request, $response, $logger); diff --git a/ci4/app/Controllers/Configuracion/Papelesgenericos.php b/ci4/app/Controllers/Configuracion/Papelesgenericos.php index aad7fbb4..ca6b692e 100755 --- a/ci4/app/Controllers/Configuracion/Papelesgenericos.php +++ b/ci4/app/Controllers/Configuracion/Papelesgenericos.php @@ -43,7 +43,7 @@ class Papelesgenericos extends \App\Controllers\BaseResourceController // Breadcrumbs (IMN) $this->viewData['breadcrumb'] = [ ['title' => lang("App.menu_configuration"), 'route' => "javascript:void(0);", 'active' => false], - ['title' => lang("App.menu_papelgenerico"), 'route' => site_url('configuracion/papelesgenericos'), 'active' => true] + ['title' => lang("App.menu_papelgenerico"), 'route' => route_to('papelGenericoList'), 'active' => true] ]; parent::initController($request, $response, $logger); diff --git a/ci4/app/Controllers/Configuracion/Papelesimpresion.php b/ci4/app/Controllers/Configuracion/Papelesimpresion.php index ad24dfd2..c18c1e05 100755 --- a/ci4/app/Controllers/Configuracion/Papelesimpresion.php +++ b/ci4/app/Controllers/Configuracion/Papelesimpresion.php @@ -72,7 +72,7 @@ class Papelesimpresion extends \App\Controllers\BaseResourceController // Breadcrumbs $this->viewData['breadcrumb'] = [ ['title' => lang("App.menu_configuration"), 'route' => "javascript:void(0);", 'active' => false], - ['title' => lang("App.menu_papelimpresion"), 'route' => site_url('configuracion/papelesimpresion'), 'active' => true] + ['title' => lang("App.menu_papelimpresion"), 'route' => route_to('papelImpresionList'), 'active' => true] ]; parent::initController($request, $response, $logger); diff --git a/ci4/app/Views/themes/vuexy/form/configuracion/paises/_paisFormItems.php b/ci4/app/Views/themes/vuexy/form/configuracion/paises/_paisFormItems.php index 7213682f..85fd9a00 100644 --- a/ci4/app/Views/themes/vuexy/form/configuracion/paises/_paisFormItems.php +++ b/ci4/app/Views/themes/vuexy/form/configuracion/paises/_paisFormItems.php @@ -1,66 +1,74 @@ -
-
-
- - -
+
+
+
+ + +
-
- - -
+
+ + +
-
- - -
+
+ + +
-
- - -
+
+ + +
-
-
-
- - -
+
+
+
+ + +
-
- - -
+
+ + +
-
- - -
+
+ + +
-
-
+
+
- -
-
+ +
+
-
+
-
\ No newline at end of file +
\ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/configuracion/paises/viewPaisList.php b/ci4/app/Views/themes/vuexy/form/configuracion/paises/viewPaisList.php index 6bc17da1..2384ae6f 100644 --- a/ci4/app/Views/themes/vuexy/form/configuracion/paises/viewPaisList.php +++ b/ci4/app/Views/themes/vuexy/form/configuracion/paises/viewPaisList.php @@ -112,7 +112,7 @@ }); $(document).on('click', '.btn-edit', function(e) { - window.location.href = `/${$(this).attr('data-id')}/edit`; + window.location.href = `/edit/${$(this).attr('data-id')}`; }); $(document).on('click', '.btn-delete', function(e) { diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_previewItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_previewItems.php index fdd307a9..9b056517 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_previewItems.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_previewItems.php @@ -155,7 +155,7 @@
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- + + endSection() ?> diff --git a/ci4/app/Views/themes/vuexy/main/menu_digitalizacion.php b/ci4/app/Views/themes/vuexy/main/menu_digitalizacion.php index aa66d967..4835f68c 100644 --- a/ci4/app/Views/themes/vuexy/main/menu_digitalizacion.php +++ b/ci4/app/Views/themes/vuexy/main/menu_digitalizacion.php @@ -256,7 +256,7 @@ 0): ?> 0): ?> diff --git a/ci4/app/Views/themes/vuexy/main/menu_maquetacion.php b/ci4/app/Views/themes/vuexy/main/menu_maquetacion.php index b9fa7196..2d40c651 100644 --- a/ci4/app/Views/themes/vuexy/main/menu_maquetacion.php +++ b/ci4/app/Views/themes/vuexy/main/menu_maquetacion.php @@ -299,7 +299,7 @@ 0): ?> 0): ?> diff --git a/ci4/app/Views/themes/vuexy/main/menus/configuracion_menu.php b/ci4/app/Views/themes/vuexy/main/menus/configuracion_menu.php index bb7582a5..f42a1e52 100644 --- a/ci4/app/Views/themes/vuexy/main/menus/configuracion_menu.php +++ b/ci4/app/Views/themes/vuexy/main/menus/configuracion_menu.php @@ -37,21 +37,21 @@ if ( user()->can('papel-generico.menu')) { ?> user()->can('papel-impresion.menu')) { ?> user()->can('maquinas.menu')) { ?> diff --git a/httpdocs/assets/js/safekat/pages/maquinas/duplicate.js b/httpdocs/assets/js/safekat/pages/maquinas/duplicate.js index 4b3a0b65..97bb123f 100644 --- a/httpdocs/assets/js/safekat/pages/maquinas/duplicate.js +++ b/httpdocs/assets/js/safekat/pages/maquinas/duplicate.js @@ -17,7 +17,7 @@ $(() => { $("#btn-new-maquina-duplicate").off(); $("#duplicated_name").addClass("is-valid").removeClass('d-none'); $("#duplicated_name").val("") - window.open('/maquinas/edit/' + response.data.id) + window.open('/configuracion/maquinas/edit/' + response.data.id) }, (error) => { diff --git a/httpdocs/assets/js/safekat/pages/maquinas/maquinasList.js b/httpdocs/assets/js/safekat/pages/maquinas/maquinasList.js index 8dac7849..b63d8151 100644 --- a/httpdocs/assets/js/safekat/pages/maquinas/maquinasList.js +++ b/httpdocs/assets/js/safekat/pages/maquinas/maquinasList.js @@ -35,7 +35,7 @@ class MaquinasList { e.preventDefault(); // Previene cualquier comportamiento por defecto del enlace const dataId = $(this).closest('tr').find('[data-id]').data('id'); // Obtén el ID dinámico - const dynamicUrl = '/maquinas/edit/' + dataId; + const dynamicUrl = '/configuracion/maquinas/edit/' + dataId; if (!Number.isNaN(Number(dataId))) { if (e.ctrlKey || e.metaKey) { @@ -102,7 +102,7 @@ class MaquinasList { this.tableMaquinas = new Table( $('#tableOfMaquinas'), 'maquinasList', - '/maquinas/datatable', + '/configuracion/maquinas/datatable', columns, [] ); From 3cfdc584e57fb3c74259d50e6d1d9cf35d9e82f4 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 8 Apr 2025 15:04:14 +0200 Subject: [PATCH 02/14] =?UTF-8?q?A=C3=B1adida=20estructura=20de=20rutas=20?= =?UTF-8?q?en=20carpeta=20dedicada?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ci4/app/Config/Routes.php | 235 +----------------- ci4/app/Config/Routes/ApiRoutes.php | 27 ++ ci4/app/Config/Routes/ConfiguracionRoutes.php | 152 +++++++++++ ci4/app/Config/Routes/TarifasRoutes.php | 55 ++++ ci4/app/Models/API/ItemModel.php | 46 ---- .../vuexy/main/menus/configuracion_menu.php | 4 +- 6 files changed, 240 insertions(+), 279 deletions(-) create mode 100644 ci4/app/Config/Routes/ApiRoutes.php create mode 100644 ci4/app/Config/Routes/ConfiguracionRoutes.php create mode 100644 ci4/app/Config/Routes/TarifasRoutes.php delete mode 100644 ci4/app/Models/API/ItemModel.php diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index 701fd863..8e3c8258 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -32,188 +32,10 @@ $routes->group('activity', ['namespace' => 'App\Controllers\Sistema'], function * -------------------------------------------------------------------- */ -/* Rutas para tarifas */ -$routes->group('tarifas', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) { - - /* Maquinas */ - $routes->group('maquinas', ['namespace' => 'App\Controllers\Tarifas\Maquinas'], function ($routes) { - - $routes->post('acabado', 'TarifaMaquinas::add_tarifa_acabado_maquina_with_tarea'); - $routes->post('manipulado', 'TarifaMaquinas::add_tarifa_manipulado_maquina_with_tarea'); - $routes->post('preimpresion', 'TarifaMaquinas::add_tarifa_preimpresion_maquina_with_tarea'); - $routes->post('encuadernacion', 'TarifaMaquinas::add_tarifa_encuadernacion_maquina_with_tarea'); - $routes->post('extra', 'TarifaMaquinas::add_tarifa_extra_maquina_with_tarea'); - - - $routes->delete('acabado/(:num)', 'TarifaMaquinas::delete_tarifa_acabado_maquina_with_tarea/$1'); - $routes->delete('manipulado/(:num)', 'TarifaMaquinas::delete_tarifa_manipulado_maquina_with_tarea/$1'); - $routes->delete('preimpresion/(:num)', 'TarifaMaquinas::delete_tarifa_preimpresion_maquina_with_tarea/$1'); - $routes->delete('encuadernacion/(:num)', 'TarifaMaquinas::delete_tarifa_encuadernacion_maquina_with_tarea/$1'); - $routes->delete('extra/(:num)', 'TarifaMaquinas::delete_tarifa_extra_maquina_with_tarea/$1'); - - $routes->get('acabado/select', 'TarifaMaquinas::get_select_maquina_acabado'); - $routes->get('manipulado/select', 'TarifaMaquinas::get_select_maquina_manipulado'); - $routes->get('impresion/select', 'TarifaMaquinas::get_select_maquina_impresion'); - $routes->get('encuadernacion/select', 'TarifaMaquinas::get_select_maquina_manipulado'); - $routes->get('tareas/select', 'TarifaMaquinas::get_select_maquina_tareas'); - - $routes->get('acabado/datatable/(:num)', 'TarifaMaquinas::get_datatable_tarifa_acabado_maquina/$1'); - $routes->get('manipulado/datatable/(:num)', 'TarifaMaquinas::get_datatable_tarifa_manipulado_maquina/$1'); - $routes->get('preimpresion/datatable/(:num)', 'TarifaMaquinas::get_datatable_tarifa_preimpresion_maquina/$1'); - $routes->get('encuadernacion/datatable/(:num)', 'TarifaMaquinas::get_datatable_tarifa_encuadernacion_maquina/$1'); - $routes->get('extra/datatable/(:num)', 'TarifaMaquinas::get_datatable_tarifa_extra_maquina/$1'); - }); - - /* Acabados */ - $routes->group('acabados', ['namespace' => 'App\Controllers\Tarifas\Acabados'], function ($routes) { - - $routes->get('', 'TarifaAcabados::index', ['as' => 'tarifaAcabadoList']); - $routes->get('gettarifas', 'TarifaAcabados::getSelect2'); - $routes->match(['get', 'post'], 'add', 'TarifaAcabados::add', ['as' => 'tarifaAcabadoAdd']); - $routes->match(['get', 'post'], 'edit/(:num)', 'TarifaAcabados::edit/$1', ['as' => 'tarifaAcabadoEdit']); - $routes->get('delete/(:num)', 'TarifaAcabados::delete/$1', ['as' => 'tarifaAcabadoDelete']); - $routes->post('datatable', 'TarifaAcabados::datatable', ['as' => 'tarifaAcabadoDT']); - $routes->get('select', 'TarifaAcabados::show_select', ["as" => "showSelectTarifaAcabado"]); - $routes->group('lineas', ['namespace' => 'App\Controllers\Tarifas\Acabados'], function ($routes) { - $routes->post('datatable', 'TarifaAcabadosLineas::datatable', ['as' => 'tarifaAcabadoLineasDT']); - $routes->post('datatable_editor', 'TarifaAcabadosLineas::datatable_editor', ['as' => 'tarifaAcabadoLineasDTE']); - $routes->get('delete/(:num)', 'TarifaAcabadosLineas::delete/$1', ['as' => 'tarifaAcabadoLineasDelete']); - }); - }); -}); - -/* Rutas para configuraciones */ -$routes->group('configuracion', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { - - /* Paises */ - $routes->group('paises', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { - $routes->get('', 'Paises::index', ['as' => 'paisList']); - $routes->get('add', 'Paises::add', ['as' => 'newPais']); - $routes->post('add', 'Paises::add', ['as' => 'createPais']); - $routes->post('create', 'Paises::create', ['as' => 'ajaxCreatePais']); - $routes->put('update/(:num)', 'Paises::update/$1', ['as' => 'ajaxUpdatePais']); - $routes->match(['get', 'post'], 'edit/(:num)', 'Paises::edit/$1', ['as' => 'updatePais']); - $routes->post('datatable', 'Paises::datatable', ['as' => 'dataTableOfPaises']); - $routes->post('allmenuitems', 'Paises::allItemsSelect', ['as' => 'select2ItemsOfPaises']); - $routes->post('menuitems', 'Paises::menuItems', ['as' => 'menuItemsOfPaises']); - $routes->get('menuitems2', 'Paises::menuItems2', ['as' => 'menuItemsOfPaises2']); - }); - - - /* Papeles genericos */ - $routes->group('papelesgenericos', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { - $routes->get('', 'Papelesgenericos::index', ['as' => 'papelGenericoList']); - $routes->delete('', 'Papelesgenericos::index', ['as' => 'papelGenericoList2']); - $routes->get('add', 'Papelesgenericos::add', ['as' => 'newPapelGenerico']); - $routes->post('add', 'Papelesgenericos::add', ['as' => 'createPapelGenerico']); - $routes->post('create', 'Papelesgenericos::create', ['as' => 'ajaxCreatePapelGenerico']); - $routes->put('(:num)/update', 'Papelesgenericos::update/$1', ['as' => 'ajaxUpdatePapelGenerico']); - $routes->match(['get', 'post'], 'edit/(:num)', 'Papelesgenericos::edit/$1', ['as' => 'updatePapelGenerico']); - $routes->post('datatable', 'Papelesgenericos::datatable', ['as' => 'dataTableOfPapelesGenericos']); - $routes->post('allmenuitems', 'Papelesgenericos::allItemsSelect', ['as' => 'select2ItemsOfPapelesGenericos']); - $routes->post('menuitems', 'Papelesgenericos::menuItems', ['as' => 'menuItemsOfPapelesGenericos']); - $routes->get('getpapelcliente', 'Papelesgenericos::getPapelCliente', ['as' => 'getPapelCliente']); - $routes->get('selectpapelespecial', 'Papelesgenericos::selectPapelEspecial', ['as' => 'selectPapelEspecial']); - }); - - /* Papeles impresion */ - $routes->group('papelesimpresion', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { - $routes->get('', 'Papelesimpresion::index', ['as' => 'papelImpresionList']); - $routes->get('add', 'Papelesimpresion::add', ['as' => 'newPapelImpresion']); - $routes->post('add', 'Papelesimpresion::add', ['as' => 'createPapelImpresion']); - $routes->post('create', 'Papelesimpresion::create', ['as' => 'ajaxCreatePapelImpresion']); - $routes->put('(:num)/update', 'Papelesimpresion::update/$1', ['as' => 'ajaxUpdatePapelImpresion']); - $routes->match(['get', 'post'], 'edit/(:num)', 'Papelesimpresion::edit/$1', ['as' => 'updatePapelImpresion']); - $routes->post('datatable', 'Papelesimpresion::datatable', ['as' => 'dataTableOfPapelesImpresion']); - $routes->post('allmenuitems', 'Papelesimpresion::allItemsSelect', ['as' => 'select2ItemsOfPapelesImpresion']); - $routes->post('menuitems', 'Papelesimpresion::menuItems', ['as' => 'menuItemsOfPapelesImpresion']); - $routes->post('duplicate/(:num)', 'Papelesimpresion::duplicate/$1', ['as' => 'duplicatePapelImpresion']); - $routes->get('select', 'Papelesimpresion::papel_impresion_select', ['as' => 'papelImpresionSelect']); - $routes->get('show/(:num)', 'Papelesimpresion::papel_impresion_find/$1', ['as' => 'showPapelImpresion']); - - }); - - /* Maquinas */ - $routes->group('maquinas', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { - $routes->get('', 'Maquinas::index', ['as' => 'maquinaList']); - $routes->get('add', 'Maquinas::add', ['as' => 'newMaquina']); - $routes->get('edit/(:num)', 'Maquinas::edit/$1'); - $routes->get('delete/(:num)', 'Maquinas::delete/$1'); - $routes->post('add', 'Maquinas::add', ['as' => 'createMaquina']); - $routes->post('create', 'Maquinas::create', ['as' => 'ajaxCreateMaquina']); - $routes->put('update/(:num)', 'Maquinas::update/$1', ['as' => 'ajaxUpdateMaquina']); - $routes->match(['get', 'post'], 'edit/(:num)', 'Maquinas::edit/$1', ['as' => 'updateMaquina']); - $routes->post('datatable', 'Maquinas::datatable', ['as' => 'dataTableOfMaquinas']); - $routes->post('allmenuitems', 'Maquinas::allItemsSelect', ['as' => 'select2ItemsOfMaquinas']); - $routes->post('menuitems', 'Maquinas::menuItems', ['as' => 'menuItemsOfMaquinas']); - $routes->post('duplicate/(:num)', 'Maquinas::duplicate/$1', ['as' => 'duplicateMaquina']); - $routes->get('(:num)', 'Maquinas::find_maquina/$1', ['as' => 'findMaquina']); - $routes->get('select', 'Maquinas::select', ['as' => 'selectMaquinas']); - }); - - - /* Ubicaciones */ - $routes->group('ubicaciones', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { - - $routes->get('', 'Ubicaciones::index', ['as' => 'ubicacionesList']); - $routes->match(['get', 'post'], 'add', 'Ubicaciones::add', ['as' => 'ubicacionesAdd']); - $routes->match(['get', 'post'], 'edit/(:num)', 'Ubicaciones::edit/$1', ['as' => 'ubicacionesEdit']); - $routes->get('delete/(:num)', 'Ubicaciones::delete/$1', ['as' => 'ubicacionesDelete']); - $routes->post('datatable', 'Ubicaciones::datatable', ['as' => 'ubicacionesDT']); - }); - - /* Permisos y roles */ - $routes->group('group', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { - $routes->get('', 'Group::index', ['as' => 'userGroupList']); - $routes->get('index', 'Group::index', ['as' => 'groupIndex']); - $routes->post('edit/(:num)', 'Group::edit/$1', ['as' => 'updateGroup']); - $routes->get('edit/(:num)', 'Group::edit/$1', ['as' => 'editGroup']); - $routes->get('delete/(:num)', 'Group::delete/$1', ['as' => 'deleteGroup']); - $routes->get('add', 'Group::add', ['as' => 'newGroup']); - $routes->post('add', 'Group::add', ['as' => 'createGroup']); - }); - - /* Series Factura */ - $routes->group('series-facturas', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { - $routes->get('', 'SeriesFacturas::index', ['as' => 'seriesFacturasList']); - $routes->match(['get', 'post'], 'add', 'SeriesFacturas::add', ['as' => 'seriesFacturasAdd']); - $routes->match(['get', 'post'], 'edit/(:num)', 'SeriesFacturas::edit/$1', ['as' => 'seriesFacturasEdit']); - $routes->get('delete/(:num)', 'SeriesFacturas::delete/$1', ['as' => 'seriesFacturasDelete']); - $routes->post('datatable', 'SeriesFacturas::datatable', ['as' => 'seriesFacturasDT']); - $routes->post('menuitemsFacturas', 'SeriesFacturas::menuItemsFacturas', ['as' => 'menuItemsOfSeriesFacturas']); - }); - - /* Variables del sistema */ - $routes->group("variables", ["namespace" => 'App\Controllers\Configuracion'], function ($routes) { - $routes->get('', 'ConfigVariables::index', ['as' => 'variablesIndex']); - $routes->get('find/(:num)', 'ConfigVariables::get/$1', ['as' => 'variablesFind']); - $routes->post('edit/(:num)', 'ConfigVariables::updateVariable/$1', ['as' => 'updateVariable']); - $routes->delete('delete/(:num)', 'ConfigVariables::delete/$1', ['as' => 'deleteVariable']); - $routes->get('datatable', 'ConfigVariables::datatable', ['as' => 'datatableVariables']); - }); - - /* Errores en presupuestos */ - $routes->group("errores-presupuesto", ["namespace" => 'App\Controllers\Configuracion'], function ($routes) { - $routes->get('', 'ConfigErrores::index', ['as' => 'erroresPresupuestoIndex']); - $routes->get('edit/(:num)', 'ConfigErrores::viewForm/$1', ['as' => 'erroresPresupuestoViewForm']); - $routes->get('get/(:num)', 'ConfigErrores::get_error_presupuesto/$1', ['as' => 'erroresPresupuestoGetErrorPresupuesto']); - $routes->get('datatable', 'ConfigErrores::datatable', ['as' => 'erroresPresupuestoDatatable']); - $routes->post('edit/(:num)', 'ConfigErrores::update_error_presupuesto/$1', ['as' => 'erroresPresupuestoUpdate']); - }); - - $routes->group("maquina-tareas", ["namespace" => 'App\Controllers\Configuracion'], function ($routes) { - $routes->get('', 'MaquinaTarea::index', ['as' => 'maquinaTareaList']); - $routes->get('(:num)', 'MaquinaTarea::show/$1', ['as' => 'maquinaTareaShow']); - $routes->delete('(:num)', 'MaquinaTarea::delete/$1', ['as' => 'maquinaTareaDelete']); - $routes->post('', 'MaquinaTarea::store/$1', ['as' => 'maquinaTareaStore']); - $routes->post('update/(:num)', 'MaquinaTarea::update_servicio_cliente/$1', ['as' => 'maquinaTareaUpdate']); - $routes->get('edit/(:num)', 'MaquinaTarea::viewForm/$1', ['as' => 'maquinaTareaViewForm']); - $routes->get('datatable', 'MaquinaTarea::datatable', ['as' => 'maquinaTareaDatatable']); - }); - $routes->group("messages", ["namespace" => 'App\Controllers\Chat'], function ($routes) { - $routes->get('', 'ChatController::config_view', ['as' => 'configMessagesIndex']); - }); -}); + // Carga archivos de rutas por dominio +foreach (glob(APPPATH . 'Config/Routes/*Routes.php') as $routeFile) { + require $routeFile; +} $routes->group('users', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { @@ -334,10 +156,6 @@ $routes->group('imposiciones', ['namespace' => 'App\Controllers\Configuracion'], }); $routes->resource('imposiciones', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Imposiciones', 'except' => 'show,new,create,update']); - - -//$routes->resource('papelesimpresion', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Papelesimpresion', 'except' => 'show,new,create,update']); - $routes->group('papelimpresiontipologias', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { $routes->get('add', 'Papelimpresiontipologias::add', ['as' => 'newPapelImpresionTipologia']); $routes->post('add', 'Papelimpresiontipologias::add', ['as' => 'createPapelImpresionTipologia']); @@ -355,9 +173,6 @@ $routes->group('papelesimpresionmargenes', ['namespace' => 'App\Controllers\Conf }); $routes->resource('papelesimpresionmargenes', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Papelimpresionmargenes', 'except' => 'show,new,create,update']); -//$routes->resource('maquinas', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Maquinas', 'except' => 'show,new,create,update']); - - $routes->group('maquinastarifasimpresion', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { $routes->get('', 'Maquinastarifasimpresion::index', ['as' => 'maquinasTarifaImpresionList']); $routes->get('add', 'Maquinastarifasimpresion::add', ['as' => 'newMaquinasTarifaImpresion']); @@ -391,20 +206,6 @@ $routes->group('maquinaspapelesimpresion', ['namespace' => 'App\Controllers\Conf $routes->resource('maquinastarifasimpresion', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Maquinastarifasimpresion', 'except' => 'show,new,create,update']); -$routes->group('maquinasdefecto', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { - $routes->get('', 'Maquinasdefecto::index', ['as' => 'maquinaPorDefectoList']); - $routes->get('add', 'Maquinasdefecto::add', ['as' => 'newMaquinaPorDefecto']); - $routes->post('add', 'Maquinasdefecto::add', ['as' => 'createMaquinaPorDefecto']); - $routes->post('create', 'Maquinasdefecto::create', ['as' => 'ajaxCreateMaquinaPorDefecto']); - $routes->put('(:num)/update', 'Maquinasdefecto::update/$1', ['as' => 'ajaxUpdateMaquinaPorDefecto']); - $routes->post('edit/(:num)', 'Maquinasdefecto::edit/$1', ['as' => 'updateMaquinaPorDefecto']); - $routes->post('datatable', 'Maquinasdefecto::datatable', ['as' => 'dataTableOfMaquinasPorDefecto']); - $routes->post('allmenuitems', 'Maquinasdefecto::allItemsSelect', ['as' => 'select2ItemsOfMaquinasPorDefecto']); - $routes->post('menuitems', 'Maquinasdefecto::menuItems', ['as' => 'menuItemsOfMaquinasPorDefecto']); -}); -$routes->resource('maquinasdefecto', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Maquinasdefecto', 'except' => 'show,new,create,update']); - - $routes->group('profile', ['namespace' => 'App\Controllers'], function ($routes) { $routes->get('', 'Profile::index', ['as' => 'profileList']); $routes->get('index', 'Profile::index', ['as' => 'profileIndex']); @@ -439,9 +240,6 @@ $routes->group('formas-pago', ['namespace' => 'App\Controllers\Configuracion'], $routes->resource('formas-pago', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'FormasPago', 'except' => 'show,new,create,update']); -//$routes->resource('paises', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Paises', 'except' => 'show,new,create,update']); - - $routes->group('provincias', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { $routes->get('', 'Provincias::index', ['as' => 'provinciaList']); $routes->get('add', 'Provincias::add', ['as' => 'newProvincia']); @@ -1050,31 +848,6 @@ $routes->group('logistica', ['namespace' => 'App\Controllers\Logistica'], functi $routes->get('print/label/test', 'LogisticaController::print_test_label'); }); -/* - * -------------------------------------------------------------------- - * APIs Route Definitions - * -------------------------------------------------------------------- - */ -$routes->post('auth/jwt', '\App\Controllers\Sistema\AuthAPIController::jwtLogin'); - -$routes->group( - 'api', - [ - 'namespace' => 'App\Controllers\API', - 'filter' => 'jwt' - ], - static function ($routes) { - - $routes->resource('items', [ - 'controller' => 'ItemsController', - 'filter' => 'cors' - ]); - - $routes->post("calcular", 'ImprimelibrosApi::calcular'); - $routes->post("guardar", 'ImprimelibrosApi::guardar'); - // ... - } -); /* * -------------------------------------------------------------------- diff --git a/ci4/app/Config/Routes/ApiRoutes.php b/ci4/app/Config/Routes/ApiRoutes.php new file mode 100644 index 00000000..6d5487a4 --- /dev/null +++ b/ci4/app/Config/Routes/ApiRoutes.php @@ -0,0 +1,27 @@ +post('auth/jwt', '\App\Controllers\Sistema\AuthAPIController::jwtLogin'); + +$routes->group( + 'api', + [ + 'namespace' => 'App\Controllers\API', + 'filter' => 'jwt' + ], + static function ($routes) { + + $routes->post("calcular", 'ImprimelibrosApi::calcular'); + $routes->post("guardar", 'ImprimelibrosApi::guardar'); + // ... + } +); \ No newline at end of file diff --git a/ci4/app/Config/Routes/ConfiguracionRoutes.php b/ci4/app/Config/Routes/ConfiguracionRoutes.php new file mode 100644 index 00000000..947c4e8e --- /dev/null +++ b/ci4/app/Config/Routes/ConfiguracionRoutes.php @@ -0,0 +1,152 @@ +group('configuracion', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { + + /* Paises */ + $routes->group('paises', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { + $routes->get('', 'Paises::index', ['as' => 'paisList']); + $routes->get('add', 'Paises::add', ['as' => 'newPais']); + $routes->post('add', 'Paises::add', ['as' => 'createPais']); + $routes->post('create', 'Paises::create', ['as' => 'ajaxCreatePais']); + $routes->put('update/(:num)', 'Paises::update/$1', ['as' => 'ajaxUpdatePais']); + $routes->match(['get', 'post'], 'edit/(:num)', 'Paises::edit/$1', ['as' => 'updatePais']); + $routes->post('datatable', 'Paises::datatable', ['as' => 'dataTableOfPaises']); + $routes->post('allmenuitems', 'Paises::allItemsSelect', ['as' => 'select2ItemsOfPaises']); + $routes->post('menuitems', 'Paises::menuItems', ['as' => 'menuItemsOfPaises']); + $routes->get('menuitems2', 'Paises::menuItems2', ['as' => 'menuItemsOfPaises2']); + }); + + + /* Papeles genericos */ + $routes->group('papelesgenericos', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { + $routes->get('', 'Papelesgenericos::index', ['as' => 'papelGenericoList']); + $routes->delete('', 'Papelesgenericos::index', ['as' => 'papelGenericoList2']); + $routes->get('add', 'Papelesgenericos::add', ['as' => 'newPapelGenerico']); + $routes->post('add', 'Papelesgenericos::add', ['as' => 'createPapelGenerico']); + $routes->post('create', 'Papelesgenericos::create', ['as' => 'ajaxCreatePapelGenerico']); + $routes->put('(:num)/update', 'Papelesgenericos::update/$1', ['as' => 'ajaxUpdatePapelGenerico']); + $routes->match(['get', 'post'], 'edit/(:num)', 'Papelesgenericos::edit/$1', ['as' => 'updatePapelGenerico']); + $routes->post('datatable', 'Papelesgenericos::datatable', ['as' => 'dataTableOfPapelesGenericos']); + $routes->post('allmenuitems', 'Papelesgenericos::allItemsSelect', ['as' => 'select2ItemsOfPapelesGenericos']); + $routes->post('menuitems', 'Papelesgenericos::menuItems', ['as' => 'menuItemsOfPapelesGenericos']); + $routes->get('getpapelcliente', 'Papelesgenericos::getPapelCliente', ['as' => 'getPapelCliente']); + $routes->get('selectpapelespecial', 'Papelesgenericos::selectPapelEspecial', ['as' => 'selectPapelEspecial']); + }); + + /* Papeles impresion */ + $routes->group('papelesimpresion', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { + $routes->get('', 'Papelesimpresion::index', ['as' => 'papelImpresionList']); + $routes->get('add', 'Papelesimpresion::add', ['as' => 'newPapelImpresion']); + $routes->post('add', 'Papelesimpresion::add', ['as' => 'createPapelImpresion']); + $routes->post('create', 'Papelesimpresion::create', ['as' => 'ajaxCreatePapelImpresion']); + $routes->put('(:num)/update', 'Papelesimpresion::update/$1', ['as' => 'ajaxUpdatePapelImpresion']); + $routes->match(['get', 'post'], 'edit/(:num)', 'Papelesimpresion::edit/$1', ['as' => 'updatePapelImpresion']); + $routes->post('datatable', 'Papelesimpresion::datatable', ['as' => 'dataTableOfPapelesImpresion']); + $routes->post('allmenuitems', 'Papelesimpresion::allItemsSelect', ['as' => 'select2ItemsOfPapelesImpresion']); + $routes->post('menuitems', 'Papelesimpresion::menuItems', ['as' => 'menuItemsOfPapelesImpresion']); + $routes->post('duplicate/(:num)', 'Papelesimpresion::duplicate/$1', ['as' => 'duplicatePapelImpresion']); + $routes->get('select', 'Papelesimpresion::papel_impresion_select', ['as' => 'papelImpresionSelect']); + $routes->get('show/(:num)', 'Papelesimpresion::papel_impresion_find/$1', ['as' => 'showPapelImpresion']); + + }); + + /* Maquinas */ + $routes->group('maquinas', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { + $routes->get('', 'Maquinas::index', ['as' => 'maquinaList']); + $routes->get('add', 'Maquinas::add', ['as' => 'newMaquina']); + $routes->get('edit/(:num)', 'Maquinas::edit/$1'); + $routes->get('delete/(:num)', 'Maquinas::delete/$1'); + $routes->post('add', 'Maquinas::add', ['as' => 'createMaquina']); + $routes->post('create', 'Maquinas::create', ['as' => 'ajaxCreateMaquina']); + $routes->put('update/(:num)', 'Maquinas::update/$1', ['as' => 'ajaxUpdateMaquina']); + $routes->match(['get', 'post'], 'edit/(:num)', 'Maquinas::edit/$1', ['as' => 'updateMaquina']); + $routes->post('datatable', 'Maquinas::datatable', ['as' => 'dataTableOfMaquinas']); + $routes->post('allmenuitems', 'Maquinas::allItemsSelect', ['as' => 'select2ItemsOfMaquinas']); + $routes->post('menuitems', 'Maquinas::menuItems', ['as' => 'menuItemsOfMaquinas']); + $routes->post('duplicate/(:num)', 'Maquinas::duplicate/$1', ['as' => 'duplicateMaquina']); + $routes->get('(:num)', 'Maquinas::find_maquina/$1', ['as' => 'findMaquina']); + $routes->get('select', 'Maquinas::select', ['as' => 'selectMaquinas']); + }); + + /* Maquinas por defecto */ + $routes->group('maquinasdefecto', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { + $routes->get('', 'Maquinasdefecto::index', ['as' => 'maquinaPorDefectoList']); + $routes->get('add', 'Maquinasdefecto::add', ['as' => 'newMaquinaPorDefecto']); + $routes->post('add', 'Maquinasdefecto::add', ['as' => 'createMaquinaPorDefecto']); + $routes->post('create', 'Maquinasdefecto::create', ['as' => 'ajaxCreateMaquinaPorDefecto']); + $routes->put('(:num)/update', 'Maquinasdefecto::update/$1', ['as' => 'ajaxUpdateMaquinaPorDefecto']); + $routes->match(['get', 'post'], 'edit/(:num)', 'Maquinasdefecto::edit/$1', ['as' => 'updateMaquinaPorDefecto']); + $routes->post('datatable', 'Maquinasdefecto::datatable', ['as' => 'dataTableOfMaquinasPorDefecto']); + $routes->post('allmenuitems', 'Maquinasdefecto::allItemsSelect', ['as' => 'select2ItemsOfMaquinasPorDefecto']); + $routes->post('menuitems', 'Maquinasdefecto::menuItems', ['as' => 'menuItemsOfMaquinasPorDefecto']); + }); + + + /* Ubicaciones */ + $routes->group('ubicaciones', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { + + $routes->get('', 'Ubicaciones::index', ['as' => 'ubicacionesList']); + $routes->match(['get', 'post'], 'add', 'Ubicaciones::add', ['as' => 'ubicacionesAdd']); + $routes->match(['get', 'post'], 'edit/(:num)', 'Ubicaciones::edit/$1', ['as' => 'ubicacionesEdit']); + $routes->get('delete/(:num)', 'Ubicaciones::delete/$1', ['as' => 'ubicacionesDelete']); + $routes->post('datatable', 'Ubicaciones::datatable', ['as' => 'ubicacionesDT']); + }); + + /* Permisos y roles */ + $routes->group('group', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { + $routes->get('', 'Group::index', ['as' => 'userGroupList']); + $routes->get('index', 'Group::index', ['as' => 'groupIndex']); + $routes->post('edit/(:num)', 'Group::edit/$1', ['as' => 'updateGroup']); + $routes->get('edit/(:num)', 'Group::edit/$1', ['as' => 'editGroup']); + $routes->get('delete/(:num)', 'Group::delete/$1', ['as' => 'deleteGroup']); + $routes->get('add', 'Group::add', ['as' => 'newGroup']); + $routes->post('add', 'Group::add', ['as' => 'createGroup']); + }); + + /* Series Factura */ + $routes->group('series-facturas', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { + $routes->get('', 'SeriesFacturas::index', ['as' => 'seriesFacturasList']); + $routes->match(['get', 'post'], 'add', 'SeriesFacturas::add', ['as' => 'seriesFacturasAdd']); + $routes->match(['get', 'post'], 'edit/(:num)', 'SeriesFacturas::edit/$1', ['as' => 'seriesFacturasEdit']); + $routes->get('delete/(:num)', 'SeriesFacturas::delete/$1', ['as' => 'seriesFacturasDelete']); + $routes->post('datatable', 'SeriesFacturas::datatable', ['as' => 'seriesFacturasDT']); + $routes->post('menuitemsFacturas', 'SeriesFacturas::menuItemsFacturas', ['as' => 'menuItemsOfSeriesFacturas']); + }); + + /* Variables del sistema */ + $routes->group("variables", ["namespace" => 'App\Controllers\Configuracion'], function ($routes) { + $routes->get('', 'ConfigVariables::index', ['as' => 'variablesIndex']); + $routes->get('find/(:num)', 'ConfigVariables::get/$1', ['as' => 'variablesFind']); + $routes->post('edit/(:num)', 'ConfigVariables::updateVariable/$1', ['as' => 'updateVariable']); + $routes->delete('delete/(:num)', 'ConfigVariables::delete/$1', ['as' => 'deleteVariable']); + $routes->get('datatable', 'ConfigVariables::datatable', ['as' => 'datatableVariables']); + }); + + /* Errores en presupuestos */ + $routes->group("errores-presupuesto", ["namespace" => 'App\Controllers\Configuracion'], function ($routes) { + $routes->get('', 'ConfigErrores::index', ['as' => 'erroresPresupuestoIndex']); + $routes->get('edit/(:num)', 'ConfigErrores::viewForm/$1', ['as' => 'erroresPresupuestoViewForm']); + $routes->get('get/(:num)', 'ConfigErrores::get_error_presupuesto/$1', ['as' => 'erroresPresupuestoGetErrorPresupuesto']); + $routes->get('datatable', 'ConfigErrores::datatable', ['as' => 'erroresPresupuestoDatatable']); + $routes->post('edit/(:num)', 'ConfigErrores::update_error_presupuesto/$1', ['as' => 'erroresPresupuestoUpdate']); + }); + + $routes->group("maquina-tareas", ["namespace" => 'App\Controllers\Configuracion'], function ($routes) { + $routes->get('', 'MaquinaTarea::index', ['as' => 'maquinaTareaList']); + $routes->get('(:num)', 'MaquinaTarea::show/$1', ['as' => 'maquinaTareaShow']); + $routes->delete('(:num)', 'MaquinaTarea::delete/$1', ['as' => 'maquinaTareaDelete']); + $routes->post('', 'MaquinaTarea::store/$1', ['as' => 'maquinaTareaStore']); + $routes->post('update/(:num)', 'MaquinaTarea::update_servicio_cliente/$1', ['as' => 'maquinaTareaUpdate']); + $routes->get('edit/(:num)', 'MaquinaTarea::viewForm/$1', ['as' => 'maquinaTareaViewForm']); + $routes->get('datatable', 'MaquinaTarea::datatable', ['as' => 'maquinaTareaDatatable']); + }); + $routes->group("messages", ["namespace" => 'App\Controllers\Chat'], function ($routes) { + $routes->get('', 'ChatController::config_view', ['as' => 'configMessagesIndex']); + }); +}); + diff --git a/ci4/app/Config/Routes/TarifasRoutes.php b/ci4/app/Config/Routes/TarifasRoutes.php new file mode 100644 index 00000000..e88ec3df --- /dev/null +++ b/ci4/app/Config/Routes/TarifasRoutes.php @@ -0,0 +1,55 @@ +group('tarifas', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) { + + /* Maquinas */ + $routes->group('maquinas', ['namespace' => 'App\Controllers\Tarifas\Maquinas'], function ($routes) { + + $routes->post('acabado', 'TarifaMaquinas::add_tarifa_acabado_maquina_with_tarea'); + $routes->post('manipulado', 'TarifaMaquinas::add_tarifa_manipulado_maquina_with_tarea'); + $routes->post('preimpresion', 'TarifaMaquinas::add_tarifa_preimpresion_maquina_with_tarea'); + $routes->post('encuadernacion', 'TarifaMaquinas::add_tarifa_encuadernacion_maquina_with_tarea'); + $routes->post('extra', 'TarifaMaquinas::add_tarifa_extra_maquina_with_tarea'); + + + $routes->delete('acabado/(:num)', 'TarifaMaquinas::delete_tarifa_acabado_maquina_with_tarea/$1'); + $routes->delete('manipulado/(:num)', 'TarifaMaquinas::delete_tarifa_manipulado_maquina_with_tarea/$1'); + $routes->delete('preimpresion/(:num)', 'TarifaMaquinas::delete_tarifa_preimpresion_maquina_with_tarea/$1'); + $routes->delete('encuadernacion/(:num)', 'TarifaMaquinas::delete_tarifa_encuadernacion_maquina_with_tarea/$1'); + $routes->delete('extra/(:num)', 'TarifaMaquinas::delete_tarifa_extra_maquina_with_tarea/$1'); + + $routes->get('acabado/select', 'TarifaMaquinas::get_select_maquina_acabado'); + $routes->get('manipulado/select', 'TarifaMaquinas::get_select_maquina_manipulado'); + $routes->get('impresion/select', 'TarifaMaquinas::get_select_maquina_impresion'); + $routes->get('encuadernacion/select', 'TarifaMaquinas::get_select_maquina_manipulado'); + $routes->get('tareas/select', 'TarifaMaquinas::get_select_maquina_tareas'); + + $routes->get('acabado/datatable/(:num)', 'TarifaMaquinas::get_datatable_tarifa_acabado_maquina/$1'); + $routes->get('manipulado/datatable/(:num)', 'TarifaMaquinas::get_datatable_tarifa_manipulado_maquina/$1'); + $routes->get('preimpresion/datatable/(:num)', 'TarifaMaquinas::get_datatable_tarifa_preimpresion_maquina/$1'); + $routes->get('encuadernacion/datatable/(:num)', 'TarifaMaquinas::get_datatable_tarifa_encuadernacion_maquina/$1'); + $routes->get('extra/datatable/(:num)', 'TarifaMaquinas::get_datatable_tarifa_extra_maquina/$1'); + }); + + /* Acabados */ + $routes->group('acabados', ['namespace' => 'App\Controllers\Tarifas\Acabados'], function ($routes) { + + $routes->get('', 'TarifaAcabados::index', ['as' => 'tarifaAcabadoList']); + $routes->get('gettarifas', 'TarifaAcabados::getSelect2'); + $routes->match(['get', 'post'], 'add', 'TarifaAcabados::add', ['as' => 'tarifaAcabadoAdd']); + $routes->match(['get', 'post'], 'edit/(:num)', 'TarifaAcabados::edit/$1', ['as' => 'tarifaAcabadoEdit']); + $routes->get('delete/(:num)', 'TarifaAcabados::delete/$1', ['as' => 'tarifaAcabadoDelete']); + $routes->post('datatable', 'TarifaAcabados::datatable', ['as' => 'tarifaAcabadoDT']); + $routes->get('select', 'TarifaAcabados::show_select', ["as" => "showSelectTarifaAcabado"]); + $routes->group('lineas', ['namespace' => 'App\Controllers\Tarifas\Acabados'], function ($routes) { + $routes->post('datatable', 'TarifaAcabadosLineas::datatable', ['as' => 'tarifaAcabadoLineasDT']); + $routes->post('datatable_editor', 'TarifaAcabadosLineas::datatable_editor', ['as' => 'tarifaAcabadoLineasDTE']); + $routes->get('delete/(:num)', 'TarifaAcabadosLineas::delete/$1', ['as' => 'tarifaAcabadoLineasDelete']); + }); + }); +}); \ No newline at end of file diff --git a/ci4/app/Models/API/ItemModel.php b/ci4/app/Models/API/ItemModel.php deleted file mode 100644 index e61e4654..00000000 --- a/ci4/app/Models/API/ItemModel.php +++ /dev/null @@ -1,46 +0,0 @@ - user()->can('maquinas.menu')) { ?> user()->can('maquinas-defecto.menu')) { ?> From 03135fdac7709cd6f58857e16646f5c8ffcb0108 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 8 Apr 2025 15:22:39 +0200 Subject: [PATCH 03/14] =?UTF-8?q?A=C3=B1adidos=20archivos=20de=20rutas=20p?= =?UTF-8?q?ara=20presupuestos=20y=20compras?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ci4/app/Config/Routes.php | 78 -------------------- ci4/app/Config/Routes/ComprasRoutes.php | 27 +++++++ ci4/app/Config/Routes/PresupuestosRoutes.php | 64 ++++++++++++++++ 3 files changed, 91 insertions(+), 78 deletions(-) create mode 100644 ci4/app/Config/Routes/ComprasRoutes.php create mode 100644 ci4/app/Config/Routes/PresupuestosRoutes.php diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index 8e3c8258..8b6335a4 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -400,28 +400,8 @@ $routes->group('tarifasenvioszonas', ['namespace' => 'App\Controllers\Tarifas'], }); $routes->resource('tarifasenvioszonas', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'Tarifasenvioszonas', 'except' => 'show,new,create,update']); -/* Compras */ -$routes->group('compras', ['namespace' => 'App\Controllers\Compras'], function ($routes) { - $routes->group('proveedores', ['namespace' => 'App\Controllers\Compras'], function ($routes) { - $routes->get('', 'Proveedores::index', ['as' => 'proveedorList']); - $routes->get('add', 'Proveedores::add', ['as' => 'newProveedor']); - $routes->post('add', 'Proveedores::add', ['as' => 'createProveedor']); - $routes->post('create', 'Proveedores::create', ['as' => 'ajaxCreateProveedor']); - $routes->put('(:num)/update', 'Proveedores::update/$1', ['as' => 'ajaxUpdateProveedor']); - $routes->get('edit/(:num)', 'Proveedores::edit/$1', ['as' => 'editProveedor']); - $routes->post('edit/(:num)', 'Proveedores::edit/$1', ['as' => 'updateProveedor']); - $routes->post('datatable', 'Proveedores::datatable', ['as' => 'dataTableOfProveedores']); - $routes->get('delete/(:num)', 'Proveedores::delete/$1', ['as' => 'deleteProveedores']); - $routes->post('allmenuitems', 'Proveedores::allItemsSelect', ['as' => 'select2ItemsOfProveedores']); - $routes->post('menuitems', 'Proveedores::menuItems', ['as' => 'menuItemsOfProveedores']); - }); -}); -$routes->resource('proveedores', ['namespace' => 'App\Controllers\Compras', 'controller' => 'Proveedores', 'except' => 'show,new,create,update']); -$routes->group('proveedorestipos', ['namespace' => 'App\Controllers\Compras'], function ($routes) { - $routes->post('menuitems', 'ProveedoresTipos::menuItems', ['as' => 'menuItemsOfProveedoresTipos']); -}); $routes->resource('proveedorestipos', ['namespace' => 'App\Controllers\Compras', 'controller' => 'ProveedoresTipos', 'except' => 'show,new,create,update']); @@ -450,64 +430,6 @@ $routes->group('clientedirecciones', ['namespace' => 'App\Controllers\Clientes'] $routes->resource('clientedirecciones', ['namespace' => 'App\Controllers\Clientes', 'controller' => 'Clientedirecciones', 'except' => 'show,new,create,update']); -$routes->group('presupuestoadmin', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { - $routes->get('list/(:num)', 'Presupuestoadmin::list/$1', ['as' => 'presupuestoAdminList']); // HOMOGENIZAR CON ARGS DINAMICOS!!! - $routes->get('add/(:num)', 'Presupuestoadmin::add/$1', ['as' => 'newPresupuestoAdmin']); - $routes->get('edit/(:any)', 'Presupuestoadmin::edit/$1', ['as' => 'editarPresupuestoAdmin']); - $routes->post('add/(:num)', 'Presupuestoadmin::add/$1', ['as' => 'createPresupuestoAdmin']); - $routes->post('create', 'Presupuestoadmin::create', ['as' => 'ajaxCreatePresupuestoAdmin']); - $routes->put('(:num)/update', 'Presupuestoadmin::update/$1', ['as' => 'ajaxUpdatePresupuestoAdmin']); - $routes->post('edit/(:num)', 'Presupuestoadmin::edit/$1', ['as' => 'updatePresupuestoAdmin']); - $routes->post('datatable', 'Presupuestoadmin::datatable', ['as' => 'dataTableOfPresupuestoAdmin']); - $routes->post('datatable_2', 'Presupuestoadmin::datatable_2', ['as' => 'updateDataOfPresupuestoAdmin']); - $routes->post('allmenuitems', 'Presupuestoadmin::allItemsSelect', ['as' => 'select2ItemsOfPresupuestoAdmin']); - $routes->post('menuitems', 'Presupuestoadmin::menuItems', ['as' => 'menuItemsOfPresupuestoAdmin']); - - $routes->get('cargar/(:any)', 'Presupuestoadmin::cargar/$1'); - $routes->post('comparadorinterior', 'Presupuestoadmin::obtenerComparadorInterior'); - $routes->post('comparadorexteriores', 'Presupuestoadmin::obtenerComparadorExteriores'); - $routes->post('comparadorguardas', 'Presupuestoadmin::obtenerComparadorGuardas'); - $routes->get('papelgenerico', 'Presupuestoadmin::getPapelGenerico'); - $routes->get('papelgramaje', 'Presupuestoadmin::getGramaje'); - $routes->get('papelimpresion', 'Presupuestoadmin::getPapelImpresion'); - $routes->get('maquinas', 'Presupuestoadmin::getMaquinas'); - $routes->post('getlinea', 'Presupuestoadmin::getLineaPresupuesto'); - $routes->post('clone', 'Presupuestoadmin::datatable_2'); - - $routes->get('presupuestosCliente', 'Presupuestoadmin::tablaClienteForm'); - $routes->get('getSumCliente/(:num)', 'Presupuestoadmin::obtenerTotalPresupuestosCliente/$1'); -}); -$routes->resource('presupuestoadmin', ['namespace' => 'App\Controllers\Presupuestos', 'controller' => 'Presupuestoadmin', 'except' => 'show,new,create,update']); - -$routes->group('presupuestocliente', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { - $routes->get('list', 'Presupuestocliente::list', ['as' => 'listaPresupuestos']); - $routes->post('datatable', 'Presupuestocliente::datatable', ['as' => 'datatableOfPresupuestos']); - $routes->get('add', 'Presupuestocliente::add', ['as' => 'nuevoPresupuestoCliente']); - $routes->post('add', 'Presupuestocliente::add', ['as' => 'crearPresupuestoCliente']); - $routes->post('edit/(:num)', 'Presupuestocliente::edit/$1', ['as' => 'editarPresupuestoCliente']); - $routes->get('edit/(:any)', 'Presupuestocliente::edit/$1', ['as' => 'editarPresupuestoCliente2']); - $routes->post('getgramaje', 'Presupuestocliente::getGramaje', ['as' => 'obtenerGramaje']); - $routes->post('presupuesto', 'Presupuestocliente::presupuesto', ['as' => 'presupuestoCliente']); - $routes->post('getDireccionesCliente', 'Presupuestocliente::getDireccionesCliente', ['as' => 'getDirecciones']); - $routes->post('getNuevaDireccion', 'Presupuestocliente::getNuevaDireccion', ['as' => 'nuevaDireccion']); - $routes->post('guardar', 'Presupuestocliente::guardar', ['as' => 'guardar']); - $routes->get('cargar/(:num)', 'Presupuestocliente::cargar/$1', ['as' => 'cargarPresupuesto']); - $routes->post('duplicarPresupuesto', 'Presupuestocliente::duplicarPresupuesto', ['as' => 'duplicarPresupuesto']); - $routes->post('calcular', 'Presupuestocliente::calcular', ['as' => 'calcularPresupuesto']); - $routes->post('calcularsolapas', 'Presupuestocliente::calcularMaxSolapas', ['as' => 'calcularSolapas']); - $routes->post('checklomo', 'Presupuestocliente::check_lomo_interior'); -}); -$routes->resource('presupuestocliente', ['namespace' => 'App\Controllers\Presupuestos', 'controller' => 'Presupuestocliente', 'except' => 'show,new,create,update']); - -$routes->group('importador', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { - $routes->get('', 'Importadorpresupuestos::index', ['as' => 'importadorPresupuestos']); - $routes->get('clientlist', 'Importadorpresupuestos::getClientList', ['as' => 'clientList']); - $routes->get('presupuestoslist', 'Importadorpresupuestos::getPresupuestosList', ['as' => 'presupuestosList']); - $routes->get('getencuadernacion', 'Importadorpresupuestos::getEncuadernacionList'); - $routes->get('getpresupuestodata', 'Importadorpresupuestos::getPresupuesto', ['as' => 'getPresupuesto']); - $routes->post('importar', 'Importadorpresupuestos::importarPresupuesto'); -}); -$routes->resource('presupuestocliente', ['namespace' => 'App\Controllers\Presupuestos', 'controller' => 'Presupuestocliente', 'except' => 'show,new,create,update']); $routes->group('serviciosacabados', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { $routes->get('getacabados', 'Presupuestoacabados::getAcabados'); diff --git a/ci4/app/Config/Routes/ComprasRoutes.php b/ci4/app/Config/Routes/ComprasRoutes.php new file mode 100644 index 00000000..eea2da0c --- /dev/null +++ b/ci4/app/Config/Routes/ComprasRoutes.php @@ -0,0 +1,27 @@ +group('compras', ['namespace' => 'App\Controllers\Compras'], function ($routes) { + $routes->group('proveedores', ['namespace' => 'App\Controllers\Compras'], function ($routes) { + $routes->get('', 'Proveedores::index', ['as' => 'proveedorList']); + $routes->get('add', 'Proveedores::add', ['as' => 'newProveedor']); + $routes->post('add', 'Proveedores::add', ['as' => 'createProveedor']); + $routes->post('create', 'Proveedores::create', ['as' => 'ajaxCreateProveedor']); + $routes->put('(:num)/update', 'Proveedores::update/$1', ['as' => 'ajaxUpdateProveedor']); + $routes->get('edit/(:num)', 'Proveedores::edit/$1', ['as' => 'editProveedor']); + $routes->post('edit/(:num)', 'Proveedores::edit/$1', ['as' => 'updateProveedor']); + $routes->post('datatable', 'Proveedores::datatable', ['as' => 'dataTableOfProveedores']); + $routes->get('delete/(:num)', 'Proveedores::delete/$1', ['as' => 'deleteProveedores']); + $routes->post('allmenuitems', 'Proveedores::allItemsSelect', ['as' => 'select2ItemsOfProveedores']); + $routes->post('menuitems', 'Proveedores::menuItems', ['as' => 'menuItemsOfProveedores']); + }); +}); + +$routes->group('proveedorestipos', ['namespace' => 'App\Controllers\Compras'], function ($routes) { + $routes->post('menuitems', 'ProveedoresTipos::menuItems', ['as' => 'menuItemsOfProveedoresTipos']); +}); \ No newline at end of file diff --git a/ci4/app/Config/Routes/PresupuestosRoutes.php b/ci4/app/Config/Routes/PresupuestosRoutes.php new file mode 100644 index 00000000..a4e9dd37 --- /dev/null +++ b/ci4/app/Config/Routes/PresupuestosRoutes.php @@ -0,0 +1,64 @@ +group('presupuestoadmin', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { + $routes->get('list/(:num)', 'Presupuestoadmin::list/$1', ['as' => 'presupuestoAdminList']); // HOMOGENIZAR CON ARGS DINAMICOS!!! + $routes->get('add/(:num)', 'Presupuestoadmin::add/$1', ['as' => 'newPresupuestoAdmin']); + $routes->get('edit/(:any)', 'Presupuestoadmin::edit/$1', ['as' => 'editarPresupuestoAdmin']); + $routes->post('add/(:num)', 'Presupuestoadmin::add/$1', ['as' => 'createPresupuestoAdmin']); + $routes->post('create', 'Presupuestoadmin::create', ['as' => 'ajaxCreatePresupuestoAdmin']); + $routes->put('(:num)/update', 'Presupuestoadmin::update/$1', ['as' => 'ajaxUpdatePresupuestoAdmin']); + $routes->post('edit/(:num)', 'Presupuestoadmin::edit/$1', ['as' => 'updatePresupuestoAdmin']); + $routes->post('datatable', 'Presupuestoadmin::datatable', ['as' => 'dataTableOfPresupuestoAdmin']); + $routes->post('datatable_2', 'Presupuestoadmin::datatable_2', ['as' => 'updateDataOfPresupuestoAdmin']); + $routes->post('allmenuitems', 'Presupuestoadmin::allItemsSelect', ['as' => 'select2ItemsOfPresupuestoAdmin']); + $routes->post('menuitems', 'Presupuestoadmin::menuItems', ['as' => 'menuItemsOfPresupuestoAdmin']); + + $routes->get('cargar/(:any)', 'Presupuestoadmin::cargar/$1'); + $routes->post('comparadorinterior', 'Presupuestoadmin::obtenerComparadorInterior'); + $routes->post('comparadorexteriores', 'Presupuestoadmin::obtenerComparadorExteriores'); + $routes->post('comparadorguardas', 'Presupuestoadmin::obtenerComparadorGuardas'); + $routes->get('papelgenerico', 'Presupuestoadmin::getPapelGenerico'); + $routes->get('papelgramaje', 'Presupuestoadmin::getGramaje'); + $routes->get('papelimpresion', 'Presupuestoadmin::getPapelImpresion'); + $routes->get('maquinas', 'Presupuestoadmin::getMaquinas'); + $routes->post('getlinea', 'Presupuestoadmin::getLineaPresupuesto'); + $routes->post('clone', 'Presupuestoadmin::datatable_2'); + + $routes->get('presupuestosCliente', 'Presupuestoadmin::tablaClienteForm'); + $routes->get('getSumCliente/(:num)', 'Presupuestoadmin::obtenerTotalPresupuestosCliente/$1'); +}); + +//$routes->resource('presupuestoadmin', ['namespace' => 'App\Controllers\Presupuestos', 'controller' => 'Presupuestoadmin', 'except' => 'show,new,create,update']); + +$routes->group('presupuestocliente', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { + $routes->get('list', 'Presupuestocliente::list', ['as' => 'listaPresupuestos']); + $routes->post('datatable', 'Presupuestocliente::datatable', ['as' => 'datatableOfPresupuestos']); + $routes->get('add', 'Presupuestocliente::add', ['as' => 'nuevoPresupuestoCliente']); + $routes->post('add', 'Presupuestocliente::add', ['as' => 'crearPresupuestoCliente']); + $routes->post('edit/(:num)', 'Presupuestocliente::edit/$1', ['as' => 'editarPresupuestoCliente']); + $routes->get('edit/(:any)', 'Presupuestocliente::edit/$1', ['as' => 'editarPresupuestoCliente2']); + $routes->post('getgramaje', 'Presupuestocliente::getGramaje', ['as' => 'obtenerGramaje']); + $routes->post('presupuesto', 'Presupuestocliente::presupuesto', ['as' => 'presupuestoCliente']); + $routes->post('getDireccionesCliente', 'Presupuestocliente::getDireccionesCliente', ['as' => 'getDirecciones']); + $routes->post('getNuevaDireccion', 'Presupuestocliente::getNuevaDireccion', ['as' => 'nuevaDireccion']); + $routes->post('guardar', 'Presupuestocliente::guardar', ['as' => 'guardar']); + $routes->get('cargar/(:num)', 'Presupuestocliente::cargar/$1', ['as' => 'cargarPresupuesto']); + $routes->post('duplicarPresupuesto', 'Presupuestocliente::duplicarPresupuesto', ['as' => 'duplicarPresupuesto']); + $routes->post('calcular', 'Presupuestocliente::calcular', ['as' => 'calcularPresupuesto']); + $routes->post('calcularsolapas', 'Presupuestocliente::calcularMaxSolapas', ['as' => 'calcularSolapas']); + $routes->post('checklomo', 'Presupuestocliente::check_lomo_interior'); +}); +//$routes->resource('presupuestocliente', ['namespace' => 'App\Controllers\Presupuestos', 'controller' => 'Presupuestocliente', 'except' => 'show,new,create,update']); + +$routes->group('importador', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { + $routes->get('', 'Importadorpresupuestos::index', ['as' => 'importadorPresupuestos']); + $routes->get('clientlist', 'Importadorpresupuestos::getClientList', ['as' => 'clientList']); + $routes->get('presupuestoslist', 'Importadorpresupuestos::getPresupuestosList', ['as' => 'presupuestosList']); + $routes->get('getencuadernacion', 'Importadorpresupuestos::getEncuadernacionList'); + $routes->get('getpresupuestodata', 'Importadorpresupuestos::getPresupuesto', ['as' => 'getPresupuesto']); + $routes->post('importar', 'Importadorpresupuestos::importarPresupuesto'); +}); \ No newline at end of file From 94a2a1dd2ec9f3d062be840e322968c65ef8ec6c Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 8 Apr 2025 22:41:25 +0200 Subject: [PATCH 04/14] Resolviendo conflictos --- ci4/app/Config/Routing.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci4/app/Config/Routing.php b/ci4/app/Config/Routing.php index ae93cab1..26bd3d2b 100644 --- a/ci4/app/Config/Routing.php +++ b/ci4/app/Config/Routing.php @@ -88,7 +88,7 @@ class Routing extends BaseRouting * * If FALSE, will stop searching and do NO automatic routing. */ - public bool $autoRoute = false; + public bool $autoRoute = true; /** * If TRUE, will enable the use of the 'prioritize' option From 5a2b2ee7cb1ba17325c4bb70202a070007fd4e75 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 8 Apr 2025 22:43:49 +0200 Subject: [PATCH 05/14] Resolviendo conflictos --- ci4/app/Config/Routing.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci4/app/Config/Routing.php b/ci4/app/Config/Routing.php index 26bd3d2b..ee51edc5 100644 --- a/ci4/app/Config/Routing.php +++ b/ci4/app/Config/Routing.php @@ -88,7 +88,7 @@ class Routing extends BaseRouting * * If FALSE, will stop searching and do NO automatic routing. */ - public bool $autoRoute = true; + public bool $autoRoute = true; /** * If TRUE, will enable the use of the 'prioritize' option From af57f7d5aebd67a260f3de9f1d97e558cebe6b7a Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 9 Apr 2025 00:37:30 +0200 Subject: [PATCH 06/14] Modificado Paises al metodo JS --- ci4/app/Config/Routes/ConfiguracionRoutes.php | 3 +- ci4/app/Config/Routing.php | 2 +- ci4/app/Controllers/Configuracion/Paises.php | 89 ++++++++------ ci4/app/Entities/Configuracion/PaisEntity.php | 2 +- ci4/app/Models/Configuracion/PaisModel.php | 47 ++----- .../configuracion/paises/viewPaisForm.php | 6 +- .../configuracion/paises/viewPaisList.php | 115 +----------------- .../assets/js/safekat/pages/paises/list.js | 97 +++++++++++++++ 8 files changed, 169 insertions(+), 192 deletions(-) create mode 100644 httpdocs/assets/js/safekat/pages/paises/list.js diff --git a/ci4/app/Config/Routes/ConfiguracionRoutes.php b/ci4/app/Config/Routes/ConfiguracionRoutes.php index 947c4e8e..1dd58f89 100644 --- a/ci4/app/Config/Routes/ConfiguracionRoutes.php +++ b/ci4/app/Config/Routes/ConfiguracionRoutes.php @@ -12,10 +12,11 @@ $routes->group('configuracion', ['namespace' => 'App\Controllers\Configuracion'] $routes->get('', 'Paises::index', ['as' => 'paisList']); $routes->get('add', 'Paises::add', ['as' => 'newPais']); $routes->post('add', 'Paises::add', ['as' => 'createPais']); + $routes->get('delete/(:num)', 'Paises::delete/$1'); $routes->post('create', 'Paises::create', ['as' => 'ajaxCreatePais']); $routes->put('update/(:num)', 'Paises::update/$1', ['as' => 'ajaxUpdatePais']); $routes->match(['get', 'post'], 'edit/(:num)', 'Paises::edit/$1', ['as' => 'updatePais']); - $routes->post('datatable', 'Paises::datatable', ['as' => 'dataTableOfPaises']); + $routes->get('datatable', 'Paises::datatable', ['as' => 'dataTableOfPaises']); $routes->post('allmenuitems', 'Paises::allItemsSelect', ['as' => 'select2ItemsOfPaises']); $routes->post('menuitems', 'Paises::menuItems', ['as' => 'menuItemsOfPaises']); $routes->get('menuitems2', 'Paises::menuItems2', ['as' => 'menuItemsOfPaises2']); diff --git a/ci4/app/Config/Routing.php b/ci4/app/Config/Routing.php index ee51edc5..3ffef3bb 100644 --- a/ci4/app/Config/Routing.php +++ b/ci4/app/Config/Routing.php @@ -88,7 +88,7 @@ class Routing extends BaseRouting * * If FALSE, will stop searching and do NO automatic routing. */ - public bool $autoRoute = true; + public bool $autoRoute = false; /** * If TRUE, will enable the use of the 'prioritize' option diff --git a/ci4/app/Controllers/Configuracion/Paises.php b/ci4/app/Controllers/Configuracion/Paises.php index a9d8b5d1..20668475 100755 --- a/ci4/app/Controllers/Configuracion/Paises.php +++ b/ci4/app/Controllers/Configuracion/Paises.php @@ -1,4 +1,5 @@ -request->getPost()) : + if ($this->request->getPost()): $postData = $this->request->getPost(); $sanitizedData = $this->sanitized($postData, true); $noException = true; - if ($successfulResult = $this->canValidate()) : + if ($successfulResult = $this->canValidate()): - if ($this->canValidate()) : + if ($this->canValidate()): try { $successfulResult = $this->model->skipValidation(true)->save($sanitizedData); } catch (\Exception $e) { @@ -86,14 +89,14 @@ class Paises extends \App\Controllers\BaseResourceController $thenRedirect = true; // Change this to false if you want your user to stay on the form after submission endif; - if ($noException && $successfulResult) : + if ($noException && $successfulResult): $id = $this->model->db->insertID(); $message = lang('Basic.global.saveSuccess', [lang('Basic.global.record')]) . '.'; - if ($thenRedirect) : - if (!empty($this->indexRoute)) : + if ($thenRedirect): + if (!empty($this->indexRoute)): return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message); else: return $this->redirect2listView('sweet-success', $message); @@ -117,20 +120,20 @@ class Paises extends \App\Controllers\BaseResourceController public function edit($requestedId = null) { - if ($requestedId == null) : + if ($requestedId == null): return $this->redirect2listView(); endif; $id = filter_var($requestedId, FILTER_SANITIZE_URL); $paisEntity = $this->model->find($id); - if ($paisEntity == false) : + if ($paisEntity == false): $message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('Paises.pais')), $id]); return $this->redirect2listView('sweet-error', $message); endif; - - if ($this->request->getPost()) : + + if ($this->request->getPost()): $nullIfEmpty = true; // !(phpversion() >= '8.1'); @@ -143,10 +146,10 @@ class Paises extends \App\Controllers\BaseResourceController $noException = true; - if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : + if ($successfulResult = $this->canValidate()): // if ($successfulResult = $this->validate($this->formValidationRules) ) : - if ($this->canValidate()) : + if ($this->canValidate()): try { $successfulResult = $this->model->skipValidation(true)->update($id, $sanitizedData); } catch (\Exception $e) { @@ -163,12 +166,12 @@ class Paises extends \App\Controllers\BaseResourceController $thenRedirect = false; endif; - if ($noException && $successfulResult) : + if ($noException && $successfulResult): $id = $paisEntity->id ?? $id; $message = lang('Basic.global.updateSuccess', [lang('Basic.global.record')]) . '.'; - if ($thenRedirect) : - if (!empty($this->indexRoute)) : + if ($thenRedirect): + if (!empty($this->indexRoute)): return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message); else: return $this->redirect2listView('sweet-success', $message); @@ -193,30 +196,38 @@ class Paises extends \App\Controllers\BaseResourceController public function datatable() { - if ($this->request->isAJAX()) { - $reqData = $this->request->getPost(); - if (!isset($reqData['draw']) || !isset($reqData['columns'])) { - $errstr = 'No data available in response to this specific request.'; - $response = $this->respond(Collection::datatable([], 0, 0, $errstr), 400, $errstr); - return $response; - } - $start = $reqData['start'] ?? 0; - $length = $reqData['length'] ?? 5; - $search = $reqData['search']['value']; - $requestedOrder = $reqData['order']['0']['column'] ?? 1; - $order = PaisModel::SORTABLE[$requestedOrder > 0 ? $requestedOrder : 1]; - $dir = $reqData['order']['0']['dir'] ?? 'asc'; + $q = $this->model->getDatatableQuery(); - $resourceData = $this->model->getResource($search)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); + $result = DataTable::of($q) + ->edit( + "show_erp", + function ($row, $meta) { + if($row->show_erp == 1) { + return ''; + }else{ + return ''; + } + } + ) + ->add("actionBtns", callback: function ($q) { + $actions = ''; + if (auth()->user()->can('paises.edit')) { + $actions .= ' +
+ +
'; + } + if (auth()->user()->can('paises.delete')) { + $actions .= ' +
+ +
'; + } + return $actions; + }); + + return $result->toJson(returnAsObject: true); - return $this->respond(Collection::datatable( - $resourceData, - $this->model->getResource()->countAllResults(), - $this->model->getResource($search)->countAllResults() - )); - } else { - return $this->failUnauthorized('Invalid request', 403); - } } public function allItemsSelect() @@ -277,7 +288,7 @@ class Paises extends \App\Controllers\BaseResourceController "id", "nombre as name" ] - )->orderBy("nombre", "asc"); + )->orderBy("nombre", "asc"); if ($this->request->getGet("q")) { $query->groupStart() ->orLike("lg_paises.nombre", $this->request->getGet("q")) diff --git a/ci4/app/Entities/Configuracion/PaisEntity.php b/ci4/app/Entities/Configuracion/PaisEntity.php index 9460f544..9fb8f33f 100755 --- a/ci4/app/Entities/Configuracion/PaisEntity.php +++ b/ci4/app/Entities/Configuracion/PaisEntity.php @@ -14,7 +14,7 @@ class PaisEntity extends \CodeIgniter\Entity\Entity "url_erp" => null, "user_erp" => null, "key_erp" => null, - "show_erp" => false, + "show_erp" => null, ]; protected $casts = [ "show_erp" => "boolean", diff --git a/ci4/app/Models/Configuracion/PaisModel.php b/ci4/app/Models/Configuracion/PaisModel.php index e94deab3..aaba9cbd 100755 --- a/ci4/app/Models/Configuracion/PaisModel.php +++ b/ci4/app/Models/Configuracion/PaisModel.php @@ -12,17 +12,6 @@ class PaisModel extends \App\Models\BaseModel */ protected $useAutoIncrement = true; - const SORTABLE = [ - 1 => "t1.id", - 2 => "t1.nombre", - 3 => "t1.code", - 4 => "t1.code3", - 5 => "t1.moneda", - 6 => "t1.url_erp", - 7 => "t1.user_erp", - 8 => "t1.key_erp", - 9 => "t1.show_erp", - ]; protected $allowedFields = ["nombre", "code", "code3", "moneda", "url_erp", "user_erp", "key_erp", "show_erp"]; protected $returnType = "App\Entities\Configuracion\PaisEntity"; @@ -91,38 +80,24 @@ class PaisModel extends \App\Models\BaseModel /** * Get resource data. * - * @param string $search - * * @return \CodeIgniter\Database\BaseBuilder */ - public function getResource(string $search = "") + public function getDatatableQuery() { $builder = $this->db ->table($this->table . " t1") ->select( - "t1.id AS id, t1.nombre AS nombre, t1.code AS code, t1.code3 AS code3, t1.moneda AS moneda, t1.url_erp AS url_erp, t1.user_erp AS user_erp, t1.key_erp AS key_erp, t1.show_erp AS show_erp" + "t1.id AS id, + t1.nombre AS nombre, + t1.code AS code, + t1.code3 AS code3, + t1.moneda AS moneda, + t1.url_erp AS url_erp, + t1.user_erp AS user_erp, + t1.key_erp AS key_erp, + t1.show_erp AS show_erp" ); - return empty($search) - ? $builder - : $builder - ->groupStart() - ->like("t1.id", $search) - ->orLike("t1.nombre", $search) - ->orLike("t1.code", $search) - ->orLike("t1.code3", $search) - ->orLike("t1.moneda", $search) - ->orLike("t1.url_erp", $search) - ->orLike("t1.user_erp", $search) - ->orLike("t1.key_erp", $search) - ->orLike("t1.id", $search) - ->orLike("t1.nombre", $search) - ->orLike("t1.code", $search) - ->orLike("t1.code3", $search) - ->orLike("t1.moneda", $search) - ->orLike("t1.url_erp", $search) - ->orLike("t1.user_erp", $search) - ->orLike("t1.key_erp", $search) - ->groupEnd(); + return $builder; } } diff --git a/ci4/app/Views/themes/vuexy/form/configuracion/paises/viewPaisForm.php b/ci4/app/Views/themes/vuexy/form/configuracion/paises/viewPaisForm.php index 0ad05ebc..00a34130 100644 --- a/ci4/app/Views/themes/vuexy/form/configuracion/paises/viewPaisForm.php +++ b/ci4/app/Views/themes/vuexy/form/configuracion/paises/viewPaisForm.php @@ -1,5 +1,5 @@ -include("themes_commonPartialsBs/select2bs5") ?> -include("themes_commonPartialsBs/sweetalert") ?> +include("themes/_commonPartialsBs/select2bs5") ?> +include("themes/_commonPartialsBs/sweetalert") ?> extend('themes/vuexy/main/defaultlayout') ?> section("content") ?>
@@ -11,7 +11,7 @@
- + getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?>
diff --git a/ci4/app/Views/themes/vuexy/form/configuracion/paises/viewPaisList.php b/ci4/app/Views/themes/vuexy/form/configuracion/paises/viewPaisList.php index 2384ae6f..c11a6671 100644 --- a/ci4/app/Views/themes/vuexy/form/configuracion/paises/viewPaisList.php +++ b/ci4/app/Views/themes/vuexy/form/configuracion/paises/viewPaisList.php @@ -25,7 +25,7 @@ - + @@ -43,119 +43,10 @@ endSection() ?> -section('additionalInlineJs') ?> - - const lastColNr = $('#tableOfPaises').find("tr:first th").length - 1; - const actionBtns = function(data) { - return ` -
- - -
- `; - }; - theTable = $('#tableOfPaises').DataTable({ - processing: true, - serverSide: true, - autoWidth: true, - responsive: true, - scrollX: true, - lengthMenu: [ 5, 10, 25, 50, 75, 100, 250, 500, 1000, 2500 ], - pageLength: 10, - lengthChange: true, - "dom": 'lfBrtip', - "buttons": [ - 'copy', 'csv', 'excel', 'print', { - extend: 'pdfHtml5', - orientation: 'landscape', - pageSize: 'A4' - } - ], - stateSave: true, - order: [[1, 'asc']], - language: { - url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" - }, - ajax : $.fn.dataTable.pipeline( { - url: '', - method: 'POST', - headers: {'X-Requested-With': 'XMLHttpRequest'}, - async: true, - }), - columnDefs: [ - { - orderable: false, - searchable: false, - targets: [lastColNr] - } - ], - columns : [ - { 'data': 'nombre' }, - { 'data': 'code' }, - { 'data': 'code3' }, - { 'data': 'moneda' }, - { 'data': 'url_erp' }, - { 'data': 'user_erp' }, - { 'data': 'key_erp' }, - { 'data': 'show_erp' }, - { 'data': actionBtns } - ] - }); - - theTable.on( 'draw.dt', function () { - const boolCols = [7]; - for (let coln of boolCols) { - theTable.column(coln, { page: 'current' }).nodes().each( function (cell, i) { - cell.innerHTML = cell.innerHTML == '1' ? '' : ''; - }); - } - }); - - $(document).on('click', '.btn-edit', function(e) { - window.location.href = `/edit/${$(this).attr('data-id')}`; - }); - - $(document).on('click', '.btn-delete', function(e) { - Swal.fire({ - title: '', - text: '', - icon: 'warning', - showCancelButton: true, - confirmButtonColor: '#3085d6', - confirmButtonText: '', - cancelButtonText: '', - cancelButtonColor: '#d33' - }) - .then((result) => { - const dataId = $(this).data('id'); - const row = $(this).closest('tr'); - if (result.value) { - $.ajax({ - url: `/${dataId}`, - method: 'DELETE', - }).done((data, textStatus, jqXHR) => { - Toast.fire({ - icon: 'success', - title: data.msg ?? jqXHR.statusText, - }); - - theTable.clearPipeline(); - theTable.row($(row)).invalidate().draw(); - }).fail((jqXHR, textStatus, errorThrown) => { - Toast.fire({ - icon: 'error', - title: jqXHR.responseJSON.messages.error, - }); - }) - } - }); - }); - -endSection() ?> - section('css') ?> "> + endSection() ?> @@ -167,5 +58,7 @@ + + endSection() ?> diff --git a/httpdocs/assets/js/safekat/pages/paises/list.js b/httpdocs/assets/js/safekat/pages/paises/list.js new file mode 100644 index 00000000..d154ef17 --- /dev/null +++ b/httpdocs/assets/js/safekat/pages/paises/list.js @@ -0,0 +1,97 @@ +import Ajax from '../../components/ajax.js'; + +document.addEventListener('DOMContentLoaded', function () { + + const lastColNr = $('#tableOfPaises').find("tr:first th").length - 1; + + const theTable = $('#tableOfPaises').DataTable({ + processing: true, + serverSide: true, + autoWidth: true, + responsive: true, + scrollX: true, + lengthMenu: [5, 10, 25, 50, 75, 100, 250, 500, 1000, 2500], + pageLength: 10, + lengthChange: true, + dom: 'lfBrtip', + buttons: [ + 'copy', 'csv', 'excel', 'print', { + extend: 'pdfHtml5', + orientation: 'landscape', + pageSize: 'A4' + } + ], + stateSave: true, + order: [[1, 'asc']], + language: { + url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" + }, + ajax: { + url: '/configuracion/paises/datatable', + method: 'GET' + }, + columnDefs: [ + { + orderable: false, + searchable: false, + targets: [lastColNr] + } + ], + columns: [ + { data: 'nombre' }, + { data: 'code' }, + { data: 'code3' }, + { data: 'moneda' }, + { data: 'url_erp' }, + { data: 'user_erp' }, + { data: 'key_erp' }, + { data: 'show_erp' }, + { data: 'actionBtns' } + ] + }); + + $(document).on('click', '.btn-edit', function (e) { + window.location.href = '/configuracion/paises/edit/' + $(this).attr('data-id'); + }); + + $(document).on('click', '.btn-delete', function (e) { + e.preventDefault(); + const row = $(this).closest('tr')[0]._DT_RowIndex; + const dataId = $(this).attr('data-id'); + + Swal.fire({ + title: '¿Estás seguro?', + text: 'Esta acción no se puede deshacer.', + icon: 'warning', + showCancelButton: true, + confirmButtonText: 'Sí', + cancelButtonText: 'No', + reverseButtons: false, + buttonsStyling: true, + customClass: { + confirmButton: 'btn btn-danger', // rojo para "Sí" + cancelButton: 'btn btn-secondary' // gris para "No" + } + }).then((result) => { + if (result.isConfirmed) { + new Ajax( + '/configuracion/paises/delete/' + dataId, + {}, + {}, + (data, textStatus, jqXHR) => { + theTable.clearPipeline(); + theTable.row($(row)).invalidate().draw(); + + popSuccessAlert(data.msg ?? jqXHR.statusText); + }, + (error) => { + console.error(error); + Swal.fire('Error', 'No se pudo eliminar el país.', 'error'); + } + ).get(); + } + }); + + }); + +}); From bb9f6210e746ec3f01d73347c115fb3f0f33dca0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Sat, 12 Apr 2025 10:00:24 +0200 Subject: [PATCH 07/14] =?UTF-8?q?terminado=20a=C3=B1adir=20usuarios=20y=20?= =?UTF-8?q?fechas=20a=20pedidos.=20a=C3=B1adido=20inaplazable.=20color=20e?= =?UTF-8?q?n=20rojo=20en=20fechas=20cuando=20inaplazable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +- ci4/app/Config/RBAC/permissionMatrix.php | 387 ------------------ ci4/app/Config/RBAC/permissions.php | 111 ----- ci4/app/Config/RBAC/roles.json | 22 - ci4/app/Config/RBAC/roles.php | 48 --- ci4/app/Controllers/Pedidos/Pedido.php | 28 +- ...-11-180001_AddUserIdFechaEntregaPedido.php | 61 +++ ci4/app/Entities/Pedidos/PedidoEntity.php | 6 + ci4/app/Models/Pedidos/PedidoModel.php | 6 + .../vuexy/form/pedidos/_cabeceraItems.php | 64 ++- 10 files changed, 152 insertions(+), 584 deletions(-) delete mode 100644 ci4/app/Config/RBAC/permissionMatrix.php delete mode 100644 ci4/app/Config/RBAC/permissions.php delete mode 100644 ci4/app/Config/RBAC/roles.json delete mode 100644 ci4/app/Config/RBAC/roles.php create mode 100644 ci4/app/Database/Migrations/2025-04-11-180001_AddUserIdFechaEntregaPedido.php diff --git a/.gitignore b/.gitignore index 4bee8902..3815dd22 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ ci4/.env .vscode/ launch.json -*xdebug*.log* \ No newline at end of file +*xdebug*.log* +ci4/app/Config/RBAC/* \ No newline at end of file diff --git a/ci4/app/Config/RBAC/permissionMatrix.php b/ci4/app/Config/RBAC/permissionMatrix.php deleted file mode 100644 index c78c032c..00000000 --- a/ci4/app/Config/RBAC/permissionMatrix.php +++ /dev/null @@ -1,387 +0,0 @@ - [ - "clientes.create", - "clientes.edit", - "clientes.delete", - "clientes.menu", - "plantilla-tarifa.create", - "plantilla-tarifa.edit", - "plantilla-tarifa.delete", - "plantilla-tarifa.menu", - "direcciones.create", - "direcciones.edit", - "direcciones.delete", - "direcciones.menu", - "presupuesto.create", - "presupuesto.edit", - "presupuesto.delete", - "presupuesto.menu", - "presupuesto-cliente.create", - "presupuesto-cliente.edit", - "presupuesto-cliente.delete", - "presupuesto-cliente.menu", - "pedidos-activos.view", - "pedidos-activos.menu", - "pedidos-finalizados.view", - "pedidos-finalizados.menu", - "pedidos-cancelados.view", - "pedidos-cancelados.menu", - "pedidos-todos.view", - "pedidos-todos.menu", - "tarifa-preimpresion.create", - "tarifa-preimpresion.edit", - "tarifa-preimpresion.delete", - "tarifa-preimpresion.menu", - "tarifa-manipulado.create", - "tarifa-manipulado.edit", - "tarifa-manipulado.delete", - "tarifa-manipulado.menu", - "tarifa-acabado.create", - "tarifa-acabado.edit", - "tarifa-acabado.delete", - "tarifa-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", - "tarifa-envio.menu", - "servicio-acabado.create", - "servicio-acabado.edit", - "servicio-acabado.delete", - "servicio-acabado.menu", - "proveedores.create", - "proveedores.edit", - "proveedores.delete", - "proveedores.menu", - "ajustes.create", - "ajustes.edit", - "ajustes.delete", - "ajustes.menu", - "actividad.create", - "actividad.edit", - "actividad.delete", - "actividad.menu", - "paises.create", - "paises.edit", - "paises.delete", - "paises.menu", - "maquinas.create", - "maquinas.edit", - "maquinas.delete", - "maquinas.menu", - "maquinas-defecto.create", - "maquinas-defecto.edit", - "maquinas-defecto.delete", - "maquinas-defecto.menu", - "papel-generico.create", - "papel-generico.edit", - "papel-generico.delete", - "papel-generico.menu", - "papel-impresion.create", - "papel-impresion.edit", - "papel-impresion.delete", - "papel-impresion.menu", - "usuarios.create", - "usuarios.edit", - "usuarios.delete", - "usuarios.menu", - "roles-permisos.create", - "roles-permisos.edit", - "roles-permisos.delete", - "roles-permisos.menu", - "tickets.create", - "tickets.edit", - "tickets.menu", - "facturas.create", - "facturas.edit", - "facturas.vencimientos", - "facturas.menu", - ], - "cliente-admin" => [ - "presupuesto-cliente.create", - "presupuesto-cliente.edit", - "presupuesto-cliente.delete", - "presupuesto-cliente.menu", - "pedidos-activos.view", - "pedidos-activos.menu", - "pedidos-finalizados.view", - "pedidos-finalizados.menu", - "pedidos-cancelados.view", - "pedidos-cancelados.menu", - "pedidos-todos.view", - "pedidos-todos.menu", - ], - "cliente-editor" => [ - "presupuesto-cliente.create", - "presupuesto-cliente.edit", - "presupuesto-cliente.menu", - "pedidos-activos.view", - "pedidos-activos.menu", - "pedidos-finalizados.view", - "pedidos-finalizados.menu", - "pedidos-cancelados.view", - "pedidos-cancelados.menu", - "pedidos-todos.view", - "pedidos-todos.menu", - ], - "comercial" => [ - "clientes.create", - "clientes.edit", - "clientes.menu", - "direcciones.create", - "direcciones.edit", - "direcciones.menu", - "presupuesto.create", - "presupuesto.edit", - "presupuesto.menu", - "presupuesto-cliente.create", - "presupuesto-cliente.edit", - "presupuesto-cliente.menu", - "pedidos-activos.view", - "pedidos-activos.menu", - "pedidos-finalizados.view", - "pedidos-finalizados.menu", - "pedidos-cancelados.view", - "pedidos-cancelados.menu", - "pedidos-todos.view", - "pedidos-todos.menu", - ], - "produccion" => [ - "direcciones.create", - "direcciones.edit", - "direcciones.menu", - "presupuesto.create", - "presupuesto.edit", - "presupuesto.menu", - "presupuesto-cliente.create", - "presupuesto-cliente.edit", - "presupuesto-cliente.menu", - "pedidos-validacion.view", - "pedidos-validacion.menu", - "pedidos-activos.view", - "pedidos-activos.menu", - "pedidos-finalizados.view", - "pedidos-finalizados.menu", - "pedidos-cancelados.view", - "pedidos-cancelados.menu", - "pedidos-todos.view", - "pedidos-todos.menu", - "pedidos-gestion.toprod", - "pedidos-gestion.menu", - "tickets.edit", - "tickets.menu", - ], - "maquina" => [ - "token.token", - "token.menu", - ], - "maquetador" => [ - "token.token", - "token.menu", - ], - "director" => [ - "clientes.create", - "clientes.edit", - "clientes.menu", - "plantilla-tarifa.create", - "plantilla-tarifa.edit", - "plantilla-tarifa.menu", - "direcciones.create", - "direcciones.edit", - "direcciones.menu", - "presupuesto.create", - "presupuesto.edit", - "presupuesto.menu", - "presupuesto-cliente.create", - "presupuesto-cliente.edit", - "presupuesto-cliente.menu", - "pedidos-activos.view", - "pedidos-activos.menu", - "pedidos-finalizados.view", - "pedidos-finalizados.menu", - "pedidos-cancelados.view", - "pedidos-cancelados.menu", - "pedidos-todos.view", - "pedidos-todos.menu", - "pedidos-gestion.toprod", - "pedidos-gestion.menu", - "tarifa-preimpresion.create", - "tarifa-preimpresion.edit", - "tarifa-preimpresion.menu", - "tarifa-manipulado.create", - "tarifa-manipulado.edit", - "tarifa-manipulado.menu", - "tarifa-acabado.create", - "tarifa-acabado.edit", - "tarifa-acabado.menu", - "tarifa-encuadernacion.create", - "tarifa-encuadernacion.edit", - "tarifa-encuadernacion.menu", - "tarifa-extra.create", - "tarifa-extra.edit", - "tarifa-extra.menu", - "tarifa-envio.create", - "tarifa-envio.edit", - "tarifa-envio.menu", - "servicio-acabado.create", - "servicio-acabado.edit", - "servicio-acabado.menu", - "proveedores.create", - "proveedores.edit", - "proveedores.menu", - "tickets.edit", - "tickets.menu", - "facturas.create", - "facturas.edit", - "facturas.vencimientos", - "facturas.menu", - ], - "contabilidad" => [ - "clientes.create", - "clientes.edit", - "clientes.menu", - "direcciones.create", - "direcciones.edit", - "direcciones.menu", - "presupuesto.create", - "presupuesto.edit", - "presupuesto.menu", - "pedidos-validacion.view", - "pedidos-validacion.menu", - "pedidos-activos.view", - "pedidos-activos.menu", - "pedidos-finalizados.view", - "pedidos-finalizados.menu", - "pedidos-cancelados.view", - "pedidos-cancelados.menu", - "pedidos-todos.view", - "pedidos-todos.menu", - "proveedores.create", - "proveedores.edit", - "proveedores.menu", - "tickets.edit", - "tickets.menu", - "facturas.create", - "facturas.edit", - "facturas.vencimientos", - "facturas.menu", - ], - "editor" => [ - "token.token", - "token.menu", - "Profile.index", - "Profile.menu", - ], - "beta" => [ - "clientes.create", - "clientes.edit", - "clientes.delete", - "clientes.menu", - "plantilla-tarifa.create", - "plantilla-tarifa.edit", - "plantilla-tarifa.delete", - "plantilla-tarifa.menu", - "direcciones.create", - "direcciones.edit", - "direcciones.delete", - "direcciones.menu", - "presupuesto.create", - "presupuesto.edit", - "presupuesto.delete", - "presupuesto.menu", - "presupuesto-cliente.create", - "presupuesto-cliente.edit", - "presupuesto-cliente.delete", - "presupuesto-cliente.menu", - "pedidos-activos.view", - "pedidos-activos.menu", - "pedidos-finalizados.view", - "pedidos-finalizados.menu", - "pedidos-cancelados.view", - "pedidos-cancelados.menu", - "pedidos-todos.view", - "pedidos-todos.menu", - "tarifa-preimpresion.create", - "tarifa-preimpresion.edit", - "tarifa-preimpresion.delete", - "tarifa-preimpresion.menu", - "tarifa-manipulado.create", - "tarifa-manipulado.edit", - "tarifa-manipulado.delete", - "tarifa-manipulado.menu", - "tarifa-acabado.create", - "tarifa-acabado.edit", - "tarifa-acabado.delete", - "tarifa-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", - "tarifa-envio.menu", - "servicio-acabado.create", - "servicio-acabado.edit", - "servicio-acabado.delete", - "servicio-acabado.menu", - "proveedores.create", - "proveedores.edit", - "proveedores.delete", - "proveedores.menu", - "ajustes.create", - "ajustes.edit", - "ajustes.delete", - "ajustes.menu", - "actividad.create", - "actividad.edit", - "actividad.delete", - "actividad.menu", - "paises.create", - "paises.edit", - "paises.delete", - "paises.menu", - "maquinas.create", - "maquinas.edit", - "maquinas.delete", - "maquinas.menu", - "maquinas-defecto.create", - "maquinas-defecto.edit", - "maquinas-defecto.delete", - "maquinas-defecto.menu", - "papel-generico.create", - "papel-generico.edit", - "papel-generico.delete", - "papel-generico.menu", - "papel-impresion.create", - "papel-impresion.edit", - "papel-impresion.delete", - "papel-impresion.menu", - "usuarios.create", - "usuarios.edit", - "usuarios.delete", - "usuarios.menu", - "roles-permisos.create", - "roles-permisos.edit", - "roles-permisos.delete", - "roles-permisos.menu", - "tickets.edit", - "tickets.menu", - "facturas.create", - "facturas.edit", - "facturas.vencimientos", - "facturas.menu", - ], -]; diff --git a/ci4/app/Config/RBAC/permissions.php b/ci4/app/Config/RBAC/permissions.php deleted file mode 100644 index 9bb8fcb3..00000000 --- a/ci4/app/Config/RBAC/permissions.php +++ /dev/null @@ -1,111 +0,0 @@ - 'Can create', - 'clientes.edit' => 'Can edit', - 'clientes.delete' => 'Can delete', - 'clientes.menu' => 'Menu shall be visualize', - 'plantilla-tarifa.create' => 'Can create', - 'plantilla-tarifa.edit' => 'Can edit', - 'plantilla-tarifa.delete' => 'Can delete', - 'plantilla-tarifa.menu' => 'Menu shall be visualize', - 'direcciones.create' => 'Can create', - 'direcciones.edit' => 'Can edit', - 'direcciones.delete' => 'Can delete', - 'direcciones.menu' => 'Menu shall be visualize', - 'presupuesto.create' => 'Can create', - 'presupuesto.edit' => 'Can edit', - 'presupuesto.delete' => 'Can delete', - 'presupuesto.menu' => 'Menu shall be visualize', - 'presupuesto-cliente.create' => 'Can create', - 'presupuesto-cliente.edit' => 'Can edit', - 'presupuesto-cliente.delete' => 'Can delete', - 'presupuesto-cliente.menu' => 'Menu shall be visualize', - 'pedidos-validacion.view' => 'Can view', - 'pedidos-validacion.menu' => 'Menu shall be visualize', - 'pedidos-activos.view' => 'Can view', - 'pedidos-activos.menu' => 'Menu shall be visualize', - 'pedidos-finalizados.view' => 'Can view', - 'pedidos-finalizados.menu' => 'Menu shall be visualize', - 'pedidos-cancelados.view' => 'Can view', - 'pedidos-cancelados.menu' => 'Menu shall be visualize', - 'pedidos-todos.view' => 'Can view', - 'pedidos-todos.menu' => 'Menu shall be visualize', - 'pedidos-gestion.toprod' => 'Can toprod', - 'pedidos-gestion.menu' => 'Menu shall be visualize', - 'tarifa-preimpresion.create' => 'Can create', - 'tarifa-preimpresion.edit' => 'Can edit', - 'tarifa-preimpresion.delete' => 'Can delete', - 'tarifa-preimpresion.menu' => 'Menu shall be visualize', - 'tarifa-manipulado.create' => 'Can create', - 'tarifa-manipulado.edit' => 'Can edit', - 'tarifa-manipulado.delete' => 'Can delete', - 'tarifa-manipulado.menu' => 'Menu shall be visualize', - 'tarifa-acabado.create' => 'Can create', - 'tarifa-acabado.edit' => 'Can edit', - 'tarifa-acabado.delete' => 'Can delete', - 'tarifa-acabado.menu' => 'Menu shall be visualize', - 'tarifa-encuadernacion.create' => 'Can create', - 'tarifa-encuadernacion.edit' => 'Can edit', - 'tarifa-encuadernacion.delete' => 'Can delete', - 'tarifa-encuadernacion.menu' => 'Menu shall be visualize', - 'tarifa-extra.create' => 'Can create', - 'tarifa-extra.edit' => 'Can edit', - 'tarifa-extra.delete' => 'Can delete', - 'tarifa-extra.menu' => 'Menu shall be visualize', - 'tarifa-envio.create' => 'Can create', - 'tarifa-envio.edit' => 'Can edit', - 'tarifa-envio.delete' => 'Can delete', - 'tarifa-envio.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', - 'proveedores.create' => 'Can create', - 'proveedores.edit' => 'Can edit', - 'proveedores.delete' => 'Can delete', - 'proveedores.menu' => 'Menu shall be visualize', - 'ajustes.create' => 'Can create', - 'ajustes.edit' => 'Can edit', - 'ajustes.delete' => 'Can delete', - 'ajustes.menu' => 'Menu shall be visualize', - 'actividad.create' => 'Can create', - 'actividad.edit' => 'Can edit', - 'actividad.delete' => 'Can delete', - 'actividad.menu' => 'Menu shall be visualize', - 'paises.create' => 'Can create', - 'paises.edit' => 'Can edit', - 'paises.delete' => 'Can delete', - 'paises.menu' => 'Menu shall be visualize', - 'maquinas.create' => 'Can create', - 'maquinas.edit' => 'Can edit', - 'maquinas.delete' => 'Can delete', - 'maquinas.menu' => 'Menu shall be visualize', - 'maquinas-defecto.create' => 'Can create', - 'maquinas-defecto.edit' => 'Can edit', - 'maquinas-defecto.delete' => 'Can delete', - 'maquinas-defecto.menu' => 'Menu shall be visualize', - 'papel-generico.create' => 'Can create', - 'papel-generico.edit' => 'Can edit', - 'papel-generico.delete' => 'Can delete', - 'papel-generico.menu' => 'Menu shall be visualize', - 'papel-impresion.create' => 'Can create', - 'papel-impresion.edit' => 'Can edit', - 'papel-impresion.delete' => 'Can delete', - 'papel-impresion.menu' => 'Menu shall be visualize', - 'usuarios.create' => 'Can create', - 'usuarios.edit' => 'Can edit', - 'usuarios.delete' => 'Can delete', - 'usuarios.menu' => 'Menu shall be visualize', - 'roles-permisos.create' => 'Can create', - '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', - 'facturas.create' => 'Can create', - 'facturas.edit' => 'Can edit', - 'facturas.vencimientos' => 'Can vencimientos', - 'facturas.menu' => 'Menu shall be visualize', -]; diff --git a/ci4/app/Config/RBAC/roles.json b/ci4/app/Config/RBAC/roles.json deleted file mode 100644 index a95d9582..00000000 --- a/ci4/app/Config/RBAC/roles.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "superadmin": { - "title": "Super Admin", - "description": "Complete control of the site." - }, - "admin": { - "title": "Admin", - "description": "Day to day administrators of the site." - }, - "developer": { - "title": "Developer", - "description": "Site programmers." - }, - "user": { - "title": "User", - "description": "General users of the site. Often customers." - }, - "beta": { - "title": "Beta User", - "description": "Has access to beta-level features." - } -} \ No newline at end of file diff --git a/ci4/app/Config/RBAC/roles.php b/ci4/app/Config/RBAC/roles.php deleted file mode 100644 index d39a912a..00000000 --- a/ci4/app/Config/RBAC/roles.php +++ /dev/null @@ -1,48 +0,0 @@ - [ - 'title' => 'Administrador', - 'description' => 'Administrador del ERP', - ], - 'cliente-admin' => [ - 'title' => 'Cliente administrador', - 'description' => 'Rol de cliente con permisos de administración', - ], - 'cliente-editor' => [ - 'title' => 'Cliente editor', - 'description' => 'Rol de cliente con permisos de edición', - ], - 'comercial' => [ - 'title' => 'Comercial', - 'description' => '', - ], - 'produccion' => [ - 'title' => 'Producción', - 'description' => '', - ], - 'maquina' => [ - 'title' => 'Máquina', - 'description' => '', - ], - 'maquetador' => [ - 'title' => 'Maquetador', - 'description' => '', - ], - 'director' => [ - 'title' => 'Director', - 'description' => 'Para los directores de área', - ], - 'contabilidad' => [ - 'title' => 'Contabilidad', - 'description' => '', - ], - 'editor' => [ - 'title' => 'Editor', - 'description' => '', - ], - 'beta' => [ - 'title' => 'Beta', - 'description' => '', - ], -]; diff --git a/ci4/app/Controllers/Pedidos/Pedido.php b/ci4/app/Controllers/Pedidos/Pedido.php index 6e28240e..51f911c6 100755 --- a/ci4/app/Controllers/Pedidos/Pedido.php +++ b/ci4/app/Controllers/Pedidos/Pedido.php @@ -211,6 +211,8 @@ class Pedido extends \App\Controllers\BaseResourceController public function update($id = null){ + $data = []; + if ($this->request->isAJAX()) { $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); @@ -242,6 +244,14 @@ class Pedido extends \App\Controllers\BaseResourceController $sanitizedData = $this->sanitized($postData, $nullIfEmpty); + foreach(array_keys($sanitizedData) as $key){ + if(str_starts_with($key, "fecha_")){ + $sanitizedData[$key . "_change_user_id"] = + auth()->user()->id; + $data[$key . "_change_user"] = + model('App\Models\Usuarios\UserModel')->getFullName(auth()->user()->id); + } + } // JJO $sanitizedData['user_updated_id'] = auth()->user()->id; @@ -268,10 +278,9 @@ class Pedido extends \App\Controllers\BaseResourceController $id = $pedidoEntity->id ?? $id; $message = lang('Basic.global.updateSuccess', [lang('Basic.global.record')]) . '.'; - $data = [ - 'error' => 0, - $csrfTokenName => $newTokenHash - ]; + $data['error'] = 0; + $data[$csrfTokenName] = $newTokenHash; + return $this->respond($data); endif; // $noException && $successfulResult @@ -303,7 +312,15 @@ class Pedido extends \App\Controllers\BaseResourceController $this->obtenerDatosFormulario($pedidoEntity); - + $pedidoEntity->fecha_entrega_real_change_user = $pedidoEntity->fecha_entrega_real_change_user_id?model('App\Models\Usuarios\UserModel')-> + getFullName($pedidoEntity->fecha_entrega_real_change_user_id):""; + $pedidoEntity->fecha_impresion_change_user = $pedidoEntity->fecha_impresion_change_user_id?model('App\Models\Usuarios\UserModel')-> + getFullName($pedidoEntity->fecha_impresion_change_user_id):""; + $pedidoEntity->fecha_encuadernado_change_user = $pedidoEntity->fecha_encuadernado_change_user_id?model('App\Models\Usuarios\UserModel')-> + getFullName($pedidoEntity->fecha_encuadernado_change_user_id):""; + $pedidoEntity->fecha_entrega_change_externo_user = $pedidoEntity->fecha_entrega_change_externo_user_id?model('App\Models\Usuarios\UserModel')-> + getFullName($pedidoEntity->fecha_entrega_change_externo_user_id):""; + $this->viewData['pedidoEntity'] = $pedidoEntity; if($pedidoEntity->estado == 'validacion'){ @@ -321,6 +338,7 @@ class Pedido extends \App\Controllers\BaseResourceController $this->viewData['boxTitle'] = lang('Basic.global.edit2') . ' ' . lang('Pedidos.moduleTitle') . ' ' . lang('Basic.global.edit3'); + return $this->displayForm(__METHOD__, $id); } diff --git a/ci4/app/Database/Migrations/2025-04-11-180001_AddUserIdFechaEntregaPedido.php b/ci4/app/Database/Migrations/2025-04-11-180001_AddUserIdFechaEntregaPedido.php new file mode 100644 index 00000000..b8313fcb --- /dev/null +++ b/ci4/app/Database/Migrations/2025-04-11-180001_AddUserIdFechaEntregaPedido.php @@ -0,0 +1,61 @@ + [ + "type" => "INT", + "unsigned" => true, + "constraint" => 1, + "null" => true, + ], + 'fecha_entrega_real_change_user_id' => [ + 'type' => 'INT', + "constraint" => 10, + "unsigned" => true, + "null" => true, + ], + "fecha_impresion_change_user_id" => [ + "type" => "INT", + "constraint" => 10, + "unsigned" => true, + "null" => true, + ], + + "fecha_encuadernado_change_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + "fecha_entrega_externo_change_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + "inaplazable_change_user_id" => [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + + ]; + + public function up() + { + $this->forge->addColumn("pedidos", $this->USER_COLUMNS); + } + + public function down() + { + $this->forge->dropColumn("pedidos", array_keys($this->USER_COLUMNS)); + + } +} diff --git a/ci4/app/Entities/Pedidos/PedidoEntity.php b/ci4/app/Entities/Pedidos/PedidoEntity.php index 57b81396..61c40e25 100644 --- a/ci4/app/Entities/Pedidos/PedidoEntity.php +++ b/ci4/app/Entities/Pedidos/PedidoEntity.php @@ -18,6 +18,7 @@ class PedidoEntity extends \CodeIgniter\Entity\Entity "total_precio" => null, "total_tirada" => null, "estado" => null, + "inaplazable" => null, "user_created_id" => null, "user_updated_id" => null, "user_validated_id" => null, @@ -25,6 +26,11 @@ class PedidoEntity extends \CodeIgniter\Entity\Entity "fecha_impresion" => null, "fecha_encuadernado" => null, "fecha_entrega_externo" => null, + "fecha_entrega_real_change_user_id" => null, + "fecha_impresion_change_user_id" => null, + "fecha_encuadernado_change_user_id" => null, + "fecha_entrega_change_externo_user_id" => null, + "inaplazable_change_user_id" => null, "created_at" => null, "updated_at" => null, "validated_at" => null, diff --git a/ci4/app/Models/Pedidos/PedidoModel.php b/ci4/app/Models/Pedidos/PedidoModel.php index 1ab7dea5..7a7bdbf0 100644 --- a/ci4/app/Models/Pedidos/PedidoModel.php +++ b/ci4/app/Models/Pedidos/PedidoModel.php @@ -37,6 +37,7 @@ class PedidoModel extends \App\Models\BaseModel "total_precio", "total_tirada", "estado", + "inaplazable", "user_created_id", "user_updated_id", "user_validated_id", @@ -44,6 +45,11 @@ class PedidoModel extends \App\Models\BaseModel "fecha_impresion", "fecha_encuadernado", "fecha_entrega_externo", + "fecha_entrega_real_change_user_id", + "fecha_impresion_change_user_id", + "fecha_encuadernado_change_user_id", + "fecha_entrega_externo_change_user_id", + "inaplazable_change_user_id", "created_at", "updated_at", "validated_at", diff --git a/ci4/app/Views/themes/vuexy/form/pedidos/_cabeceraItems.php b/ci4/app/Views/themes/vuexy/form/pedidos/_cabeceraItems.php index 85711c1b..559c0925 100644 --- a/ci4/app/Views/themes/vuexy/form/pedidos/_cabeceraItems.php +++ b/ci4/app/Views/themes/vuexy/form/pedidos/_cabeceraItems.php @@ -100,6 +100,7 @@
+
@@ -121,7 +122,8 @@ - + +
fecha_entrega_real_change_user?>
@@ -129,7 +131,8 @@ - + +
fecha_impresion_change_user?>
@@ -137,7 +140,8 @@ - + +
fecha_encuadernado_change_user?>
@@ -145,10 +149,25 @@ - + +
fecha_entrega_externo_change_user?>
+
+ +
@@ -183,6 +202,15 @@ section('additionalInlineJs') ?> +document.getElementById('inaplazable').addEventListener('change', () => { + updateDate('inaplazable', $('#inaplazable').prop('checked') ? 1 : 0); +}); + +if(inaplazable ?>){ + $('.inaplazable-date').addClass('text-danger fw-bold'); +} + + $("#fecha_entrega_real").flatpickr({ defaultDate: fecha_entrega_real_text ? "'".$pedidoEntity->fecha_entrega_real_text."'" : 'null' ?>, dateFormat: "d/m/Y", @@ -321,10 +349,21 @@ function updateDate(elementId, dateStr) { data = { : v, }; - var parts = dateStr.split('/'); - var newFormat = parts[2] + '-' + parts[1] + '-' + parts[0]; // Asume dateStr en formato d/m/Y. - - data[elementId] = newFormat; + + if(elementId == 'inaplazable'){ + data[elementId] = dateStr; + if(dateStr == 1){ + $('.inaplazable-date').addClass('text-danger fw-bold'); + } + else{ + $('.inaplazable-date').removeClass('text-danger fw-bold'); + } + }else{ + var parts = dateStr.split('/'); + var newFormat = parts[2] + '-' + parts[1] + '-' + parts[0]; // Asume dateStr en formato d/m/Y. + + data[elementId] = newFormat; + } var url = ''; url = url.replace(':id', id ); @@ -336,11 +375,16 @@ function updateDate(elementId, dateStr) { success: function(response){ if('error' in response){ - + if(response.error == 0){ + for (const [key, value] of Object.entries(response)) { + if (key.endsWith('_change_user')) { + $("#" + key).html(value); + } + } + } } } }); - } endSection() ?> \ No newline at end of file From 79fcb1e3fef04de874f017ae03b9f731da211e69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Sat, 12 Apr 2025 10:18:32 +0200 Subject: [PATCH 08/14] arreglado problema --- ci4/app/Views/themes/vuexy/form/pedidos/_cabeceraItems.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci4/app/Views/themes/vuexy/form/pedidos/_cabeceraItems.php b/ci4/app/Views/themes/vuexy/form/pedidos/_cabeceraItems.php index 559c0925..70d89973 100644 --- a/ci4/app/Views/themes/vuexy/form/pedidos/_cabeceraItems.php +++ b/ci4/app/Views/themes/vuexy/form/pedidos/_cabeceraItems.php @@ -206,7 +206,7 @@ document.getElementById('inaplazable').addEventListener('change', () => { updateDate('inaplazable', $('#inaplazable').prop('checked') ? 1 : 0); }); -if(inaplazable ?>){ +if(inaplazable?1:0 ?>){ $('.inaplazable-date').addClass('text-danger fw-bold'); } From 2e845b735540a9fef47bf0adc7f8ac865d55f1aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Sat, 12 Apr 2025 10:50:50 +0200 Subject: [PATCH 09/14] solucionado --- .../form/facturas/_facturaLineasItems.php | 57 +++++++++++++------ .../form/facturas/_pagosFacturasItems.php | 51 ++++++++++++----- 2 files changed, 77 insertions(+), 31 deletions(-) diff --git a/ci4/app/Views/themes/vuexy/form/facturas/_facturaLineasItems.php b/ci4/app/Views/themes/vuexy/form/facturas/_facturaLineasItems.php index a4619549..5f3c7331 100644 --- a/ci4/app/Views/themes/vuexy/form/facturas/_facturaLineasItems.php +++ b/ci4/app/Views/themes/vuexy/form/facturas/_facturaLineasItems.php @@ -31,25 +31,25 @@ Subtotal: - + I.V.A.: - + Total: - + serie_id == 7 || $facturaEntity->serie_id == 9)? "style='display:none;'":"" ?> colspan="8" style="text-align:right">Pendiente de pago: - serie_id == 7 || $facturaEntity->serie_id == 9)? "style='display:none;'":"" ?> id="pendiente-pago"> + serie_id == 7 || $facturaEntity->serie_id == 9)? "style='display:none;'":"" ?> id="pendiente-pago"> @@ -126,28 +126,36 @@ const autoNumericSubtotal = new AutoNumeric('#subtotal-sum', 0, { decimalPlaces: 2, digitGroupSeparator: ',', decimalCharacter: '.', - unformatOnSubmit: true + unformatOnSubmit: true, + decimalPlacesShownOnFocus: 2, + decimalPlacesShownOnBlur: 2, }); const autoNumericIVA = new AutoNumeric('#total-iva-sum', 0, { decimalPlaces: 2, digitGroupSeparator: ',', decimalCharacter: '.', - unformatOnSubmit: true + unformatOnSubmit: true, + decimalPlacesShownOnFocus: 2, + decimalPlacesShownOnBlur: 2, }); const autoNumericTotal = new AutoNumeric('#total-sum', 0, { decimalPlaces: 2, digitGroupSeparator: ',', decimalCharacter: '.', - unformatOnSubmit: true + unformatOnSubmit: true, + decimalPlacesShownOnFocus: 2, + decimalPlacesShownOnBlur: 2, }); const autoNumericPendientePago = new AutoNumeric('#pendiente-pago', 0, { decimalPlaces: 2, digitGroupSeparator: ',', decimalCharacter: '.', - unformatOnSubmit: true + unformatOnSubmit: true, + decimalPlacesShownOnFocus: 2, + decimalPlacesShownOnBlur: 2, }); var editor_lineas = new $.fn.dataTable.Editor( { @@ -375,10 +383,10 @@ var tableLineas = $('#tableOfLineasFactura').DataTable({ } } }, - {data: "iva",render : (d) => `${d}`}, - {data: "base",render : (d) => `${d}`}, - {data: "total_iva",render : (d) => `${d}`}, - {data: "total",render : (d) => `${d}`}, + {data: "iva", className: "text-end", render : (d) => `${d}`}, + {data: "base", className: "text-end", render : (d) => `${d}`}, + {data: "total_iva", className: "text-end",render : (d) => `${d}`}, + {data: "total", className: "text-end", render : (d) => `${d}`}, ], order: [[1, "asc"]], dom: 't', @@ -417,16 +425,31 @@ var tableLineas = $('#tableOfLineasFactura').DataTable({ }); } }); + + $("span.autonumeric-facturas").each(function () { + let autoNumericInstance = AutoNumeric.getAutoNumericElement(this) + if(autoNumericInstance){ + autoNumericInstance.remove() + } + new AutoNumeric(this, { + digitGroupSeparator: ".", + decimalCharacter: ",", + allowDecimalPadding : 'floats', + decimalPlaces: 2, + unformatOnSubmit: true, + decimalPlacesShownOnFocus: 2, + decimalPlacesShownOnBlur: 2, + allowDecimalPadding: true, + }); + }); }, footerCallback: function (row, data, start, end, display) { const table = this.api(); - const intVal = i => typeof i === 'string' ? parseFloat(i.replace(/\./g, '').replace(',', '.')) || 0 : i || 0; - - const totalSubtotal = table.column(8).data().reduce((a, b) => intVal(a) + intVal(b), 0); - const totalIVA = table.column(9).data().reduce((a, b) => intVal(a) + intVal(b), 0); - const totalTotal = table.column(10).data().reduce((a, b) => intVal(a) + intVal(b), 0); + const totalSubtotal = table.column(8).data().reduce((a, b) => parseFloat(a) + parseFloat(b), 0); + const totalIVA = table.column(9).data().reduce((a, b) => parseFloat(a) + parseFloat(b), 0); + const totalTotal = table.column(10).data().reduce((a, b) => parseFloat(a) + parseFloat(b), 0); autoNumericSubtotal.set(totalSubtotal); autoNumericIVA.set(totalIVA); diff --git a/ci4/app/Views/themes/vuexy/form/facturas/_pagosFacturasItems.php b/ci4/app/Views/themes/vuexy/form/facturas/_pagosFacturasItems.php index fc891a6d..78cbed7d 100644 --- a/ci4/app/Views/themes/vuexy/form/facturas/_pagosFacturasItems.php +++ b/ci4/app/Views/themes/vuexy/form/facturas/_pagosFacturasItems.php @@ -22,12 +22,12 @@ - Total cobrado: - + Total cobrado: + - Total pendiente: - + Total pendiente: + @@ -147,6 +147,8 @@ editor_pagos.on('open',(event)=>{ allowDecimalPadding : 'floats', decimalPlaces: 2, unformatOnSubmit: true, + decimalPlacesShownOnFocus: 2, + decimalPlacesShownOnBlur: 2, }); }) @@ -189,14 +191,18 @@ const autoNumericTotalCobrado = new AutoNumeric('#totalCobrado-sum', 0, { decimalPlaces: 2, digitGroupSeparator: ',', decimalCharacter: '.', - unformatOnSubmit: true + unformatOnSubmit: true, + decimalPlacesShownOnFocus: 2, + decimalPlacesShownOnBlur: 2, }); const autoNumericPendienteCobro = new AutoNumeric('#pendienteCobro-sum', 0, { decimalPlaces: 2, digitGroupSeparator: ',', decimalCharacter: '.', - unformatOnSubmit: true + unformatOnSubmit: true, + decimalPlacesShownOnFocus: 2, + decimalPlacesShownOnBlur: 2, }); var tablePagos = $('#tableOfLineasPagos').DataTable({ @@ -237,7 +243,11 @@ var tablePagos = $('#tableOfLineasPagos').DataTable({ return data!='0000-00-00 00:00:00' ? moment(data).format('DD/MM/YYYY') : ''; } }, - {data: "total",render : (d) => `${d}`}, + { + data: "total", + className: "text-end", + render : (d) => `${d}` + }, ], order: [[1, "asc"]], dom: 't', @@ -270,14 +280,27 @@ var tablePagos = $('#tableOfLineasPagos').DataTable({ }, ], + drawCallback: function (settings) { + $("span.autonumeric-pagos").each(function () { + let autoNumericInstance = AutoNumeric.getAutoNumericElement(this) + if(autoNumericInstance){ + autoNumericInstance.remove() + } + new AutoNumeric(this, { + digitGroupSeparator: ".", + decimalCharacter: ",", + allowDecimalPadding : 'floats', + decimalPlaces: 2, + unformatOnSubmit: true, + decimalPlacesShownOnFocus: 2, + decimalPlacesShownOnBlur: 2, + allowDecimalPadding: true, + }); + }); + }, footerCallback: function (row, data, start, end, display) { var api = this.api(); - var intVal = function (i) { - // Convertir a número o devolver 0 si no es válido - return typeof i === 'string' ? i.replace(/[\$,]/g, '')*1 : typeof i === 'number' ? i : 0; - }; - var filas = []; api.rows().every(function() { var data = this.data(); @@ -287,7 +310,7 @@ var tablePagos = $('#tableOfLineasPagos').DataTable({ }); var totalPagos = filas .reduce(function(a, data) { - return a + intVal(data['total']); // Aquí asumimos que la columna 6 está en el índice 5 + return parseFloat(a) + parseFloat(data['total']); }, 0); var filas = []; @@ -299,7 +322,7 @@ var tablePagos = $('#tableOfLineasPagos').DataTable({ }); var totalPendiente = filas .reduce(function(a, data) { - return a + intVal(data['total']); // Aquí asumimos que la columna 6 está en el índice 5 + return parseFloat(a) + parseFloat(data['total']); }, 0); // Update footer From 8912606c9a55ec0ae489d0a3ffaa334c80aee608 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Sat, 12 Apr 2025 12:37:57 +0200 Subject: [PATCH 10/14] pagos en borrador --- ci4/app/Controllers/Facturacion/Facturas.php | 4 ++++ .../vuexy/form/facturas/_addPedidosItems.php | 1 + .../vuexy/form/facturas/_facturaLineasItems.php | 13 +++++-------- .../vuexy/form/facturas/_pagosFacturasItems.php | 14 +++++--------- .../themes/vuexy/form/facturas/viewFacturaForm.php | 5 ++++- 5 files changed, 19 insertions(+), 18 deletions(-) diff --git a/ci4/app/Controllers/Facturacion/Facturas.php b/ci4/app/Controllers/Facturacion/Facturas.php index b9c445bc..195da7a5 100755 --- a/ci4/app/Controllers/Facturacion/Facturas.php +++ b/ci4/app/Controllers/Facturacion/Facturas.php @@ -230,6 +230,10 @@ class Facturas extends \App\Controllers\BaseResourceController $factura->updated_by = $userModel->getFullName($factura->user_updated_id); $factura->created_at_footer = $factura->created_at ? date(' H:i d/m/Y', strtotime($factura->created_at)) : ''; $factura->updated_at_footer = $factura->updated_at ? date(' H:i d/m/Y', strtotime($factura->updated_at)) : ''; + + $factura->showDeleteButton = model('App\Models\Facturas\FacturaPagoModel') + ->where('factura_id', $factura->id)->countAllResults() == 0; + $this->viewData['facturaEntity'] = $factura; $this->viewData['boxTitle'] = lang('Basic.global.edit2') . ' ' . lang('Facturas.factura') . ' ' . lang('Basic.global.edit3'); diff --git a/ci4/app/Views/themes/vuexy/form/facturas/_addPedidosItems.php b/ci4/app/Views/themes/vuexy/form/facturas/_addPedidosItems.php index c2db9dba..a6f390aa 100644 --- a/ci4/app/Views/themes/vuexy/form/facturas/_addPedidosItems.php +++ b/ci4/app/Views/themes/vuexy/form/facturas/_addPedidosItems.php @@ -121,6 +121,7 @@ $('#addNewPedidoImpresion').on('click', function(){ $('#pedidoImpresion').val(null).trigger('change'); // Se actualiza la tabla de lineas de factura $('#tableOfLineasFactura').DataTable().clearPipeline().draw(); + $('#tableOfLineasPagos').DataTable().clearPipeline().draw(); } }); }); diff --git a/ci4/app/Views/themes/vuexy/form/facturas/_facturaLineasItems.php b/ci4/app/Views/themes/vuexy/form/facturas/_facturaLineasItems.php index 5f3c7331..9cd3136e 100644 --- a/ci4/app/Views/themes/vuexy/form/facturas/_facturaLineasItems.php +++ b/ci4/app/Views/themes/vuexy/form/facturas/_facturaLineasItems.php @@ -455,14 +455,9 @@ var tableLineas = $('#tableOfLineasFactura').DataTable({ autoNumericIVA.set(totalIVA); autoNumericTotal.set(totalTotal); - estado == 'borrador') :?> - var pendientePago = totalTotal; - var total_pagos = 0; - - var total_pagos = autoNumericTotalCobrado.getNumber(); - var pendientePago = totalTotal - total_pagos; - - + var total_pagos = autoNumericTotalCobrado.getNumber(); + var pendientePago = totalTotal - total_pagos; + if (isNaN(pendientePago)) pendientePago = 0; autoNumericPendientePago.set(pendientePago); @@ -522,6 +517,8 @@ function deleteConfirmedLinea(params){ : v } }).done((data, textStatus, jqXHR) => { + tablelineas.clearPipeline().footerCallback().draw(); + $('#tableOfLineasPagos').DataTable().clearPipeline().footerCallback().draw(); }).fail((jqXHR, textStatus, errorThrown) => { popErrorAlert(jqXHR.responseJSON.messages.error) diff --git a/ci4/app/Views/themes/vuexy/form/facturas/_pagosFacturasItems.php b/ci4/app/Views/themes/vuexy/form/facturas/_pagosFacturasItems.php index 78cbed7d..943f8e8d 100644 --- a/ci4/app/Views/themes/vuexy/form/facturas/_pagosFacturasItems.php +++ b/ci4/app/Views/themes/vuexy/form/facturas/_pagosFacturasItems.php @@ -185,6 +185,7 @@ editor_pagos.on( 'postSubmit', function ( e, json, data, action ) { yeniden(json.); tablePagos.clearPipeline(); tablePagos.draw(); + updateFooterLineas(tableLineas); }); const autoNumericTotalCobrado = new AutoNumeric('#totalCobrado-sum', 0, { @@ -340,13 +341,8 @@ var tablePagos = $('#tableOfLineasPagos').DataTable({ function updateFooterLineas(table){ // Assuming pendiente de pago is totalTotal - totalIVA for this example - estado == 'borrador') :?> - var pendientePago = autoNumericTotal.getNumber(); - var total_pagos = 0; - - var total_pagos = autoNumericTotalCobrado.getNumber(); - var pendientePago = autoNumericTotal.getNumber() - total_pagos; - + var total_pagos = autoNumericTotalCobrado.getNumber(); + var pendientePago = autoNumericTotal.getNumber() - total_pagos; // Se comprueba si pendientePago es un numero o NAN if(isNaN(pendientePago)){ pendientePago = 0; @@ -363,10 +359,10 @@ function updateFooterLineas(table){ pendiente: pendientePago } }).done((data, textStatus, jqXHR) => { - if($('#pendiente-pago').html() == '0.00'){ + if(autoNumericPendientePago.getNumber() == 0){ $('#addPagoRow').hide(); } else { - $('#validarFactura').show(); + $('#addPagoRow').show(); } if(data.estado_pago == 'pagada'){ $('#estado_pago_text').text(''); diff --git a/ci4/app/Views/themes/vuexy/form/facturas/viewFacturaForm.php b/ci4/app/Views/themes/vuexy/form/facturas/viewFacturaForm.php index 0736152a..23911b81 100644 --- a/ci4/app/Views/themes/vuexy/form/facturas/viewFacturaForm.php +++ b/ci4/app/Views/themes/vuexy/form/facturas/viewFacturaForm.php @@ -22,7 +22,7 @@ - estado !='borrador' && (strpos($facturaEntity->numero, "REC ") !== 0) ) : ?> + numero, "REC ") !== 0) ) : ?> estado !='borrador' && (strpos($facturaEntity->numero, "REC ") === 0) ) : ?> @@ -38,6 +38,9 @@ name="validarFactura" value="" /> + + + showDeleteButton == true && $facturaEntity->estado !='validada') : ?> Date: Sat, 12 Apr 2025 17:47:36 +0200 Subject: [PATCH 11/14] terminado el flujo completo de facturas, incluyendo cambio en el texto de pedidos y facturas cuando no tiene factura validada --- ci4/app/Controllers/Facturacion/Facturas.php | 2 +- .../Presupuestos/Presupuestoadmin.php | 30 +++++++++++++++++ ...0001_AddUserIdFechaEntregaPedido copy.php} | 0 ...-130000_AddCantidadConceptoPedidoLinea.php | 33 +++++++++++++++++++ .../Entities/Pedidos/PedidoLineaEntity.php | 3 ++ ci4/app/Models/Facturas/FacturaLineaModel.php | 2 +- ci4/app/Models/Facturas/FacturaModel.php | 21 ++++++++++++ ci4/app/Models/Pedidos/PedidoLineaModel.php | 2 ++ ci4/app/Models/Pedidos/PedidoModel.php | 17 ++++++++-- ci4/app/Services/PresupuestoService.php | 3 ++ .../vuexy/form/pedidos/_cabeceraItems.php | 11 ++++++- 11 files changed, 119 insertions(+), 5 deletions(-) rename ci4/app/Database/Migrations/{2025-04-11-180001_AddUserIdFechaEntregaPedido.php => 2025-04-11-180001_AddUserIdFechaEntregaPedido copy.php} (100%) create mode 100644 ci4/app/Database/Migrations/2025-04-12-130000_AddCantidadConceptoPedidoLinea.php diff --git a/ci4/app/Controllers/Facturacion/Facturas.php b/ci4/app/Controllers/Facturacion/Facturas.php index 195da7a5..d8feb554 100755 --- a/ci4/app/Controllers/Facturacion/Facturas.php +++ b/ci4/app/Controllers/Facturacion/Facturas.php @@ -707,7 +707,7 @@ class Facturas extends \App\Controllers\BaseResourceController $data = (object) [ 'factura_id' => $factura_id, - 'pedido_linea_impresion_id' => $linea->pedido_id, + 'pedido_linea_impresion_id' => $pedido_linea_id, 'descripcion' => $descripcion[0]->concepto, 'cantidad' => $cantidad, 'iva' => $presupuesto->iva_reducido == 1 ? 4 : 21, diff --git a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php index beef112f..75ac450d 100644 --- a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php @@ -366,6 +366,36 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController PresupuestoService::crearPedido($id); } + // modificar los datos del pedido y de la factura si no está la factura validada + if ($presupuestoEntity->estado_id == 2){ + $facturaModel = model('App\Models\Facturas\FacturaModel'); + if(!$facturaModel->presupuestoHasFacturaValidada($id)){ + // se actualiza primero el pedido + $pedidoModel = model('App\Models\Pedidos\PedidoLineaModel'); + $pedidoLineaId = $pedidoModel->where('presupuesto_id', $id)->first()->id; + $linea_pedido = $this->model->generarLineaPedido($id)[0]; + $idPedido = $pedidoModel->join('pedidos', 'pedidos_linea.pedido_id = pedidos.id') + ->where('pedidos_linea.presupuesto_id', $id) + ->first()->pedido_id; + $pedidoModel->update($pedidoLineaId, [ + 'cantidad' => $linea_pedido->unidades, + 'descripcion' => $linea_pedido->concepto + ]); + + // se actualiza la factura + $linea_pedido = $this->model->generarLineaPedido($id, true, $idPedido)[0]; + $facturaLineaModel = model('App\Models\Facturas\FacturaLineaModel'); + $facturaLineaId = $facturaLineaModel->where('pedido_linea_impresion_id', $pedidoLineaId)-> + where('deleted_at', null)->first()->id; + $facturaLineaModel->update($facturaLineaId, [ + 'cantidad' => $linea_pedido->unidades, + 'descripcion' => $linea_pedido->concepto + ]); + + } + + } + $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); $data = [ diff --git a/ci4/app/Database/Migrations/2025-04-11-180001_AddUserIdFechaEntregaPedido.php b/ci4/app/Database/Migrations/2025-04-11-180001_AddUserIdFechaEntregaPedido copy.php similarity index 100% rename from ci4/app/Database/Migrations/2025-04-11-180001_AddUserIdFechaEntregaPedido.php rename to ci4/app/Database/Migrations/2025-04-11-180001_AddUserIdFechaEntregaPedido copy.php diff --git a/ci4/app/Database/Migrations/2025-04-12-130000_AddCantidadConceptoPedidoLinea.php b/ci4/app/Database/Migrations/2025-04-12-130000_AddCantidadConceptoPedidoLinea.php new file mode 100644 index 00000000..471151fd --- /dev/null +++ b/ci4/app/Database/Migrations/2025-04-12-130000_AddCantidadConceptoPedidoLinea.php @@ -0,0 +1,33 @@ + [ + "type" => "INT", + "unsigned" => true, + "constraint" => 10, + "null" => true, + ], + 'descripcion' => [ + 'type' => 'TEXT', + "null" => true, + ], + ]; + + public function up() + { + $this->forge->addColumn("pedidos_linea", $this->USER_COLUMNS); + } + + public function down() + { + $this->forge->dropColumn("pedidos_linea", array_keys($this->USER_COLUMNS)); + + } +} diff --git a/ci4/app/Entities/Pedidos/PedidoLineaEntity.php b/ci4/app/Entities/Pedidos/PedidoLineaEntity.php index dc059079..f103a8ca 100644 --- a/ci4/app/Entities/Pedidos/PedidoLineaEntity.php +++ b/ci4/app/Entities/Pedidos/PedidoLineaEntity.php @@ -16,6 +16,8 @@ class PedidoLineaEntity extends \CodeIgniter\Entity\Entity "user_updated_id" => null, "created_at" => null, "updated_at" => null, + "cantidad" => null, + "descripcion" => null, ]; @@ -23,6 +25,7 @@ class PedidoLineaEntity extends \CodeIgniter\Entity\Entity "pedido_id" => "int", "presupuesto_id" => "int", "ubicacion_id" => "int", + "cantidad" => "int", ]; public function ubicacion() : UbicacionesEntity { diff --git a/ci4/app/Models/Facturas/FacturaLineaModel.php b/ci4/app/Models/Facturas/FacturaLineaModel.php index 82888d06..cb13de58 100644 --- a/ci4/app/Models/Facturas/FacturaLineaModel.php +++ b/ci4/app/Models/Facturas/FacturaLineaModel.php @@ -39,7 +39,7 @@ class FacturaLineaModel extends \App\Models\BaseModel { t1.pedido_linea_impresion_id AS pedido_linea_impresion_id, t1.pedido_maquetacion_id AS pedido_maquetacion_id, t1.descripcion AS descripcion, t1.cantidad as cantidad, t1.iva AS iva, t1.base AS base, t1.total_iva AS total_iva, t1.total AS total, t1.data AS data, t2.pedido_id AS pedido_id, - t3.total_aceptado AS total_aceptado, t4.tirada_flexible AS tirada_flexible, t4.descuento_tirada_flexible AS descuento_tirada_flexible, + t3.total_aceptado_revisado AS total_aceptado, t4.tirada_flexible AS tirada_flexible, t4.descuento_tirada_flexible AS descuento_tirada_flexible, t6.cantidad AS cantidad_albaran" ) ->join("pedidos_linea t2", "t2.id = t1.pedido_linea_impresion_id", "left") diff --git a/ci4/app/Models/Facturas/FacturaModel.php b/ci4/app/Models/Facturas/FacturaModel.php index dc11b5e2..7c2c8142 100644 --- a/ci4/app/Models/Facturas/FacturaModel.php +++ b/ci4/app/Models/Facturas/FacturaModel.php @@ -145,6 +145,27 @@ class FacturaModel extends \App\Models\BaseModel return $builder; } + + public function presupuestoHasFacturaValidada($presupuesto_id = null) + { + if ($presupuesto_id == null) { + return false; + } + + $result = $this->db->table($this->table . " t1") + ->select("t1.id") + ->join("facturas_lineas t2", "t2.factura_id = t1.id", "left") + ->join("pedidos_linea t3", "t2.pedido_linea_impresion_id = t3.id", "left") + ->where("t3.presupuesto_id", $presupuesto_id) + ->where("t1.deleted_at IS NULL") + ->where("t2.deleted_at IS NULL") + ->where("t1.estado", "validada") + ->get() + ->getResultObject(); + + return !empty($result); + } + public function getSumatoriosFacturacionCliente($cliente_id = -1){ if($cliente_id == -1){ diff --git a/ci4/app/Models/Pedidos/PedidoLineaModel.php b/ci4/app/Models/Pedidos/PedidoLineaModel.php index ca0e9b56..1e19c4cf 100644 --- a/ci4/app/Models/Pedidos/PedidoLineaModel.php +++ b/ci4/app/Models/Pedidos/PedidoLineaModel.php @@ -36,6 +36,8 @@ class PedidoLineaModel extends \App\Models\BaseModel "user_updated_id", "created_at", "updated_at", + "cantidad", + "descripcion", ]; protected $returnType = "App\Entities\Pedidos\PedidoLineaEntity"; diff --git a/ci4/app/Models/Pedidos/PedidoModel.php b/ci4/app/Models/Pedidos/PedidoModel.php index 7a7bdbf0..a5379fba 100644 --- a/ci4/app/Models/Pedidos/PedidoModel.php +++ b/ci4/app/Models/Pedidos/PedidoModel.php @@ -117,15 +117,28 @@ class PedidoModel extends \App\Models\BaseModel $builder = $this->db ->table($this->table . " t1") ->select( - "t2.presupuesto_id" + "t2.presupuesto_id, t3.total_aceptado, t2.descripcion, t2.cantidad" ); $builder->where("t1.id", $pedido_id); $builder->join("pedidos_linea t2", "t2.pedido_id = t1.id", "left"); + $builder->join("presupuestos t3", "t2.presupuesto_id = t3.id", "left"); $model_presupuesto = model("App\Models\Presupuestos\PresupuestoModel"); $lineasPresupuesto = []; foreach ($builder->get()->getResultObject() as $row) { - array_push($lineasPresupuesto, $model_presupuesto->generarLineaPedido($row->presupuesto_id)[0]); + if($row->descripcion == null){ + array_push($lineasPresupuesto, $model_presupuesto->generarLineaPedido($row->presupuesto_id)[0]); + } + else{ + $presupuesto = (object) [ + 'numero' => $row->presupuesto_id, + 'unidades' => $row->cantidad, + 'total' => $row->total_aceptado, + 'concepto' => $row->descripcion, + ]; + array_push($lineasPresupuesto, $presupuesto); + } + } $builder->groupBy("t1.id"); diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index 894259a1..74c73088 100755 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -1885,9 +1885,12 @@ class PresupuestoService extends BaseService $pedido_id = $model_pedido->insert($data_pedido); if ($pedido_id) { + $lineas_pedido = $model_presupuesto->generarLineaPedido($presupuesto_id)[0]; $data_pedido_linea = [ "pedido_id" => $pedido_id, "presupuesto_id" => $presupuesto_id, + 'cantidad' => $lineas_pedido->unidades, + 'descripcion' => $lineas_pedido->concepto, "ubicacion_id" => 1, // safetak por defecto "user_created_id" => auth()->user()->id, "user_updated_id" => auth()->user()->id, diff --git a/ci4/app/Views/themes/vuexy/form/pedidos/_cabeceraItems.php b/ci4/app/Views/themes/vuexy/form/pedidos/_cabeceraItems.php index 70d89973..21221dd2 100644 --- a/ci4/app/Views/themes/vuexy/form/pedidos/_cabeceraItems.php +++ b/ci4/app/Views/themes/vuexy/form/pedidos/_cabeceraItems.php @@ -86,7 +86,7 @@ - +
@@ -210,6 +210,15 @@ if(inaplazable?1:0 ?>){ $('.inaplazable-date').addClass('text-danger fw-bold'); } +const autonumericTotalPrecio = new AutoNumeric('#total_precio', { + decimalPlaces: 2, + digitGroupSeparator: '.', + decimalCharacter: ',', + allowDecimalPadding: true, + unformatOnSubmit: true, +}); + + $("#fecha_entrega_real").flatpickr({ defaultDate: fecha_entrega_real_text ? "'".$pedidoEntity->fecha_entrega_real_text."'" : 'null' ?>, From 9ee2a833b5abad1f5b194eef2e2db143ada67387 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 12 Apr 2025 21:11:20 +0200 Subject: [PATCH 12/14] =?UTF-8?q?Comprobar=20que=20el=20directorio=20RBAC?= =?UTF-8?q?=20existe=20y=20a=C3=B1adido=20.gitkeep?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ci4/app/Helpers/rbac_helper.php | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/ci4/app/Helpers/rbac_helper.php b/ci4/app/Helpers/rbac_helper.php index 422250a6..5ab2808b 100644 --- a/ci4/app/Helpers/rbac_helper.php +++ b/ci4/app/Helpers/rbac_helper.php @@ -29,8 +29,12 @@ if (!function_exists('generate_php_roles_constant')) { // Close the array $phpCode .= "];\n"; - // Write PHP code to a file - $filePath = APPPATH . "Config/RBAC/roles.php"; + $dirPath = APPPATH . "Config/RBAC"; + if (!is_dir($dirPath)) { + mkdir($dirPath, 0775, true); // true permite crear carpetas anidadas + } + + $filePath = $dirPath . "/roles.php"; file_put_contents($filePath, $phpCode); } @@ -58,9 +62,14 @@ if (!function_exists('generate_php_permissions_constant')) { // Close the array $phpCode .= "];\n"; - // Write PHP code to a file - $filePath = APPPATH . "Config/RBAC/permissions.php"; + $dirPath = APPPATH . "Config/RBAC"; + if (!is_dir($dirPath)) { + mkdir($dirPath, 0775, true); // true permite crear carpetas anidadas + } + + $filePath = $dirPath . "/permissions.php"; file_put_contents($filePath, $phpCode); + } } @@ -87,8 +96,12 @@ if (!function_exists('generate_php_permissions_matrix_constant')) { // Close the array $phpCode .= "];\n"; - // Write PHP code to a file - $filePath = APPPATH . "Config/RBAC/permissionMatrix.php"; + $dirPath = APPPATH . "Config/RBAC"; + if (!is_dir($dirPath)) { + mkdir($dirPath, 0775, true); // true permite crear carpetas anidadas + } + + $filePath = $dirPath . "/permissionMatrix.php"; file_put_contents($filePath, $phpCode); } } @@ -130,9 +143,9 @@ if (!function_exists('checkGroups')) { */ function checkGroups(array $groups, string $redirectRoute = null) { - $session = \Config\Services::session(); + $session = \Config\Services::session(); $response = \Config\Services::response(); - $auth = auth(); // Shield auth service + $auth = auth(); // Shield auth service $user = $auth->user(); From a31e0bddb65ad5a80c5c9c201e12d4bbcd909de1 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 12 Apr 2025 22:14:57 +0200 Subject: [PATCH 13/14] =?UTF-8?q?A=C3=B1adido=20RBAC=20directory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ci4/app/Config/RBAC/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ci4/app/Config/RBAC/.gitkeep diff --git a/ci4/app/Config/RBAC/.gitkeep b/ci4/app/Config/RBAC/.gitkeep new file mode 100644 index 00000000..e69de29b From e8123c9fb814a86c9df00de4bc05ef9fe248005d Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 12 Apr 2025 22:19:48 +0200 Subject: [PATCH 14/14] Cambiado el flag de autorute a ON --- ci4/app/Config/Routing.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci4/app/Config/Routing.php b/ci4/app/Config/Routing.php index 3ffef3bb..ee51edc5 100644 --- a/ci4/app/Config/Routing.php +++ b/ci4/app/Config/Routing.php @@ -88,7 +88,7 @@ class Routing extends BaseRouting * * If FALSE, will stop searching and do NO automatic routing. */ - public bool $autoRoute = false; + public bool $autoRoute = true; /** * If TRUE, will enable the use of the 'prioritize' option