diff --git a/modules/com_vtiger_workflow/WorkFlowScheduler.php b/modules/com_vtiger_workflow/WorkFlowScheduler.php index e24a18c355ba4965fa03fc51e5b51645562f9511..1c4e5184dcfcbe40d609f104f7be67a3fbde6c5e 100755 --- a/modules/com_vtiger_workflow/WorkFlowScheduler.php +++ b/modules/com_vtiger_workflow/WorkFlowScheduler.php @@ -215,8 +215,22 @@ class WorkFlowScheduler { if($operation == 'has changed from') continue; $value = $condition['value']; + + $fieldname = $condition['fieldname']; + preg_match('/(\w+) : \((\w+)\) (\w+)/', $condition['fieldname'], $matches); + if (count($matches) != 0) { + list($full, $referenceField, $referenceModule, $fieldname) = $matches; + } + if($referenceField) { + $moduleName = $referenceModule; + } else { + $moduleName = $queryGenerator->getModule(); + } + $moduleModel = Vtiger_Module_Model::getInstance($moduleName); + $fieldModel = $moduleModel->getField($fieldname); + if(in_array($operation, $this->_specialDateTimeOperator())) { - $value = $this->_parseValueForDate($condition); + $value = $this->_parseValueForDate($condition, $fieldModel); } $columnCondition = $condition['joincondition']; $groupId = $condition['groupid']; @@ -294,7 +308,7 @@ class WorkFlowScheduler { * @param <Array> $condition * @return <String> */ - function _parseValueForDate($condition) { + function _parseValueForDate($condition,$fieldModel = false) { $value = $condition['value']; $operation = $condition['operation']; @@ -303,6 +317,11 @@ class WorkFlowScheduler { $admin = Users::getActiveAdminUser(); $adminTimeZone = $admin->time_zone; @date_default_timezone_set($adminTimeZone); + $fieldType = array(); + if($fieldModel){ + $dataType = $fieldModel->get('typeofdata'); + $fieldType = explode('~',$dataType); + } switch($operation) { case 'less than days ago' : //between current date and (currentdate - givenValue)