function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Vishal SawVishal Saw 

write a trigger that enforces a custom "Account Number" generation logic, ensuring that all newly created Accounts have a unique account number in the format "ACCT-YYYY-XXXX" where "YYYY" represents the current year and "XXXX" represents a sequential n

Help to create this apex class on trigger Handler and trigger
SubratSubrat (Salesforce Developers) 
Hello Vishal ,

Below is an example of an Apex trigger handler and trigger that enforces the custom "Account Number" generation logic for newly created Accounts:

AccountNumberHandler.cls (Trigger Handler):
public class AccountNumberHandler {
    public static void generateAccountNumber(List<Account> accounts) {
        List<Account> accountsToUpdate = new List<Account>();
        Integer currentYear = System.today().year();
        
        for (Account acc : accounts) {
            String accountNumber = 'ACCT-' + currentYear + '-';
            String sequentialNumber = getSequentialNumber(currentYear);
            accountNumber += sequentialNumber;
            acc.AccountNumber__c = accountNumber;
            accountsToUpdate.add(acc);
        }
        
        if (!accountsToUpdate.isEmpty()) {
            update accountsToUpdate;
        }
    }
    
    private static String getSequentialNumber(Integer currentYear) {
        String sequentialNumber = '';
        
        // Query the maximum sequential number for the current year
        AggregateResult maxNumber = [SELECT MAX(CAST(RIGHT(AccountNumber__c, 4) AS Integer)) maxNumber
                                     FROM Account
                                     WHERE AccountNumber__c LIKE 'ACCT-' + :currentYear + '-%'];
        Integer maxNumberValue = (Integer)maxNumber.get('maxNumber');
        
        if (maxNumberValue != null) {
            // Increment the maximum sequential number by 1
            Integer newNumberValue = maxNumberValue + 1;
            
            // Pad the sequential number with leading zeros
            sequentialNumber = String.valueOf(newNumberValue).padLeft(4, '0');
        } else {
            sequentialNumber = '0001';
        }
        
        return sequentialNumber;
    }
}
AccountNumberTrigger.trigger:
trigger AccountNumberTrigger on Account (before insert) {
    AccountNumberHandler.generateAccountNumber(Trigger.new);
}
This trigger handler and trigger combination will enforce the custom Account Number generation logic for newly created Accounts, ensuring uniqueness and the specified format.

If this helps , please mark this as Best Answer.
Thank you.