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); 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
} 
 |