为什么我的代码没有更新Account Object中的Number_of_Account__c字段?

时间:2019-09-13 05:19:08

标签: salesforce

我已经编写了一个触发器,以便每当有新联系人要创建或更新时,触发器将检查它是否与任何帐户关联?如果是,则增加帐户中的字段Number_of_Contact__c

我尝试了以下触发器,但它没有更新该字段。

trigger ContactTotal on Contact (before insert, before update, before delete, after undelete) {
    List<Account> ac = new List<Account>();
    for(Contact c : Trigger.new) {
        Account a = new Account();
        if(c.AccountId != null) {
            if(Trigger.isBefore) {
                if(Trigger.isUpdate) {
                    String temp;
                    if(Trigger.oldMap.get(c.id).AccountId != null) {
                        temp = Trigger.oldMap.get(c.id).AccountId;
                    }
                    if(temp != c.AccountId) {
                        a.Id = temp;
                        a.Number_of_Contacts__c = a.Number_of_Contacts__c - 1;
                    }
                    else {
                        a.Id = c.AccountId;
                        a.Number_of_Contacts__c =  a.Number_of_Contacts__c + 1;
                    }
                }
                else if(Trigger.isDelete) {
                    a.Id = c.AccountId;
                    a.Number_of_Contacts__c = a.Number_of_Contacts__c - 1;
                }
                else {
                    a.Id = c.AccountId;
                    if(a.Number_of_Contacts__c != null) {
                        a.Number_of_Contacts__c = a.Number_of_Contacts__c + 1;    
                    }
                }
            }
            else {
                a.Id = c.AccountId;
                a.Number_of_Contacts__c = a.Number_of_Contacts__c + 1;
            }
            ac.add(a);
        }
    }
    if(ac.size()>0) {
        upsert(ac);
    }
}

如果一个帐户有任何联系人,并且如果我们要在其中添加,更新或删除一个联系人,则应该按照操作(如“删除”)来更新Number_of_Contact__c字段,然后{{1} }应该减少。 但是我的代码结果表明,帐户的Number_of_Contact__c只有1个联系人,无论执行什么操作(删除,更新等)

0 个答案:

没有答案