From 18ab7cd4d381ae65d0e467627e851320a992737e Mon Sep 17 00:00:00 2001 From: Ronald Q Date: Fri, 5 Aug 2016 17:38:31 -0400 Subject: [PATCH] fix in derivation --- workflow/engine/classes/class.wsBase.php | 14 ++++++++------ .../src/ProcessMaker/BusinessModel/Light.php | 2 ++ .../engine/src/ProcessMaker/Core/RoutingScreen.php | 3 +-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index 8f2ad869b..d5bc254fd 100755 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -2249,6 +2249,7 @@ class wsBase $oCase->setDelInitDate( $caseId, $delIndex ); $appFields = $oCase->loadCase( $caseId, $delIndex ); } + unset($appFields['APP_ROUTING_DATA']); $appFields["APP_DATA"]["APPLICATION"] = $caseId; @@ -2439,8 +2440,9 @@ class wsBase //derivate case $aCurrentDerivation = array ('APP_UID' => $caseId,'DEL_INDEX' => $delIndex,'APP_STATUS' => $sStatus,'TAS_UID' => $appdel['TAS_UID'],'ROU_TYPE' => $row[0]['ROU_TYPE'] ); - - $oDerivation->derivate( $aCurrentDerivation, $nextDelegations ); + $oRoute = new \ProcessMaker\Core\RoutingScreen(); + $nextTasks = $oRoute->mergeDataDerivation($nextDelegations, $oDerivation->prepareInformation($aData)); + $oDerivation->derivate( $aCurrentDerivation, $nextTasks ); $appFields = $oCase->loadCase( $caseId ); //Execute triggers after derivation @@ -2485,10 +2487,10 @@ class wsBase $appFields['APP_DATA'] = $oPMScript->aFields; //$appFields['APP_DATA']['APPLICATION'] = $caseId; //$appFields = $oCase->loadCase($caseId); - unset($aFields['APP_STATUS']); - unset($aFields['APP_PROC_STATUS']); - unset($aFields['APP_PROC_CODE']); - unset($aFields['APP_PIN']); + unset($appFields['APP_STATUS']); + unset($appFields['APP_PROC_STATUS']); + unset($appFields['APP_PROC_CODE']); + unset($appFields['APP_PIN']); $oCase->updateCase( $caseId, $appFields ); } } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Light.php b/workflow/engine/src/ProcessMaker/BusinessModel/Light.php index e5ec9dad0..65befbdbe 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Light.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Light.php @@ -451,6 +451,7 @@ class Light $taskAss['delPriority'] = isset($aValues['NEXT_TASK']['DEL_PRIORITY'])?$aValues['NEXT_TASK']['DEL_PRIORITY']:""; $taskAss['taskParent'] = $aValues['NEXT_TASK']['TAS_PARENT']; $taskAss['taskMessage'] = $taskType?$taskMessage:""; + $taskAss['sourceUid'] = $aValues['SOURCE_UID']; $users = array(); $users['userId'] = $derive[$sKey]['NEXT_TASK']['USER_ASSIGNED']['USR_UID']; $users['userFullName'] = strip_tags($derive[$sKey]['NEXT_TASK']['USER_ASSIGNED']['USR_FULLNAME']); @@ -468,6 +469,7 @@ class Light $manual['delPriority'] = isset($aValues['NEXT_TASK']['DEL_PRIORITY'])?$aValues['NEXT_TASK']['DEL_PRIORITY']:""; $manual['taskParent'] = $aValues['NEXT_TASK']['TAS_PARENT']; $manual['taskMessage'] = $taskType?$taskMessage:""; + $manual['sourceUid'] = $aValues['SOURCE_UID']; $Aux = array (); foreach ($aValues['NEXT_TASK']['USER_ASSIGNED'] as $aUser) { $Aux[$aUser['USR_UID']] = $aUser['USR_FULLNAME']; diff --git a/workflow/engine/src/ProcessMaker/Core/RoutingScreen.php b/workflow/engine/src/ProcessMaker/Core/RoutingScreen.php index 603be8a7f..a8bd8fd31 100644 --- a/workflow/engine/src/ProcessMaker/Core/RoutingScreen.php +++ b/workflow/engine/src/ProcessMaker/Core/RoutingScreen.php @@ -13,14 +13,13 @@ class RoutingScreen extends \Derivation public function mergeDataDerivation($post, $prepareInformation) { - $iPost = count($post); $aDataMerged = array(); $flagJumpTask = false; foreach ($prepareInformation as $key => $nextTask) { $aDataMerged[$key] = $nextTask['NEXT_TASK']; unset($aDataMerged[$key]['USER_ASSIGNED']); $aDataMerged[$key]['DEL_PRIORITY'] = ''; - for ($i = 1; $i <= $iPost; $i++) { + foreach ($post as $i => $item) { if(isset($post[$i]['SOURCE_UID']) && ($nextTask['NEXT_TASK']['TAS_UID'] === $post[$i]['SOURCE_UID']) && ($post[$i]['SOURCE_UID'] !== $post[$i]['TAS_UID'])){ $flagJumpTask = true; $aDataMerged[$key]['NEXT_ROUTING'][] = $post[$i];