You need to sign in to do that
Don't have an account?
Manjusrinu
Updating Lead Owner In Round Robin Fashion
Hi,
I need to update lead owner based on course Interest and Batch(Number). I have wrote a trigger and working in lead insertion in ui .But when i insert leads from data loader ,Owners are not getting update as off my criteria. Can anyone help me where i am going wrong.
trigger LeadTrigger on Lead (before insert, before update) {
String triggerEvent = '';
if (Trigger.isBefore && Trigger.isInsert)
triggerEvent = 'Before-Insert';
LeadTriggerHelper obj = NEW LeadTriggerHelper ();
obj.AssigneeUser(triggerEvent,trigger.new);
}
//https://medium.com/@Naga801/salesforce-trigger-for-lead-round-robin-assignment-bcda7cc4193b :Reference
public class LeadTriggerHelper {
public void AssigneeUser(string event,List<Lead> newLeads) {
LeadRoundRobinAssignment__c lrr = LeadRoundRobinAssignment__c.getOrgDefaults();
Integer userIndex;
Id queueId;
Integer groupMemberSize;
Boolean LeadQueueVal = false ;
Boolean IIMLPMQueueVal = false;
if(event == 'Before-Insert')
{
List<Group> queues = [
SELECT Id,
(Select Id, UserOrGroupId FROM GroupMembers Order By ID ASC)
FROM Group
WHERE Type = 'Queue'
AND DeveloperName = 'Lead_Queue'
];
// Lead-Queue : Dinesh,Rajesh,Harsha
List<Group> IIML_PMQueues = [
SELECT Id,
(Select Id, UserOrGroupId FROM GroupMembers Order By ID ASC)
FROM Group
WHERE Type = 'Queue'
AND DeveloperName = 'IIML_PM'
];
system.debug('HIIIIIIIIIIIIIIIIIIII'+queues.get(0).Id);
// IIML_PM : Rajesh,jashwanth
system.debug('P1111'+queues);
system.debug('P222222'+IIML_PMQueues);
if (queues.size() > 0 && queues.get(0).GroupMembers.size() > 0) {
for (Lead eachLead : newLeads) {
if(eachLead.Course_Interest__c == 'IIML-SF' && (eachLead.Bucket__c == '1' || eachLead.Bucket__c == '2') ){
queueId = queues.get(0).Id;
groupMemberSize = queues.get(0).GroupMembers.size();
userIndex = (lrr.get('User_Index__c') == null || Integer.valueOf(lrr.get('User_Index__c')) < -1)
? -1 : Integer.valueOf(lrr.get('User_Index__c'));
if (eachLead.OwnerId != queueId) {
Integer leadUserIndex = (userIndex + 1) >= groupMemberSize ? 0 : userIndex + 1;
eachLead.OwnerId = queues.get(0).GroupMembers.get(leadUserIndex).UserOrGroupId;
userIndex = leadUserIndex;
LeadQueueVal = true;
}
}
if(eachLead.Course_Interest__c == 'IIML-FA' && (eachLead.Bucket__c == '1'||eachLead.Bucket__c == '2') ) {
eachLead.OwnerId = '0052w0000018kFz'; // Rondey User
}
}
// Update the custom settings user index with the last lead assigned user
if(LeadQueueVal == true){
lrr.User_Index__c = userIndex;
update lrr;
}
}
if (IIML_PMQueues.size() > 0 && IIML_PMQueues.get(0).GroupMembers.size() > 0) {
for (Lead eachLead1 : newLeads) {
if(eachLead1.Course_Interest__c =='IIML-PM' && (eachLead1.Bucket__c =='1' || eachLead1.Bucket__c =='2')){
system.debug('Executing');
queueId = IIML_PMQueues.get(0).Id;
system.debug('TTT'+queueId);
groupMemberSize = IIML_PMQueues.get(0).GroupMembers.size();
userIndex = (lrr.get('User_Index__c') == null || Integer.valueOf(lrr.get('User_Index__c')) < -1)
? -1 : Integer.valueOf(lrr.get('User_Index__c'));
if (eachLead1.OwnerId != queueId) {
Integer leadUserIndex = (userIndex + 1) >= groupMemberSize ? 0 : userIndex + 1;
eachLead1.OwnerId = IIML_PMQueues.get(0).GroupMembers.get(leadUserIndex).UserOrGroupId;
userIndex = leadUserIndex;
IIMLPMQueueVal = true;
}
}
}
// Update the custom settings user index with the last lead assigned user
if(IIMLPMQueueVal == true) {
lrr.User_Index__c = userIndex;
update lrr;
}
}
}
}
}
I need to update lead owner based on course Interest and Batch(Number). I have wrote a trigger and working in lead insertion in ui .But when i insert leads from data loader ,Owners are not getting update as off my criteria. Can anyone help me where i am going wrong.
trigger LeadTrigger on Lead (before insert, before update) {
String triggerEvent = '';
if (Trigger.isBefore && Trigger.isInsert)
triggerEvent = 'Before-Insert';
LeadTriggerHelper obj = NEW LeadTriggerHelper ();
obj.AssigneeUser(triggerEvent,trigger.new);
}
//https://medium.com/@Naga801/salesforce-trigger-for-lead-round-robin-assignment-bcda7cc4193b :Reference
public class LeadTriggerHelper {
public void AssigneeUser(string event,List<Lead> newLeads) {
LeadRoundRobinAssignment__c lrr = LeadRoundRobinAssignment__c.getOrgDefaults();
Integer userIndex;
Id queueId;
Integer groupMemberSize;
Boolean LeadQueueVal = false ;
Boolean IIMLPMQueueVal = false;
if(event == 'Before-Insert')
{
List<Group> queues = [
SELECT Id,
(Select Id, UserOrGroupId FROM GroupMembers Order By ID ASC)
FROM Group
WHERE Type = 'Queue'
AND DeveloperName = 'Lead_Queue'
];
// Lead-Queue : Dinesh,Rajesh,Harsha
List<Group> IIML_PMQueues = [
SELECT Id,
(Select Id, UserOrGroupId FROM GroupMembers Order By ID ASC)
FROM Group
WHERE Type = 'Queue'
AND DeveloperName = 'IIML_PM'
];
system.debug('HIIIIIIIIIIIIIIIIIIII'+queues.get(0).Id);
// IIML_PM : Rajesh,jashwanth
system.debug('P1111'+queues);
system.debug('P222222'+IIML_PMQueues);
if (queues.size() > 0 && queues.get(0).GroupMembers.size() > 0) {
for (Lead eachLead : newLeads) {
if(eachLead.Course_Interest__c == 'IIML-SF' && (eachLead.Bucket__c == '1' || eachLead.Bucket__c == '2') ){
queueId = queues.get(0).Id;
groupMemberSize = queues.get(0).GroupMembers.size();
userIndex = (lrr.get('User_Index__c') == null || Integer.valueOf(lrr.get('User_Index__c')) < -1)
? -1 : Integer.valueOf(lrr.get('User_Index__c'));
if (eachLead.OwnerId != queueId) {
Integer leadUserIndex = (userIndex + 1) >= groupMemberSize ? 0 : userIndex + 1;
eachLead.OwnerId = queues.get(0).GroupMembers.get(leadUserIndex).UserOrGroupId;
userIndex = leadUserIndex;
LeadQueueVal = true;
}
}
if(eachLead.Course_Interest__c == 'IIML-FA' && (eachLead.Bucket__c == '1'||eachLead.Bucket__c == '2') ) {
eachLead.OwnerId = '0052w0000018kFz'; // Rondey User
}
}
// Update the custom settings user index with the last lead assigned user
if(LeadQueueVal == true){
lrr.User_Index__c = userIndex;
update lrr;
}
}
if (IIML_PMQueues.size() > 0 && IIML_PMQueues.get(0).GroupMembers.size() > 0) {
for (Lead eachLead1 : newLeads) {
if(eachLead1.Course_Interest__c =='IIML-PM' && (eachLead1.Bucket__c =='1' || eachLead1.Bucket__c =='2')){
system.debug('Executing');
queueId = IIML_PMQueues.get(0).Id;
system.debug('TTT'+queueId);
groupMemberSize = IIML_PMQueues.get(0).GroupMembers.size();
userIndex = (lrr.get('User_Index__c') == null || Integer.valueOf(lrr.get('User_Index__c')) < -1)
? -1 : Integer.valueOf(lrr.get('User_Index__c'));
if (eachLead1.OwnerId != queueId) {
Integer leadUserIndex = (userIndex + 1) >= groupMemberSize ? 0 : userIndex + 1;
eachLead1.OwnerId = IIML_PMQueues.get(0).GroupMembers.get(leadUserIndex).UserOrGroupId;
userIndex = leadUserIndex;
IIMLPMQueueVal = true;
}
}
}
// Update the custom settings user index with the last lead assigned user
if(IIMLPMQueueVal == true) {
lrr.User_Index__c = userIndex;
update lrr;
}
}
}
}
}