trigger RentalApplyOtherTrigger on Rental_Apply__c (before insert, before update, after insert, after update, after delete) {
|
if((!Test.isRunningTest())&&UserInfo.getUserId()==System.Label.ByPassTrigger){
|
return;
|
}
|
//SWAG-B3U63C 2018/8/21 更新学会培训的申请备品申请单数 start
|
if (Trigger.isAfter) {
|
list<id> CampaignID = new list<id>();
|
if (Trigger.isInsert || Trigger.isUndelete ) {
|
for (Rental_Apply__c local : Trigger.New) {
|
if (String.isNotEmpty(local.Campaign__c)){
|
CampaignID.add(local.Campaign__c);
|
}
|
}
|
}
|
if (Trigger.isUpdate || Trigger.isDelete) {
|
for (Rental_Apply__c local : Trigger.old) {
|
// 2020/11/3 songxiaoqi start 更新申请时,更新前不是取消,然后更新成取消的时候计算
|
Rental_Apply__c news =null;
|
if (Trigger.isUpdate) {
|
news = Trigger.newMap.get( local.Id );
|
}
|
// 两种情况需要更新:
|
// 1、删除并且 old包含学会培训;
|
// 2、更新,new 或 old 中包含学会培训,并且状态发生变化 ;
|
if (
|
(Trigger.isDelete &&
|
String.isNotEmpty( local.Campaign__c )
|
)
|
||
|
(Trigger.isUpdate &&
|
(String.isNotEmpty(local.Campaign__c) ||
|
String.isNotEmpty(news.Campaign__c)
|
) &&
|
(
|
(local.RA_Status__c !=news.RA_Status__c
|
&& news.RA_Status__c=='取消')||
|
(local.Request_approval_day__c != news.Request_approval_day__c) ||
|
(local.Campaign__c != news.Campaign__c )
|
)
|
)
|
){
|
// 2020/11/3 songxiaoqi end
|
// 如果老的备品借出申请的学会不为空,加入
|
if( String.isNotEmpty( local.Campaign__c ) ){
|
CampaignID.add( local.Campaign__c );
|
}
|
// 如果新的备品借出申请的学会不为空,加入
|
if( String.isNotEmpty( news.Campaign__c ) ){
|
CampaignID.add( news.Campaign__c );
|
}
|
}
|
}
|
}
|
if (CampaignID.size () > 0) {
|
List<AggregateResult> TemRentalApplies =
|
[select Count(Id) Cnt_Id, Campaign__c, min(Request_approval_day__c) RADay
|
from Rental_Apply__c
|
where Campaign__c in: CampaignID
|
and RA_Status__c != '取消'
|
group by Campaign__c
|
];
|
map<id, list<string>> TemRentalAppliesMap = new map<id, list<string>>();
|
for (AggregateResult TemRentalApply : TemRentalApplies) {
|
list<string> temStringList = new list<string>();
|
temStringList.add(string.valueOf( TemRentalApply.get('Cnt_Id')));
|
if (TemRentalApply.get('RADay') != null) {
|
temStringList.add(((Date)TemRentalApply.get('RADay')).format());
|
}
|
TemRentalAppliesMap.put( (ID) TemRentalApply.get('Campaign__c'),
|
temStringList);
|
}
|
list<Campaign> UpdateCampaignList = new list<Campaign>();
|
for (Campaign TemCampaign : [select id, Number_Rental_Apply__c
|
from Campaign where id in: CampaignID
|
//2020/11/3 songxiaoqi start 创建申请后,草案中的时候计算单数
|
and Status != '取消'
|
//2020/11/3 songxiaoqi end
|
]) {
|
list<string> temStringList = TemRentalAppliesMap.get(TemCampaign.id);
|
if (temStringList != null) {
|
integer RentalApplyNumber = integer.valueof(temStringList[0]);
|
TemCampaign.Number_Rental_Apply__c = RentalApplyNumber;
|
if (temStringList.size() > 1) {
|
Date tempRADay = date.parse(temStringList[1]);
|
TemCampaign.Request_approval_day_RA__c = tempRADay;
|
} else {
|
TemCampaign.Request_approval_day_RA__c = null;
|
}
|
} else {
|
TemCampaign.Number_Rental_Apply__c = 0;
|
TemCampaign.Request_approval_day_RA__c = null;
|
}
|
UpdateCampaignList.add(TemCampaign);
|
}
|
if (UpdateCampaignList.size() > 0) {
|
upsert UpdateCampaignList;
|
}
|
}
|
//SWAG-B3U63C 2018/8/21 更新学会培训的申请备品申请单数 end
|
}
|
}
|