Overview

This implementation requires Salesforce Sales Cloud, including Opportunities, Opportunity Products, and the use of Products in the Price Book

Before You Begin 

To configure pricing and quoting:

  1. Install Conga Grid, Conga Composer, and Conga Sign.  
  2. If you do not already have a Contact lookup field on your Opportunity object, add a new one. The button code below AG_MultiTab_Opportunity Code uses a field labeled Primary Contact (API Name of Primary_ContactId__c ). If you have your own, update the button code. Use this field to fill in the contact that will receive the Quote you’ll send from this solution.  
  3. Add a field on the User object which contains your company’s logo. See here for more information. The API Name for our example is Company_Logo_CM_URLIf you use another name, modify the API name in template below to include a logo on the generated quote.  
  4. Create new Visualforce page (AG_MultiTab_Opportunity) using this code:

    AG_MultiTab_Opportunity Code

    <apex:page sidebar="false" showHeader="true" docType="html-4.01-strict">
    <div id="tabstrip" style="display:none;"> <ul> 
    <li class="k-state-active">All Open</li>
    <li>My</li>
    <li>Closing This Month</li>
    <li>This Year, by Stage</li>
    <li>Opps w/o Products</li>
    <li>Opps w/o Quotes</li>
    <!--<li>Leads</li>
    <li>Activities</li>-->
    </ul>
    
    <!--  Opportunities - All -->
    <div style="overflow:hidden;"> 
    <CRMC_PP:Grid ObjectName="Opportunity" DelayLoad="false"  ViewID="a1B5Y00000Dyy3D" 
     EnableNewButton="true"  EnableNewInline="true"  EnableEdit="true"  EnableActions="true"  EnableFieldChooser="true" 
     EnableStickyViews="true"  EnableToolbar="true"  EnableViews="true"  EnableFormatting="true"  EnableReadingPane="true" />
     <CRMC_PP:DrillUp /> 
     </div>
     
    <!-- Opportunities - My -->
    <div style="overflow:hidden;"> 
    <CRMC_PP:Grid ObjectName="Opportunity" DelayLoad="true"  ViewID="a1B5Y00000Dyy3E" 
     EnableNewButton="true"  EnableNewInline="true"  EnableEdit="true"  EnableActions="true"  EnableFieldChooser="true" 
     EnableStickyViews="true"  EnableToolbar="true"  EnableViews="true"  EnableFormatting="true"  EnableReadingPane="true" />
     <CRMC_PP:DrillUp /> 
     </div>
    
    <!-- Opportunities - Closing This Month -->
    <div style="overflow:hidden;"> 
    <CRMC_PP:Grid ObjectName="Opportunity" DelayLoad="true"  ViewID="a1B5Y00000Dyy2r" 
     EnableNewButton="true"  EnableNewInline="true"  EnableEdit="true"  EnableActions="true"  EnableFieldChooser="true" 
     EnableStickyViews="true"  EnableToolbar="true"  EnableViews="true"  EnableFormatting="true"  EnableReadingPane="true" />
     <CRMC_PP:DrillUp /> 
     </div>
    
    <!-- Opportunities - This Year, by Stage -->
    <div style="overflow:hidden;"> 
    <CRMC_PP:Grid ObjectName="Opportunity" DelayLoad="true"  ViewID="a1B5Y00000Dyy4A" 
     EnableNewButton="true"  EnableNewInline="true"  EnableEdit="true"  EnableActions="true"  EnableFieldChooser="true" 
     EnableStickyViews="true"  EnableToolbar="true"  EnableViews="true"  EnableFormatting="true"  EnableReadingPane="true" />
     <CRMC_PP:DrillUp /> 
     </div>
    
    <!-- Opportunities - w/o Products -->
    <div style="overflow:hidden;"> 
    <!--Filter on the Product Related Column to show Opps without a Product quoted -->
    <CRMC_PP:Grid ObjectName="Opportunity" DelayLoad="true"  ViewID="a1B5Y00000Dyy6u" 
     EnableNewButton="true"  EnableNewInline="true"  EnableEdit="true"  EnableActions="true"  EnableFieldChooser="true" 
     EnableStickyViews="true"  EnableToolbar="true"  EnableViews="true"  EnableFormatting="true"  EnableReadingPane="true" />
     <CRMC_PP:DrillUp /> 
     </div>
    
    
    <!-- Opportunities - w/o Quotes-->
    <div style="overflow:hidden;"> 
    <!--Exception Report showing Opps in the Proposal Stage but no actual Quote has been created. Use the Batch Add Quote to fix -->
    <CRMC_PP:Grid ObjectName="Opportunity" DelayLoad="true"  ViewID="a1B5Y00000Dyy6t" 
     EnableNewButton="true"  EnableNewInline="true"  EnableEdit="true"  EnableActions="true"  EnableFieldChooser="true" 
     EnableStickyViews="true"  EnableToolbar="true"  EnableViews="true"  EnableFormatting="true"  EnableReadingPane="true" />
     <CRMC_PP:DrillUp /> 
     </div>
    
    
    <!-- Leads -->
    <!--<div style="overflow:hidden;"> 
    <CRMC_PP:Grid ObjectName="Lead" DelayLoad="true"  ViewID="" 
     EnableNewButton="true"  EnableNewInline="true"  EnableEdit="true"  EnableActions="true"  EnableFieldChooser="true" 
     EnableStickyViews="true"  EnableToolbar="true"  EnableViews="true"  EnableFormatting="true"  EnableReadingPane="true" />
     <CRMC_PP:DrillUp /> 
    </div> -->
    
    <!-- Tasks - will use default view "My Open Tasks" -->
    <!-- <div style="overflow:hidden;"> 
    <CRMC_PP:Grid ObjectName="Task" DelayLoad="true"  ViewID="" 
     EnableNewButton="true"  EnableNewInline="true"  EnableEdit="true"  EnableActions="true"  EnableFieldChooser="true" 
     EnableStickyViews="true"  EnableToolbar="true"  EnableViews="true"  EnableFormatting="true"  EnableReadingPane="true" />
     <CRMC_PP:DrillUp /> 
    </div> -->
    
    
    </div>
    <script>
    $(document).ready(function() {
        $("#tabstrip").kendoTabStrip({
          activate: function(e){
            setTimeout(function(){          $(window).resize();        });
          }
        });
        $("#tabstrip").css("display", "block");
    });
     </script>
    </apex:page>
    TEXT
  5. Create a new Visualforce tab referencing the above page.
  6. Create a new Conga Query. 
    • Navigate to the Conga Queries tab and click New
    • Name: Opportunity - Create and Email Invoice - [Summary] 
    • Description: Sums the quantity and amount of all products for an Opportunity, grouped by product family 
    • SOQL Select Statement: 

      SELECT PricebookEntry.Product2.Family, SUM(Quantity) Qty, SUM(TotalPrice) Total 
      FROM OpportunityLineItem 
      WHERE OpportunityId = '{pv0}' 
      GROUP BY PricebookEntry.Product2.Family 
      ORDER BY PricebookEntry.Product2.Family ASC 
      CODE
    • Click Save. The following is an example of a completed record:

      Note the Conga Query record id in the URL. This is required to update your button in the next step. 

  7. Create a new CongaTemplate record and name it “Sign Quote”. 
    • Upload the Quote Template file to the new record. Make any modifications to the template prior to uploading. 

      Note the template’s Id in the URL. This is required to update the button in the next step. 

  8. Navigate to (Lightning) Setup > Object ManagerOpportunity > Buttons, Links, and Actions. Create a new Composer button. The code for the new button is here: 

    Composer Button Code

    https://composer.congamerge.com
    ?sessionId={!API.Session_ID}
    &serverUrl={!API.Partner_Server_URL_370}
    &Id={!Opportunity.Id}
    
    
    &QueryId=[Summary]a035Y00000JXEVY
    &TemplateId=a045Y00000mUoBM
    
    
    &TemplateGroup=Invoice
    &DefaultPDF=1&CurrencyCulture=en-US
    &UF0=1
    &OFN=Conga+Invoice+-+{!Opportunity.Name}+-+{!Today}
    &DS7=1142
    &ContactId={!Opportunity.Primary_ContactIdId__c}
    &GEO={!$User.Country}
    &BML=Generating+Invoice+for+{!Opportunity.Primary_ContactId__c}
    &CSvisible=1
    &CSRecipient1={!Opportunity.Primary_ContactIdId__c}
    &CSRole1=SIGNER
    TEXT
    • Update the QueryId with the Id from the query created above.
    • Update the TemplateId with the template added above.  
    • If necessary, update the CurrencyCulture parameter in the button.  
    • If you have a different Contact lookup field on your Opportunity object, adjust the button code to match your lookup field’s API name.  
    • Name the new button, and select the detail page button from the radio icon. 
    • Click Save.
  9. In Conga Grid Setup tab, choose Opportunity from the left menu, then the Opportunity Features tab. Click the Conga Actions button and create a new Conga Action using the button created above. Reference this new button in Grid as a new Conga Action. This Composer action is now available when you right-click on a specific Opportunity record in your Grid view.