//Pass dependent field parameter e.g.: Account.YourDependentField__c
public static Map<Object,List<String>> getDependentPicklistValues(Schema.sObjectField dependentField){
Map<Object,List<String>> dependentPicklistValues = new Map<Object,List<String>>();
//Get dependent field result
Schema.DescribeFieldResult dependentFieldResult = dependentField.getDescribe();
//Get dependent field controlling field
Schema.sObjectField controllerField = dependentFieldResult.getController();
//Check controlling field is not null
if(controllerField == null){
return null;
}
//Get controlling field result
Schema.DescribeFieldResult controllerFieldResult = controllerField.getDescribe();
//Get controlling field picklist values if controlling field is not a checkbox
List<Schema.PicklistEntry> controllerValues = (controllerFieldResult.getType() == Schema.DisplayType.Boolean ? null : controllerFieldResult.getPicklistValues());
//It is used to decode the characters of the validFor fields.
String base64map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
for (Schema.PicklistEntry entry : dependentFieldResult.getPicklistValues()){
if (entry.isActive()){
//The PicklistEntry is serialized and deserialized using the Apex JSON class and it will check to have a 'validFor' field
List<String> base64chars = String.valueOf(((Map<String,Object>)JSON.deserializeUntyped(JSON.serialize(entry))).get('validFor')).split('');
for (Integer i = 0; i < controllerValues.size(); i++){
Object controllerValue = (controllerValues == null ? (Object) (i == 1) : (Object) (controllerValues[i].isActive() ? controllerValues[i].getLabel() : null));
Integer bitIndex = i / 6;
Integer bitShift = 5 - Math.mod(i, 6 );
if(controllerValue == null || (base64map.indexOf(base64chars[bitIndex]) & (1 << bitShift)) == 0){
continue;
}
if (!dependentPicklistValues.containsKey(controllerValue)){
dependentPicklistValues.put(controllerValue, new List<String>());
}
dependentPicklistValues.get(controllerValue).add(entry.getLabel());
}
}
}
return dependentPicklistValues;
}
Using renderStoredEmailTemplate(templateId, whoId, whatId) method of Messaging Class, we can send email to non-contacts using apex. Here is an example to send email to Opportunity owner.
Sample code:
//Send email to opportunity owner
Messaging.SingleEmailMessage mail = Messaging.renderStoredEmailTemplate(emailTemplateId, ownerId, opportunityId);
mail.setTargetObjectId(ownerId);
mail.setSubject(mail.getSubject());
mail.sethtmlBody(mail.gethtmlBody());
mail.saveAsActivity = false;
Messaging.sendEmail(new Messaging.SingleEmailMessage[] {mail});
This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish.AcceptReject