Pricing and Quoting Configuration
Overview
This implementation requires Salesforce Sales Cloud, including Opportunities, Opportunity Products, and the use of Products in the Price Book.
Before You Begin
- Set up the Price Book, including adding Products.
To configure pricing and quoting:
- Install Conga Grid, Conga Composer, and Conga Sign.
- 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.
- 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_URL. If you use another name, modify the API name in template below to include a logo on the generated quote.
Create new Visualforce page (AG_MultiTab_Opportunity) using this code:
AG_MultiTab_Opportunity Code Expand source<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>
- Create a new Visualforce tab referencing the above page.
- 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
- Click Save. The following is an example of a completed record:Note:
Note the Conga Query record id in the URL. This is required to update your button in the next step.
- 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:
Note the template’s Id in the URL. This is required to update the button in the next step.
- Upload the Quote Template file to the new record. Make any
modifications to the template prior to uploading.
Navigate to (Lightning) Setup > Object Manager > Opportunity > Buttons, Links, and Actions. Create a new Composer button. The code for the new button is here:
Composer Button Code Expand sourcehttps://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
- 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.
- 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.