trigger OpporFileAllEvent on Opportunity_File__c (
|
before insert,
|
before update,
|
before delete,
|
after insert,
|
after update,
|
after delete,
|
after undelete) {
|
List<String> opsidList = new List<String>();
|
Map<String,Datetime> OpporMaptoOFC = new Map<String,Datetime>();
|
Map<Datetime,String> OFCMaptoDateTime = new Map<Datetime,String>();
|
List<String> idNowList = new List<String>();
|
if (Trigger.isBefore) {
|
//call your handler.before method
|
if(Trigger.isDelete){
|
for(Opportunity_File__c ofc : Trigger.old){
|
if(ofc.Is_Locked__c){
|
ofc.addError('备货已确认,不能删除询价文件');
|
return;
|
}
|
idNowList.add(ofc.id);
|
opsidList.add(ofc.Opportunity__c);
|
}
|
}
|
if (Trigger.isUpdate) {
|
for(Opportunity_File__c ofc : Trigger.old){
|
Opportunity_File__c ofcn = Trigger.newMap.get(ofc.id);
|
if(ofc.Is_Locked__c && ofcn.Is_Locked__c){
|
ofcn.addError('备货已确认,不能修改询价文件');
|
return;
|
}
|
}
|
}
|
if(Trigger.isUpdate||Trigger.isInsert){
|
for(Opportunity_File__c ofc : Trigger.new){
|
if(Trigger.isUpdate){
|
if(ofc.Last_upload_time__c != Trigger.oldMap.get(ofc.id).Last_upload_time__c){
|
opsidList.add(ofc.Opportunity__c);
|
}
|
}else{
|
opsidList.add(ofc.Opportunity__c);
|
}
|
|
idNowList.add(ofc.id);
|
if(ofc.Last_upload_time__c!=null){
|
OFCMaptoDateTime.put(ofc.Last_upload_time__c, ofc.id);
|
OpporMaptoOFC.put(ofc.Opportunity__c,ofc.Last_upload_time__c);
|
}
|
system.debug('开始结果========='+OpporMaptoOFC);
|
system.debug('开始结果========='+OFCMaptoDateTime);
|
}
|
}
|
List<Opportunity_File__c> allFileDate = [select id, name,Opportunity__c,Last_upload_time__c
|
from Opportunity_File__c
|
where Opportunity__r.id in:opsidList
|
and id not in:idNowList
|
and Last_upload_time__c !=null];
|
|
if(allFileDate.size()>0){
|
for(Opportunity_File__c ofc : allFileDate){
|
|
OFCMaptoDateTime.put(ofc.Last_upload_time__c,ofc.id);
|
|
if(OpporMaptoOFC.containsKey(ofc.Opportunity__c)){
|
|
if(OpporMaptoOFC.get(ofc.Opportunity__c) < ofc.Last_upload_time__c){
|
|
OpporMaptoOFC.put(ofc.Opportunity__c, ofc.Last_upload_time__c);
|
|
}
|
}else{
|
OpporMaptoOFC.put(ofc.Opportunity__c,ofc.Last_upload_time__c);
|
}
|
}
|
system.debug('最后结果========='+OpporMaptoOFC);
|
system.debug('最后结果========='+OFCMaptoDateTime);
|
List<Opportunity> updateDateTimeList = new List<Opportunity>();
|
for(String Oppids : OpporMaptoOFC.keySet()){
|
|
Opportunity ops = new Opportunity(
|
id = Oppids,
|
Last_opportunity_file__c = OFCMaptoDateTime.get(OpporMaptoOFC.get(Oppids))
|
);
|
|
updateDateTimeList.add(ops);
|
}
|
|
if(updateDateTimeList.size()>0){
|
update updateDateTimeList;
|
}
|
}else{
|
|
List<Opportunity> updateDateTimeList = new List<Opportunity>();
|
for(String opsid : opsidList){
|
Opportunity ops = new Opportunity(
|
id = opsid,
|
Last_opportunity_file__c = OFCMaptoDateTime.get(OpporMaptoOFC.get(opsid))
|
);
|
updateDateTimeList.add(ops);
|
}
|
if(updateDateTimeList.size()>0){
|
update updateDateTimeList;
|
}
|
|
}
|
} else if (Trigger.isAfter) {
|
//call handler.after method
|
|
}
|
}
|