Самым простым способом было бы изменить отношение поиска на отношение мастер-деталь и использовать поле Сводная сводка на объекте пользователя (Настройка> Настройка> Пользователи> Поля> Пользовательские пользовательские поля> Новый).
В качестве альтернативы вы можете использовать Trigger на объекте Salary, но делать это только в том случае, если вам абсолютно необходимы дополнительные функции, которые не могут быть выполнены с помощью сводной сводки или другой конфигурации.
Вот пример использования триггера. Я не пробовал его компилировать, поэтому неизбежно будут некоторые ошибки компиляции, но это место для начала.
trigger AddSalary on Salary__c (after update) {
// create a set of all the unique User Ids
Map<Id,List<Salary__c>> SalaryByUserId = new Map<Id,List<Salary__c>>();
for(Salary__c s : Trigger.new)
{
List<Salary__c> SalariesForUser = SalaryByUserId.get(s.User__c);
if(SalariesForUser == null)
{
SalaryByUserId.put(s.User__c,new Salary__c[]{s});
}
else
{
SalariesForUser.add(s);
SalaryByUserId.put(s.User__c,SalariesForUser);
}
}
// query for all the User records for the unique UserIds in the records
// create a map for a lookup / hash table for the User info
Map<Id,User> Users = new Map<Id,User>(
[Select Id, Username, Available_Salary__c From User Where Id IN SalaryByUserId.keyset()]);
// iterate over the list of records being processed in the Trigger and add the Salaries to the Users
for (Id i : SalaryByUserId.keyset())
{
User u = Users.get(i);
Decimal TotalSalary = 0;
for(Salary__c s : SalaryByUserId.get(u.Id))
{
TotalSalary += s.Monthly_Salary__c;
}
Users.get(u.Id).Total_Salary__c = TotalSalary;
}
update Users;
}