D C
2023-05-26 9a0ef802a678ffc421fc1d416f7f867e89e5536a
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
trigger EventOpportunityPileUp on Event (after delete, after insert, after update) {
    List<String> oppIds = new List<String>();
    if (Trigger.isDelete) {
        List<SFDelete__c> dlist = new List<SFDelete__c>();
        for (Event e : Trigger.old) {
            dlist.add(new SFDelete__c(
                delSfId__c = e.Id,
                tableName__c = 'Event',
                dataOwnerId__c = e.OwnerId
            ));
            if (e.isScheduled__c && String.isBlank(e.EventC_ID__c)
                    && !String.isBlank(e.Related_Opportunity1_ID__c))
                oppIds.add(e.Related_Opportunity1_ID__c);
        }
        ControllerUtil.insSFDelete(dlist);
    }
 
    if (StaticParameter.EventOpportunityPileUpExeFlg) {
        if (Trigger.isDelete) {
            // 削除はすでにoppIdsに入れました
        } else {
            for (Event e : Trigger.new) {
                if (e.isScheduled__c && String.isBlank(e.EventC_ID__c)
                        && !String.isBlank(e.Related_Opportunity1_ID__c))
                    oppIds.add(e.Related_Opportunity1_ID__c);
            }
        }
    }
System.debug('oppIds.size():::::'+oppIds.size());
    if (oppIds.size() < 1) return;
    
    // 先に親をlockする
    List<Opportunity> opps = new List<Opportunity>();
    List<Opportunity> oppList = ControllerUtil.oppSelectForLock(oppIds);
    
    // 最大计划访问日
    List<Event> es = ControllerUtil.selectForOpp_Last_Visit_Scheduled_Date(oppIds);
    Map<String, DateTime> maxDateMap = new Map<String, DateTime>();
    for (Event e : es) {
        if (!maxDateMap.containsKey(e.Related_Opportunity1_ID__c)) {
            maxDateMap.put(e.Related_Opportunity1_ID__c, e.ActivityDateTime);
        }
    }
    
    for (Opportunity opp : oppList) {
        if (opp.Last_Visit_Scheduled_Date__c != maxDateMap.get(opp.Id)) {
            opps.add(opp);
            opp.Last_Visit_Scheduled_Date__c = maxDateMap.get(opp.Id);
        }
    }
    
    if (opps.size() > 0) {
        StaticParameter.EscapeNFM007Trigger = true;
        StaticParameter.EscapeOpportunityBefUpdTrigger = true;
        StaticParameter.EscapeOpportunityHpDeptUpdTrigger = true;
        StaticParameter.EscapeSyncOpportunityTrigger = true;
System.debug('EventOpportunityPileUpから、商談トリガをEscape');
System.debug('EscapeNFM007Trigger:::::' + StaticParameter.EscapeNFM007Trigger);
System.debug('EscapeOpportunityBefUpdTrigger:::::' + StaticParameter.EscapeOpportunityBefUpdTrigger);
System.debug('EscapeOpportunityHpDeptUpdTrigger:::::' + StaticParameter.EscapeOpportunityHpDeptUpdTrigger);
System.debug('EscapeSyncOpportunityTrigger:::::' + StaticParameter.EscapeSyncOpportunityTrigger);
        ControllerUtil.updOppList(opps);
    }
}