Step 1: Create Apex Trigger
Go to Setup -> Developer Console -> New -> File -> New -> Apex Trigger
trigger AutoLeadConvertedHandlerTrigger on Lead (after insert, after Update) {
Set<Id> setOfLeadIds = new Set<Id>();
if(Trigger.IsAfter && Trigger.isInsert){
for(Lead lead : trigger.new){
//You can check any condition in the Lead Source
if(lead.LeadSource == 'Web'){
setOfLeadIds.add(lead.Id);
}
}
if(setOfLeadIds.size()> 0){
AutoLeadConvertedHandler.autoConvertLeads(setOfLeadIds);
}
}
}
Step 2: Create Apex Class
Go to Setup -> Developer Console -> New -> File -> New -> Apex Class
public class AutoLeadConvertedHandler {
public static void autoConvertLeads(Set<Id> setOfLeadIds){
LeadStatus convertLeadStatus = [Select Id,MasterLabel from LeadStatus where isConverted = true limit 1];
List<Database.LeadConvert> massLeadConvert=new List<Database.LeadConvert>();
for(Id currentLead : setOfLeadIds){
Database.LeadConvert LeadConvert=new Database.LeadConvert();
LeadConvert.setLeadId(currentLead);
LeadConvert.setConvertedStatus(convertLeadStatus.MasterLabel);
LeadConvert.setDoNotCreateOpportunity(false); // This line is used if you want to create opportunity on auto lead conversion then set False, Otherwise True.
massLeadConvert.add(LeadConvert);
}
if(!massLeadConvert.isEmpty()){
List<Database.LeadConvertResult> lcr=Database.convertLead(massLeadConvert);
}
}
}
Step 3: Create Apex Test Class
Go to Setup -> Developer Console -> New -> File -> New -> Apex Class
@isTest
public class AutoLeadConvertedHandlerTest {
static testMethod void convertLeadPositiveTest() {
test.startTest();
Lead lead = new Lead();
lead.FirstName = 'Trigger1';
lead.LastName = 'Test1';
lead.Company = 'Trigger Test1';
lead.LeadSource = 'Web';
insert lead;
System.AssertEquals (1, [Select Id,FirstName from Lead where Status='Closed - Converted' and id=:lead.id].size());
test.stopTest();
}
static testMethod void convertLeadNegetiveTest() {
test.startTest();
Lead lead = new Lead();
lead.FirstName = 'Trigger2';
lead.LastName = 'Test2';
lead.Company = 'Trigger Test2';
lead.LeadSource = 'Phone Inquiry';
insert lead;
System.AssertEquals (0, [Select Id,FirstName from Lead where Status='Closed - Converted' and id=:lead.id].size());
test.stopTest();
}
}
Originally published at http://amansfdc.wordpress.com on December 21, 2022.