如何根据每个客户的商机数量在Salesforce中重新分配商机?
我创建了一个简单的类和可视化的force页面,其中显示了一个“groupby”。输出是完美的,它将显示给定客户拥有的机会数:如何根据每个客户的商机数量在Salesforce中重新分配商机?,salesforce,Salesforce,我创建了一个简单的类和可视化的force页面,其中显示了一个“groupby”。输出是完美的,它将显示给定客户拥有的机会数: lstAR = [ select Account.Name AccountName, AccountId, Count(CampaignID) CountResult from Opportunity where CampaignID != null group by Account.Name,AccountId having COUNT(CampaignID) &g
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个以下机会的客户
我使用以下代码在VisualForce页面中获取结果:
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');
}
public list getResults(){
list lstResult=新列表();
对于(聚合结果ar:lstAR){
oppClass objOppClass=新的oppClass(ar);
lstreult.add(objOppClass);
}
返回结果;
}
类opp类{
公共整数CountResult{get;set;}
公共字符串AccountName{get;set;}
公共字符串AccountID{get;set;}
公共类(聚合结果){
//请注意,ar将对象作为结果返回,因此您需要在此处进行类型转换
CountResult=(整数)ar.get('CountResult');
AccountName=(字符串)ar.get('AccountName');
AccountID=(字符串)ar.get('AccountID');
}
最好的方法是检查大于给定数量的数量,然后分配一个小于给定数量的客户机会
正如我所说,在代码方面,我有一个很好的小控制器和vf页面,可以在网格中显示帐户和计数。只是不确定是否有一个好的方法来重新分配机会
谢谢
弗兰克我不知道你为什么要将你的机会转移到另一个帐户b/c通常,该帐户是购买物品的组织/人员? 但也就是说,忽略为什么,关注如何 在插入之前触发Opportunity 循环使用trigger.new并计算该批中每个帐户(或所有者)有多少oppties,将其放入map accountId中进行计数[因为您可能会为同一帐户插入10个oppties!]。如果您的计数大于10,请使用您拥有的任何分配帮助器类更改分配。 还将填充AccountID集 然后为AccountId集合中的每个帐户运行聚合,您必须按AccountId分组 循环结果,并将accountId的映射更新为count 然后在trigger.new上循环,对于每个oppty,通过accountId在映射中查找计数。如果计数>10,则使用助手类执行分配 完成了 当然,您的assignment helper类是另一个需要解决的问题-您如何知道将机会分配给哪个帐户/用户,您是否将使用队列、自定义对象、自定义设置来管理规则等
但是上面的概念应该行得通…我不知道你为什么要把你的机会转移到另一个帐户b/c通常,帐户是购买这些东西的组织/个人? 但也就是说,忽略为什么,关注如何 在插入之前触发Opportunity 循环使用trigger.new并计算该批中每个帐户(或所有者)有多少oppties,将其放入map accountId中进行计数[因为您可能会为同一帐户插入10个oppties!]。如果您的计数大于10,请使用您拥有的任何分配帮助器类更改分配。 还将填充AccountID集 然后为AccountId集合中的每个帐户运行聚合,您必须按AccountId分组 循环结果,并将accountId的映射更新为count 然后在trigger.new上循环,对于每个oppty,通过accountId在映射中查找计数。如果计数>10,则使用助手类执行分配 完成了 当然,您的assignment helper类是另一个需要解决的问题-您如何知道将机会分配给哪个帐户/用户,您是否将使用队列、自定义对象、自定义设置来管理规则等
但是上面的概念应该有用…不是答案,但我只是好奇-Opportunity对象在您的业务模型中代表什么?“将Opportunity分配给少于10个Opportunity的客户”在SFDC世界中是一个非常不寻常的要求。这不是答案,但我只是好奇-Opportunity objects在您的业务模型中代表什么?“将Opportunity分配给一个Opportunity少于10个的客户”在SFDC世界中是一个非常不寻常的要求。