trigger ConsumableOrderDetail2Trigger on Consumable_order_details2__c(
|
after insert,
|
after update,
|
after delete
|
) {
|
Set<String> orderSet = new Set<String>();
|
|
if (StaticParameter.EscapeOrderDetail2Trigger) {
|
return;
|
}
|
if (Trigger.isInsert) {
|
for (Consumable_order_details2__c local : Trigger.New) {
|
if (
|
local.Consumable_order_minor__c != null &&
|
local.Dealer_Returned__c == false
|
)
|
orderSet.add(local.Consumable_order_minor__c);
|
}
|
}
|
|
if (Trigger.isUpdate) {
|
for (Consumable_order_details2__c local : Trigger.New) {
|
//if (local.Consumable_order_minor__c!=null &&
|
// local.Dealer_Arrive__c != Trigger.oldMap.get(local.Id).get('Dealer_Arrive__c'))
|
if (local.Consumable_order_minor__c != null)
|
orderSet.add(local.Consumable_order_minor__c);
|
}
|
}
|
|
if (Trigger.isDelete) {
|
for (Consumable_order_details2__c local : Trigger.old) {
|
if (local.Consumable_order_minor__c != null)
|
orderSet.add(local.Consumable_order_minor__c);
|
}
|
}
|
|
if (orderSet.size() > 0) {
|
// 2018年8月9日 HWAG-B3D9UV 替换 SQL start by 张玉山
|
list<Consumable_order_details2__c> allresults = [
|
SELECT
|
Consumable_order_minor__c,
|
Deliver_date__c,
|
Dealer_Returned__c,
|
Dealer_Arrive__c,
|
RemoveBox_No__c,
|
Cancellation_Date__c
|
FROM Consumable_order_details2__c
|
WHERE Consumable_order_minor__c IN :orderSet
|
];
|
// 2018年8月9日 HWAG-B3D9UV end by 张玉山
|
|
// 2018年8月9日 HWAG-B3D9UV 替换下面原有SQL 使用 map 完成赋值 start by 张玉山
|
map<string, Integer> orderSetResults = new Map<string, Integer>();
|
for (Consumable_order_details2__c results1 : allresults) {
|
if (
|
results1.Dealer_Arrive__c == false ||
|
results1.Dealer_Returned__c == true ||
|
(results1.RemoveBox_No__c != null &&
|
results1.RemoveBox_No__c != 1)
|
) {
|
continue;
|
}
|
string Consumable_order_minor_str = String.valueOf(
|
results1.Consumable_order_minor__c
|
);
|
|
if (orderSetResults.containsKey(Consumable_order_minor_str)) {
|
orderSetResults.put(
|
Consumable_order_minor_str,
|
orderSetResults.get(Consumable_order_minor_str) + 1
|
);
|
} else {
|
orderSetResults.put(Consumable_order_minor_str, 1);
|
}
|
}
|
|
List<Consumable_Order__c> consumableOrderlist = new List<Consumable_Order__c>();
|
for (String strOrder : orderSet) {
|
Integer cnt = 0;
|
for (string key : orderSetResults.keySet()) {
|
if (key.equals(strOrder)) {
|
cnt = orderSetResults.get(key);
|
break;
|
}
|
}
|
|
Consumable_Order__c consumableOrder = new Consumable_Order__c();
|
consumableOrder.Id = strOrder;
|
consumableOrder.OrderNumber_arrived__c = cnt;
|
consumableOrderlist.add(consumableOrder);
|
}
|
// 2018年8月9日 HWAG-B3D9UV 替换下面原有SQL 使用 map 完成赋值 end end by 张玉山
|
|
/* 2018年8月9日 HWAG-B3D9UV 原有SQL 与赋值 start by 张玉山
|
AggregateResult[] results = [SELECT Consumable_order_minor__c,count(Id) cnt
|
FROM Consumable_order_details2__c
|
WHERE Consumable_order_minor__c in :orderSet
|
AND Dealer_Arrive__c = true
|
AND Dealer_Returned__c= false
|
AND (RemoveBox_No__c=null or RemoveBox_No__c=1)
|
group by Consumable_order_minor__c];
|
|
List<Consumable_Order__c> consumableOrderlist = new List<Consumable_Order__c>();
|
for (String strOrder:orderSet){
|
Integer cnt =0;
|
for(AggregateResult ar: results){
|
if(String.valueOf(ar.get('Consumable_order_minor__c')) == strOrder){
|
cnt = Integer.valueOf(ar.get('cnt'));
|
break;
|
}
|
}
|
Consumable_Order__c consumableOrder = new Consumable_Order__c();
|
consumableOrder.Id = strOrder;
|
consumableOrder.OrderNumber_arrived__c = cnt;
|
consumableOrderlist.add(consumableOrder);
|
}
|
2018年8月9日 HWAG-B3D9UV 原有SQL 与赋值 end by 张玉山
|
*/
|
if (consumableOrderlist.size() > 0) {
|
update consumableOrderlist;
|
}
|
|
//更新消耗品订单的发货日期
|
// 2018年8月9日 HWAG-B3D9UV 替换下面原有SQL 使用 map 完成赋值 start by 张玉山
|
Set<string> resultsKeySet = new Set<String>();
|
map<string, Date> DeliverdateResults = new Map<string, Date>(); //最新发货时间
|
map<string, Date> DeliverdateminResults = new Map<string, Date>(); //最早发货时间
|
for (Consumable_order_details2__c results1 : allresults) {
|
if (
|
results1.Dealer_Arrive__c == true ||
|
results1.Dealer_Returned__c == true
|
) {
|
continue;
|
}
|
string Consumable_order_minor_str = String.valueOf(
|
results1.Consumable_order_minor__c
|
);
|
if (DeliverdateResults.containsKey(Consumable_order_minor_str)) {
|
if (
|
DeliverdateResults.get(Consumable_order_minor_str) <
|
results1.Deliver_date__c
|
) {
|
DeliverdateResults.put(
|
Consumable_order_minor_str,
|
results1.Deliver_date__c
|
);
|
resultsKeySet.add(Consumable_order_minor_str);
|
}
|
} else {
|
DeliverdateResults.put(
|
Consumable_order_minor_str,
|
results1.Deliver_date__c
|
);
|
resultsKeySet.add(Consumable_order_minor_str);
|
}
|
//获取最早发货时间 pk part1 start
|
if (DeliverdateminResults.containsKey(Consumable_order_minor_str)) {
|
if (
|
DeliverdateminResults.get(Consumable_order_minor_str) >
|
results1.Deliver_date__c
|
) {
|
DeliverdateminResults.put(
|
Consumable_order_minor_str,
|
results1.Deliver_date__c
|
);
|
resultsKeySet.add(Consumable_order_minor_str);
|
}
|
} else {
|
DeliverdateminResults.put(
|
Consumable_order_minor_str,
|
results1.Deliver_date__c
|
);
|
resultsKeySet.add(Consumable_order_minor_str);
|
}
|
//获取最早发货时间 pk part1 end
|
}
|
|
//两个DeliverdateResults.keySet(),DeliverdateminResults.keySet() 合并作为一个List ,遍历List
|
//获取最早发货时间 pk part2 start
|
consumableOrderlist = new List<Consumable_Order__c>();
|
for (string temp : resultsKeySet) {
|
Consumable_Order__c consumableOrder1 = new Consumable_Order__c();
|
consumableOrder1.Id = temp;
|
if (DeliverdateResults.get(temp) != null) {
|
consumableOrder1.Shipment_Date__c = DeliverdateResults.get(temp);
|
}
|
if (DeliverdateminResults.get(temp) != null) {
|
consumableOrder1.First_Delivery__c = DeliverdateResults.get(temp);
|
}
|
consumableOrderlist.add(consumableOrder1);
|
}
|
|
//获取最早发货时间 pk part2 end
|
// List<Consumable_Order__c> consumableOrderminlist = new List<Consumable_Order__c>();//最早发货时间
|
// for (string key : DeliverdateminResults.keySet()) {
|
// if(DeliverdateminResults.get(key)!=null){
|
// Consumable_Order__c consumableOrder1 = new Consumable_Order__c();
|
// consumableOrder1.Id = key;
|
// consumableOrder1.First_Delivery__c = DeliverdateResults.get(key);
|
// consumableOrderminlist.add(consumableOrder1);
|
// }
|
// }
|
|
// 2018年8月9日 HWAG-B3D9UV 替换下面原有SQL 使用 map 完成赋值 end by 张玉山
|
|
//获取早发货日期 start
|
// system.debug('DeliverdateResults==============' + DeliverdateResults);
|
// system.debug('走到最早发货日期');
|
// map<string,Date> DeliverdateminResults = new map<string,Date>();
|
// for(Consumable_order_details2__c results1 : allresults){
|
// if(results1.Dealer_Arrive__c == true || results1.Dealer_Returned__c== true){
|
// continue;
|
// }
|
// string Consumable_order_minor_str = String.valueOf(results1.Consumable_order_minor__c);
|
// if(DeliverdateminResults.containsKey(Consumable_order_minor_str)){
|
// if(DeliverdateminResults.get(Consumable_order_minor_str)
|
// > results1.Deliver_date__c
|
// ){
|
// DeliverdateminResults.put(Consumable_order_minor_str,results1.Deliver_date__c);
|
// }
|
|
// }else{
|
// DeliverdateminResults.put(Consumable_order_minor_str,results1.Deliver_date__c);
|
// }
|
// }
|
// List<Consumable_Order__c> consumableOrderminlist = new List<Consumable_Order__c>();
|
// for (string key : DeliverdateminResults.keySet()) {
|
// if(DeliverdateminResults.get(key)!=null){
|
// Consumable_Order__c consumableOrder1 = new Consumable_Order__c();
|
// consumableOrder1.Id = key;
|
// consumableOrder1.First_Delivery__c = DeliverdateResults.get(key);
|
// consumableOrderminlist.add(consumableOrder1);
|
// }
|
// }
|
|
// if(consumableOrderminlist.size() > 0){
|
// update consumableOrderminlist;
|
// }
|
// system.debug('DeliverdateResults==============' + DeliverdateResults);
|
// //获取最早发货日期 end
|
|
/* 2018年8月9日 HWAG-B3D9UV 原有SQL 与赋值 start by 张玉山
|
AggregateResult[] results1 = [SELECT Consumable_order_minor__c,max(Deliver_date__c) Deliver_date__c
|
FROM Consumable_order_details2__c
|
WHERE Consumable_order_minor__c in :orderSet
|
AND Dealer_Arrive__c = false
|
AND Dealer_Returned__c= false
|
group by Consumable_order_minor__c];
|
|
consumableOrderlist = new List<Consumable_Order__c>();
|
for(AggregateResult ar: results1){
|
if (ar.get('Deliver_date__c')!=null){
|
Consumable_Order__c consumableOrder1 = new Consumable_Order__c();
|
consumableOrder1.Id =String.valueOf(ar.get('Consumable_order_minor__c'));
|
consumableOrder1.Shipment_Date__c = Date.valueOf(ar.get('Deliver_date__c'));
|
consumableOrderlist.add(consumableOrder1);
|
}
|
}
|
2018年8月9日 HWAG-B3D9UV 原有SQL 与赋值 end by 张玉山 */
|
if (consumableOrderlist.size() > 0) {
|
update consumableOrderlist;
|
}
|
|
//更新待确认收货数量
|
// 2018年8月9日 HWAG-B3D9UV 替换下面原有SQL 使用 map 完成赋值 start by 张玉山
|
map<string, Integer> resultsMap2 = new Map<string, Integer>();
|
for (Consumable_order_details2__c results1 : allresults) {
|
if (
|
results1.Dealer_Arrive__c == true ||
|
results1.Dealer_Returned__c == true ||
|
results1.Cancellation_Date__c != null
|
) {
|
continue;
|
}
|
string Consumable_order_minor_str = String.valueOf(
|
results1.Consumable_order_minor__c
|
);
|
if (resultsMap2.containsKey(Consumable_order_minor_str)) {
|
resultsMap2.put(
|
Consumable_order_minor_str,
|
resultsMap2.get(Consumable_order_minor_str) + 1
|
);
|
} else {
|
resultsMap2.put(Consumable_order_minor_str, 1);
|
}
|
}
|
consumableOrderlist = new List<Consumable_Order__c>();
|
for (String strOrder : orderSet) {
|
Integer cnt = 0;
|
for (string key : resultsMap2.keySet()) {
|
if (key.equals(strOrder)) {
|
cnt = resultsMap2.get(key);
|
break;
|
}
|
}
|
|
Consumable_Order__c consumableOrder2 = new Consumable_Order__c();
|
consumableOrder2.Id = strOrder;
|
consumableOrder2.Delivery_detail_count__c = cnt;
|
if (consumableOrder2.Delivery_detail_count__c == 0) {
|
consumableOrder2.More_than_seven_days__c = 0;
|
}
|
consumableOrderlist.add(consumableOrder2);
|
}
|
|
// 2018年8月9日 HWAG-B3D9UV 替换下面原有SQL 使用 map 完成赋值 end by 张玉山
|
|
/* 2018年8月9日 HWAG-B3D9UV 原有SQL 与赋值 start by 张玉山
|
AggregateResult[] results2 = [SELECT Consumable_order_minor__c,count(Id) cnt
|
FROM Consumable_order_details2__c
|
WHERE Consumable_order_minor__c in :orderSet
|
AND Dealer_Arrive__c = false
|
AND Dealer_Returned__c= false
|
AND Cancellation_Date__c = null
|
group by Consumable_order_minor__c];
|
|
consumableOrderlist = new List<Consumable_Order__c>();
|
for (String strOrder:orderSet){
|
Integer cnt =0;
|
for(AggregateResult ar: results2){
|
if(String.valueOf(ar.get('Consumable_order_minor__c')) == strOrder){
|
cnt = Integer.valueOf(ar.get('cnt'));
|
break;
|
}
|
}
|
Consumable_Order__c consumableOrder2 = new Consumable_Order__c();
|
consumableOrder2.Id = strOrder;
|
consumableOrder2.Delivery_detail_count__c = cnt;
|
consumableOrderlist.add(consumableOrder2);
|
}
|
2018年8月9日 HWAG-B3D9UV 原有SQL 与赋值 end by 张玉山 */
|
if (consumableOrderlist.size() > 0) {
|
update consumableOrderlist;
|
}
|
}
|
//Back up by DTT - Li Jun 2023-06-14 Start for reduce soql times
|
// 2018年8月9日 HWAG-B3D9UV 获取所有的record ID start by 张玉山
|
//List<RecordType> allrtList = [select Id,DeveloperName from RecordType where SobjectType = 'Consumable_orderdetails__c'];
|
// 2018年8月9日 HWAG-B3D9UV 获取所有的record ID end by 张玉山
|
//Back up by DTT - Li Jun 2023-06-14 Start
|
//到货和返品时,生成或修改消费品订货明细
|
Set<String> arrivedSet = new Set<String>();
|
Set<String> returnSet = new Set<String>();
|
if (Trigger.isUpdate || Trigger.isInsert || Trigger.isDelete) {
|
if (Trigger.isUpdate || Trigger.isInsert) {
|
for (Consumable_order_details2__c detail2 : Trigger.New) {
|
Consumable_order_details2__c oldDetail2 = null;
|
if (Trigger.isUpdate)
|
oldDetail2 = Trigger.oldMap.get(detail2.Id);
|
if (detail2.Consumable_Arrived_order__c != null) {
|
arrivedSet.add(detail2.Consumable_Arrived_order__c);
|
}
|
|
if (
|
(oldDetail2 == null ||
|
oldDetail2.Consumable_Return_order__c == null) &&
|
detail2.Consumable_Return_order__c != null
|
) {
|
returnSet.add(detail2.Consumable_Return_order__c);
|
}
|
}
|
}
|
if (Trigger.isDelete) {
|
for (Consumable_order_details2__c det2 : Trigger.old) {
|
if (det2.Consumable_Arrived_order__c != null) {
|
arrivedSet.add(det2.Consumable_Arrived_order__c);
|
}
|
|
if (det2.Consumable_Return_order__c != null) {
|
returnSet.add(det2.Consumable_Return_order__c);
|
}
|
}
|
}
|
System.debug('arrivedSet +++++' + arrivedSet);
|
// 2018年8月14日 HWAG-B3D9UV 在进行NFM110处理时 跳过arrivedset start by 张玉山
|
if (StaticParameter.EscapeConsumableOrderDetail2Trigger) {
|
return;
|
}
|
// 2018年8月14日 HWAG-B3D9UV 在进行NFM110处理时 跳过arrivedset start by 张玉山
|
if (arrivedSet.size() > 0) {
|
Map<Id, Consumable_order__c> arrivedMap = new Map<Id, Consumable_order__c>(
|
[
|
SELECT Id, RecordType.DeveloperName, Name
|
FROM Consumable_order__c
|
WHERE Id IN :arrivedSet
|
]
|
);
|
List<Consumable_orderdetails__c> detail1List = [
|
SELECT
|
Id,
|
Name,
|
Asset_Model_No__c,
|
Consumable_count__c,
|
Consumable_order__c
|
FROM Consumable_orderdetails__c
|
WHERE Consumable_order__c IN :arrivedSet
|
];
|
Map<String, Consumable_orderdetails__c> detail1Map = new Map<String, Consumable_orderdetails__c>();
|
for (Consumable_orderdetails__c detail1 : detail1List) {
|
String key =
|
'' +
|
detail1.Consumable_order__c +
|
detail1.Asset_Model_No__c;
|
detail1Map.put(key, detail1);
|
}
|
|
arrivedSet.clear();
|
for (Consumable_order__c arrivedCo : arrivedMap.values()) {
|
if (arrivedCo.RecordType.DeveloperName == 'Arrive') {
|
arrivedSet.add(arrivedCo.Id);
|
}
|
}
|
|
AggregateResult[] results = [
|
SELECT
|
Consumable_Arrived_order__c,
|
Asset_Model_No__c,
|
count(bar_code__c) recordCount
|
FROM Consumable_order_details2__c
|
WHERE
|
Consumable_Arrived_order__c IN :arrivedSet
|
AND Dealer_Arrive__c = TRUE
|
//and Dealer_Returned__c <> true
|
AND (RemoveBox_No__c = NULL
|
OR RemoveBox_No__c = 1)
|
GROUP BY Consumable_Arrived_order__c, Asset_Model_No__c
|
];
|
Map<String, Integer> keyCount = new Map<String, Integer>();
|
|
for (AggregateResult ar : results) {
|
String key =
|
'' +
|
ar.get('Consumable_Arrived_order__c') +
|
ar.get('Asset_Model_No__c');
|
keyCount.put(key, Integer.valueOf(ar.get('recordCount')));
|
}
|
//Back up by DTT - Li Jun 2023-06-14 Start
|
// 2018年8月9日 HWAG-B3D9UV 替代下面SQL select start by 张玉山
|
// List<RecordType> rtList = new List<RecordType>();
|
// for(RecordType rtl : allrtList){
|
// if('Detail1_Arrival'.equals(rtl.DeveloperName)){
|
// rtList.add(rtl);
|
// }
|
// }
|
// 2018年8月9日 HWAG-B3D9UV 替代下面SQL select end by 张玉山
|
//Back up by DTT - Li Jun 2023-06-14 End
|
|
/* 2018年8月9日 HWAG-B3D9UV 原获取 recordtype start by 张玉山
|
List<RecordType> rtList = [select Id from RecordType where DeveloperName = 'Detail1_Arrival' and SobjectType = 'Consumable_orderdetails__c'];
|
2018年8月9日 HWAG-B3D9UV 原获取 recordtype end by 张玉山 */
|
//Back up by DTT - Li Jun 2023-06-14 Start
|
// Id recordTypeId = null;
|
// if (rtList.size() > 0) recordTypeId = rtList[0].Id;
|
//Back up by DTT - Li Jun 2023-06-14 End
|
Id recordtypeId = Schema.SObjectType.Consumable_Orderdetails__c.getRecordTypeInfosByDeveloperName()
|
.get('Detail1_Arrival')
|
.getRecordTypeId();
|
results = [
|
SELECT Consumable_order__c, count(Id) noCount
|
FROM Consumable_orderdetails__c
|
WHERE Consumable_order__c IN :arrivedSet
|
GROUP BY Consumable_order__c
|
];
|
System.debug('results +++++' + results);
|
Map<Id, Integer> noCount = new Map<Id, Integer>();
|
for (AggregateResult ar : results) {
|
noCount.put(
|
(Id) ar.get('Consumable_order__c'),
|
Integer.valueOf(ar.get('noCount'))
|
);
|
}
|
System.debug('noCount +++++' + noCount);
|
Map<String, Consumable_orderdetails__c> upsertMap = new Map<String, Consumable_orderdetails__c>();
|
Map<String, Consumable_orderdetails__c> deletetMap = new Map<String, Consumable_orderdetails__c>();
|
Map<String, String> assetModelNoMap = new Map<String, String>();
|
if (Trigger.isUpdate || Trigger.isInsert) {
|
for (Consumable_order_details2__c detail2 : Trigger.New) {
|
//Dataloaderで初期在庫登録をしたあと、データ修正が入ったときに明細1が更新されない。
|
//if (trigger.isUpdate && detail2.ManualRegisteredStock__c == true) continue;
|
if (detail2.Consumable_Arrived_order__c == null)
|
continue;
|
String key =
|
'' +
|
detail2.Consumable_Arrived_order__c +
|
detail2.Asset_Model_No__c;
|
//if (upsertMap.get(key) != null) continue;
|
Integer count = keyCount.get(key);
|
Consumable_orderdetails__c detail1 = detail1Map.get(key);
|
|
if (detail1 == null)
|
detail1 = new Consumable_orderdetails__c();
|
detail1.Consumable_Arrivecount__c = count;
|
if (detail1.Id == null) {
|
Consumable_order__c co = arrivedMap.get(
|
detail2.Consumable_Arrived_order__c
|
);
|
Integer index = noCount.get(co.Id);
|
if (index == null)
|
index = 0;
|
if (assetModelNoMap.containsKey(detail2.Asset_Model_No__c)) {
|
continue;
|
} else {
|
assetModelNoMap.put(
|
detail2.Asset_Model_No__c,
|
detail2.Asset_Model_No__c
|
);
|
noCount.put(co.Id, index + 1);
|
}
|
noCount.put(co.Id, index + 1);
|
String newName = co.Name + '-';
|
System.debug('index +++++' + index);
|
if (index < 99) {
|
newName += '0';
|
}
|
if (index < 9) {
|
newName += '0';
|
}
|
newName += String.valueOf(index + 1);
|
System.debug('newName +++++' + newName);
|
detail1.Name = newName;
|
//detail1.Asset_Model_No__c = detail2.Asset_Model_No__c;
|
detail1.Consumable_product__c = detail2.Consumable_product__c;
|
detail1.Consumable_order__c = co.Id;
|
detail1.RecordTypeId = recordTypeId;
|
//detail1.Consumable_principal__c = co.Id;
|
detail1.Intra_Trade_List_RMB__c = detail2.Intra_Trade_List_RMB__c;
|
}
|
upsertMap.put(key, detail1);
|
}
|
}
|
|
if (Trigger.isUpdate) {
|
for (Consumable_order_details2__c detail2 : Trigger.old) {
|
//Dataloaderで初期在庫登録をしたあと、データ修正が入ったときに明細1が更新されない。
|
//if (detail2.ManualRegisteredStock__c == true) continue;
|
if (detail2.Consumable_Arrived_order__c == null)
|
continue;
|
String key =
|
'' +
|
detail2.Consumable_Arrived_order__c +
|
detail2.Asset_Model_No__c;
|
//if (upsertMap.get(key) != null) continue;
|
Integer count = keyCount.get(key);
|
Consumable_orderdetails__c detail1 = detail1Map.get(key);
|
if ((count == null || count == 0) && detail1 != null) {
|
//delete detail1;
|
deletetMap.put(key, detail1);
|
continue;
|
}
|
if (detail1 == null)
|
continue;
|
detail1.Consumable_Arrivecount__c = count;
|
|
if (detail1.Id == null) {
|
Consumable_order__c co = arrivedMap.get(
|
detail2.Consumable_Arrived_order__c
|
);
|
Integer index = noCount.get(co.Id);
|
if (index == null)
|
index = 0;
|
System.debug('indexUp +++++' + index);
|
noCount.put(co.Id, index + 1);
|
System.debug('noCountUp +++++' + noCount);
|
String newName = co.Name + '-';
|
if (index < 99) {
|
newName += '0';
|
}
|
if (index < 9) {
|
newName += '0';
|
}
|
newName += String.valueOf(index + 1);
|
System.debug('newNameUp +++++' + newName);
|
detail1.Name = newName;
|
//detail1.Asset_Model_No__c = detail2.Asset_Model_No__c;
|
detail1.Consumable_product__c = detail2.Consumable_product__c;
|
detail1.Consumable_order__c = co.Id;
|
detail1.RecordTypeId = recordTypeId;
|
//detail1.Consumable_principal__c = co.Id;
|
detail1.Intra_Trade_List_RMB__c = detail2.Intra_Trade_List_RMB__c;
|
}
|
upsertMap.put(key, detail1);
|
}
|
}
|
|
if (Trigger.isDelete) {
|
for (Consumable_order_details2__c detail2 : Trigger.old) {
|
if (detail2.Consumable_Arrived_order__c == null)
|
continue;
|
String key =
|
'' +
|
detail2.Consumable_Arrived_order__c +
|
detail2.Asset_Model_No__c;
|
//if (upsertMap.get(key) != null) continue;
|
Integer count = keyCount.get(key);
|
Consumable_orderdetails__c detail1 = detail1Map.get(key);
|
if ((count == null || count == 0) && detail1 != null) {
|
//delete detail1;
|
deletetMap.put(key, detail1);
|
continue;
|
}
|
if (detail1 == null)
|
detail1 = new Consumable_orderdetails__c();
|
detail1.Consumable_Arrivecount__c = count;
|
|
if (detail1.Id == null) {
|
Consumable_order__c co = arrivedMap.get(
|
detail2.Consumable_Arrived_order__c
|
);
|
Integer index = noCount.get(co.Id);
|
if (index == null)
|
index = 0;
|
noCount.put(co.Id, index + 1);
|
String newName = co.Name + '-';
|
if (index < 99) {
|
newName += '0';
|
}
|
if (index < 9) {
|
newName += '0';
|
}
|
newName += String.valueOf(index + 1);
|
detail1.Name = newName;
|
//detail1.Asset_Model_No__c = detail2.Asset_Model_No__c;
|
detail1.Consumable_product__c = detail2.Consumable_product__c;
|
detail1.Consumable_order__c = co.Id;
|
detail1.RecordTypeId = recordTypeId;
|
//detail1.Consumable_principal__c = co.Id;
|
detail1.Intra_Trade_List_RMB__c = detail2.Intra_Trade_List_RMB__c;
|
}
|
upsertMap.put(key, detail1);
|
}
|
}
|
|
Database.upsert(upsertMap.values(), true);
|
if (deletetMap.size() > 0) {
|
Database.delete(deletetMap.values(), true);
|
}
|
}
|
}
|
// 2018年8月14日 HWAG-B3D9UV 在进行NFM110处理时 跳过returnSet start by 张玉山
|
|
if (Trigger.isUpdate || Trigger.isInsert) {
|
if (StaticParameter.EscapeConsumableOrderDetail2Trigger) {
|
return;
|
}
|
// 2018年8月14日 HWAG-B3D9UV 在进行NFM110处理时 跳过returnSet start by 张玉山
|
if (returnSet.size() > 0) {
|
Map<Id, Consumable_order__c> returnMap = new Map<Id, Consumable_order__c>(
|
[
|
SELECT Id, RecordType.DeveloperName, Name
|
FROM Consumable_order__c
|
WHERE Id IN :returnSet
|
]
|
);
|
List<Consumable_orderdetails__c> detail1List = [
|
SELECT
|
Id,
|
Name,
|
Asset_Model_No__c,
|
Consumable_count__c,
|
Consumable_order__c
|
FROM Consumable_orderdetails__c
|
WHERE Consumable_order__c IN :returnSet
|
];
|
Map<String, Consumable_orderdetails__c> detail1Map = new Map<String, Consumable_orderdetails__c>();
|
|
for (Consumable_orderdetails__c detail1 : detail1List) {
|
String key =
|
'' +
|
detail1.Consumable_order__c +
|
detail1.Asset_Model_No__c;
|
detail1Map.put(key, detail1);
|
}
|
|
returnSet.clear();
|
for (Consumable_order__c returnCo : returnMap.values()) {
|
if (returnCo.RecordType.DeveloperName == 'ReturnGoods') {
|
returnSet.add(returnCo.Id);
|
}
|
}
|
|
AggregateResult[] results = [
|
SELECT
|
Consumable_Return_order__c,
|
Asset_Model_No__c,
|
count(Id) recordCount
|
FROM Consumable_order_details2__c
|
WHERE
|
Consumable_Return_order__c IN :returnSet
|
AND Dealer_Returned__c = TRUE
|
GROUP BY Consumable_Return_order__c, Asset_Model_No__c
|
];
|
Map<String, Integer> keyCount = new Map<String, Integer>();
|
for (AggregateResult ar : results) {
|
String key =
|
'' +
|
ar.get('Consumable_Return_order__c') +
|
ar.get('Asset_Model_No__c');
|
keyCount.put(key, Integer.valueOf(ar.get('recordCount')));
|
}
|
//Back up by DTT - Li Jun 2023-06-14 Start for reduce soql times
|
// 2018年8月9日 HWAG-B3D9UV 替代下面SQL select start by 张玉山
|
// List<RecordType> rtList = new List<RecordType>();
|
// for(RecordType rtl : allrtList){
|
// if('Detail1_ReturnGoods'.equals(rtl.DeveloperName)){
|
// rtList.add(rtl);
|
// }
|
// }
|
// 2018年8月9日 HWAG-B3D9UV 替代下面SQL select end by 张玉山
|
//Back up by DTT - Li Jun 2023-06-14 End
|
/* 2018年8月9日 HWAG-B3D9UV 原获取 recordtype start by 张玉山
|
List<RecordType> rtList = [select Id from RecordType where DeveloperName = 'Detail1_ReturnGoods' and SobjectType = 'Consumable_orderdetails__c'];
|
2018年8月9日 HWAG-B3D9UV 原获取 recordtype end by 张玉山 */
|
|
Id recordTypeId = Schema.SObjectType.Consumable_Orderdetails__c.getRecordTypeInfosByDeveloperName()
|
.get('Detail1_ReturnGoods')
|
.getRecordTypeId();
|
//if (rtList.size() > 0) recordTypeId = rtList[0].Id;
|
|
results = [
|
SELECT Consumable_order__c, count(Id) noCount
|
FROM Consumable_orderdetails__c
|
WHERE Consumable_order__c IN :returnSet
|
GROUP BY Consumable_order__c
|
];
|
Map<Id, Integer> noCount = new Map<Id, Integer>();
|
for (AggregateResult ar : results) {
|
noCount.put(
|
(Id) ar.get('Consumable_order__c'),
|
Integer.valueOf(ar.get('noCount'))
|
);
|
}
|
|
Map<String, Consumable_orderdetails__c> upsertMap = new Map<String, Consumable_orderdetails__c>();
|
Map<String, Integer> updatedSaleCount = new Map<String, Integer>();
|
Set<Id> updatedSaleId = new Set<Id>();
|
Map<String, Integer> updatedShipmentCount = new Map<String, Integer>();
|
Set<Id> updatedShipmentId = new Set<Id>();
|
Map<String, Integer> updatedConInvoiceCount = new Map<String, Integer>();
|
Map<String, String> shipmentIdMap = new Map<String, String>();
|
Set<Id> updatedConInvoiceId = new Set<Id>();
|
Integer returnCount = 0;
|
|
for (Consumable_order_details2__c detail2 : Trigger.New) {
|
Consumable_order_details2__c oldDetail2 = null;
|
if (detail2.Consumable_Return_order__c == null)
|
continue;
|
|
String key =
|
'' +
|
detail2.Consumable_Return_order__c +
|
detail2.Asset_Model_No__c;
|
|
if (Trigger.isUpdate)
|
oldDetail2 = Trigger.oldMap.get(detail2.Id);
|
if (oldDetail2 != null) {
|
if (keyCount.containsKey(key)) {
|
returnCount += 1;
|
if (oldDetail2.Consumable_Sale_order__c != null) {
|
Integer sCount = updatedSaleCount.containsKey(
|
'' +
|
oldDetail2.Consumable_Sale_order__c +
|
detail2.Asset_Model_No__c
|
)
|
? updatedSaleCount.get(
|
'' +
|
oldDetail2.Consumable_Sale_order__c +
|
detail2.Asset_Model_No__c
|
)
|
: 0;
|
sCount += 1;
|
updatedSaleCount.put(
|
'' +
|
oldDetail2.Consumable_Sale_order__c +
|
detail2.Asset_Model_No__c,
|
sCount
|
);
|
updatedSaleId.add(oldDetail2.Consumable_Sale_order__c);
|
}
|
if (oldDetail2.Consumable_Shipment_order__c != null) {
|
Integer sCount = updatedShipmentCount.containsKey(
|
'' +
|
oldDetail2.Consumable_Shipment_order__c +
|
detail2.Asset_Model_No__c
|
)
|
? updatedShipmentCount.get(
|
'' +
|
oldDetail2.Consumable_Shipment_order__c +
|
detail2.Asset_Model_No__c
|
)
|
: 0;
|
sCount += 1;
|
|
updatedShipmentCount.put(
|
'' +
|
oldDetail2.Consumable_Shipment_order__c +
|
detail2.Asset_Model_No__c,
|
sCount
|
);
|
updatedShipmentId.add(oldDetail2.Consumable_Shipment_order__c);
|
}
|
/*if (oldDetail2.Invoice_No__c != null) {
|
Integer sCount = updatedConInvoiceCount.containsKey(''+oldDetail2.Invoice_No__c+oldDetail2.Consumable_Sale_order__c+detail2.Asset_Model_No__c) ? updatedConInvoiceCount.get(''+oldDetail2.Invoice_No__c+oldDetail2.Consumable_Sale_order__c+detail2.Asset_Model_No__c) : 0;
|
sCount += 1;
|
if(oldDetail2.Consumable_Shipment_order__c == null){
|
shipmentIdMap.put(''+oldDetail2.Consumable_Sale_order__c+detail2.Asset_Model_No__c, oldDetail2.Consumable_Sale_order__c);
|
updatedConInvoiceCount.put(''+oldDetail2.Invoice_No__c+oldDetail2.Consumable_Sale_order__c+detail2.Asset_Model_No__c, sCount);
|
}else{
|
shipmentIdMap.put(''+oldDetail2.Consumable_Shipment_order__c+detail2.Asset_Model_No__c, oldDetail2.Consumable_Shipment_order__c);
|
updatedConInvoiceCount.put(''+oldDetail2.Invoice_No__c+oldDetail2.Consumable_Shipment_order__c+detail2.Asset_Model_No__c, sCount);
|
}
|
|
updatedConInvoiceId.add(oldDetail2.Invoice_No__c);
|
}*/
|
}
|
}
|
if (upsertMap.get(key) != null)
|
continue;
|
Integer count = keyCount.get(key);
|
|
Consumable_orderdetails__c detail1 = detail1Map.get(key);
|
|
if (detail1 == null)
|
detail1 = new Consumable_orderdetails__c();
|
detail1.RrturnPro_count__c = count;
|
|
if (detail1.Id == null) {
|
Consumable_order__c co = returnMap.get(
|
detail2.Consumable_Return_order__c
|
);
|
Integer index = noCount.get(co.Id);
|
if (index == null)
|
index = 0;
|
noCount.put(co.Id, index + 1);
|
String newName = co.Name + '-';
|
if (index < 99) {
|
newName += '0';
|
}
|
if (index < 9) {
|
newName += '0';
|
}
|
newName += String.valueOf(index + 1);
|
detail1.Name = newName;
|
//detail1.Asset_Model_No__c = detail2.Asset_Model_No__c;
|
detail1.Consumable_product__c = detail2.Consumable_product__c;
|
detail1.Consumable_order__c = co.Id;
|
detail1.RecordTypeId = recordTypeId;
|
//detail1.Consumable_principal__c = co.Id;
|
detail1.Intra_Trade_List_RMB__c = detail2.Intra_Trade_List_RMB__c;
|
}
|
upsertMap.put(key, detail1);
|
}
|
|
Database.upsert(upsertMap.values(), true);
|
// 2018年8月8日 HWAG-B3D9UV 减少 select 数量 start by 张玉山
|
List<Consumable_orderdetails__c> Consumable_orderdetailsList = [
|
SELECT
|
Id,
|
Name,
|
Asset_Model_No__c,
|
RrturnPro_count__c,
|
Consumable_order__c,
|
Invoicedet1_OD_link__c
|
FROM Consumable_orderdetails__c
|
WHERE
|
Consumable_order__c IN :updatedSaleId
|
OR Consumable_order__c IN :updatedShipmentId
|
OR Consumable_order__c IN :updatedConInvoiceId
|
];
|
|
List<Consumable_orderdetails__c> detail1SaleList = new List<Consumable_orderdetails__c>();
|
|
for (
|
Consumable_orderdetails__c orderdetails : Consumable_orderdetailsList
|
) {
|
if (
|
updatedSaleId.contains(orderdetails.id) &&
|
'Sale'
|
.equals(orderdetails.Consumable_order__r.RecordType.DeveloperName)
|
) {
|
detail1SaleList.add(orderdetails);
|
}
|
}
|
|
List<Consumable_orderdetails__c> detail1ShipmentList = new List<Consumable_orderdetails__c>();
|
|
for (
|
Consumable_orderdetails__c orderdetails : Consumable_orderdetailsList
|
) {
|
if (
|
updatedShipmentId.contains(orderdetails.id) &&
|
'Shipment'
|
.equals(orderdetails.Consumable_order__r.RecordType.DeveloperName)
|
) {
|
detail1ShipmentList.add(orderdetails);
|
}
|
}
|
|
List<Consumable_orderdetails__c> detail1ConInvoiceList = new List<Consumable_orderdetails__c>();
|
|
for (
|
Consumable_orderdetails__c orderdetails : Consumable_orderdetailsList
|
) {
|
if (
|
updatedConInvoiceId.contains(orderdetails.id) &&
|
'Order_Invoice'
|
.equals(orderdetails.Consumable_order__r.RecordType.DeveloperName)
|
) {
|
detail1ConInvoiceList.add(orderdetails);
|
}
|
}
|
// 2018年8月8日 HWAG-B3D9UV 减少 select 数量 end by 张玉山
|
/* 2018年8月8日 HWAG-B3D9UV 注释 替换为上面的那个 end by 张玉山
|
List<Consumable_orderdetails__c> detail1SaleList =
|
[select Id, Name, Asset_Model_No__c, RrturnPro_count__c, Consumable_order__c
|
from Consumable_orderdetails__c
|
where Consumable_order__c in :updatedSaleId
|
and Consumable_order__r.RecordType.DeveloperName = 'Sale'];
|
|
List<Consumable_orderdetails__c> detail1ShipmentList =
|
[select Id, Name, Asset_Model_No__c, RrturnPro_count__c, Consumable_order__c
|
from Consumable_orderdetails__c
|
where Consumable_order__c in :updatedShipmentId
|
and Consumable_order__r.RecordType.DeveloperName = 'Shipment'];
|
|
List<Consumable_orderdetails__c> detail1ConInvoiceList =
|
[select Id, Name, Asset_Model_No__c, RrturnPro_count__c,
|
Consumable_order__c,Invoicedet1_OD_link__c
|
from Consumable_orderdetails__c
|
where Consumable_order__c in :updatedConInvoiceId
|
and Consumable_order__r.RecordType.DeveloperName = 'Order_Invoice'];
|
*/
|
List<Consumable_orderdetails__c> updateData = new List<Consumable_orderdetails__c>();
|
|
for (Consumable_orderdetails__c detail1Sale : detail1SaleList) {
|
Integer count = updatedSaleCount.get(
|
'' + detail1Sale.Consumable_order__c + detail1Sale.Asset_Model_No__c
|
);
|
if (count != null) {
|
detail1Sale.RrturnPro_count__c += count;
|
updateData.add(detail1Sale);
|
}
|
}
|
for (Consumable_orderdetails__c detail1Shipment : detail1ShipmentList) {
|
Integer count = updatedShipmentCount.get(
|
'' +
|
detail1Shipment.Consumable_order__c +
|
detail1Shipment.Asset_Model_No__c
|
);
|
if (count != null) {
|
detail1Shipment.RrturnPro_count__c += count;
|
updateData.add(detail1Shipment);
|
}
|
}
|
for (
|
Consumable_orderdetails__c detail1ConInvoice : detail1ConInvoiceList
|
) {
|
Integer count = updatedConInvoiceCount.get(
|
'' +
|
detail1ConInvoice.Consumable_order__c +
|
detail1ConInvoice.Invoicedet1_OD_link__c +
|
detail1ConInvoice.Asset_Model_No__c
|
);
|
if (
|
count != null &&
|
(detail1ConInvoice.Invoicedet1_OD_link__c ==
|
shipmentIdMap.get(
|
'' +
|
detail1ConInvoice.Invoicedet1_OD_link__c +
|
detail1ConInvoice.Asset_Model_No__c
|
))
|
) {
|
detail1ConInvoice.RrturnPro_count__c += count;
|
//updateData.add(detail1ConInvoice);
|
}
|
}
|
|
Database.upsert(updateData, true);
|
}
|
}
|
}
|