LiJinHuan
2022-03-22 c0515c2f47cafe8da39089d2173e7b41f56e5f3e
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
/**
 * 客户同步 在SP、GI主担当变化时更新询价权限
 */
trigger AccountTrigger on Account (after insert, after update, before delete, before insert, before update, after delete ) {
    if (StaticParameter.EscapeAccountTrigger) {
System.debug('Escape、EscapeAccountTrigger:::::' + StaticParameter.EscapeAccountTrigger);
        return;
    }
    if ((Trigger.isAfter && Trigger.isInsert) || (Trigger.isAfter && Trigger.isUpdate) || (Trigger.isBefore && Trigger.isDelete)) {
        // 同步到 Account2__c
        AccountTrigger.syncAccount2(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
//        // 同步到 MB_Account__c
        //AccountTrigger.syncMBAccount(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
    }
    if ((Trigger.isAfter && Trigger.isInsert) || Trigger.isUpdate || (Trigger.isAfter && Trigger.isDelete)) {
        // 经销商有效协议判断 BY GAO
        AccountEffectiveContract.syncAccountContract(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
    }
 
    //CHAN-ADE32V 检查战略科室中的科室名是否重复 by wei
    if (Trigger.isBefore && (Trigger.isInsert || Trigger.isUpdate)) {
        System.debug('=============> checkDepartment start');
        AccountTrigger.checkDepartment(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        if(Trigger.isUpdate){
            for(Account acc : Trigger.new){
                if( acc.Is_Active__c == '無効' && acc.OwnerId == UserInfo.getUserId()){
                    acc.Is_Active__c = '草案中';
 
                }
        
            }
        }
    }   
    if (System.Test.isRunningTest()) {
        if(Trigger.isInsert & Trigger.isAfter){
            AfterCreateHospitalTrigger.generateDepartmentClass(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        }
    }
    if(Trigger.isUpdate && Trigger.isBefore){
    }
    
    if(Trigger.isAfter && Trigger.isUpdate){
        System.debug('+++====+++===+++== OwnerId Start');
        AccountTrigger.changeOwnerId(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        AccountTrigger.setDepartmentOwner(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        AfterCreateHospitalTrigger.generateDepartmentClass(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        AccountTrigger.fseChangeToUpdRepair(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        /**
         * HWAG-B4PCZ5 2018-09-19 start 如果客户更新SP,GI 主担当,
         * 则删除原来的用户在所对应询价的共享规则,并根据新主担当创建新共享规则
         */
        list<Account> updateAcc = new list<Account>();
        list<ID> RemoveUsers = new list<ID>();
        list<string> allViceAliasList = new list<string>();
        for(Account NewAcc : Trigger.new) {
            Account OldAcc =  Trigger.oldMap.get(NewAcc.id);
            if(NewAcc.FSE_GI_Main_Leader__c != OldAcc.FSE_GI_Main_Leader__c 
                || NewAcc.FSE_SP_Main_Leader__c != OldAcc.FSE_SP_Main_Leader__c
                /* SWAG-B7LADC 2018/12/19 FSE ENG   start*/
                || NewAcc.FSE_ENG_Main_Leader__c != OldAcc.FSE_ENG_Main_Leader__c
                || NewAcc.FSE_ENG_Vice_Leader__c != OldAcc.FSE_ENG_Vice_Leader__c
                || NewAcc.FSE_GI_Vice_Leader__c != OldAcc.FSE_GI_Vice_Leader__c
                || NewAcc.FSE_SP_Vice_Leader__c != OldAcc.FSE_SP_Vice_Leader__c
                /* SWAG-B7LADC 2018/12/19 FSE ENG   start*/
                )
            {
                updateAcc.add(NewAcc);
                if(OldAcc.FSE_GI_Main_Leader__c !=null && NewAcc.FSE_GI_Main_Leader__c != OldAcc.FSE_GI_Main_Leader__c){
                    RemoveUsers.add(OldAcc.FSE_GI_Main_Leader__c);
                }
                if(OldAcc.FSE_SP_Main_Leader__c !=null && NewAcc.FSE_SP_Main_Leader__c != OldAcc.FSE_SP_Main_Leader__c){
                    RemoveUsers.add(OldAcc.FSE_SP_Main_Leader__c);
                }
                /* SWAG-B7LADC 2018/12/19 FSE ENG   start*/
                if(OldAcc.FSE_ENG_Main_Leader__c !=null && NewAcc.FSE_ENG_Main_Leader__c != OldAcc.FSE_ENG_Main_Leader__c){
                    RemoveUsers.add(OldAcc.FSE_ENG_Main_Leader__c);
                }
                if( OldAcc.FSE_ENG_Vice_Leader__c != null && NewAcc.FSE_ENG_Vice_Leader__c != OldAcc.FSE_ENG_Vice_Leader__c){
                    for(String UsrName : OldAcc.FSE_ENG_Vice_Leader__c.split('[,\\,]')){
                        allViceAliasList.add(UsrName);
                    }
 
                 }
                if(OldAcc.FSE_GI_Vice_Leader__c != null &&  NewAcc.FSE_GI_Vice_Leader__c != OldAcc.FSE_GI_Vice_Leader__c){
                    for(String UsrName : OldAcc.FSE_GI_Vice_Leader__c.split('[,\\,]')){
                        allViceAliasList.add(UsrName);
                    }
                 }
                if(OldAcc.FSE_SP_Vice_Leader__c != null && NewAcc.FSE_SP_Vice_Leader__c != OldAcc.FSE_SP_Vice_Leader__c){
                    for(String UsrName : OldAcc.FSE_SP_Vice_Leader__c.split('[,\\,]')){
                        allViceAliasList.add(UsrName);
                    }
                 }
                /* SWAG-B7LADC 2018/12/19 FSE ENG   start*/
            }
 
        }
        //throw new ControllerUtil.myException('Anydatatype_msgaaaaaaaa:'+allViceAliasList);
 
        if(updateAcc.size() > 0){
            if(allViceAliasList.size() > 0){
                 List<User> loopUser = [select id from user where Alias__c in:allViceAliasList];
                 for(User temUser : loopUser){
                    RemoveUsers.add(temUser.id);
                 }
            }
            list<Statu_Achievements__c> updateSA = 
            [select id,Opportunity__c from Statu_Achievements__c where 
            Opportunity__r.Hospital__c in : updateAcc
            and DeliveryDate__c != null 
            and ForecastAccuracyObject__c = true
             ];    
            //throw new ControllerUtil.myException('Anydatatype_msgaaaaaaaa:'+updateSA);
            if(updateSA != null || updateSA.size() > 0){
                list<ID> temOpportunity = new list<ID>();
                for(Statu_Achievements__c TemSA :updateSA){
                    temOpportunity.add(TemSA.Opportunity__c);
                }
                list<OpportunityShare> deleteOS = 
                [select id from OpportunityShare 
                    where UserOrGroupId in: RemoveUsers 
                    and OpportunityId in: temOpportunity
                    and RowCause = 'Manual' 
                ];
                if(deleteOS != null &&deleteOS.size() > 0){
                    delete deleteOS;
                }
                StaticParameter.EscapeNFM010UpsertStatuAchievementsTrigger = true;
                upsert updateSA;
            }
        }
        //HWAG-B4PCZ5 2018-09-19 end 
    }
}