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
Vigneshwaran LoganathanVigneshwaran Loganathan 

Duplicate Id in List

list<VA_Allowance__c> AdjAllow = new list<VA_Allowance__c>();
       list<VA_Bonus__c> bonusy =new list<VA_Bonus__c>();
       list<string> bonusvaid = new list<string>();
       list<Payslip__c> pays = new list<Payslip__c>();
                
        adjbonus1 = [select name ,Adjustment__c, Adjustment_end_date__c,Acctid__c,Account_Name__c, Amount__c,New_Our_VA__c,Payslip_IDs__c,Type__c,payroll_cycle_year__c,payroll_cycle_start_year__c,Payroll_cycle_end_year__c, Adjustment_start_date__c,Adjustment_End_date1__c,Adjustment_startdate__c,Adjustment_Enddate__c,Mode__c,Bonus_creditdate__c,status__c from VA_Bonus__c
                     where Status__c='Active' and Payroll_Adjustment_only__c=true limit 1];
            adjset.addall(adjbonus);
            system.debug('>>>>>adjset'+adjset);
            adjbonus.addall(adjset);
            
            for(Payslip__c psx1 : pays)
               {
               system.debug('&&&&&&&pays'+psx1.Payslips__c);
                for(VA_Bonus__c bonusx : adjbonus1)
                {
                 if(psx1.Payslips__c == bonusx.New_Our_VA__c&& bonusx.status__c =='active')
                   {
                    if(bonusx.mode__c == 'One time' && bonusx.Bonus_creditdate__c==pc.payroll_cycle_type__c && bonusx.payroll_cycle_year__c ==pc.Payroll_cycle_year__c)
                       {
                         Paysliplineitem__c dedpsl = new Paysliplineitem__c();
                         dedpsl.Payslips__c = psx1.id;
                         dedpsl.Account__c =  bonusx.Acctid__c;
                         dedpsl.Date__c = system.today();
                         dedplx.add(dedpsl);
                        
                        if(bonusx.mode__c == 'One time')
                        {
                         bonusx.Payslip_IDs__c = psx1.name;
                         bonusx.status__c = 'Inactive';
                        }
                        bonusy.add(bonusx);
                        system.debug('************bonusy'+bonusy);
                       }
                       if(bonusx.mode__c == 'Recurring')
                           {
                            date adjstartdate=date.parse(bonusx.Adjustment_startdate__c);
                            date adjenddate = date.parse(bonusx.Adjustment_Enddate__c);
                            if(adjstartdate <= pc.paryoll_enddate__c && adjenddate >= pc.paryoll_enddate__c)
                         {
                         Paysliplineitem__c dedpsl = new Paysliplineitem__c();
                         dedpsl.Payslips__c = psx1.id;
                         dedpsl.Account__c =  bonusx.Acctid__c;
                         dedpsl.Date__c = system.today();
                                                
                          dedplx.add(dedpsl);
                           system.debug('****adddedplx'+dedplx);
                         if(bonusx.mode__c == 'Recurring')
                             {
                              if(bonusx.Payslip_IDs__c == null)
                          {
                          
                            bonusx.Payslip_IDs__c = psx1.name;
                            system.debug('>>>>>  bonusx.Payslip_IDs__c'+  bonusx.Payslip_IDs__c);
                          }
                         else
                           if(bonusx.Payslip_IDs__c != null)
                          {
                            bonusx.Payslip_IDs__c =  bonusx.Payslip_IDs__c + ',' + psx1.name;
                            if(adjenddate <=pc.paryoll_enddate__c)
                            {
                              bonusx.status__c = 'Inactive';
                            }
                          }
                       }
                      
                        }
                         bonusy.add(bonusx);
                      }    
                    }
                }
               }
               insert dedplx;  
               update bonusy;    // Error In this Line
Can Anyone Suggest how to solve this?

Thanks
 
Best Answer chosen by Vigneshwaran Loganathan
Ramesh KosalairamanRamesh Kosalairaman
Hi
Try the below code i will help
list<VA_Allowance__c> AdjAllow = new list<VA_Allowance__c>();
       list<VA_Bonus__c> bonusy =new list<VA_Bonus__c>();
       list<string> bonusvaid = new list<string>();
       list<Payslip__c> pays = new list<Payslip__c>();
                
        adjbonus1 = [select name ,Adjustment__c, Adjustment_end_date__c,Acctid__c,Account_Name__c, Amount__c,New_Our_VA__c,Payslip_IDs__c,Type__c,payroll_cycle_year__c,payroll_cycle_start_year__c,Payroll_cycle_end_year__c, Adjustment_start_date__c,Adjustment_End_date1__c,Adjustment_startdate__c,Adjustment_Enddate__c,Mode__c,Bonus_creditdate__c,status__c from VA_Bonus__c
                     where Status__c='Active' and Payroll_Adjustment_only__c=true limit 1];
            adjset.addall(adjbonus);
            system.debug('>>>>>adjset'+adjset);
            adjbonus.addall(adjset);
            
            for(Payslip__c psx1 : pays)
               {
               system.debug('&&&&&&&pays'+psx1.Payslips__c);
                for(VA_Bonus__c bonusx : adjbonus1)
                {
                 if(psx1.Payslips__c == bonusx.New_Our_VA__c&& bonusx.status__c =='active')
                   {
                    if(bonusx.mode__c == 'One time' && bonusx.Bonus_creditdate__c==pc.payroll_cycle_type__c && bonusx.payroll_cycle_year__c ==pc.Payroll_cycle_year__c)
                       {
                         Paysliplineitem__c dedpsl = new Paysliplineitem__c();
                         dedpsl.Payslips__c = psx1.id;
                         dedpsl.Account__c =  bonusx.Acctid__c;
                         dedpsl.Date__c = system.today();
                         dedplx.add(dedpsl);
                        
                        if(bonusx.mode__c == 'One time')
                        {
                         bonusx.Payslip_IDs__c = psx1.name;
                         bonusx.status__c = 'Inactive';
                        }
                        bonusy.add(bonusx);
                        system.debug('************bonusy'+bonusy);
                       }
                       if(bonusx.mode__c == 'Recurring')
                           {
                            date adjstartdate=date.parse(bonusx.Adjustment_startdate__c);
                            date adjenddate = date.parse(bonusx.Adjustment_Enddate__c);
                            if(adjstartdate <= pc.paryoll_enddate__c && adjenddate >= pc.paryoll_enddate__c)
                         {
                         Paysliplineitem__c dedpsl = new Paysliplineitem__c();
                         dedpsl.Payslips__c = psx1.id;
                         dedpsl.Account__c =  bonusx.Acctid__c;
                         dedpsl.Date__c = system.today();
                                                
                          dedplx.add(dedpsl);
                           system.debug('****adddedplx'+dedplx);
                         if(bonusx.mode__c == 'Recurring')
                             {
                              if(bonusx.Payslip_IDs__c == null)
                          {
                          
                            bonusx.Payslip_IDs__c = psx1.name;
                            system.debug('>>>>>  bonusx.Payslip_IDs__c'+  bonusx.Payslip_IDs__c);
                          }
                         else
                           if(bonusx.Payslip_IDs__c != null)
                          {
                            bonusx.Payslip_IDs__c =  bonusx.Payslip_IDs__c + ',' + psx1.name;
                            if(adjenddate <=pc.paryoll_enddate__c)
                            {
                              bonusx.status__c = 'Inactive';
                            }
                          }
                       }
                      
                        }
                         bonusy.add(bonusx);
                      }    
                    }
                }
               }
               insert dedplx; 
			   /* 
			    *Resolution Starts Here 
				*
				*/
				Set<VA_Bonus__c> bonusySet = new Set<VA_Bonus__c>();
				
				bonusySet.addAll(bonusy); 			   
               update bonusySet;    
			   // Error In this Line

 

All Answers

KaranrajKaranraj
At the line number 2 change the data type list into set.
Set won't allow duplicate records in collections
Set<VA_Bonus__c> bonusy =new Set<VA_Bonus__c>();

 
Ramesh KosalairamanRamesh Kosalairaman
Hi
Try the below code i will help
list<VA_Allowance__c> AdjAllow = new list<VA_Allowance__c>();
       list<VA_Bonus__c> bonusy =new list<VA_Bonus__c>();
       list<string> bonusvaid = new list<string>();
       list<Payslip__c> pays = new list<Payslip__c>();
                
        adjbonus1 = [select name ,Adjustment__c, Adjustment_end_date__c,Acctid__c,Account_Name__c, Amount__c,New_Our_VA__c,Payslip_IDs__c,Type__c,payroll_cycle_year__c,payroll_cycle_start_year__c,Payroll_cycle_end_year__c, Adjustment_start_date__c,Adjustment_End_date1__c,Adjustment_startdate__c,Adjustment_Enddate__c,Mode__c,Bonus_creditdate__c,status__c from VA_Bonus__c
                     where Status__c='Active' and Payroll_Adjustment_only__c=true limit 1];
            adjset.addall(adjbonus);
            system.debug('>>>>>adjset'+adjset);
            adjbonus.addall(adjset);
            
            for(Payslip__c psx1 : pays)
               {
               system.debug('&&&&&&&pays'+psx1.Payslips__c);
                for(VA_Bonus__c bonusx : adjbonus1)
                {
                 if(psx1.Payslips__c == bonusx.New_Our_VA__c&& bonusx.status__c =='active')
                   {
                    if(bonusx.mode__c == 'One time' && bonusx.Bonus_creditdate__c==pc.payroll_cycle_type__c && bonusx.payroll_cycle_year__c ==pc.Payroll_cycle_year__c)
                       {
                         Paysliplineitem__c dedpsl = new Paysliplineitem__c();
                         dedpsl.Payslips__c = psx1.id;
                         dedpsl.Account__c =  bonusx.Acctid__c;
                         dedpsl.Date__c = system.today();
                         dedplx.add(dedpsl);
                        
                        if(bonusx.mode__c == 'One time')
                        {
                         bonusx.Payslip_IDs__c = psx1.name;
                         bonusx.status__c = 'Inactive';
                        }
                        bonusy.add(bonusx);
                        system.debug('************bonusy'+bonusy);
                       }
                       if(bonusx.mode__c == 'Recurring')
                           {
                            date adjstartdate=date.parse(bonusx.Adjustment_startdate__c);
                            date adjenddate = date.parse(bonusx.Adjustment_Enddate__c);
                            if(adjstartdate <= pc.paryoll_enddate__c && adjenddate >= pc.paryoll_enddate__c)
                         {
                         Paysliplineitem__c dedpsl = new Paysliplineitem__c();
                         dedpsl.Payslips__c = psx1.id;
                         dedpsl.Account__c =  bonusx.Acctid__c;
                         dedpsl.Date__c = system.today();
                                                
                          dedplx.add(dedpsl);
                           system.debug('****adddedplx'+dedplx);
                         if(bonusx.mode__c == 'Recurring')
                             {
                              if(bonusx.Payslip_IDs__c == null)
                          {
                          
                            bonusx.Payslip_IDs__c = psx1.name;
                            system.debug('>>>>>  bonusx.Payslip_IDs__c'+  bonusx.Payslip_IDs__c);
                          }
                         else
                           if(bonusx.Payslip_IDs__c != null)
                          {
                            bonusx.Payslip_IDs__c =  bonusx.Payslip_IDs__c + ',' + psx1.name;
                            if(adjenddate <=pc.paryoll_enddate__c)
                            {
                              bonusx.status__c = 'Inactive';
                            }
                          }
                       }
                      
                        }
                         bonusy.add(bonusx);
                      }    
                    }
                }
               }
               insert dedplx; 
			   /* 
			    *Resolution Starts Here 
				*
				*/
				Set<VA_Bonus__c> bonusySet = new Set<VA_Bonus__c>();
				
				bonusySet.addAll(bonusy); 			   
               update bonusySet;    
			   // Error In this Line

 
This was selected as the best answer
Vigneshwaran LoganathanVigneshwaran Loganathan
Hi,
When i change code like
Set<VA_Bonus__c> bonusySet = new Set<VA_Bonus__c>();
bonusySet.addAll(bonusy);            
update bonusySet;
it showed Compile Error: DML requires SObject or SObject list type:

So I again added It to list like,
 
Set<VA_Bonus__c> bonusySet = new Set<VA_Bonus__c>();
bonusySet.addAll(bonusy);
bonusy.adall(bonusyset);            
update bonusy;

But Got again Old Error... It should Remove Duplicates right..!

Thanks
Ramesh KosalairamanRamesh Kosalairaman
Hi 
//Check Duplicate
if(!FindDublicate.contains(bonusx.Id))//Check Duplicate
	bonusy.add(bonusx);//Check Duplicate
FindDublicate.add(bonusx.Id);//Check Duplicate
the above code add to find dublicate Ids in your object
 
list<VA_Allowance__c> AdjAllow = new list<VA_Allowance__c>();
       list<VA_Bonus__c> bonusy =new list<VA_Bonus__c>();
       list<string> bonusvaid = new list<string>();
       list<Payslip__c> pays = new list<Payslip__c>();
		set<Id> FindDublicate= new set<Id>(); //Check Duplicate	
        adjbonus1 = [select name ,Adjustment__c, Adjustment_end_date__c,Acctid__c,Account_Name__c, Amount__c,New_Our_VA__c,Payslip_IDs__c,Type__c,payroll_cycle_year__c,payroll_cycle_start_year__c,Payroll_cycle_end_year__c, Adjustment_start_date__c,Adjustment_End_date1__c,Adjustment_startdate__c,Adjustment_Enddate__c,Mode__c,Bonus_creditdate__c,status__c from VA_Bonus__c
                     where Status__c='Active' and Payroll_Adjustment_only__c=true limit 1];
            adjset.addall(adjbonus);
            system.debug('>>>>>adjset'+adjset);
            adjbonus.addall(adjset);
            
            for(Payslip__c psx1 : pays)
               {
               system.debug('&&&&&&&pays'+psx1.Payslips__c);
                for(VA_Bonus__c bonusx : adjbonus1)
                {
                 if(psx1.Payslips__c == bonusx.New_Our_VA__c&& bonusx.status__c =='active')
                   {
                    if(bonusx.mode__c == 'One time' && bonusx.Bonus_creditdate__c==pc.payroll_cycle_type__c && bonusx.payroll_cycle_year__c ==pc.Payroll_cycle_year__c)
                       {
                         Paysliplineitem__c dedpsl = new Paysliplineitem__c();
                         dedpsl.Payslips__c = psx1.id;
                         dedpsl.Account__c =  bonusx.Acctid__c;
                         dedpsl.Date__c = system.today();
                         dedplx.add(dedpsl);
                        
                        if(bonusx.mode__c == 'One time')
                        {
                         bonusx.Payslip_IDs__c = psx1.name;
                         bonusx.status__c = 'Inactive';
                        }
						//Check Duplicate
						if(!FindDublicate.contains(bonusx.Id))//Check Duplicate
							bonusy.add(bonusx);//Check Duplicate
						FindDublicate.add(bonusx.Id);//Check Duplicate
                        system.debug('************bonusy'+bonusy);
                       }
                       if(bonusx.mode__c == 'Recurring')
                           {
                            date adjstartdate=date.parse(bonusx.Adjustment_startdate__c);
                            date adjenddate = date.parse(bonusx.Adjustment_Enddate__c);
                            if(adjstartdate <= pc.paryoll_enddate__c && adjenddate >= pc.paryoll_enddate__c)
                         {
                         Paysliplineitem__c dedpsl = new Paysliplineitem__c();
                         dedpsl.Payslips__c = psx1.id;
                         dedpsl.Account__c =  bonusx.Acctid__c;
                         dedpsl.Date__c = system.today();
                                                
                          dedplx.add(dedpsl);
                           system.debug('****adddedplx'+dedplx);
                         if(bonusx.mode__c == 'Recurring')
                             {
                              if(bonusx.Payslip_IDs__c == null)
                          {
                          
                            bonusx.Payslip_IDs__c = psx1.name;
                            system.debug('>>>>>  bonusx.Payslip_IDs__c'+  bonusx.Payslip_IDs__c);
                          }
                         else
                           if(bonusx.Payslip_IDs__c != null)
                          {
                            bonusx.Payslip_IDs__c =  bonusx.Payslip_IDs__c + ',' + psx1.name;
                            if(adjenddate <=pc.paryoll_enddate__c)
                            {
                              bonusx.status__c = 'Inactive';
                            }
                          }
                       }
                      
                        }
						//Check Duplicate
						if(!FindDublicate.contains(bonusx.Id)) //Check Duplicate
							bonusy.add(bonusx);
						FindDublicate.add(bonusx.Id);
                      }    
                    }
                }
               }
               insert dedplx; 
					   
               update bonusy;    
			   // Error In this Line


may  this will help you

 
Vigneshwaran LoganathanVigneshwaran Loganathan


Thanks  you all guys, Especially  Ramesh Kosalairaman :)
 
Ramesh KosalairamanRamesh Kosalairaman
You are welcome @Vigneshwaran Loganathan

Please select the correct answer as best