trigger XinEventServicePileUp on Event_Service__c (after delete, after update) {
|
List<String> serviceIds = new List<String>();
|
|
if (Trigger.isDelete) {
|
for (Event_Service__c es : Trigger.old) {
|
serviceIds.add(es.Service__c); // 必須のはず
|
}
|
} else {
|
for (Event_Service__c es : Trigger.new) {
|
serviceIds.add(es.Service__c); // 必須のはず
|
}
|
}
|
|
// 先に親をlockする
|
List<Maintenance_Contract__c> mcs = ControllerUtil.mcSelectForLock(serviceIds);
|
|
// 最大フォロー日
|
AggregateResult[] ar = ControllerUtil.selectForService_Last_Follow_Up_Date(serviceIds);
|
Map<String, Date> maxDateMap = new Map<String, Date>();
|
for (Integer i = 0; i < ar.size(); i++) {
|
maxDateMap.put(String.valueOf(ar[i].get('Service__c')), Date.valueOf(ar[i].get('maxD')));
|
}
|
List<Maintenance_Contract__c> upds = new List<Maintenance_Contract__c>();
|
for (Maintenance_Contract__c mc : mcs) {
|
if (mc.Xin_Last_Follow_Day__c != maxDateMap.get(mc.Id)) {
|
mc.Xin_Last_Follow_Day__c = maxDateMap.get(mc.Id);
|
upds.add(mc);
|
}
|
}
|
if (upds.size() > 0) {
|
StaticParameter.EscapeMaintenanceContractAfterUpdateTrigger = true;
|
System.debug('XinEventServicePileUpから、サビコントリガをEscape');
|
System.debug('EscapeMaintenanceContractAfterUpdateTrigger:::::' + StaticParameter.EscapeMaintenanceContractAfterUpdateTrigger);
|
ControllerUtil.updMcList(upds);
|
}
|
}
|