我创建了一个简单的类和视觉强制页面,显示“分组依据”。输出是完美的,它将显示给定帐户的机会数量:
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页面,它将显示帐户并计算网格。只是不确定一个好方法来重新分配机会。
由于 弗兰克
答案 0 :(得分:0)
我不确定为什么你会把你的机会转移到另一个帐户b / c通常该帐户是组织/个人购买的东西? 但是说,忽略了原因,并专注于如何...
在插入
之前触发机会循环触发trigger.new并计算该批次中每个帐户(或所有者)拥有的oppties数量,将其放入地图accountId进行计数[因为您可能会为同一个帐户插入10个oppties!]。如果你的计数是&gt; 10使用您拥有的任何分配助手类来更改分配。 还填充一组accountIds。
然后为每个帐户运行您的聚合,其中帐户ID为idId,您必须按AccountId进行分组。
循环结果,并将accountId的地图更新为count。
然后循环触发trigger.new并为每个oppty,通过accountId在地图中查找计数。如果计数> 10然后使用助手类进行作业。
完成了。
当然,您的任务助手类是另一个需要解决的问题 - 您如何知道将机会分配给哪个帐户/用户,是否要使用队列,自定义对象,自定义设置来管理规则等等...
但上面的概念应该有用......