0

そのアカウント用に作成されたケースにアカウント所有者名を配置するトリガーを作成しました。それは動作し、200 の私の一括テストでも実行されます。コードは次のとおりです。

trigger CaseBeforeInsertUpdate on Case (before insert, before update) {

   Set<Id> accountIds = new Set<Id>();
   Set<Id> accountOwnerIds = new Set<Id>(); 

   for (Case c : Trigger.new) {
        if(c.AccountId != null) {
            accountIds.add(c.AccountId);
        }       
   }
   Map<Id,Account> accountMap = new Map<Id, Account>([select Id, OwnerId from Account where Id IN :accountIds]);

   for (Account a : accountMap.values()) {
        if(a.OwnerId != null) {
            accountOwnerIds.add(a.OwnerId);
        }
   }

   Map<Id, User> userMap = new Map<Id,User>([select Name from User where Id IN :accountOwnerIds]);

   if(userMap.size() > 0) {
        for(Case c: Trigger.new) {  
            c.MerchantOwner__c = userMap.get(accountMap.get(c.AccountId).OwnerId).name;
        }
   }

}

偶然、バグを発見しましたが、何が問題なのかわかりません。ケース リストビュー (つまり、自分のオープン ケース) に移動し、複数のケースを選択して閉じると、次のエラーが表示されます。テストクラスでケースをまとめてクローズすると、すべて正常に動作します..

私の最善の推測では、アカウントが関連付けられていないケースに対してこれを実行しようとしていますが、私が見る限り、最初にアカウント ID セットに追加しないことで、これらのケースを更新しないようにしています。

私が間違っていることを誰かが知っていますか?どんな助けでも大歓迎です。

4

1 に答える 1