You need to sign in to do that
Don't have an account?
Add Selected Quote Line Items on a related list to a VF page rendered as PDF.
Hi, On Quote Line Items related list I have created a custom button. This custom button will create a visualforce page which will be rendered as pdf.
My issue is that if on the Quote Line Item related list I select more than one Quote Line Item, then all the selected Quote Line Items must be included in the pdf. I am a beginner as developer. So any help to get this done will be highly appreciated.
Also I followed few steps mentioned in this post - https://developer.salesforce.com/forums/?id=906F000000091nOIAQ, however I do not know how to return the selected ids back to vf page and how to make use of them in the vf page.
Please can someone help me with this.
Thank you in advance.
Regards,
Shalini.
Below Sample code can fullfill your requirements. Hope this will work for you.
Controller Class:
public class CreateQuoteClass {
public String opportunitystringId {get;set;}
public List<Opportunity> opportunityList {get;set;}
public List<quotewrapper> quotewrapperlist {get;set;}
public List<OpportunityLineItem> oliList{get;set;}
public class quotewrapper
{
public Boolean isChecked {get;set;}
public OpportunityLineItem oliresult {get;set;}
public quotewrapper(Boolean isChecked, OpportunityLineItem oliresult)
{
This.isChecked = isChecked;
This.oliresult = oliresult;
}
}
public CreateQuoteClass(ApexPages.StandardController controller)
{
try{
quotewrapperlist = new List<quotewrapper>();
opportunitystringId = ApexPages.CurrentPage().getparameters().get('Id');
if(opportunitystringId!=null)
{
opportunityList = [SELECT Id,Name,CloseDate,AccountId,Pricebook2Id from Opportunity WHERE Id =:opportunitystringId];
oliList = [Select Id,Name,Quantity,OpportunityId,UnitPrice,Product2Id,PricebookentryId,TotalPrice from OpportunityLineItem WHERE OpportunityId =:opportunitystringId];
}
if(oliList.size()>0)
{
for(OpportunityLineItem olObj:oliList)
{
quotewrapper qobj = new quotewrapper(false, olObj);
quotewrapperlist.add(qobj);
}
}
}
catch(Exception e)
{
System.debug('The following exception has occurred: ' + e.getMessage());
}
}
public void saveQuote()
{
try{
List<OpportunityLineItem> olilistNew = new List<OpportunityLineItem>();
List<QuoteLineItem> quoteItemList = new List<QuoteLineItem>();
for(quotewrapper qwr : quotewrapperlist)
{
if(qwr.isChecked==true)
{
olilistNew.add(qwr.oliresult);
}
}
List<Quote> quoteListNew = new List<Quote>();
if(opportunityList.size()>0)
{
for(Opportunity opportunityObj : opportunityList)
{
Quote quoteObj = new Quote();
quoteObj.Name=opportunityObj.Name;
quoteObj.OpportunityId = opportunityObj.Id;
quoteObj.Pricebook2Id =opportunityObj.Pricebook2Id;
quoteListNew.add(quoteObj);
}
}
if(quoteListNew.size()>0)
{
Database.SaveResult[] quoteItemSaveList = Database.insert(quoteListNew);
}
if(olilistNew.size()>0)
{
for(Quote qutObj: quoteListNew)
{
for(OpportunityLineItem oliObj : olilistNew)
{
QuoteLineItem qlobj = new QuoteLineItem();
qlobj.Quantity=oliObj.Quantity;
qlobj.PricebookEntryId=oliObj.PricebookEntryId;
qlobj.QuoteId=qutObj.Id;
qlobj.Product2Id=oliObj.Product2Id;
qlobj.UnitPrice=oliObj.UnitPrice;
quoteItemList.add(qlobj);
}
}
if(quoteItemList.size()>0)
{
Database.SaveResult[] quoteItemSaveList = Database.insert(quoteItemList);
}
}
}
catch(Exception e)
{
System.debug('The following exception has occurred: ' + e.getMessage());
}
}
}
Please mark this as best answer if this solves your problem.
Thank you
Ajay Dubedi
This is great... how would you then redirect to the created quote?
James