0

Can any one help me out with this Error as :

Visualforce Error System.NullPointerException: Attempt to de-reference a null object Class.QuoteContentController.: line 435, column 1

The line of Error is :

Qrtr2QtyGrndTtl = 0 + Qty02 + Qty12 + Qty22;

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 Qrtr1QtyGrndTtl{get;set;}

       Public Integer Qrtr2QtyGrndTtl{get;set;}

       Public Integer Qrtr3QtyGrndTtl{get;set;}

       Public Integer Qrtr4QtyGrndTtl{get;set;}

     //  Public Integer QtyGrndTtl{get;set;}

       Public decimal Qrtr1AmtGrndTtl{get;set;}

       Public decimal Qrtr2AmtGrndTtl{get;set;}

       Public decimal Qrtr3AmtGrndTtl{get;set;}

       Public decimal Qrtr4AmtGrndTtl{get;set;}

     //  Public decimal AmtGrndTtl{get;set;}



      Public list<integer> QtyGrndTtl{get;set;}

      Public list<decimal> AmtGrndTtl{get;set;}


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



    integer Qrtr1QtyGrndTtl =  0;
    integer Qrtr2QtyGrndTtl =  0;
    integer Qrtr3QtyGrndTtl =  0;
    integer Qrtr4QtyGrndTtl =  0;
   // list<integer>QtyGrndTtl = new list<integer>();
     QtyGrndTtl = new list<integer>();

    decimal Qrtr1AmtGrndTtl =  0;
    decimal Qrtr2AmtGrndTtl =  0;
    decimal Qrtr3AmtGrndTtl =  0;
    decimal Qrtr4AmtGrndTtl =  0;
   // list<decimal>AmtGrndTtl = new list<decimal>();  
     AmtGrndTtl = new list<decimal>();
      //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);
                                  //PartMap.put(oppforecast.gmod__Product__c,PartMap.get(oppforecast.gmod__Product__c) + oppforecast.gmod__Quantity__c);
                                 // PartMap.put(oppforecast.gmod__Product__c,PartMap.get(oppforecast.gmod__Product__c) + 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);
                                // PartMap.put(oppforecast.gmod__Product__c, oppforecast.gmod__Quantity__c);
                                // PartMap.put(oppforecast.gmod__Product__c,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(Year Yr: opflist.gmod__Year__c){ 
// could simply replace this with for(j=0, j<3, j++)

// but am showing what it represents and have assumed gmod__Year__c 
// is a year and not text. Adjust code accordingly.

    integer j = 0;

    for(j=0; j<3; j++){

    // replace oppforecast.gmod__Product__r.Name[i] with the product name string
    Integer Qty01 = Integer.valueOf(Quarter1.get(oppforecast.gmod__Product__r.Name));
    Integer Qty02 = Integer.valueOf(Quarter2.get(oppforecast.gmod__Product__r.Name));
    Integer Qty03 = Integer.valueOf(Quarter3.get(oppforecast.gmod__Product__r.Name));
    Integer Qty04 = Integer.valueOf(Quarter4.get(oppforecast.gmod__Product__r.Name));
    Integer Qty11 = Integer.valueOf(Quarter1.get(oppforecast.gmod__Product__r.Name));
    Integer Qty12 = Integer.valueOf(Quarter2.get(oppforecast.gmod__Product__r.Name));
    Integer Qty13 = Integer.valueOf(Quarter3.get(oppforecast.gmod__Product__r.Name));
    Integer Qty14 = Integer.valueOf(Quarter4.get(oppforecast.gmod__Product__r.Name));
    Integer Qty21 = Integer.valueOf(Quarter1.get(oppforecast.gmod__Product__r.Name));
    Integer Qty22 = Integer.valueOf(Quarter2.get(oppforecast.gmod__Product__r.Name));
    Integer Qty23 = Integer.valueOf(Quarter3.get(oppforecast.gmod__Product__r.Name));
    Integer Qty24 = Integer.valueOf(Quarter4.get(oppforecast.gmod__Product__r.Name));

    System.debug('qty@@@@@@@@@@@@@123 ++ ' + QtyGrndTtl);

    Qrtr1QtyGrndTtl = 0 + Qty01 + Qty11 + Qty21; //reset to zero each yr.
    Qrtr2QtyGrndTtl = 0 + Qty02 + Qty12 + Qty22;
    Qrtr3QtyGrndTtl = 0 + Qty03 + Qty13 + Qty23;
    Qrtr4QtyGrndTtl = 0 + Qty04 + Qty14 + Qty24;
    QtyGrndTtl[j] = Qrtr1QtyGrndTtl + Qrtr2QtyGrndTtl + Qrtr3QtyGrndTtl + Qrtr4QtyGrndTtl;

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



    // replace oppforecast.gmod__Product__r.Name[i] with the product name string
    decimal amt01 = Amount1.get(oppforecast.gmod__Product__r.Name);
    decimal amt02 = Amount2.get(oppforecast.gmod__Product__r.Name);
    decimal amt03 = Amount3.get(oppforecast.gmod__Product__r.Name);
    decimal amt04 = Amount4.get(oppforecast.gmod__Product__r.Name);
    decimal amt11 = Amount1.get(oppforecast.gmod__Product__r.Name);
    decimal amt12 = Amount2.get(oppforecast.gmod__Product__r.Name);
    decimal amt13 = Amount3.get(oppforecast.gmod__Product__r.Name);
    decimal amt14 = Amount4.get(oppforecast.gmod__Product__r.Name);
    decimal amt21 = Amount1.get(oppforecast.gmod__Product__r.Name);
    decimal amt22 = Amount2.get(oppforecast.gmod__Product__r.Name);
    decimal amt23 = Amount3.get(oppforecast.gmod__Product__r.Name);
    decimal amt24 = Amount4.get(oppforecast.gmod__Product__r.Name);

    Qrtr1AmtGrndTtl = 0 + amt01 + amt11 + amt21; //reset to zero each yr.
    Qrtr2AmtGrndTtl = 0 + amt02 + amt12 + amt22;
    Qrtr3AmtGrndTtl = 0 + amt03 + amt13 + amt23;
    Qrtr4AmtGrndTtl = 0 + amt04 + amt14 + amt24;
    AmtGrndTtl[j] = Qrtr1AmtGrndTtl + Qrtr2AmtGrndTtl + Qrtr3AmtGrndTtl + Qrtr4AmtGrndTtl;

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

    j++;

}

Decimal GrndAmtGrndTtl = AmtGrndTtl[0] + AmtGrndTtl[1] + AmtGrndTtl[2];
Integer GrndQtyGrndTtl = QtyGrndTtl[0] + QtyGrndTtl[1] + QtyGrndTtl[2]; 



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





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


                              //Adding everthing to the List  


                            // w.name =qt.name;

                           //   disp_list.add(w);

                              // return disp_list;  
}

}
              }       
              }
         } //End of Class//

Any help very much appreciated.

  • You should create some debug outputs for those three variables Qty02, Qty12, Qty22 before affected code line. System.debug('Qty02: ' + Qty02); and so on. Then you will see which variable is actually NULL. – Sergej Utko Mar 24 '15 at 8:49
  • @mast0r:I tried adding the debug logs for all the variables .Except for Qty01, Qty11, Qty21 all the variable value is displaying as Null.But their do have the data. – nikkey Mar 24 '15 at 9:22
  • Can you not perform a ternary operator on the variables? Like this (Q1 != null ? Q1 : 0) – Michael Gill Mar 24 '15 at 11:00
1

From the line of error, it is clear that either Qty02 OR Qty12 OR Qty22 is null. You can add a debug log before this line printing these values and check which one is null. Also, would be a good idea if you initialize the variables with a default value say 0.

| improve this answer | |
  • :I tried adding the debug logs for all the variables .Except for Qty01, Qty11, Qty21 all the variable value is displaying as Null.But their do have the data.Can you let me know how to intialize the default value for the variables. – nikkey Mar 24 '15 at 9:35
  • Initialize is simple. You can do Integer Qty01 = 0. In your case, you can also do Integer Qty01 = Quarter1.containsKey(oppforecast.gmod__Product__r.Name) ? Integer.valueOf(Quarter1.get(oppforecast.gmod__Product__r.Name)) : 0; This way, if the map doesn't contains the value, it will set 0. – RajeshShah Mar 24 '15 at 13:30
0

Before using Map.get, one should check for the map if it is null Also, check oppforecast.gmod__Product__r is not null.

You can do something like :

Qrtr2QtyGrndTtl = 0 + (Qty02 == null ? 0 : Qty02 ) + (Qty12 == null ? 0 : Qty12 )   + (Qty22 == null ? 0 : Qty22 ) ;
| improve this answer | |
0

Obviously one of those values are null, but I'd rather not worry about which specific one is null. I'd rather address the underlying problem which is that any of those values could be null. You need to do the following to EACH of the 12 Integer values you have there.

Integer Qty01 = Integer.valueOf(Quarter1.get(oppforecast.gmod__Product__r.Name));
qty01 = qty01 == null ? qty01 : 0;

Some might say it's a little redundant to assign the same variable twice... but I really hate having the same super long mapping twice. In this case the: Integer.valueOf(Quarter1.get(oppforecast.gmod__Product__r.Name))

Also, that first 0 in your Math is a little redudant:

Qrtr2QtyGrndTtl = 0 + Qty02 + Qty12 + Qty22;

into

Qrtr2QtyGrndTtl = Qty02 + Qty12 + Qty22;
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.