高章伟
2022-03-18 a0bc3e3af59aed35334bdc38256a7a1dfe8aecf3
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
public without sharing class LostCancelReportHandler extends Oly_TriggerHandler {
    private Map<Id, Lost_cancel_report__c> newMap;
    private Map<Id, Lost_cancel_report__c> oldMap;
    private List<Lost_cancel_report__c> newList;
    private List<Lost_cancel_report__c> oldList;
 
    public LostCancelReportHandler() {
        this.newMap = (Map<Id, Lost_cancel_report__c>) Trigger.newMap;
        this.oldMap = (Map<Id, Lost_cancel_report__c>) Trigger.oldMap;
        this.newList = (List<Lost_cancel_report__c>) Trigger.new;
        this.oldList = (List<Lost_cancel_report__c>) Trigger.old;
    }
 
    // 更新经理(销售) 20200302 Start
    protected override void beforeUpdate() {
        // 更新经理(销售)信息
        updateManager();
    }
    // 更新审批人 20200302 End
 
    protected override void afterUpdate() {
 
        // 更新询价的失单信息
        //updateLostInfo();
        updateopp();    // by tcm
    }
    /*
       private void updateLostInfo() {
        List<Opportunity> oppList = new List<Opportunity>();
        //2018年7月16日  CHAN-B2HCB7 start 获取字段
        List<Lost_cancel_report__c> temLCRList =
            [select id,Opportunity__c,Report_Status__c,
            Lost_By_Company__c,Lost_reason_main__c , of_lost_system_processor__c,
            Lost_Reason_Sub__c, Lost_By_Product__c,
            CompetitorProduct1__r.id, CompetitorProduct1__r.Name,
            CompetitorProduct2__r.id, CompetitorProduct2__r.Name,
            CompetitorProduct3__r.id, CompetitorProduct3__r.Name,
            CompetitorProduct4__r.id, CompetitorProduct4__r.Name
            from Lost_cancel_report__c
            where id in: newList];
        // 2018年7月16日  CHAN-B2HCB7 end 获取字段
        for (Lost_cancel_report__c n : temLCRList) {
            //Lost_cancel_report__c o = oldMap.get(n.id); && o.Report_Status__c != '批准'
            if (n.Report_Status__c  == '批准' ) {
                Opportunity opp = new Opportunity();
                opp.id = n.Opportunity__c;
                opp.Lost_Cancel_Report__c = n.id;
                //2018年7月16日  CHAN-B2HCB7 start 为业务机会对象的竞争对手产品2、竞争对手产品3和竞争对手产品4赋值
                if (n.CompetitorProduct2__r.id == '01t10000000Tqam') {
                    opp.CompetitorProduct2__c = n.Lost_By_Product__c;
                } else {
                    opp.CompetitorProduct2__c = n.CompetitorProduct2__r.Name;
                }
                if (n.CompetitorProduct3__r.id == '01t10000000Tqam') {
                    opp.CompetitorProduct3__c = n.Lost_By_Product__c;
                } else {
                    opp.CompetitorProduct3__c = n.CompetitorProduct3__r.Name;
                }
                if (n.CompetitorProduct4__r.id == '01t10000000Tqam') {
                    opp.CompetitorProduct4__c = n.Lost_By_Product__c;
                } else {
                    opp.CompetitorProduct4__c = n.CompetitorProduct4__r.Name;
                }
                //2018年7月16日  CHAN-B2HCB7 end 为业务机会对象的竞争对手产品2、竞争对手产品3和竞争对手产品4赋值
                //2018年7月16日  CHAN-B2X9SW  start 为业务机会对象的询价重复赋值
                /*if (n.Cancel_Reason__c == '询价重复') {
                    //opp.Opportunity_repeated_text__c = n.Opportunity_repeated__c;
                }
                //2018年7月16日  CHAN-B2X9SW  end 为业务机会对象的询价重复赋值 by张玉山
                oppList.add(opp);
            }
        }
        if (oppList.size() > 0) update oppList;
       }
     */
    // 更新经理(销售) 20200302 Start
    private void  updateManager() {
        List<String> userIdList = new List<String>();
        for (Lost_cancel_report__c n: newList) {
            if (Trigger.isUpdate && (n.Report_Status__c != oldMap.get(n.Id).Report_Status__c) && (n.Report_Status__c == '申请中')) {
                userIdList.add(n.OwnerId__c);
            }
        }
 
        Map<String, User> userMap = new Map<String, User>();
        List<User> userList = [select Id, SalesManager__c from user where id =: userIdList];
 
        for (User u : userList) {
            String sid = u.Id;
            userMap.put(sid.substring(0,15), u);
        }
 
        for (Lost_cancel_report__c n : newList) {
            if (Trigger.isUpdate && (n.Report_Status__c != oldMap.get(n.Id).Report_Status__c) && (n.Report_Status__c == '申请中')) {
                if (userMap.get(n.OwnerId__c) != null) {
                    n.Manager_sales__c = userMap.get(n.OwnerId__c).SalesManager__c;
                }
            }
        }
    }
    // 更新审批人 20200302 End
 
    // tcm 20211126 更新询价信息 start
    private void  updateopp() {
        // 清除不需要更新的
        Map<Id,Lost_cancel_report__c> arrMap=new Map<Id,Lost_cancel_report__c>();
        for (String newlcro : newMap.keyset()) {
            if (newMap.get(newlcro).Report_Status__c=='批准'&&oldMap.get(newlcro).Report_Status__c!='批准') {
                arrMap.put(newlcro,newMap.get(newlcro));
            }
        }
        List<PCLLostProduct__c> lcrList=[select id,PCLLostBrand__r.Lost_cancel_report__r.of_lost_system_processor__c,PCLLostBrand__r.Lost_Reason_Sub__c,PCLLostBrand__r.Lost_cancel_report__r.LostTotalAmount__c,PCLLostBrand__r.Lost_cancel_report__r.LostType__c,PCLLostBrand__r.Lost_By_Company__c,PCLLostBrand__r.Lost_By_Company_Mannual__c,PCLLostBrand__r.LostPrice__c,LostProduct__r.Name, PCLLostBrand__r.Lost_reason_main__c,PCLLostBrand__r.Agency__r.Name,PCLLostBrand__r.AgencyMannual__c,PCLLostBrand__r.Lost_cancel_report__r.Opportunity__r.Name,Opportunity__c, LostProductMannual__c from PCLLostProduct__c where PCLLostBrand__r.Lost_cancel_report__c in : arrMap.keyset()];
        List<Opportunity> oppList=new List<Opportunity>();
        for (String lcro : arrMap.keyset()) {
            // 给产品赋值
            Integer i=0;
            //赋值询价去重
            List<String> jxsList=new List<String>();    //经销商
            List<String> ppList=new List<String>();     //失单品牌
            // List<String> yyList=new List<String>();     //失单原因
            //初始化
            Opportunity opp=new Opportunity();
            opp.Id=arrMap.get(lcro).Opportunity__c; opp.PCLLostBrands__c=''; opp.Agencies__c='';    //Id ,品牌,经销商
            // for产品
            for (PCLLostProduct__c lcr : lcrList) {
                if (opp.Id==lcr.Opportunity__c) {
                    i++;
                    //给询价不同字段赋值 失单
                    if (lcr.PCLLostBrand__r.Lost_cancel_report__r.LostType__c=='失单') {
                        if (i==1) {
                            opp.CompetitorProduct1__c=lcr.LostProduct__r.Name != null ? lcr.LostProduct__r.Name : lcr.LostProductMannual__c;
                        }else if (i==2) {
                            opp.CompetitorProduct2__c=lcr.LostProduct__r.Name != null ? lcr.LostProduct__r.Name : lcr.LostProductMannual__c;
                        }else if (i==3) {
                            opp.CompetitorProduct3__c=lcr.LostProduct__r.Name != null ? lcr.LostProduct__r.Name : lcr.LostProductMannual__c;
                        }
                    }
                    // 失单理由
                    if (i==1) {
                        opp.Lost_reason_main__c=lcr.PCLLostBrand__r.Lost_reason_main__c;
                        opp.Lost_Reason_Sub__c=lcr.PCLLostBrand__r.Lost_Reason_Sub__c;
 
                    }
 
 
                    //经销商
                    if (!jxsList.contains(lcr.PCLLostBrand__r.Agency__r.Name)) {
                        jxsList.add(lcr.PCLLostBrand__r.Agency__r.Name);
                        if (jxsList.size()==1) {
                            if (lcr.PCLLostBrand__r.AgencyMannual__c==null) {
                                opp.Agencies__c+=lcr.PCLLostBrand__r.Agency__r.Name;
                            }else {
                                opp.Agencies__c+=lcr.PCLLostBrand__r.AgencyMannual__c;
                            }
                        }else {
                            if (lcr.PCLLostBrand__r.AgencyMannual__c==null) {
                                opp.Agencies__c+=','+lcr.PCLLostBrand__r.Agency__r.Name;
                            }else {
                                opp.Agencies__c+=','+lcr.PCLLostBrand__r.AgencyMannual__c;
                            }
                        }
                    }
                    //失单品牌
                    if (!ppList.contains(lcr.PCLLostBrand__r.Lost_By_Company__c)) {
                        ppList.add(lcr.PCLLostBrand__r.Lost_By_Company__c);
                        if (ppList.size()==1) {
                            if (lcr.PCLLostBrand__r.Lost_By_Company__c=='其他') {
                                opp.PCLLostBrands__c+=lcr.PCLLostBrand__r.Lost_By_Company_Mannual__c;
                            }else {
                                opp.PCLLostBrands__c+=lcr.PCLLostBrand__r.Lost_By_Company__c;
                            }
                        }else {
                            if (lcr.PCLLostBrand__r.Lost_By_Company__c=='其他') {
                                opp.PCLLostBrands__c+=','+lcr.PCLLostBrand__r.Lost_By_Company_Mannual__c;
                            }else {
                                opp.PCLLostBrands__c+=','+lcr.PCLLostBrand__r.Lost_By_Company__c;
                            }
                        }
                    }
                    // //失单原因
                    // if (!yyList.contains(lcr.PCLLostBrand__r.Lost_reason_main__c)) {
                    //     yyList.add(lcr.PCLLostBrand__r.Lost_reason_main__c);
                    //     if (yyList.size()==1) {
                    //         opp.Lost_reason_mains__c+=lcr.PCLLostBrand__r.Lost_reason_main__c+',';
                    //     }else {
                    //         opp.Lost_reason_mains__c+=','+lcr.PCLLostBrand__r.Lost_reason_main__c;
                    //     }
                    // }
                    //失单总金额
                    opp.LostPrices__c=lcr.PCLLostBrand__r.Lost_cancel_report__r.LostTotalAmount__c;
                    opp.of_lost_system_processor__c=lcr.PCLLostBrand__r.Lost_cancel_report__r.of_lost_system_processor__c;
                }
            }
            oppList.add(opp);
        }
        update oppList;
    }
    // tcm 20211126 更新询价信息 end
 
}