function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
nikkeynikkey 

How to split the product data based on years and get the column value displayed in a table

Can any on help me out How to split the product data based on years  and get the column value displayed in a table in a visual force page which is in a PDF format .With Code i could get the Total but the subtotal is not getting calculated correctly.

For Example :In the above table i got the data for the Year 2014 with their product names and quarter value displayed.Now when i add the data for the Year 2015 with their product names and in the quarter ,it gets added in the Year 2014 itself.
I get the o/p in this way
ProductName                  Year        Q1        Q2       Q3       Q4       Total
BXRC-25e4000-F-04             2014       100       200     300       400       1000   
BXRC-25e4000-F-23             2014       200               200       400
Subtotal ------------                    300       200     300       600       1400
But Expected o/p is :
ProductName                   Year        Q1       Q2       Q3       Q4       Total
BXRC-25e4000-F-04             2014       100       200     300       400       1000   
                              2015        100                                   100
BXRC-25e4000-F-23             2014        200              200       400        800
                              2015                         200                  200
Subtotal ------------                     400       200    700       800       2100
Code :
public with sharing class QuoteContentController {

      public Map<String,Decimal> PartMap{get;set;}

       public Map<string,Decimal> Quarter1{get;set;}

       public Map<string,Decimal> Quarter2{get;set;}

       public Map<string,Decimal> Quarter3{get;set;}

       public Map<string,Decimal> Quarter4{get;set;}

       public Map<string,Decimal> Amount1{get;set;}

       public Map<string,Decimal> Amount2{get;set;}

       public Map<string,Decimal> Amount3{get;set;}

       public Map<string,Decimal> Amount4{get;set;}

       public Competitor__c com{get;set;}

       public gmod__Opportunity_Forecast__c opflist{get;set;}

       public Id qId {get;set;}

       Public string all{get;set;}

//Declare a wrapper class  

       public class Wrapperclass{

 //custom wrapper datatype  

       Public string Name{get;set;}  
       Public string AccountType{get;set;}  
       Public date todaysDate{get;set;}  
       Public date Expected_Order_Date{get;set;}
       Public string Probability{get;set;}  
       Public string Internal_Comment{get;set;}  
       Public string External_Comment{get;set;}  

       Public string Segment{get;set;}  
       Public string Application{get;set;}  
       Public string Persona{get;set;}  
       Public string Geogrpahy{get;set;}  

       Public string PartNumbers{get;set;}  
       Public Decimal  Price{get;set;}  
       Public Decimal End_Customer_Price{get;set;}  
       Public Decimal Quantity {get;set;}  
       Public Decimal Total{get;set;}  

       Public string RFQ_justification{get;set;}  
       Public string Main_Customer_of_Account{get;set;}  
       Public string Bridgelux_competition_at_account{get;set;}
       Public string Geographic_regions_serviced{get;set;}  
       Public string Annual_lighting_revenue{get;set;}  
       Public string Annual_LED_revenue_or_percent{get;set;}  
       Public string Annual_purchases_of_LED_light_sources{get;set;}
       Public string Percent_of_LED_purchases_that_are_COB{get;set;}  
       Public string Other_information{get;set;}  

       Public string Product_Series{get;set;}  
       Public string Volume{get;set;} 
       Public string Date_Price_is_Valid{get;set;} 

       Public string gmod_Opportunity{get;set;}
       Public string gmod_Product{get;set;}
       Public Decimal gmod_Quantity{get;set;}
       Public Decimal gmod_Price{get;set;}
       Public Decimal gmod_Quarter{get;set;}
       Public Decimal gmod_Month{get;set;}
       Public Decimal gmod_Amount{get;set;}
       Public Decimal Actual_Price{get;set;}
       Public Decimal  gmod_Year{get;set;}
       Public Date gmod_date{get;set;}
       Public string gmod_Month_Text{get;set;}
       Public Date  Forecast_Date{get;set;}




       Public wrapperClass(){} 

  }

       Public QuoteContentController(){}

       Public QuoteContentController(ApexPages.StandardController controller) {

       qId=Apexpages.currentPage().getparameters().get('Id');


    }


       Public Integer subtotalofquantity{get;set;}

       Public Integer subtotalofamount{get;set;}

       Public Integer quarter1subtotal{get;set;} 


       Public List<wrapperClass> disp_list {get;set;}{

       subtotalofquantity=0;

       subtotalofamount=0;

       quarter1subtotal=0;

      // Integer tempsubtotalofquantity=0;

     //  Integer tempsubtotalofamount=0;


     //define constructor to instantiate the wrapper data type 

       disp_list=new list<wrapperclass>();

     //Query all the list 

     list<Quote> q =[select id ,Name ,QuoteNumber,Effective_Date__c ,Comments__c ,Quote.Opportunity.id, 
                    Quote.Opportunity.Probability ,Quote.Opportunity.AccSegment__c ,Quote.Opportunity.AccApplication__c,Quote.Opportunity.Persona__c,Quote.Opportunity.Region__c
                    from Quote where id=:apexpages.currentpage().getparameters().get('id')];



     Opportunity opp =[select id , Name, (select id, Quantity, product2id from OpportunityLineItems), probability, AccSegment__c from Opportunity where opportunity.Id =:q[0].opportunity.id];

    list<gmod__Opportunity_Forecast__c>  opflist = [Select id ,Name ,gmod__opportunity__r.id,gmod__Quantity__c,gmod__Price__c , gmod__Month__c,    gmod__date__c,  gmod__Quarter__c ,gmod__Amount__c ,Actual_Price__c ,gmod__Year__c ,gmod__Month_Text__c ,Forecast_Date__c,gmod__Product__r.Name ,gmod__opportunity__r.name from gmod__Opportunity_Forecast__c WHERE gmod__Product__c!=null and gmod__opportunity__r.id =:opp.id Order BY gmod__Year__c, gmod__Month__c asc]; 


 //Iterate through each list to extract the values and add it to the custom wrapper data type  


        PartMap = new Map<String,Decimal>();

      //  PartMapQuantity = new Map<String,Decimal>();

        Quarter1 = new Map<String,Decimal>();

        Quarter2 = new Map<String,Decimal>();

        Quarter3 = new Map<String,Decimal>();

        Quarter4 = new Map<String,Decimal>();

        Amount1 = new Map<String,Decimal>();

        Amount2= new Map<String,Decimal>();

        Amount3 = new Map<String,Decimal>();

        Amount4 = new Map<String,Decimal>();

        for(gmod__Opportunity_Forecast__c oppforecast : opflist)
        {

             if(oppforecast .gmod__Month_Text__c=='Jan' || oppforecast .gmod__Month_Text__c=='Feb'|| oppforecast.gmod__Month_Text__c=='Mar'  )

                   {
                       if(Quarter1.containskey(oppforecast.gmod__Product__r.Name ))
                             {
                                  Quarter1.put(oppforecast.gmod__Product__r.Name,Quarter1.get(oppforecast.gmod__Product__r.Name) + oppforecast.gmod__Quantity__c);             
                                  Amount1.put(oppforecast.gmod__Product__r.Name,Amount1.get(oppforecast.gmod__Product__r.Name) + oppforecast.gmod__Amount__c);
                                  
                              }
                        else
                              {

                                 Quarter1.put(oppforecast.gmod__Product__r.Name, oppforecast.gmod__Quantity__c);
                                 Amount1.put(oppforecast.gmod__Product__r.Name,oppforecast.gmod__Amount__c);
                                
                                 wrapperclass w = new wrapperclass();

                                 w.gmod_Opportunity = oppforecast.gmod__Opportunity__r.Name;

                                 w.gmod_Product = oppforecast.gmod__Product__r.Name;

                                 w.gmod_Quantity =oppforecast.gmod__Quantity__c;

                                 w.gmod_Price=oppforecast.gmod__Price__c;

                                 w.Name =oppforecast.Name;

                                 w.gmod_Quarter=oppforecast.gmod__Quarter__c;

                                 w.gmod_Month=oppforecast.gmod__Month__c;

                                 w.gmod_Amount=oppforecast.gmod__Amount__c;

                                 w.Actual_Price=oppforecast.Actual_Price__c;

                                 w.gmod_Year=oppforecast.gmod__Year__c;

                                 w.gmod_date=oppforecast.gmod__date__c;

                                 w.gmod_Month_Text=oppforecast.gmod__Month_Text__c;

                                 w.Forecast_Date=oppforecast.Forecast_Date__c;

                                 disp_list.add(w);
                            } 
                         }

                 if(oppforecast.gmod__Month_Text__c=='Apr' ||oppforecast.gmod__Month_Text__c=='May'|| oppforecast.gmod__Month_Text__c=='June')

                          {

                               if(Quarter2.containskey(oppforecast.gmod__Product__r.Name))
                                       {
                                           Quarter2.put(oppforecast.gmod__Product__r.Name,Quarter2.get(oppforecast.gmod__Product__r.Name) + oppforecast.gmod__Quantity__c);             
                                           Amount2.put(oppforecast.gmod__Product__r.Name,Amount2.get(oppforecast.gmod__Product__r.Name) + oppforecast.gmod__Amount__c);
                                        }
                              else
                                         {

                                            Quarter2.put(oppforecast.gmod__Product__r.Name, oppforecast.gmod__Quantity__c);
                                            Amount2.put(oppforecast.gmod__Product__r.Name,oppforecast.gmod__Amount__c);


                                        }
                           }
                 if(oppforecast.gmod__Month_Text__c=='Jul' || oppforecast.gmod__Month_Text__c=='Aug'|| oppforecast.gmod__Month_Text__c=='Sept')

                        {

                              if(Quarter3.containskey(oppforecast.gmod__Product__r.Name))
                                      {
                                          Quarter3.put(oppforecast.gmod__Product__r.Name,Quarter3.get(oppforecast.gmod__Product__r.Name) + oppforecast.gmod__Quantity__c);             
                                          Amount3.put(oppforecast.gmod__Product__r.Name,Amount3.get(oppforecast.gmod__Product__r.Name) + oppforecast.gmod__Amount__c);
                                       }
                             else
                                       {

                                          Quarter3.put(oppforecast.gmod__Product__r.Name, oppforecast.gmod__Quantity__c);
                                          Amount3.put(oppforecast.gmod__Product__r.Name,oppforecast.gmod__Amount__c);
/

                                    }
                            }
              if(oppforecast.gmod__Month_Text__c=='Oct' || oppforecast.gmod__Month_Text__c=='Nov'|| oppforecast.gmod__Month_Text__c=='Dec')
                      {
                          if(Quarter4.containskey(oppforecast.gmod__Product__r.Name))
                             {
                                      Quarter4.put(oppforecast.gmod__Product__r.Name,Quarter4.get(oppforecast.gmod__Product__r.Name) + oppforecast.gmod__Quantity__c);             
                                      Amount4.put(oppforecast.gmod__Product__r.Name,Amount4.get(oppforecast.gmod__Product__r.Name) + oppforecast.gmod__Amount__c);
                             }
                     else
                             {

                                      Quarter4.put(oppforecast.gmod__Product__r.Name, oppforecast.gmod__Quantity__c);
                                      Amount4.put(oppforecast.gmod__Product__r.Name,oppforecast.gmod__Amount__c);

                            }

                   }


        for (Quote qt :q){
             System.debug('Quote Size ++ '+q.size());
             System.debug('opp forcast ++ ' +opflist.size());



            for(integer i=0;i<opflist.size();i++){

            subtotalofquantity+= integer.valueOf(opflist[i].gmod__Quantity__c);

           // subtotalofquantity = tempsubtotalofquantity;

            subtotalofamount+= integer.valueOf(opflist[i]. gmod__Amount__c);

            //subtotalofamount =tempsubtotalofamount;

            Integer quarter1subtotalTemp = Integer.valueOf(opflist[i].gmod__Quantity__c);

            quarter1subtotal+=quarter1subtotalTemp;

            System.debug('qty@@@@@@@@@@@@@ ++ ' + subtotalofquantity);

            System.debug('amt############# ++ ' +subtotalofamount);

            System.debug('Qty%%%%%%%%%%% ++ ' +quarter1subtotal);


  //Instantiating the wrapper SObject 

                                        wrapperclass w = new wrapperclass();


                    //Assigning the wrapper variables from the SObject Fields in the database. 

                 w.gmod_Opportunity = opflist[i].gmod__Opportunity__r.Name;

                 w.gmod_Product = opflist[i].gmod__Product__r.Name;

                 w.gmod_Quantity =opflist[i].gmod__Quantity__c;

                 w.gmod_Price=opflist[i].gmod__Price__c;

                 w.Name =opflist[i].Name;

                 w.gmod_Quarter=opflist[i].gmod__Quarter__c;

                 w.gmod_Month=opflist[i].gmod__Month__c;

                 w.gmod_Amount=opflist[i]. gmod__Amount__c;

                 w.Actual_Price=opflist[i].Actual_Price__c;

                 w.gmod_Year=opflist[i].gmod__Year__c;

                 w.gmod_date=opflist[i].gmod__date__c;

                 w.gmod_Month_Text=opflist[i].gmod__Month_Text__c;

                 w.Forecast_Date=opflist[i].Forecast_Date__c; 



}
              }       
              }
         } //End of Class



Any help very much appreciated.