Can anyone help me on this? I have a Installed Package as "ForecastTrac" in my org Sandbox. It has a custom object as "gmod Opportunity Forecast" and Visualforce pages created based on opportunity object as a standard controller. Now I have created a custom Visualforce page on "Quote Object " as a standard controller in a PDF format.I have queried on all the standard and custom objects. Now I would like to get this "Opportunity Forecast" fields. So I tried using the wrapper class and called out the field. The issue "gmod opportunity forecast" object displays all the record in the VF page ,which is related / not related to the present record, while rest of the standard objects and custom objects values are getting displayed as per the record data created. Is that I'm querying wrongly on "gmod Opportunity Forecast" Object. Any suggestions?

Visual Force Code :

<table class="bordered">
                <td class="header-table-heading" bgcolor="#C0C0C0"> Part Numbers</td>
                <td class="header-table-heading" bgcolor="#C0C0C0">Quantity</td>
                <td class="header-table-heading" bgcolor="#C0C0C0"> Price</td>
                <td class="header-table-heading" bgcolor="#C0C0C0"> Amount</td>
               <!-- <td class="header-table-heading" bgcolor="#C0C0C0">Quarter</td>-->
                <td class="header-table-heading" bgcolor="#C0C0C0">Month</td>  
               <!-- <td class="header-table-heading" bgcolor="#C0C0C0">Actual Price</td>-->
                <td class="header-table-heading" bgcolor="#C0C0C0">Year</td>
               <!-- <td class="header-table-heading" bgcolor="#C0C0C0">Date</td> --> 
                <td class="header-table-heading" bgcolor="#C0C0C0">MonthText</td> 
                <td class="header-table-heading" bgcolor="#C0C0C0">ForecastDate</td> 
                <td class="header-table-heading" bgcolor="#C0C0C0">ForecastName</td>  
           <apex:repeat value="{!disp_list}" var="opf">
                <td class="header-table-data"><apex:outputText value="{!opf.gmod_Product}"/></td>
                <td class="header-table-data"><apex:outputText value="{!opf.gmod_Quantity}"/></td>
                <td class="header-table-data"><apex:outputText value="{!opf.gmod_Price }"/></td>
                <td class="header-table-data"><apex:outputText value="{!opf.gmod_Amount }"/></td>
               <!-- <td class="header-table-data"><apex:outputText value="{!opf.gmod_Quarter }"/></td>-->
                <td class="header-table-data"><apex:outputText value="{!opf.gmod_Month }"/></td>
               <!-- <td class="header-table-data"><apex:outputText value="{!opf.Actual_Price }"/></td>-->
                <td class="header-table-data"><apex:outputText value="{!opf.gmod_Year }"/></td>
              <!--  <td class="header-table-data"><apex:outputText value="{!opf.gmod_date }"/></td> -->  
                <td class="header-table-data"><apex:outputText value="{!opf.gmod_Month_Text }"/></td> 
                <td class="header-table-data"><apex:outputText value="{!opf.Forecast_Date }"/></td> 
                <td class="header-table-data"><apex:outputText value="{!opf.Name }"/></td>

Apex Code :

public with sharing class QuoteContentController {

       public Competitor__c com{get;set;}

       public gmod__Opportunity_Forecast__c oppf{get;set;}

       public Id qId {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_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) {



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

     // Public List<wrapperClass> disp_list(){
    //define constructor to instantiate the wrapper data type 

       disp_list=new list<wrapperclass>();

    //Query all the list 

    list<Quote> q =[select id ,Name ,Effective_Date__c ,Comments__c ,
                    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')];

    list<QuoteLineItem> qli =[Select QuoteId , PricebookEntry.Product2.Name ,Unitprice ,End_Customer_Price__c ,Quantity , TotalPrice from QuoteLineItem where QuoteId =:qId ];

    list<Account> a = [Select id ,Name ,Main_Customers_of_Account__c ,Bridgelux_Competition_at_Account__c,Servicing_Region__c ,
                      Annual_LED_Revenue__c,Annual_Purchases_of_LED_Sources_SAM__c ,Percent_of_LED_purchases_that_are_COB__c from Account where account.id =:qId ];

   list<Competitor__c>  com = [Select id ,Part_Number__c,Product_Series__c,Price_Offered__c,Volume__c,Date_Price_is_Valid__c from Competitor__c ]  ; 

   list<Opportunity> opp =[select id ,Name , probability,AccSegment__c from Opportunity where opportunity.Id =:qId];

  // list<gmod__Opportunity_Forecast__c>  opflist = [Select id ,Name ,gmod__Product__c,gmod__Quantity__c,gmod__Price__c ,   gmod__Quarter__c ,gmod__Amount__c ,Actual_Price__c,gmod__Year__c , gmod__Month__c, gmod__date__c ,gmod__Month_Text__c ,Forecast_Date__c from gmod__Opportunity_Forecast__c where name!=null   ];

    list<gmod__Opportunity_Forecast__c>  opflist = [Select id ,Name ,gmod__Product__c,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 from gmod__Opportunity_Forecast__c  where createddate!=null order by name limit 5]; 

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

         for (Quote qt :q){

            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_Product = opflist[i].gmod__Product__c;

  w.gmod_Quantity =opflist[i].gmod__Quantity__c;


  w.Name =opflist[i].Name;



  w.gmod_Amount=opflist[i]. gmod__Amount__c;






      //Adding everthing to the List  

    // w.name =qt.name;


      // return disp_list;  
 } //End of Class

1 Answer 1


Presumably you have a lookup or master-detail between Quote and gmod__Opportunity_Forecast__c? Or maybe between Opportunity and gmod__Opportunity_Forecast__c?

This query:

list<gmod__Opportunity_Forecast__c>  opflist = [Select id ,Name ,gmod__Product__c,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 from gmod__Opportunity_Forecast__c  where createddate!=null order by name limit 5];

Doesn't select the gmod__Opportunity_Forecast__c records based on the related record (Quote?). So you need to add something to the WHERE clause to filter based on the current record in question. Something like this maybe?

list<gmod__Opportunity_Forecast__c>  opflist = [Select id where createddate!=null AND Quote__c = :qId order by name limit 5];
  • :Their is no relation ship between Quote and gmod__Opportunity_Forecast__c.I have a Installed Package as "ForecastTrac " in my org Sandbox .It has a custom object as "gmod Opportunity Forecast" and Visual force pages created based on opportunity object as a standard controller. gmod__Opportunity_Forecast__c has a lookup relation to product Object and master detail relationship on opportunity object.
    – nikkey
    Commented Jan 30, 2015 at 12:26
  • Ok so walk up the tree - get the Opp Id from the quote id and then filter your gmod__Opportunity_Forecast__c query based on the Opp Id
    – Force Hero
    Commented Jan 30, 2015 at 12:36
  • :Even i tried in that way .but no result
    – nikkey
    Commented Jan 30, 2015 at 15:45

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .