trigger SyncProduct2 on Product2 (after delete, after insert, after update) {
|
if (StaticParameter.EscapeSyncProduct2Trigger) {
|
System.debug('Escape、EscapeSyncProduct2Trigger:::::' + StaticParameter.EscapeSyncProduct2Trigger);
|
return;
|
}
|
List<Product2> pr2s = new List<Product2>();
|
|
if (Trigger.isDelete) {
|
for (Product2 pr2 : Trigger.old) {
|
pr2s.add(pr2);
|
}
|
} else {
|
for (Product2 pr2 : Trigger.new) {
|
if (Trigger.isInsert
|
|| Trigger.isUpdate
|
&& (pr2.Name.equals(Trigger.oldMap.get(pr2.Id).get('Name'))
|
|| pr2.Asset_Model_No__c.equals(Trigger.oldMap.get(pr2.Id).get('Asset_Model_No__c'))
|
|| pr2.IsActive != Trigger.oldMap.get(pr2.Id).get('IsActive')
|
|| pr2.SFDA_Status__c != Trigger.oldMap.get(pr2.Id).get('SFDA_Status__c')))
|
pr2s.add(pr2);
|
}
|
}
|
|
Map<String, Product2__c> pr2Map = new Map<String, Product2__c>();
|
if (pr2s.size() > 0) {
|
List<Product2__c> pr2Cs = ControllerUtil.pr2SelectForSync(pr2s);
|
for (Product2__c pr2 : pr2Cs) {
|
pr2Map.put(pr2.Product2__c, pr2);
|
}
|
}
|
|
List<Product2__c> insPr2 = new List<Product2__c>();
|
List<Product2__c> updelPr2 = new List<Product2__c>();
|
List<Product2__c> delPr2 = new List<Product2__c>();
|
for (Product2 pr : pr2s) {
|
// 見付かったら更新/削除
|
if (pr2Map.containsKey(pr.Id)) {
|
Product2__c pr2 = pr2Map.get(pr.Id);
|
// 「準備中」「新製品申請中」は対象外
|
if (pr.IsActive
|
&& pr.SFDA_Status__c != '準備中' && pr.SFDA_Status__c != '新製品申請中') {
|
pr2.Name = pr.Asset_Model_No__c != null ? pr.Asset_Model_No__c.mid(0, 80) : pr.Name.mid(0, 80);
|
pr2.Name_Text__c = pr.Name;
|
pr2.OT_CODE_Text__c = pr.ProductCode;
|
pr2.CurrencyIsoCode = pr.CurrencyIsoCode;
|
if (Trigger.isDelete) {
|
pr2.DeleteFlag__c = true;
|
} else {
|
pr2.DeleteFlag__c = false;
|
}
|
updelPr2.add(pr2);
|
} else {
|
pr2.DeleteFlag__c = true;
|
delPr2.add(pr2);
|
}
|
// 新規
|
} else {
|
if (pr.IsActive
|
&& pr.SFDA_Status__c != '準備中' && pr.SFDA_Status__c != '新製品申請中') {
|
Product2__c pr2 = new Product2__c(
|
Product2__c = pr.Id,
|
Name = pr.Asset_Model_No__c != null ? pr.Asset_Model_No__c.mid(0, 80) : pr.Name.mid(0, 80),
|
Name_Text__c = pr.Name,
|
OT_CODE_Text__c = pr.ProductCode,
|
CurrencyIsoCode = pr.CurrencyIsoCode
|
);
|
insPr2.add(pr2);
|
}
|
}
|
}
|
|
if (Trigger.isDelete) {
|
//ControllerUtil.delPr2List(updelPr2);
|
ControllerUtil.updelPr2List(updelPr2, null);
|
}
|
if (Trigger.isUpdate) {
|
ControllerUtil.updelPr2List(updelPr2, null);
|
ControllerUtil.updelPr2List(delPr2, null);
|
}
|
if (!Trigger.isDelete) ControllerUtil.insPr2List(insPr2);
|
|
// HWAG-AWLAU6 2018/3/7 "是否多年保修"的值拷贝到"是否多年保修(文本)"中
|
List<String> proId = new List<String>();
|
List<String> conformChangeProId = new List<String>();
|
if (Trigger.isInsert || Trigger.isUpdate) {
|
for (Product2 pro : Trigger.new) {
|
proId.add(pro.Id);
|
//XHL -----20190523----UpdateStart--
|
if (Trigger.isInsert){
|
conformChangeProId.add(pro.Id);
|
} else if (Trigger.isUpdate && (pro.Extend_new_product_gurantee__c != Trigger.oldMap.get(pro.Id).Extend_new_product_gurantee__c ||
|
pro.Extend_Gurantee_Start__c != Trigger.oldMap.get(pro.Id).Extend_Gurantee_Start__c ||
|
pro.Extend_Gurantee_End__c != Trigger.oldMap.get(pro.Id).Extend_Gurantee_End__c)){
|
conformChangeProId.add(pro.Id);
|
}
|
//XHL -----20190523----UpdateEnd
|
|
}
|
}
|
if (conformChangeProId.size() > 0) {
|
//List<Asset> assList = [select id, IS_Extend_Gurantee__c,GuaranteeFlag__c ,IS_Extend_Gurantee_Txt__c, Extend_Gurantee_Txt_Manual__c from Asset where Product2Id IN : proId AND GuaranteeFlag__c = true];
|
List<Asset> assList = [select id, IS_Extend_Gurantee__c,GuaranteeFlag__c ,
|
IS_Extend_Gurantee_Txt__c, Extend_Gurantee_Txt_Manual__c,
|
Product2Id
|
from Asset
|
where Product2Id IN : conformChangeProId];
|
if (assList != null && assList.size() > 0) {
|
List<Asset> updAsset = new List<Asset>();
|
for(Asset ass : assList) {
|
//XHL -------------20190118----UpdateStart----------在保有设备中创建GuaranteeFlag__c字段----20190523将其还原
|
if (ass.IS_Extend_Gurantee__c != ass.IS_Extend_Gurantee_Txt__c && ass.Extend_Gurantee_Txt_Manual__c == false) {
|
ass.IS_Extend_Gurantee_Txt__c = ass.IS_Extend_Gurantee__c;
|
updAsset.add(ass);
|
}
|
//XHL -------------20190118----UpdateEnd----------20190523将其还原
|
}
|
if (updAsset.size() > 0) {
|
update updAsset;
|
}
|
}
|
}
|
|
// CHAN-AX9485 2018/3/27 关于产品配套有效无效的判断--产品变更时更新产品配套是否有效
|
if (Trigger.isUpdate) {
|
List<Product_Set_Detail__c> psdList = [select Id, Effective_Product_detail__c, EffectiveNo_Product_detail__c, Total_price_RMB__c,
|
List_price_total_RMB_text__c from Product_Set_Detail__c where Product__c IN : proId];
|
List<Product_Set_Detail__c> updPsdList = new List<Product_Set_Detail__c>();
|
if (psdList != null && psdList.size() > 0) {
|
for(Product_Set_Detail__c psd : psdList) {
|
if (psd.Effective_Product_detail__c != psd.EffectiveNo_Product_detail__c
|
|| psd.Total_price_RMB__c != psd.List_price_total_RMB_text__c) {
|
updPsdList.add(psd);
|
}
|
}
|
}
|
if (updPsdList.size() > 0) {
|
update updPsdList;
|
}
|
}
|
}
|