diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index 2a2dd14ba..7e81cab80 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -746,31 +746,45 @@ class Derivation } //switch } } + //SETS THE APP_PROC_CODE //if (isset($nextDel['TAS_DEF_PROC_CODE'])) //$appFields['APP_PROC_CODE'] = $nextDel['TAS_DEF_PROC_CODE']; /*----------------------------------********---------------------------------*/ - $taskCur = TaskPeer::retrieveByPK( $nextDel['TAS_UID']); - $aTask = $taskCur->toArray( BasePeer::TYPE_FIELDNAME ); - $arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT"); - if (!in_array($aTask['TAS_TYPE'], $arrayTaskTypeToExclude)) { - if (!empty($iNewDelIndex) && empty($aSP)) { - $oAppDel = AppDelegationPeer::retrieveByPK( $appFields['APP_UID'], $iNewDelIndex ); - $aFields = $oAppDel->toArray( BasePeer::TYPE_FIELDNAME ); - $aFields['APP_STATUS'] = $currentDelegation['APP_STATUS']; - $aFields['REMOVED_LIST'] = $removeList; - $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']); - $aFields = $oRow->toArray( BasePeer::TYPE_FIELDNAME ); - $users = new Users(); - if ($aFields['APP_STATUS'] == 'DRAFT') { - $users->refreshTotal($appFields['CURRENT_USER_UID'], 'remove', 'draft'); + if ($nextDel['TAS_UID'] != '-1') { + $taskCur = TaskPeer::retrieveByPK($nextDel['TAS_UID']); + $aTask = $taskCur->toArray( BasePeer::TYPE_FIELDNAME ); + $arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT"); + if (!in_array($aTask['TAS_TYPE'], $arrayTaskTypeToExclude)) { + if (!empty($iNewDelIndex) && empty($aSP)) { + $oAppDel = AppDelegationPeer::retrieveByPK( $appFields['APP_UID'], $iNewDelIndex ); + $aFields = $oAppDel->toArray( BasePeer::TYPE_FIELDNAME ); + $aFields['APP_STATUS'] = $currentDelegation['APP_STATUS']; + $aFields['REMOVED_LIST'] = $removeList; + $inbox = new ListInbox(); + $inbox->newRow($aFields, $appFields['CURRENT_USER_UID'], false, array(), ($nextDel['TAS_ASSIGN_TYPE'] == 'SELF_SERVICE' ? true : false)); + $removeList = false; + } else { + if (empty($aSP)) { + $oRow = ApplicationPeer::retrieveByPK($appFields['APP_UID']); + $aFields = $oRow->toArray( BasePeer::TYPE_FIELDNAME ); + $users = new Users(); + if ($aFields['APP_STATUS'] == 'DRAFT') { + $users->refreshTotal($appFields['CURRENT_USER_UID'], 'remove', 'draft'); + } else { + $users->refreshTotal($appFields['CURRENT_USER_UID'], 'remove', 'inbox'); + } + } + } } else { - $users->refreshTotal($appFields['CURRENT_USER_UID'], 'remove', 'inbox'); + $oRow = ApplicationPeer::retrieveByPK($appFields['APP_UID']); + $aFields = $oRow->toArray( BasePeer::TYPE_FIELDNAME ); + $users = new Users(); + if ($aFields['APP_STATUS'] == 'DRAFT') { + $users->refreshTotal($appFields['CURRENT_USER_UID'], 'remove', 'draft'); + } else { + $users->refreshTotal($appFields['CURRENT_USER_UID'], 'remove', 'inbox'); + } } } /*----------------------------------********---------------------------------*/ diff --git a/workflow/engine/classes/model/ListMyInbox.php b/workflow/engine/classes/model/ListMyInbox.php index 61d90ff37..b2cc4860b 100644 --- a/workflow/engine/classes/model/ListMyInbox.php +++ b/workflow/engine/classes/model/ListMyInbox.php @@ -123,7 +123,10 @@ class ListMyInbox extends BaseListMyInbox if ($data['DEL_INDEX'] == 1 && $data['APP_STATUS'] == 'TO_DO') { $data['APP_CREATE_DATE'] = $data['APP_UPDATE_DATE']; - $this->remove($data['APP_UID'], $data['USR_UID']); + $oCriteria = new Criteria('workflow'); + $oCriteria->add(ListMyInboxPeer::APP_UID, $data['APP_UID']); + $oCriteria->add(ListMyInboxPeer::USR_UID, $data['USR_UID']); + ListMyInboxPeer::doDelete($oCriteria); $this->create($data); } else { unset($data['USR_UID']);