BUG 7338 User profile Replaced by doesn't work when PM derivate a case

- In the class "derivation" doesn't exist the validation for the "Replaced By" field
- Added the business logic to set the replaced by user when a case is derivated
This commit is contained in:
Julio Cesar Laura
2012-08-16 11:44:17 -04:00
parent c07dec56ca
commit 3947d5418e
3 changed files with 61 additions and 40 deletions

View File

@@ -274,12 +274,10 @@ class Derivation
$oUser = UsersPeer::retrieveByPK( $row['USR_UID'] );
if( $oUser->getUsrStatus() == 'ACTIVE' ){
$users[$row['USR_UID']] = $row['USR_UID'];
} else if($oUser->getUsrStatus() == 'VACATION'){
//this a litle hook for this issue,...
//TODO if the user in getUsrReplacedBy() is not assignet to the same task,. will have problems,....
$UsrReplace = $oUser->getUsrReplacedBy();
if( trim($UsrReplace) != ''){
//$users[$UsrReplace] = $UsrReplace;
} else {
$userUID = $this->checkReplacedByUser($oUser);
if ($userUID != '') {
$users[$userUID] = $userUID;
}
}
}
@@ -394,7 +392,7 @@ class Derivation
$variable = str_replace ( '@@', '', $nextAssignedTask['TAS_ASSIGN_VARIABLE'] );
if ( isset ( $AppFields['APP_DATA'][$variable] ) ) {
if ($AppFields['APP_DATA'][$variable] != '') {
$value = $AppFields['APP_DATA'][$variable];
$value = $this->checkReplacedByUser($AppFields['APP_DATA'][$variable]);
$userFields = $this->getUsersFullNameFromArray ($value);
if (is_null($userFields)) {
throw ( new Exception("Task doesn't have a valid user in variable $variable.") ) ;
@@ -419,7 +417,7 @@ class Derivation
$userFields['USR_EMAIL'] = '';
//get the report_to user & its full info
$useruid = $this->getDenpendentUser($tasInfo['USER_UID']);
$useruid = $this->getDenpendentUser($this->checkReplacedByUser($tasInfo['USER_UID']));
if (isset($useruid) && $useruid != '') {
$userFields = $this->getUsersFullNameFromArray($useruid);
@@ -1031,8 +1029,28 @@ class Derivation
$aData[$aKey] = $userid;
}
return $aGrp;
//var_dump($aDerivation);
//die;
}
function checkReplacedByUser($user)
{
if (get_class($user) != 'Users') {
$userInstance = UsersPeer::retrieveByPK($user);
} else {
$userInstance = $user;
}
if (!is_object($userInstance)) {
throw new Exception("The user with the UID '$user' doesn't exist.");
}
if ($userInstance->getUsrStatus() == 'ACTIVE') {
return $userInstance->getUsrUid();
} else {
$userReplace = trim($userInstance->getUsrReplacedBy());
if ($userReplace != '') {
return $this->checkReplacedByUser(UsersPeer::retrieveByPK($userReplace));
} else {
return '';
}
}
}
}

View File

@@ -56,6 +56,9 @@ switch($_POST['action'])
$oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME);
$oCriteria->addSelectColumn(UsersPeer::USR_EMAIL);
$oCriteria->add(UsersPeer::USR_STATUS,'ACTIVE');
if (isset($_POST['USR_UID'])) {
$oCriteria->add(UsersPeer::USR_UID, $_POST['USR_UID'], Criteria::NOT_EQUAL);
}
$oDataset = UsersPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);

View File

@@ -273,7 +273,7 @@ Ext.onReady(function () {
method: "POST"
}),
baseParams: {"action": "usersList"},
baseParams: {"action": "usersList", "USR_UID": USR_UID},
reader: new Ext.data.JsonReader({
fields: [