Hi there,Try this: Trigger TrgOnMeeting on Meeting__c (before insert, before Update){
if(Trigger.isInsert || Trigger.isUpdate) {
Set<Id> regIds = new Set<Id>();
for(Account meeting : Trigger.new) {
if(meeting.RegistrationLayer__c != null)
regIds.add(meeting.RegistrationLayer__c);
}
Map<Id, RegistrationLayer__c> mapReg = new Map<Id, RegistrationLayer__c>([SELECT Id, CertRegFrom__c, PointsYR1__c, PointsYR2__c, PointsYR3__c, PointsYR4__c, PointsYR5__c, PointsYR6__c
FROM RegistrationLayer__c WHERE Id IN: regIds]);
for(Account meeting : Trigger.new) {
if(meeting.datemeeting__c.Year() == (mapReg.get(meeting.RegistrationLayer__c).CertRegFrom__c.Year()) && meeting.freepoints__c) {
mapReg.get(meeting.RegistrationLayer__c).PointsYR1__c += meeting.Points__c;
} else if(meeting.datemeeting__c.Year() == (mapReg.get(meeting.RegistrationLayer__c).CertRegFrom__c.Year() + 1) && meeting.freepoints__c) {
mapReg.get(meeting.RegistrationLayer__c).PointsYR2__c += meeting.Points__c;
} else if(meeting.datemeeting__c.Year() == (mapReg.get(meeting.RegistrationLayer__c).CertRegFrom__c.Year() + 2) && meeting.freepoints__c) {
mapReg.get(meeting.RegistrationLayer__c).PointsYR3__c += meeting.Points__c;
} else if(meeting.datemeeting__c.Year() == (mapReg.get(meeting.RegistrationLayer__c).CertRegFrom__c.Year() + 3) && meeting.freepoints__c) {
mapReg.get(meeting.RegistrationLayer__c).PointsYR4__c += meeting.Points__c;
} else if(meeting.datemeeting__c.Year() == (mapReg.get(meeting.RegistrationLayer__c).CertRegFrom__c.Year() + 4) && meeting.freepoints__c) {
mapReg.get(meeting.RegistrationLayer__c).PointsYR5__c += meeting.Points__c;
} else if(meeting.datemeeting__c.Year() == (mapReg.get(meeting.RegistrationLayer__c).CertRegFrom__c.Year() + 5) && meeting.freepoints__c) {
mapReg.get(meeting.RegistrationLayer__c).PointsYR6__c += meeting.Points__c;
}
}
update mapReg.values();
}
}
3 件の回答