This example shows how to update opportunity line items using visualforce. The controller looks like this
public with sharing class scheduleBuilder {
public String selectedOLI {set; get;}
public Decimal salesPrice {set; get;}
OpportunityLineItem oli;
OpportunityLineItemSchedule oliSchedule;
public scheduleBuilder(ApexPages.StandardController controller) {
}
public PageReference scheduleValidation() {
// If (schedule=true) then {throw message to delete schedule first.} else {update sales price}
ApexPages.Message scheduleFoundMsg = new ApexPages.Message(ApexPages.Severity.INFO, 'You must delete the schedule first');
System.debug('selectedOLI => ' + selectedOLI);
try{
//ApexPages.addMessage(scheduleFoundMsg);
oli = [Select id, Sales_price__c, HasSchedule, OpportunityID from OpportunityLineItem where id=:selectedOLI];
if(oli != null && oli.HasSchedule == true) {
ApexPages.addMessage(scheduleFoundMsg);
} else {
oli.Sales_price__c = salesPrice;
update oli;
PageReference pageRef = new PageReference('/apex/optyschedule?id='+oli.OpportunityID);
pageRef.setRedirect(true);
return pageRef;
}
}
catch(DmlException ex){
ApexPages.addMessages(ex);
}
return null;
}
}
and the page looks like this
<apex:page standardController="Opportunity" extensions="scheduleBuilder"> <apex:messages /> <!-- <apex:outputLink value="http://www.kermoonyconsulting.com">Kermoony Consulting</apex:outputLink> --> <apex:form > <apex:pageBlock > <apex:pageBlockSection title="Select an Opportunity Product Line Item to edit by clicking on the id link"> <apex:pageBlockTable value="{!Opportunity.OpportunityLineItems}" var="line" columns="5" columnsWidth="600"> <apex:column headerValue="Sales Price (Monthly)"><apex:outputField value="{!line.Sales_Price__c}"/></apex:column> <apex:column headervalue="Quantity"><apex:outputField value="{!line.quantity}"/></apex:column> <apex:column headervalue="OLI ID"> <apex:commandLink reRender="target" >{!line.id} <apex:param name="OLI_ID" value="{!line.id}" assignTo="{!selectedOLI}"/> </apex:commandLink> </apex:column> <apex:column headervalue="If checked, Delete schedule"><apex:outputField value="{!line.HasSchedule}"/></apex:column> </apex:pageBlockTable> </apex:pageBlockSection> <apex:pageBlockSection > <apex:panelGrid columns="1" id="theGrid"> <apex:panelGroup > <apex:outputText >Selected OLI => </apex:outputText> <apex:outputText value="{!selectedOLI}" label="Selected OLI" id="target"></apex:outputText> </apex:panelGroup> <apex:panelGroup > <apex:outputText >Sales Price (Monthly) </apex:outputText> <apex:inputtext value="{!salesPrice}" /> </apex:panelGroup> <apex:commandButton action="{!scheduleValidation}" value="Update"/> </apex:panelGrid> </apex:pageBlockSection> </apex:pageBlock> </apex:form> </apex:page>

No comments:
Post a Comment