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