• john alieee
  • NEWBIE
  • 0 Points
  • Member since 2023

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 0
    Questions
  • 1
    Replies
hello,

my requirement is when lead lastname is ? questionmark the display lastname is lead 001, lead002 like this so i write trigger but it will work only single record crerated then it will run perfect when i insert record in bulk like data loader then all record lastname had showed lead001, lead001 like that so i want lead001, lead002.

this is my code:
helper:
trigger LeadTriggerLastName on Lead (before insert, before update) {
    if(trigger.isbefore && trigger.isinsert ){
        system.debug('isinsert fired AutoNumberLead');
        AutoNumberLeadhandler.countNo(trigger.new, null);
    }
    else if(trigger.isbefore && trigger.isupdate){
        system.debug('isupdate fired AutoNumberLead');
        AutoNumberLeadhandler.countNoUpdate(trigger.new, trigger.oldmap);
    }
}


handler:
public class AutoNumberLeadhandler {
public static void countNo(List<Lead> newLead, Map<Id,lead> OldLead){
        for (Lead l : newLead) {
            if (l.LastName == '?' && OldLead == null) {
                system.debug('isinsert fired ');
                // Generate the auto-numbered last name
                String autoLastName = 'Lead' + String.valueOf([SELECT count() FROM Lead WHERE LastName LIKE '%Lead%']).leftPad(3, '0');
                l.LastName = autoLastName;
            }
        }
    }
    
    public static void countNoUpdate(List<Lead> newLead, Map<Id,lead> OldLead){
        for(lead le : newLead){
            if(le.lastname == '?' && OldLead.get(le.Id).lastname != le.lastName){
                system.debug('isupdate fired ' );
                String autoLastName = 'Lead' + String.valueOf([SELECT count() FROM Lead WHERE LastName LIKE '%Lead%']).leftPad(3, '0');
                le.LastName = autoLastName;
            }
        }
    }
}