Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据每个客户的商机数量在Salesforce中重新分配商机?_Salesforce - Fatal编程技术网

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

如何根据每个客户的商机数量在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

我创建了一个简单的类和可视化的force页面,其中显示了一个“groupby”。输出是完美的,它将显示给定客户拥有的机会数:

  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世界中是一个非常不寻常的要求。