-
ChatterFeed
-
0Best Answers
-
0Likes Received
-
0Likes Given
-
4Questions
-
8Replies
Lightning component on Lead Not saving the record
Hi Team,
I have created a lightning component on leads, however I am not able to save the record. Below is my code:
LeadParentPage.cmp
<aura:component implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,lightning:actionOverride,forceCommunity:availableForAllPageTypes,force:lightningQuickAction" access="global" controller = "LeadLightningApexController" >
<aura:attribute name="recordDetails" type="Lead[]"/>
<aura:attribute name="simpleNewLead" type="Object"/>
<aura:attribute name="newLeadError" type="String"/>
<aura:attribute name="Lead"
type="Lead"
default="{ 'sobjectType': 'Lead', 'LastName': 'Unknown', 'Status':''}"/>
<aura:attribute name="er" type="boolean" default="false"/>
<!-- <force:recordData aura:id="leadRecordCreator"
layoutType="FULL"
targetRecord="{!v.newLead}"
targetFields="{!v.simpleNewLead}"
targetError="{!v.newLeadError}" /> -->
<aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
<aura:attribute name="SIPEligibleReferral" type="String[]" default="None,Yes,No"/>
<aura:attribute name="parentOptions" type="List"/>
<aura:attribute name="dependentPicklist" type="Object"/>
<aura:attribute name="dependentOptions" type="List"/>
<aura:attribute name="disabledPick" type="Boolean" default="true"/>
<aura:attribute name="openModal" type="boolean" default="true"/>
<div class="slds-m-around--xx-large">
<aura:if isTrue="{!v.openModal}">
<!--Modal Box Start-->
<div role="dialog" class="slds-modal slds-fade-in-open ">
<div class="slds-modal__container">
<div class="slds-modal__header">
<button class="slds-button slds-modal__close slds-button--icon-inverse" title="Close" onclick="{!c.handleCloseModal}">
X
<span class="slds-assistive-text">Close</span>
</button>
<h1 class="slds-text-heading--medium">Lead Page</h1>
</div>
<!--Modal Box Header-->
<div class="slds-modal__content slds-p-around--medium">
<p><b>
<h1 class="slds-section-title--divider">Account Information</h1>
<label class="slds-form-element__label" for="input-id-01">
<div style="width:200px;" class="slds-form-element__control">
Account <force:inputField aura:id="Lead Field" value="{!v.Lead.Account__c}"/>
</div>
</label>
<label class="slds-form-element__label" for="input-id-02">
<div style="width:200px;" class="slds-form-element__control">
<lightning:input aura:id="LeadField" label="Customer Company Name" value="{!v.Lead.Company}" />
</div>
</label>
<h2 class="slds-section-title--divider">Contact Information</h2>
<label class="slds-form-element__label" for="input-id-01">
<div style="width:200px;" class="slds-form-element__control">
Contact <force:inputField aura:id="Lead Field" value="{!v.Lead.Contact__c}"/>
</div>
</label>
<br></br>
<label class="slds-form-element__label" for="input-id-01">
<div style="width:200px;" class="slds-form-element__control">
<lightning:input aura:id="LeadField" label="First Name" value="{!v.Lead.FirstName}"/>
</div>
</label>
<label class="slds-form-element__label" for="input-id-02">
<div style="width:200px;" class="slds-form-element__control">
<lightning:input aura:id="LeadField" label="Last Name" value="{!v.Lead.LastName}" required ="true" />
</div>
</label>
<h3 class="slds-section-title--divider">Lead Details</h3>
<label class="slds-form-element__label" for="input-id-01">
<div style="width:200px;" class="slds-form-element__control">
<lightning:input aura:id="LeadField" label="Lead Name" value="{!v.Lead.Lead_Name__c}" />
</div>
<lightning:select name="parentPicklist" label="Lead Status" required= "true" aura:id="parentPicklist" onchange="{!c.PickChange}">
<option value="">None</option>
<aura:iteration items="{!v.parentOptions}" var="p">
<option value="{!p.value}" default= "New">{!p.text}</option>
</aura:iteration>
</lightning:select>
<lightning:select name="dependentPicklist" label="Reason For Disqualification" disabled="{!v.disabledPick}">
<option value="">None</option>
<aura:iteration items="{!v.dependentOptions}" var="d">
<option value="{!d.value}">{!d.text}</option>
</aura:iteration>
</lightning:select>
<label class="slds-form-element__label" for="input-id-01">
<div style="width:200px;" class="slds-form-element__control">
<lightning:input aura:id="LeadField" label="Reason Description" value="{!v.Lead.Reason__c}"/>
</div>
</label>
</b>
</p>
</div>
<!--Modal Box Button-->
<div class="slds-modal__footer">
<button class="slds-button slds-button--brand" onclick="{!c.handleCloseModal}">Cancel</button>
<button class="slds-button slds-button--brand" onclick="{!c.doSave}">Submit</button>
</div>
</div>
</div>
<div class="slds-backdrop slds-backdrop--open"></div>
</aura:if>
</div>
</aura:component>
LeadParentPageController.js
({
doInit : function(component, event, helper) {
var pVals = [
{text:"New", value: "New"},
{text:"Qualified", value: "Qualified"},
{text:"Unqualified", value: "Unqualified"}
];
var dPick = {
"Unqualified" : [
{text:"Change in Fleet / Not Applicable", value: "Change in Fleet / Not Applicable"},
]
};
component.set('v.parentOptions', pVals);
component.set('v.dependentPicklist', dPick);
helper.getAllRecords(component);
},
doSave : function(component, event, helper) {
var Lead = component.get("v.Lead");
helper.doSave(component, Lead);
},
PickChange : function(component, event, helper) {
var parentValue = component.find('parentPicklist').get('v.value');
component.set('v.dependentOptions', component.get('v.dependentPicklist')[parentValue]);
if(parentValue != '')
component.set('v.disabledPick',false);
else
component.set('v.disabledPick',true);
},
handleOpenModal: function(component, event, helper) {
//For Display Modal, Set the "openModal" attribute to "true"
component.set("v.openModal", true);
},
handleCloseModal: function(component, event, helper) {
//For Close Modal, Set the "openModal" attribute to "fasle"
component.set("v.openModal", false);
},
})
LeadParentPageHelper.js
({
getAllRecords: function(component){
var action = component.get("c.getAllRecords");
action.setCallback(this, function(response){
var state = response.getState();
if(component.isValid() && state =="Success"){
component.set("v.recordDetails", response.getReturnValue());
}
});
$A.enqueueAction(action);
},
doSave: function(component, recordDetail){
this.upsertRecord(component, recordDetails, function(a){
var recordDetails = component.get("v.recordDetails");
recordDetails.push(a.getReturnValue());
component.set("v.recordDetails", recordDetails);
});
},
upsertRecord : function(component, recordDetail, callback){
var action = component.get("c.saveRecord");
action.setParams({
"recordDetail": recordDetail
});
if(callback){
action.setCallback(this, callback);
}
$A.enqueueAction(action);
}
})
LeadLightningApexController.apxc
public with sharing class LeadLightningApexController {
@AuraEnabled
public static List<Lead> getAllRecords(){
return [Select id, Name, Status From Lead];
}
@AuraEnabled
public static Lead saveRecord(Lead recordDetail){
upsert recordDetail;
return recordDetail;
}
}
I have created a lightning component on leads, however I am not able to save the record. Below is my code:
LeadParentPage.cmp
<aura:component implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,lightning:actionOverride,forceCommunity:availableForAllPageTypes,force:lightningQuickAction" access="global" controller = "LeadLightningApexController" >
<aura:attribute name="recordDetails" type="Lead[]"/>
<aura:attribute name="simpleNewLead" type="Object"/>
<aura:attribute name="newLeadError" type="String"/>
<aura:attribute name="Lead"
type="Lead"
default="{ 'sobjectType': 'Lead', 'LastName': 'Unknown', 'Status':''}"/>
<aura:attribute name="er" type="boolean" default="false"/>
<!-- <force:recordData aura:id="leadRecordCreator"
layoutType="FULL"
targetRecord="{!v.newLead}"
targetFields="{!v.simpleNewLead}"
targetError="{!v.newLeadError}" /> -->
<aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
<aura:attribute name="SIPEligibleReferral" type="String[]" default="None,Yes,No"/>
<aura:attribute name="parentOptions" type="List"/>
<aura:attribute name="dependentPicklist" type="Object"/>
<aura:attribute name="dependentOptions" type="List"/>
<aura:attribute name="disabledPick" type="Boolean" default="true"/>
<aura:attribute name="openModal" type="boolean" default="true"/>
<div class="slds-m-around--xx-large">
<aura:if isTrue="{!v.openModal}">
<!--Modal Box Start-->
<div role="dialog" class="slds-modal slds-fade-in-open ">
<div class="slds-modal__container">
<div class="slds-modal__header">
<button class="slds-button slds-modal__close slds-button--icon-inverse" title="Close" onclick="{!c.handleCloseModal}">
X
<span class="slds-assistive-text">Close</span>
</button>
<h1 class="slds-text-heading--medium">Lead Page</h1>
</div>
<!--Modal Box Header-->
<div class="slds-modal__content slds-p-around--medium">
<p><b>
<h1 class="slds-section-title--divider">Account Information</h1>
<label class="slds-form-element__label" for="input-id-01">
<div style="width:200px;" class="slds-form-element__control">
Account <force:inputField aura:id="Lead Field" value="{!v.Lead.Account__c}"/>
</div>
</label>
<label class="slds-form-element__label" for="input-id-02">
<div style="width:200px;" class="slds-form-element__control">
<lightning:input aura:id="LeadField" label="Customer Company Name" value="{!v.Lead.Company}" />
</div>
</label>
<h2 class="slds-section-title--divider">Contact Information</h2>
<label class="slds-form-element__label" for="input-id-01">
<div style="width:200px;" class="slds-form-element__control">
Contact <force:inputField aura:id="Lead Field" value="{!v.Lead.Contact__c}"/>
</div>
</label>
<br></br>
<label class="slds-form-element__label" for="input-id-01">
<div style="width:200px;" class="slds-form-element__control">
<lightning:input aura:id="LeadField" label="First Name" value="{!v.Lead.FirstName}"/>
</div>
</label>
<label class="slds-form-element__label" for="input-id-02">
<div style="width:200px;" class="slds-form-element__control">
<lightning:input aura:id="LeadField" label="Last Name" value="{!v.Lead.LastName}" required ="true" />
</div>
</label>
<h3 class="slds-section-title--divider">Lead Details</h3>
<label class="slds-form-element__label" for="input-id-01">
<div style="width:200px;" class="slds-form-element__control">
<lightning:input aura:id="LeadField" label="Lead Name" value="{!v.Lead.Lead_Name__c}" />
</div>
<lightning:select name="parentPicklist" label="Lead Status" required= "true" aura:id="parentPicklist" onchange="{!c.PickChange}">
<option value="">None</option>
<aura:iteration items="{!v.parentOptions}" var="p">
<option value="{!p.value}" default= "New">{!p.text}</option>
</aura:iteration>
</lightning:select>
<lightning:select name="dependentPicklist" label="Reason For Disqualification" disabled="{!v.disabledPick}">
<option value="">None</option>
<aura:iteration items="{!v.dependentOptions}" var="d">
<option value="{!d.value}">{!d.text}</option>
</aura:iteration>
</lightning:select>
<label class="slds-form-element__label" for="input-id-01">
<div style="width:200px;" class="slds-form-element__control">
<lightning:input aura:id="LeadField" label="Reason Description" value="{!v.Lead.Reason__c}"/>
</div>
</label>
</b>
</p>
</div>
<!--Modal Box Button-->
<div class="slds-modal__footer">
<button class="slds-button slds-button--brand" onclick="{!c.handleCloseModal}">Cancel</button>
<button class="slds-button slds-button--brand" onclick="{!c.doSave}">Submit</button>
</div>
</div>
</div>
<div class="slds-backdrop slds-backdrop--open"></div>
</aura:if>
</div>
</aura:component>
LeadParentPageController.js
({
doInit : function(component, event, helper) {
var pVals = [
{text:"New", value: "New"},
{text:"Qualified", value: "Qualified"},
{text:"Unqualified", value: "Unqualified"}
];
var dPick = {
"Unqualified" : [
{text:"Change in Fleet / Not Applicable", value: "Change in Fleet / Not Applicable"},
]
};
component.set('v.parentOptions', pVals);
component.set('v.dependentPicklist', dPick);
helper.getAllRecords(component);
},
doSave : function(component, event, helper) {
var Lead = component.get("v.Lead");
helper.doSave(component, Lead);
},
PickChange : function(component, event, helper) {
var parentValue = component.find('parentPicklist').get('v.value');
component.set('v.dependentOptions', component.get('v.dependentPicklist')[parentValue]);
if(parentValue != '')
component.set('v.disabledPick',false);
else
component.set('v.disabledPick',true);
},
handleOpenModal: function(component, event, helper) {
//For Display Modal, Set the "openModal" attribute to "true"
component.set("v.openModal", true);
},
handleCloseModal: function(component, event, helper) {
//For Close Modal, Set the "openModal" attribute to "fasle"
component.set("v.openModal", false);
},
})
LeadParentPageHelper.js
({
getAllRecords: function(component){
var action = component.get("c.getAllRecords");
action.setCallback(this, function(response){
var state = response.getState();
if(component.isValid() && state =="Success"){
component.set("v.recordDetails", response.getReturnValue());
}
});
$A.enqueueAction(action);
},
doSave: function(component, recordDetail){
this.upsertRecord(component, recordDetails, function(a){
var recordDetails = component.get("v.recordDetails");
recordDetails.push(a.getReturnValue());
component.set("v.recordDetails", recordDetails);
});
},
upsertRecord : function(component, recordDetail, callback){
var action = component.get("c.saveRecord");
action.setParams({
"recordDetail": recordDetail
});
if(callback){
action.setCallback(this, callback);
}
$A.enqueueAction(action);
}
})
LeadLightningApexController.apxc
public with sharing class LeadLightningApexController {
@AuraEnabled
public static List<Lead> getAllRecords(){
return [Select id, Name, Status From Lead];
}
@AuraEnabled
public static Lead saveRecord(Lead recordDetail){
upsert recordDetail;
return recordDetail;
}
}
-
- Pritesh Khole 1
- October 30, 2018
- Like
- 0
Apex trigger for Renewal opportunity
Hi Team,
I am trying to create a renewal opportunity along with the product, based on some condition. I have written a trigger, however the opportunity is getting renewed but the products are not. Is there anything that I am missing. Require some help. Below is my code
trigger RenewalOpportunityProcess on Opportunity (after insert,after update) {
Map<Opportunity,List<OpportunityLineItem>> OpportunityLineItemsMapping = new Map<Opportunity,List<OpportunityLineItem>>();
List<Opportunity> listOpp = new List <Opportunity>(); //List of Opportunity to store all the renewal Opportunities
//Create Renewal Opportunity when stage is 'Closed Won ' and 'Create Future Renewal Opportunity' is Yes.
for (Opportunity opp:Trigger.new){
opp = [Select Name,StageName,AccountId, (SELECT Quantity, TotalPrice, PricebookEntry.Name, PricebookEntry.Product2.Family FROM OpportunityLineItems) from Opportunity where id=:opp.Id LIMIT 1 ];
if(opp.StageName == 'Closed Won' && opp.AccountId != null && opp.Create_Future_Renewal_Opportunity__c == 'Yes' && opp.HasOpportunityLineItem == true)
{
Opportunity oppNew = opp.clone(false,true); //This clone method Creates a copy of the sObject record.
oppNew.StageName = 'Qualification';
oppNew.Name = opp.Name + ' - ' + 'RENEWAL';
listOpp.add(oppNew);
OpportunityLineItemsMapping.put(oppNew,opp.OpportunityLineItems.deepClone(false,false,false));
}
insert listOpp;
}
}
I am trying to create a renewal opportunity along with the product, based on some condition. I have written a trigger, however the opportunity is getting renewed but the products are not. Is there anything that I am missing. Require some help. Below is my code
trigger RenewalOpportunityProcess on Opportunity (after insert,after update) {
Map<Opportunity,List<OpportunityLineItem>> OpportunityLineItemsMapping = new Map<Opportunity,List<OpportunityLineItem>>();
List<Opportunity> listOpp = new List <Opportunity>(); //List of Opportunity to store all the renewal Opportunities
//Create Renewal Opportunity when stage is 'Closed Won ' and 'Create Future Renewal Opportunity' is Yes.
for (Opportunity opp:Trigger.new){
opp = [Select Name,StageName,AccountId, (SELECT Quantity, TotalPrice, PricebookEntry.Name, PricebookEntry.Product2.Family FROM OpportunityLineItems) from Opportunity where id=:opp.Id LIMIT 1 ];
if(opp.StageName == 'Closed Won' && opp.AccountId != null && opp.Create_Future_Renewal_Opportunity__c == 'Yes' && opp.HasOpportunityLineItem == true)
{
Opportunity oppNew = opp.clone(false,true); //This clone method Creates a copy of the sObject record.
oppNew.StageName = 'Qualification';
oppNew.Name = opp.Name + ' - ' + 'RENEWAL';
listOpp.add(oppNew);
OpportunityLineItemsMapping.put(oppNew,opp.OpportunityLineItems.deepClone(false,false,false));
}
insert listOpp;
}
}
-
- Pritesh Khole 1
- July 18, 2018
- Like
- 0
VF Page on Leads
Hi Team,
On Lead, we have an Accounts as a Look up, we have a requirement that whenver the user selects an Account, the Company name should be populated with the Account Name in Real time, without saving the record. I have created the below VF page and Extension controller, however not able to achieve the result. Any help is appreciated.
Visualforce Page
<apex:page lightningStylesheets="true" standardController="Lead" extensions="LeadControllerExtension" tabStyle="Lead">
<apex:form id="form1">
<apex:sectionheader title="Lead Edit" subtitle="{!if(Lead.Id==null,'New Lead',Lead.Name)}">
</apex:sectionheader>
<apex:pageblock mode="edit" id="leadPB" title="Lead Edit">
<apex:pageblockbuttons >
<apex:commandbutton action="{!save}" value="Save">
</apex:commandbutton>
<apex:commandbutton action="{!cancel}" value="Cancel"></apex:commandbutton>
</apex:pageblockbuttons>
<apex:pagemessages ></apex:pagemessages>
<apex:pageblocksection id="LeadInformationPBS" title="Lead Information">
<apex:inputfield value="{!Lead.Phone}"></apex:inputfield>
<apex:pageblocksectionitem >
<apex:outputlabel value="{!$ObjectType.Lead.Fields.FirstName.label}"></apex:outputlabel>
<apex:outputpanel >
<apex:inputfield value="{!Lead.Salutation}"></apex:inputfield>
<apex:inputfield value="{!Lead.FirstName}"></apex:inputfield>
</apex:outputpanel>
</apex:pageblocksectionitem>
<apex:inputfield value="{!Lead.MobilePhone}"></apex:inputfield>
<apex:inputfield value="{!Lead.LastName}"></apex:inputfield>
<apex:inputfield value="{!Lead.Fax}"></apex:inputfield>
<apex:inputField value="{!Lead.Company}">
<!---<apex:actionSupport event="onchange" action="{!getAcc}" reRender="form1"/> -->
</apex:inputField>
<apex:inputfield value="{!Lead.Account__c}">
<apex:actionSupport event="onchange" action="{!getAcc}" reRender="{!pageBlockList}"/>
<apex:messages />
</apex:inputfield>
<apex:inputfield value="{!Lead.Email}"></apex:inputfield>
<apex:inputfield value="{!Lead.Title}"></apex:inputfield>
<apex:inputfield value="{!Lead.Website}"></apex:inputfield>
<apex:inputfield value="{!Lead.Leadsource}"></apex:inputfield>
<apex:inputfield value="{!Lead.Status}"></apex:inputfield>
<apex:pageblocksection id="AddressInformationPBS" title="Address Information">
<apex:inputfield value="{!Lead.Street}"></apex:inputfield>
<apex:outputtext value=""></apex:outputtext>
<apex:inputfield value="{!Lead.City}"></apex:inputfield>
<apex:outputtext value=""></apex:outputtext>
<apex:inputfield value="{!Lead.State}"></apex:inputfield>
<apex:outputtext value=""></apex:outputtext>
<apex:inputfield value="{!Lead.PostalCode}"></apex:inputfield>
<apex:outputtext value=""></apex:outputtext>
<apex:inputfield value="{!Lead.Country}"></apex:inputfield>
<apex:outputtext value=""></apex:outputtext>
</apex:pageblocksection>
</apex:pageblocksection>
</apex:pageblock>
</apex:form>
</apex:page>
Extension Controller:
public with sharing class LeadControllerExtension
{
public Lead LR{get;set;}
public Account con{get;set;}
public ApexPages.StandardController stdcntrl{get;set;}
public LeadControllerExtension(ApexPages.StandardController cntrl){
stdcntrl=cntrl;
this.LR = (Lead) stdcntrl.getRecord();
}
public string getAcc(){
//apexpages.addMessage(new ApexPages.message(ApexPages.Severity.INFO, 'Company Value' ));
//Lead new l1=new Lead();
LR=[Select id,name,Account__c,Company from Lead LIMIT 1];
con=[select name from Account where id= :LR.Account__c];
LR.Company=con.Name;
return LR.Company;
}
}
On Lead, we have an Accounts as a Look up, we have a requirement that whenver the user selects an Account, the Company name should be populated with the Account Name in Real time, without saving the record. I have created the below VF page and Extension controller, however not able to achieve the result. Any help is appreciated.
Visualforce Page
<apex:page lightningStylesheets="true" standardController="Lead" extensions="LeadControllerExtension" tabStyle="Lead">
<apex:form id="form1">
<apex:sectionheader title="Lead Edit" subtitle="{!if(Lead.Id==null,'New Lead',Lead.Name)}">
</apex:sectionheader>
<apex:pageblock mode="edit" id="leadPB" title="Lead Edit">
<apex:pageblockbuttons >
<apex:commandbutton action="{!save}" value="Save">
</apex:commandbutton>
<apex:commandbutton action="{!cancel}" value="Cancel"></apex:commandbutton>
</apex:pageblockbuttons>
<apex:pagemessages ></apex:pagemessages>
<apex:pageblocksection id="LeadInformationPBS" title="Lead Information">
<apex:inputfield value="{!Lead.Phone}"></apex:inputfield>
<apex:pageblocksectionitem >
<apex:outputlabel value="{!$ObjectType.Lead.Fields.FirstName.label}"></apex:outputlabel>
<apex:outputpanel >
<apex:inputfield value="{!Lead.Salutation}"></apex:inputfield>
<apex:inputfield value="{!Lead.FirstName}"></apex:inputfield>
</apex:outputpanel>
</apex:pageblocksectionitem>
<apex:inputfield value="{!Lead.MobilePhone}"></apex:inputfield>
<apex:inputfield value="{!Lead.LastName}"></apex:inputfield>
<apex:inputfield value="{!Lead.Fax}"></apex:inputfield>
<apex:inputField value="{!Lead.Company}">
<!---<apex:actionSupport event="onchange" action="{!getAcc}" reRender="form1"/> -->
</apex:inputField>
<apex:inputfield value="{!Lead.Account__c}">
<apex:actionSupport event="onchange" action="{!getAcc}" reRender="{!pageBlockList}"/>
<apex:messages />
</apex:inputfield>
<apex:inputfield value="{!Lead.Email}"></apex:inputfield>
<apex:inputfield value="{!Lead.Title}"></apex:inputfield>
<apex:inputfield value="{!Lead.Website}"></apex:inputfield>
<apex:inputfield value="{!Lead.Leadsource}"></apex:inputfield>
<apex:inputfield value="{!Lead.Status}"></apex:inputfield>
<apex:pageblocksection id="AddressInformationPBS" title="Address Information">
<apex:inputfield value="{!Lead.Street}"></apex:inputfield>
<apex:outputtext value=""></apex:outputtext>
<apex:inputfield value="{!Lead.City}"></apex:inputfield>
<apex:outputtext value=""></apex:outputtext>
<apex:inputfield value="{!Lead.State}"></apex:inputfield>
<apex:outputtext value=""></apex:outputtext>
<apex:inputfield value="{!Lead.PostalCode}"></apex:inputfield>
<apex:outputtext value=""></apex:outputtext>
<apex:inputfield value="{!Lead.Country}"></apex:inputfield>
<apex:outputtext value=""></apex:outputtext>
</apex:pageblocksection>
</apex:pageblocksection>
</apex:pageblock>
</apex:form>
</apex:page>
Extension Controller:
public with sharing class LeadControllerExtension
{
public Lead LR{get;set;}
public Account con{get;set;}
public ApexPages.StandardController stdcntrl{get;set;}
public LeadControllerExtension(ApexPages.StandardController cntrl){
stdcntrl=cntrl;
this.LR = (Lead) stdcntrl.getRecord();
}
public string getAcc(){
//apexpages.addMessage(new ApexPages.message(ApexPages.Severity.INFO, 'Company Value' ));
//Lead new l1=new Lead();
LR=[Select id,name,Account__c,Company from Lead LIMIT 1];
con=[select name from Account where id= :LR.Account__c];
LR.Company=con.Name;
return LR.Company;
}
}
-
- Pritesh Khole 1
- May 25, 2018
- Like
- 0
Challenge Not yet complete... here's what's wrong: The campingList JavaScript controller doesn't appear to be checking if form fields are valid.
Component Code:
<aura:component >
<aura:attribute name="newItem" type="Camping_Item__c"
default="{ 'sobjectType': 'Camping_Item__c',
'Name': '',
'Quantity__c': 0,
'Price__c': 0,
'Packed__c': false }"/>
<aura:attribute name="items" type="Camping_Item__c[]"/>
<ol>
<li>Bug Spray</li>
<li>Bear Repellant</li>
<li>Goat Food</li>
</ol>
<!-- CREATE NEW ITEM FORM -->
<form class="slds-form--stacked">
<div class="slds-form-element slds-is-required">
<div class="slds-form-element__control">
<lightning:input aura:id="itemname" label="Name"
class="slds-input"
value="{!v.newItem.Name}"
required="true"/>
</div>
</div>
<div class="slds-form-element slds-is-required">
<div class="slds-form-element__control">
<lightning:input type="number" label="Quantity"
class="slds-input"
name="quantity"
min="1"
value="{!v.newItem.Quantity__c}"
required="true" aura:id="quantity"/>
</div>
</div>
<div class="slds-form-element">
<div class="slds-form-element__control">
<lightning:input type= "number" aura:id="price" label="Price"
formatter="currency"
class="slds-input"
value="{!v.newItem.Price__c}" />
</div>
</div>
<div class="slds-form-element">
<lightning:input type = "checkbox" aura:id="itemform" label="Packed?"
class="slds-checkbox"
checked="{!v.newItem.Packed__c}"/>
</div>
<div class="slds-form-element">
<lightning:button label="Create Camping Item"
class="slds-button slds-button--brand"
onclick="{!c.clickCreateItem}"/>
</div>
</form>
<!-- / CREATE NEW ITEM FORM -->
<div class="slds-card slds-p-top--medium">
<header class="slds-card__header">
<h3 class="slds-text-heading--small">Items</h3>
</header>
<section class="slds-card__body">
<div id="list" class="row">
<aura:iteration items="{!v.items}" var="items">
<c:campingListItem item="{!item}"/>
</aura:iteration>
</div>
</section>
</div>
</aura:component>
Controller code:
({
clickCreateItem: function(component, event, helper) {
// Simplistic error checking
var validItem = true;
// Name must not be blank
var nameField = component.find("itemname");
var itemname = nameField.get("v.value");
if ($A.util.isEmpty(itemname)){
validItem = false;
nameField.set("v.errors", [{message:"Item name can't be blank."}]);
}
else {
nameField.set("v.errors", null);
}
// Quantity must not be blank
var quantityField = component.find("quantity");
var quantity = nameField.get("v.value");
if ($A.util.isEmpty(quantity)){
validItem = false;
quantityField.set("v.errors", [{message:"Quantity can't be blank."}]);
}
else {
quantityField.set("v.errors", null);
}
var priceField = component.find("price");
var price = priceField.get("v.value");
if ($A.util.isEmpty(price)){
validItem = false;
priceField.set("v.errors", [{message:"Price can't be blank."}]);
}
else {
quantityField.set("v.errors", null);
}
if(validItem){
var newItem = component.get("v.newItem");
console.log("Create item: " + JSON.stringify(newItem));
//helper.createItem(component, newItem);
// var theItems = component.get("v.items");
// Copy the expense to a new object
// THIS IS A DISGUSTING, TEMPORARY HACK
var newItem = JSON.parse(JSON.stringify(item));
console.log("Items before 'create': " + JSON.stringify(theItems));
theExpenses.push(newItem);
component.set("v.expenses", theItems);
console.log("Items after 'create': " + JSON.stringify(theItems));
theItems.push(newItem);
component.set("v.items", theItems);
}
}
})
Requesting your help to let me know what is wrong with the code?
<aura:component >
<aura:attribute name="newItem" type="Camping_Item__c"
default="{ 'sobjectType': 'Camping_Item__c',
'Name': '',
'Quantity__c': 0,
'Price__c': 0,
'Packed__c': false }"/>
<aura:attribute name="items" type="Camping_Item__c[]"/>
<ol>
<li>Bug Spray</li>
<li>Bear Repellant</li>
<li>Goat Food</li>
</ol>
<!-- CREATE NEW ITEM FORM -->
<form class="slds-form--stacked">
<div class="slds-form-element slds-is-required">
<div class="slds-form-element__control">
<lightning:input aura:id="itemname" label="Name"
class="slds-input"
value="{!v.newItem.Name}"
required="true"/>
</div>
</div>
<div class="slds-form-element slds-is-required">
<div class="slds-form-element__control">
<lightning:input type="number" label="Quantity"
class="slds-input"
name="quantity"
min="1"
value="{!v.newItem.Quantity__c}"
required="true" aura:id="quantity"/>
</div>
</div>
<div class="slds-form-element">
<div class="slds-form-element__control">
<lightning:input type= "number" aura:id="price" label="Price"
formatter="currency"
class="slds-input"
value="{!v.newItem.Price__c}" />
</div>
</div>
<div class="slds-form-element">
<lightning:input type = "checkbox" aura:id="itemform" label="Packed?"
class="slds-checkbox"
checked="{!v.newItem.Packed__c}"/>
</div>
<div class="slds-form-element">
<lightning:button label="Create Camping Item"
class="slds-button slds-button--brand"
onclick="{!c.clickCreateItem}"/>
</div>
</form>
<!-- / CREATE NEW ITEM FORM -->
<div class="slds-card slds-p-top--medium">
<header class="slds-card__header">
<h3 class="slds-text-heading--small">Items</h3>
</header>
<section class="slds-card__body">
<div id="list" class="row">
<aura:iteration items="{!v.items}" var="items">
<c:campingListItem item="{!item}"/>
</aura:iteration>
</div>
</section>
</div>
</aura:component>
Controller code:
({
clickCreateItem: function(component, event, helper) {
// Simplistic error checking
var validItem = true;
// Name must not be blank
var nameField = component.find("itemname");
var itemname = nameField.get("v.value");
if ($A.util.isEmpty(itemname)){
validItem = false;
nameField.set("v.errors", [{message:"Item name can't be blank."}]);
}
else {
nameField.set("v.errors", null);
}
// Quantity must not be blank
var quantityField = component.find("quantity");
var quantity = nameField.get("v.value");
if ($A.util.isEmpty(quantity)){
validItem = false;
quantityField.set("v.errors", [{message:"Quantity can't be blank."}]);
}
else {
quantityField.set("v.errors", null);
}
var priceField = component.find("price");
var price = priceField.get("v.value");
if ($A.util.isEmpty(price)){
validItem = false;
priceField.set("v.errors", [{message:"Price can't be blank."}]);
}
else {
quantityField.set("v.errors", null);
}
if(validItem){
var newItem = component.get("v.newItem");
console.log("Create item: " + JSON.stringify(newItem));
//helper.createItem(component, newItem);
// var theItems = component.get("v.items");
// Copy the expense to a new object
// THIS IS A DISGUSTING, TEMPORARY HACK
var newItem = JSON.parse(JSON.stringify(item));
console.log("Items before 'create': " + JSON.stringify(theItems));
theExpenses.push(newItem);
component.set("v.expenses", theItems);
console.log("Items after 'create': " + JSON.stringify(theItems));
theItems.push(newItem);
component.set("v.items", theItems);
}
}
})
Requesting your help to let me know what is wrong with the code?
-
- Pritesh Khole 1
- October 25, 2017
- Like
- 0
Lightning component on Lead Not saving the record
Hi Team,
I have created a lightning component on leads, however I am not able to save the record. Below is my code:
LeadParentPage.cmp
<aura:component implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,lightning:actionOverride,forceCommunity:availableForAllPageTypes,force:lightningQuickAction" access="global" controller = "LeadLightningApexController" >
<aura:attribute name="recordDetails" type="Lead[]"/>
<aura:attribute name="simpleNewLead" type="Object"/>
<aura:attribute name="newLeadError" type="String"/>
<aura:attribute name="Lead"
type="Lead"
default="{ 'sobjectType': 'Lead', 'LastName': 'Unknown', 'Status':''}"/>
<aura:attribute name="er" type="boolean" default="false"/>
<!-- <force:recordData aura:id="leadRecordCreator"
layoutType="FULL"
targetRecord="{!v.newLead}"
targetFields="{!v.simpleNewLead}"
targetError="{!v.newLeadError}" /> -->
<aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
<aura:attribute name="SIPEligibleReferral" type="String[]" default="None,Yes,No"/>
<aura:attribute name="parentOptions" type="List"/>
<aura:attribute name="dependentPicklist" type="Object"/>
<aura:attribute name="dependentOptions" type="List"/>
<aura:attribute name="disabledPick" type="Boolean" default="true"/>
<aura:attribute name="openModal" type="boolean" default="true"/>
<div class="slds-m-around--xx-large">
<aura:if isTrue="{!v.openModal}">
<!--Modal Box Start-->
<div role="dialog" class="slds-modal slds-fade-in-open ">
<div class="slds-modal__container">
<div class="slds-modal__header">
<button class="slds-button slds-modal__close slds-button--icon-inverse" title="Close" onclick="{!c.handleCloseModal}">
X
<span class="slds-assistive-text">Close</span>
</button>
<h1 class="slds-text-heading--medium">Lead Page</h1>
</div>
<!--Modal Box Header-->
<div class="slds-modal__content slds-p-around--medium">
<p><b>
<h1 class="slds-section-title--divider">Account Information</h1>
<label class="slds-form-element__label" for="input-id-01">
<div style="width:200px;" class="slds-form-element__control">
Account <force:inputField aura:id="Lead Field" value="{!v.Lead.Account__c}"/>
</div>
</label>
<label class="slds-form-element__label" for="input-id-02">
<div style="width:200px;" class="slds-form-element__control">
<lightning:input aura:id="LeadField" label="Customer Company Name" value="{!v.Lead.Company}" />
</div>
</label>
<h2 class="slds-section-title--divider">Contact Information</h2>
<label class="slds-form-element__label" for="input-id-01">
<div style="width:200px;" class="slds-form-element__control">
Contact <force:inputField aura:id="Lead Field" value="{!v.Lead.Contact__c}"/>
</div>
</label>
<br></br>
<label class="slds-form-element__label" for="input-id-01">
<div style="width:200px;" class="slds-form-element__control">
<lightning:input aura:id="LeadField" label="First Name" value="{!v.Lead.FirstName}"/>
</div>
</label>
<label class="slds-form-element__label" for="input-id-02">
<div style="width:200px;" class="slds-form-element__control">
<lightning:input aura:id="LeadField" label="Last Name" value="{!v.Lead.LastName}" required ="true" />
</div>
</label>
<h3 class="slds-section-title--divider">Lead Details</h3>
<label class="slds-form-element__label" for="input-id-01">
<div style="width:200px;" class="slds-form-element__control">
<lightning:input aura:id="LeadField" label="Lead Name" value="{!v.Lead.Lead_Name__c}" />
</div>
<lightning:select name="parentPicklist" label="Lead Status" required= "true" aura:id="parentPicklist" onchange="{!c.PickChange}">
<option value="">None</option>
<aura:iteration items="{!v.parentOptions}" var="p">
<option value="{!p.value}" default= "New">{!p.text}</option>
</aura:iteration>
</lightning:select>
<lightning:select name="dependentPicklist" label="Reason For Disqualification" disabled="{!v.disabledPick}">
<option value="">None</option>
<aura:iteration items="{!v.dependentOptions}" var="d">
<option value="{!d.value}">{!d.text}</option>
</aura:iteration>
</lightning:select>
<label class="slds-form-element__label" for="input-id-01">
<div style="width:200px;" class="slds-form-element__control">
<lightning:input aura:id="LeadField" label="Reason Description" value="{!v.Lead.Reason__c}"/>
</div>
</label>
</b>
</p>
</div>
<!--Modal Box Button-->
<div class="slds-modal__footer">
<button class="slds-button slds-button--brand" onclick="{!c.handleCloseModal}">Cancel</button>
<button class="slds-button slds-button--brand" onclick="{!c.doSave}">Submit</button>
</div>
</div>
</div>
<div class="slds-backdrop slds-backdrop--open"></div>
</aura:if>
</div>
</aura:component>
LeadParentPageController.js
({
doInit : function(component, event, helper) {
var pVals = [
{text:"New", value: "New"},
{text:"Qualified", value: "Qualified"},
{text:"Unqualified", value: "Unqualified"}
];
var dPick = {
"Unqualified" : [
{text:"Change in Fleet / Not Applicable", value: "Change in Fleet / Not Applicable"},
]
};
component.set('v.parentOptions', pVals);
component.set('v.dependentPicklist', dPick);
helper.getAllRecords(component);
},
doSave : function(component, event, helper) {
var Lead = component.get("v.Lead");
helper.doSave(component, Lead);
},
PickChange : function(component, event, helper) {
var parentValue = component.find('parentPicklist').get('v.value');
component.set('v.dependentOptions', component.get('v.dependentPicklist')[parentValue]);
if(parentValue != '')
component.set('v.disabledPick',false);
else
component.set('v.disabledPick',true);
},
handleOpenModal: function(component, event, helper) {
//For Display Modal, Set the "openModal" attribute to "true"
component.set("v.openModal", true);
},
handleCloseModal: function(component, event, helper) {
//For Close Modal, Set the "openModal" attribute to "fasle"
component.set("v.openModal", false);
},
})
LeadParentPageHelper.js
({
getAllRecords: function(component){
var action = component.get("c.getAllRecords");
action.setCallback(this, function(response){
var state = response.getState();
if(component.isValid() && state =="Success"){
component.set("v.recordDetails", response.getReturnValue());
}
});
$A.enqueueAction(action);
},
doSave: function(component, recordDetail){
this.upsertRecord(component, recordDetails, function(a){
var recordDetails = component.get("v.recordDetails");
recordDetails.push(a.getReturnValue());
component.set("v.recordDetails", recordDetails);
});
},
upsertRecord : function(component, recordDetail, callback){
var action = component.get("c.saveRecord");
action.setParams({
"recordDetail": recordDetail
});
if(callback){
action.setCallback(this, callback);
}
$A.enqueueAction(action);
}
})
LeadLightningApexController.apxc
public with sharing class LeadLightningApexController {
@AuraEnabled
public static List<Lead> getAllRecords(){
return [Select id, Name, Status From Lead];
}
@AuraEnabled
public static Lead saveRecord(Lead recordDetail){
upsert recordDetail;
return recordDetail;
}
}
I have created a lightning component on leads, however I am not able to save the record. Below is my code:
LeadParentPage.cmp
<aura:component implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,lightning:actionOverride,forceCommunity:availableForAllPageTypes,force:lightningQuickAction" access="global" controller = "LeadLightningApexController" >
<aura:attribute name="recordDetails" type="Lead[]"/>
<aura:attribute name="simpleNewLead" type="Object"/>
<aura:attribute name="newLeadError" type="String"/>
<aura:attribute name="Lead"
type="Lead"
default="{ 'sobjectType': 'Lead', 'LastName': 'Unknown', 'Status':''}"/>
<aura:attribute name="er" type="boolean" default="false"/>
<!-- <force:recordData aura:id="leadRecordCreator"
layoutType="FULL"
targetRecord="{!v.newLead}"
targetFields="{!v.simpleNewLead}"
targetError="{!v.newLeadError}" /> -->
<aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
<aura:attribute name="SIPEligibleReferral" type="String[]" default="None,Yes,No"/>
<aura:attribute name="parentOptions" type="List"/>
<aura:attribute name="dependentPicklist" type="Object"/>
<aura:attribute name="dependentOptions" type="List"/>
<aura:attribute name="disabledPick" type="Boolean" default="true"/>
<aura:attribute name="openModal" type="boolean" default="true"/>
<div class="slds-m-around--xx-large">
<aura:if isTrue="{!v.openModal}">
<!--Modal Box Start-->
<div role="dialog" class="slds-modal slds-fade-in-open ">
<div class="slds-modal__container">
<div class="slds-modal__header">
<button class="slds-button slds-modal__close slds-button--icon-inverse" title="Close" onclick="{!c.handleCloseModal}">
X
<span class="slds-assistive-text">Close</span>
</button>
<h1 class="slds-text-heading--medium">Lead Page</h1>
</div>
<!--Modal Box Header-->
<div class="slds-modal__content slds-p-around--medium">
<p><b>
<h1 class="slds-section-title--divider">Account Information</h1>
<label class="slds-form-element__label" for="input-id-01">
<div style="width:200px;" class="slds-form-element__control">
Account <force:inputField aura:id="Lead Field" value="{!v.Lead.Account__c}"/>
</div>
</label>
<label class="slds-form-element__label" for="input-id-02">
<div style="width:200px;" class="slds-form-element__control">
<lightning:input aura:id="LeadField" label="Customer Company Name" value="{!v.Lead.Company}" />
</div>
</label>
<h2 class="slds-section-title--divider">Contact Information</h2>
<label class="slds-form-element__label" for="input-id-01">
<div style="width:200px;" class="slds-form-element__control">
Contact <force:inputField aura:id="Lead Field" value="{!v.Lead.Contact__c}"/>
</div>
</label>
<br></br>
<label class="slds-form-element__label" for="input-id-01">
<div style="width:200px;" class="slds-form-element__control">
<lightning:input aura:id="LeadField" label="First Name" value="{!v.Lead.FirstName}"/>
</div>
</label>
<label class="slds-form-element__label" for="input-id-02">
<div style="width:200px;" class="slds-form-element__control">
<lightning:input aura:id="LeadField" label="Last Name" value="{!v.Lead.LastName}" required ="true" />
</div>
</label>
<h3 class="slds-section-title--divider">Lead Details</h3>
<label class="slds-form-element__label" for="input-id-01">
<div style="width:200px;" class="slds-form-element__control">
<lightning:input aura:id="LeadField" label="Lead Name" value="{!v.Lead.Lead_Name__c}" />
</div>
<lightning:select name="parentPicklist" label="Lead Status" required= "true" aura:id="parentPicklist" onchange="{!c.PickChange}">
<option value="">None</option>
<aura:iteration items="{!v.parentOptions}" var="p">
<option value="{!p.value}" default= "New">{!p.text}</option>
</aura:iteration>
</lightning:select>
<lightning:select name="dependentPicklist" label="Reason For Disqualification" disabled="{!v.disabledPick}">
<option value="">None</option>
<aura:iteration items="{!v.dependentOptions}" var="d">
<option value="{!d.value}">{!d.text}</option>
</aura:iteration>
</lightning:select>
<label class="slds-form-element__label" for="input-id-01">
<div style="width:200px;" class="slds-form-element__control">
<lightning:input aura:id="LeadField" label="Reason Description" value="{!v.Lead.Reason__c}"/>
</div>
</label>
</b>
</p>
</div>
<!--Modal Box Button-->
<div class="slds-modal__footer">
<button class="slds-button slds-button--brand" onclick="{!c.handleCloseModal}">Cancel</button>
<button class="slds-button slds-button--brand" onclick="{!c.doSave}">Submit</button>
</div>
</div>
</div>
<div class="slds-backdrop slds-backdrop--open"></div>
</aura:if>
</div>
</aura:component>
LeadParentPageController.js
({
doInit : function(component, event, helper) {
var pVals = [
{text:"New", value: "New"},
{text:"Qualified", value: "Qualified"},
{text:"Unqualified", value: "Unqualified"}
];
var dPick = {
"Unqualified" : [
{text:"Change in Fleet / Not Applicable", value: "Change in Fleet / Not Applicable"},
]
};
component.set('v.parentOptions', pVals);
component.set('v.dependentPicklist', dPick);
helper.getAllRecords(component);
},
doSave : function(component, event, helper) {
var Lead = component.get("v.Lead");
helper.doSave(component, Lead);
},
PickChange : function(component, event, helper) {
var parentValue = component.find('parentPicklist').get('v.value');
component.set('v.dependentOptions', component.get('v.dependentPicklist')[parentValue]);
if(parentValue != '')
component.set('v.disabledPick',false);
else
component.set('v.disabledPick',true);
},
handleOpenModal: function(component, event, helper) {
//For Display Modal, Set the "openModal" attribute to "true"
component.set("v.openModal", true);
},
handleCloseModal: function(component, event, helper) {
//For Close Modal, Set the "openModal" attribute to "fasle"
component.set("v.openModal", false);
},
})
LeadParentPageHelper.js
({
getAllRecords: function(component){
var action = component.get("c.getAllRecords");
action.setCallback(this, function(response){
var state = response.getState();
if(component.isValid() && state =="Success"){
component.set("v.recordDetails", response.getReturnValue());
}
});
$A.enqueueAction(action);
},
doSave: function(component, recordDetail){
this.upsertRecord(component, recordDetails, function(a){
var recordDetails = component.get("v.recordDetails");
recordDetails.push(a.getReturnValue());
component.set("v.recordDetails", recordDetails);
});
},
upsertRecord : function(component, recordDetail, callback){
var action = component.get("c.saveRecord");
action.setParams({
"recordDetail": recordDetail
});
if(callback){
action.setCallback(this, callback);
}
$A.enqueueAction(action);
}
})
LeadLightningApexController.apxc
public with sharing class LeadLightningApexController {
@AuraEnabled
public static List<Lead> getAllRecords(){
return [Select id, Name, Status From Lead];
}
@AuraEnabled
public static Lead saveRecord(Lead recordDetail){
upsert recordDetail;
return recordDetail;
}
}
- Pritesh Khole 1
- October 30, 2018
- Like
- 0
Apex trigger for Renewal opportunity
Hi Team,
I am trying to create a renewal opportunity along with the product, based on some condition. I have written a trigger, however the opportunity is getting renewed but the products are not. Is there anything that I am missing. Require some help. Below is my code
trigger RenewalOpportunityProcess on Opportunity (after insert,after update) {
Map<Opportunity,List<OpportunityLineItem>> OpportunityLineItemsMapping = new Map<Opportunity,List<OpportunityLineItem>>();
List<Opportunity> listOpp = new List <Opportunity>(); //List of Opportunity to store all the renewal Opportunities
//Create Renewal Opportunity when stage is 'Closed Won ' and 'Create Future Renewal Opportunity' is Yes.
for (Opportunity opp:Trigger.new){
opp = [Select Name,StageName,AccountId, (SELECT Quantity, TotalPrice, PricebookEntry.Name, PricebookEntry.Product2.Family FROM OpportunityLineItems) from Opportunity where id=:opp.Id LIMIT 1 ];
if(opp.StageName == 'Closed Won' && opp.AccountId != null && opp.Create_Future_Renewal_Opportunity__c == 'Yes' && opp.HasOpportunityLineItem == true)
{
Opportunity oppNew = opp.clone(false,true); //This clone method Creates a copy of the sObject record.
oppNew.StageName = 'Qualification';
oppNew.Name = opp.Name + ' - ' + 'RENEWAL';
listOpp.add(oppNew);
OpportunityLineItemsMapping.put(oppNew,opp.OpportunityLineItems.deepClone(false,false,false));
}
insert listOpp;
}
}
I am trying to create a renewal opportunity along with the product, based on some condition. I have written a trigger, however the opportunity is getting renewed but the products are not. Is there anything that I am missing. Require some help. Below is my code
trigger RenewalOpportunityProcess on Opportunity (after insert,after update) {
Map<Opportunity,List<OpportunityLineItem>> OpportunityLineItemsMapping = new Map<Opportunity,List<OpportunityLineItem>>();
List<Opportunity> listOpp = new List <Opportunity>(); //List of Opportunity to store all the renewal Opportunities
//Create Renewal Opportunity when stage is 'Closed Won ' and 'Create Future Renewal Opportunity' is Yes.
for (Opportunity opp:Trigger.new){
opp = [Select Name,StageName,AccountId, (SELECT Quantity, TotalPrice, PricebookEntry.Name, PricebookEntry.Product2.Family FROM OpportunityLineItems) from Opportunity where id=:opp.Id LIMIT 1 ];
if(opp.StageName == 'Closed Won' && opp.AccountId != null && opp.Create_Future_Renewal_Opportunity__c == 'Yes' && opp.HasOpportunityLineItem == true)
{
Opportunity oppNew = opp.clone(false,true); //This clone method Creates a copy of the sObject record.
oppNew.StageName = 'Qualification';
oppNew.Name = opp.Name + ' - ' + 'RENEWAL';
listOpp.add(oppNew);
OpportunityLineItemsMapping.put(oppNew,opp.OpportunityLineItems.deepClone(false,false,false));
}
insert listOpp;
}
}
- Pritesh Khole 1
- July 18, 2018
- Like
- 0
VF Page on Leads
Hi Team,
On Lead, we have an Accounts as a Look up, we have a requirement that whenver the user selects an Account, the Company name should be populated with the Account Name in Real time, without saving the record. I have created the below VF page and Extension controller, however not able to achieve the result. Any help is appreciated.
Visualforce Page
<apex:page lightningStylesheets="true" standardController="Lead" extensions="LeadControllerExtension" tabStyle="Lead">
<apex:form id="form1">
<apex:sectionheader title="Lead Edit" subtitle="{!if(Lead.Id==null,'New Lead',Lead.Name)}">
</apex:sectionheader>
<apex:pageblock mode="edit" id="leadPB" title="Lead Edit">
<apex:pageblockbuttons >
<apex:commandbutton action="{!save}" value="Save">
</apex:commandbutton>
<apex:commandbutton action="{!cancel}" value="Cancel"></apex:commandbutton>
</apex:pageblockbuttons>
<apex:pagemessages ></apex:pagemessages>
<apex:pageblocksection id="LeadInformationPBS" title="Lead Information">
<apex:inputfield value="{!Lead.Phone}"></apex:inputfield>
<apex:pageblocksectionitem >
<apex:outputlabel value="{!$ObjectType.Lead.Fields.FirstName.label}"></apex:outputlabel>
<apex:outputpanel >
<apex:inputfield value="{!Lead.Salutation}"></apex:inputfield>
<apex:inputfield value="{!Lead.FirstName}"></apex:inputfield>
</apex:outputpanel>
</apex:pageblocksectionitem>
<apex:inputfield value="{!Lead.MobilePhone}"></apex:inputfield>
<apex:inputfield value="{!Lead.LastName}"></apex:inputfield>
<apex:inputfield value="{!Lead.Fax}"></apex:inputfield>
<apex:inputField value="{!Lead.Company}">
<!---<apex:actionSupport event="onchange" action="{!getAcc}" reRender="form1"/> -->
</apex:inputField>
<apex:inputfield value="{!Lead.Account__c}">
<apex:actionSupport event="onchange" action="{!getAcc}" reRender="{!pageBlockList}"/>
<apex:messages />
</apex:inputfield>
<apex:inputfield value="{!Lead.Email}"></apex:inputfield>
<apex:inputfield value="{!Lead.Title}"></apex:inputfield>
<apex:inputfield value="{!Lead.Website}"></apex:inputfield>
<apex:inputfield value="{!Lead.Leadsource}"></apex:inputfield>
<apex:inputfield value="{!Lead.Status}"></apex:inputfield>
<apex:pageblocksection id="AddressInformationPBS" title="Address Information">
<apex:inputfield value="{!Lead.Street}"></apex:inputfield>
<apex:outputtext value=""></apex:outputtext>
<apex:inputfield value="{!Lead.City}"></apex:inputfield>
<apex:outputtext value=""></apex:outputtext>
<apex:inputfield value="{!Lead.State}"></apex:inputfield>
<apex:outputtext value=""></apex:outputtext>
<apex:inputfield value="{!Lead.PostalCode}"></apex:inputfield>
<apex:outputtext value=""></apex:outputtext>
<apex:inputfield value="{!Lead.Country}"></apex:inputfield>
<apex:outputtext value=""></apex:outputtext>
</apex:pageblocksection>
</apex:pageblocksection>
</apex:pageblock>
</apex:form>
</apex:page>
Extension Controller:
public with sharing class LeadControllerExtension
{
public Lead LR{get;set;}
public Account con{get;set;}
public ApexPages.StandardController stdcntrl{get;set;}
public LeadControllerExtension(ApexPages.StandardController cntrl){
stdcntrl=cntrl;
this.LR = (Lead) stdcntrl.getRecord();
}
public string getAcc(){
//apexpages.addMessage(new ApexPages.message(ApexPages.Severity.INFO, 'Company Value' ));
//Lead new l1=new Lead();
LR=[Select id,name,Account__c,Company from Lead LIMIT 1];
con=[select name from Account where id= :LR.Account__c];
LR.Company=con.Name;
return LR.Company;
}
}
On Lead, we have an Accounts as a Look up, we have a requirement that whenver the user selects an Account, the Company name should be populated with the Account Name in Real time, without saving the record. I have created the below VF page and Extension controller, however not able to achieve the result. Any help is appreciated.
Visualforce Page
<apex:page lightningStylesheets="true" standardController="Lead" extensions="LeadControllerExtension" tabStyle="Lead">
<apex:form id="form1">
<apex:sectionheader title="Lead Edit" subtitle="{!if(Lead.Id==null,'New Lead',Lead.Name)}">
</apex:sectionheader>
<apex:pageblock mode="edit" id="leadPB" title="Lead Edit">
<apex:pageblockbuttons >
<apex:commandbutton action="{!save}" value="Save">
</apex:commandbutton>
<apex:commandbutton action="{!cancel}" value="Cancel"></apex:commandbutton>
</apex:pageblockbuttons>
<apex:pagemessages ></apex:pagemessages>
<apex:pageblocksection id="LeadInformationPBS" title="Lead Information">
<apex:inputfield value="{!Lead.Phone}"></apex:inputfield>
<apex:pageblocksectionitem >
<apex:outputlabel value="{!$ObjectType.Lead.Fields.FirstName.label}"></apex:outputlabel>
<apex:outputpanel >
<apex:inputfield value="{!Lead.Salutation}"></apex:inputfield>
<apex:inputfield value="{!Lead.FirstName}"></apex:inputfield>
</apex:outputpanel>
</apex:pageblocksectionitem>
<apex:inputfield value="{!Lead.MobilePhone}"></apex:inputfield>
<apex:inputfield value="{!Lead.LastName}"></apex:inputfield>
<apex:inputfield value="{!Lead.Fax}"></apex:inputfield>
<apex:inputField value="{!Lead.Company}">
<!---<apex:actionSupport event="onchange" action="{!getAcc}" reRender="form1"/> -->
</apex:inputField>
<apex:inputfield value="{!Lead.Account__c}">
<apex:actionSupport event="onchange" action="{!getAcc}" reRender="{!pageBlockList}"/>
<apex:messages />
</apex:inputfield>
<apex:inputfield value="{!Lead.Email}"></apex:inputfield>
<apex:inputfield value="{!Lead.Title}"></apex:inputfield>
<apex:inputfield value="{!Lead.Website}"></apex:inputfield>
<apex:inputfield value="{!Lead.Leadsource}"></apex:inputfield>
<apex:inputfield value="{!Lead.Status}"></apex:inputfield>
<apex:pageblocksection id="AddressInformationPBS" title="Address Information">
<apex:inputfield value="{!Lead.Street}"></apex:inputfield>
<apex:outputtext value=""></apex:outputtext>
<apex:inputfield value="{!Lead.City}"></apex:inputfield>
<apex:outputtext value=""></apex:outputtext>
<apex:inputfield value="{!Lead.State}"></apex:inputfield>
<apex:outputtext value=""></apex:outputtext>
<apex:inputfield value="{!Lead.PostalCode}"></apex:inputfield>
<apex:outputtext value=""></apex:outputtext>
<apex:inputfield value="{!Lead.Country}"></apex:inputfield>
<apex:outputtext value=""></apex:outputtext>
</apex:pageblocksection>
</apex:pageblocksection>
</apex:pageblock>
</apex:form>
</apex:page>
Extension Controller:
public with sharing class LeadControllerExtension
{
public Lead LR{get;set;}
public Account con{get;set;}
public ApexPages.StandardController stdcntrl{get;set;}
public LeadControllerExtension(ApexPages.StandardController cntrl){
stdcntrl=cntrl;
this.LR = (Lead) stdcntrl.getRecord();
}
public string getAcc(){
//apexpages.addMessage(new ApexPages.message(ApexPages.Severity.INFO, 'Company Value' ));
//Lead new l1=new Lead();
LR=[Select id,name,Account__c,Company from Lead LIMIT 1];
con=[select name from Account where id= :LR.Account__c];
LR.Company=con.Name;
return LR.Company;
}
}
- Pritesh Khole 1
- May 25, 2018
- Like
- 0
Challenge Not yet complete... here's what's wrong: The campingList JavaScript controller doesn't appear to be checking if form fields are valid.
Component Code:
<aura:component >
<aura:attribute name="newItem" type="Camping_Item__c"
default="{ 'sobjectType': 'Camping_Item__c',
'Name': '',
'Quantity__c': 0,
'Price__c': 0,
'Packed__c': false }"/>
<aura:attribute name="items" type="Camping_Item__c[]"/>
<ol>
<li>Bug Spray</li>
<li>Bear Repellant</li>
<li>Goat Food</li>
</ol>
<!-- CREATE NEW ITEM FORM -->
<form class="slds-form--stacked">
<div class="slds-form-element slds-is-required">
<div class="slds-form-element__control">
<lightning:input aura:id="itemname" label="Name"
class="slds-input"
value="{!v.newItem.Name}"
required="true"/>
</div>
</div>
<div class="slds-form-element slds-is-required">
<div class="slds-form-element__control">
<lightning:input type="number" label="Quantity"
class="slds-input"
name="quantity"
min="1"
value="{!v.newItem.Quantity__c}"
required="true" aura:id="quantity"/>
</div>
</div>
<div class="slds-form-element">
<div class="slds-form-element__control">
<lightning:input type= "number" aura:id="price" label="Price"
formatter="currency"
class="slds-input"
value="{!v.newItem.Price__c}" />
</div>
</div>
<div class="slds-form-element">
<lightning:input type = "checkbox" aura:id="itemform" label="Packed?"
class="slds-checkbox"
checked="{!v.newItem.Packed__c}"/>
</div>
<div class="slds-form-element">
<lightning:button label="Create Camping Item"
class="slds-button slds-button--brand"
onclick="{!c.clickCreateItem}"/>
</div>
</form>
<!-- / CREATE NEW ITEM FORM -->
<div class="slds-card slds-p-top--medium">
<header class="slds-card__header">
<h3 class="slds-text-heading--small">Items</h3>
</header>
<section class="slds-card__body">
<div id="list" class="row">
<aura:iteration items="{!v.items}" var="items">
<c:campingListItem item="{!item}"/>
</aura:iteration>
</div>
</section>
</div>
</aura:component>
Controller code:
({
clickCreateItem: function(component, event, helper) {
// Simplistic error checking
var validItem = true;
// Name must not be blank
var nameField = component.find("itemname");
var itemname = nameField.get("v.value");
if ($A.util.isEmpty(itemname)){
validItem = false;
nameField.set("v.errors", [{message:"Item name can't be blank."}]);
}
else {
nameField.set("v.errors", null);
}
// Quantity must not be blank
var quantityField = component.find("quantity");
var quantity = nameField.get("v.value");
if ($A.util.isEmpty(quantity)){
validItem = false;
quantityField.set("v.errors", [{message:"Quantity can't be blank."}]);
}
else {
quantityField.set("v.errors", null);
}
var priceField = component.find("price");
var price = priceField.get("v.value");
if ($A.util.isEmpty(price)){
validItem = false;
priceField.set("v.errors", [{message:"Price can't be blank."}]);
}
else {
quantityField.set("v.errors", null);
}
if(validItem){
var newItem = component.get("v.newItem");
console.log("Create item: " + JSON.stringify(newItem));
//helper.createItem(component, newItem);
// var theItems = component.get("v.items");
// Copy the expense to a new object
// THIS IS A DISGUSTING, TEMPORARY HACK
var newItem = JSON.parse(JSON.stringify(item));
console.log("Items before 'create': " + JSON.stringify(theItems));
theExpenses.push(newItem);
component.set("v.expenses", theItems);
console.log("Items after 'create': " + JSON.stringify(theItems));
theItems.push(newItem);
component.set("v.items", theItems);
}
}
})
Requesting your help to let me know what is wrong with the code?
<aura:component >
<aura:attribute name="newItem" type="Camping_Item__c"
default="{ 'sobjectType': 'Camping_Item__c',
'Name': '',
'Quantity__c': 0,
'Price__c': 0,
'Packed__c': false }"/>
<aura:attribute name="items" type="Camping_Item__c[]"/>
<ol>
<li>Bug Spray</li>
<li>Bear Repellant</li>
<li>Goat Food</li>
</ol>
<!-- CREATE NEW ITEM FORM -->
<form class="slds-form--stacked">
<div class="slds-form-element slds-is-required">
<div class="slds-form-element__control">
<lightning:input aura:id="itemname" label="Name"
class="slds-input"
value="{!v.newItem.Name}"
required="true"/>
</div>
</div>
<div class="slds-form-element slds-is-required">
<div class="slds-form-element__control">
<lightning:input type="number" label="Quantity"
class="slds-input"
name="quantity"
min="1"
value="{!v.newItem.Quantity__c}"
required="true" aura:id="quantity"/>
</div>
</div>
<div class="slds-form-element">
<div class="slds-form-element__control">
<lightning:input type= "number" aura:id="price" label="Price"
formatter="currency"
class="slds-input"
value="{!v.newItem.Price__c}" />
</div>
</div>
<div class="slds-form-element">
<lightning:input type = "checkbox" aura:id="itemform" label="Packed?"
class="slds-checkbox"
checked="{!v.newItem.Packed__c}"/>
</div>
<div class="slds-form-element">
<lightning:button label="Create Camping Item"
class="slds-button slds-button--brand"
onclick="{!c.clickCreateItem}"/>
</div>
</form>
<!-- / CREATE NEW ITEM FORM -->
<div class="slds-card slds-p-top--medium">
<header class="slds-card__header">
<h3 class="slds-text-heading--small">Items</h3>
</header>
<section class="slds-card__body">
<div id="list" class="row">
<aura:iteration items="{!v.items}" var="items">
<c:campingListItem item="{!item}"/>
</aura:iteration>
</div>
</section>
</div>
</aura:component>
Controller code:
({
clickCreateItem: function(component, event, helper) {
// Simplistic error checking
var validItem = true;
// Name must not be blank
var nameField = component.find("itemname");
var itemname = nameField.get("v.value");
if ($A.util.isEmpty(itemname)){
validItem = false;
nameField.set("v.errors", [{message:"Item name can't be blank."}]);
}
else {
nameField.set("v.errors", null);
}
// Quantity must not be blank
var quantityField = component.find("quantity");
var quantity = nameField.get("v.value");
if ($A.util.isEmpty(quantity)){
validItem = false;
quantityField.set("v.errors", [{message:"Quantity can't be blank."}]);
}
else {
quantityField.set("v.errors", null);
}
var priceField = component.find("price");
var price = priceField.get("v.value");
if ($A.util.isEmpty(price)){
validItem = false;
priceField.set("v.errors", [{message:"Price can't be blank."}]);
}
else {
quantityField.set("v.errors", null);
}
if(validItem){
var newItem = component.get("v.newItem");
console.log("Create item: " + JSON.stringify(newItem));
//helper.createItem(component, newItem);
// var theItems = component.get("v.items");
// Copy the expense to a new object
// THIS IS A DISGUSTING, TEMPORARY HACK
var newItem = JSON.parse(JSON.stringify(item));
console.log("Items before 'create': " + JSON.stringify(theItems));
theExpenses.push(newItem);
component.set("v.expenses", theItems);
console.log("Items after 'create': " + JSON.stringify(theItems));
theItems.push(newItem);
component.set("v.items", theItems);
}
}
})
Requesting your help to let me know what is wrong with the code?
- Pritesh Khole 1
- October 25, 2017
- Like
- 0