そのアカウント用に作成されたケースにアカウント所有者名を配置するトリガーを作成しました。それは動作し、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 セットに追加しないことで、これらのケースを更新しないようにしています。
私が間違っていることを誰かが知っていますか?どんな助けでも大歓迎です。