You need to sign in to do that
Don't have an account?
I Have trigger working for single record,how to maniupalate this for bulk
trigger AutoSetoff on Receipt__c (after update,after insert) {
Set <ID> oid=new Set <ID>();
Set <ID> rid=new Set <ID>();
List<Receipt__c> rec= new List<Receipt__c>();
For (Receipt__c R: trigger.new)
{
rid.add(R.id);
system.debug('Add receipt id'+rid);
oid.add(R.Opportunity__c);
system.debug('Add opp id'+oid);
}
rec=[select id,Opportunity__c,Realization_Status__c from Receipt__c where id IN:rid];
system.debug('Receipt'+rec);
List<Opportunity> O = [Select Name,TotalReceipt_Realized__c,Total_Payment_Received__c from Opportunity
Where id IN: oid];
system.debug('OPP'+ O);
List<AggregateResult> groupedResults = [SELECT Sum(Amount__c)aver FROM Receipt__c
Where Opportunity__c IN: oid
];
system.debug('Groupedresults query'+groupedResults );
Double TotalReceipt = 0.0 ;
for(Receipt__c rct:rec)
{
if(rct.Realization_Status__c =='Realized')
{
if(groupedResults.size() > 0)
{
system.debug('Size of grouped results'+groupedResults.size());
String str = '' + groupedResults[0].get('aver') ;
system.debug('Checking groupedResults'+str);
TotalReceipt = Double.ValueOf(str) ;
System.debug('TotalReceipt ::::: ' + TotalReceipt) ;
}
for(Opportunity Op:O)
{
Double dif = TotalReceipt - Op.Total_Payment_Received__c;
system.debug('Difference'+dif);
List <Payment_Schedule__c> SList = new list <Payment_Schedule__c>([Select Name,TotalInstallment_Amount__c,Display_Order__c, Amount_Due__c, Payment_Received__c from Payment_Schedule__c
where Opportunity__c =: Op.id AND Payment_Schedule__c.Amount_Due__c > 0
Order By Display_Order__c]);
For (Payment_Schedule__c S: SList)
{
system.debug('###Inside For');
If (S.Amount_Due__c > dif)
{
system.debug('###Inside If 1'+ S.Payment_Received__c);
S.Payment_Received__c = S.Payment_Received__c + dif;
system.debug('PaymentReceived'+S.Payment_Received__c );
dif = 0;
}
If (S.Amount_Due__c < dif)
{
S.Payment_Received__c = S.Payment_Received__c + S.Amount_Due__c;
system.debug('PaymentReceived ########'+S.Payment_Received__c );
dif = dif - S.Amount_Due__c;
system.debug('Differenceone'+dif);
}
}
Update SList;
}
}
}
}