diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Variable.php b/workflow/engine/src/ProcessMaker/BusinessModel/Variable.php index b04bb1749..d8bd70c03 100755 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Variable.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Variable.php @@ -231,6 +231,9 @@ class Variable $this->throwExceptionIfNotExistsVariable($variableUid); + //Verify variable + $this->throwExceptionIfVariableIsAssociatedAditionalTable($variableUid); + $variable = $this->getVariable($processUid, $variableUid); \G::LoadClass('pmDynaform'); $pmDynaform = new \pmDynaform(); @@ -608,6 +611,40 @@ class Variable } } + /** + * Check if the variable is associated to Report Table + * + * @param string $variableUid Unique id of variable + * + * @return void Throw exception + */ + public function throwExceptionIfVariableIsAssociatedAditionalTable($variableUid) + { + try { + $criteria = new \Criteria('workflow'); + + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_UID); + + $criteria->addJoin(\ProcessVariablesPeer::PRJ_UID, \AdditionalTablesPeer::PRO_UID, \Criteria::INNER_JOIN); + + $arrayCondition = []; + $arrayCondition[] = array(\AdditionalTablesPeer::ADD_TAB_UID, \FieldsPeer::ADD_TAB_UID, \Criteria::EQUAL); + $arrayCondition[] = array(\ProcessVariablesPeer::VAR_NAME, \FieldsPeer::FLD_NAME, \Criteria::EQUAL); + $criteria->addJoinMC($arrayCondition, \Criteria::INNER_JOIN); + + $criteria->add(\ProcessVariablesPeer::VAR_UID, $variableUid, \Criteria::EQUAL); + + $rsCriteria = \ProcessVariablesPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + if ($rsCriteria->next()) { + throw new \Exception(\G::LoadTranslation('ID_VARIABLE_ASSOCIATED_WITH_REPORT_TABLE', array($variableUid))); + } + } catch (\Exception $e) { + throw $e; + } + } + /** * Verify if the variable is being used in a Dynaform * @@ -953,4 +990,4 @@ class Variable } } -} \ No newline at end of file +}