Tuesday, February 2, 2016

Create a validation rule for escalated cases.

Create a validation rule formula that does not allow a user to mark a case as escalated unless the priority is set to 'High', the case was not Closed when Created, and the case isn’t closed.
  • The validation rule should be on the Case object.
  • The validation rule should be named 'Mark_as_Escalated'.
  • The validation rule should fire if someone tries to set a case as escalated and it is closed, closed when created, or does not have a priority of High.
  • The validation rule should display the error message 'You can only set a case as escalated if it is high priority and not closed' under the Escalated field when triggered.
  • Add the 'Escalated' field to the Case page layout.

1) Create one validation rule on case object and make sure it is active while taking challenge.
2) Enter the below formula.


IF( IsEscalated , OR(IsClosedOnCreate , 

ISPICKVAL(Status, "Closed"), 

ISPICKVAL(Priority, "Low"), 

ISPICKVAL(Priority, "Medium")), 
null)

3) Enter the error message as 'You can only set a case as escalated if it is high priority and not closed' under escalated field.

Wednesday, January 27, 2016

Trailhead Bulk Apex Triggers

Create an Apex trigger for Opportunity that adds a task to any opportunity set to 'Closed Won'

To complete this challenge, you need to add a trigger for Opportunity. The trigger will add a task to any opportunity inserted or updated with the stage of 'Closed Won'. The task's subject must be 'Follow Up Test Task'.
  • The Apex trigger must be called 'ClosedOpportunityTrigger'
  • With 'ClosedOpportunityTrigger' active, if an opportunity is inserted or updated with a stage of 'Closed Won', it will have a task created with the subject 'Follow Up Test Task'.
  • To associate the task with the opportunity, fill the 'WhatId' field with the opportunity ID.
  • This challenge specifically tests 200 records in one operation.


1)Write a trigger on opportunity object and make sure it is active while taking challenge.


trigger ClosedOpportunityTrigger on Opportunity (after insert, after update) {

    List<Task> taskList = new List<Task>();
    
    for(Opportunity opp : Trigger.new) {
        
        //Only create Follow Up Task only once when Opp StageName is to 'Closed Won' on Create
        if(Trigger.isInsert) {
            if(Opp.StageName == 'Closed Won') {
                taskList.add(new Task(Subject = 'Follow Up Test Task', WhatId = opp.Id));
            }
        }
        
        //Only create Follow Up Task only once when Opp StageName changed to 'Closed Won' on Update
        if(Trigger.isUpdate) {
            if(Opp.StageName == 'Closed Won' 
            && Opp.StageName != Trigger.oldMap.get(opp.Id).StageName) {
                taskList.add(new Task(Subject = 'Follow Up Test Task', WhatId = opp.Id));
            }
        }       
    }

    if(taskList.size()>0) {        
        insert taskList;        
    }    
}

Trailhead Apex Triggers

Create an Apex trigger for Account that matches Shipping Address Postal Code with Billing Address Postal Code based on a custom field.

For this challenge, you need to create a trigger that, before insert or update, checks for a checkbox, and if the checkbox field is true, sets the Shipping Postal Code (whose API name is ShippingPostalCode) to be the same as the Billing Postal Code (BillingPostalCode).
  • The Apex trigger must be called 'AccountAddressTrigger'.
  • The Account object will need a new custom checkbox that should have the Field Label 'Match Billing Address' and Field Name of 'Match_Billing_Address'. The resulting API Name should be 'Match_Billing_Address__c'.
  • With 'AccountAddressTrigger' active, if an Account has a Billing Postal Code and 'Match_Billing_Address__c' is true, the record should have the Shipping Postal Code set to match on insert or update.

1)Create a new custom field in account object of type checkbox and make default as checked,field label should be Match Billing Address.
2)Write a trigger on account object and make sure it should be active while taking the challenge.


trigger AccountAddressTrigger on Account (before insert,  before update) {

       for(Account a:Trigger.New){
            If (a.Match_Billing_Address__c && a.BillingPostalCode!= Null) {
                a.BillingPostalCode= a.ShippingPostalCode ;  
        } 
    }
}