Eligibility date should default to 3 weeks prior to start date if start date is provided. Prevent edits to the eligibility date if a user specifies an eligibility date. Here's what I got for defaulting the eligibility date. I'm stuck on preventing edits if a user specifies the eligibility date.
trigger validateEligibility on Group_Name__c (before update, before insert) {
Group_Name__c[] grps = Trigger.new;
for(Group_Name__c g : grps){
if(g.From__c != null){
if(g.Eligibility_Load_Date__c == null){
g.Eligibility_Load_Date__c = g.From__c - 21;
}
}
if(Trigger.isUpdate){
Group_Name__c gOld = Trigger.oldMap.get(g.Id);
if(gOld.From__c != g.From__c && gOld.From__c == null){
if(g.Eligibility_Load_Date__c == null){
g.Eligibility_Load_Date__c = g.From__c - 21;
}
}
if(g.Eligibility_Load_Date__c != gOld.Eligibility_Load_Date__c){
if(gOld.From__c - 21 == gOld.Eligibility_Load_Date__c){
g.addError('Eligibility date value cannot be overriden');
}
}
}
}
}
Workflow Rule
andValidation Rule
. Don't useApex
unless you need it.