Merged in develop (pull request #5799)
Update branch Approved-by: Paula Quispe <paula.quispe@processmaker.com>
This commit is contained in:
@@ -1033,38 +1033,7 @@ class Derivation
|
|||||||
Bootstrap::registerMonolog('CaseDerivation', 200, 'Case Derivation', $aContext, $this->sysSys, 'processmaker.log');
|
Bootstrap::registerMonolog('CaseDerivation', 200, 'Case Derivation', $aContext, $this->sysSys, 'processmaker.log');
|
||||||
break;
|
break;
|
||||||
case TASK_FINISH_TASK:
|
case TASK_FINISH_TASK:
|
||||||
$iAppThreadIndex = $appFields['DEL_THREAD'];
|
$this->finishTask($currentDelegation, $nextDel, $appFields, $flagFirstIteration, $flagTaskAssignTypeIsMultipleInstance, $aContext);
|
||||||
$this->case->closeAppThread($currentDelegation['APP_UID'], $iAppThreadIndex);
|
|
||||||
if (isset($nextDel["TAS_UID_DUMMY"])) {
|
|
||||||
$criteria = new Criteria("workflow");
|
|
||||||
$criteria->addSelectColumn(RoutePeer::TAS_UID);
|
|
||||||
$criteria->addJoin(RoutePeer::TAS_UID, AppDelegationPeer::TAS_UID);
|
|
||||||
$criteria->add(RoutePeer::PRO_UID, $appFields['PRO_UID']);
|
|
||||||
$criteria->add(RoutePeer::ROU_NEXT_TASK, isset($nextDel['ROU_PREVIOUS_TASK']) ? $nextDel['ROU_PREVIOUS_TASK'] : '');
|
|
||||||
$criteria->add(RoutePeer::ROU_TYPE, isset($nextDel['ROU_PREVIOUS_TYPE']) ? $nextDel['ROU_PREVIOUS_TYPE'] : '');
|
|
||||||
$criteria->add(AppDelegationPeer::DEL_THREAD_STATUS, 'OPEN');
|
|
||||||
$rsCriteria = RoutePeer::doSelectRS($criteria);
|
|
||||||
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
|
||||||
$executeEvent = ($rsCriteria->next()) ? false : true;
|
|
||||||
|
|
||||||
$multiInstanceCompleted = true;
|
|
||||||
if ($flagTaskAssignTypeIsMultipleInstance) {
|
|
||||||
$multiInstanceCompleted = $this->case->multiInstanceIsCompleted(
|
|
||||||
$appFields['APP_UID'],
|
|
||||||
$appFields['TAS_UID'],
|
|
||||||
$appFields['DEL_PREVIOUS']);
|
|
||||||
}
|
|
||||||
|
|
||||||
$taskDummy = TaskPeer::retrieveByPK($nextDel["TAS_UID_DUMMY"]);
|
|
||||||
if (preg_match("/^(?:END-MESSAGE-EVENT|END-EMAIL-EVENT)$/", $taskDummy->getTasType())
|
|
||||||
&& $multiInstanceCompleted && $executeEvent
|
|
||||||
) {
|
|
||||||
$this->executeEvent($nextDel["TAS_UID_DUMMY"], $appFields, $flagFirstIteration, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$aContext['action'] = 'finish-task';
|
|
||||||
//Logger
|
|
||||||
Bootstrap::registerMonolog('CaseDerivation', 200, 'Case Derivation', $aContext, $this->sysSys, 'processmaker.log');
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
//Get all siblingThreads
|
//Get all siblingThreads
|
||||||
@@ -1348,7 +1317,7 @@ class Derivation
|
|||||||
/* Start Block : Count the open threads of $currentDelegation['APP_UID'] */
|
/* Start Block : Count the open threads of $currentDelegation['APP_UID'] */
|
||||||
$openThreads = $this->case->GetOpenThreads( $currentDelegation['APP_UID'] );
|
$openThreads = $this->case->GetOpenThreads( $currentDelegation['APP_UID'] );
|
||||||
|
|
||||||
$flag = false;
|
$flagUpdateCase = false;
|
||||||
|
|
||||||
//check if there is any paused thread
|
//check if there is any paused thread
|
||||||
|
|
||||||
@@ -1364,18 +1333,22 @@ class Derivation
|
|||||||
$appFields["APP_STATUS"] = "COMPLETED";
|
$appFields["APP_STATUS"] = "COMPLETED";
|
||||||
$appFields["APP_FINISH_DATE"] = "now";
|
$appFields["APP_FINISH_DATE"] = "now";
|
||||||
$this->verifyIsCaseChild($currentDelegation["APP_UID"], $currentDelegation["DEL_INDEX"]);
|
$this->verifyIsCaseChild($currentDelegation["APP_UID"], $currentDelegation["DEL_INDEX"]);
|
||||||
$flag = true;
|
$flagUpdateCase = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset( $iNewDelIndex )) {
|
//The variable $iNewDelIndex will be true if we created a new index the variable
|
||||||
|
if (isset($iNewDelIndex)) {
|
||||||
$appFields["DEL_INDEX"] = $iNewDelIndex;
|
$appFields["DEL_INDEX"] = $iNewDelIndex;
|
||||||
$appFields["TAS_UID"] = $nextDel["TAS_UID"];
|
$excludeTasUid = array(TASK_FINISH_PROCESS, TASK_FINISH_TASK);
|
||||||
|
//If the last TAS_UID value is not valid we will check for the TAS_UID value
|
||||||
$flag = true;
|
if (in_array($nextDel["TAS_UID"], $excludeTasUid) && is_array($arrayDerivationResult) && isset(current($arrayDerivationResult)["TAS_UID"])) {
|
||||||
|
$appFields["TAS_UID"] = current($arrayDerivationResult)["TAS_UID"];
|
||||||
|
}
|
||||||
|
$flagUpdateCase = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($flag) {
|
if ($flagUpdateCase) {
|
||||||
//Start Block : UPDATES APPLICATION
|
//Start Block : UPDATES APPLICATION
|
||||||
$this->case->updateCase( $currentDelegation["APP_UID"], $appFields );
|
$this->case->updateCase( $currentDelegation["APP_UID"], $appFields );
|
||||||
//End Block : UPDATES APPLICATION
|
//End Block : UPDATES APPLICATION
|
||||||
@@ -2009,4 +1982,47 @@ class Derivation
|
|||||||
\G::log(G::loadTranslation('ID_NOTIFICATION_ERROR') . '|' . $e->getMessage());
|
\G::log(G::loadTranslation('ID_NOTIFICATION_ERROR') . '|' . $e->getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @param array $currentDelegation
|
||||||
|
* @param array $nextDel
|
||||||
|
* @param array $appFields
|
||||||
|
* @param boolean $flagFirstIteration
|
||||||
|
* @param boolean $flagTaskAssignTypeIsMultipleInstance
|
||||||
|
* @param array $aContext
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function finishTask($currentDelegation, $nextDel, $appFields, $flagFirstIteration = true, $flagTaskAssignTypeIsMultipleInstance = false, $aContext = array()) {
|
||||||
|
$iAppThreadIndex = $appFields['DEL_THREAD'];
|
||||||
|
$this->case->closeAppThread($currentDelegation['APP_UID'], $iAppThreadIndex);
|
||||||
|
if (isset($nextDel["TAS_UID_DUMMY"])) {
|
||||||
|
$criteria = new Criteria("workflow");
|
||||||
|
$criteria->addSelectColumn(RoutePeer::TAS_UID);
|
||||||
|
$criteria->addJoin(RoutePeer::TAS_UID, AppDelegationPeer::TAS_UID);
|
||||||
|
$criteria->add(RoutePeer::PRO_UID, $appFields['PRO_UID']);
|
||||||
|
$criteria->add(RoutePeer::ROU_NEXT_TASK, isset($nextDel['ROU_PREVIOUS_TASK']) ? $nextDel['ROU_PREVIOUS_TASK'] : '');
|
||||||
|
$criteria->add(RoutePeer::ROU_TYPE, isset($nextDel['ROU_PREVIOUS_TYPE']) ? $nextDel['ROU_PREVIOUS_TYPE'] : '');
|
||||||
|
$criteria->add(AppDelegationPeer::DEL_THREAD_STATUS, 'OPEN');
|
||||||
|
$rsCriteria = RoutePeer::doSelectRS($criteria);
|
||||||
|
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||||
|
$executeEvent = ($rsCriteria->next()) ? false : true;
|
||||||
|
|
||||||
|
$multiInstanceCompleted = true;
|
||||||
|
if ($flagTaskAssignTypeIsMultipleInstance) {
|
||||||
|
$multiInstanceCompleted = $this->case->multiInstanceIsCompleted(
|
||||||
|
$appFields['APP_UID'],
|
||||||
|
$appFields['TAS_UID'],
|
||||||
|
$appFields['DEL_PREVIOUS']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$taskDummy = TaskPeer::retrieveByPK($nextDel["TAS_UID_DUMMY"]);
|
||||||
|
if (preg_match("/^(?:END-MESSAGE-EVENT|END-EMAIL-EVENT)$/", $taskDummy->getTasType())
|
||||||
|
&& $multiInstanceCompleted && $executeEvent
|
||||||
|
) {
|
||||||
|
$this->executeEvent($nextDel["TAS_UID_DUMMY"], $appFields, $flagFirstIteration, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$aContext['action'] = 'finish-task';
|
||||||
|
//Logger
|
||||||
|
Bootstrap::registerMonolog('CaseDerivation', 200, 'Case Derivation', $aContext, $this->sysSys, 'processmaker.log');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -549,9 +549,17 @@ class ListInbox extends BaseListInbox
|
|||||||
$criteria->addJoin(ListInboxPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN);
|
$criteria->addJoin(ListInboxPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN);
|
||||||
self::loadFilters($criteria, $filters, $additionalColumns);
|
self::loadFilters($criteria, $filters, $additionalColumns);
|
||||||
|
|
||||||
$sort = (!empty($filters['sort'])) ?
|
//We will be defined the sort
|
||||||
ListInboxPeer::TABLE_NAME.'.'.$filters['sort'] :
|
$casesList = new \ProcessMaker\BusinessModel\Cases();
|
||||||
"LIST_INBOX.APP_UPDATE_DATE";
|
$sort = $casesList->getSortColumn(
|
||||||
|
__CLASS__ . 'Peer',
|
||||||
|
BasePeer::TYPE_FIELDNAME,
|
||||||
|
empty($filters['sort']) ? "APP_UPDATE_DATE" : $filters['sort'],
|
||||||
|
"APP_UPDATE_DATE",
|
||||||
|
$this->additionalClassName,
|
||||||
|
$additionalColumns
|
||||||
|
);
|
||||||
|
|
||||||
$dir = isset($filters['dir']) ? $filters['dir'] : "ASC";
|
$dir = isset($filters['dir']) ? $filters['dir'] : "ASC";
|
||||||
$start = isset($filters['start']) ? $filters['start'] : "0";
|
$start = isset($filters['start']) ? $filters['start'] : "0";
|
||||||
$limit = isset($filters['limit']) ? $filters['limit'] : "25";
|
$limit = isset($filters['limit']) ? $filters['limit'] : "25";
|
||||||
@@ -624,7 +632,6 @@ class ListInbox extends BaseListInbox
|
|||||||
* Returns the number of cases of a user
|
* Returns the number of cases of a user
|
||||||
* @param string $usrUid
|
* @param string $usrUid
|
||||||
* @param array $filters
|
* @param array $filters
|
||||||
* @param string $status
|
|
||||||
* @return int
|
* @return int
|
||||||
*/
|
*/
|
||||||
public function getCountList($usrUid, $filters = array())
|
public function getCountList($usrUid, $filters = array())
|
||||||
|
|||||||
@@ -364,9 +364,17 @@ class ListParticipatedLast extends BaseListParticipatedLast
|
|||||||
|
|
||||||
self::loadFilters($criteria, $filters, $additionalColumns);
|
self::loadFilters($criteria, $filters, $additionalColumns);
|
||||||
|
|
||||||
$sort = (!empty($filters['sort'])) ?
|
//We will be defined the sort
|
||||||
ListParticipatedLastPeer::TABLE_NAME.'.'.$filters['sort'] :
|
$casesList = new \ProcessMaker\BusinessModel\Cases();
|
||||||
'DEL_DELEGATE_DATE';
|
$sort = $casesList->getSortColumn(
|
||||||
|
__CLASS__ . 'Peer',
|
||||||
|
BasePeer::TYPE_FIELDNAME,
|
||||||
|
empty($filters['sort']) ? "DEL_DELEGATE_DATE" : $filters['sort'],
|
||||||
|
"DEL_DELEGATE_DATE",
|
||||||
|
$this->additionalClassName,
|
||||||
|
$additionalColumns
|
||||||
|
);
|
||||||
|
|
||||||
$dir = isset($filters['dir']) ? $filters['dir'] : 'ASC';
|
$dir = isset($filters['dir']) ? $filters['dir'] : 'ASC';
|
||||||
$start = isset($filters['start']) ? $filters['start'] : '0';
|
$start = isset($filters['start']) ? $filters['start'] : '0';
|
||||||
$limit = isset($filters['limit']) ? $filters['limit'] : '25';
|
$limit = isset($filters['limit']) ? $filters['limit'] : '25';
|
||||||
|
|||||||
@@ -307,7 +307,17 @@ class ListPaused extends BaseListPaused
|
|||||||
$criteria->add(ListPausedPeer::USR_UID, $usr_uid, Criteria::EQUAL);
|
$criteria->add(ListPausedPeer::USR_UID, $usr_uid, Criteria::EQUAL);
|
||||||
self::loadFilters($criteria, $filters, $additionalColumns);
|
self::loadFilters($criteria, $filters, $additionalColumns);
|
||||||
|
|
||||||
$sort = (!empty($filters['sort'])) ? ListPausedPeer::TABLE_NAME.'.'.$filters['sort'] : "APP_PAUSED_DATE";
|
//We will be defined the sort
|
||||||
|
$casesList = new \ProcessMaker\BusinessModel\Cases();
|
||||||
|
$sort = $casesList->getSortColumn(
|
||||||
|
__CLASS__ . 'Peer',
|
||||||
|
BasePeer::TYPE_FIELDNAME,
|
||||||
|
empty($filters['sort']) ? "APP_PAUSED_DATE" : $filters['sort'],
|
||||||
|
"APP_PAUSED_DATE",
|
||||||
|
$this->additionalClassName,
|
||||||
|
$additionalColumns
|
||||||
|
);
|
||||||
|
|
||||||
$dir = isset($filters['dir']) ? $filters['dir'] : "ASC";
|
$dir = isset($filters['dir']) ? $filters['dir'] : "ASC";
|
||||||
$start = isset($filters['start']) ? $filters['start'] : "0";
|
$start = isset($filters['start']) ? $filters['start'] : "0";
|
||||||
$limit = isset($filters['limit']) ? $filters['limit'] : "25";
|
$limit = isset($filters['limit']) ? $filters['limit'] : "25";
|
||||||
|
|||||||
@@ -301,9 +301,18 @@ class ListUnassigned extends BaseListUnassigned
|
|||||||
|
|
||||||
//Apply some filters
|
//Apply some filters
|
||||||
self::loadFilters($criteria, $filters, $additionalColumns);
|
self::loadFilters($criteria, $filters, $additionalColumns);
|
||||||
$sort = (!empty($filters['sort'])) ?
|
|
||||||
ListUnassignedPeer::TABLE_NAME.'.'.$filters['sort'] :
|
//We will be defined the sort
|
||||||
"LIST_UNASSIGNED.DEL_DELEGATE_DATE";
|
$casesList = new \ProcessMaker\BusinessModel\Cases();
|
||||||
|
$sort = $casesList->getSortColumn(
|
||||||
|
__CLASS__ . 'Peer',
|
||||||
|
BasePeer::TYPE_FIELDNAME,
|
||||||
|
empty($filters['sort']) ? "DEL_DELEGATE_DATE" : $filters['sort'],
|
||||||
|
"DEL_DELEGATE_DATE",
|
||||||
|
$this->additionalClassName,
|
||||||
|
$additionalColumns
|
||||||
|
);
|
||||||
|
|
||||||
$dir = isset($filters['dir']) ? $filters['dir'] : "ASC";
|
$dir = isset($filters['dir']) ? $filters['dir'] : "ASC";
|
||||||
$start = isset($filters['start']) ? $filters['start'] : "0";
|
$start = isset($filters['start']) ? $filters['start'] : "0";
|
||||||
$limit = isset($filters['limit']) ? $filters['limit'] : "25";
|
$limit = isset($filters['limit']) ? $filters['limit'] : "25";
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ try {
|
|||||||
$filters['start'] = isset($_REQUEST["start"]) ? $filter->sanitizeInputValue($_REQUEST["start"], 'nosql') : "0";
|
$filters['start'] = isset($_REQUEST["start"]) ? $filter->sanitizeInputValue($_REQUEST["start"], 'nosql') : "0";
|
||||||
$filters['limit'] = isset($_REQUEST["limit"]) ? $filter->sanitizeInputValue($_REQUEST["limit"], 'nosql') : "25";
|
$filters['limit'] = isset($_REQUEST["limit"]) ? $filter->sanitizeInputValue($_REQUEST["limit"], 'nosql') : "25";
|
||||||
$filters['sort'] = (isset($_REQUEST['sort']))? (($_REQUEST['sort'] == 'APP_STATUS_LABEL')? 'APP_STATUS' : $filter->sanitizeInputValue($_REQUEST["sort"], 'nosql')) : '';
|
$filters['sort'] = (isset($_REQUEST['sort']))? (($_REQUEST['sort'] == 'APP_STATUS_LABEL')? 'APP_STATUS' : $filter->sanitizeInputValue($_REQUEST["sort"], 'nosql')) : '';
|
||||||
|
$filters['sort'] = G::toUpper($filters['sort']);
|
||||||
$filters['dir'] = isset($_REQUEST["dir"]) ? $filter->sanitizeInputValue($_REQUEST["dir"], 'nosql') : "DESC";
|
$filters['dir'] = isset($_REQUEST["dir"]) ? $filter->sanitizeInputValue($_REQUEST["dir"], 'nosql') : "DESC";
|
||||||
$filters['action'] = isset($_REQUEST["action"]) ? $filter->sanitizeInputValue($_REQUEST["action"], 'nosql') : "";
|
$filters['action'] = isset($_REQUEST["action"]) ? $filter->sanitizeInputValue($_REQUEST["action"], 'nosql') : "";
|
||||||
$filters['user'] = isset($_REQUEST["user"]) ? $filter->sanitizeInputValue($_REQUEST["user"], 'nosql') : "";
|
$filters['user'] = isset($_REQUEST["user"]) ? $filter->sanitizeInputValue($_REQUEST["user"], 'nosql') : "";
|
||||||
@@ -102,16 +103,26 @@ try {
|
|||||||
} else {
|
} else {
|
||||||
$filters['limit'] = (int)$filters['limit'];
|
$filters['limit'] = (int)$filters['limit'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$filters['sort'] = G::toUpper($filters['sort']);
|
switch ($filters['sort']) {
|
||||||
$columnsList = $listpeer::getFieldNames(BasePeer::TYPE_FIELDNAME);
|
case 'APP_CURRENT_USER':
|
||||||
|
|
||||||
if (!(in_array($filters['sort'], $columnsList))) {
|
|
||||||
if ($filters['sort'] == 'APP_CURRENT_USER' && ($listName == 'participated' || $listName == 'participated_last')) {
|
|
||||||
$filters['sort'] = 'DEL_CURRENT_USR_LASTNAME';
|
$filters['sort'] = 'DEL_CURRENT_USR_LASTNAME';
|
||||||
} else {
|
break;
|
||||||
$filters['sort'] = '';
|
case 'DEL_TASK_DUE_DATE':
|
||||||
}
|
$filters['sort'] = 'DEL_DUE_DATE';
|
||||||
|
break;
|
||||||
|
case 'APP_UPDATE_DATE':
|
||||||
|
$filters['sort'] = 'DEL_DELEGATE_DATE';
|
||||||
|
break;
|
||||||
|
case 'APP_DEL_PREVIOUS_USER':
|
||||||
|
$filters['sort'] = 'DEL_DUE_DATE';
|
||||||
|
break;
|
||||||
|
case 'DEL_CURRENT_TAS_TITLE':
|
||||||
|
$filters['sort'] = 'APP_TAS_TITLE';
|
||||||
|
break;
|
||||||
|
case 'APP_STATUS_LABEL':
|
||||||
|
$filters['sort'] = 'APP_STATUS';
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$filters['dir'] = G::toUpper($filters['dir']);
|
$filters['dir'] = G::toUpper($filters['dir']);
|
||||||
|
|||||||
@@ -3329,4 +3329,42 @@ class Cases
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function get the table.column by order by the result
|
||||||
|
* We can include the additional table related to the custom cases list
|
||||||
|
*
|
||||||
|
* @param string $listPeer, name of the list class
|
||||||
|
* @param string $field, name of the fieldName
|
||||||
|
* @param string $sort, name of column by sort
|
||||||
|
* @param string $defaultSort, name of column by sort default
|
||||||
|
* @param string $additionalClassName, name of the className of pmTable
|
||||||
|
* @param array $additionalColumns, columns related to the custom cases list with the format TABLE_NAME.COLUMN_NAME
|
||||||
|
* @return string $tableName
|
||||||
|
*/
|
||||||
|
public function getSortColumn($listPeer, $field, $sort, $defaultSort, $additionalClassName = '', $additionalColumns = array())
|
||||||
|
{
|
||||||
|
$columnSort = $defaultSort;
|
||||||
|
$tableName = '';
|
||||||
|
|
||||||
|
//We will check if the column by sort is a LIST table
|
||||||
|
$columnsList = $listPeer::getFieldNames($field);
|
||||||
|
if (in_array($sort, $columnsList)) {
|
||||||
|
$columnSort = $listPeer::TABLE_NAME . '.' . $sort;
|
||||||
|
} else {
|
||||||
|
//We will sort by CUSTOM CASE LIST table
|
||||||
|
if (count($additionalColumns) > 0) {
|
||||||
|
require_once(PATH_DATA_SITE . 'classes' . PATH_SEP . $additionalClassName . '.php');
|
||||||
|
$aTable = explode('.', current($additionalColumns));
|
||||||
|
if (count($aTable) > 0) {
|
||||||
|
$tableName = $aTable[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (in_array($tableName . '.' . $sort, $additionalColumns)) {
|
||||||
|
$columnSort = $tableName . '.' . $sort;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $columnSort;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user