public with sharing class SearchProductController {
|
|
public Integer quoteEntryMaxSet {get; private set;}
|
|
public List<ProductLine> cl {get;set;}
|
public Boolean getHascl() {
|
Boolean rtn = true;
|
if (cl != null && cl.size() > 0) {
|
rtn = false;
|
}
|
return rtn;
|
}
|
|
public String searchMode; // 検索モード
|
public String openFlag {get;set;} // 親画面Flag
|
public String lineNo {get;set;} // 親画面の選択した行
|
public String val {get;set;}
|
public String setStr {get;set;}
|
public String oppId {get;set;} // 親画面のからの検索文字列
|
public String SearchName {get;set;} // 検索文字列
|
public String baseUrl { get; set; }
|
public String productSetVal {get;set;}
|
public boolean oppflg {get;set;}
|
|
public String productSegment {get;set;}
|
|
public String openType {get;set;}
|
|
public List<SelectOption> productSet { get; set; }
|
|
public boolean is_hidden_user { get; set; }
|
public boolean is_dealer_user { get; set; }
|
|
public Boolean is_hidden_all { get; set; }
|
|
public Boolean specialDealer { get; set; }
|
|
public SearchProductController(ApexPages.StandardController controller){
|
this();
|
}
|
|
public SearchProductController() {
|
this.quoteEntryMaxSet = Integer.valueOf(System.Label.QuoteEntryMaxSet);
|
//XHL-20190428-UpdateStart
|
//this.productSetVal = Apexpages.currentPage().getParameters().get('set');
|
//if (productSetVal!=null || productSetVal!=''){
|
//} else {
|
// this.productSetVal = '单品';
|
//}
|
//XHL-20190428-UpdateEnd
|
is_hidden_user = false;
|
// String profileid = UserInfo.getProfileId().subString(0,15);
|
|
//新的获取简档ID calendarUtil.getMemberProfileID 这里用到的人员ID 和获取到的简档ID都是15位的
|
String new_profileId = calendarUtil.getMemberProfileID(UserInfo.getUserId().subString(0,15));
|
|
if (new_profileId.substring(0, 15) == System.Label.RT_BS_No_Price) {
|
is_hidden_user = true;
|
}
|
is_dealer_user = false;
|
if (UserInfo.getUserType() == 'PowerPartner') {
|
is_dealer_user = true;
|
}
|
|
//XHL-20190428-UpdateStart
|
//this.productSet = new List<SelectOption>();
|
//this.productSet.add(new SelectOption('单品','单品'));
|
//this.openType = Apexpages.currentPage().getParameters().get('openType');
|
//if (openType == 'service') {
|
// this.productSet.add(new SelectOption('set01','零件费用'));
|
// this.productSet.add(new SelectOption('set02','维修费'));
|
// this.productSet.add(new SelectOption('set03','其他费用'));
|
//} else {
|
// for (Integer i = 0; i < this.quoteEntryMaxSet; i++) {
|
// if (i < 9) {
|
// this.productSet.add(new SelectOption('set0'+ String.valueOf(i+1),'套装0'+ String.valueOf(i+1)));
|
// } else {
|
// this.productSet.add(new SelectOption('set'+ String.valueOf(i+1),'套装'+ String.valueOf(i+1)));
|
// }
|
// }
|
//}
|
//XHL-20190428-UpdateEnd
|
this.openFlag = Apexpages.currentPage().getParameters().get('openFlag');
|
this.lineNo = Apexpages.currentPage().getParameters().get('lineno');
|
this.val = Apexpages.currentPage().getParameters().get('val');
|
this.oppId = Apexpages.currentPage().getParameters().get('oppId');
|
|
if (openFlag == 'opp') {
|
oppflg = false;
|
} else {
|
oppflg = true;
|
}
|
|
if (val!=null && val!=''){
|
SearchName = val;
|
val = null;
|
}
|
|
cl = new List<ProductLine>();
|
}
|
|
public void init () {
|
system.debug('init==========> start');
|
system.debug('SearchName==========>' + SearchName);
|
if (SearchName != null && SearchName != '') {
|
serContact();
|
}
|
|
system.debug('init==========> end');
|
|
}
|
|
public PageReference serContact(){
|
//is_hidden_all = false;
|
is_hidden_all = true;
|
List<Opportunity> oppList = [select Id,DealerId__c,RecordTypeId,CurrencyIsoCode,Pricebook2Id,ProductSegment__c,Machine_Parts__c,SalesChannel__c From Opportunity where Id = :oppid];
|
//List<Opportunity> oppList = [select Id,DealerId__c,RecordTypeId,CurrencyIsoCode,Pricebook2Id,ProductSegment__c,Machine_Parts__c,SalesChannel__c,DealerId__c From Opportunity where Id = :oppid];
|
//is_hidden_all = StaticParameter.specialDealerMap.containsKey(oppList[0].DealerId__c);
|
//is_hidden_all = !StaticParameter.specialDealerMap.containsKey(oppList[0].DealerId__c);
|
is_hidden_all = !IfspecialDealer(oppList[0].DealerId__c);
|
system.debug('is_hidden_all---->'+is_hidden_all);
|
String sCurrencyIsoCode = oppList[0].CurrencyIsoCode;
|
String sPricebook2Id = oppList[0].Pricebook2Id;
|
String sProductSegment = oppList[0].ProductSegment__c;
|
productSegment = oppList[0].ProductSegment__c;
|
boolean is_Parts_direct = false;
|
boolean is_Replacement = false;
|
if(oppList[0].RecordTypeId == System.Label.SSBD_Replacement){
|
is_Replacement = true;
|
}
|
if (oppList[0].Machine_Parts__c == 'Parts' && oppList[0].SalesChannel__c == 'direct') {
|
is_Parts_direct = true;
|
}
|
//if(StaticParameter.specialDealerMap.containsKey(oppList[0].DealerId__c)){
|
if(IfspecialDealer(oppList[0].DealerId__c)){
|
is_hidden_user = true;
|
specialDealer = true;
|
}
|
system.debug('sCurrencyIsoCode==========>' + sCurrencyIsoCode);
|
system.debug('sPricebook2Id==========>' + sPricebook2Id);
|
|
String searchSql = 'select Id,Product2Id,SalesPrice__c,SalesPriceA__c,SalesPriceB__c,SalesPriceC__c,CostPrice__c,Pricebook2Id,Product2.ProductModels__c,Hidden_flag__c from PricebookEntry';
|
//20191113-XHL---Start-将产品状态(ProductStatus__c)用产品状态(公式)(ProductStatusFormula__c)替换
|
//String whereStr = ' Where (Product2.ProductModels__c = true or (SalesPrice__c > 0 and (CostPrice__c > 0 or Product2.Dummy__c = true))) and Product2.ProductStatus__c = \'1\' and Pricebook2Id = :sPricebook2Id and CurrencyIsoCode = :sCurrencyIsoCode';
|
String whereStr = '';
|
if(is_Replacement){
|
boolean temp = !is_Replacement;
|
whereStr = ' Where (Product2.ProductModels__c = true or (SalesPrice__c > 0 and (CostPrice__c > 0 or Product2.Dummy__c = true))) and Product2.ProductStatusFormula__c = \'1\' and Pricebook2Id = :sPricebook2Id and CurrencyIsoCode = :sCurrencyIsoCode and Product2.isMain__c =:temp';
|
//20191113-XHL---End-将产品状态(ProductStatus__c)用产品状态(公式)(ProductStatusFormula__c)替换
|
//String whereStr = ' Where (Product2.ProductModels__c = true or (SalesPrice__c > 0)) and Product2.ProductStatus__c = \'1\' and Pricebook2Id = :sPricebook2Id and CurrencyIsoCode = :sCurrencyIsoCode';
|
|
}else{
|
whereStr = ' Where (Product2.ProductModels__c = true or (SalesPrice__c > 0 and (CostPrice__c > 0 or Product2.Dummy__c = true))) and Product2.ProductStatusFormula__c = \'1\' and Pricebook2Id = :sPricebook2Id and CurrencyIsoCode = :sCurrencyIsoCode ';
|
//20191113-XHL---End-将产品状态(ProductStatus__c)用产品状态(公式)(ProductStatusFormula__c)替换
|
//String whereStr = ' Where (Product2.ProductModels__c = true or (SalesPrice__c > 0)) and Product2.ProductStatus__c = \'1\' and Pricebook2Id = :sPricebook2Id and CurrencyIsoCode = :sCurrencyIsoCode';
|
|
}
|
/*String whereStr = ' Where (Product2.ProductModels__c = true or (SalesPrice__c > 0 and (CostPrice__c > 0 or Product2.Dummy__c = true))) and Product2.ProductStatusFormula__c = \'1\' and Pricebook2Id = :sPricebook2Id and CurrencyIsoCode = :sCurrencyIsoCode and Product2.isReplacement__c =:is_Replacement';
|
//20191113-XHL---End-将产品状态(ProductStatus__c)用产品状态(公式)(ProductStatusFormula__c)替换
|
//String whereStr = ' Where (Product2.ProductModels__c = true or (SalesPrice__c > 0)) and Product2.ProductStatus__c = \'1\' and Pricebook2Id = :sPricebook2Id and CurrencyIsoCode = :sCurrencyIsoCode';*/
|
if (is_Parts_direct) {
|
//20191113-XHL---Start-将产品状态(ProductStatus__c)用产品状态(公式)(ProductStatusFormula__c)替换
|
//whereStr = ' Where Product2.ProductStatus__c = \'1\' and Pricebook2Id = :sPricebook2Id and CurrencyIsoCode = :sCurrencyIsoCode';
|
whereStr = ' Where Product2.ProductStatusFormula__c = \'1\' and Pricebook2Id = :sPricebook2Id and CurrencyIsoCode = :sCurrencyIsoCode';
|
//20191113-XHL---End-将产品状态(ProductStatus__c)用产品状态(公式)(ProductStatusFormula__c)替换
|
}
|
String whereSql = ' and Product2.ManualHidden__c = false ' ;
|
if (SearchName != null && SearchName != '') {
|
String likename = String.escapeSingleQuotes(SearchName);
|
String prdcd = String.escapeSingleQuotes(SearchName);
|
String prdec = String.escapeSingleQuotes(SearchName);
|
if (likename.indexOf('*') >= 0) {
|
likename = likename.replace('*', '%');
|
} else {
|
likename = '%' + likename + '%';
|
}
|
if (prdcd.indexOf('*') >= 0) {
|
prdcd = prdcd.replace('*', '%');
|
} else {
|
prdcd = '%' + prdcd + '%';
|
}
|
if (prdec.indexOf('*') >= 0) {
|
prdec = prdcd.replace('*', '%');
|
} else {
|
prdec = '%' + prdec + '%';
|
}
|
whereSql += ' and (Product2.Name Like ' + '\'' + likename + '\' or Product2.ProductCode Like ' + '\'' + prdcd + '\' or Product2.Product_ECCode__c like ' + '\'' + prdec + '\')';
|
}
|
|
searchSql = searchSql + whereStr + whereSql;
|
searchSql += ' order by Product2.ProductModels__c desc, Product2.ProductCode limit 200';
|
System.debug('searchSql::::::' + searchSql);
|
|
List<PricebookEntry> pbes = Database.query(searchSql);
|
|
System.debug('pbes::::::' + pbes);
|
|
if (pbes.size() > 0) {
|
|
List<String> forSelect = new List<String>();
|
|
for (PricebookEntry pbe : pbes) {
|
forSelect.add(pbe.Product2Id);
|
}
|
|
System.debug('forSelect::::::' + forSelect);
|
|
List<Product_Search__c> productSearchList = [select Id,Name,ProductCode__c,Product_ECCode__c,ProductModels1__c, ProductDescription__c,ProductStatus__c,Product__c
|
from Product_Search__c
|
where Product__c in : forSelect];
|
|
System.debug('productSearchList::::::' + productSearchList);
|
|
Map<String, Product_Search__c> tempMap = new Map<String, Product_Search__c>();
|
|
for (Product_Search__c productSearch : productSearchList) {
|
tempMap.put(productSearch.Product__c, productSearch);
|
}
|
|
System.debug('tempMap::::::' + tempMap);
|
|
Integer lineNo = 0;
|
cl = new List<ProductLine>();
|
for (Integer i = 0; i < pbes.size(); i++) {
|
System.debug('tempMap.get(pbes[i].Product2Id)::::::' + tempMap.get(pbes[i].Product2Id));
|
Product_Search__c ps = tempMap.get(pbes[i].Product2Id);
|
if (ps != null) {
|
if (pbes[i].SalesPrice__c == null) {
|
ProductLine pl = new ProductLine(lineNo, ps, pbes[i].Id,'0.00','0.00','0.00','0.00',pbes[i].Pricebook2Id,pbes[i].Hidden_flag__c);
|
cl.add(pl);
|
} else {
|
ProductLine pl = new ProductLine(lineNo, ps,pbes[i].Id,
|
String.valueOf(pbes[i].SalesPrice__c),
|
String.valueOf(pbes[i].SalesPriceA__c),
|
String.valueOf(pbes[i].SalesPriceB__c),
|
String.valueOf(pbes[i].SalesPriceC__c),
|
pbes[i].Pricebook2Id,
|
pbes[i].Hidden_flag__c);
|
if (is_hidden_user == true || is_dealer_user == true && pl.hiddenflg == true) {
|
pl.salespriceR = '0.00';
|
}
|
cl.add(pl);
|
}
|
|
lineNo++;
|
// 最多显示100条
|
if (lineNo >= 100) {
|
break;
|
}
|
}
|
}
|
}
|
|
return null;
|
}
|
|
public static Boolean IfspecialDealer(String oppDealerId){
|
if (String.isBlank(oppDealerId)) {
|
return false;
|
}
|
//return StaticParameter.specialDealerMap.containsKey(oppDealerId.substring(0,15));
|
return StaticParameter.specialDealerMap.containsKey(oppDealerId.substring(0,15)) && UserInfo.getUserType() == 'PowerPartner';
|
}
|
|
public class ProductLine {
|
public Integer idx {get; set;}
|
public Product_Search__c pbe {get; set;}
|
public String pbeId {get; set;}
|
public String pbId {get; set;}
|
public String salesprice {get; set;}
|
public String salespriceA {get; set;}
|
public String salespriceB {get; set;}
|
public String salespriceC {get; set;}
|
public boolean hiddenflg {get; set;}
|
public String salespriceR {get; set;}
|
|
public ProductLine(Integer i, Product_Search__c pbe, String pbeId, String salespriceStr, String salespriceAStr, String salespriceBStr, String salespriceCStr, String pbId, boolean flag) {
|
this.idx = i;
|
this.pbe = pbe;
|
this.pbeId = pbeId;
|
this.pbId = pbId;
|
System.debug('pbeId=======>' +i+'==' + pbeId);
|
this.salesprice = salespriceStr;
|
this.salespriceA = salespriceAStr;
|
this.salespriceB = salespriceBStr;
|
this.salespriceC = salespriceCStr;
|
this.hiddenflg = flag;
|
this.salespriceR = salespriceStr;
|
}
|
}
|
}
|