function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
sai harishsai harish 

Need help getting the Id in my Trigger

Hi. I need some help with my Trigger. I am trying to create a trigger on the child and get an AggregateResult from child and trying to update a parent field. (AcctSeedERP__Purchase_Order_Line__c), this is my child object which has a look up to AcctSeed__Project_Task__c. It works when I hard code the Id values. Please help me pass the parent Id values dynamically. Thanks in advance.

trigger Update_Commited_Subcontractor on AcctSeedERP__Purchase_Order_Line__c (after insert, after update) {
    if((trigger.isinsert && trigger.isafter) || (trigger.isupdate && trigger.isafter)){
    AcctSeedERP__Purchase_Order_Line__c pol = trigger.new[0];
      
AggregateResult[] ar = [Select sum(AcctSeedERP__Total__c)sum from AcctSeedERP__Purchase_Order_Line__c where AcctSeedERP__Project_Task__r.Id = :pol.Id ];  
        system.debug('AggregatedResult========>>>>>'+ ar);
        Decimal sum = (Decimal) ar[0].get('sum');
        system.debug('Sum======>>>>>>'+sum);
        AcctSeed__Project_Task__c pb = new AcctSeed__Project_Task__c();
        pb.Id = pb.Id;
        pb.Commited_Sub__c = (Decimal) ar[0].get('sum');
        update pb;
    
    }
}
Raj VakatiRaj Vakati
Please follow these best practices. here is code for you 

https://developer.salesforce.com/page/Trigger_Frameworks_and_Apex_Trigger_Best_Practices


https://developer.salesforce.com/page/Apex_Code_Best_Practices​
 
trigger Update_Commited_Subcontractor on AcctSeedERP__Purchase_Order_Line__c (after insert, after update) {
   
   if((trigger.isinsert && trigger.isafter) || (trigger.isupdate && trigger.isafter)){
		
  
  
  AcctSeedERP__Purchase_Order_Line__c pol = trigger.new[0];
      
AggregateResult[] ar = [Select sum(AcctSeedERP__Total__c)sum from AcctSeedERP__Purchase_Order_Line__c where AcctSeedERP__Project_Task__r.Id = :pol.Id  group by AcctSeedERP__Total__c];


  
        system.debug('AggregatedResult========>>>>>'+ ar);
        Decimal sum = (Decimal) ar[0].get('sum');
        system.debug('Sum======>>>>>>'+sum);
		
        AcctSeed__Project_Task__c pb = pol.AcctSeedERP__Project_Task__r();
        pb.Commited_Sub__c = (Decimal) ar[0].get('sum');
        update pb;
    
    }
}




 
sai harishsai harish
Hi Raj,
Thank you for the reply. I tried to use your code. I am getting the following errors. 
Grouped field should not be aggregated: AcctSeedERP__Total__c
I tried to group it by the project task. I used something like this.
[Select AcctSeedERP__Project_Task__c, sum(AcctSeedERP__Total__c)sum from AcctSeedERP__Purchase_Order_Line__c where AcctSeedERP__Project_Task__r.Id = :pol.Id  group by AcctSeedERP__Project_Task__c]
Now I am getting an error saying 
Method does not exist or incorrect signature: void AcctSeedERP__Project_Task__r() from the type AcctSeedERP__Purchase_Order_Line__c.

Any further help is appreciated. Thanks in advance.