diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index b4069bace..764aa40d5 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -593,6 +593,7 @@ class Derivation //Count how many tasks should be derivated. //$countNextTask = count($nextDelegations); + $removeList = true; foreach ($nextDelegations as $nextDel) { //BpmnEvent - END-MESSAGE-EVENT - Check and get unique id if (preg_match("/^(.{32})\/(\-1)$/", $nextDel["TAS_UID"], $arrayMatch)) { @@ -759,6 +760,7 @@ class Derivation $aFields['APP_STATUS'] = $currentDelegation['APP_STATUS']; $inbox = new ListInbox(); $inbox->newRow($aFields, $appFields['CURRENT_USER_UID'], false, array(), ($nextDel['TAS_ASSIGN_TYPE'] == 'SELF_SERVICE' ? true : false)); + $removeList = false; } } else { $oRow = ApplicationPeer::retrieveByPK($appFields['APP_UID']); diff --git a/workflow/engine/classes/model/ListInbox.php b/workflow/engine/classes/model/ListInbox.php index 3cf6b1343..bd4190073 100644 --- a/workflow/engine/classes/model/ListInbox.php +++ b/workflow/engine/classes/model/ListInbox.php @@ -192,6 +192,11 @@ class ListInbox extends BaseListInbox public function newRow ($data, $delPreviusUsrUid, $isInitSubprocess = false, $dataPreviusApplication = array(), $isSelfService = false) { + $removeList = true; + if (isset($data['REMOVED_LIST'])) { + $removeList = $data['REMOVED_LIST']; + unset($data['REMOVED_LIST']); + } $data['DEL_PREVIOUS_USR_UID'] = $delPreviusUsrUid; if (isset($data['DEL_TASK_DUE_DATE'])) { $data['DEL_DUE_DATE'] = $data['DEL_TASK_DUE_DATE']; @@ -281,18 +286,20 @@ class ListInbox extends BaseListInbox } else { $oRow = ApplicationPeer::retrieveByPK($data['APP_UID']); $aFields = $oRow->toArray( BasePeer::TYPE_FIELDNAME ); - if ($data['DEL_INDEX'] == 2 || $aFields['APP_STATUS'] == 'DRAFT') { - $criteria = new Criteria(); - $criteria->addSelectColumn(SubApplicationPeer::APP_UID); - $criteria->add( SubApplicationPeer::APP_UID, $data['APP_UID'], Criteria::EQUAL ); - $dataset = SubApplicationPeer::doSelectRS($criteria); - if ($dataset->next()) { - $users->refreshTotal($delPreviusUsrUid, 'remove', 'inbox'); + if ($removeList) { + if ($data['DEL_INDEX'] == 2 || $aFields['APP_STATUS'] == 'DRAFT') { + $criteria = new Criteria(); + $criteria->addSelectColumn(SubApplicationPeer::APP_UID); + $criteria->add( SubApplicationPeer::APP_UID, $data['APP_UID'], Criteria::EQUAL ); + $dataset = SubApplicationPeer::doSelectRS($criteria); + if ($dataset->next()) { + $users->refreshTotal($delPreviusUsrUid, 'remove', 'inbox'); + } else { + $users->refreshTotal($delPreviusUsrUid, 'remove', 'draft'); + } } else { - $users->refreshTotal($delPreviusUsrUid, 'remove', 'draft'); + $users->refreshTotal($delPreviusUsrUid, 'remove', 'inbox'); } - } else { - $users->refreshTotal($delPreviusUsrUid, 'remove', 'inbox'); } if (!$isSelfService) { $users->refreshTotal($data['USR_UID'], 'add', 'inbox');