• Javagal
  • NEWBIE
  • 20 Points
  • Member since 2015

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 4
    Questions
  • 6
    Replies
Hi I have a Web service class which is having an issue row lock contention . could you please suggest how to reduce  Concurrency of these requests.  Many thanks ..

 error Message : Too many DML rows: 10001

Global class BulkDelayProcessUtility {
 
  webservice static boolean BulkDelayExistingUtility(){
    boolean processCompleted=true;
    datetime dateNow=datetime.now();
    datetime cutoff=dateNow.addMinutes(-15);
    List<Id> delayReasonIds=new List<Id>();
    for(Delay_Reason__c dr: [select Id from Delay_Reason__c where CreatedDate < :cutoff]){
      delayReasonIds.add(dr.Id);
    }
    if(!delayReasonIds.isEmpty()){
      try{
        database.delete(delayReasonIds);
      }
      catch(Exception ex){
        System.debug('Failed to delete existing Delay Reasons! ' +ex);
        processCompleted=false;
      }
    }
    return processCompleted;
  }

}

 
Hi i am trying to write a trigger .

i have 1 Custom object and a Custom settings object.

i have a picklist field on custom object ( Description)  and a text field. on custom  setting i have code, description2 , column. if some one selected a picklist value in the desciption  i have to look in custom setting and populate the Code value in a text filed. i tried something. but not got enough solution any help will be appriciated.  i am sorry if i wrote my code in a not a good way.

trigger UpdateCode on Order_Note__c (before insert, before update) {

ServiceMax_Codes__c settings = ServiceMax_Codes__c.getInstance();
String  CT_CODE = settings.CT_CODE__c;
String  CT_DESCRIPTION = settings.CT_DESCRIPTION__c;
Set<String> NextActionSet = new Set<String>();
Map<String,Id> mapnextActionwithCode = new Map<String,Id>();

//List<ServiceMax_Codes__c> SMC= ServiceMax_Codes__c.getall().values();
String NAL = [SELECT CT_CODE__c FROM ServiceMax_Codes__c WHERE CT_DESCRIPTION__c IN ];
//Next_Action_New__cis a picklist value on custon object.
for (Order_Note__c obj: trigger.new){
        if(!String.isBlank(obj.Next_Action_New__c)){
          NextActionSet.add(obj.Next_Action_New__c);
          obj.Next_Action_Code__c = NAL ;
        }

 
I need help with test class for the below trigger. some one please help me. Many thanks guys.
 
trigger UpdateCR on Case  (before update) {

        Map<String, Schema.RecordTypeInfo > caseRecordTypes = Case.sObjectType.getDescribe().getRecordTypeInfosByName();

        Id recordTypeId = caseRecordTypes.get('US Cases Locked RT').getRecordTypeId();

         for ( Case c : Trigger.new) {

           if (c.CF_Tracking__c != null ){
        
              if( c.Status == 'Closed') {

                               c.RecordTypeId = recordTypeId;

        }

    }

}


}

 
Hi , I am Getting an error to the old code since we made some changes to the other classes. below is the test Stack Trace. Any help will be really appriciated.
-------------------------------------------------------------------
Error Message System.LimitException: Too many SOQL queries: 101
Class.leadTriggerHandler.assignOwner:line 86, column 1
Class.leadTriggerHandler.onBeforeInsert:line 36, column 1
Trigger.LeadsTrigger: line 4, column 1
public without sharing class leadTriggerHandler {
    
        
     public static void onBeforeInsert(list<Lead> newLeads){
     list<Lead> leadsToProcess = new list<Lead>(); 
        for(Lead l : newLeads){
            
            /* Check if owner is already populated and not currentUser and zipcode is not null, Do_Not_Reassign__c is false
               only then drive the lead through custom assignment rule. */   
            if((l.OwnerId == null || l.OwnerId == userinfo.getUserId()) && l.Zip_Postal_Code__c != null 
                && (l.Products__c != null || l.Facility_Type__c != null)
                && (l.Do_Not_Reassign__c == null || l.Do_Not_Reassign__c == false)){
                    
                leadsToProcess.add(l);
            }else if(l.Zip_Postal_Code__c == null || (l.Products__c == null && l.Facility_Type__c == null) ){
                //no ZipCode match (or) no product and no facility type -  assign the defaultleadOwner.
                l.OwnerId = SystemIdUtility.KCIUSUserId;
            }
        }
        if(!leadsToProcess.isEmpty()){
            assignOwner(leadsToProcess);
        }
     
     }
     
    
     public static void onBeforeUpdate(list<Lead> newLeads, map<Id,Lead> oldValuesMap){
     list<Lead> leadsToProcess = new list<Lead>(); 
        for(Lead l : newLeads){ 
            if(l.Zip_Postal_Code__c != null && 
               (l.Zip_Postal_Code__c!=oldValuesMap.get(l.Id).Zip_Postal_Code__c ||
                l.Facility_Type__c!=oldValuesMap.get(l.Id).Facility_Type__c)){
                    
                leadsToProcess.add(l);
            }
        }
        if(!leadsToProcess.isEmpty()){
            assignOwner(leadsToProcess);
        }
     
     }
     
    
     private static void assignOwner(list<Lead> leadList){
     
     try{
             
             set<String> leadZipCodeSet =  new set<String>();
             list<Lead> clonedLeadsToInsert =  new list<Lead>();
             
                 for(lead l : leadList){
                    if(string.valueOf(l.Zip_Postal_Code__c).length() > 5){
                        leadZipCodeSet.add(string.valueOf(l.Zip_Postal_Code__c).left(5));
                    }else{
                        leadZipCodeSet.add(string.valueOf(l.Zip_Postal_Code__c));
                    }
                 }
                 list<ZIP_Code__c> zipCodeList = [SELECT Name, Is_Active__c, KCI_Territory__c, 
                                                        KCI_Territory__r.Territory_Code__c, KCI_Territory__r.OwnerId 
                                                        FROM ZIP_Code__c 
                                                        where Name In :  leadZipCodeSet and Is_Active__c = 'Y'
                                                        ];
                 for(Lead l : leadList){
                    set<Id> leadOwnerIdSet =  new set<Id>();
                    if(l.Products__c != null){
                        //Product is multiselect picklist and facility is single picklist. For each product and facility, get the JCA from the custom setting
                        for(String product : String.ValueOf(l.Products__c).split(';')){
                            String JCA = '';
                            for(Lead_Assignment_Settings__c las : Lead_Assignment_Settings__c.getAll().values()){
                                if(product.equalsIgnoreCase(String.ValueOf(las.Product__c))){
                                    if(l.Facility_Type__c != null && l.Facility_Type__c == String.ValueOf(las.Facility_Type__c)){
                                        JCA = String.ValueOf(las.JCA__c);
                                        system.debug('@@@ CS Product & FT -- ' + Product + ' -- ' + l.Facility_Type__c);
                                        break;
                                    }else if(l.Facility_Type__c == null && las.Facility_Type__c == null){
                                        JCA = String.ValueOf(las.JCA__c);
                                        system.debug('@@@ CS Product & FT --  ' + Product + ' -- ' + l.Facility_Type__c);
                                    }
                                }
                            }
                            
                            if(JCA != ''){
                                for(ZIP_Code__c zip : zipCodeList){
                                    if( zip.Name == string.valueOf(l.Zip_Postal_Code__c).left(5) && 
                                        zip.KCI_Territory__r.Territory_Code__c != null && zip.KCI_Territory__r.Territory_Code__c.startsWith(JCA)){
                                        
                                        leadOwnerIdSet.add(zip.KCI_Territory__r.OwnerId);
                                        break;
                                    }
                                }
                            }
                            system.debug('@@@ Leads Product & FT -- ' + Product + ' -- ' + l.Facility_Type__c);
                            system.debug('@@@ JCA -- ' + JCA);
                            system.debug('@@@ leadOwnerIdSet -- ' + leadOwnerIdSet);
                        }
                    } else if(l.Products__c == null && l.Facility_Type__c != null){
                        String JCA = '';
                        for(Lead_Assignment_Settings__c las : Lead_Assignment_Settings__c.getAll().values()){
                            if(las.Product__c == null){
                                if(l.Facility_Type__c != null && l.Facility_Type__c == String.ValueOf(las.Facility_Type__c)){
                                    JCA = String.ValueOf(las.JCA__c);
                                    break;
                                }
                            }
                        }
                        if(JCA != ''){
                            for(ZIP_Code__c zip : zipCodeList){
                                if( zip.Name == string.valueOf(l.Zip_Postal_Code__c).left(5) && 
                                    zip.KCI_Territory__r.Territory_Code__c != null && zip.KCI_Territory__r.Territory_Code__c.startsWith(JCA)){
                                    
                                    leadOwnerIdSet.add(zip.KCI_Territory__r.OwnerId);
                                    break;
                                }
                            }
                        }
                    }
                    
                    if(!leadOwnerIdSet.isEmpty() && leadOwnerIdSet.size() == 1){
                        // only one owner idendified for the lead based on product, facility type and zipcode combination
                        l.OwnerId = new list<Id>(leadOwnerIdSet)[0];
                        system.debug('>>>@@@ in lead owner Assignment - Owner = '+ l.OwnerId );
                    }else if(!leadOwnerIdSet.isEmpty() && leadOwnerIdSet.size() > 1){
                        //multiple owners identified, assign the first one to the current lead and create clones to assign to other owners.
                        list<Id> leadOwnerIdList = new list<Id>(leadOwnerIdSet);
                        for(integer i = 1; i < leadOwnerIdList.size(); i++){
                            Lead clonedLead = l.clone(false, true);
                            clonedLead.OwnerId = leadOwnerIdList[i];
                            clonedLead.Do_Not_Reassign__c = true;
                            clonedLeadsToInsert.add(clonedLead);
                        }
                        l.OwnerId = leadOwnerIdList[0];
                        system.debug('>>>@@@ in multi lead owner Assignment - Owner = '+ l.OwnerId );
                    }else{
                        //no owner matching the criteria assign owner to KCI US User
                        l.OwnerId = SystemIdUtility.KCIUSUserId;
                    }   
                 
                 }
                 
                 if(!clonedLeadsToInsert.isEmpty()){
                    insert(clonedLeadsToInsert);
                 }
             
             
     
     }
     catch(Exception e){
     
     }
 
  }

}
----------------------------- 

Trigger 

trigger LeadsTrigger on Lead (before insert, before update) {
	
	if(trigger.isInsert && trigger.isBefore){
		leadTriggerHandler.onBeforeInsert(trigger.new);
	}
	if(trigger.isUpdate && trigger.isBefore){
		leadTriggerHandler.onBeforeUpdate(trigger.new, trigger.oldMap);
	}

}
---------------------------- 

/**********************************************************************************************************************
 * Class Name	: LeadTriggerHandlerTest
 * Description	: Testr Class for LeadTriggerHandler.
 **********************************************************************************************************************/
@isTest(SeeAllData=true)
private class LeadTriggerHandlerTest {
	
    public static Map<String,User> testUsersMap;

    static testMethod void leadOwnerAssignmentTest() {
        Lead testLead = new Lead();
        setupTestData();
        test.startTest();
	        // Test null or blank zip code - owner should be default lead owner KCI US User
	          testLead = createLead('ABThera','Acute','');
	          system.assertEquals(SystemIdUtility.KCIUSUserId, [select OwnerId from Lead where Id=:testLead.Id].OwnerId);
	          
        	// loop through all combinations as configured in Lead Assignment custom setting and create leads with the sample values
        	for(Lead_Assignment_Settings__c las : Lead_Assignment_Settings__c.getAll().values()){
	        	testLead = createLead(String.ValueOf(las.Product__c),String.ValueOf(las.Facility_Type__c),'63000');
	        	if(Limits.getQueries() < Limits.getLimitQueries()-20){
	        		if(testUsersMap.get(String.ValueOf(las.JCA__c)) != null){	
	        			system.assertEquals(testUsersMap.get(String.ValueOf(las.JCA__c)).Id, 
	        						[select OwnerId from Lead where Id=:testLead.Id].OwnerId);
	        		}
	        	}
        	}
        	// update Lead and test Owner assignment.
        	testLead.Products__c = 'Ulta';
        	testLead.Facility_Type__c = 'Acute';
        	update testLead;
        	
        	// Test multiple product
        	testLead = createLead('Specialty Dressing;GRAFTJACKET','Acute','63000');
        	
        	// Test non matching zipcode - then Lead Owner assigned should be KCI US User
        	testLead = createLead('ABThera','Acute','99999');
        	system.assertEquals(SystemIdUtility.KCIUSUserId, [select OwnerId from Lead where Id=:testLead.Id].OwnerId);
        	
        test.stopTest();
    }
    
    private static Lead createLead(String product, String facilityType, String zipCode){
    
    	Lead newLead = new Lead();
    	newLead.FirstName = 'FirstName';
    	newLead.LastName = 'LastName';
    	newLead.Email = 'test@kci1.com';
    	newLead.Products__c = product;
    	newLead.Facility_Type__c = facilityType;
    	newLead.Zip_Postal_Code__c = zipCode;
    	
    	insert newLead;
    	
    	return newLead;
    
    }
    
    private static void setupTestData(){
		//get test users
		testUsersMap = new Map<String,User>();
		list<User> testTMVUsers=[Select Id,JCA__C, Employee_Id__c from User where IsActive=true and Employee_Id__c!=null and JCA__C='TMV' and Id !=:Userinfo.getUserId() limit 1];
		if(testTMVUsers!= null && testTMVUsers.size()==1){
			testUsersMap.put('TMV',testTMVUsers[0]);
		}		
		list<User> testTSVUsers=[Select Id,JCA__C, Employee_Id__c from User where IsActive=true and Employee_Id__c!=null and JCA__C='TSV' and Id !=:Userinfo.getUserId() limit 1];
		if(testTSVUsers!= null && testTSVUsers.size()==1){
			testUsersMap.put('TSV',testTSVUsers[0]);
		}
		list<User> testSSMUsers=[Select Id,JCA__C, Employee_Id__c from User where IsActive=true and Employee_Id__c!=null and JCA__C='SSM' and Id !=:Userinfo.getUserId() limit 1];
		if(testSSMUsers!= null && testSSMUsers.size()==1){
			testUsersMap.put('SSM',testSSMUsers[0]);
		}	
		
		//create Territory and Zip code for test user
		
		//create territory 
    	KCI_Territory__c testTerrTMV=new KCI_Territory__c(Name='terr-01', KCI_Legacy_Id__c='terr-001',Sales_Rep_Id__c=testUsersMap.get('TMV').employee_id__c, 
    	Territory_Code__c='TMV-test terr code',Territory_Start_Date__c=System.date.Today()-5, OwnerId=testUsersMap.get('TMV').Id);
    	KCI_Territory__c testTerrTSV=new KCI_Territory__c(Name='terr-02', KCI_Legacy_Id__c='terr-002',Sales_Rep_Id__c=testUsersMap.get('TSV').employee_id__c, 
    	Territory_Code__c='TSV-test terr code',Territory_Start_Date__c=System.date.Today()-5, OwnerId=testUsersMap.get('TSV').Id);
    	KCI_Territory__c testTerrSSM=new KCI_Territory__c(Name='terr-03', KCI_Legacy_Id__c='terr-003',Sales_Rep_Id__c=testUsersMap.get('SSM').employee_id__c, 
    	Territory_Code__c='SSM-test terr code',Territory_Start_Date__c=System.date.Today()-5, OwnerId=testUsersMap.get('SSM').Id);
    	insert new list<KCI_Territory__c>{testTerrTMV,testTerrTSV,testTerrSSM};
    	
		//create zip codes
    	ZIP_Code__c testZipTMV=new ZIP_Code__c(Name='63000', KCI_Legacy_Id__c='zip-001',KCI_Territory__c=testTerrTMV.Id,Zip_Start_Date__c=System.date.Today()-5);
    	ZIP_Code__c testZipTSV=new ZIP_Code__c(Name='63000', KCI_Legacy_Id__c='zip-002',KCI_Territory__c=testTerrTSV.Id,Zip_Start_Date__c=System.date.Today()-5);
    	ZIP_Code__c testZipSSM=new ZIP_Code__c(Name='63000', KCI_Legacy_Id__c='zip-003',KCI_Territory__c=testTerrSSM.Id,Zip_Start_Date__c=System.date.Today()-5);
    	insert new list<ZIP_Code__c>{testZipTMV,testZipTSV,testZipSSM};
    
    }
}


Class.leadTriggerHandler.assignOwner: line 86, column 1
Class.leadTriggerHandler.onBeforeInsert: line 36, column 1
Trigger.LeadsTrigger: line 4, column 1
Hi I have a Web service class which is having an issue row lock contention . could you please suggest how to reduce  Concurrency of these requests.  Many thanks ..

 error Message : Too many DML rows: 10001

Global class BulkDelayProcessUtility {
 
  webservice static boolean BulkDelayExistingUtility(){
    boolean processCompleted=true;
    datetime dateNow=datetime.now();
    datetime cutoff=dateNow.addMinutes(-15);
    List<Id> delayReasonIds=new List<Id>();
    for(Delay_Reason__c dr: [select Id from Delay_Reason__c where CreatedDate < :cutoff]){
      delayReasonIds.add(dr.Id);
    }
    if(!delayReasonIds.isEmpty()){
      try{
        database.delete(delayReasonIds);
      }
      catch(Exception ex){
        System.debug('Failed to delete existing Delay Reasons! ' +ex);
        processCompleted=false;
      }
    }
    return processCompleted;
  }

}

 
Hi i am trying to write a trigger .

i have 1 Custom object and a Custom settings object.

i have a picklist field on custom object ( Description)  and a text field. on custom  setting i have code, description2 , column. if some one selected a picklist value in the desciption  i have to look in custom setting and populate the Code value in a text filed. i tried something. but not got enough solution any help will be appriciated.  i am sorry if i wrote my code in a not a good way.

trigger UpdateCode on Order_Note__c (before insert, before update) {

ServiceMax_Codes__c settings = ServiceMax_Codes__c.getInstance();
String  CT_CODE = settings.CT_CODE__c;
String  CT_DESCRIPTION = settings.CT_DESCRIPTION__c;
Set<String> NextActionSet = new Set<String>();
Map<String,Id> mapnextActionwithCode = new Map<String,Id>();

//List<ServiceMax_Codes__c> SMC= ServiceMax_Codes__c.getall().values();
String NAL = [SELECT CT_CODE__c FROM ServiceMax_Codes__c WHERE CT_DESCRIPTION__c IN ];
//Next_Action_New__cis a picklist value on custon object.
for (Order_Note__c obj: trigger.new){
        if(!String.isBlank(obj.Next_Action_New__c)){
          NextActionSet.add(obj.Next_Action_New__c);
          obj.Next_Action_Code__c = NAL ;
        }

 
I need help with test class for the below trigger. some one please help me. Many thanks guys.
 
trigger UpdateCR on Case  (before update) {

        Map<String, Schema.RecordTypeInfo > caseRecordTypes = Case.sObjectType.getDescribe().getRecordTypeInfosByName();

        Id recordTypeId = caseRecordTypes.get('US Cases Locked RT').getRecordTypeId();

         for ( Case c : Trigger.new) {

           if (c.CF_Tracking__c != null ){
        
              if( c.Status == 'Closed') {

                               c.RecordTypeId = recordTypeId;

        }

    }

}


}

 
Hi , I am Getting an error to the old code since we made some changes to the other classes. below is the test Stack Trace. Any help will be really appriciated.
-------------------------------------------------------------------
Error Message System.LimitException: Too many SOQL queries: 101
Class.leadTriggerHandler.assignOwner:line 86, column 1
Class.leadTriggerHandler.onBeforeInsert:line 36, column 1
Trigger.LeadsTrigger: line 4, column 1
public without sharing class leadTriggerHandler {
    
        
     public static void onBeforeInsert(list<Lead> newLeads){
     list<Lead> leadsToProcess = new list<Lead>(); 
        for(Lead l : newLeads){
            
            /* Check if owner is already populated and not currentUser and zipcode is not null, Do_Not_Reassign__c is false
               only then drive the lead through custom assignment rule. */   
            if((l.OwnerId == null || l.OwnerId == userinfo.getUserId()) && l.Zip_Postal_Code__c != null 
                && (l.Products__c != null || l.Facility_Type__c != null)
                && (l.Do_Not_Reassign__c == null || l.Do_Not_Reassign__c == false)){
                    
                leadsToProcess.add(l);
            }else if(l.Zip_Postal_Code__c == null || (l.Products__c == null && l.Facility_Type__c == null) ){
                //no ZipCode match (or) no product and no facility type -  assign the defaultleadOwner.
                l.OwnerId = SystemIdUtility.KCIUSUserId;
            }
        }
        if(!leadsToProcess.isEmpty()){
            assignOwner(leadsToProcess);
        }
     
     }
     
    
     public static void onBeforeUpdate(list<Lead> newLeads, map<Id,Lead> oldValuesMap){
     list<Lead> leadsToProcess = new list<Lead>(); 
        for(Lead l : newLeads){ 
            if(l.Zip_Postal_Code__c != null && 
               (l.Zip_Postal_Code__c!=oldValuesMap.get(l.Id).Zip_Postal_Code__c ||
                l.Facility_Type__c!=oldValuesMap.get(l.Id).Facility_Type__c)){
                    
                leadsToProcess.add(l);
            }
        }
        if(!leadsToProcess.isEmpty()){
            assignOwner(leadsToProcess);
        }
     
     }
     
    
     private static void assignOwner(list<Lead> leadList){
     
     try{
             
             set<String> leadZipCodeSet =  new set<String>();
             list<Lead> clonedLeadsToInsert =  new list<Lead>();
             
                 for(lead l : leadList){
                    if(string.valueOf(l.Zip_Postal_Code__c).length() > 5){
                        leadZipCodeSet.add(string.valueOf(l.Zip_Postal_Code__c).left(5));
                    }else{
                        leadZipCodeSet.add(string.valueOf(l.Zip_Postal_Code__c));
                    }
                 }
                 list<ZIP_Code__c> zipCodeList = [SELECT Name, Is_Active__c, KCI_Territory__c, 
                                                        KCI_Territory__r.Territory_Code__c, KCI_Territory__r.OwnerId 
                                                        FROM ZIP_Code__c 
                                                        where Name In :  leadZipCodeSet and Is_Active__c = 'Y'
                                                        ];
                 for(Lead l : leadList){
                    set<Id> leadOwnerIdSet =  new set<Id>();
                    if(l.Products__c != null){
                        //Product is multiselect picklist and facility is single picklist. For each product and facility, get the JCA from the custom setting
                        for(String product : String.ValueOf(l.Products__c).split(';')){
                            String JCA = '';
                            for(Lead_Assignment_Settings__c las : Lead_Assignment_Settings__c.getAll().values()){
                                if(product.equalsIgnoreCase(String.ValueOf(las.Product__c))){
                                    if(l.Facility_Type__c != null && l.Facility_Type__c == String.ValueOf(las.Facility_Type__c)){
                                        JCA = String.ValueOf(las.JCA__c);
                                        system.debug('@@@ CS Product & FT -- ' + Product + ' -- ' + l.Facility_Type__c);
                                        break;
                                    }else if(l.Facility_Type__c == null && las.Facility_Type__c == null){
                                        JCA = String.ValueOf(las.JCA__c);
                                        system.debug('@@@ CS Product & FT --  ' + Product + ' -- ' + l.Facility_Type__c);
                                    }
                                }
                            }
                            
                            if(JCA != ''){
                                for(ZIP_Code__c zip : zipCodeList){
                                    if( zip.Name == string.valueOf(l.Zip_Postal_Code__c).left(5) && 
                                        zip.KCI_Territory__r.Territory_Code__c != null && zip.KCI_Territory__r.Territory_Code__c.startsWith(JCA)){
                                        
                                        leadOwnerIdSet.add(zip.KCI_Territory__r.OwnerId);
                                        break;
                                    }
                                }
                            }
                            system.debug('@@@ Leads Product & FT -- ' + Product + ' -- ' + l.Facility_Type__c);
                            system.debug('@@@ JCA -- ' + JCA);
                            system.debug('@@@ leadOwnerIdSet -- ' + leadOwnerIdSet);
                        }
                    } else if(l.Products__c == null && l.Facility_Type__c != null){
                        String JCA = '';
                        for(Lead_Assignment_Settings__c las : Lead_Assignment_Settings__c.getAll().values()){
                            if(las.Product__c == null){
                                if(l.Facility_Type__c != null && l.Facility_Type__c == String.ValueOf(las.Facility_Type__c)){
                                    JCA = String.ValueOf(las.JCA__c);
                                    break;
                                }
                            }
                        }
                        if(JCA != ''){
                            for(ZIP_Code__c zip : zipCodeList){
                                if( zip.Name == string.valueOf(l.Zip_Postal_Code__c).left(5) && 
                                    zip.KCI_Territory__r.Territory_Code__c != null && zip.KCI_Territory__r.Territory_Code__c.startsWith(JCA)){
                                    
                                    leadOwnerIdSet.add(zip.KCI_Territory__r.OwnerId);
                                    break;
                                }
                            }
                        }
                    }
                    
                    if(!leadOwnerIdSet.isEmpty() && leadOwnerIdSet.size() == 1){
                        // only one owner idendified for the lead based on product, facility type and zipcode combination
                        l.OwnerId = new list<Id>(leadOwnerIdSet)[0];
                        system.debug('>>>@@@ in lead owner Assignment - Owner = '+ l.OwnerId );
                    }else if(!leadOwnerIdSet.isEmpty() && leadOwnerIdSet.size() > 1){
                        //multiple owners identified, assign the first one to the current lead and create clones to assign to other owners.
                        list<Id> leadOwnerIdList = new list<Id>(leadOwnerIdSet);
                        for(integer i = 1; i < leadOwnerIdList.size(); i++){
                            Lead clonedLead = l.clone(false, true);
                            clonedLead.OwnerId = leadOwnerIdList[i];
                            clonedLead.Do_Not_Reassign__c = true;
                            clonedLeadsToInsert.add(clonedLead);
                        }
                        l.OwnerId = leadOwnerIdList[0];
                        system.debug('>>>@@@ in multi lead owner Assignment - Owner = '+ l.OwnerId );
                    }else{
                        //no owner matching the criteria assign owner to KCI US User
                        l.OwnerId = SystemIdUtility.KCIUSUserId;
                    }   
                 
                 }
                 
                 if(!clonedLeadsToInsert.isEmpty()){
                    insert(clonedLeadsToInsert);
                 }
             
             
     
     }
     catch(Exception e){
     
     }
 
  }

}
----------------------------- 

Trigger 

trigger LeadsTrigger on Lead (before insert, before update) {
	
	if(trigger.isInsert && trigger.isBefore){
		leadTriggerHandler.onBeforeInsert(trigger.new);
	}
	if(trigger.isUpdate && trigger.isBefore){
		leadTriggerHandler.onBeforeUpdate(trigger.new, trigger.oldMap);
	}

}
---------------------------- 

/**********************************************************************************************************************
 * Class Name	: LeadTriggerHandlerTest
 * Description	: Testr Class for LeadTriggerHandler.
 **********************************************************************************************************************/
@isTest(SeeAllData=true)
private class LeadTriggerHandlerTest {
	
    public static Map<String,User> testUsersMap;

    static testMethod void leadOwnerAssignmentTest() {
        Lead testLead = new Lead();
        setupTestData();
        test.startTest();
	        // Test null or blank zip code - owner should be default lead owner KCI US User
	          testLead = createLead('ABThera','Acute','');
	          system.assertEquals(SystemIdUtility.KCIUSUserId, [select OwnerId from Lead where Id=:testLead.Id].OwnerId);
	          
        	// loop through all combinations as configured in Lead Assignment custom setting and create leads with the sample values
        	for(Lead_Assignment_Settings__c las : Lead_Assignment_Settings__c.getAll().values()){
	        	testLead = createLead(String.ValueOf(las.Product__c),String.ValueOf(las.Facility_Type__c),'63000');
	        	if(Limits.getQueries() < Limits.getLimitQueries()-20){
	        		if(testUsersMap.get(String.ValueOf(las.JCA__c)) != null){	
	        			system.assertEquals(testUsersMap.get(String.ValueOf(las.JCA__c)).Id, 
	        						[select OwnerId from Lead where Id=:testLead.Id].OwnerId);
	        		}
	        	}
        	}
        	// update Lead and test Owner assignment.
        	testLead.Products__c = 'Ulta';
        	testLead.Facility_Type__c = 'Acute';
        	update testLead;
        	
        	// Test multiple product
        	testLead = createLead('Specialty Dressing;GRAFTJACKET','Acute','63000');
        	
        	// Test non matching zipcode - then Lead Owner assigned should be KCI US User
        	testLead = createLead('ABThera','Acute','99999');
        	system.assertEquals(SystemIdUtility.KCIUSUserId, [select OwnerId from Lead where Id=:testLead.Id].OwnerId);
        	
        test.stopTest();
    }
    
    private static Lead createLead(String product, String facilityType, String zipCode){
    
    	Lead newLead = new Lead();
    	newLead.FirstName = 'FirstName';
    	newLead.LastName = 'LastName';
    	newLead.Email = 'test@kci1.com';
    	newLead.Products__c = product;
    	newLead.Facility_Type__c = facilityType;
    	newLead.Zip_Postal_Code__c = zipCode;
    	
    	insert newLead;
    	
    	return newLead;
    
    }
    
    private static void setupTestData(){
		//get test users
		testUsersMap = new Map<String,User>();
		list<User> testTMVUsers=[Select Id,JCA__C, Employee_Id__c from User where IsActive=true and Employee_Id__c!=null and JCA__C='TMV' and Id !=:Userinfo.getUserId() limit 1];
		if(testTMVUsers!= null && testTMVUsers.size()==1){
			testUsersMap.put('TMV',testTMVUsers[0]);
		}		
		list<User> testTSVUsers=[Select Id,JCA__C, Employee_Id__c from User where IsActive=true and Employee_Id__c!=null and JCA__C='TSV' and Id !=:Userinfo.getUserId() limit 1];
		if(testTSVUsers!= null && testTSVUsers.size()==1){
			testUsersMap.put('TSV',testTSVUsers[0]);
		}
		list<User> testSSMUsers=[Select Id,JCA__C, Employee_Id__c from User where IsActive=true and Employee_Id__c!=null and JCA__C='SSM' and Id !=:Userinfo.getUserId() limit 1];
		if(testSSMUsers!= null && testSSMUsers.size()==1){
			testUsersMap.put('SSM',testSSMUsers[0]);
		}	
		
		//create Territory and Zip code for test user
		
		//create territory 
    	KCI_Territory__c testTerrTMV=new KCI_Territory__c(Name='terr-01', KCI_Legacy_Id__c='terr-001',Sales_Rep_Id__c=testUsersMap.get('TMV').employee_id__c, 
    	Territory_Code__c='TMV-test terr code',Territory_Start_Date__c=System.date.Today()-5, OwnerId=testUsersMap.get('TMV').Id);
    	KCI_Territory__c testTerrTSV=new KCI_Territory__c(Name='terr-02', KCI_Legacy_Id__c='terr-002',Sales_Rep_Id__c=testUsersMap.get('TSV').employee_id__c, 
    	Territory_Code__c='TSV-test terr code',Territory_Start_Date__c=System.date.Today()-5, OwnerId=testUsersMap.get('TSV').Id);
    	KCI_Territory__c testTerrSSM=new KCI_Territory__c(Name='terr-03', KCI_Legacy_Id__c='terr-003',Sales_Rep_Id__c=testUsersMap.get('SSM').employee_id__c, 
    	Territory_Code__c='SSM-test terr code',Territory_Start_Date__c=System.date.Today()-5, OwnerId=testUsersMap.get('SSM').Id);
    	insert new list<KCI_Territory__c>{testTerrTMV,testTerrTSV,testTerrSSM};
    	
		//create zip codes
    	ZIP_Code__c testZipTMV=new ZIP_Code__c(Name='63000', KCI_Legacy_Id__c='zip-001',KCI_Territory__c=testTerrTMV.Id,Zip_Start_Date__c=System.date.Today()-5);
    	ZIP_Code__c testZipTSV=new ZIP_Code__c(Name='63000', KCI_Legacy_Id__c='zip-002',KCI_Territory__c=testTerrTSV.Id,Zip_Start_Date__c=System.date.Today()-5);
    	ZIP_Code__c testZipSSM=new ZIP_Code__c(Name='63000', KCI_Legacy_Id__c='zip-003',KCI_Territory__c=testTerrSSM.Id,Zip_Start_Date__c=System.date.Today()-5);
    	insert new list<ZIP_Code__c>{testZipTMV,testZipTSV,testZipSSM};
    
    }
}


Class.leadTriggerHandler.assignOwner: line 86, column 1
Class.leadTriggerHandler.onBeforeInsert: line 36, column 1
Trigger.LeadsTrigger: line 4, column 1