李彤
2022-03-16 b54f1c796595671bd753a9161eccad074d444273
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
public without sharing class OpportunityTrigger {
 
    public static void lockOpportunityFile(List<Opportunity> newList, Map<Id, Opportunity> newMap, List<Opportunity> oldList, Map<Id, Opportunity> oldMap) {
 
        List<String> targetIds = new List<String>();
        for (Opportunity newOpp : newList) {
            Opportunity oldOpp = oldMap.get(newOpp.Id);
            if (newOpp.Stock_apply_status__c != oldOpp.Stock_apply_status__c &&
                    newOpp.Stock_apply_status__c == '批准' && oldOpp.Stock_apply_status__c == '申请中') {
                targetIds.add(newOpp.Id);
            }
        }
 
        if (targetIds.size() == 0) Return;
 
        List<Opportunity_File__c> ofileList = [select id, Is_Locked__c from Opportunity_File__c where Opportunity__c = :targetIds and Is_Locked__c = false];
        for (Opportunity_File__c ofile : ofileList) {
            ofile.Is_Locked__c = true;
        }
 
        update ofileList;
    }
    //CHAN-AZJ6JS 追溯系统来的询价,取消WIN时,经销商订单自动改到“驳回”
    public static void changeConsumableOrderStatus(List<Opportunity> newList, Map<Id, Opportunity> newMap, List<Opportunity> oldList, Map<Id, Opportunity> oldMap) {
        
        List<String> orderIds = new List<String>();
 
        for (Opportunity newOpp : newList) {
            // si询价新逻辑 为配置建议决定时间赋值 by vivek start
            if(newOpp.Configuration_Suggestion__c == '无建议' && newOpp.Recommended_Confirmation_Time__c == null){
                newOpp.Recommended_Confirmation_Time__c = Date.today();
            }
            if(newOpp.Configuration_Suggestion__c == '有建议' && newOpp.Configuration_Suggestion_Feedback__c != null && newOpp.Recommended_Confirmation_Time__c == null){
                newOpp.Recommended_Confirmation_Time__c = Date.today();
            }
            // si询价新逻辑 为配置建议决定时间赋值 by vivek end
            Opportunity oldOpp = oldMap.get(newOpp.Id);
            if (newOpp.SAP_Send_OK__c != oldOpp.SAP_Send_OK__c && newOpp.SAP_Send_OK__c == false ) {
                if (String.isNotBlank(newOpp.Estimation_Id__c) && newOpp.Estimation_Id__c.StartsWith('a2K'))newOpp.StageName = '削除';
                if (String.isNotBlank(newOpp.Opportunity_No__c)) orderIds.add(newOpp.Opportunity_No__c);
                //lastbuy  2022/2/9 fy start
                List<LastbuyProduct__c> upLastbuyObjList = new List<LastbuyProduct__c>();
                List<LastbuyProduct__c> LastbuyObjList=[select id,LastbuyQuantity__c,InquiryCode__c,ProductName__c,effectiveFLG__c from LastbuyProduct__c where InquiryCode__c= : newOpp.Id];
                if(LastbuyObjList!=null){
                    for(LastbuyProduct__c lastbuypr :LastbuyObjList){
                        lastbuypr.ActualQuantity__c=0;
                        lastbuypr.effectiveFLG__c=true;
                        upLastbuyObjList.add(lastbuypr);
                    }
                }
                if(upLastbuyObjList!=null){
                    upsert upLastbuyObjList;           
                }
                //lastbuy  2022/2/9 fy end
            }
        }
 
        if (orderIds.size() == 0) Return;
        ControllerUtil.selectAndupdateOrderSatus(orderIds);
 
        
 
        /*List<Consumable_order__c> orderList = [select id, Order_status__c from Consumable_order__c where Name = :orderIds and Order_status__c = '批准' and RecordType.DeveloperName = 'Order'];
        for (Consumable_order__c order : orderList) {
            order.Order_status__c = '驳回';
        }
        update orderList;*/
    }
 
    // CHAN-AYTCE6  询价页面中的经销商1变更后更新报价中经销商1  2018/5/25 start
    public static void changeQuoteAgency1(List<Opportunity> newList, Map<Id, Opportunity> newMap, List<Opportunity> oldList, Map<Id, Opportunity> oldMap) {
        Map<Id, Opportunity> oppIdMap = new Map<Id, Opportunity>();
        for (Opportunity newOpp : newList) {
            if (!String.isBlank(newOpp.Estimation_No__c) && newOpp.StageName__c != '取消' && newOpp.StageName__c != '失单') {
                Opportunity oldOpp = oldMap.get(newOpp.Id);
                if (
                    (
                        (String.isBlank(oldOpp.Agency1__c) && !String.isBlank(newOpp.Agency1__c))
                        || (!String.isBlank(oldOpp.Agency1__c) && String.isBlank(newOpp.Agency1__c))
                        || oldOpp.Agency1__c != newOpp.Agency1__c
                    )
                    &&
                    (
                        newOpp.Estimation_No__c == oldOpp.Estimation_No__c
                    )
                ) {
                    oppIdMap.put(newOpp.Id, newOpp);
                }
            }
        }
        if (oppIdMap.size() > 0) {
            List<Quote> quList = [Select Id, Agency1__c, Quote_No__c, OpportunityId
                                  from Quote where OpportunityId In: oppIdMap.keySet()];
            if (quList != null && quList.size() > 0) {
                List<Quote> quUpd = new List<Quote>();
                for (Quote q : quList) {
                    Opportunity opp = oppIdMap.get(q.OpportunityId);
                    if (q.Quote_No__c == opp.Estimation_No__c) {
                        q.Agency1__c = opp.Agency1__c;
                        quUpd.add(q);
                    }
                }
                if (quUpd.size() > 0) {
                    update quUpd;
                }
            }
        }
    }
    // CHAN-AYTCE6  询价页面中的经销商1变更后更新报价中经销商1  2018/5/25 end
    
    //  千里马 - 招投标状态更新Batch  mzy  2021-05-13  start
    //  更新招投标上反应询价标识
    public static void UpdateBiddingFlag(List<Opportunity> newList, Map<Id, Opportunity> newMap, List<Opportunity> oldList, Map<Id, Opportunity> oldMap) {
        if (StaticParameter.EscapeOpportunityBefUpdTrigger) {
            return;
        }
        List<Tender_information__c> tenderList = new List<Tender_information__c>();
        Map<String,Tender_information__c> tenderMap = new Map<String,Tender_information__c>();
        // 招标-询价关联修改 需要从link表里确认有哪些信息需要修改
        List<String> oppIds = new List<String>();
        for (Opportunity op : newList) {
            oppIds.add(op.Id);
        }
        List<Tender_Opportunity_Link__c> links = [SELECT Id, Tender_information__c, Tender_information__r.IsReactionOpp__c, Opportunity__c FROM Tender_Opportunity_Link__c WHERE Opportunity__c IN :oppIds AND Tender_information__r.IsReactionOpp__c = false];
        // 由于变为link之后,招标项目字段不再每次绑定时都更新,针对招标-询价关联时修改反映询价标记的修改无法顾及所有
        // 在此处只对win和失单判断做更新
        for(Opportunity op : newList){
            // Tender_information__c temptender = new Tender_information__c();
            //Tender_information__c Oldtemptender = new Tender_information__c();
            Opportunity oldopp = oldMap == null? null : oldMap.get(op.id); 
            if(oldopp != null){
 
                //判断询价的招标项目  从有到无 -- 从无到有
                // if( op.Bidding_Project_Name_Bid__c != oldopp.Bidding_Project_Name_Bid__c){
                        
 
                //         if(String.isNotBlank(op.Bidding_Project_Name_Bid__c)){
                //             temptender.id = op.Bidding_Project_Name_Bid__c;                            
                //             temptender.IsReactionOpp__c = true;
                //             tenderMap.put(temptender.id ,temptender );
                            
                //         }
                //         if(String.isNotBlank(oldopp.Bidding_Project_Name_Bid__c)) {
                //             temptender = new Tender_information__c();
                //             temptender.id = oldopp.Bidding_Project_Name_Bid__c;
                //             temptender.IsReactionOpp__c = true;
                //             tenderMap.put(temptender.id ,temptender );
                //         } 
                        
                // }
 
                // 从不win到win 或 从win到不win 并且 招投标项目不为空
                // if( (op.SAP_Send_OK__c != oldopp.SAP_Send_OK__c )&&String.isNotBlank(op.Bidding_Project_Name_Bid__c) ){
                //     temptender.id = op.Bidding_Project_Name_Bid__c;
                //     temptender.IsReactionOpp__c = true;
                //     tenderMap.put(temptender.id ,temptender );
                // }
 
                // 从失单到不失单 或  从不失单到失单 并且 招投标项目不为空
                // if( ( (op.StageName__c.equals('失单') && !oldopp.StageName__c.equals('失单'))
                //     ||(!op.StageName__c.equals('失单') && oldopp.StageName__c.equals('失单')) ) &&String.isNotBlank(op.Bidding_Project_Name_Bid__c) ){
                //     temptender.id = op.Bidding_Project_Name_Bid__c;
                //     temptender.IsReactionOpp__c = true;
                //     tenderMap.put(temptender.id ,temptender ); 
                // }
                // 合并判断条件
                if((op.SAP_Send_OK__c != oldopp.SAP_Send_OK__c) || 
                    ((op.StageName__c.equals('失单') && !oldopp.StageName__c.equals('失单')) || 
                    (!op.StageName__c.equals('失单') && oldopp.StageName__c.equals('失单')))) {
                    for (Tender_Opportunity_Link__c link : links) {
                        if (link.Opportunity__c == op.Id) {
                            Tender_information__c temptender = new Tender_information__c();
                            temptender.Id = link.Tender_information__c;
                            temptender.IsReactionOpp__c = true;
                            tenderMap.put(temptender.id ,temptender); 
                        }
                    }
                }
 
            // }else {
            //     //新建时判断询价的招标项目是不是从无到有
            //     if(String.isNotBlank(op.Bidding_Project_Name_Bid__c) ){
            //         temptender.id = op.Bidding_Project_Name_Bid__c;
            //         temptender.IsReactionOpp__c = true;
            //         tenderMap.put(temptender.id ,temptender );
            //     }
            }
        }
 
 
        System.debug('招标Map:'+tenderMap);
        if(tenderMap.size()>0){
            update tenderMap.values();
        }
 
    }
 
    // 千里马 - 招投标状态更新Batch  mzy  2021-05-13  start
    // 招标-询价关联 20210817 start
    public static void changeLastLinkedTender(List<Opportunity> newList, Map<Id, Opportunity> newMap, List<Opportunity> oldList, Map<Id, Opportunity> oldMap) {
        List<Tender_Opportunity_Link__c> new_links = new List<Tender_Opportunity_Link__c>();
        for(Opportunity op : newList){
            // 先判断Bidding_Project_Name_Bid__c是不是空
            if (op.Bidding_Project_Name_Bid__c != null && String.isNotBlank(op.Bidding_Project_Name_Bid__c)) {
                // 不是空的情况下 
                // 新建link
                Tender_Opportunity_Link__c link = new Tender_Opportunity_Link__c();
                link.Tender_information__c = op.Bidding_Project_Name_Bid__c;
                link.Opportunity__c = op.id;
                link.Tender_Opportunity_Uniq__c = String.valueOf(op.Bidding_Project_Name_Bid__c) + String.valueOf(op.id); 
                new_links.add(link);
            }
        }
        if (new_links.size() > 0) {
            insert new_links;
        }
    }
    // 招标-询价关联 20210817 end
     // 阿斯赛多签收单 精琢技术 fy 2021-09-06 start
    //  public static void changeSignedByAsicedo(List<Opportunity> newList, Map<Id, Opportunity> newMap, List<Opportunity> oldList, Map<Id, Opportunity> oldMap) {
    //     List<Statu_Achievements_DN__c> Statu_Achievements_DN_c = new List<Statu_Achievements_DN__c>();
    //     List<eSignForm__c> eSignForm_c = new List<eSignForm__c>();
    //     for(Opportunity op : newList){
    //         if(op.Is_Corrosion__c==false&&oldMap.get(op.Id).Is_Corrosion__c==true){
    //             List<Statu_Achievements_DN__c> StatuAchievementsDNc =[select Id,Name,Is_Corrosion__c from Statu_Achievements_DN__c where Opportunity__c =:op.Id];
    //             for(Statu_Achievements_DN__c sadc:StatuAchievementsDNc){
    //                 if(sadc.Is_Corrosion__c==true){
    //                     sadc.Is_Corrosion__c=false;
    //                     Statu_Achievements_DN_c.add(sadc);
    //                     system.debug('Statu_Achievements_DN_c ==='+Statu_Achievements_DN_c);
    //                 }
    //                 List<eSignForm__c> eSignFormc =[select Id,Name,Hazardous_Chemicals__c from eSignForm__c where Statu_Achievements_DN__c =:sadc.Id];
    //                 for(eSignForm__c efc:eSignFormc){
    //                     if(efc.Hazardous_Chemicals__c==true){
    //                         efc.Hazardous_Chemicals__c=false;
    //                         eSignForm_c.add(efc);
    //                         system.debug('eSignForm_c ==='+eSignForm_c);
    //                     }
    //                 }
    //             }
    //         }
    //     }
    //     if(Statu_Achievements_DN_c.size()>0){
    //         update Statu_Achievements_DN_c;
    //     }
    //     if(eSignForm_c.size()>0){
    //         update eSignForm_c;
    //     }
    // }
    // 阿斯赛多签收单 精琢技术 fy 2021-09-06 end
 
    // SWAG-C7P4XB start
    // 更新前操作 判断WIN为TRUE的时候 清除掉"取消WIN原因"
    public static void removeCancelWinReason(List<Opportunity> newList, Map<Id, Opportunity> newMap, List<Opportunity> oldList, Map<Id, Opportunity> oldMap) {
        for (Opportunity opp : newList) {
            Opportunity old_opp = oldMap.get(opp.Id);
            if (opp.SAP_Send_OK__c == true && old_opp != null && old_opp.SAP_Send_OK__c == false && opp.Reason_Cancel_WIN__c != null) {
                opp.Reason_Cancel_WIN__c = null;
            }
        }
    } 
    // SWAG-C7P4XB end
 
    //LastBuy 预留产品 lt 20220315 start
    //询价失单或取消时,预留产品的"是否有效"设置为否
    public static void ReservedProFlg(List<Opportunity> newList, Map<Id, Opportunity> newMap, List<Opportunity> oldList, Map<Id, Opportunity> oldMap){
        List<Id> oppList = new List<Id>();
        List<LastbuyProduct__c> lbpflgList = new List<LastbuyProduct__c>();
 
        for (Opportunity lbOpp : newList){
            Opportunity OldLbOpp = oldMap.get(lbOpp.Id);
            if(OldLbOpp.StageName != lbOpp.StageName){
                if(lbOpp.StageName == '敗戦' || lbOpp.StageName == '削除'){
                    oppList.add(lbOpp.Id);
                }
            }
        }
 
        if(oppList.size() > 0){
            List<LastbuyProduct__c> lbpList = [select id, effectiveFLG__c,InquiryCode__c from LastbuyProduct__c where InquiryCode__c in :oppList];
            if(lbpList.size() > 0){
                for(LastbuyProduct__c lbp : lbpList){
                    if(lbp.effectiveFLG__c == true){ 
                        lbp.effectiveFLG__c = false;
                        lbpflgList.add(lbp);
                    }
                }
            }
        }
 
        if(lbpflgList.size() > 0){
            update lbpflgList;
        }
    }
    //LastBuy 预留产品 lt 20220315 end
 
}