From a77a2e9bcc4d3c9f48543d3a06996b9ac3b6dd56 Mon Sep 17 00:00:00 2001 From: Gauthier PC portable 024 Date: Thu, 13 Jan 2022 11:39:54 +0100 Subject: [PATCH 1/2] FIX : several adaptations rank => rankorder and langs correction for HRM --- htdocs/hrm/class/evaluation.class.php | 2 +- htdocs/hrm/class/skill.class.php | 2 +- htdocs/hrm/class/skillrank.class.php | 4 ++-- htdocs/hrm/compare.php | 14 +++++------ htdocs/hrm/core/tpl/objectline_view.tpl.php | 2 +- htdocs/hrm/evaluation_card.php | 26 +++++++++------------ htdocs/hrm/lib/hrm_skillrank.lib.php | 6 ++--- htdocs/hrm/skill_tab.php | 4 ++-- htdocs/langs/fr_FR/hrm.lang | 2 +- 9 files changed, 29 insertions(+), 33 deletions(-) diff --git a/htdocs/hrm/class/evaluation.class.php b/htdocs/hrm/class/evaluation.class.php index 75dc03cc6f2..58ac7fe3324 100644 --- a/htdocs/hrm/class/evaluation.class.php +++ b/htdocs/hrm/class/evaluation.class.php @@ -236,7 +236,7 @@ class Evaluation extends CommonObject $line = new Evaluationline($this->db); $line->fk_evaluation = $resultcreate; $line->fk_skill = $required->fk_skill; - $line->required_rank = $required->rank; + $line->required_rank = $required->rankorder; $line->fk_rank = 0; $res = $line->create($user, $notrigger); diff --git a/htdocs/hrm/class/skill.class.php b/htdocs/hrm/class/skill.class.php index ebf568e68fe..d20d34cfd5e 100644 --- a/htdocs/hrm/class/skill.class.php +++ b/htdocs/hrm/class/skill.class.php @@ -978,7 +978,7 @@ class Skill extends CommonObject $this->lines = array(); $objectline = new SkillLine($this->db); - $result = $objectline->fetchAll('ASC', 'rank', 0, 0, array('customsql'=>'fk_skill = '.$this->id)); + $result = $objectline->fetchAll('ASC', 'rankorder', 0, 0, array('customsql'=>'fk_skill = '.$this->id)); if (is_numeric($result)) { $this->error = $this->error; diff --git a/htdocs/hrm/class/skillrank.class.php b/htdocs/hrm/class/skillrank.class.php index a07015ef763..587fc889e0f 100644 --- a/htdocs/hrm/class/skillrank.class.php +++ b/htdocs/hrm/class/skillrank.class.php @@ -107,7 +107,7 @@ class SkillRank extends CommonObject public $fields=array( 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>0, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"), 'fk_skill' => array('type'=>'integer:Skill:hrm/class/skill.class.php:1', 'label'=>'Skill', 'enabled'=>'1', 'position'=>3, 'notnull'=>1, 'visible'=>1, 'index'=>1,), - 'rank' => array('type'=>'integer', 'label'=>'Rank', 'enabled'=>'1', 'position'=>4, 'notnull'=>1, 'visible'=>1, 'default' => 0), + 'rankorder' => array('type'=>'integer', 'label'=>'Rank', 'enabled'=>'1', 'position'=>4, 'notnull'=>1, 'visible'=>1, 'default' => 0), 'fk_object' => array('type'=>'integer', 'label'=>'object', 'enabled'=>'1', 'position'=>5, 'notnull'=>1, 'visible'=>0,), 'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>'1', 'position'=>500, 'notnull'=>1, 'visible'=>-2,), 'tms' => array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>'1', 'position'=>501, 'notnull'=>0, 'visible'=>-2,), @@ -371,7 +371,7 @@ class SkillRank extends CommonObject global $user; $this->fk_skill = $currentSkill->fk_skill; - $this->rank = $currentSkill->rank; + $this->rankorder = $currentSkill->rankorder; $this->fk_object = $fk_user; $this->date_creation = dol_now(); $this->fk_user_creat = $user->id; diff --git a/htdocs/hrm/compare.php b/htdocs/hrm/compare.php index dc641cb6d09..008dd04c161 100644 --- a/htdocs/hrm/compare.php +++ b/htdocs/hrm/compare.php @@ -372,7 +372,7 @@ function mergeSkills($TSkill1, $TSkill2) foreach ($TSkill1 as &$sk) { if (empty($Tab[$sk->fk_skill])) $Tab[$sk->fk_skill] = new stdClass; - $Tab[$sk->fk_skill]->rate1 = $sk->rank; + $Tab[$sk->fk_skill]->rate1 = $sk->rankorder; $Tab[$sk->fk_skill]->how_many_max1 = $sk->how_many_max; $Tab[$sk->fk_skill]->label = $sk->label; $Tab[$sk->fk_skill]->description = $sk->description; @@ -380,7 +380,7 @@ function mergeSkills($TSkill1, $TSkill2) foreach ($TSkill2 as &$sk) { if (empty($Tab[$sk->fk_skill])) $Tab[$sk->fk_skill] = new stdClass; - $Tab[$sk->fk_skill]->rate2 = $sk->rank; + $Tab[$sk->fk_skill]->rate2 = $sk->rankorder; $Tab[$sk->fk_skill]->label = $sk->label; $Tab[$sk->fk_skill]->description = $sk->description; $Tab[$sk->fk_skill]->how_many_max2 = $sk->how_many_max; @@ -481,7 +481,7 @@ function getSkillForUsers($TUser) if (empty($TUser)) return array(); $sql = 'SELECT sk.rowid, sk.label, sk.description, sk.skill_type, sr.fk_object, sr.objecttype, sr.fk_skill, '; - $sql.= ' MAX(sr.rank) as "rank"'; + $sql.= ' MAX(sr.rankorder) as "rankorder"'; $sql.= ' FROM '.MAIN_DB_PREFIX.'hrm_skill sk'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'hrm_skillrank sr ON (sk.rowid = sr.fk_skill)'; $sql.= " WHERE sr.objecttype = '".SkillRank::SKILLRANK_TYPE_USER."'"; @@ -496,7 +496,7 @@ function getSkillForUsers($TUser) $num = 0; while ($obj = $db->fetch_object($resql) ) { $sql1 = "SELECT count(*) as how_many_max FROM ".MAIN_DB_PREFIX."hrm_skillrank sr"; - $sql1.=" WHERE sr.rank = ".((int) $obj->rank); + $sql1.=" WHERE sr.rankorder = ".((int) $obj->rankorder); $sql1.=" AND sr.objecttype = '".Skillrank::SKILLRANK_TYPE_USER."'"; $sql1.=" AND sr.fk_skill = ".((int) $obj->fk_skill); $sql1.=" AND sr.fk_object IN (".$db->sanitize(implode(',', $TUser)).")"; @@ -511,7 +511,7 @@ function getSkillForUsers($TUser) $Tab[$num]->skill_type = $obj->skill_type; $Tab[$num]->fk_object = $obj->fk_object; $Tab[$num]->objectType = SkillRank::SKILLRANK_TYPE_USER; - $Tab[$num]->rank = $obj->rank; + $Tab[$num]->rankorder = $obj->rankorder; $Tab[$num]->how_many_max = $objMax->how_many_max; $num++; @@ -536,7 +536,7 @@ function getSkillForJob($fk_job) if (empty($fk_job)) return array(); $sql = 'SELECT sk.rowid, sk.label, sk.description, sk.skill_type, sr.fk_object, sr.objecttype, sr.fk_skill, '; - $sql.= ' MAX(sr.rank) as "rank"'; + $sql.= ' MAX(sr.rankorder) as "rankorder"'; $sql.=' FROM '.MAIN_DB_PREFIX.'hrm_skill sk'; $sql.=' LEFT JOIN '.MAIN_DB_PREFIX.'hrm_skillrank sr ON (sk.rowid = sr.fk_skill)'; $sql.=" WHERE sr.objecttype = '".SkillRank::SKILLRANK_TYPE_JOB."'"; @@ -559,7 +559,7 @@ function getSkillForJob($fk_job) //$Tab[$num]->date_end = ''; // du poste $Tab[$num]->fk_object = $obj->fk_object; $Tab[$num]->objectType = SkillRank::SKILLRANK_TYPE_JOB; - $Tab[$num]->rank = $obj->rank; + $Tab[$num]->rankorder = $obj->rankorder; $Tab[$num]->how_many_max = $obj->how_many_max; $num++; diff --git a/htdocs/hrm/core/tpl/objectline_view.tpl.php b/htdocs/hrm/core/tpl/objectline_view.tpl.php index 9dd0e0099ab..ce436ca604a 100644 --- a/htdocs/hrm/core/tpl/objectline_view.tpl.php +++ b/htdocs/hrm/core/tpl/objectline_view.tpl.php @@ -93,7 +93,7 @@ print ''; rank, $line->fk_skill, 'TNote', ($this->status == 0 && $permissiontoadd) ? 'edit' : 'view'); + print displayRankInfos($line->rankorder, $line->fk_skill, 'TNote', ($this->status == 0 && $permissiontoadd) ? 'edit' : 'view'); ?> diff --git a/htdocs/hrm/evaluation_card.php b/htdocs/hrm/evaluation_card.php index 159e07bf07f..5968613c303 100644 --- a/htdocs/hrm/evaluation_card.php +++ b/htdocs/hrm/evaluation_card.php @@ -156,7 +156,7 @@ if (empty($reshook)) { $TNote = GETPOST('TNote', 'array'); if (!empty($TNote)) { foreach ($object->lines as $line) { - $line->rank = $TNote[$line->fk_skill]; + $line->rankorder = $TNote[$line->fk_skill]; $line->update($user); } } @@ -172,16 +172,12 @@ if (empty($reshook)) { foreach ($object->lines as $key => $line) { // no reference .. we add the line to use it if (count($SkillrecordsForActiveUser) == 0) { - if ($res > 0) { - $newSkill = new SkillRank($db); - $resCreate = $newSkill->cloneFromCurrentSkill($line, $object->fk_user); + $newSkill = new SkillRank($db); + $resCreate = $newSkill->cloneFromCurrentSkill($line, $object->fk_user); - if ($resCreate <= 0) { - $errors++; - setEventMessage($langs->trans('ErrorCreateUserSkill'), $line->fk_skill); - } - } else { - setEventMessage($langs->trans('NoSkilRankLoaded')); + if ($resCreate <= 0) { + $errors++; + setEventMessage($langs->trans('ErrorCreateUserSkill'), $line->fk_skill); } } else { //check if the skill is present to use it @@ -198,7 +194,7 @@ if (empty($reshook)) { if ($find) { $updSkill = $SkillrecordsForActiveUser[$k]; - $updSkill->rank = $line->rank; + $updSkill->rankorder = $line->rankorder; $updSkill->update($user); } else { // sinon on ajoute la skill $newSkill = new SkillRank($db); @@ -519,9 +515,9 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $sql .= ' sk.label as "skilllabel",'; $sql .= ' sk.skill_type,'; $sql .= ' sk.description,'; - $sql .= ' ed.rank,'; + $sql .= ' ed.rankorder,'; $sql .= ' ed.required_rank,'; - $sql .= ' ed.rank as "userRankForSkill",'; + $sql .= ' ed.rankorder as "userRankForSkill",'; $sql .= ' skdet_user.description as "userRankForSkillDesc",'; $sql .= ' skdet_required.description as "required_rank_desc"'; @@ -529,9 +525,9 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $sql .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'hrm_evaluationdet as ed ON e.rowid = ed.fk_evaluation'; $sql .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'hrm_job as j ON e.fk_job = j.rowid'; $sql .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'hrm_skill as sk ON ed.fk_skill = sk.rowid'; - $sql .= ' INNER JOIN ' . MAIN_DB_PREFIX . 'hrm_skilldet as skdet_user ON (skdet_user.fk_skill = sk.rowid AND skdet_user.rank = ed.rank)'; + $sql .= ' INNER JOIN ' . MAIN_DB_PREFIX . 'hrm_skilldet as skdet_user ON (skdet_user.fk_skill = sk.rowid AND skdet_user.rankorder = ed.rankorder)'; //$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "hrm_skillrank as skr ON (j.rowid = skr.fk_object AND skr.fk_skill = ed.fk_skill AND skr.objecttype = 'job')"; - $sql .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'hrm_skilldet as skdet_required ON (skdet_required.fk_skill = sk.rowid AND skdet_required.rank = ed.required_rank)'; + $sql .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'hrm_skilldet as skdet_required ON (skdet_required.fk_skill = sk.rowid AND skdet_required.rankorder = ed.required_rank)'; $sql .= " WHERE e.rowid =" . ((int) $object->id); // echo $sql; diff --git a/htdocs/hrm/lib/hrm_skillrank.lib.php b/htdocs/hrm/lib/hrm_skillrank.lib.php index 5872ec6f037..d979e8ca4b7 100644 --- a/htdocs/hrm/lib/hrm_skillrank.lib.php +++ b/htdocs/hrm/lib/hrm_skillrank.lib.php @@ -124,13 +124,13 @@ function displayRankInfos($selected_rank, $fk_skill, $inputname = 'TNote', $mode if (is_array($Lines) && !empty($Lines)) { foreach ($Lines as $line) { $MaxNumberSkill = isset($conf->global->HRM_MAXRANK) ? $conf->global->HRM_MAXRANK : Skill::DEFAULT_MAX_RANK_PER_SKILL; - if ($line->rank > $MaxNumberSkill) { + if ($line->rankorder > $MaxNumberSkill) { continue; } $ret .= '' . $line->rank . ''; + $ret .= $line->rankorder == $selected_rank ? ' selected' : ''; + $ret .= '">' . $line->rankorder . ''; } if ($mode == 'edit') { diff --git a/htdocs/hrm/skill_tab.php b/htdocs/hrm/skill_tab.php index e7c6798bbec..1ed9e370839 100644 --- a/htdocs/hrm/skill_tab.php +++ b/htdocs/hrm/skill_tab.php @@ -130,7 +130,7 @@ if (empty($reshook)) { $TSkills = $skill->fetchAll('ASC', 't.rowid', 0, 0, array('customsql' => 'fk_object=' . ((int) $id) . " AND objecttype='" . $db->escape($objecttype) . "' AND fk_skill = " . ((int) $skillId))); if (is_array($TSkills) && !empty($TSkills)) { foreach ($TSkills as $tmpObj) { - $tmpObj->rank = $rank; + $tmpObj->rankorder = $rank; $tmpObj->update($user); } } @@ -305,7 +305,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; print $sk->description; print ''; - print displayRankInfos($skillElement->rank, $skillElement->fk_skill, 'TNote', $objecttype == 'job' && $permissiontoadd ? 'edit' : 'view'); + print displayRankInfos($skillElement->rankorder, $skillElement->fk_skill, 'TNote', $objecttype == 'job' && $permissiontoadd ? 'edit' : 'view'); print ''; if ($objecttype != 'user' && $permissiontoadd) { print ''; diff --git a/htdocs/langs/fr_FR/hrm.lang b/htdocs/langs/fr_FR/hrm.lang index 2e19df64b98..d47596fe95e 100644 --- a/htdocs/langs/fr_FR/hrm.lang +++ b/htdocs/langs/fr_FR/hrm.lang @@ -23,7 +23,7 @@ HrmSetup=Configuration du module GRH SkillsManagement=Gestion des compétences HRM_MAXRANK=Nombre maximum de niveaux pour classer une compétence HRM_DEFAULT_SKILL_DESCRIPTION=Description par défaut des rangs lors de la création de la compétence -deplacement=Ctrl +deplacement=Déplacement DateEval=Date d'évaluation JobCard=Fiche emploi JobPosition=Emploi From 55389036d9bace3b19097081b14b59964b756d1b Mon Sep 17 00:00:00 2001 From: Gauthier PC portable 024 Date: Thu, 13 Jan 2022 12:02:05 +0100 Subject: [PATCH 2/2] FIX : perms --- htdocs/core/menus/standard/eldy.lib.php | 2 +- htdocs/hrm/compare.php | 2 +- htdocs/hrm/evaluation_card.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 58d39fe8aa4..625022e6bbf 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -1817,7 +1817,7 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM $newmenu->add("/hrm/evaluation_list.php?mainmenu=hrm&leftmenu=hrm_sm", $langs->trans("Evalutions"), 1, $user->rights->hrm->evaluation->read, '', $mainmenu, 'hrm_sm', 0, '', '', '', img_picto('', 'user', 'class="pictofixedwidth"')); //$newmenu->add("/hrm/evaluation_card.php?mainmenu=hrm&leftmenu=hrm_sm&action=create", $langs->trans("NewEval"), 1, $user->rights->hrm->evaluation->write); //$newmenu->add("/hrm/evaluation_list.php?mainmenu=hrm&leftmenu=hrm_sm", $langs->trans("List"), 1, $user->rights->hrm->evaluation->read); - $newmenu->add("/hrm/compare.php?mainmenu=hrm&leftmenu=hrm_sm", $langs->trans("SkillComparison"), 1, $user->rights->hrm->evaluation->read || $user->rights->hrm->compare->read); + $newmenu->add("/hrm/compare.php?mainmenu=hrm&leftmenu=hrm_sm", $langs->trans("SkillComparison"), 1, $user->rights->hrm->evaluation->read || $user->rights->hrm->compare_advance->read); } } diff --git a/htdocs/hrm/compare.php b/htdocs/hrm/compare.php index 008dd04c161..c8bb01d85e5 100644 --- a/htdocs/hrm/compare.php +++ b/htdocs/hrm/compare.php @@ -42,7 +42,7 @@ require_once DOL_DOCUMENT_ROOT . '/hrm/class/evaluation.class.php'; require_once DOL_DOCUMENT_ROOT . '/hrm/class/position.class.php'; require_once DOL_DOCUMENT_ROOT . '/hrm/lib/hrm.lib.php'; -$permissiontoread = $user->rights->hrm->evaluation->read || $user->rights->hrm->compare->read; +$permissiontoread = $user->rights->hrm->evaluation->read || $user->rights->hrm->compare_advance->read; $permissiontoadd = 0; if (empty($conf->hrm->enabled)) accessforbidden(); if (!$permissiontoread || ($action === 'create' && !$permissiontoadd)) accessforbidden(); diff --git a/htdocs/hrm/evaluation_card.php b/htdocs/hrm/evaluation_card.php index 5968613c303..8aeadeaa18c 100644 --- a/htdocs/hrm/evaluation_card.php +++ b/htdocs/hrm/evaluation_card.php @@ -82,7 +82,7 @@ include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be includ $permissiontoread = $user->rights->hrm->evaluation->read; $permissiontoadd = $user->rights->hrm->evaluation->write; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php -$permissiontovalidate = $user->rights->hrm->evaluation->validate; +$permissiontovalidate = $user->rights->hrm->evaluation_advance->validate; $permissiontoClose = $user->rights->hrm->evaluation->write; $permissiontodelete = $user->rights->hrm->evaluation->delete/* || ($permissiontoadd && isset($object->status) && $object->status == $object::STATUS_DRAFT)*/; $permissiondellink = $user->rights->hrm->evaluation->write; // Used by the include of actions_dellink.inc.php