You need to sign in to do that
Don't have an account?
Waqar Hussain SF
I wrote a triiger, when I edit salary fields, then an Errorr occur this: System.NullPointerException: Argument cannot be null.: Trigger.TotalSalTrigger: line 6, column 1. How can I solve?
i have two object employee__c(Name, total_salary__c) and salary__c (Monthly_salary__c, Bonus__c). They have a lookup relation.
This is my Trigger
Trigger TotalSalTrigger on Salary__c (after insert) {
Salary__c sal = trigger.new[0];
List<Salary__c> s = [SELECT Monthly_Salary__c, Bonus__c FROM Salary__c where Employee__c =:sal.Employee__c limit 30000];
decimal amt =0;
for(Salary__c ss:s){
amt += ss.Monthly_Salary__c + ss.Bonus__c;
}
List<Employee__c> emp = [SELECT id FROM Employee__c where id= :sal.Employee__c limit 1];
for(Employee__c e:emp)
{
e.Total_Salary__c = amt;
}
update emp;
}
This is my Trigger
Trigger TotalSalTrigger on Salary__c (after insert) {
Salary__c sal = trigger.new[0];
List<Salary__c> s = [SELECT Monthly_Salary__c, Bonus__c FROM Salary__c where Employee__c =:sal.Employee__c limit 30000];
decimal amt =0;
for(Salary__c ss:s){
amt += ss.Monthly_Salary__c + ss.Bonus__c;
}
List<Employee__c> emp = [SELECT id FROM Employee__c where id= :sal.Employee__c limit 1];
for(Employee__c e:emp)
{
e.Total_Salary__c = amt;
}
update emp;
}
Replace 6th line with below code:
If this solves your problem, kindly mark it as the best answer.
Thnaks,
Vatsal
All Answers
Replace 6th line with below code:
If this solves your problem, kindly mark it as the best answer.
Thnaks,
Vatsal
you should check before using any fieldor list before using it.
Update your code by:-
Trigger TotalSalTrigger on Salary__c (after insert) {
Salary__c sal = trigger.new;
List<Salary__c> s = [SELECT Monthly_Salary__c, Bonus__c FROM Salary__c where Employee__c =:sal.Employee__c limit 30000];
decimal amt =0;
if(s.size()>0)
{
for(Salary__c ss : s){
if((ss.Monthly_Salary__c != null || ss.Monthly_Salary__c != '') && (ss.Bonus__c != null || ss.Bonus__c!= ''))
amt += ss.Monthly_Salary__c + ss.Bonus__c;
}
}
List<Employee__c> emp = [SELECT id FROM Employee__c where id= :sal.Employee__c limit 1];
for(Employee__c e:emp)
{
e.Total_Salary__c = amt;
}
update emp;
}
And don't forget to mark this answer as best, if answer this helps you :-)
--
Regards,
Grazitti Team
Web: www.grazitti.com
Your code still give this error.
and Mr. @Vatsal Kothari code works correctly.
Thanks a lot both of you :-)