SugarCRM. Конвертация Lead. Тонкости.
Передо мной была пооставлена задача конвертации стандартных полей Lead в custom поля Account.
Во-первых, эти самые custom поля нужно добавить в форму конвертации Lead. Для этого копируем файл ~/modules/Leads/metadata/convertdefs.php в ~/custom/modules/Leads/metadata/convertdefs.php (для сооблюдения Upgrade Safe), в который добавляем нужные поля. Находим массив $viewdefs['Accounts']['ConvertLead'], в нём находим 'panels', и в 'LNK_NEW_ACCOUNT' вписываем наши элементы:
// В этот массив добавляем поля
$viewdefs['Accounts']['ConvertLead'] = array(
SOME_DATA_DEFINED_HERE,
// Находим этот блок
'panels' =>array (
'LNK_NEW_ACCOUNT' => array (
array (
'name',
'phone_office',
),
// А вот и нужные мне поля, о которых идёт речь
array(
'first_name_c',
'last_name_c',
),
// Дальше по умолчанию
array (
'website',
),
array(
'description'
),
)
),
);Во-вторых, нужно импортировать в них нужные значения. SugarCRM по умолчанию позволяет импорт значений только в одноимённые поля, т.е. поле 'first_name' из Lead может быть импортировано только в поле 'first_name' другого модуля. Но, в моём случае, в модуле Accounts нет по умолчанию своих полей 'first_name' и 'last_name', т.е. мне пришлось их создавать через Студию, в результате чего я получил поля 'first_name_c' и 'last_name_c', которые мы и вписали в шаблон. Для импорта правильных значений в эти поля копируем ~/modules/Leads/views/view.convertlead.php в ~/custom/modules/Leads/views/view.convertlead.php, в методе display находим цикл, в котором перебираются поля, и вписываем нужный код:
// находим этот цикл
foreach($focus->field_defs as $field => $def)
{
if(isset($vdef[$ev->view]['copyData']) && $vdef[$ev->view]['copyData'])
{
if ($module == "Accounts" && $field == 'name')
{
$focus->name = $this->focus->account_name;
}
// Здесь я присвоил моим полям нужные значения
else if ($module == "Accounts" && $field == 'first_name_c')
{
$focus->first_name_c = $this->focus->first_name;
}
else if ($module == "Accounts" && $field == 'last_name_c')
{
$focus->last_name_c = $this->focus->last_name;
}
// Дальше по умолчанию
else if ($module == "Opportunities" && $field == 'amount')
{
$focus->amount = unformat_number($this->focus->opportunity_amount);
}
// Там такого достаточно много, не буду сюда весь код писать :)
}
}Вот, сообственно, и всё. В итоге мы получили отображение нужных полей с нужными значениями в форме конвертации Lead.
Комментарии
Отправить комментарий