【问题标题】:I am trying to add all the opportunity amount on quota actual amount field我正在尝试在配额实际金额字段中添加所有机会金额
【发布时间】:2020-02-07 12:16:47
【问题描述】:

我需要从配额开始日期和结束日期之间的所有已关闭赢得机会的机会中添加所有(SUM)金额。

  1. 机会应该被关闭赢得
  2. 关闭日期应在配额的开始和结束日期内
  3. 分配给用户,这是配额上的查找字段,等于 配额所有者

下面是代码

public with sharing class listopponquota {

public list<Opportunity> oppList{get;set;}

public listopponquota()
{
    String selectedVal ='';
    oppList = new list<Opportunity>();
    oppList();
}




*public pageReference oppList() {
    Id qId = (Id) ApexPages.currentPage().getParameters().get('id');
    system.debug('Id-->'+qId);    

    List<Opportunity> oppList1 = new List<Opportunity>();

    oppList1 = [Select Id, Name, CloseDate, StageName,OwnerId,Amount From Opportunity where StageName = 'Closed Won'];

    system.debug('quotaList1-->'+quotaList1);
    if(quotaList1.size() > 0){
        for(quota__c q : quotaList1){

            map<id,double> amtmap = new map<id,double>();
            for(aggregateresult ag : [SELECT SUM(Amount) sum,Quota__c FROM Opportunity where Quota__c in :quotaList1  and StageName = 'Closed Won' group by Quota__c ]){
                amtmap.put((ID)ag.get('Quota__c'), double.valueof(ag.get('SUM')));
                {

                    amtmap.put((ID)ag.get('Quota__c'), double.valueof(ag.get('SUM')));
                }
                list<Quota__c>Qtalist = new list<Quota__c>();

                for(id iid : QtaIds){
                    Quota__c quot = new Quota__c(id=iid); 
                    if(amtmap.containskey(iid)){
                       q.Actual_Amount__c = amtmap.get(iid);
                    }else{
                         q.Actual_Amount__c = 0;
                    } 
                    Qtalist.add(quot);       
                } 
                if(Qtalist.size()>0){
                    update Qtalist;
                    return null;
                }
                }


            }
        }
    }
}*

【问题讨论】:

    标签: salesforce


    【解决方案1】:

    部分问题可能是您没有定义quotaList1。您还应该将该 SOQL 查询拉出 for 循环。在进入循环之前获取您需要的所有记录。

    快速修改您的 SOQL 查询:

    [SELECT SUM(Amount) sum,Quota__c FROM Opportunity where Quota__c in :quotaList1 and IsWon = true group AND CloseDate &gt;= Quota__r.StartDate__c AND CloseDate &lt;= Quota__r.EndDate__c AND Quota__r.OwnerId =: System.UserInfo.getUserId() by Quota__r.Name ]

    但最重要的是,这些对象是如何关联的?机会是Quota__c 对象的子对象,还是Quota__c 上还有一个字段来定义它所绑定的opp?

    【讨论】:

      猜你喜欢
      • 2019-06-16
      • 1970-01-01
      • 2023-03-20
      • 2015-09-10
      • 2022-06-13
      • 1970-01-01
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多