it doesnt seem to be working and i cant figure why. Please advise thanks!
Map<String,Map<String,Decimal>> CategoryList = new Map<String,Map<String,Decimal>>();
Map<String,Decimal> SubGroup = new Map<String,Decimal>();
Map<String,Map<String,Decimal>> TierList = new Map<String,Map<String,Decimal>>();
Map<String,Decimal> TierSubGroup = new Map<String,Decimal>();
if(!CategoryList.keyset().contains(RelatedSale.Product_Group__c)){
SubGroup.put(RelatedSale.Related_Contract__r.External_Contract_Name__c, RelatedSale.Amount__c);
CategoryList.put(RelatedSale.Product_Group__c, SubGroup);
SubGroup.clear();
}
if(!TierList.keySet().contains(RelatedSale.Product_Group__c)) {
TierSubGroup.put(RelatedSale.Related_Contract__r.Contract_Tier__c, RelatedSale.Amount__c);
TierList.put(RelatedSale.Product_Group__c, TierSubGroup);
TierSubGroup.clear();
}
if(CategoryList.keyset().contains(RelatedSale.Product_Group__c)) {
if(CategoryList.get(RelatedSale.Product_Group__c).keyset().contains(RelatedSale.Related_Contract__r.External_Contract_Name__c)) {
UpdateAmount = CategoryList.get(RelatedSale.Product_Group__c).get(RelatedSale.Related_Contract__r.External_Contract_Name__c) + RelatedSale.Amount__c;
CategoryList.get(RelatedSale.Product_Group__c).remove(RelatedSale.Related_Contract__r.External_Contract_Name__c);
CategoryList.get(RelatedSale.Product_Group__c).put(RelatedSale.Related_Contract__r.External_Contract_Name__c, UpdateAmount);
}
if(!CategoryList.get(RelatedSale.Product_Group__c).keyset().contains(RelatedSale.Related_Contract__r.External_Contract_Name__c)) {
CategoryList.get(RelatedSale.Product_Group__c).put(RelatedSale.Related_Contract__r.External_Contract_Name__c, RelatedSale.Amount__c);
}
}
if(TierList.keyset().contains(RelatedSale.Product_Group__c)) {
if(TierList.get(RelatedSale.Product_Group__c).keyset().contains(RelatedSale.Related_Contract__r.Contract_Tier__c)) {
UpdateAmount = TierList.get(RelatedSale.Product_Group__c).get(RelatedSale.Related_Contract__r.Contract_Tier__c) + RelatedSale.Amount__c;
TierList.get(RelatedSale.Product_Group__c).remove(RelatedSale.Related_Contract__r.Contract_Tier__c);
TierList.get(RelatedSale.Product_Group__c).put(RelatedSale.Related_Contract__r.Contract_Tier__c, UpdateAmount);
}
if(!TierList.get(RelatedSale.Product_Group__c).keyset().contains(RelatedSale.Related_Contract__r.Contract_Tier__c)) {
TierList.get(RelatedSale.Product_Group__c).put(RelatedSale.Related_Contract__r.Contract_Tier__c, RelatedSale.Amount__c);
}
}
What you are trying to achieve is possible through Map, but you have to first think of the structure that your data is going to be.For ex:-if you are want data for category vs Contract Name,then you have to implement Map<String,List<Contract>>but now you want it in more depth, that for each Contract if you need list of sale, then you have to append likeMap< Category , List< Map<Contract, List<SalesValue> > > >for data type:-Map< String, List<Map<Contract, List<Double> > > >Hope, this will give you an idea, for further query, feel free to ping me.