From cafb088214983cfa7693a06d89d2db76a309a16c Mon Sep 17 00:00:00 2001 From: Victor Saisa Lopez Date: Fri, 15 Feb 2013 16:26:51 -0400 Subject: [PATCH] BUG 0000 "Improvement in the cases list" SOLVED - Problem with tasks in parallel in inbox - Solved problem with tasks in parallel - Validation was added in solr for cases that are in inbox, but does not make an accurate count of cases, when tasks are parallel * Available from version ProcessMaker-2.0.46 --- workflow/engine/classes/class.AppSolr.php | 47 +++++++------- .../engine/classes/class.applications.php | 14 ++--- .../engine/classes/model/AppCacheView.php | 61 ++++++------------- 3 files changed, 49 insertions(+), 73 deletions(-) diff --git a/workflow/engine/classes/class.AppSolr.php b/workflow/engine/classes/class.AppSolr.php index 7bfb72a64..aa8ddec2e 100644 --- a/workflow/engine/classes/class.AppSolr.php +++ b/workflow/engine/classes/class.AppSolr.php @@ -744,7 +744,7 @@ class AppSolr } // complete the missing data to display it in the grid. - $delIndexes = array (); //store all the delegation indexes + //$delIndexes = array (); //store all the delegation indexes foreach ($solrQueryResult->aaData as $i => $data) { //initialize array $delIndexes = array (); @@ -801,11 +801,14 @@ class AppSolr //Remove duplicated $delIndexes = array_unique($delIndexes); - //Gets the last DEL_INDEX - sort($delIndexes); - $delIndexAux = array_pop($delIndexes); + //Current delegation + if (($action == "sent" || $action == "search" || $action == "simple_search" || $action == "to_revise" || $action == "to_reassign") && ($status != "TO_DO")) { + //Gets the last DEL_INDEX + sort($delIndexes); + $delIndexAux = array_pop($delIndexes); - $delIndexes = array($delIndexAux); + $delIndexes = array($delIndexAux); + } //Set register foreach ($delIndexes as $delIndex) { @@ -1017,33 +1020,33 @@ class AppSolr $c->addJoinMC($arrayCondition, Criteria::LEFT_JOIN); //Current delegation - $c->addAlias("APPDEL", AppDelegationPeer::TABLE_NAME); - $c->addAlias("USRCR", UsersPeer::TABLE_NAME); - - $arrayCondition = array(); - $arrayCondition[] = array(AppDelegationPeer::APP_UID, "APPDEL.APP_UID"); - $arrayCondition[] = array("APPDEL.DEL_LAST_INDEX", 1); - $c->addJoinMC($arrayCondition, Criteria::LEFT_JOIN); - - $arrayCondition = array(); - $arrayCondition[] = array("APPDEL.USR_UID", "USRCR.USR_UID"); - $c->addJoinMC($arrayCondition, Criteria::LEFT_JOIN); - $c->addAsColumn("USRCR_USR_UID", "USRCR.USR_UID"); $c->addAsColumn("USRCR_USR_FIRSTNAME", "USRCR.USR_FIRSTNAME"); $c->addAsColumn("USRCR_USR_LASTNAME", "USRCR.USR_LASTNAME"); $c->addAsColumn("USRCR_USR_USERNAME", "USRCR.USR_USERNAME"); - $c->addAlias("CONTASKCR", ContentPeer::TABLE_NAME); + $c->addAlias("APPDELCR", AppDelegationPeer::TABLE_NAME); + $c->addAlias("USRCR", UsersPeer::TABLE_NAME); $arrayCondition = array(); - $arrayCondition[] = array("APPDEL.TAS_UID", "CONTASKCR.CON_ID"); - $arrayCondition[] = array("CONTASKCR.CON_CATEGORY", DBAdapter::getStringDelimiter() . "TAS_TITLE" . DBAdapter::getStringDelimiter()); - $arrayCondition[] = array("CONTASKCR.CON_LANG", DBAdapter::getStringDelimiter() . "en" . DBAdapter::getStringDelimiter()); + $arrayCondition[] = array(AppDelegationPeer::APP_UID, "APPDELCR.APP_UID"); + $arrayCondition[] = array("APPDELCR.DEL_LAST_INDEX", 1); + $c->addJoinMC($arrayCondition, Criteria::LEFT_JOIN); + + $arrayCondition = array(); + $arrayCondition[] = array("APPDELCR.USR_UID", "USRCR.USR_UID"); $c->addJoinMC($arrayCondition, Criteria::LEFT_JOIN); $c->addAsColumn("CONTASKCR_APP_TAS_TITLE", "CONTASKCR.CON_VALUE"); + $c->addAlias("CONTASKCR", ContentPeer::TABLE_NAME); + + $arrayCondition = array(); + $arrayCondition[] = array("APPDELCR.TAS_UID", "CONTASKCR.CON_ID"); + $arrayCondition[] = array("CONTASKCR.CON_CATEGORY", DBAdapter::getStringDelimiter() . "TAS_TITLE" . DBAdapter::getStringDelimiter()); + $arrayCondition[] = array("CONTASKCR.CON_LANG", DBAdapter::getStringDelimiter() . "en" . DBAdapter::getStringDelimiter()); + $c->addJoinMC($arrayCondition, Criteria::LEFT_JOIN); + $c->add(AppDelegationPeer::APP_UID, $arrayAppUid, Criteria::IN); //$c->add (AppDelegationPeer::DEL_INDEX, $delIndex); @@ -1131,7 +1134,7 @@ class AppSolr $appDataRows = array (); while (is_array( $row )) { //Current delegation - if ($action == "sent" || $action == "search" || $action == "simple_search" || $action == "to_revise" || $action == "to_reassign") { + if (($action == "sent" || $action == "search" || $action == "simple_search" || $action == "to_revise" || $action == "to_reassign") && ($appStatus != "TO_DO")) { //Current task $row["APP_TAS_TITLE"] = $row["CONTASKCR_APP_TAS_TITLE"]; diff --git a/workflow/engine/classes/class.applications.php b/workflow/engine/classes/class.applications.php index fe0a080bc..54e0cf1d1 100644 --- a/workflow/engine/classes/class.applications.php +++ b/workflow/engine/classes/class.applications.php @@ -155,6 +155,12 @@ class Applications $Criteria->addAsColumn( 'USR_USERNAME', 'CU.USR_USERNAME' ); //Current delegation + $Criteria->addAsColumn("APPCVCR_APP_TAS_TITLE", "APPCVCR.APP_TAS_TITLE"); + $Criteria->addAsColumn("USRCR_USR_UID", "USRCR.USR_UID"); + $Criteria->addAsColumn("USRCR_USR_FIRSTNAME", "USRCR.USR_FIRSTNAME"); + $Criteria->addAsColumn("USRCR_USR_LASTNAME", "USRCR.USR_LASTNAME"); + $Criteria->addAsColumn("USRCR_USR_USERNAME", "USRCR.USR_USERNAME"); + $Criteria->addAlias("APPCVCR", AppCacheViewPeer::TABLE_NAME); $Criteria->addAlias("USRCR", UsersPeer::TABLE_NAME); @@ -167,12 +173,6 @@ class Applications $arrayCondition[] = array("APPCVCR.USR_UID", "USRCR.USR_UID"); $Criteria->addJoinMC($arrayCondition, Criteria::LEFT_JOIN); - $Criteria->addAsColumn("APPCVCR_APP_TAS_TITLE", "APPCVCR.APP_TAS_TITLE"); - $Criteria->addAsColumn("USRCR_USR_UID", "USRCR.USR_UID"); - $Criteria->addAsColumn("USRCR_USR_FIRSTNAME", "USRCR.USR_FIRSTNAME"); - $Criteria->addAsColumn("USRCR_USR_LASTNAME", "USRCR.USR_LASTNAME"); - $Criteria->addAsColumn("USRCR_USR_USERNAME", "USRCR.USR_USERNAME"); - //Previous user if (($action == "todo" || $action == "selfservice" || $action == "unassigned" || $action == "paused" || $action == "to_revise" || $action == "sent") || ($status == "TO_DO" || $status == "DRAFT" || $status == "PAUSED" || $status == "CANCELLED" || $status == "COMPLETED")) { $Criteria->addAlias( 'PU', 'USERS' ); @@ -440,7 +440,7 @@ class Applications }*/ //Current delegation - if ($action == "sent" || $action == "search" || $action == "simple_search" || $action == "to_revise" || $action == "to_reassign") { + if (($action == "sent" || $action == "search" || $action == "simple_search" || $action == "to_revise" || $action == "to_reassign") && ($status != "TO_DO")) { //Current task $aRow["APP_TAS_TITLE"] = $aRow["APPCVCR_APP_TAS_TITLE"]; diff --git a/workflow/engine/classes/model/AppCacheView.php b/workflow/engine/classes/model/AppCacheView.php index d8b232d81..2c269d02d 100755 --- a/workflow/engine/classes/model/AppCacheView.php +++ b/workflow/engine/classes/model/AppCacheView.php @@ -904,9 +904,9 @@ class AppCacheView extends BaseAppCacheView } } } else { - //foreach ($defaultFields as $field) { - $oCriteria->addSelectColumn('*'); - //} + foreach (AppCacheViewPeer::getFieldNames(BasePeer::TYPE_FIELDNAME) as $field) { + $oCriteria->addSelectColumn("APP_CACHE_VIEW.$field"); + } } //add the default and hidden DEL_INIT_DATE @@ -1146,47 +1146,20 @@ class AppCacheView extends BaseAppCacheView public function getDefaultFields() { - return array( - 'APP_UID', - 'DEL_INDEX', - 'APP_NUMBER', - 'APP_STATUS', - 'USR_UID', - 'PREVIOUS_USR_UID', - 'TAS_UID', - 'PRO_UID', - 'DEL_DELEGATE_DATE', - 'DEL_INIT_DATE', - 'DEL_TASK_DUE_DATE', - 'DEL_FINISH_DATE', - 'DEL_THREAD_STATUS', - 'APP_THREAD_STATUS', - 'APP_TITLE', - 'APP_PRO_TITLE', - 'APP_TAS_TITLE', - 'APP_CURRENT_USER', - 'APP_DEL_PREVIOUS_USER', - 'DEL_PRIORITY', - 'DEL_DURATION', - 'DEL_QUEUE_DURATION', - 'DEL_DELAY_DURATION', - 'DEL_STARTED', - 'DEL_FINISHED', - 'DEL_DELAYED', - 'APP_CREATE_DATE', - 'APP_FINISH_DATE', - 'APP_UPDATE_DATE', - 'APP_OVERDUE_PERCENTAGE', - 'APP_DELAY_UID', - 'APP_THREAD_INDEX', - 'APP_DEL_INDEX', - 'APP_TYPE', - 'APP_DELEGATION_USER', - 'APP_ENABLE_ACTION_USER', - 'APP_ENABLE_ACTION_DATE', - 'APP_DISABLE_ACTION_USER', - 'APP_DISABLE_ACTION_DATE', - 'APP_AUTOMATIC_DISABLED_DATE' + return array_merge( + AppCacheViewPeer::getFieldNames(BasePeer::TYPE_FIELDNAME), + array( + "APP_DELAY_UID", + "APP_THREAD_INDEX", + "APP_DEL_INDEX", + "APP_TYPE", + "APP_DELEGATION_USER", + "APP_ENABLE_ACTION_USER", + "APP_ENABLE_ACTION_DATE", + "APP_DISABLE_ACTION_USER", + "APP_DISABLE_ACTION_DATE", + "APP_AUTOMATIC_DISABLED_DATE" + ) ); }