高章伟
2022-02-18 8b5f4c6c281cfa548f92de52c8021e37aa81901e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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;
        }
    }
    // ----------------------------------------------------------------------
    // ここまで、承認プロセス用に、经理、总监を更新する
    // ----------------------------------------------------------------------
}