Populating a field when choosing a relate field _ suite crm

这一生的挚爱 提交于 2021-02-08 08:06:02

问题


i'm using suite crm 7.7.5

when i create an opportunity and i choose an account from a relate field, i want a field (country) to be auto populated with the value of the country of the account chosen.

for this, i tried to add the code

    $dictionary['Opportunity']['fields']['country_c']['populate_list']= array('id','name','country_c');
$dictionary['Opportunity']['fields']['country_c']['field_list'] = array('account_id_c','account_name','country_c');

in the file \custom\Extension\modules\Opportunities\Ext\Vardefs\sugarfield_country_c.php

knowing that country_c is the name of the column country in the table accounts and the second country_c is the id of the field country in the layout opportunity

but that doesn't work, could someone help me to figure out the reason?

PS : i've tried to follow this tutorial https://developer.sugarcrm.com/2011/08/31/howto-using-a-relate-field-to-populate-a-custom-field/


回答1:


You should go to custom/modules/{YOUR MODULE}/metadata/editviewdefs.php and edit editviewdefs.php file.
First you need to find array in which your relate field(account_name) is defined. It will look similar to this, maybe with some more parameters.

array (
    'name' => 'account_name',
),

Now you need to map data from relate field(country_c) to new field(lets say populated_country_c). After editing your array will look something like this.

array (
    'name' => 'account_name',
    'displayParams' => array (
        'field_to_name_array' => array(
            'id'=>'account_id_c',
            'name'=>'account_name',
            'country_c' => 'populated_country_c',
            ),
        ),
    ),

Now populated_country_c is the new field in which the data about country will be populated when you choose account in the relate field. So we also need to create that new field. You can do it through studio or manually just by adding new array. Finally your file will look like this

array (
        'name' => 'account_name',
        'displayParams' => array (
            'field_to_name_array' => array(
                'id'=>'account_id_c',
                'name'=>'account_name',
                'country_c' => 'populated_country_c',
                ),
            ),
        ),
array (
        'name' => 'populated_country_c',
        'label'=> 'LBL_POPULATED_COUNTRY'
        ),

Now when choosing new account from relate field, populated_country_c will be populated with country_c field from selected account.




回答2:


Here is the extension on @Bozic solution.

If someone is trying to autopopulate related fields based on selection then here is the solution. (Those who are facing "No match for field: Account Name")

Scenario: I have Account Owner (relate to User module) field in Accounts module. And in Cases module I am fetching Account owner fields based on Account selection.

In /custom/modules/Cases/metadata/editviewdefs.php

 0 => array(
             'name'=>'account_name',
             'displayParams' => array (
             'field_to_name_array' => array(
             'id'=>'account_name',
             'assigned_user_name' => 'account_owner_case_c', 
             'assigned_user_id' => 'user_id2_c',
         ),
     ),
  ),

Note:

  • assigned_user_name is field id of Account owner from Accounts module
  • assigned_user_id is id field of Account owner
  • account_owner_case_cis field of Case Account Owner from Case module
  • account_name is selection field from case module (on selection of this field account owner will get populate)



回答3:


Use field billing_account_country rather than country_c, and also use account_id with account_name. The name and the id have to coincide to the same table, I believe.



来源:https://stackoverflow.com/questions/41063014/populating-a-field-when-choosing-a-relate-field-suite-crm

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!