From c8d22404af9da9f94aab7927ad413ab14bce000e Mon Sep 17 00:00:00 2001
From: satish <satish.dvnk@vtiger.com>
Date: Sat, 17 Sep 2016 15:05:06 +0530
Subject: [PATCH] Fixes #39 - Regression: Workflow Create Entity Task failure
 after migration

---
 .../modules/Settings/Workflows/CreateEntity.tpl  | 10 +++++++++-
 modules/Settings/Workflows/actions/TaskAjax.php  | 16 ++++++++++------
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/layouts/vlayout/modules/Settings/Workflows/CreateEntity.tpl b/layouts/vlayout/modules/Settings/Workflows/CreateEntity.tpl
index aa69784be..e98457911 100644
--- a/layouts/vlayout/modules/Settings/Workflows/CreateEntity.tpl
+++ b/layouts/vlayout/modules/Settings/Workflows/CreateEntity.tpl
@@ -26,6 +26,10 @@
 						<option value="none"></option>
 						{foreach from=$RELATED_MODULE_MODEL->getFields() item=FIELD_MODEL}
 							{assign var=FIELD_INFO value=$FIELD_MODEL->getFieldInfo()}
+							{if $FIELD_MODEL->getFieldDataType() == 'owner'}
+								{$SPECIAL_OPTION = [vtranslate('LBL_SPECIAL_OPTIONS') => ['assigned_user_id' => {vtranslate('LBL_PARENT_OWNER')}]]}
+								{$FIELD_INFO['picklistvalues'] = array_merge($FIELD_INFO['picklistvalues'], $SPECIAL_OPTION)}
+							{/if}
 							<option value="{$FIELD_MODEL->get('name')}" {if $FIELD_MAP['fieldname'] eq $FIELD_MODEL->get('name')} {if $FIELD_MODEL->isMandatory()}{assign var=MANDATORY_FIELD value=true} {else} {assign var=MANDATORY_FIELD value=false} {/if}{assign var=FIELD_TYPE value=$FIELD_MODEL->getFieldDataType()} selected=""{/if} data-fieldtype="{$FIELD_MODEL->getFieldType()}" data-field-name="{$FIELD_MODEL->get('name')}" data-fieldinfo='{ZEND_JSON::encode($FIELD_INFO)}' >
 								{vtranslate($FIELD_MODEL->get('label'), $SOURCE_MODULE)}{if $SELECTED_FIELD_MODEL->isMandatory()}<span class="redColor">*</span>{/if}
 							</option>	
@@ -67,8 +71,12 @@
 							<option value="none"></option>
 							{foreach from=$RELATED_MODULE_MODEL->getFields() item=FIELD_MODEL}
 								{assign var=FIELD_INFO value=$FIELD_MODEL->getFieldInfo()}
+								{if $FIELD_MODEL->getFieldDataType() == 'owner'}
+									{$SPECIAL_OPTION = [vtranslate('LBL_SPECIAL_OPTIONS') => ['assigned_user_id' => {vtranslate('LBL_PARENT_OWNER')}]]}
+									{$FIELD_INFO['picklistvalues'] = array_merge($FIELD_INFO['picklistvalues'], $SPECIAL_OPTION)}
+								{/if}
 								<option value="{$FIELD_MODEL->get('name')}" data-fieldtype="{$FIELD_MODEL->getFieldType()}" {if $FIELD_MODEL->get('name') eq $MANDATORY_FIELD_MODEL->get('name')} {assign var=FIELD_TYPE value=$FIELD_MODEL->getFieldDataType()} selected=""{/if} data-field-name="{$FIELD_MODEL->get('name')}" data-fieldinfo='{ZEND_JSON::encode($FIELD_INFO)}' >
-								{vtranslate($FIELD_MODEL->get('label'), $SOURCE_MODULE)}<span class="redColor">*</span>
+									{vtranslate($FIELD_MODEL->get('label'), $SOURCE_MODULE)}<span class="redColor">*</span>
 								</option>	
 							{/foreach}
 						</select>
diff --git a/modules/Settings/Workflows/actions/TaskAjax.php b/modules/Settings/Workflows/actions/TaskAjax.php
index 2a07e0ab3..90a9357c3 100644
--- a/modules/Settings/Workflows/actions/TaskAjax.php
+++ b/modules/Settings/Workflows/actions/TaskAjax.php
@@ -105,14 +105,18 @@ class Settings_Workflows_TaskAjax_Action extends Settings_Vtiger_IndexAjax_View
 				$fieldMapping = Zend_Json::decode($taskObject->field_value_mapping);
 				foreach ($fieldMapping as $key => $mappingInfo) {
 					if (array_key_exists($mappingInfo['fieldname'], $ownerFieldModels)) {
-						$userRecordModel = Users_Record_Model::getInstanceById($mappingInfo['value'], 'Users');
-						$ownerName = $userRecordModel->get('user_name');
+						if ($mappingInfo['value'] == 'assigned_user_id') {
+							$mappingInfo['valuetype'] = 'fieldname';
+						} else {
+							$userRecordModel = Users_Record_Model::getInstanceById($mappingInfo['value'], 'Users');
+							$ownerName = $userRecordModel->get('user_name');
 
-						if (!$ownerName) {
-							$groupRecordModel = Settings_Groups_Record_Model::getInstance($mappingInfo['value']);
-							$ownerName = $groupRecordModel->getName();
+							if (!$ownerName) {
+								$groupRecordModel = Settings_Groups_Record_Model::getInstance($mappingInfo['value']);
+								$ownerName = $groupRecordModel->getName();
+							}
+							$fieldMapping[$key]['value'] = $ownerName;
 						}
-						$fieldMapping[$key]['value'] = $ownerName;
 					}
 				}
 				$taskObject->field_value_mapping = Zend_Json::encode($fieldMapping);
-- 
GitLab