Я пытаюсь добавить всю сумму возможности в поле фактической суммы квоты. - PullRequest
0 голосов
/ 07 февраля 2020

Мне нужно добавить все (СУММУ) сумму от возможности всех закрытых выигранных возможностей, которая находится между начальной и конечной датой квоты.

  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;
                }
                }


            }
        }
    }
}*

1 Ответ

0 голосов
/ 08 февраля 2020

Частично проблема может заключаться в том, что вы не определяете quotaList1. Вам также, вероятно, следует извлечь этот запрос SOQL из для l oop. Соберите все записи, которые вам нужны, перед вводом l oop.

Быстрое изменение вашего запроса SOQL:

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

Самое главное, как это сделать? объекты связаны? Являются ли дочерние объекты объекта Quota__c, или на Quota__c также есть поле, определяющее противоположность, с которой он связан?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...