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
minkeshminkesh 

Before Insert or Upsert list must not have two identically equal elements

Hello folks,

 

I hope you all are doing well.

 

I am facing one serious issue and i can't understand.

Here is my class :-

 

In this class  I am trying to sequencing bundle product and their option. e.g. product1 has two option. So it I have to arrange it

 

Product1

 -- option1

 -- option2

 

In this format, same option may be in the different different budle.I have written code but while inserting it shows me 125 row and the exception that is my subject line.

 

public with sharing class CopyToAgreementTemplateFieldHolderClass {
    String agreementId = Apexpages.CurrentPage().getParameters().get('id');
    String action = ApexPages.CurrentPage().getParameters().get('action');
    String templateType = ApexPages.CurrentPage().getParameters().get('templateType');
    List<Apttus__AgreementLineItem__c> agreementLineItemList = new List<Apttus__AgreementLineItem__c>();
    List<Agreement_Template_Field_Holder__c> agreementTemplateFieldHolderList = new List<Agreement_Template_Field_Holder__c>();
    Map<String,List<Apttus__AgreementLineItem__c>> agreementTemplateFieldMap = new Map<String,List<Apttus__AgreementLineItem__c>>(); 
    public CopyToAgreementTemplateFieldHolderClass(){
        String soql = sobjetQuery('Apttus__AgreementLineItem__c','Apttus__AgreementId__c','=',agreementId,'Apttus_CMConfig__PriceListItemId__r.Required_Option__c,Apttus__ProductId__r.Name,Apttus_CMConfig__OptionId__r.Name,Apttus_CMConfig__PriceListItemId__r.Charge_Specifics__c') + ' Order By Apttus_CMConfig__LineNumber__c ASC';
        agreementLineItemList = database.query(soql);
        Agreement_Template_Field_Holder__c agreementTemplateFieldHolder;
        List<Apttus__AgreementLineItem__c> aggTempList;
        Map<String,Agreement_Template_Field_Holder__c> uniqueValueMap = new Map<String,Agreement_Template_Field_Holder__c>();
        for(Apttus__AgreementLineItem__c agmntli : agreementLineItemList){
             if( agreementTemplateFieldMap.containsKey(agmntli.Apttus__ProductId__r.Name +''+ agmntli.Apttus_CMConfig__OptionId__r.Name) ){
                aggTempList.add(agmntli);
                system.debug('===========agmntli.Apttus_CMConfig__OptionPrice__c=====>'+agmntli.Apttus__ListPrice__c);
                system.debug('===========agmntli====>'+agmntli);
                agreementTemplateFieldMap.put(agmntli.Apttus__ProductId__r.Name +''+ agmntli.Apttus_CMConfig__OptionId__r.Name,aggTempList);
            }else{
                aggTempList = new List<Apttus__AgreementLineItem__c>();
                system.debug('===========agmntli.Apttus_CMConfig__OptionPrice__c=====>'+agmntli.Apttus_CMConfig__OptionPrice__c);
                system.debug('===========agmntli====>'+agmntli);
                aggTempList.add(agmntli);
                agreementTemplateFieldMap.put(agmntli.Apttus__ProductId__r.Name +''+ agmntli.Apttus_CMConfig__OptionId__r.Name,aggTempList);
            }
           
             
            
        }
        system.debug('===agreementTemplateFieldMap====>'+agreementTemplateFieldMap.values());
        system.debug('===agreementTemplateFieldMap====>'+agreementTemplateFieldMap.keySet());
        for(String s : agreementTemplateFieldMap.keySet()){
            agreementTemplateFieldHolder = new Agreement_Template_Field_Holder__c();
            List<Apttus__AgreementLineItem__c> agreementLineItemList = agreementTemplateFieldMap.get(s);
            for(Apttus__AgreementLineItem__c agmntli : agreementLineItemList){
                system.debug('===========agmntli====>'+agmntli);
                system.debug('===========agmntli.Apttus_CMConfig__OptionPrice__c=====>'+agmntli.Apttus_CMConfig__OptionPrice__c);
                agreementTemplateFieldHolder.Agreement__c = agreementId;
                agreementTemplateFieldHolder.Product_Name__c = agmntli.Apttus__ProductId__r.Name;
                agreementTemplateFieldHolder.Product__c = agmntli.Apttus__ProductId__c;
                agreementTemplateFieldHolder.Product_Sequence__c = agmntli.Apttus_CMConfig__LineNumber__c;
                agreementTemplateFieldHolder.Option_Sequence__c = agmntli.Apttus_CMConfig__ItemSequence__c;
                if(agmntli.Apttus_CMConfig__OptionId__c != null){
                    agreementTemplateFieldHolder.Option_Name__c = ' - '+agmntli.Apttus_CMConfig__OptionId__r.Name;
                
                    if(agmntli.Apttus_CMConfig__ChargeType__c == 'North America PPM'){ 
                        agreementTemplateFieldHolder.Charge_Type_1__c = agmntli.Apttus_CMConfig__ChargeType__c;
                    
                        agreementTemplateFieldHolder.Charge_Type_1_Value__c = agmntli.apttus__listprice__c;
                    }
                    if(agmntli.Apttus_CMConfig__ChargeType__c == 'International PPM'){
                        agreementTemplateFieldHolder.Charge_Type_2__c = agmntli.Apttus_CMConfig__ChargeType__c;
                        
                        agreementTemplateFieldHolder.Charge_Type_2_Value__c = agmntli.apttus__listprice__c;
                    }
                    
                    if(agmntli.Apttus_CMConfig__ChargeType__c == 'Standard Price'){
                        if(agmntli.apttus__listprice__c != null){
                            agreementTemplateFieldHolder.Charge_Type_2__c = 'International PPM';
                            agreementTemplateFieldHolder.Charge_Type_1__c = 'North America PPM';
                            
                            agreementTemplateFieldHolder.Charge_Type_2_Value__c = agmntli.apttus__listprice__c;
                            agreementTemplateFieldHolder.Charge_Type_1_Value__c = agmntli.apttus__listprice__c;
                            
                        }
                        agreementTemplateFieldHolder.Appended_Text__c = agmntli.Apttus_CMConfig__PriceListItemId__r.Charge_Specifics__c;
                        agreementTemplateFieldHolder.Required_Option__c = agmntli.Apttus_CMConfig__PriceListItemId__r.Required_Option__c;
                    }
                }
                system.debug('======agmntli.Apttus__ProductId__r.Name=======>'+agmntli.Apttus__ProductId__r.Name);
                if(agmntli.Apttus__ProductId__r.Name == 'Steaming Perspective (StrP)')
                    agreementTemplateFieldHolder.Parent_Table__c = '2';
                if(agmntli.Apttus__ProductId__r.Name == 'Mobile Web Perspective Over Air (MWP-Air)' || agmntli.Apttus__ProductId__r.Name == 'MWP-Air Private Agent (1 device)' || agmntli.Apttus__ProductId__r.Name == 'Mobile Web Perspective (MWP)' || agmntli.Apttus__ProductId__r.Name == 'MWP Private Agent' || agmntli.Apttus__ProductId__r.Name == 'Mobile Device Perspective (MDP)' || agmntli.Apttus__ProductId__r.Name == 'MDP Initial Scripting' || agmntli.Apttus__ProductId__r.Name == 'Mobile Keynote Diagnostic Services (KDS)' )
                    agreementTemplateFieldHolder.Parent_Table__c = '3';
                else
                    agreementTemplateFieldHolder.Parent_Table__c = '1';
                
                uniqueValueMap.put(agmntli.Apttus_CMConfig__LineNumber__c+''+agmntli.Apttus_CMConfig__ItemSequence__c,agreementTemplateFieldHolder);
               
            }
            agreementTemplateFieldHolderList.add(agreementTemplateFieldHolder);
           // set<String> mapForSort = uniqueValueMap.keySet();
           // mapForSort = mapForSort.sort();
        }
    }
    
    public String sobjetQuery( String SobjectApiName , String conditionalField ,String condition,String comparingFieldvalue,String additionalFields ){
       String query = '';

       Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
       
       Map<String, Schema.SObjectField> fieldMap = schemaMap.get(SobjectApiName).getDescribe().fields.getMap();
       
       for(String fieldName : fieldMap.keyset()){
           if(query == null || query == ''){
               query = fieldName;
           }else{
               query = query + ',' + fieldName;
           }
       
       }
       if(additionalFields != null && additionalFields != '')
            query = 'Select' + ' ' + query +','+additionalFields+' '+' from ' + SobjectApiName;
       else
            query = 'Select' + ' ' + query+' '+' from ' + SobjectApiName;
       system.debug('------------>'+query);
       if((conditionalField != null && conditionalField != '' ) && (condition != null && condition != '') && (comparingFieldvalue != null && comparingFieldvalue != null))
            query = query + ' ' + 'Where '+conditionalField+' '+condition+' \''+comparingFieldvalue+'\'';
       
            
       
       return query;
    } 
    
    public Pagereference redirectToSelect(){
    	try{
	        insert agreementTemplateFieldHolderList;
	        system.debug('======agreementTemplateFieldHolderList========>'+agreementTemplateFieldHolderList.size());
	        system.debug('======agreementTemplateFieldHolderList========>'+agreementTemplateFieldHolderList);
	        Map<String,List<Agreement_Template_Field_Holder__c>> bundlewiseMap = new Map<String,List<Agreement_Template_Field_Holder__c>>();
	        Map<String,Agreement_Template_Field_Holder__c> productBundleMap = new Map<String,Agreement_Template_Field_Holder__c>();
	        //integer i = 0;
	        List<Agreement_Template_Field_Holder__c> bundlewiseAgreementTemplateList;
	        for(Agreement_Template_Field_Holder__c atfh : agreementTemplateFieldHolderList){
	            if(!productBundleMap.containskey(atfh.Product__c)){
	                if(atfh.Option_Name__c == null){
	                	system.debug('==product name====>'+atfh.Product__r.Name);
	                    productBundleMap.put(atfh.Product__c,atfh);
	                }
	            }
	            if(bundlewiseMap.containsKey(atfh.Product__c)){
	                if(atfh.Option_Name__c != null){ 
	                    
	                    system.debug('==atfh====>'+atfh.Product__r.Name);
	                    system.debug('==bundlewiseAgreementTemplateList==size==>'+bundlewiseAgreementTemplateList.size());
	                    for(Agreement_Template_Field_Holder__c a : bundlewiseAgreementTemplateList){
	                        system.debug('=======a.Name_For_Template__c======>'+a.Name_For_Template__c);
	                    }
	                    //bundlewiseAgreementTemplateList.clear();
	                    if(atfh != null){
	                    	bundlewiseAgreementTemplateList.add(atfh);
	                    	bundlewiseMap.put(atfh.Product__c,bundlewiseAgreementTemplateList);
	                    }
	                }
	              //  i++;
	            }else{
	                if(atfh.Option_Name__c != null){
	                    bundlewiseAgreementTemplateList = new List<Agreement_Template_Field_Holder__c>();
	                    
	                    system.debug('==atfh=new===>'+atfh.Product__r.Name);
	                    if(atfh != null){
	                    	bundlewiseAgreementTemplateList.add(atfh);
	                    	bundlewiseMap.put(atfh.Product__c,bundlewiseAgreementTemplateList);
	                    }	                    	
	                }  
	            }
	           
	        }
	        List<Agreement_Template_Field_Holder__c> agreementTempToInsert = new List<Agreement_Template_Field_Holder__c>();
	        for(String bundleName : bundlewiseMap.keySet()){
	            system.debug('------------bundleName---------->'+bundleName);
	            if(productBundleMap.get(bundleName) != null)
	            	agreementTempToInsert.add(productBundleMap.get(bundleName));
	            for(Agreement_Template_Field_Holder__c ag : bundlewiseMap.get(bundleName)){
	                system.debug('-------ag.Product----->'+ ag.Product_Name__c);
	                system.debug('-------ag.Option----->'+ ag.Option_Name__c);
	                if(ag != null)
	                	agreementTempToInsert.add(ag);
	            }
	           // i++;
	          //  system.debug('=========>'+i);
	            
	        }
	        
	        
	        delete[select Id from Agreement_Template_Field_Holder__c where Agreement__c =: agreementId];
	        //insert agreementTemplateFieldHolderList;
	        insert agreementTempToInsert;
	        //insert UniqueValueList;
    	}catch(Exception e){
    		e.getMessage();
    	}
        return new Pagereference('/apex/Apttus__SelectTemplate?id='+agreementId+'&action='+action+'&templateType='+templateType);
    }

}

 

 

 

Please help me if i am making any mistake.