From 72b7b1d0d008ca4e1de4110f9a4d355f991df0bb Mon Sep 17 00:00:00 2001 From: Luis Fernando Saisa Lopez Date: Wed, 2 Jul 2014 10:24:55 -0400 Subject: [PATCH 1/3] BUG 15243 "Email Notification from Subprocess" SOLVED - Email Notification from Subprocess. - Problema resuelto, se hace una validacion que determina si en el subProceso en la ultima tarea termina y que es parte de un proceso principal, entonces se enviara la notificacion. --- .../engine/methods/cases/cases_Derivate.php | 53 ++++++++++++++++++- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/workflow/engine/methods/cases/cases_Derivate.php b/workflow/engine/methods/cases/cases_Derivate.php index 55ede1ff2..c83ee7605 100755 --- a/workflow/engine/methods/cases/cases_Derivate.php +++ b/workflow/engine/methods/cases/cases_Derivate.php @@ -116,16 +116,65 @@ try { // Send notifications - Start $oUser = new Users(); + $aUser = $oUser->load( $_SESSION['USER_LOGGED'] ); $sFromName = $aUser['USR_FIRSTNAME'] . ' ' . $aUser['USR_LASTNAME'] . ($aUser['USR_EMAIL'] != '' ? ' <' . $aUser['USR_EMAIL'] . '>' : ''); + + $arrayUser = array(); + + $criteria = new Criteria("workflow"); + + $criteria->addSelectColumn(SubApplicationPeer::APP_PARENT); + $criteria->addSelectColumn(SubApplicationPeer::DEL_INDEX_PARENT); + + $criteria->addJoin(SubApplicationPeer::APP_UID, ApplicationPeer::APP_UID, Criteria::LEFT_JOIN); + + $criteria->add(SubApplicationPeer::APP_UID, $_SESSION["APPLICATION"], Criteria::EQUAL); + $criteria->add(ApplicationPeer::APP_STATUS, "COMPLETED", Criteria::EQUAL); + + $rsCriteria = SubApplicationPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + if ($rsCriteria->next()) { + $row = $rsCriteria->getRow(); + + $record = $row; + + //Get Users + $criteria2 = new Criteria("workflow"); + + $criteria2->addSelectColumn(AppDelegationPeer::USR_UID); + + $criteria2->add(AppDelegationPeer::APP_UID, $record["APP_PARENT"], Criteria::EQUAL); + $criteria2->add(AppDelegationPeer::DEL_PREVIOUS, $record["DEL_INDEX_PARENT"], Criteria::EQUAL); + + $rsCriteria2 = AppDelegationPeer::doSelectRS($criteria2); + $rsCriteria2->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + while ($rsCriteria2->next()) { + $row2 = $rsCriteria2->getRow(); + + $record2 = $row2; + + $arrayUser[] = array( + "TAS_ASSIGN_TYPE" => "", + "USR_UID" => $record2["USR_UID"] + ); + } + } + try { - $oCase->sendNotifications( $_SESSION['TASK'], $_POST['form']['TASKS'], $appFields['APP_DATA'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $sFromName ); + $oCase->sendNotifications( $_SESSION['TASK'], + (count($arrayUser) == 0)? $_POST["form"]["TASKS"] : $arrayUser, + $appFields['APP_DATA'], + $_SESSION['APPLICATION'], + $_SESSION['INDEX'], + $sFromName ); } catch (Exception $e) { G::SendTemporalMessage( G::loadTranslation( 'ID_NOTIFICATION_ERROR' ) . ' - ' . $e->getMessage(), 'warning', 'string', null, '100%' ); } // Send notifications - End - // Events - Start $oEvent = new Event(); From 1877369b917258b241ca7f98aaeb38ffa3154ed8 Mon Sep 17 00:00:00 2001 From: Luis Fernando Saisa Lopez Date: Thu, 3 Jul 2014 12:42:37 -0400 Subject: [PATCH 2/3] BUG 15243 "Email Notification from Subprocess" SOLVED - Email Notification from Subprocess. - Problema resuelto, cuando se tiene un subproceso que tiene notificacion en la ultima tarea y este debe retornar al proceso principal, entonces la notificacion se enviara al usuario del proceso principal. --- workflow/engine/classes/class.derivation.php | 25 +++++++-- .../engine/methods/cases/cases_Derivate.php | 53 +------------------ 2 files changed, 24 insertions(+), 54 deletions(-) diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index b75e70560..6169bf251 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -638,7 +638,7 @@ class Derivation //Close case $appFields["APP_STATUS"] = "COMPLETED"; $appFields["APP_FINISH_DATE"] = "now"; - $this->verifyIsCaseChild( $currentDelegation["APP_UID"] ); + $this->verifyIsCaseChild($currentDelegation["APP_UID"], $currentDelegation["DEL_INDEX"]); $sw = 1; } @@ -793,7 +793,7 @@ class Derivation * @param string $sApplicationUID * @return void */ - function verifyIsCaseChild ($sApplicationUID) + function verifyIsCaseChild ($sApplicationUID, $delIndex = 0) { //Obtain the related row in the table SUB_APPLICATION $oCriteria = new Criteria( 'workflow' ); @@ -814,7 +814,7 @@ class Derivation $oDataset->next(); $aSP = $oDataset->getRow(); if ($aSP['SP_SYNCHRONOUS'] == 1) { - $appFields = $oCase->loadCase( $sApplicationUID ); + $appFields = $oCase->loadCase($sApplicationUID, $delIndex); //Copy case variables to parent case $aFields = unserialize( $aSP['SP_VARIABLES_IN'] ); $aNewFields = array (); @@ -853,6 +853,25 @@ class Derivation $currentDelegation2 = array ('APP_UID' => $aSA['APP_PARENT'],'DEL_INDEX' => $aSA['DEL_INDEX_PARENT'],'APP_STATUS' => 'TO_DO','TAS_UID' => $aParentCase['TAS_UID'],'ROU_TYPE' => $aDeriveTasks[1]['ROU_TYPE'] ); $this->derivate( $currentDelegation2, $nextDelegations2 ); + + // Send notifications - Start + $oUser = new Users(); + + $aUser = $oUser->load($appFields["APP_DATA"]["USER_LOGGED"]); + $sFromName = $aUser["USR_FIRSTNAME"] . " " . $aUser["USR_LASTNAME"] . ($aUser["USR_EMAIL"] != "" ? " <" . $aUser["USR_EMAIL"] . ">" : ""); + + try { + $oCase->sendNotifications($appFields["APP_DATA"]["TASK"], + $nextDelegations2, + $appFields["APP_DATA"], + $sApplicationUID, + $delIndex, + $sFromName); + + } catch (Exception $e) { + G::SendTemporalMessage(G::loadTranslation("ID_NOTIFICATION_ERROR") . " - " . $e->getMessage(), "warning", "string", null, "100%"); + } + // Send notifications - End } } } diff --git a/workflow/engine/methods/cases/cases_Derivate.php b/workflow/engine/methods/cases/cases_Derivate.php index c83ee7605..55ede1ff2 100755 --- a/workflow/engine/methods/cases/cases_Derivate.php +++ b/workflow/engine/methods/cases/cases_Derivate.php @@ -116,65 +116,16 @@ try { // Send notifications - Start $oUser = new Users(); - $aUser = $oUser->load( $_SESSION['USER_LOGGED'] ); $sFromName = $aUser['USR_FIRSTNAME'] . ' ' . $aUser['USR_LASTNAME'] . ($aUser['USR_EMAIL'] != '' ? ' <' . $aUser['USR_EMAIL'] . '>' : ''); - - $arrayUser = array(); - - $criteria = new Criteria("workflow"); - - $criteria->addSelectColumn(SubApplicationPeer::APP_PARENT); - $criteria->addSelectColumn(SubApplicationPeer::DEL_INDEX_PARENT); - - $criteria->addJoin(SubApplicationPeer::APP_UID, ApplicationPeer::APP_UID, Criteria::LEFT_JOIN); - - $criteria->add(SubApplicationPeer::APP_UID, $_SESSION["APPLICATION"], Criteria::EQUAL); - $criteria->add(ApplicationPeer::APP_STATUS, "COMPLETED", Criteria::EQUAL); - - $rsCriteria = SubApplicationPeer::doSelectRS($criteria); - $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); - - if ($rsCriteria->next()) { - $row = $rsCriteria->getRow(); - - $record = $row; - - //Get Users - $criteria2 = new Criteria("workflow"); - - $criteria2->addSelectColumn(AppDelegationPeer::USR_UID); - - $criteria2->add(AppDelegationPeer::APP_UID, $record["APP_PARENT"], Criteria::EQUAL); - $criteria2->add(AppDelegationPeer::DEL_PREVIOUS, $record["DEL_INDEX_PARENT"], Criteria::EQUAL); - - $rsCriteria2 = AppDelegationPeer::doSelectRS($criteria2); - $rsCriteria2->setFetchmode(ResultSet::FETCHMODE_ASSOC); - - while ($rsCriteria2->next()) { - $row2 = $rsCriteria2->getRow(); - - $record2 = $row2; - - $arrayUser[] = array( - "TAS_ASSIGN_TYPE" => "", - "USR_UID" => $record2["USR_UID"] - ); - } - } - try { - $oCase->sendNotifications( $_SESSION['TASK'], - (count($arrayUser) == 0)? $_POST["form"]["TASKS"] : $arrayUser, - $appFields['APP_DATA'], - $_SESSION['APPLICATION'], - $_SESSION['INDEX'], - $sFromName ); + $oCase->sendNotifications( $_SESSION['TASK'], $_POST['form']['TASKS'], $appFields['APP_DATA'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $sFromName ); } catch (Exception $e) { G::SendTemporalMessage( G::loadTranslation( 'ID_NOTIFICATION_ERROR' ) . ' - ' . $e->getMessage(), 'warning', 'string', null, '100%' ); } // Send notifications - End + // Events - Start $oEvent = new Event(); From fdbc289b3c4048b50b79541dba2b7ef0d0226e7e Mon Sep 17 00:00:00 2001 From: Luis Fernando Saisa Lopez Date: Thu, 3 Jul 2014 15:42:28 -0400 Subject: [PATCH 3/3] BUG 15243 "Email Notification from Subprocess" SOLVED - Email Notification from Subprocess. - Problema resuelto, cuando se tiene un subproceso que tiene notificacion en la ultima tarea y este debe retornar al proceso principal, entonces la notificacion se enviara al usuario del proceso principal. --- workflow/engine/classes/class.case.php | 2 +- workflow/engine/classes/class.derivation.php | 30 +++++++++++--------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index c3c2cb5ba..8285ba92d 100755 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -3970,7 +3970,7 @@ class Cases if (SubApplicationPeer::doCount($oCriteria2) > 0) { G::LoadClass('derivation'); $oDerivation = new Derivation(); - $oDerivation->verifyIsCaseChild($sApplicationUID); + $oDerivation->verifyIsCaseChild($sApplicationUID, $iIndex); } //update searchindex diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index 6169bf251..0d4919dfe 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -854,24 +854,26 @@ class Derivation ); $this->derivate( $currentDelegation2, $nextDelegations2 ); - // Send notifications - Start - $oUser = new Users(); + if($delIndex > 0 ) { + // Send notifications - Start + $oUser = new Users(); + $aUser = $oUser->load($appFields["CURRENT_USER_UID"]); - $aUser = $oUser->load($appFields["APP_DATA"]["USER_LOGGED"]); - $sFromName = $aUser["USR_FIRSTNAME"] . " " . $aUser["USR_LASTNAME"] . ($aUser["USR_EMAIL"] != "" ? " <" . $aUser["USR_EMAIL"] . ">" : ""); + $sFromName = $aUser["USR_FIRSTNAME"] . " " . $aUser["USR_LASTNAME"] . ($aUser["USR_EMAIL"] != "" ? " <" . $aUser["USR_EMAIL"] . ">" : ""); - try { - $oCase->sendNotifications($appFields["APP_DATA"]["TASK"], - $nextDelegations2, - $appFields["APP_DATA"], - $sApplicationUID, - $delIndex, - $sFromName); + try { + $oCase->sendNotifications($appFields["TAS_UID"], + $nextDelegations2, + $appFields["APP_DATA"], + $sApplicationUID, + $delIndex, + $sFromName); - } catch (Exception $e) { - G::SendTemporalMessage(G::loadTranslation("ID_NOTIFICATION_ERROR") . " - " . $e->getMessage(), "warning", "string", null, "100%"); + } catch (Exception $e) { + G::SendTemporalMessage(G::loadTranslation("ID_NOTIFICATION_ERROR") . " - " . $e->getMessage(), "warning", "string", null, "100%"); + } + // Send notifications - End } - // Send notifications - End } } }