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;
|
}
|
}
|
// ----------------------------------------------------------------------
|
// ここまで、承認プロセス用に、经理、总监を更新する
|
// ----------------------------------------------------------------------
|
}
|