diff --git a/.vscode/sftp.json b/.vscode/sftp.json index a4adf0e7..4f65c0da 100644 --- a/.vscode/sftp.json +++ b/.vscode/sftp.json @@ -4,7 +4,7 @@ "protocol": "ftp", "port": 21, "username": "sk-jjo", - "password": "yuh1C^290", + "password": "Snwi1660%", "remotePath": "/", "uploadOnSave": true, "useTempFile": false, diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index b35b2887..45e58dc0 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -192,6 +192,20 @@ $routes->group('papelimpresiontipologias', ['namespace' => 'App\Controllers\Conf $routes->get('delete/(:num)', 'Papelimpresiontipologias::delete/$1', ['as' => 'deletePapelImpresionTipologia']); }); +$routes->group('tarifaacabadolineas', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) { + $routes->get('', 'Tarifaacabadolineas::index', ['as' => 'tarifaAcabadoLineaList']); + $routes->get('add', 'Tarifaacabadolineas::add', ['as' => 'newTarifaAcabadoLinea']); + $routes->post('add', 'Tarifaacabadolineas::add', ['as' => 'createTarifaAcabadoLinea']); + $routes->post('create', 'Tarifaacabadolineas::create', ['as' => 'ajaxCreateTarifaAcabadoLinea']); + $routes->put('(:num)/update', 'Tarifaacabadolineas::update/$1', ['as' => 'ajaxUpdateTarifaAcabadoLinea']); + $routes->post('(:num)/edit', 'Tarifaacabadolineas::edit/$1', ['as' => 'updateTarifaAcabadoLinea']); + $routes->post('datatable', 'Tarifaacabadolineas::datatable', ['as' => 'dataTableOfTarifaAcabadoLineas']); + $routes->post('datatable_editor', 'Tarifaacabadolineas::datatable_editor', ['as' => 'editorOfTarifaAcabadoLineas']); + $routes->post('allmenuitems', 'Tarifaacabadolineas::allItemsSelect', ['as' => 'select2ItemsOfTarifaAcabadoLineas']); + $routes->post('menuitems', 'Tarifaacabadolineas::menuItems', ['as' => 'menuItemsOfTarifaAcabadoLineas']); + $routes->get('delete/(:num)', 'Tarifaacabadolineas::delete/$1', ['as' => 'deleteTarifaAcabadoLinea']); +}); +$routes->resource('tarifaacabadolineas', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'Tarifaacabadolineas', 'except' => 'show,new,create,update']); $routes->group('profile', ['namespace' => 'App\Controllers'], function ($routes) { diff --git a/ci4/app/Controllers/Configuracion/Papelimpresiontipologias.php b/ci4/app/Controllers/Configuracion/Papelimpresiontipologias.php index 22d151d6..b9163562 100644 --- a/ci4/app/Controllers/Configuracion/Papelimpresiontipologias.php +++ b/ci4/app/Controllers/Configuracion/Papelimpresiontipologias.php @@ -286,12 +286,12 @@ class Papelimpresiontipologias extends \App\Controllers\GoBaseResourceController array_unshift($menu , $nonItem); $newTokenHash = csrf_hash(); - $csrfTokenName = csrf_token(); - $data = [ - 'menu' => $menu, + $csrfTokenName = csrf_token(); + $output = array( + 'success' => 'yes', $csrfTokenName => $newTokenHash - ]; - return $this->respond($data); + ); + return json_encode($output); } else { return $this->failUnauthorized('Invalid request', 403); } diff --git a/ci4/app/Controllers/Tarifas/Tarifaacabado.php b/ci4/app/Controllers/Tarifas/Tarifaacabado.php index bc0d7224..026dd2e2 100644 --- a/ci4/app/Controllers/Tarifas/Tarifaacabado.php +++ b/ci4/app/Controllers/Tarifas/Tarifaacabado.php @@ -30,6 +30,13 @@ class Tarifaacabado extends \App\Controllers\GoBaseResourceController { public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger) { $this->viewData['pageTitle'] = lang('Tarifaacabado.moduleTitle'); $this->viewData['usingSweetAlert'] = true; + + // Se indica que este controlador trabaja con soft_delete + $this->soft_delete = true; + // Se indica el flag para los ficheros borrados + $this->delete_flag = 1; + + $this->viewData = ['usingServerSideDataTable' => true]; parent::initController($request, $response, $logger); } @@ -52,7 +59,8 @@ class Tarifaacabado extends \App\Controllers\GoBaseResourceController { public function add() { - + // JJO + $session = session(); $requestMethod = $this->request->getMethod(); @@ -64,6 +72,10 @@ class Tarifaacabado extends \App\Controllers\GoBaseResourceController { $sanitizedData = $this->sanitized($postData, $nullIfEmpty); + // JJO + if(isset($this->model->user_update_id)){ + $sanitizedData['user_created_id'] = $session->id_user; + } $noException = true; if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : @@ -116,6 +128,9 @@ class Tarifaacabado extends \App\Controllers\GoBaseResourceController { } // end function add() public function edit($requestedId = null) { + + // JJO + $session = session(); if ($requestedId == null) : return $this->redirect2listView(); @@ -136,15 +151,18 @@ class Tarifaacabado extends \App\Controllers\GoBaseResourceController { $postData = $this->request->getPost(); - $sanitizedData = $this->sanitized($postData, $nullIfEmpty); - + $sanitizedData = $this->sanitized($postData, $nullIfEmpty); + // JJO + if(isset($this->model->user_update_id)){ + $sanitizedData['user_update_id'] = $session->id_user; + } $noException = true; if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : - + if ($this->canValidate()) : try { $successfulResult = $this->model->skipValidation(true)->update($id, $sanitizedData); diff --git a/ci4/app/Controllers/Tarifas/Tarifaacabadolineas.php b/ci4/app/Controllers/Tarifas/Tarifaacabadolineas.php index 59f175ad..732f48b6 100644 --- a/ci4/app/Controllers/Tarifas/Tarifaacabadolineas.php +++ b/ci4/app/Controllers/Tarifas/Tarifaacabadolineas.php @@ -11,6 +11,17 @@ use App\Models\tarifas\TarifaacabadoModel; use App\Models\Tarifas\TarifaAcabadoLineaModel; +use + DataTables\Editor, + DataTables\Database, + DataTables\Editor\Field, + DataTables\Editor\Format, + DataTables\Editor\Mjoin, + DataTables\Editor\Options, + DataTables\Editor\Upload, + DataTables\Editor\Validate, + DataTables\Editor\ValidateOptions; + class Tarifaacabadolineas extends \App\Controllers\GoBaseResourceController { protected $modelName = TarifaAcabadoLineaModel::class; @@ -205,25 +216,124 @@ class Tarifaacabadolineas extends \App\Controllers\GoBaseResourceController { $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 = TarifaAcabadoLineaModel::SORTABLE[$requestedOrder > 0 ? $requestedOrder : 1]; + $requestedOrder = $reqData['order']['0']['column'] ?? 0; + $order = TarifaAcabadoLineaModel::SORTABLE[$requestedOrder >= 0 ? $requestedOrder : 0]; $dir = $reqData['order']['0']['dir'] ?? 'asc'; - $resourceData = $this->model->getResource($search)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); + + $id_TA = $reqData['id_tarifaacabado'] ?? -1; + + + $resourceData = $this->model->getResource("", $id_TA)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); return $this->respond(Collection::datatable( $resourceData, $this->model->getResource()->countAllResults(), - $this->model->getResource($search)->countAllResults() + $this->model->getResource($search, $id_TA)->countAllResults() )); } else { return $this->failUnauthorized('Invalid request', 403); } } + public function datatable_editor() { + if ($this->request->isAJAX()) { + + include(APPPATH . "ThirdParty/DatatablesEditor/DataTables.php"); + + // Build our Editor instance and process the data coming from _POST + $response = Editor::inst( $db, 'tarifa_acabado_lineas' ) + ->fields( + Field::inst( 'tirada_min' ) + ->validator( 'Validate::numeric', array( + 'message' => lang('TarifaAcabadoLineas.validation.tirada_min.decimal') ) + ) + ->validator( 'Validate::notEmpty',array( + 'message' => lang('TarifaAcabadoLineas.validation.tirada_min.required') ) + ), + Field::inst( 'tirada_max' ) + ->validator( 'Validate::numeric', array( + 'message' => lang('TarifaAcabadoLineas.validation.tirada_max.decimal') ) + ) + ->validator( 'Validate::notEmpty',array( + 'message' => lang('TarifaAcabadoLineas.validation.tirada_max.required') ) + ), + Field::inst( 'precio_min' ) + ->validator( 'Validate::numeric', array( + 'message' => lang('TarifaAcabadoLineas.validation.precio_min.decimal') ) + ) + ->validator( 'Validate::notEmpty',array( + 'message' => lang('TarifaAcabadoLineas.validation.precio_min.required') ) + ), + Field::inst( 'precio_max' ) + ->validator( 'Validate::numeric', array( + 'message' => lang('TarifaAcabadoLineas.validation.precio_max.decimal') ) + ) + ->validator( 'Validate::notEmpty',array( + 'message' => lang('TarifaAcabadoLineas.validation.precio_max.required') ) + ), + Field::inst( 'precio_unidad' ) + ->validator( 'Validate::numeric', array( + 'message' => lang('TarifaAcabadoLineas.validation.precio_unidad.decimal') ) + ) + ->validator( 'Validate::notEmpty',array( + 'message' => lang('TarifaAcabadoLineas.validation.precio_unidad.required') ) + ), + Field::inst( 'tarifa_acabado_id' ), + Field::inst( 'user_created_id' ), + Field::inst( 'created_at' ), + Field::inst( 'user_updated_id' ), + Field::inst( 'updated_at' ), + Field::inst( 'is_deleted' ), + Field::inst( 'deleted_at' ), + + ) + ->on( 'preCreate', function ( $editor, &$values ) { + $session = session(); + $datetime = (new \CodeIgniter\I18n\Time("now")); + $editor + ->field( 'user_created_id' ) + ->setValue( $session->id_user ); + $editor + ->field( 'created_at' ) + ->setValue( $datetime->format('Y-m-d H:i:s') ); + } ) + ->on( 'preEdit', function ( $editor, &$values ) { + $session = session(); + $datetime = (new \CodeIgniter\I18n\Time("now")); + $editor + ->field( 'user_updated_id' ) + ->setValue( $session->id_user ); + $editor + ->field( 'updated_at' ) + ->setValue( $datetime->format('Y-m-d H:i:s') ); + } ) + ->debug(true) + ->process( $_POST ) + ->data(); + + if(isset($response['error'])){ + if(str_contains($response['error'], "tirada_min_tirada_max") && + str_contains($response['error'], "Duplicate entry ")){ + $response['error'] = lang('TarifaAcabadoLineas.validation.duplicated_tirada'); + } + } + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + + $response[$csrfTokenName] = $newTokenHash; + + echo json_encode($response); + + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + public function allItemsSelect() { if ($this->request->isAJAX()) { $onlyActiveOnes = true; diff --git a/ci4/app/Controllers/Tarifas/Tarifamanipulado.php b/ci4/app/Controllers/Tarifas/Tarifamanipulado.php index 7b28b845..46b01ae9 100644 --- a/ci4/app/Controllers/Tarifas/Tarifamanipulado.php +++ b/ci4/app/Controllers/Tarifas/Tarifamanipulado.php @@ -41,7 +41,8 @@ class Tarifamanipulado extends \App\Controllers\GoBaseController { public function add() { - + // JJO + $session = session(); $requestMethod = $this->request->getMethod(); @@ -52,6 +53,10 @@ class Tarifamanipulado extends \App\Controllers\GoBaseController { $postData = $this->request->getPost(); $sanitizedData = $this->sanitized($postData, $nullIfEmpty); + // JJO + if(isset($this->model->user_update_id)){ + $sanitizedData['user_created_id'] = $session->id_user; + } $noException = true; if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : diff --git a/ci4/app/Entities/Tarifas/TarifaacabadoEntity.php b/ci4/app/Entities/Tarifas/TarifaacabadoEntity.php index 0ad59298..74827121 100644 --- a/ci4/app/Entities/Tarifas/TarifaacabadoEntity.php +++ b/ci4/app/Entities/Tarifas/TarifaacabadoEntity.php @@ -8,8 +8,8 @@ class TarifaacabadoEntity extends \CodeIgniter\Entity\Entity protected $attributes = [ "id" => null, "nombre" => null, - "user_created_id" => 1, - "user_update_id" => 1, + "user_created_id" => 0, + "user_update_id" => 0, "is_deleted" => 0, "created_at" => null, "updated_at" => null, diff --git a/ci4/app/Language/en/Basic.php b/ci4/app/Language/en/Basic.php index d7e6aea9..21d74320 100644 --- a/ci4/app/Language/en/Basic.php +++ b/ci4/app/Language/en/Basic.php @@ -79,7 +79,8 @@ return [ 'sureToDeleteTitle' => 'Are you sure you want to delete this {0}?', 'text' => 'This action cannot be undone.', 'title' => 'Are you sure?', - 'maxRowsReached' => 'No more lines can be added.' + 'maxRowsReached' => 'No more lines can be added.', + 'line' => 'the line' ], 'ok' => 'Ok', 'wait' => 'Wait', diff --git a/ci4/app/Language/en/TarifaAcabadoLineas.php b/ci4/app/Language/en/TarifaAcabadoLineas.php new file mode 100644 index 00000000..9b120843 --- /dev/null +++ b/ci4/app/Language/en/TarifaAcabadoLineas.php @@ -0,0 +1,51 @@ + 'ID', + 'moduleTitle' => 'Finish rates Lines', + 'deleteLine' => 'the selected register', + 'precioMax' => 'Max Price', + 'precioMin' => 'Min Price', + 'precioUnidad' => 'Price Unit', + 'tiradaMax' => 'Print Max', + 'tiradaMin' => 'Print Min', + 'validation' => [ + 'duplicated_tirada' => "Duplicated line (the couple 'Print Min' and 'Print Max' must be unique)", + 'precio_max' => [ + 'decimal' => 'The field must contain a decimal number.', + 'required' => 'The field is required.', + + ], + + 'precio_min' => [ + 'decimal' => 'The field must contain a decimal number.', + 'required' => 'The field is required.', + + ], + + 'precio_unidad' => [ + 'decimal' => 'The field must contain a decimal number.', + 'required' => 'The field is required.', + + ], + + 'tirada_max' => [ + 'integer' => 'The field must contain an integer.', + 'required' => 'The field is required.', + + ], + + 'tirada_min' => [ + 'integer' => 'The field must contain an integer.', + 'required' => 'The field is required.', + + ], + + + + ], + + +]; \ No newline at end of file diff --git a/ci4/app/Language/es/Basic.php b/ci4/app/Language/es/Basic.php index a6d6094f..5651f305 100644 --- a/ci4/app/Language/es/Basic.php +++ b/ci4/app/Language/es/Basic.php @@ -79,7 +79,8 @@ return [ 'sureToDeleteTitle' => 'Está seguro de borrar {0}?', 'text' => 'Esta acción no se puede deshacer.', 'title' => 'Está seguro?', - 'maxRowsReached' => 'No se pueden añadir más líneas.' + 'maxRowsReached' => 'No se pueden añadir más líneas.', + 'line' => 'la línea' ], 'ok' => 'Ok', diff --git a/ci4/app/Language/es/TarifaAcabadoLineas.php b/ci4/app/Language/es/TarifaAcabadoLineas.php new file mode 100644 index 00000000..397da254 --- /dev/null +++ b/ci4/app/Language/es/TarifaAcabadoLineas.php @@ -0,0 +1,50 @@ + 'ID', + 'moduleTitle' => 'Tarifa Acabado Lineas', + 'deleteLine' => 'el registro seleccionado', + 'precioMax' => 'Precio Max', + 'precioMin' => 'Precio Min', + 'precioUnidad' => 'Precio Unidad', + 'tiradaMax' => 'Tirada Max', + 'tiradaMin' => 'Tirada Min', + 'validation' => [ + 'duplicated_tirada' => "Línea duplicada (la pareja 'Tirada Min' y 'Tirada Max' debe de ser única)", + 'precio_max' => [ + 'decimal' => 'El campo debe contener un número decimal.', + 'required' => 'El campo es obligatorio.', + + ], + + 'precio_min' => [ + 'decimal' => 'El campo debe contener un número decimal.', + 'required' => 'El campo es obligatorio.', + + ], + + 'precio_unidad' => [ + 'decimal' => 'El campo debe contener un número decimal.', + 'required' => 'El campo es obligatorio.', + + ], + + 'tirada_max' => [ + 'integer' => 'El campo debe contener un número entero.', + 'required' => 'El campo es obligatorio.', + + ], + + 'tirada_min' => [ + 'integer' => 'El campo debe contener un número entero.', + 'required' => 'El campo es obligatorio.', + + ], + + + ], + + +]; \ No newline at end of file diff --git a/ci4/app/Models/Tarifas/TarifaAcabadoLineaModel.php b/ci4/app/Models/Tarifas/TarifaAcabadoLineaModel.php index 09b9fb44..b6609d33 100644 --- a/ci4/app/Models/Tarifas/TarifaAcabadoLineaModel.php +++ b/ci4/app/Models/Tarifas/TarifaAcabadoLineaModel.php @@ -13,17 +13,11 @@ class TarifaAcabadoLineaModel extends \App\Models\GoBaseModel protected $useAutoIncrement = true; const SORTABLE = [ - 1 => "t1.tirada_min", - 2 => "t1.tirada_max", - 3 => "t1.precio_min", - 4 => "t1.precio_max", - 5 => "t1.precio_unidad", - 6 => "t1.user_created_id", - 7 => "t1.user_updated_id", - 8 => "t1.is_deleted", - 9 => "t1.created_at", - 10 => "t1.updated_at", - 11 => "t2.id", + 0 => "t1.tirada_min", + 1 => "t1.tirada_max", + 2 => "t1.precio_min", + 3 => "t1.precio_max", + 4 => "t1.precio_unidad", ]; protected $allowedFields = [ @@ -136,15 +130,24 @@ class TarifaAcabadoLineaModel extends \App\Models\GoBaseModel * * @return \CodeIgniter\Database\BaseBuilder */ - public function getResource(string $search = "") + public function getResource(string $search = "", $tarifa_acabado_id = -1) { $builder = $this->db ->table($this->table . " t1") ->select( - "t1.tirada_min AS tirada_min, t1.tirada_max AS tirada_max, t1.precio_min AS precio_min, t1.precio_max AS precio_max, t1.precio_unidad AS precio_unidad, t1.user_created_id AS user_created_id, t1.user_updated_id AS user_updated_id, t1.is_deleted AS is_deleted, t1.created_at AS created_at, t1.updated_at AS updated_at, t2.id AS tarifa_acabado" + "t1.id AS id, t1.tirada_min AS tirada_min, t1.tirada_max AS tirada_max, t1.precio_min AS precio_min, t1.precio_max AS precio_max, t1.precio_unidad AS precio_unidad, t1.user_created_id AS user_created_id, t1.user_updated_id AS user_updated_id, t1.is_deleted AS is_deleted, t1.created_at AS created_at, t1.updated_at AS updated_at, t2.id AS tarifa_acabado" ); + + if($tarifa_acabado_id>=0) + { + $builder->where('tarifa_acabado_id', $tarifa_acabado_id); + } + $builder->join("lg_tarifa_acabado t2", "t1.tarifa_acabado_id = t2.id", "left"); + //JJO + $builder->where("t1.is_deleted", 0); + return empty($search) ? $builder : $builder @@ -173,4 +176,16 @@ class TarifaAcabadoLineaModel extends \App\Models\GoBaseModel ->orLike("t2.id", $search) ->groupEnd(); } + + public function findLineasForTarifaAcabado(int $tarifaacabado_id){ + + $builder = $this->db + ->table($this->table ) + ->select("*") + ->where("tarifa_acabado_id", $tarifaacabado_id); + + + return $builder; + + } } diff --git a/ci4/app/Models/Tarifas/TarifaacabadoModel.php b/ci4/app/Models/Tarifas/TarifaacabadoModel.php index 478b40a2..8f178563 100644 --- a/ci4/app/Models/Tarifas/TarifaacabadoModel.php +++ b/ci4/app/Models/Tarifas/TarifaacabadoModel.php @@ -16,7 +16,13 @@ class TarifaacabadoModel extends \App\Models\GoBaseModel 0 => "t1.nombre", ]; - protected $allowedFields = ["nombre"]; + protected $allowedFields = [ + "nombre", + "deleted_at", + "is_deleted", + "user_created_id", + "user_update_id", + ]; protected $returnType = 'App\Entities\Tarifas\TarifaacabadoEntity'; protected $useTimestamps = true; @@ -53,6 +59,9 @@ class TarifaacabadoModel extends \App\Models\GoBaseModel { $builder = $this->db->table($this->table . " t1")->select("t1.id AS id, t1.nombre AS nombre"); + //JJO + $builder->where("t1.is_deleted", 0); + return empty($search) ? $builder : $builder diff --git a/ci4/app/ThirdParty/DatatablesEditor/config.php b/ci4/app/ThirdParty/DatatablesEditor/config.php index db70a726..cfe94959 100644 --- a/ci4/app/ThirdParty/DatatablesEditor/config.php +++ b/ci4/app/ThirdParty/DatatablesEditor/config.php @@ -10,11 +10,11 @@ ini_set('display_errors', '1'); */ $sql_details = array( "type" => "Mysql", // Database type: "Mysql", "Postgres", "Sqlserver", "Sqlite" or "Oracle" - "user" => "sk-misc", // Database user name - "pass" => "Itd27y^86", // Database password + "user" => "sk_jjo", // Database user name + "pass" => "61tv&G1Zf^XY", // Database password "host" => "localhost", // Database host "port" => "", // Database connection port (can be left empty for default) - "db" => "sk-misc", // Database name + "db" => "sk_jjo", // Database name "dsn" => "", // PHP DSN extra information. Set as `charset=utf8mb4` if you are using MySQL "pdoAttr" => array() // PHP PDO attributes array. See the PHP documentation for all options ); diff --git a/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaAcabadoForm.php b/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaAcabadoForm.php index 039baaab..e0d57f9f 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaAcabadoForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaAcabadoForm.php @@ -1,3 +1,4 @@ += $this->include('themes/_commonPartialsBs/datatables') ?> = $this->include("themes/_commonPartialsBs/select2bs5") ?> = $this->include("themes/_commonPartialsBs/sweetalert") ?> =$this->extend('themes/backend/vuexy/main/defaultlayout') ?> @@ -10,22 +11,262 @@
- + - + +| = lang('TarifaAcabadoLineas.tiradaMin') ?> | += lang('TarifaAcabadoLineas.tiradaMax') ?> | += lang('TarifaAcabadoLineas.precioMin') ?> | += lang('TarifaAcabadoLineas.precioMax') ?> | += lang('TarifaAcabadoLineas.precioUnidad') ?> | ++ |
|---|