The result should display a table of all accounts from a specific user and the aggregateresult of the related opportunities and sales.
- I create a map (AccList) of all accounts and add the Ids to a Set.
- I create a map (OppMap) where I aggregate values which are related to the set Ids.
- I create a map (SalMap) where I aggregate values which are related to the set Ids.
How can I add the values of the OppMap and the SalMap to the Map AccList?
I tried to create a new aggregateresult, but than I get an error "Illegal assignment from Account to AggregateResult" --> AggregateResult finalmap = AccList.get((Id)OppAr.get('AccId'));
public class VTPv9 {
Public List<ResultWrapper> resultList {get; set;}
public class ResultWrapper{
public Id AccId {get; set;}
public String AccName {get; set;}
public Decimal expectedRevenue {get; set;}
public Decimal amount {get; set;}
public Decimal sales {get; set;}
}
public VTPv9() {
getcreatemaps();
}
public void getcreatemaps() {
resultList = new List<ResultWrapper>();
// MAP Account
//create Map with Account who related to selected owner
Map<Id, Account> AccList = new Map<Id, Account>([SELECT Id FROM Account WHERE OwnerId = '005b0000001UAm4AAG']);
Set<Id> AccIdSet = new Set<Id>();
for(Account Acc:AccList.values()){
AccIdSet.add(Acc.Id);
}
system.debug('size AccList ' +AccList.size());
system.debug('size AccIdSet ' +AccIdSet.size());
//MAP Opportunity
Map<Id, AggregateResult> OppMap = new Map<Id, AggregateResult>();
for(AggregateResult OppAr :[SELECT Account.Id AccId, Sum(ExpectedRevenue) Rev, Sum(Amount) Fin FROM Opportunity WHERE Account.Id = :AccIdSet AND OwnerId = '005b0000001UAm4AAG' AND CloseDate = THIS_YEAR AND (IsClosed = false OR IsWon = true) GROUP BY Account.Id]) {
OppMap.put((Id)OppAr.get('AccId'), OppAr);
ResultWrapper combinedResult = new ResultWrapper();
//AggregateResult finalmap = AccList.get((Id)OppAr.get('AccId'));
combinedResult.Accid = (Id)OppAr.get('AccId');
combinedResult.expectedRevenue = (Decimal)OppAr.get('Rev');
combinedResult.amount = (Decimal)OppAr.get('Fin');
system.debug('Id: ' + (Id)OppAr.get('AccId') + ' | ExpectedRevenue: ' + (Decimal)OppAr.get('rev') + ' | Amount: ' + (Decimal)OppAr.get('fin'));
resultList.add(combinedResult);
system.debug('combinedResult: ' + resultlist);
}
// MAP Sales
Map<Id, AggregateResult> SalMap = new Map <Id, AggregateResult>();
for(AggregateResult SalAr :[SELECT Einzelrisiko__r.Gruppenvertrag__r.Unternehmen__r.Id AccId, Sum(BWS_Brutto__c) BWS FROM Umsatz__c WHERE Einzelrisiko__r.Gruppenvertrag__r.Unternehmen__r.Id = :AccIdSet AND Berater__r.Id = '005b0000001UAm4AAG' AND Bewertungsmonat__c = THIS_YEAR GROUP BY Einzelrisiko__r.Gruppenvertrag__r.Unternehmen__r.Id]) {
SalMap.put((Id)SalAr.get('AccId'), SalAr);
ResultWrapper combinedResult = new ResultWrapper();
combinedResult.Accid = (Id)SalAr.get('AccId');
combinedResult.sales = (Decimal)SalAr.get('BWS');
system.debug('Id: ' + (Id)SalAr.get('AccId') + ' | Sales: ' + (Decimal)SalAr.get('BWS'));
resultList.add(combinedResult);
system.debug('combinedResult: ' + resultlist);
}
}
}