You need to sign in to do that
Don't have an account?

Can anyone correct the code
I written a code to add products on quoteline items. I want to display error message when a single letter is added. Can anyone correct the code.
'search term must be longer than one character: s'.
global class ProductSearchPopupController {
public String query {get; set;}
public List<PricebookEntry__c> products {get; set;}
public List<wrapProduct> wrapProductList {get; set;}
public List<PricebookEntry__c> selectedProduct{get;set;}
public List<QuoteLineitem__c> quoteLineList{get;set;}
public List<wrapProduct> selectedWrapperList{get;set;}
public Boolean normalList{get;set;}
public Boolean selectedList{get;set;}
public Boolean block{get;set;}
public Boolean block1{get;set;}
public Boolean block2{get;set;}
public String SalesPrice {get; set;}
public integer Discount {get; set;}
public String Quantity {get; set;}
public String ServiceDate {get; set;}
Id recordId;
public ProductSearchPopupController(ApexPages.StandardController controller){
recordId = controller.getId();
SalesPrice='';
Discount=0;
Quantity='';
ServiceDate='';
system.debug('recordId '+recordId);
wrapProductList = new List<wrapProduct>();
selectedWrapperList = new List<wrapProduct>();
normalList = true;
selectedList = false;
block = true;
block1 = false;
block2 = false;
}
public PageReference runQuery1(){
List<PricebookEntry__c> searchResults=[select id, Name, ProductCode__c, Product2Id__r.Product_Description__c,UnitPrice__c, UseStandardPrice__c from PricebookEntry__c];
if(searchResults.size()>= 0 ){
for(PricebookEntry__c a: searchResults) {
// As each Account is processed we create a new wrapAccount object and add it to the wrapAccountList
wrapProductList.add(new wrapProduct(a));
block = true;
block1 = true;
block2 = false;
}
}
return null;
}
public PageReference runQuery(){
wrapProductList = new List<wrapProduct>();
if(query == null || query == ''){
system.debug('query '+query);
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Info,'Please enter Product to search for'));
runQuery1();
else if (searchText.length()<2)
{
Apexpages.addMessage(new Apexpages.Message(ApexPages.severity.INFO, 'Input box must contain at least two characters'));
}
}
system.debug('query '+query);
List<List<PricebookEntry__c>> searchResults=[FIND :query IN ALL FIELDS RETURNING PricebookEntry__c (id, Name, ProductCode__c, Product2Id__r.Product_Description__c,UnitPrice__c, UseStandardPrice__c)];
if(searchResults[0]!=null){
for(PricebookEntry__c a: searchResults[0]) {
// As each Account is processed we create a new wrapAccount object and add it to the wrapAccountList
wrapProductList.add(new wrapProduct(a));
block = true;
block1 = true;
block2 = false;
}
}
return null;
}
public PageReference ProceedWithSelectedToNextPage(){
selectedWrapperList = new List<wrapProduct>();
normalList = false;
selectedList = true;
for(wrapProduct selectedWrapObj: wrapProductList){
system.debug('selectedWrapObj.selected ---------'+selectedWrapObj.selected);
if(selectedWrapObj.selected == true)
selectedWrapperList.add(selectedWrapObj);
}
system.debug('selectedWrapperList size ---------'+selectedWrapperList.size());
PageReference pageRef = new PageReference('/apex/AccountOpportunityTwoPage');
pageRef.setRedirect(false);
return pageRef;
}
public void processSelected() {
selectedProduct = new List<PricebookEntry__c>();
for(wrapProduct wrapProductObj : wrapProductList) {
if(wrapProductObj.selected == true) {
selectedProduct.add(wrapProductObj.acc);
block = false;
block1 = false;
block2 = true;
}
}
}
public void GoBack() {
block = true;
block1 = true;
block2 = false;
}
global class wrapProduct{
public PricebookEntry__c acc {get;set;}
public Boolean selected {get;set;}
public wrapProduct(PricebookEntry__c p) {
this.acc = p;
this.selected = false;
}
}
public pagereference saveproduct(){
List<QuoteLineitem__c> quoteLineList = new List<QuoteLineitem__c>();
if(Test.isRunningTest()){
insertTestData();
}
if(!selectedProduct.isEmpty()){
for(PricebookEntry__c sp:selectedProduct){
system.debug('sp '+sp);
QuoteLineitem__c qli = new QuoteLineitem__c();
qli.QuotesId__c = recordId;
qli.ListPrice__c = sp.UnitPrice__c;
qli.UnitPrice__c = sp.UnitPrice__c;
qli.Product2Id__c = sp.Product2Id__c;
if(Discount!=0 || Discount!=null){
qli.Discount__c = Discount;
}
if(Quantity!=null){
qli.Quantity__c = Decimal.valueof(Quantity);
}
quoteLineList.add(qli);
}
if(quoteLineList.size() > 0){
insert quoteLineList;
PageReference pageRef = new PageReference('https://proseraa.lightning.force.com/lightning/r/Quotes__c/'+recordId+'/view');
pageRef.setRedirect(true);
return pageRef;
}
}
return null;
}
public void insertTestData(){
Product2__c testProduct = new Product2__c();
testProduct.Name='Test product';
insert testProduct;
PricebookEntry__c testpbe = new PricebookEntry__c();
testpbe.Name='Test PriceBookEntry';
testpbe.UnitPrice__c =123;
testpbe.Product2Id__c=testProduct.Id;
insert testpbe;
selectedProduct.add(testpbe);
}
}
VF
<apex:page standardController="Quotes__c" extensions="ProductSearchPopupController" showHeader="false" sidebar="false" lightningStylesheets="true">
<apex:form id="form" >
<apex:pageMessages ></apex:pageMessages>
<div style="width 100%">
<apex:pageBlock title="Add Products" id="block" rendered="{!block}">
<centre>
<div align="center" >
<apex:pageBlockSection columns="1" id="section" >
Enter the product to be added and select Go<br/>
<apex:inputText value="{!query}" id="query" style="width: 1200px; height: 40px;"/>
</apex:pageBlockSection>
</div>
</centre>
<right>
<apex:commandButton value="Go" action="{!runQuery}" style="align: right:100px;border-style:solid;
color:white; position:relative;background-color:rgba(13, 112, 165, 1);"/>
<apex:commandButton value="Cancel" action="{!cancel}" style="float: centre:200px ;border-style:solid;
color:rgb(21, 137, 238); background-color:white;" />
</right>
</apex:pageBlock>
<apex:pageBlock id="block1" rendered="{!block1}" >
<apex:pageBlockSection columns="1">
<apex:pageBlockTable value="{!wrapProductList}" var="accWrap">
<apex:column >
<apex:facet name="header">
<apex:inputCheckbox onclick="selectAllCheckboxes(this,'inputId')"/>
</apex:facet>
<apex:inputCheckbox value="{!accWrap.selected}" id="inputId"/>
</apex:column>
<apex:column headerValue="Name">
<apex:outputLink value="#">{!accWrap.acc.Name}</apex:outputLink>
</apex:column>
<apex:column headerValue="Product Code">
<apex:outputText value="{!accWrap.acc.ProductCode__c}" />
</apex:column>
<apex:column headerValue="Product Description">
<apex:outputText value="{!accWrap.acc.Product2Id__r.Product_Description__c}" />
</apex:column>
<apex:column headerValue="Unit Price">
<apex:outputText value="{!accWrap.acc.UnitPrice__c}" />
</apex:column>
<apex:column headerValue="Standard Price">
<apex:outputText value="{!accWrap.acc.UseStandardPrice__c}" />
</apex:column>
</apex:pageBlockTable>
<apex:commandButton value="Next" action="{!processSelected}" style="float: right;border-style:solid;
color:white; background-color:rgba(13, 112, 165, 1);align-items: right;justify-content:right;"/>
</apex:pageBlockSection>
</apex:pageBlock>
</div>
<div>
<apex:pageBlock id="block2" rendered="{!block2}" >
<apex:pageblockSection title="All Products" collapsible="false" columns="3">
<apex:pageBlockTable value="{!selectedProduct}" var="c" id="table2" title="Selected Products">
<apex:column value="{!c.Name}" headerValue="Product Name"/>
<apex:column headerValue="Sales Price">
<apex:inputText value="{!c.UnitPrice__c}" id="UnitPrice" />
</apex:column>
<apex:column headerValue="Discount">
<apex:inputText value="{!discount}" id="discount" />
</apex:column>
<apex:column headerValue="Quantity">
<apex:inputText value="{!quantity}" id="quantity" />
</apex:column>
</apex:pageBlockTable>
</apex:pageblockSection>
<apex:commandButton action="{!GoBack}" value="Back" style="border-style:solid;
color:white; background-color:rgba(13, 112, 165, 1);"/>
<apex:commandButton action="{!saveproduct}" value="Save" style="float: right;border-style:solid;
color:white; background-color:rgba(13, 112, 165, 1);"/>
<apex:commandButton value="Cancel" action="{!cancel}" style="float: right;border-style:solid;
color:rgb(21, 137, 238); background-color:white;"/>
</apex:pageBlock>
</div>
</apex:form>
</apex:page>
'search term must be longer than one character: s'.
global class ProductSearchPopupController {
public String query {get; set;}
public List<PricebookEntry__c> products {get; set;}
public List<wrapProduct> wrapProductList {get; set;}
public List<PricebookEntry__c> selectedProduct{get;set;}
public List<QuoteLineitem__c> quoteLineList{get;set;}
public List<wrapProduct> selectedWrapperList{get;set;}
public Boolean normalList{get;set;}
public Boolean selectedList{get;set;}
public Boolean block{get;set;}
public Boolean block1{get;set;}
public Boolean block2{get;set;}
public String SalesPrice {get; set;}
public integer Discount {get; set;}
public String Quantity {get; set;}
public String ServiceDate {get; set;}
Id recordId;
public ProductSearchPopupController(ApexPages.StandardController controller){
recordId = controller.getId();
SalesPrice='';
Discount=0;
Quantity='';
ServiceDate='';
system.debug('recordId '+recordId);
wrapProductList = new List<wrapProduct>();
selectedWrapperList = new List<wrapProduct>();
normalList = true;
selectedList = false;
block = true;
block1 = false;
block2 = false;
}
public PageReference runQuery1(){
List<PricebookEntry__c> searchResults=[select id, Name, ProductCode__c, Product2Id__r.Product_Description__c,UnitPrice__c, UseStandardPrice__c from PricebookEntry__c];
if(searchResults.size()>= 0 ){
for(PricebookEntry__c a: searchResults) {
// As each Account is processed we create a new wrapAccount object and add it to the wrapAccountList
wrapProductList.add(new wrapProduct(a));
block = true;
block1 = true;
block2 = false;
}
}
return null;
}
public PageReference runQuery(){
wrapProductList = new List<wrapProduct>();
if(query == null || query == ''){
system.debug('query '+query);
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Info,'Please enter Product to search for'));
runQuery1();
else if (searchText.length()<2)
{
Apexpages.addMessage(new Apexpages.Message(ApexPages.severity.INFO, 'Input box must contain at least two characters'));
}
}
system.debug('query '+query);
List<List<PricebookEntry__c>> searchResults=[FIND :query IN ALL FIELDS RETURNING PricebookEntry__c (id, Name, ProductCode__c, Product2Id__r.Product_Description__c,UnitPrice__c, UseStandardPrice__c)];
if(searchResults[0]!=null){
for(PricebookEntry__c a: searchResults[0]) {
// As each Account is processed we create a new wrapAccount object and add it to the wrapAccountList
wrapProductList.add(new wrapProduct(a));
block = true;
block1 = true;
block2 = false;
}
}
return null;
}
public PageReference ProceedWithSelectedToNextPage(){
selectedWrapperList = new List<wrapProduct>();
normalList = false;
selectedList = true;
for(wrapProduct selectedWrapObj: wrapProductList){
system.debug('selectedWrapObj.selected ---------'+selectedWrapObj.selected);
if(selectedWrapObj.selected == true)
selectedWrapperList.add(selectedWrapObj);
}
system.debug('selectedWrapperList size ---------'+selectedWrapperList.size());
PageReference pageRef = new PageReference('/apex/AccountOpportunityTwoPage');
pageRef.setRedirect(false);
return pageRef;
}
public void processSelected() {
selectedProduct = new List<PricebookEntry__c>();
for(wrapProduct wrapProductObj : wrapProductList) {
if(wrapProductObj.selected == true) {
selectedProduct.add(wrapProductObj.acc);
block = false;
block1 = false;
block2 = true;
}
}
}
public void GoBack() {
block = true;
block1 = true;
block2 = false;
}
global class wrapProduct{
public PricebookEntry__c acc {get;set;}
public Boolean selected {get;set;}
public wrapProduct(PricebookEntry__c p) {
this.acc = p;
this.selected = false;
}
}
public pagereference saveproduct(){
List<QuoteLineitem__c> quoteLineList = new List<QuoteLineitem__c>();
if(Test.isRunningTest()){
insertTestData();
}
if(!selectedProduct.isEmpty()){
for(PricebookEntry__c sp:selectedProduct){
system.debug('sp '+sp);
QuoteLineitem__c qli = new QuoteLineitem__c();
qli.QuotesId__c = recordId;
qli.ListPrice__c = sp.UnitPrice__c;
qli.UnitPrice__c = sp.UnitPrice__c;
qli.Product2Id__c = sp.Product2Id__c;
if(Discount!=0 || Discount!=null){
qli.Discount__c = Discount;
}
if(Quantity!=null){
qli.Quantity__c = Decimal.valueof(Quantity);
}
quoteLineList.add(qli);
}
if(quoteLineList.size() > 0){
insert quoteLineList;
PageReference pageRef = new PageReference('https://proseraa.lightning.force.com/lightning/r/Quotes__c/'+recordId+'/view');
pageRef.setRedirect(true);
return pageRef;
}
}
return null;
}
public void insertTestData(){
Product2__c testProduct = new Product2__c();
testProduct.Name='Test product';
insert testProduct;
PricebookEntry__c testpbe = new PricebookEntry__c();
testpbe.Name='Test PriceBookEntry';
testpbe.UnitPrice__c =123;
testpbe.Product2Id__c=testProduct.Id;
insert testpbe;
selectedProduct.add(testpbe);
}
}
VF
<apex:page standardController="Quotes__c" extensions="ProductSearchPopupController" showHeader="false" sidebar="false" lightningStylesheets="true">
<apex:form id="form" >
<apex:pageMessages ></apex:pageMessages>
<div style="width 100%">
<apex:pageBlock title="Add Products" id="block" rendered="{!block}">
<centre>
<div align="center" >
<apex:pageBlockSection columns="1" id="section" >
Enter the product to be added and select Go<br/>
<apex:inputText value="{!query}" id="query" style="width: 1200px; height: 40px;"/>
</apex:pageBlockSection>
</div>
</centre>
<right>
<apex:commandButton value="Go" action="{!runQuery}" style="align: right:100px;border-style:solid;
color:white; position:relative;background-color:rgba(13, 112, 165, 1);"/>
<apex:commandButton value="Cancel" action="{!cancel}" style="float: centre:200px ;border-style:solid;
color:rgb(21, 137, 238); background-color:white;" />
</right>
</apex:pageBlock>
<apex:pageBlock id="block1" rendered="{!block1}" >
<apex:pageBlockSection columns="1">
<apex:pageBlockTable value="{!wrapProductList}" var="accWrap">
<apex:column >
<apex:facet name="header">
<apex:inputCheckbox onclick="selectAllCheckboxes(this,'inputId')"/>
</apex:facet>
<apex:inputCheckbox value="{!accWrap.selected}" id="inputId"/>
</apex:column>
<apex:column headerValue="Name">
<apex:outputLink value="#">{!accWrap.acc.Name}</apex:outputLink>
</apex:column>
<apex:column headerValue="Product Code">
<apex:outputText value="{!accWrap.acc.ProductCode__c}" />
</apex:column>
<apex:column headerValue="Product Description">
<apex:outputText value="{!accWrap.acc.Product2Id__r.Product_Description__c}" />
</apex:column>
<apex:column headerValue="Unit Price">
<apex:outputText value="{!accWrap.acc.UnitPrice__c}" />
</apex:column>
<apex:column headerValue="Standard Price">
<apex:outputText value="{!accWrap.acc.UseStandardPrice__c}" />
</apex:column>
</apex:pageBlockTable>
<apex:commandButton value="Next" action="{!processSelected}" style="float: right;border-style:solid;
color:white; background-color:rgba(13, 112, 165, 1);align-items: right;justify-content:right;"/>
</apex:pageBlockSection>
</apex:pageBlock>
</div>
<div>
<apex:pageBlock id="block2" rendered="{!block2}" >
<apex:pageblockSection title="All Products" collapsible="false" columns="3">
<apex:pageBlockTable value="{!selectedProduct}" var="c" id="table2" title="Selected Products">
<apex:column value="{!c.Name}" headerValue="Product Name"/>
<apex:column headerValue="Sales Price">
<apex:inputText value="{!c.UnitPrice__c}" id="UnitPrice" />
</apex:column>
<apex:column headerValue="Discount">
<apex:inputText value="{!discount}" id="discount" />
</apex:column>
<apex:column headerValue="Quantity">
<apex:inputText value="{!quantity}" id="quantity" />
</apex:column>
</apex:pageBlockTable>
</apex:pageblockSection>
<apex:commandButton action="{!GoBack}" value="Back" style="border-style:solid;
color:white; background-color:rgba(13, 112, 165, 1);"/>
<apex:commandButton action="{!saveproduct}" value="Save" style="float: right;border-style:solid;
color:white; background-color:rgba(13, 112, 165, 1);"/>
<apex:commandButton value="Cancel" action="{!cancel}" style="float: right;border-style:solid;
color:rgb(21, 137, 238); background-color:white;"/>
</apex:pageBlock>
</div>
</apex:form>
</apex:page>