カスタム一括更新ボタン処理

### リストビューにカスタムボタンをクリックして、選択したレコードを一括処理を実施する。

１．処理成功した場合、正常メッセージ出す・
２．レコードを選択されてなかった場合、レコードを選択してくださいというメッセージ出す。
３．権限ない人がボタンをクリックした場合、権限がない、管理者に問い合わせくださいというメッセージを出す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2123566/3a1ad489-e570-2963-b1ea-9a78e72bf001.png)

### -------開発-------：
##### 1.カスタムボタンの設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2123566/bb266db3-22fd-9648-60f4-a060a124d9ee.png)

##### 2．ボタン押下後、メッセージを出す画面の開発
```
<!--本部長承認（代理入力）ボタンアクション画面 -->
<apex:page standardController="ContractRenewReport_M__c" recordSetVar="objs" extensions="Y15_BulkApproveCtrl" action="{!bulkApprove}" tabStyle="ContractRenewReport_M__c" title="本部長承認（代理入力）">
    <apex:form id="form">
        <apex:pageBlock id="block">
            <apex:pageBlockButtons id="buttons">
                <apex:commandButton value="戻る" title="戻る" action="{!list}"/>
            </apex:pageBlockButtons>
          <apex:pageBlockSection title="情報" showHeader="false" columns="1">
            <apex:pageMessages id="msg"/>
          </apex:pageBlockSection>
        </apex:pageBlock>
    </apex:form>
</apex:page>
```

##### 3．apexの開発
```

public class Y15_BulkApproveCtrl {
    
    
    public User loginUser;     // ログインユーザー情報
    public Set<ID> Ids;        //選択したレコードIDセット
    
    public List<ContractRenewReport_M__c> contractRenewReportMList; //契約更新報告書
    public List<ContractRenewReport_3__c> contractRenewReport3List; //【3年前】契約更新報告書
    public List<ContractRenewReport_2__c> contractRenewReport2List; //【2年前】契約更新報告書
    public List<ContractRenewReport_1__c> contractRenewReport1List; //【1年前】契約更新報告書
    public List<ContractRenewReport_H__c> contractRenewReportHList; //【６ヶ月前】契約更新報告書
    
    public Boolean isOPSStaff = false;          //OPS部担当フラグ
    public Boolean isOPSMgr = false;            //OPS部Mgrフラグ
    public Boolean isOPDeputyOfficer = false;   //OP副本部長フラグ
    public Boolean isOPOfficer = false;         //OP本部長フラグ
    public Boolean hasError = false;            //本部長承認（代理入力）時エラーフラグ
    
    public Boolean isDM = false;                //DMフラグ テスト用
    
    /**
     * コンストラクタ
     */
    public Y15_BulkApproveCtrl(ApexPages.StandardSetController stdSetController) {
		
        try{
            contractRenewReportMList = new List<ContractRenewReport_M__c>();
            contractRenewReport3List = new List<ContractRenewReport_3__c>();
            contractRenewReport2List = new List<ContractRenewReport_2__c>();
            contractRenewReport1List = new List<ContractRenewReport_1__c>();
            contractRenewReportHList = new List<ContractRenewReport_H__c>();
            
            //選択したレコードIDセットを取得
            Ids = new Map<ID, ContractRenewReport_M__c>((List<ContractRenewReport_M__c>)stdSetController.getSelected()).keySet();
            
            //ログインユーザ情報取得
			this.getUserInfo();
            
            //役割フラグ設定
            this.setDisplayButtonFlag();
            
            //契約更新報告書リストを取得
            this.getContractRenewReportM();
            //【3年前】契約更新報告書リストを取得
            this.getContractRenewReport3();
            //【2年前】契約更新報告書リストを取得
            this.getContractRenewReport2();
            //【1年前】契約更新報告書リストを取得
            this.getContractRenewReport1();
            //【６ヶ月前】契約更新報告書リストを取得
            this.getContractRenewReporth();


        }catch(exception e){
            //エラーメッセージを出力する
            ApexPages.addMessage(
                new ApexPages.Message(ApexPages.Severity.FATAL,CommonConst.MESSAGE_ERROR_UNEXPECTE));
            ApexPages.addMessages(e);
        }
        
    }
    
    
    
    /**
    * ログインユーザ情報取得
    **/
    public void getUserInfo(){
        try{
            loginUser = [select Id, IsActive, 
                         DepartmentCode__c, 
                         JobCategoryCode__c,
                         OPDeputyOfficer__c,
                         OPOfficer__c
                         from User 
                         where Id=:UserInfo.getUserId()];
        }catch(Exception e) {
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.FATAL, e.getMessage(), e.getStackTraceString()));
        }

        
    }
    /**
    * 契約更新報告書情報取得
    **/
    public void getContractRenewReportM(){
        contractRenewReportMList = [Select Id,
                                    Name,
                                    Division__c
                                    From ContractRenewReport_M__c
                                    where Id in :ids];
        
        System.debug('contractRenewReportMList=>:'+contractRenewReportMList);
        
    }    
    
    /**
    * 【3年前】契約更新報告書情報取得
    **/
    public void getContractRenewReport3(){
        contractRenewReport3List = [Select Id,
                                    Name,
                                    OPSConfirmDate_3__c,
                                    OPSConfirmer_3__c,
                                    OPSMgrConfirmDate_3__c,
                                    OPSMgrConfirmer_3__c,
                                    OPOfficeApprovalDate_3__c,
                                    OPOfficeApprover_3__c,
                                    OPDeputyOfficerApprovalDate_3__c,
                                    OPDeputyOfficerApprover_3__c,
                                    ApprovalStatus__c
                                    From ContractRenewReport_3__c
                                    where ContractRenewReport_M__c in :ids AND
                                    ContractRenewReport_M__r.Division__c = '３年前'];
        
        System.debug('contractRenewReport3List=>:'+contractRenewReport3List);
        
    } 
    
    /**
    * 【2年前】契約更新報告書情報取得
    **/
    public void getContractRenewReport2(){
        contractRenewReport2List = [Select Id,
                                    Name,
                                    OPSConfirmDate_2__c,
                                    OPSConfirmer_2__c,
                                    OPSMgrConfirmDate_2__c,
                                    OPSMgrConfirmer_2__c,
                                    OPOfficeApprovalDate_2__c,
                                    OPOfficeApprover_2__c,
                                    OPDeputyOfficerApprovalDate_2__c,
                                    OPDeputyOfficerApprover_2__c,
                                    ApprovalStatus__c
                                    From ContractRenewReport_2__c
                                    where ContractRenewReport_M__c in :ids AND
                                    ContractRenewReport_M__r.Division__c = '２年前'];
        
        System.debug('contractRenewReport2List=>:'+contractRenewReport2List);
        
    } 
    
    /**
    * 【１年前】契約更新報告書情報取得
    **/
    public void getContractRenewReport1(){
        contractRenewReport1List = [Select Id,
                                    Name,
                                    OPSConfirmDate_1__c,
                                    OPSConfirmer_1__c,
                                    OPSMgrConfirmDate_1__c,
                                    OPSMgrConfirmer_1__c,
                                    OPOfficeApprovalDate_1__c,
                                    OPOfficeApprover_1__c,
                                    OPDeputyOfficerApprovalDate_1__c,
                                    OPDeputyOfficerApprover_1__c,
                                    ApprovalStatus__c
                                    From ContractRenewReport_1__c
                                    where ContractRenewReport_M__c in :ids AND
                                    ContractRenewReport_M__r.Division__c = '１年前'];
        
        System.debug('contractRenewReport1List=>:'+contractRenewReport1List);
        
    } 
    
    
    /**
    * 【６ヶ月前】契約更新報告書情報取得
    **/
    public void getContractRenewReportH(){
        contractRenewReportHList = [Select Id,
                                    Name,
                                    OPSConfirmDate_H__c,
                                    OPSConfirmer_H__c,
                                    OPSMgrConfirmDate_H__c,
                                    OPSMgrConfirmer_H__c,
                                    OPOfficeApprovalDate_H__c,
                                    OPOfficeApprover_H__c,
                                    OPDeputyOfficerApprovalDate_H__c,
                                    OPDeputyOfficerApprover_H__c,
                                    ApprovalStatus__c
                                    From ContractRenewReport_H__c
                                    where ContractRenewReport_M__c in :ids AND
                                    ContractRenewReport_M__r.Division__c = '６ヶ月前'];
        
        System.debug('contractRenewReportHList=>:'+contractRenewReportHList);
    } 
    
    /**
     * 役割フラグ設定処理
     **/
    @TestVisible
    private void setDisplayButtonFlag(){
        
        
        /* ★★★★★システム管理者の場合★★★★★ */
        if(UserInfo.getProfileId().contains(system.label.ProfileSystemAdminId)){
            //this.isDM = true;
            //this.isZM = true;
            
            //0309テスト用
            
            //2022/03/08 追加 START
            //this.isAccountZOMgr = true;
            //this.isPublicRelationMgr = true;
            //this.isOPSStaff = true;
            //this.isOPSMgr = true;
            //this.isOPDeputyOfficer = true;
            //this.isOPOfficer = true;
            //this.isLegalStaff = true;
            //this.isLegalMgr = true;
            //this.isLegalGM = true;
            //this.isPublicRelationGM = true;
            //this.canApprove = true;
            //this.canRemand = true;
            //this.canConfirm = true;
            //2022/03/08 追加 END
        }
        /* ★★★★★★★★★★★★★★★★★★★★★★★★★ */
        
        
        
        if(loginUser.DepartmentCode__c == Y15_Const.DEP_CODE_949000 && loginUser.JobCategoryCode__c == Y15_Const.JOB_STAFF){
            //OPS部担当フラグを設定する
            this.isOPSStaff = true;
        }else if(loginUser.DepartmentCode__c == Y15_Const.DEP_CODE_949000 && loginUser.JobCategoryCode__c == Y15_Const.JOB_MGR){
            //OPS部Mgrフラグを設定する
            this.isOPSMgr = true;
        }else if(loginUser.OPDeputyOfficer__c){
            //OPS部Mgrフラグを設定する
            this.isOPDeputyOfficer = true;
        }else if(loginUser.OPOfficer__c){
            //OPS部Mgrフラグを設定する
            this.isOPOfficer = true;
        }
        
        //
        if(!isOPSStaff && !isOPSMgr && !isOPDeputyOfficer && !isOPOfficer){
            //エラーフラグを設定
            this.hasError = true;
        }
        
    }
    
    
    /**
    * 本部長承認（代理入力）処理
    **/
    public PageReference bulkApprove(){
        
        try{
            //本部長承認（代理入力）時エラーがtrueの場合、
            if(this.hasError){
                //その他のユーザの場合、エラーメッセージを表示
                ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '権限が無い為、本部長承認（代理入力）できません。'));
                return null;
            }
            
            //【3年前】契約更新報告書情報更新リスト
            List<ContractRenewReport_3__c> uppdateContractRenewReport3List = new List<ContractRenewReport_3__c>();
            
            if(contractRenewReport3List.size()>0){
                for(ContractRenewReport_3__c contractRenewReport_3 :contractRenewReport3List){
					System.debug('contractRenewReport_3.ApprovalStatus__c=>:'+contractRenewReport_3.ApprovalStatus__c);
                    //「全体承認状況」が「OPS部Mgr確認済」の場合
                    if(contractRenewReport_3.ApprovalStatus__c == 'OPS部Mgr確認済'){
                        //ログインユーザがOPS部担当 or ログインユーザがOPS部Mgrの場合
                        if(isOPSStaff || isOPSMgr){
                            uppdateContractRenewReport3List.add(new ContractRenewReport_3__c(id = contractRenewReport_3.Id,
                                                                                             OPDeputyOfficerApprovalDate_3__c = system.today(),               //【3年前】OP副本部長承認日
                                                                                             OPDeputyOfficerApprover_3__c = UserInfo.getName()+'(代理承認)',  //【3年前】OP副本部長承認者
                                                                                             OPDeputyOfficerDivision_3__c = '確認',                           //【3年前】OP副本部長区分
                                                                                             SurrogateOPSFlag__c = true,                                      // 代理OPSフラグ
                                                                                             SurrogateFlag__c = true,                                         // 代理フラグ
                                                                                             ApprovalStatus__c = '副本部長承認済'));                          // 全体承認状況
                        }
                        //ログインユーザがOP副本部長の場合
                        if(isOPDeputyOfficer){
                            uppdateContractRenewReport3List.add(new ContractRenewReport_3__c(id = contractRenewReport_3.Id,
                                                                                             OPDeputyOfficerApprovalDate_3__c = system.today(),               //【3年前】OP副本部長承認日
                                                                                             OPDeputyOfficerApprover_3__c = UserInfo.getName(),               //【3年前】OP副本部長承認者
                                                                                             OPDeputyOfficerDivision_3__c = '承認',                           //【3年前】OP副本部長区分
                                                                                             ApprovalStatus__c = '副本部長承認済'));                          // 全体承認状況
                        }
                        
                    }
                    //「全体承認状況」が「副本部長承認済」の場合
                    if(contractRenewReport_3.ApprovalStatus__c == '副本部長承認済'){
                        //ログインユーザがOPS部担当 or ログインユーザがOPS部Mgrの場合
                        if(isOPSStaff || isOPSMgr){
                            uppdateContractRenewReport3List.add(new ContractRenewReport_3__c(id = contractRenewReport_3.Id,
                                                                                             OPOfficeApprovalDate_3__c = system.today(),                      //【3年前】OP本部長承認日
                                                                                             OPOfficeApprover_3__c = UserInfo.getName()+'(代理承認)',         //【3年前】OP本部長承認者
                                                                                             OPOfficerDivision_3__c = '確認',                                 //【3年前】OP本部長区分
                                                                                             SurrogateOPSFlag__c = true,                                      // 代理OPSフラグ
                                                                                             SurrogateFlag__c = true,                                         // 代理フラグ
                                                                                             ApprovalStatus__c = '本部長承認済'));                            // 全体承認状況
                        }
                        //ログインユーザがOP本部長の場合
                        if(isOPOfficer){
                            uppdateContractRenewReport3List.add(new ContractRenewReport_3__c(id = contractRenewReport_3.Id,
                                                                                             OPOfficeApprovalDate_3__c = system.today(),                      //【3年前】OP本部長承認日
                                                                                             OPOfficeApprover_3__c = UserInfo.getName(),                      //【3年前】OP本部長承認者
                                                                                             OPOfficerDivision_3__c = '承認',                                 //【3年前】OP本部長区分
                                                                                             ApprovalStatus__c = '本部長承認済'));                            // 全体承認状況
                        }
                    }
                }//for end
                
            }   
            //【2年前】契約更新報告書情報更新リスト
            List<ContractRenewReport_2__c> uppdateContractRenewReport2List = new List<ContractRenewReport_2__c>();
            
            if(contractRenewReport2List.size()>0){
                for(ContractRenewReport_2__c contractRenewReport_2 :contractRenewReport2List){

                    //「全体承認状況」が「OPS部Mgr確認済」の場合
                    if(contractRenewReport_2.ApprovalStatus__c == 'OPS部Mgr確認済'){
                        //ログインユーザがOPS部担当 or ログインユーザがOPS部Mgrの場合
                        if(isOPSStaff || isOPSMgr){
                            uppdateContractRenewReport2List.add(new ContractRenewReport_2__c(id = contractRenewReport_2.Id,
                                                                                             OPDeputyOfficerApprovalDate_2__c = system.today(),               //【2年前】OP副本部長承認日
                                                                                             OPDeputyOfficerApprover_2__c = UserInfo.getName()+'(代理承認)',  //【2年前】OP副本部長承認者
                                                                                             OPDeputyOfficerDivision_2__c = '確認',                           //【2年前】OP副本部長区分
                                                                                             SurrogateOPSFlag__c = true,                                      // 代理OPSフラグ
                                                                                             SurrogateFlag__c = true,                                         // 代理フラグ
                                                                                             ApprovalStatus__c = '副本部長承認済'));                          // 全体承認状況
                        }
                        //ログインユーザがOP副本部長の場合
                        if(isOPDeputyOfficer){
                            uppdateContractRenewReport2List.add(new ContractRenewReport_2__c(id = contractRenewReport_2.Id,
                                                                                             OPDeputyOfficerApprovalDate_2__c = system.today(),               //【2年前】OP副本部長承認日
                                                                                             OPDeputyOfficerApprover_2__c = UserInfo.getName(),               //【2年前】OP副本部長承認者
                                                                                             OPDeputyOfficerDivision_2__c = '承認',                           //【2年前】OP副本部長区分
                                                                                             ApprovalStatus__c = '副本部長承認済'));                          // 全体承認状況
                        }
                        
                    }
                    //「全体承認状況」が「副本部長承認済」の場合
                    if(contractRenewReport_2.ApprovalStatus__c == '副本部長承認済'){
                        //ログインユーザがOPS部担当 or ログインユーザがOPS部Mgrの場合
                        if(isOPSStaff || isOPSMgr){
                            uppdateContractRenewReport2List.add(new ContractRenewReport_2__c(id = contractRenewReport_2.Id,
                                                                                             OPOfficeApprovalDate_2__c = system.today(),                      //【2年前】OP本部長承認日
                                                                                             OPOfficeApprover_2__c = UserInfo.getName()+'(代理承認)',         //【2年前】OP本部長承認者
                                                                                             OPOfficerDivision_2__c = '確認',                                 //【2年前】OP本部長区分
                                                                                             SurrogateOPSFlag__c = true,                                      // 代理OPSフラグ
                                                                                             SurrogateFlag__c = true,                                         // 代理フラグ
                                                                                             ApprovalStatus__c = '本部長承認済'));                            // 全体承認状況
                        }
                        //ログインユーザがOP本部長の場合
                        if(isOPOfficer){
                            uppdateContractRenewReport2List.add(new ContractRenewReport_2__c(id = contractRenewReport_2.Id,
                                                                                             OPOfficeApprovalDate_2__c = system.today(),                      //【2年前】OP本部長承認日
                                                                                             OPOfficeApprover_2__c = UserInfo.getName(),                      //【2年前】OP本部長承認者
                                                                                             OPOfficerDivision_2__c = '承認',                                 //【2年前】OP本部長区分
                                                                                             ApprovalStatus__c = '本部長承認済'));                            // 全体承認状況
                        }
                    }
                }//for end            
            }
            //【1年前】契約更新報告書情報更新リスト
            List<ContractRenewReport_1__c> uppdateContractRenewReport1List = new List<ContractRenewReport_1__c>();
            
            if(contractRenewReport1List.size()>0){
                for(ContractRenewReport_1__c contractRenewReport_1 :contractRenewReport1List){

                    //「全体承認状況」が「OPS部Mgr確認済」の場合
                    if(contractRenewReport_1.ApprovalStatus__c == 'OPS部Mgr確認済'){
                        //ログインユーザがOPS部担当 or ログインユーザがOPS部Mgrの場合
                        if(isOPSStaff || isOPSMgr){
                            uppdateContractRenewReport1List.add(new ContractRenewReport_1__c(id = contractRenewReport_1.Id,
                                                                                             OPDeputyOfficerApprovalDate_1__c = system.today(),               //【1年前】OP副本部長承認日
                                                                                             OPDeputyOfficerApprover_1__c = UserInfo.getName()+'(代理承認)',  //【1年前】OP副本部長承認者
                                                                                             OPDeputyOfficerDivision_1__c = '確認',                           //【1年前】OP副本部長区分
                                                                                             SurrogateOPSFlag__c = true,                                      // 代理OPSフラグ
                                                                                             SurrogateFlag__c = true,                                         // 代理フラグ
                                                                                             ApprovalStatus__c = '副本部長承認済'));                          // 全体承認状況
                        }
                        //ログインユーザがOP副本部長の場合
                        if(isOPDeputyOfficer){
                            uppdateContractRenewReport1List.add(new ContractRenewReport_1__c(id = contractRenewReport_1.Id,
                                                                                             OPDeputyOfficerApprovalDate_1__c = system.today(),               //【1年前】OP副本部長承認日
                                                                                             OPDeputyOfficerApprover_1__c = UserInfo.getName(),               //【1年前】OP副本部長承認者
                                                                                             OPDeputyOfficerDivision_1__c = '承認',                           //【1年前】OP副本部長区分
                                                                                             ApprovalStatus__c = '副本部長承認済'));                          // 全体承認状況
                        }
                        
                    }
                    //「全体承認状況」が「副本部長承認済」の場合
                    if(contractRenewReport_1.ApprovalStatus__c == '副本部長承認済'){
                        //ログインユーザがOPS部担当 or ログインユーザがOPS部Mgrの場合
                        if(isOPSStaff || isOPSMgr){
                            uppdateContractRenewReport1List.add(new ContractRenewReport_1__c(id = contractRenewReport_1.Id,
                                                                                             OPOfficeApprovalDate_1__c = system.today(),                      //【1年前】OP本部長承認日
                                                                                             OPOfficeApprover_1__c = UserInfo.getName()+'(代理承認)',         //【1年前】OP本部長承認者
                                                                                             OPOfficerDivision_1__c = '確認',                                 //【1年前】OP本部長区分
                                                                                             SurrogateOPSFlag__c = true,                                      // 代理OPSフラグ
                                                                                             SurrogateFlag__c = true,                                         // 代理フラグ
                                                                                             ApprovalStatus__c = '本部長承認済'));                            // 全体承認状況
                        }
                        //ログインユーザがOP本部長の場合
                        if(isOPOfficer){
                            uppdateContractRenewReport1List.add(new ContractRenewReport_1__c(id = contractRenewReport_1.Id,
                                                                                             OPOfficeApprovalDate_1__c = system.today(),                      //【1年前】OP本部長承認日
                                                                                             OPOfficeApprover_1__c = UserInfo.getName(),                      //【1年前】OP本部長承認者
                                                                                             OPOfficerDivision_1__c = '承認',                                 //【1年前】OP本部長区分
                                                                                             ApprovalStatus__c = '本部長承認済'));                            // 全体承認状況
                        }
                    }
                }//for end            
            }
            
            //【６ヶ月前】契約更新報告書情報更新リスト
            List<ContractRenewReport_H__c> uppdateContractRenewReportHList = new List<ContractRenewReport_H__c>();
            
            if(contractRenewReportHList.size()>0){
                for(ContractRenewReport_H__c contractRenewReport_H :contractRenewReportHList){

                    //「全体承認状況」が「OPS部Mgr確認済」の場合
                    if(contractRenewReport_H.ApprovalStatus__c == 'OPS部Mgr確認済'){
                        //ログインユーザがOPS部担当 or ログインユーザがOPS部Mgrの場合
                        if(isOPSStaff || isOPSMgr){
                            uppdateContractRenewReportHList.add(new ContractRenewReport_H__c(id = contractRenewReport_H.Id,
                                                                                             OPDeputyOfficerApprovalDate_H__c = system.today(),               //【6ケ月前】OP副本部長承認日
                                                                                             OPDeputyOfficerApprover_H__c = UserInfo.getName()+'(代理承認)',  //【6ケ月前】OP副本部長承認者
                                                                                             OPDeputyOfficerDivision_H__c = '確認',                           //【6ケ月前】OP副本部長区分
                                                                                             SurrogateOPSFlag__c = true,                                      // 代理OPSフラグ
                                                                                             SurrogateFlag__c = true,                                         // 代理フラグ
                                                                                             ApprovalStatus__c = '副本部長承認済'));                          // 全体承認状況
                        }
                        //ログインユーザがOP副本部長の場合
                        if(isOPDeputyOfficer){
                            uppdateContractRenewReportHList.add(new ContractRenewReport_H__c(id = contractRenewReport_H.Id,
                                                                                             OPDeputyOfficerApprovalDate_H__c = system.today(),               //【6ケ月前】OP副本部長承認日
                                                                                             OPDeputyOfficerApprover_H__c = UserInfo.getName(),               //【6ケ月前】OP副本部長承認者
                                                                                             OPDeputyOfficerDivision_H__c = '承認',                           //【6ケ月前】OP副本部長区分
                                                                                             ApprovalStatus__c = '副本部長承認済'));                          // 全体承認状況
                        }
                        
                    }
                    //「全体承認状況」が「副本部長承認済」の場合
                    if(contractRenewReport_H.ApprovalStatus__c == '副本部長承認済'){
                        //ログインユーザがOPS部担当 or ログインユーザがOPS部Mgrの場合
                        if(isOPSStaff || isOPSMgr){
                            uppdateContractRenewReportHList.add(new ContractRenewReport_H__c(id = contractRenewReport_H.Id,
                                                                                             OPOfficeApprovalDate_H__c = system.today(),                      //【6ケ月前】OP本部長承認日
                                                                                             OPOfficeApprover_H__c = UserInfo.getName()+'(代理承認)',         //【6ケ月前】OP本部長承認者
                                                                                             OPOfficerDivision_H__c = '確認',                                 //【6ケ月前】OP本部長区分
                                                                                             SurrogateOPSFlag__c = true,                                      // 代理OPSフラグ
                                                                                             SurrogateFlag__c = true,                                         // 代理フラグ
                                                                                             ApprovalStatus__c = '本部長承認済'));                            // 全体承認状況
                        }
                        //ログインユーザがOP本部長の場合
                        if(isOPOfficer){
                            uppdateContractRenewReportHList.add(new ContractRenewReport_H__c(id = contractRenewReport_H.Id,
                                                                                             OPOfficeApprovalDate_H__c = system.today(),                      //【6ケ月前】OP本部長承認日
                                                                                             OPOfficeApprover_H__c = UserInfo.getName(),                      //【6ケ月前】OP本部長承認者
                                                                                             OPOfficerDivision_H__c = '承認',                                 //【6ケ月前】OP本部長区分
                                                                                             ApprovalStatus__c = '本部長承認済'));                            // 全体承認状況
                        }
                    }
                }//for end            
                
            }
            //【3年前】契約更新報告書更新を行う
            if(uppdateContractRenewReport3List.size()>0){
                update uppdateContractRenewReport3List;
            }
            //【2年前】契約更新報告書更新を行う
            if(uppdateContractRenewReport2List.size()>0){
                update uppdateContractRenewReport2List;
            }
            //【1年前】契約更新報告書更新を行う
            if(uppdateContractRenewReport1List.size()>0){
                update uppdateContractRenewReport1List;
            }
            //【６ヶ月前】契約更新報告書更新を行う
            if(uppdateContractRenewReportHList.size()>0){
                update uppdateContractRenewReportHList;
            }
            
            if(uppdateContractRenewReport3List.size()>0 || 
               uppdateContractRenewReport2List.size()>0 || 
               uppdateContractRenewReport1List.size()>0 || 
               uppdateContractRenewReportHList.size()>0 ){
                   ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.CONFIRM, ' 本部長承認（代理入力）が正常に行われました。'));
               }else{
                   //更新リストにレコードが存在しない場合
                   ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '対象データを選択してください。'));
               }
        }catch(Exception e) {
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.FATAL, e.getMessage(), e.getStackTraceString()));
            return null;
        }
        return null;
    }// method end
    

}

```