You need to sign in to do that
Don't have an account?
Nandhakumar Murali
Duplicate id in list:
I'm not sure how to debug this, I'm getting duplicate list error, I used map to remove duplicated from the list, but still getting this error. I am using only one update and that is it to map.
public with sharing class CampaignRollupUtils {
public CampaignRollupStats recalcRollups(Set<Id> campaignIds) {
Map<Id,List<Opportunity>> mCampId_Opps = new Map<Id,List<Opportunity>>();
Map<Id, Campaign> mCampId_Campaign = new Map<Id, Campaign>();
List<CampaignWrapper> campWraps = new List<CampaignWrapper>();
List<Opportunity> opps = new List<Opportunity>();
CampaignRollupStats stats = new CampaignRollupStats();
//Map<Id, Campaign> mCampId_Campaign = new Map<Id, Campaign>();
List<Campaign> camps = [select id, name, number_of_new_business_units__c,
Add_On_Units__c,New_Business_Setup__c,Add_On_Setup__c,
New_Business_Recurring__c,Add_On_Recurring__c,
NumberOfOpportunities
from campaign
where id in :campaignIds ];
if(!camps.isEmpty()) {
for(Campaign c : camps) {
mCampId_Campaign.put(c.id,c);
}
}
//List<Opportunity> opps = new List<Opportunity>();
opps = [select id, campaignId,type,
(select id,status,opportunity.type,
Total_Cost_of_One_Time_Purchases__c,
Average_Monthly_Recurring__c
from Quotes)
from Opportunity
where campaignId in :campaignIds];
//Map<Id,List<Opportunity>> mCampId_Opps = new Map<Id,List<Opportunity>>();
if(!opps.isEmpty()) {
for(Opportunity opp : opps) {
if(!mCampId_Opps.containsKey(opp.campaignId)){
mCampId_Opps.put(opp.campaignId, new List<Opportunity>());
}
mCampId_Opps.get(opp.campaignId).add(opp);
}
for(Id campId : mCampId_Opps.keySet()) {
campWraps.add(new CampaignWrapper(mCampId_Campaign.get(campId), mCampId_Opps.get(campId)));
}
}
//-- hund down camps with no opps and still add them to the wrapper
if(!camps.isEmpty()) {
for(Campaign c : camps) {
if(c.NumberOfOpportunities == 0) {
campWraps.add(new CampaignWrapper(c,null));
}
}
}
System.debug(logginglevel.warn,'\n\n\n Campaign Wrapper='+campWraps +'\n\n\n');
Map<Id,Campaign> mapCampsToUpd = new Map<Id,Campaign>();
if(!campWraps.isEmpty()) {
List<Campaign> campsToUpd = new List<Campaign>();
for(CampaignWrapper cWrap : campWraps) {
Campaign camp = cWrap.campaign;
camp.number_of_new_business_units__c = 0;
camp.New_Business_Setup__c = 0;
camp.New_Business_Recurring__c = 0;
camp.Add_On_Units__c = 0;
camp.Add_On_Setup__c = 0;
camp.Add_On_Recurring__c = 0;
if(cWrap.opps != null && !cWrap.opps.isEmpty()) {
for(Opportunity opp : cWrap.opps) {
stats.numOppsProcessed ++;
if(opp.quotes != null) {
for(Quote q : opp.quotes) {
Boolean processed = false;
if('New Business'.equalsIgnoreCase(q.opportunity.type)
&& q.status == 'Approved') {
processed = true;
camp.number_of_new_business_units__c ++;
camp.New_Business_Setup__c +=q.Total_Cost_of_One_Time_Purchases__c;
camp.New_Business_Recurring__c += q.Average_Monthly_Recurring__c;
}
if('Add-on Opportunity'.equalsIgnoreCase(q.opportunity.type)
&& q.status == 'Approved') {
processed = true;
camp.Add_On_Units__c ++;
camp.Add_On_Setup__c += q.Total_Cost_of_One_Time_Purchases__c;
camp.Add_On_Recurring__c += q.Average_Monthly_Recurring__c;
}
if(processed) {
stats.numQuotesProcessed ++;
}
}
}
}
}
camp.Last_Update_For_Revenue__c = Date.today();
campsToUpd.add(camp);
}
for(Campaign ca : campsToUpd) {
mapCampsToUpd.put(ca.Id, ca);
}
if(!mapCampsToUpd.values().isEmpty()){
update mapCampsToUpd.values();
}
// if(!campsToUpd.isEmpty()) {
// stats.numCampsUpdated = campsToUpd.size();
// update campsToUpd;
// }
}
return stats;
}
public class CampaignWrapper {
public Campaign campaign {get;set;}
public List<Opportunity> opps {get;set;}
public CampaignWrapper(Campaign camp, List<Opportunity> pOpps) {
this.campaign = camp;
camp.number_of_new_business_units__c = 0;
camp.Add_On_Units__c = 0;
camp.Add_On_Setup__c = 0;
camp.Add_On_Recurring__c = 0;
camp.New_Business_Setup__c = 0;
camp.New_Business_Recurring__c = 0;
this.opps = pOpps;
}
}
}
public with sharing class CampaignRollupUtils {
public CampaignRollupStats recalcRollups(Set<Id> campaignIds) {
Map<Id,List<Opportunity>> mCampId_Opps = new Map<Id,List<Opportunity>>();
Map<Id, Campaign> mCampId_Campaign = new Map<Id, Campaign>();
List<CampaignWrapper> campWraps = new List<CampaignWrapper>();
List<Opportunity> opps = new List<Opportunity>();
CampaignRollupStats stats = new CampaignRollupStats();
//Map<Id, Campaign> mCampId_Campaign = new Map<Id, Campaign>();
List<Campaign> camps = [select id, name, number_of_new_business_units__c,
Add_On_Units__c,New_Business_Setup__c,Add_On_Setup__c,
New_Business_Recurring__c,Add_On_Recurring__c,
NumberOfOpportunities
from campaign
where id in :campaignIds ];
if(!camps.isEmpty()) {
for(Campaign c : camps) {
mCampId_Campaign.put(c.id,c);
}
}
//List<Opportunity> opps = new List<Opportunity>();
opps = [select id, campaignId,type,
(select id,status,opportunity.type,
Total_Cost_of_One_Time_Purchases__c,
Average_Monthly_Recurring__c
from Quotes)
from Opportunity
where campaignId in :campaignIds];
//Map<Id,List<Opportunity>> mCampId_Opps = new Map<Id,List<Opportunity>>();
if(!opps.isEmpty()) {
for(Opportunity opp : opps) {
if(!mCampId_Opps.containsKey(opp.campaignId)){
mCampId_Opps.put(opp.campaignId, new List<Opportunity>());
}
mCampId_Opps.get(opp.campaignId).add(opp);
}
for(Id campId : mCampId_Opps.keySet()) {
campWraps.add(new CampaignWrapper(mCampId_Campaign.get(campId), mCampId_Opps.get(campId)));
}
}
//-- hund down camps with no opps and still add them to the wrapper
if(!camps.isEmpty()) {
for(Campaign c : camps) {
if(c.NumberOfOpportunities == 0) {
campWraps.add(new CampaignWrapper(c,null));
}
}
}
System.debug(logginglevel.warn,'\n\n\n Campaign Wrapper='+campWraps +'\n\n\n');
Map<Id,Campaign> mapCampsToUpd = new Map<Id,Campaign>();
if(!campWraps.isEmpty()) {
List<Campaign> campsToUpd = new List<Campaign>();
for(CampaignWrapper cWrap : campWraps) {
Campaign camp = cWrap.campaign;
camp.number_of_new_business_units__c = 0;
camp.New_Business_Setup__c = 0;
camp.New_Business_Recurring__c = 0;
camp.Add_On_Units__c = 0;
camp.Add_On_Setup__c = 0;
camp.Add_On_Recurring__c = 0;
if(cWrap.opps != null && !cWrap.opps.isEmpty()) {
for(Opportunity opp : cWrap.opps) {
stats.numOppsProcessed ++;
if(opp.quotes != null) {
for(Quote q : opp.quotes) {
Boolean processed = false;
if('New Business'.equalsIgnoreCase(q.opportunity.type)
&& q.status == 'Approved') {
processed = true;
camp.number_of_new_business_units__c ++;
camp.New_Business_Setup__c +=q.Total_Cost_of_One_Time_Purchases__c;
camp.New_Business_Recurring__c += q.Average_Monthly_Recurring__c;
}
if('Add-on Opportunity'.equalsIgnoreCase(q.opportunity.type)
&& q.status == 'Approved') {
processed = true;
camp.Add_On_Units__c ++;
camp.Add_On_Setup__c += q.Total_Cost_of_One_Time_Purchases__c;
camp.Add_On_Recurring__c += q.Average_Monthly_Recurring__c;
}
if(processed) {
stats.numQuotesProcessed ++;
}
}
}
}
}
camp.Last_Update_For_Revenue__c = Date.today();
campsToUpd.add(camp);
}
for(Campaign ca : campsToUpd) {
mapCampsToUpd.put(ca.Id, ca);
}
if(!mapCampsToUpd.values().isEmpty()){
update mapCampsToUpd.values();
}
// if(!campsToUpd.isEmpty()) {
// stats.numCampsUpdated = campsToUpd.size();
// update campsToUpd;
// }
}
return stats;
}
public class CampaignWrapper {
public Campaign campaign {get;set;}
public List<Opportunity> opps {get;set;}
public CampaignWrapper(Campaign camp, List<Opportunity> pOpps) {
this.campaign = camp;
camp.number_of_new_business_units__c = 0;
camp.Add_On_Units__c = 0;
camp.Add_On_Setup__c = 0;
camp.Add_On_Recurring__c = 0;
camp.New_Business_Setup__c = 0;
camp.New_Business_Recurring__c = 0;
this.opps = pOpps;
}
}
}
GhanshyamChoudhari
You can use SET instead of LIST