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

我不确定您为什么要将机会转移到另一个帐户 b/c 通常该帐户是购买这些东西的组织/个人?但话虽如此,忽略原因并专注于如何......

在插入之前触发机会

遍历 trigger.new 并计算该批次中每个帐户(或所有者)有多少个 oppties,将其放入映射 accountId 中进行计数 [因为您可以为同一个帐户插入 10 个 oppties!]。如果您的计数大于 10,请使用您拥有的任何作业助手类更改作业。还填充一组 accountId。

然后为每个帐户运行聚合,其中 ID 在 accountIds 集中,您必须按 AccountId 分组。

循环遍历结果,并将 accountId 的映射更新为计数。

然后遍历 trigger.new 并且对于每个 oppty,通过 accountId 在地图中查找计数。如果计数 > 10,则使用您的助手类完成您的作业。

并做了。

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

但是上面的概念应该有效......

于 2012-07-27T01:11:33.183 回答