diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index 2df12068c..1d5f75d3c 100755 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -3133,6 +3133,13 @@ class wsBase $g->sessionVarRestore(); return $result; } + $oAppThread = new AppThread(); + $cant = $oAppThread->countStatus($caseUid, 'OPEN'); + if($cant > 1){ + $result = new wsResponse( 100, G::LoadTranslation( "ID_CASE_CANCELLED_PARALLEL" ) ); + $g->sessionVarRestore(); + return $result; + } $case = new Cases(); $case->cancelCase( $caseUid, $delIndex, $userUid ); diff --git a/workflow/engine/classes/model/AppThread.php b/workflow/engine/classes/model/AppThread.php index 8da9a7013..fe9cf57ae 100755 --- a/workflow/engine/classes/model/AppThread.php +++ b/workflow/engine/classes/model/AppThread.php @@ -114,5 +114,15 @@ class AppThread extends BaseAppThread throw($oError); } } + + public function countStatus($appUid, $status='OPEN'){ + $c = new Criteria('workflow'); + $c->clearSelectColumns(); + $c->addSelectColumn( AppThreadPeer::APP_THREAD_PARENT ); + $c->add(AppThreadPeer::APP_UID, $appUid ); + $c->add(AppThreadPeer::APP_THREAD_STATUS , $status ); + $cant = AppThreadPeer::doCount($c); + return $cant; + } }