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
Varun AnnadataVarun Annadata 

Help with updating Sobject

Apex class:
public class SkipMilestone
{
     //wrapper objwrapper;
     
     //System.debug('paramValue:'+paramValue);
          public List<wrapper> lst{get;set;}
     //List<wrapper> lstwrapper=new List<wrapper>();
         // public integer rowIndex{get;set;}
          public Program_Member_MVN__c Pm;
          public SkipMilestone(ApexPages.StandardController controller){
          Pm = (Program_Member_MVN__c)controller.getRecord();
          lst = new list<wrapper>();
          //Program_Stage_MVN__c Ps=[select Is_Parent_Stage_MVN__c from Program_Stage_MVN__c  where Program_Member__c=:Pm.id];
          //Program_Member_Stage_MVN__c Pm=[select Program_Stage_Name_MVN__c,(select id,Parent_Stage_MVN__c from Program_Member_Stages__r) from Program_Member_Stage_MVN__c where Program_Member_MVN__c=:Pm.id];
          //for(Program_Member_Stage_MVN__c exclude:Program_Member_Stages__r){
          List<Program_Member_Stage_MVN__c>Pms =[select id,Name,Parent_Program_Member_Stage_MVN__c,Program_Stage_MVN__c,Status_MVN__c,Program_Stage_Name_MVN__c,Stage_Sequence_Number_MVN__c,Activity_Sequence_Number_CTS__c,Parent_Program_Stage__c from Program_Member_Stage_MVN__c  where Program_Member_MVN__c=:Pm.id and Status_MVN__c='Not Started' and Parent_Stage__c !='Parent_Stage_MVN' order by Stage_Number__c desc]; 
             for(integer i=0;i<Pms.size();i++)
            {
                  wrapper objwrapper=new wrapper();
                  objwrapper.Pmm =Pms[i];
                  //objwrapper.selected = false;
       //objwrapper.rowNo = lst.size();
                  lst.add(objwrapper);
             }
  }
          public Id paramValue{get;set;}
          public PageReference savemethid(){
          System.debug('paramValue:'+paramValue);
          //wrapper objProgramWrapper = new wrapper();
          //objProgramWrapper.Pmm.Id = this.paramValue;
         // string Value= System.currentPageReference().getParameters().get('paramValue');
          //Program_Member_Stage_MVN__c IdGet= new Program_Member_Stage_MVN__c();
          //IdGet.id=this.paramValue; 
          
          List<Program_Member_Stage_MVN__c> Ref2=new List<Program_Member_Stage_MVN__c>();
          Program_Member_Stage_MVN__c StageSequence=[select Activity_Sequence_Number_CTS__c from Program_Member_Stage_MVN__c where id =: paramValue];
          System.debug('StageSequence:'+StageSequence);
          //Program_Stage_MVN__c StageSequence1=[select 
          //Map<id,Program_Member_Stage_MVN__c>ParentStage=new Map<id,Program_Member_Stage_MVN__c>([select Parent_Program_Member_Stage_MVN__c from Program_Member_Stage_MVN__c where id=:paramValue]);
          List<Program_Member_Stage_MVN__c> ParentStage=new List<Program_Member_Stage_MVN__c>([select Parent_Program_Member_Stage_MVN__c from Program_Member_Stage_MVN__c where id=:paramValue]);
          Map<string,Program_Member_Stage_MVN__c>ProgramMemberIds = new Map<string,Program_Member_Stage_MVN__c>();
          for(Program_Member_Stage_MVN__c a: ParentStage)
          ProgramMemberIds.put(a.Parent_Program_Member_Stage_MVN__c ,a);
          Set<string> ProgramMemberIds1=ProgramMemberIds.keyset();
           system.debug('ProgramMemberIds1:'+ProgramMemberIds1);
           
            for(Program_Member_Stage_MVN__c ChildStages:[select Name,Stage_Number__c,(select id,name,Status_MVN__c,Stage_Sequence_Number_MVN__c,Program_Stage_MVN__c,Activity_Sequence_Number_CTS__c from Program_Member_Stages__r) from Program_Member_Stage_MVN__c where id=:ProgramMemberIds1]){
          List<Program_Member_Stage_MVN__c>ProgramStage=new List<Program_Member_Stage_MVN__c>([select Program_Stage_MVN__c from Program_Member_Stage_MVN__c where id=:paramValue]);
          Map<string,Program_Member_Stage_MVN__c>ProgramIds = new Map<string,Program_Member_Stage_MVN__c>();
          for(Program_Member_Stage_MVN__c b: ProgramStage)
          ProgramIds.put(b.Program_Stage_MVN__c ,b);
          Set<String> ProgramIds1 = ProgramIds.keySet();
          system.debug('ProgramIds1 :'+ProgramIds1 );
          
          List<Program_Stage_MVN__c> ParentStage1 =new List<Program_Stage_MVN__c>([select Parent_Stage_MVN__c from Program_Stage_MVN__c where id=:ProgramIds1]); 
          Map<string,Program_Stage_MVN__c>ParentIds= new Map<string,Program_Stage_MVN__c>();
          for(Program_Stage_MVN__c c: ParentStage1 )
          ParentIds.put(c.Parent_Stage_MVN__c ,c);
          Set<string>ParentIds1=ParentIds.keySet();
          system.debug('ParentIds1:'+ParentIds1);
          
          for(Program_Stage_MVN__c childStages1:[select Name,(select id,Name,Stage_Sequence_Number_MVN__c,Activity_Sequence_Number_CTS__c from Child_Stages_MVN__r) from Program_Stage_MVN__c where id=:ParentIds1]){
          system.debug('ChildStages:'+ChildStages.Program_Member_Stages__r);
          system.debug('childStages1:'+childStages1);
          for(Program_Member_Stage_MVN__c ref : ChildStages.Program_Member_Stages__r){
          for(Program_Stage_MVN__c ref1 : childStages1.Child_Stages_MVN__r){
          List<Program_Member_Stage_MVN__c> Pstages=[select id,Stage_Number__c,Parent_Stage__c,Status_MVN__c from Program_Member_Stage_MVN__c where Program_Member_MVN__c=:Pm.id and Parent_Stage__c='Parent_Stage_MVN'];
          //for(Program_Member_Stage_MVN__c re1 : Pstages){
          for(Program_Member_Stage_MVN__c re1 : Pstages){
          system.debug('Pstages:'+Pstages);
          if(ref.Program_Stage_MVN__c == ref1.id && ref.Status_MVN__c!='Started' && ref.Activity_Sequence_Number_CTS__c==StageSequence.Activity_Sequence_Number_CTS__c){
          ref.Status_MVN__c='Started';
          }
          if(ref.Program_Stage_MVN__c == ref1.id && ref.Status_MVN__c!='Started' && ref.Activity_Sequence_Number_CTS__c<StageSequence.Activity_Sequence_Number_CTS__c) {
          ref.Status_MVN__c='Completed';
          }
          Ref2.add(ref);
          if(re1.Stage_Number__c<ChildStages.Stage_Number__c){
          re1.Status_MVN__c='Completed';
          }
          Ref2.add(re1);
          }
          }
          }
          }
          }
          set<Program_Member_Stage_MVN__c> dedupSet = new set<Program_Member_Stage_MVN__c>();
          dedupSet.addAll(Ref2);
          List<Program_Member_Stage_MVN__c> dedupList = new List<Program_Member_Stage_MVN__c>();
          dedupList.addAll(dedupSet);
          Update dedupList;
          //Update Ref2;
          //System.debug('Ref2:'+Ref2);
          pagereference ref3 = new pagereference('/apex/Final_Message');
          ref3.setredirect(true);
          return ref3;
     //integer i;
        // for(i=0;i<lst.size();i++){
        // if(lst[i].selected == true){
        // lst[i].Pmm.Status_MVN__c='Started';
       //  }
         //update lst[i].Pmm; 
        // 
        //  update lst[i].Pmm; 
        /* pagereference ref = new pagereference('/apex/Milestone_skip');
         ref.setredirect(true);
         return ref;*/
        }        

         public class wrapper{
         public Program_Member_Stage_MVN__c Pmm{get;set;}
         public string paramValue{get;set;}
        // public integer rowNo {get;set;}
    //public boolean isEdit{get;set;}
        // public Boolean selected {get;set;}
 }
}

I need help at this part:
Ref2.add(ref);
          if(re1.Stage_Number__c<ChildStages.Stage_Number__c){
          re1.Status_MVN__c='Completed';
          }
          Ref2.add(re1);
          }
          }
          }

is it the correct way of adding different lists into one list and updating sobject?
Amol Salve 13Amol Salve 13
Hello Varun,

    This is example to update sObject...

               list<sObject> sObjectList = new List<sObject>();
               Account accObj = [Select id, (Select Id, LastName from Contacts) From Account Where Name ='Account2' limit 1];
                for(Contact conObj : accObj.Contacts){
    
                         conObj.LastName = 'new' + conObj.LastName;
                         sObjectList.add(conObj);
                  }
                Account accObj = [Select id, name From Account Where Name ='Account1' limit 1];
                accObj.name = 'newAccount2';
                 sObjectList.add(accObj);
                  update sObjectList;

In my code when i want conatct record from relationship query I used formate 
Account accObj = [Select id, (Select Id, LastName from Contacts) From Account Where Name ='Account2' limit 1];
 for(Contact conObj : accObj.Contacts){
             
}

you used same logic just made one small mistake in below for loop, Change this for loop 

for(Program_Stage_MVN__c ref1 : childStages1.Child_Stages_MVN__r){

}

to

for(Child_Stages_MVN__c ref1 : childStages1.Child_Stages_MVN__r){

}

Thanks,
Amol Salve
Salesforce Developer