trigger XinEventOppotunityPileUp on Event_Oppotunity__c (after delete, after update) {
|
List<String> oppIds = new List<String>();
|
|
if (Trigger.isDelete) {
|
for (Event_Oppotunity__c eo : Trigger.old) {
|
oppIds.add(eo.Opportunity__c); // 必須のはず
|
}
|
} else {
|
for (Event_Oppotunity__c eo : Trigger.new) {
|
oppIds.add(eo.Opportunity__c); // 必須のはず
|
}
|
}
|
|
// 先に親をlockする
|
List<Opportunity> opps = new List<Opportunity>();
|
List<Opportunity> oppList = ControllerUtil.oppSelectForLock(oppIds);
|
|
// 最大フォロー日
|
// CHAN-BE6CZZ 最后跟进结果 LHJ 20190724 Start
|
//AggregateResult[] ar0 = ControllerUtil.selectForOpp_Last_Follow_Up_Date(oppIds);
|
//Map<String, DateTime> maxDateMap = new Map<String, DateTime>();
|
|
//for (Integer i = 0; i < ar0.size(); i++) {
|
// maxDateMap.put(String.valueOf(ar0[i].get('Opportunity__c')), Datetime.valueOf(ar0[i].get('maxET')));
|
//}
|
List<Event_Oppotunity__c> ar0 = ControllerUtil.selectForOpp_Last_Follow_Up_Date(oppIds);
|
Map<String, Event_Oppotunity__c> maxDateMap = new Map<String, Event_Oppotunity__c>();
|
|
for (Integer i = 0; i < ar0.size(); i++) {
|
if (!maxDateMap.containsKey(String.valueOf(ar0[i].get('Opportunity__c')))) {
|
maxDateMap.put(String.valueOf(ar0[i].get('Opportunity__c')), ar0[i]);
|
}
|
}
|
// CHAN-BE6CZZ 最后跟进结果 LHJ 20190724 End
|
|
// 各種カウント
|
Map<String, Integer> cntMap = new Map<String, Integer>(); // 総件数
|
Map<String, Integer> vprCntMap = new Map<String, Integer>(); // 院長件数
|
Map<String, Integer> vhdCntMap = new Map<String, Integer>(); // 主任件数
|
Map<String, Integer> ntcCntMap = new Map<String, Integer>(); // NTC件数
|
AggregateResult[] ar = ControllerUtil.selectEventOppForAggregateFollowToOpp(oppIds);
|
for (Integer i = 0; i < ar.size(); i++) {
|
cntMap.put(String.valueOf(ar[i].get('Opportunity__c')), Integer.valueOf(ar[i].get('cnt')));
|
vprCntMap.put(String.valueOf(ar[i].get('Opportunity__c')), Integer.valueOf(ar[i].get('vprCnt')));
|
vhdCntMap.put(String.valueOf(ar[i].get('Opportunity__c')), Integer.valueOf(ar[i].get('vhdCnt')));
|
ntcCntMap.put(String.valueOf(ar[i].get('Opportunity__c')), Integer.valueOf(ar[i].get('ntcCnt')));
|
}
|
|
for (Opportunity opp : oppList) {
|
Boolean needUpd = false;
|
// CHAN-BE6CZZ 最后跟进结果 LHJ 20190724 Start
|
//if (opp.Xin_Last_Follow_Up_Date_For_Report__c != maxDateMap.get(opp.Id)) {
|
// opp.Xin_Last_Follow_Up_Date_For_Report__c = maxDateMap.get(opp.Id);
|
// needUpd = true;
|
//}
|
if (maxDateMap.containsKey(opp.Id)
|
&& ((opp.Xin_Last_Follow_Up_Date_For_Report__c != Datetime.valueOf(maxDateMap.get(opp.Id).End_Time__c))
|
|| (opp.Follow_up_comment__c != maxDateMap.get(opp.Id).EventC_ID__r.Description__c))) {
|
|
// 最后跟进日期
|
opp.Xin_Last_Follow_Up_Date_For_Report__c = Datetime.valueOf(maxDateMap.get(opp.Id).End_Time__c);
|
|
// 最后跟进结果
|
if (String.isNotBlank(maxDateMap.get(opp.Id).EventC_ID__r.Description__c)
|
&& maxDateMap.get(opp.Id).EventC_ID__r.Description__c.length() > 255) {
|
opp.Follow_up_comment__c = maxDateMap.get(opp.Id).EventC_ID__r.Description__c.subString(0,255);
|
} else {
|
opp.Follow_up_comment__c = maxDateMap.get(opp.Id).EventC_ID__r.Description__c;
|
}
|
|
needUpd = true;
|
}
|
// CHAN-BE6CZZ 最后跟进结果 LHJ 20190724 End
|
if (cntMap.containsKey(opp.Id) == false) {
|
if (opp.Xin_Gross_Follow_Num__c != 0
|
|| opp.Visit_President_Count__c != 0
|
|| opp.Visit_Head_Doctor_Count__c != 0
|
|| opp.Num_Of_NTC__c != 0
|
) {
|
opp.Xin_Gross_Follow_Num__c = 0;
|
opp.Visit_President_Count__c = 0;
|
opp.Visit_Head_Doctor_Count__c = 0;
|
opp.Num_Of_NTC__c = 0;
|
}
|
} else {
|
if (opp.Xin_Gross_Follow_Num__c != cntMap.get(opp.Id)
|
|| opp.Visit_President_Count__c != vprCntMap.get(opp.Id)
|
|| opp.Visit_Head_Doctor_Count__c != vhdCntMap.get(opp.Id)
|
|| opp.Num_Of_NTC__c != ntcCntMap.get(opp.Id)
|
) {
|
opp.Xin_Gross_Follow_Num__c = cntMap.get(opp.Id);
|
opp.Visit_President_Count__c = vprCntMap.get(opp.Id);
|
opp.Visit_Head_Doctor_Count__c = vhdCntMap.get(opp.Id);
|
opp.Num_Of_NTC__c = ntcCntMap.get(opp.Id);
|
}
|
}
|
if (needUpd) opps.add(opp);
|
}
|
|
if (opps.size() > 0) {
|
StaticParameter.EscapeNFM007Trigger = true;
|
StaticParameter.EscapeOpportunityBefUpdTrigger = true;
|
StaticParameter.EscapeOpportunityHpDeptUpdTrigger = true;
|
StaticParameter.EscapeSyncOpportunityTrigger = true;
|
System.debug('XinEventOppotunityPileUpから、商談トリガをEscape');
|
System.debug('EscapeNFM007Trigger:::::' + StaticParameter.EscapeNFM007Trigger);
|
System.debug('EscapeOpportunityBefUpdTrigger:::::' + StaticParameter.EscapeOpportunityBefUpdTrigger);
|
System.debug('EscapeOpportunityHpDeptUpdTrigger:::::' + StaticParameter.EscapeOpportunityHpDeptUpdTrigger);
|
System.debug('EscapeSyncOpportunityTrigger:::::' + StaticParameter.EscapeSyncOpportunityTrigger);
|
ControllerUtil.updOppList(opps);
|
}
|
}
|