2

「グループ化」を表示する簡単なクラスと視覚力のページを作成しました。出力は完璧です。特定のアカウントにある機会の数が表示されます。

  lstAR = [ select Account.Name AccountName, AccountId, Count(CampaignID) CountResult from Opportunity where CampaignID != null group by Account.Name,AccountId having COUNT(CampaignID) > 0 LIMIT 500 ];

アカウントに 10 件を超える商談がある場合、その商談を 10 件未満の別のアカウントに割り当てることができるようにしたいと思います。

次のコードを使用して、視覚力ページで結果を取得しました。

public list<OppClass> getResults() {  
  list<OppClass> lstResult = new list<OppClass>();  
  for (AggregateResult ar: lstAR) {  
    oppClass objOppClass = new oppClass(ar);  

      lstResult.add(objOppClass);  
  }

  return lstResult;  
}  

class oppClass {  
  public Integer CountResult { get;set; }  

  public String AccountName { get;set; }  

  public String AccountID { get;set; }

  public oppClass(AggregateResult ar) {  
    //Note that ar returns objects as results, so you need type conversion here  
    CountResult = (Integer)ar.get('CountResult');  

    AccountName = (String)ar.get('AccountName');  
    AccountID = (String)ar.get('AccountID');
  }

所定の数よりも多い数を確認し、その数よりも少ないアカウントを商談に割り当てるには、どのような方法が最適でしょうか?

私が言ったように、コードに関しては、アカウントとカウントをグリッドに表示する素敵な小さなコントローラーと vf ページがあります。再割り当ての機会を実行するための適切なアプローチがわからないだけです。

ありがとうフランク

4

1 に答える 1

0

なぜあなたの商談を別のアカウントに移すのかわかりません。通常、アカウントは組織/物を購入する人ですか? しかし、そうは言っても、理由を無視して、方法に焦点を当てます...

商談のトリガー、挿入前

trigger.new をループして、そのバッチ内のアカウント (または所有者) ごとにいくつの案件があるかをカウントし、それをカウントするマップ accountId に入れます [同じアカウントに 10 件の案件を挿入できるため!]。カウントが 10 を超える場合は、割り当てヘルパー クラスを使用して割り当てを変更します。accountIds のセットも設定します。

次に、accountIds のセットで Id が指定されているアカウントごとに集計を実行します。AccountId でグループ化する必要があります。

結果をループし、accountId のマップを count に更新します。

次に、trigger.new をループし、機会ごとに、accountId カウントでマップを検索します。カウントが 10 を超える場合は、ヘルパー クラスを使用して割り当てを行います。

そして完了。

もちろん、割り当てヘルパー クラスも別の問題です。機会を割り当てるアカウント/ユーザーをどのように知るか、ルールを管理するためにキュー、カスタム オブジェクト、カスタム設定を使用するかどうかなどです。

しかし、上記の概念はうまくいくはずです...

于 2012-07-27T01:11:33.183 に答える