111
沙世明
2022-11-22 928399eceec50e3d37ea08669a12789a9410a9d2
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
public with sharing class MCAEHandler extends Oly_TriggerHandler{
 
    private Map<Id, Maintenance_Contract_Asset_Estimate__c> newMap;
    private Map<Id, Maintenance_Contract_Asset_Estimate__c> oldMap;
    private List<Maintenance_Contract_Asset_Estimate__c> newList;
    private List<Maintenance_Contract_Asset_Estimate__c> oldList;
 
 
    public MCAEHandler () {
        this.newMap = (Map<Id, Maintenance_Contract_Asset_Estimate__c>) Trigger.newMap;
        this.oldMap = (Map<Id, Maintenance_Contract_Asset_Estimate__c>) Trigger.oldMap;
        this.newList = (List<Maintenance_Contract_Asset_Estimate__c>) Trigger.new;
        this.oldList = (List<Maintenance_Contract_Asset_Estimate__c>) Trigger.old;
    }
 
    protected override void afterUpdate() {
        updateMainContract();
    }
 
    public void updateMainContract(){
        System.debug(LoggingLevel.INFO, '*** in update: ');
        Map<String,List<Maintenance_Contract_Asset_Estimate__c>> mcaMap = new Map<String,List<Maintenance_Contract_Asset_Estimate__c>>();
        for (Maintenance_Contract_Asset_Estimate__c  mca: newList) {
            if(mca.Repair_Price__c!=0){
                List<Maintenance_Contract_Asset_Estimate__c> mcaList = new List<Maintenance_Contract_Asset_Estimate__c>();
                mcaList.add(mca);
                if(mcaMap.containsKey(mca.Maintenance_Contract_Estimate__c)){
                    List <Maintenance_Contract_Asset_Estimate__c> mlist = mcaMap.get(mca.Maintenance_Contract_Estimate__c);
                    mlist.add(mca);
                    mcaMap.put(mca.Maintenance_Contract_Estimate__c,mlist);
                }else{
                    mcaMap.put(mca.Maintenance_Contract_Estimate__c,mcaList);
                }
            }
            
        }
 
        List<Maintenance_Contract__c> upMContractList = new List<Maintenance_Contract__c>();
        for (Maintenance_Contract_Estimate__c mc : [SELECT Id, Maintenance_Contract__c FROM Maintenance_Contract_Estimate__c WHERE Id IN:mcaMap.keySet()]) {
            Boolean hasThirdPartyReturnc = false;
            for (Maintenance_Contract_Asset_Estimate__c mca: mcaMap.get(mc.Id)) {
                if(mca.Third_Party_Return__c == true){
                    hasThirdPartyReturnc = true;
                }
            System.debug(LoggingLevel.INFO, '*** boolean: ' + hasThirdPartyReturnc);
            }
 
            if(mc.Maintenance_Contract__c != null){
                Maintenance_Contract__c mContract = new Maintenance_Contract__c();
                mContract.Id = mc.Maintenance_Contract__c;
                if(hasThirdPartyReturnc == true){
                    mContract.Third_Party_Return_Contract__c = true;
                }
 
                System.debug(LoggingLevel.INFO, '*** upMContractList: ' + upMContractList);
                upMContractList.add(mContract);
            }
 
        }
        System.debug(LoggingLevel.INFO, '*** upMContractList: ' + upMContractList);
 
        update upMContractList;
 
 
    }
 
    protected override void beforeUpdate() {
        
    }
}