diff --git a/workflow/engine/classes/WsBase.php b/workflow/engine/classes/WsBase.php index badbde4f4..f68be535f 100644 --- a/workflow/engine/classes/WsBase.php +++ b/workflow/engine/classes/WsBase.php @@ -3172,7 +3172,12 @@ class WsBase * @param string userUid : The unique ID of the user who will pause the case. * @param string unpauseDate : Optional parameter. The date in the format "yyyy-mm-dd" indicating when to unpause * the case. - * + * + * @see workflow/engine/classes/class.pmFunctions.php::PMFPauseCase() + * @see workflow/engine/methods/services/soap2.php::pauseCase() + * + * @link https://wiki.processmaker.com/3.3/ProcessMaker_Functions/Case_Functions#PMFPauseCase.28.29 + * * @return $result will return an object */ public function pauseCase($caseUid, $delIndex, $userUid, $unpauseDate = null) @@ -3208,6 +3213,22 @@ class WsBase return $result; } + //Validate if status is closed + $appDelegation = new AppDelegation(); + $rows = $appDelegation->LoadParallel($caseUid, $delIndex); + if (empty($rows)) { + $result = new WsResponse(100, G::LoadTranslation('ID_CASE_DELEGATION_ALREADY_CLOSED')); + $g->sessionVarRestore(); + return $result; + } + //Validate if the case is paused + $appDelay = new AppDelay(); + $sw = $appDelay->isPaused($caseUid, $delIndex); + if ($sw === true) { + $result = new WsResponse(19, G::LoadTranslation('ID_CASE_IN_STATUS') . " " . AppDelay::APP_TYPE_PAUSE); + $g->sessionVarRestore(); + return $result; + } if (strlen($unpauseDate) >= 10) { if (!preg_match("/^\d{4}-\d{2}-\d{2}| \d{2}:\d{2}:\d{2}$/", $unpauseDate)) { $result = new WsResponse(100, G::LoadTranslation("ID_INVALID_DATA") . " $unpauseDate"); diff --git a/workflow/engine/classes/class.pmFunctions.php b/workflow/engine/classes/class.pmFunctions.php index 8d1fb765b..80c0ad086 100644 --- a/workflow/engine/classes/class.pmFunctions.php +++ b/workflow/engine/classes/class.pmFunctions.php @@ -2825,7 +2825,7 @@ function PMFPauseCase ($caseUid, $delIndex, $userUid, $unpauseDate = null) { $ws = new WsBase(); $result = $ws->pauseCase($caseUid, $delIndex, $userUid, $unpauseDate); - + $result = (object) $result; if ($result->status_code == 0) { if (isset($_SESSION['APPLICATION']) && isset($_SESSION['INDEX'])) { if ($_SESSION['APPLICATION'] == $caseUid && $_SESSION['INDEX'] == $delIndex) {