Merge pull request #19826 from atm-gauthier/FIX_hrm

FIX : several adaptations rank => rankorder and langs correction for HRM
This commit is contained in:
Laurent Destailleur 2022-01-14 10:01:14 +01:00 committed by GitHub
commit 71e470eb6c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 32 additions and 36 deletions

View File

@ -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);
}
}

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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();
@ -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++;

View File

@ -93,7 +93,7 @@ print '</td>';
<?php
global $permissiontoadd;
print displayRankInfos($line->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');
?>

View File

@ -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
@ -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;

View File

@ -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 .= '<span title="' . $line->description . '" class="radio_js_bloc_number ' . $inputname . '_' . $line->fk_skill;
$ret .= $line->rank == $selected_rank ? ' selected' : '';
$ret .= '">' . $line->rank . '</span>';
$ret .= $line->rankorder == $selected_rank ? ' selected' : '';
$ret .= '">' . $line->rankorder . '</span>';
}
if ($mode == 'edit') {

View File

@ -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 '<td>';
print $sk->description;
print '</td><td class="linecolrank">';
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 '</td>';
if ($objecttype != 'user' && $permissiontoadd) {
print '<td class="linecoledit"></td>';

View File

@ -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