如何根据每个帐户的机会数量重新分配Salesforce中的商机?

时间:2012-05-06 18:10:01

标签: salesforce

我创建了一个简单的类和视觉强制页面,显示“分组依据”。输出是完美的,它将显示给定帐户的机会数量:

  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的帐户。

我使用以下代码在visual force页面中获取结果:

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页面,它将显示帐户并计算网格。只是不确定一个好方法来重新分配机会。

由于 弗兰克

1 个答案:

答案 0 :(得分:0)

我不确定为什么你会把你的机会转移到另一个帐户b / c通常该帐户是组织/个人购买的东西? 但是说,忽略了原因,并专注于如何...

在插入

之前触发机会

循环触发trigger.new并计算该批次中每个帐户(或所有者)拥有的oppties数量,将其放入地图accountId进行计数[因为您可能会为同一个帐户插入10个oppties!]。如果你的计数是&gt; 10使用您拥有的任何分配助手类来更改分配。 还填充一组accountIds。

然后为每个帐户运行您的聚合,其中帐户ID为idId,您必须按AccountId进行分组。

循环结果,并将accountId的地图更新为count。

然后循环触发trigger.new并为每个oppty,通过accountId在地图中查找计数。如果计数> 10然后使用助手类进行作业。

完成了。

当然,您的任务助手类是另一个需要解决的问题 - 您如何知道将机会分配给哪个帐户/用户,是否要使用队列,自定义对象,自定义设置来管理规则等等...

但上面的概念应该有用......