| trigger ReportTrigger on Report__c (before insert, before update) { | 
|     // ---------------------------------------------------------------------- | 
|     // ここより、承認プロセス用に、经理、部长、总监を更新する | 
|     // ---------------------------------------------------------------------- | 
|     if (Trigger.isBefore) { | 
|         // 申請中かどうかのチェック | 
|         List<Id> copyUserIds = new List<Id>();                      // 件数は Trigger.New と同じ | 
|         List<Report__c> newList = new List<Report__c>();    // 件数は Trigger.New と同じ | 
|         Report__c old = null; | 
|         for (Report__c local : Trigger.New) { | 
|             if ( Trigger.isUpdate) { | 
|                 old = Trigger.oldMap.get(local.Id); | 
|             } | 
|             // 申請中になったとき、ログインユーザーからプレセス用の上司を設定 | 
|             if (Trigger.isInsert | 
|                     || (Trigger.isUpdate && old.Status__c != local.Status__c && local.Status__c == '申请中') | 
|                     || (Trigger.isUpdate && old.OwnerId != local.OwnerId) | 
|             ) { | 
|                 newList.add(local); | 
|                 if (Trigger.isInsert || (Trigger.isUpdate && old.OwnerId != local.OwnerId)) { | 
|                     copyUserIds.add(local.OwnerId); | 
|                 } else { | 
|                     copyUserIds.add(UserInfo.getUserId()); | 
|                 } | 
|             } | 
|         } | 
|         Map<Id, User> copyUserMap = new Map<Id, User>([ | 
|             SELECT Id, Name, SalesManager__c, BuchangApprovalManagerSales__c, JingliApprovalManager__c, BuchangApprovalManager__c, ZongjianApprovalManager__c FROM User WHERE Id IN :copyUserIds | 
|         ]); | 
|         for (Integer i = 0; i < copyUserIds.size(); i++) { | 
|             Report__c local = newList[i]; | 
|             User loginUser = copyUserMap.get(copyUserIds[i]); | 
|             local.SalesManager__c = loginUser.SalesManager__c == null ? loginUser.Id : loginUser.SalesManager__c; | 
|             local.BuchangApprovalManagerSales__c = loginUser.BuchangApprovalManagerSales__c == null ? loginUser.Id : loginUser.BuchangApprovalManagerSales__c; | 
|             local.JingliApprovalManager__c = loginUser.JingliApprovalManager__c == null ? loginUser.Id : loginUser.JingliApprovalManager__c; | 
|             local.BuchangApprovalManager__c = loginUser.BuchangApprovalManager__c == null ? loginUser.Id : loginUser.BuchangApprovalManager__c; | 
|             local.ZongjianApprovalManager__c = loginUser.ZongjianApprovalManager__c == null ? loginUser.Id : loginUser.ZongjianApprovalManager__c; | 
|         } | 
|     } | 
|     // ---------------------------------------------------------------------- | 
|     // ここまで、承認プロセス用に、经理、总监を更新する | 
|     // ---------------------------------------------------------------------- | 
| } |