public virtual class SearchProductController {

   


    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 trade {get;set;}                    // hidden項目からもらった CNY か USD の文字列
    public String lineNo {get;set;}                   // 親画面の選択した行
    public String val {get;set;}                      // 親画面のからの検索文字列
    public String celon {get;set;}                    // 親画面のからの検索文字列 Celon询价增加 2022-04-24 ssm
    public String maxLen {get;set;} 
    public String SearchName {get;set;}               // 検索文字列

    public SearchProductController(ApexPages.StandardController controller){
        this();
    }
    public SearchProductController() {
//        this.trade = Apexpages.currentPage().getParameters().get('trade');
        this.lineNo = Apexpages.currentPage().getParameters().get('lineno');
        this.val = Apexpages.currentPage().getParameters().get('val');
        this.celon = Apexpages.currentPage().getParameters().get('celon');

        if (val!=null && val!=''){
            SearchName = val;
            val = null;
        }

        cl = new List<ProductLine>();
    }

    public PageReference serContact(){

        String x = '×';
        String searchSql = 'select Id,Product2Id,Product2.Name,Product2.ProductCode,Product2.StorageStatus__c,Product2.OT_CODE_no_link__c, Product2.Alternative_Products__c, '
                        + 'Product2.Foreign_Trade_Cost_US__c, Product2.Foreign_Trade_List_US__c, Product2.Intra_Trade_Cost_RMB__c, Product2.Intra_Trade_List_RMB__c, '
                        + 'Product2.Asset_Model_No__c, Product2.Serial_Lot_No__c, Product2.Sales_Possibility__c, Product2.Estimation_Entry_Possibility__c, '
                        + 'Product2.SFDA_Status__c, Product2.Qty_Unit__c, Product2.BSSCategory__c, Product2.Asset_loaner_category__c, Product2.Packing_list_manual__c '
                        // 多年保修 start
                        + ' ,Product2.Extend_new_product_gurantee_MD__c , Product2.Extend_new_product_gurantee__c , Product2.Entend_gurantee_period_all__c , '
                        + '  Product2.Intra_Trade_Gurantee_RMB__c  '
                        //外贸多年保 取产品主数据上的外贸金额及报价 精琢技术 wql 2021/01/04 start
                        + ',Product2.Intra_Trade_Foreign_RMB__c,Product2.NoDiscount_Foreign__c,Product2.Repair_Contract_USD__c '
                        //外贸多年保 取产品主数据上的外贸金额及报价 精琢技术 wql 2021/01/04 end
                        //+ ' , Product2.If_Consumable__c '
                        //增加产品不可取消多年保逻辑 精琢技术 wql 2020/09/02 start 阿西赛多 2020/12/29 start 
                        + ' , Product2.Intra_Trade_Service_RMB__c,Product2.CanNotCancelledGurantee__c,Product2.Is_DangerousChemicals__c '
                        //增加产品不可取消多年保逻辑 精琢技术 wql 2020/09/02 end 阿西赛多 2020/12/29 end
                        + ' , Product2.GuranteeType__c , product2.VenderName__c , product2.Maintenance_Price_Year__c '
                        // 多年保修 end
                        // 20221020 ljh SWAG-CJ98AJ start
                        + ' , Product2.suitDepartment__c '
                        // 20221020 ljh SWAG-CJ98AJ end
                        //SFDC停止预警（预计消耗到期日） lt 20210929 add start
                        + ' , Product2.Estimated_ConsumptionDueDate__c '
                        //SFDC停止预警（预计消耗到期日） lt 20210929 add end

                        + 'FROM PricebookEntry ';
                        //HWAG-BLWB9F 询价报价：多年保产品未登录计提金额时不可报价 精琢技术 2020/03/03 Start

                        //注释原来逻辑
        String whereStr = 'Where Product2.Asset_Model_No__c != null And Product2.Manual_Entry__c = false And Product2.Estimation_Entry_Possibility__c !=' + '\'' + x + '\' '
                        // String whereStr = 'Where Product2.Asset_Model_No__c != null And Product2.Manual_Entry__c = false '
                        //HWAG-BLWB9F 询价报价：多年保产品未登录计提金额时不可报价 精琢技术 2020/03/03 end
                        + 'AND CurrencyIsoCode =' + '\'' + String.escapeSingleQuotes(trade) + '\' '
                        + 'AND IsActive = true ';
        String whereSql = '';
        if (searchMode == 'CS') {
            whereSql += 'and Product2.Asset_loaner_category__c = \'为耗材管理\' ';
        }
        if (SearchName != null && SearchName != '') {
            String likename = String.escapeSingleQuotes(SearchName);
            String prdcd = String.escapeSingleQuotes(SearchName);
            if (likename.indexOf('*') >= 0) {
                // TODO escapeは考量してないけど、問題ないと思います。一文字の _ の対応はいらないと思います。
                likename = likename.replace('*', '%');
            } else {
                // default両側あいまい検索
                likename = '%' + likename + '%';
            }
            whereSql += 'and (Product2.Name Like ' + '\'' + likename + '\' or Product2.ProductCode = ' + '\'' + prdcd + '\' or Product2.Asset_Model_No__c Like ' + '\'' + likename + '\') ';
        }
        if (trade=='CNY') {
            //HWAG-BLWB9F 询价报价：多年保产品未登录计提金额时不可报价 精琢技术 2020/03/03 Start

            //注释原逻辑

            // whereSql += 'and Product2.Intra_Trade_List_RMB__c > 0 and Product2.Intra_Trade_Cost_RMB__c > 0';
            whereSql += '';
        } else if(trade=='USD'){
            // whereSql += 'and Product2.Foreign_Trade_List_US__c > 0 and Product2.Foreign_Trade_Cost_US__c > 0';
            whereSql += '';
            //HWAG-BLWB9F 询价报价：多年保产品未登录计提金额时不可报价 精琢技术 2020/03/03 end
        } else {
            system.debug(' trade = '+ trade);
        }

        // Celon询价修改 2022-04-24 ssm start
        celon = String.isNotBlank(celon) ? celon : null;
        whereSql += ' and Product2.Celon_Product__c = :celon ';
        // Celon询价修改 2022-04-24 ssm end

        searchSql = searchSql + whereStr + whereSql;

        //20211123 lt update 450 原500
        searchSql += ' order by Product2.Asset_Model_No__c Limit 450';
        System.debug('searchSql::::::' + searchSql);
    System.debug('whereStr::::::' + whereStr);
        System.debug('whereSql::::::' + whereSql);
        // system.debug(searchSql);
        List<PricebookEntry> pbes = Database.query(searchSql);

        cl = new List<ProductLine>();
        for (Integer i = 0; i < pbes.size(); i++) {
            ProductLine pl = new ProductLine(i, pbes[i]);
            cl.add(pl);
        }

        return null;
    }



    public class ProductLine {
        public Integer idx {get; set;}
        public PricebookEntry pbe {get; set;}
        public Decimal Intra_Trade_Cost_RMB {get; set;}
        public Decimal Foreign_Trade_Cost_US {get; set;}
        public String NameCode {get; set;}
        public String Sales_Possibility {get; set;}
        public String Bsscategory {get; set;}
        public String Product_Id {get; set;}
        public String PricebookEntryId {get; set;}
        public Decimal Packing_list_manual { get; set; }
        // 多年保修 start
        public string  GuranteeType {get;set;}
        public Decimal Entend_gurantee_period_all { get; set; }
        public Decimal Intra_Trade_Gurantee_RMB { get; set; }
        public Decimal Intra_Trade_Service_RMB { get; set; }
         //2021/01/06 liying start
        public Decimal NoDiscount_Foreign {get; set;}
        //2021/01/06 liying end
        public string VenderName {get; set;}
        public decimal Maintenance_Price_Year {get; set; }

        //外贸多年保 取产品主数据上的外贸金额以及维修合同报价 精琢技术 wql 2021/01/04 start 
        public Decimal Intra_Trade_Gurantee_USD { get; set; }
        public Decimal Intra_Trade_Service_USD { get; set; }
        public decimal Maintenance_Price_Year_USD {get; set; }
        //外贸多年保 取产品主数据上的外贸金额以及维修合同报价 精琢技术 wql 2021/01/04 end

        //HWAG-BLWB9F 询价报价：多年保产品未登录计提金额时不可报价 精琢技术 2020/03/03 Start
        //是否登录报价
        public boolean Estimation_Entry_Possibility {get; set; }
        //成本是否为空
        public boolean CostFlag {get; set; }

        //HWAG-BLWB9F 询价报价：多年保产品未登录计提金额时不可报价 精琢技术 2020/03/03 end

        //增加产品不可取消多年保逻辑 精琢技术 wql 2020/09/02 start
        public boolean CanNotCancelledGurantee {get; set;}
        //增加产品不可取消多年保逻辑 精琢技术 wql 2020/09/02 end

        //增加阿西赛多逻辑 精琢技术 wql 2020/12/29 start
        public boolean Is_DangerousChemicals {get; set;}
        //增加阿西赛多逻辑 精琢技术 wql 2020/12/29 end


        // 多年保修 end
        public ProductLine(Integer i, PricebookEntry pbe) {
            this.idx = i;
            this.pbe = pbe;
            this.Intra_Trade_Cost_RMB = pbe.Product2.Intra_Trade_Cost_RMB__c;
            this.Foreign_Trade_Cost_US = pbe.Product2.Foreign_Trade_Cost_US__c;
            this.NameCode = pbe.Product2.ProductCode;
            this.Sales_Possibility = pbe.Product2.Sales_Possibility__c;
            this.Bsscategory = pbe.Product2.BSSCategory__c;
            this.Product_Id = pbe.Product2Id;
            this.PricebookEntryId = pbe.Id;
            this.Packing_list_manual = pbe.Product2.Packing_list_manual__c;

            // 多年保修 start
            this.GuranteeType = pbe.Product2.GuranteeType__c;
            this.Entend_gurantee_period_all = pbe.Product2.Entend_gurantee_period_all__c;
            this.Intra_Trade_Gurantee_RMB = pbe.Product2.Intra_Trade_Gurantee_RMB__c;
            this.Intra_Trade_Service_RMB= pbe.Product2.Intra_Trade_Service_RMB__c;

             //2021/01/06 liying start
            this.NoDiscount_Foreign=pbe.Product2.NoDiscount_Foreign__c;
            //2021/01/06 liying end
            this.Maintenance_Price_Year = pbe.Product2.Maintenance_Price_Year__c;
            
            //外贸多年保 取产品主数据上的外贸金额以及维修合同报价 精琢技术 wql 2021/01/04 start 
            this.Intra_Trade_Gurantee_USD = pbe.Product2.Intra_Trade_Foreign_RMB__c;
            this.Intra_Trade_Service_USD = pbe.Product2.NoDiscount_Foreign__c;
            this.Maintenance_Price_Year_USD = pbe.Product2.Repair_Contract_USD__c;
            //外贸多年保 取产品主数据上的外贸金额以及维修合同报价 精琢技术 wql 2021/01/04 end


            if(pbe.Product2.VenderName__c==null||
                pbe.Product2.VenderName__c.trim().length() == 0){
                this.VenderName =' 无 ';
            }else{
                this.VenderName = pbe.Product2.VenderName__c;
            }
            // 多年保修 end

            //增加产品不可取消多年保逻辑 精琢技术 wql 2020/09/02 start
            this.CanNotCancelledGurantee = pbe.Product2.CanNotCancelledGurantee__c;
            //增加产品不可取消多年保逻辑 精琢技术 wql 2020/09/02 end
            //增加阿西赛多逻辑 精琢技术 wql 2020/12/29 start
            this.Is_DangerousChemicals = pbe.Product2.Is_DangerousChemicals__c;
            //增加阿西赛多逻辑 精琢技术 wql 2020/12/29 end


            //HWAG-BLWB9F 询价报价：多年保产品未登录计提金额时不可报价 精琢技术 2020/03/03 Start
            //是否登录报价
            System.debug('aaaaaa:'+pbe.Product2.Estimation_Entry_Possibility__c);
            if(pbe.Product2.Estimation_Entry_Possibility__c=='×' ){
                this.Estimation_Entry_Possibility = true;
            }else{
                this.Estimation_Entry_Possibility = false;
            }
            //成本是否为空
            system.debug('bbbbb:'+pbe.Product2.Intra_Trade_Cost_RMB__c);
            if(pbe.Product2.Intra_Trade_Cost_RMB__c > 0 ){
                this.CostFlag = false;
            }else{
                this.CostFlag = true;
            }
            //HWAG-BLWB9F 询价报价：多年保产品未登录计提金额时不可报价 精琢技术 2020/03/03 end
        }


        
      
    }
    
    public  void searchNameisNUll(){
        maxLen =SearchName;
        SearchName='';
    }


}