| | |
| | | public List<OppInfo> oppRecords { get; set; } |
| | | // ページレイアウトの情報を取得 |
| | | private Map<String, String> DESC_RW = null; |
| | | |
| | | |
| | | /*****************検索用******************/ |
| | | public Contact con1 { get; set; } |
| | | public Contact con2 { get; set; } |
| | | |
| | | |
| | | public String accSearch { get; set; } |
| | | public String ownerSearch { get; set; } |
| | | |
| | | |
| | | public List<SelectOption> dateOpts { get; private set; } |
| | | public List<SelectOption> textOpts { get; private set; } |
| | | public List<SelectOption> equalOpts { get; private set; } |
| | |
| | | public List<SelectOption> textOpts3 { get; private set; } |
| | | public List<SelectOption> equalOpts3 { get; private set; } |
| | | public List<SelectOption> limitOpts { get; private set; } |
| | | |
| | | |
| | | public String dateField { get; set; } |
| | | |
| | | |
| | | public String text { get; set; } |
| | | public String condition { get; set; } |
| | | public String value { get; set; } |
| | | |
| | | |
| | | public String text2 { get; set; } |
| | | public String condition2 { get; set; } |
| | | public String value2 { get; set; } |
| | | |
| | | |
| | | public String text3 { get; set; } |
| | | public String condition3 { get; set; } |
| | | public String value3 { get; set; } |
| | | |
| | | |
| | | // TODO xudan 20140626 チェック:询价、未チェック:全部(後藤要望) |
| | | public Boolean onlyOpp { get; set; } |
| | | //【委托】【重要】周会管理表修改 tcm start |
| | | public Boolean OpptyWait { get; set; } |
| | | //【委托】【重要】周会管理表修改 tcm end |
| | | public String limits { get; set; } |
| | | |
| | | |
| | | /*****************画面表示Bean******************/ |
| | | public Integer oppCount { get; set; } |
| | | public String saveType { get; set; } |
| | | |
| | | |
| | | /*****************ソートキー******************/ |
| | | public String sortKey { get; set; } |
| | | public String preSortKey { get; set; } |
| | |
| | | public String[] sortOrder { get; set; } |
| | | public String[] columus = new String[] {'Id'}; |
| | | public Set<String> columusSet = new Set<String> {'Id'}; |
| | | |
| | | |
| | | // 项目set 字段标签 |
| | | public List<String> titleLeft { get; private set; } |
| | | public List<String> titleRight { get; private set; } |
| | |
| | | public List<List<String> > columnsRightApi { get; private set; } // 参照項目用 |
| | | public List<String> columnLeftCss { get; private set; } // css 用 |
| | | public List<String> columnRightCss { get; private set; } // css 用 |
| | | //XLIU-CGF4TA 【委托】 【询价管理改善需求评估】询价中的进口论证判断 fy start |
| | | public List<String> columnRightCsscopy { get; private set; } |
| | | public List<String> titleRightcopy { get; private set; } |
| | | public List<List<String> > columnsRightApicopy { get; private set; } |
| | | //XLIU-CGF4TA 【委托】 【询价管理改善需求评估】询价中的进口论证判断 fy end |
| | | public Map<String, String> columnLeftRW { get; private set; } // r,w,wm用 |
| | | public Map<String, String> columnRightRW { get; private set; } // r,w,wm用 |
| | | public List<String> columnMark { get; private set; } // Mark用 |
| | |
| | | private String strColumusForMoney; // 金額集計soql用項目 |
| | | public Map<String, Decimal> columnMoneyMap { get; private set; } |
| | | public Map<String, Boolean> columnMoneyFlgMap { get; private set; } |
| | | |
| | | |
| | | public Integer ratingStartIdx { get; private set; } // Rating表示ラベルの開始Idx |
| | | |
| | | |
| | | /*****************ソート時再検索条件(画面からの入力条件を無視するため)******************/ |
| | | private String hpForSort = null; |
| | | private String ownerForSort = null; |
| | |
| | | //【委托】【重要】周会管理表修改 tcm end |
| | | private static Integer oppLimit = 1000; |
| | | private Boolean isForMoneyFlg = false; |
| | | |
| | | //XLIU-CGF4TA 【委托】 【询价管理改善需求评估】询价中的进口论证判断 fy start |
| | | public Boolean HideForecastOCSMflag { get; set; } |
| | | //XLIU-CGF4TA 【委托】 【询价管理改善需求评估】询价中的进口论证判断 fy end |
| | | public OpportunityPCLController2() { |
| | | //Apexpages.currentPage().getHeaders().put('X-UA-Compatible', 'IE=8'); |
| | | DESC_RW = SoapApi.getEditLayoutItemRW('Opportunity', new String[] {'01210000000QekKAAS'}).get('01210000000QekKAAS'); |
| | | oppRecords = new List<OppInfo>(); |
| | | |
| | | |
| | | // 日付検索条件のCalendar用 |
| | | con1 = new Contact(); |
| | | con2 = new Contact(); |
| | | |
| | | |
| | | dateOpts = new List<SelectOption>(); |
| | | dateOpts.add(new SelectOption('', '--无--')); |
| | | dateOpts.add(new SelectOption('Bid_Planned_Date__c', '预测招标日')); |
| | |
| | | dateOpts.add(new SelectOption(' TenderBeginDate__c', '招标日(招标项目)')); |
| | | dateOpts.add(new SelectOption('Closing_Bid_Date_Bid__c', '中标日(招投标)')); |
| | | //【委托】【重要】周会管理表修改 tcm end |
| | | dateOpts.add(new SelectOption('Close_Forecasted_Date__c', '预测OCSM签约日')); |
| | | |
| | | dateOpts.add(new SelectOption('Close_Forecasted_Date__c', '预测OCSM签约日(KPI)')); //20220506 lt update |
| | | |
| | | //SWAG-C9NC23 【委托】[重要,优先!]周会询价管理表修改 lt 20211217 start |
| | | dateOpts.add(new SelectOption('Close_Forecasted_Assume_Date__c', '预测OCSM签约日(担当)')); |
| | | //SWAG-C9NC23 【委托】[重要,优先!]周会询价管理表修改 lt 20211217 end |
| | | |
| | | dateOpts.add(new SelectOption('CloseDate', '预测发货日')); |
| | | |
| | | dateOpts.add(new SelectOption('CloseDate', '预测发货日')); //20220506 lt update |
| | | dateOpts.add( new SelectOption('Created_Day__c', '创建日')); |
| | | dateOpts.add(new SelectOption('Last_Follow_Up_Date__c', '最后跟进日'));//*********************** |
| | | // 日付検索に標準のLastModifiedDate(日時項目)は使えない、数式項目を利用 |
| | |
| | | dateOpts.add( new SelectOption('Situation_last_update_day__c', '最后更新日-询价跟进情况')); |
| | | dateOpts.add( new SelectOption('Manager_feedback_last_update__c', '最后更新日-经理反馈')); |
| | | dateOpts.add( new SelectOption('Follow_up_plan_last_update__c', '最后更新日-推进计划')); |
| | | |
| | | //进口论证 fy start |
| | | dateOpts.add( new SelectOption('ImportDemonstration_Filing_date__c', '进口论证申请日')); |
| | | dateOpts.add( new SelectOption('ImportDemonstration_Approval_date__c', '进口论证批准日')); |
| | | dateOpts.add( new SelectOption('ImportDemonstration_Rejection_date__c', '进口论证驳回日')); |
| | | //进口论证 fy end |
| | | |
| | | textOpts = new List<SelectOption>(); |
| | | textOpts.add(new SelectOption('','--无--')); |
| | | textOpts.add(new SelectOption('S:Name','询价名称')); |
| | | textOpts.add(new SelectOption('S:Opportunity_No__c',Schema.SObjectType.Opportunity.fields.Opportunity_No__c.label)); |
| | | textOpts.add(new SelectOption('S:HP_Name__c','医院名')); |
| | | textOpts.add(new SelectOption('S:Owner_Category__c','课'));// 20220907 XLIU-CHY4JL you |
| | | |
| | | // TODO xudan 20140626 状态1をチェックボックスに、ここ要らない? |
| | | textOpts.add(new SelectOption('S:Owner.Salesdepartment__c','本部')); |
| | | textOpts.add(new SelectOption('S:Owner.Province__c','省')); |
| | | textOpts.add(new SelectOption('S:Owner.Group__c','组')); |
| | | textOpts.add(new SelectOption('S:StageName__c','状态1')); |
| | | //DB202211286315 【周会-询价管理表】筛选项增加“状态2” xxf 20221115 start |
| | | textOpts.add(new SelectOption('S:Status_Formula__c','状态2')); |
| | | //DB202211286315 【周会-询价管理表】筛选项增加“状态2” xxf 20221115 end |
| | | textOpts.add(new SelectOption('S:Owner.Name','担当人')); |
| | | textOpts.add(new SelectOption('S:OCM__c','OCSM分类')); |
| | | textOpts.add(new SelectOption('S:Department_Name__c','科室名')); |
| | |
| | | textOpts.add(new SelectOption('S:Competitor__c','询价等级')); |
| | | //textOpts.add(new SelectOption('S:OPD_SIS_collect_evaluation_sight__r.Name',Schema.SObjectType.Opportunity.fields.OPD_SIS_collect_evaluation_sight__c.label)); |
| | | textOpts.add(new SelectOption('S:Forecast_this_month__c','本月预测')); |
| | | //DB202211121149 【周会-询价管理】周会询价表把“资金来源”添加到“数据字段”中进行筛选 xxf 20221109 start |
| | | textOpts.add(new SelectOption('S:Fund_Basis__c','资金来源')); |
| | | //DB202211121149 【周会-询价管理】周会询价表把“资金来源”添加到“数据字段”中进行筛选 xxf 20221109 end |
| | | //进口论证 fy start |
| | | textOpts.add(new SelectOption('t:if_NeedImportDemonstration__c','需要进口论证')); |
| | | //进口论证 fy end |
| | | //textOpts.add(new SelectOption('N:Lapsed_Days__c',Schema.SObjectType.Opportunity.fields.Lapsed_Days__c.label)); |
| | | //textOpts.add(new SelectOption('S:Rating01__c','1月末询价状态')); |
| | | //textOpts.add(new SelectOption('S:Rating02__c','2月末询价状态')); |
| | |
| | | //textOpts.add(new SelectOption('S:Rating10__c','10月末询价状态')); |
| | | //textOpts.add(new SelectOption('S:Rating11__c','11月末询价状态')); |
| | | //textOpts.add(new SelectOption('S:Rating12__c','12月末询价状态')); |
| | | |
| | | |
| | | textOpts2 = textOpts; |
| | | textOpts3 = textOpts; |
| | | |
| | | |
| | | equalOpts = new List<SelectOption>(); |
| | | equalOpts.add(new SelectOption('equals','等于')); |
| | | equalOpts.add(new SelectOption('notequals','不等于')); |
| | |
| | | equalOpts.add(new SelectOption('contains','包含')); |
| | | equalOpts.add(new SelectOption('notcontains','不包含')); |
| | | equalOpts.add(new SelectOption('starts with','起始字符')); |
| | | |
| | | |
| | | equalOpts2 = equalOpts; |
| | | equalOpts3 = equalOpts; |
| | | |
| | | |
| | | limitOpts = new List<SelectOption>(); |
| | | limitOpts.add(new SelectOption('20','20')); |
| | | limitOpts.add(new SelectOption('50','50')); |
| | |
| | | limitOpts.add(new SelectOption('200','200')); |
| | | limitOpts.add(new SelectOption('500','500')); |
| | | limitOpts.add(new SelectOption('' + (oppLimit + 1), '全部')); |
| | | |
| | | |
| | | limits = '50'; |
| | | |
| | | |
| | | ratingStartIdx = -1; |
| | | } |
| | | |
| | | |
| | | public PageReference init() { |
| | | System.debug('lt123 --- init start --- : ' + System.currentTimeMillis()); |
| | | // xudan 20140626 状态1をチェックボックスに |
| | | onlyOpp = true; |
| | | //【委托】【重要】周会管理表修改 tcm start |
| | | OpptyWait = false; |
| | | //【委托】【重要】周会管理表修改 tcm end |
| | | //20140822 追加 by katsu start |
| | | System.debug('lt123 --- 查user开始 --- : ' + System.currentTimeMillis()); |
| | | String uidParam = System.currentPageReference().getParameters().get('uid'); |
| | | if (uidParam != null) { |
| | | User u = [select Id, FirstName, LastName from User where Id = :uidParam]; |
| | | ownerSearch = u.LastName + ' ' + u.FirstName; |
| | | User u = [select Id, FirstName, LastName from User where Id = :uidParam]; |
| | | ownerSearch = u.LastName + ' ' + u.FirstName; |
| | | } |
| | | System.debug('lt123 --- 查user结束 --- : ' + System.currentTimeMillis()); |
| | | String hpidParam = System.currentPageReference().getParameters().get('hpid'); |
| | | if(hpidParam != null) { |
| | | List<Account> hpAcc = ControllerUtil.selectAccountForTrigger(new String[] {hpidParam}); |
| | | if (hpAcc.size() > 0) { |
| | | accSearch = hpAcc[0].name; |
| | | } |
| | | List<Account> hpAcc = ControllerUtil.selectAccountForTrigger(new String[] {hpidParam}); |
| | | if (hpAcc.size() > 0) { |
| | | accSearch = hpAcc[0].name; |
| | | } |
| | | } |
| | | System.debug('lt123 --- 调用searchOppSetParam()前 --- : ' + System.currentTimeMillis()); |
| | | //20140822 追加 by katsu end |
| | | |
| | | |
| | | searchOppSetParam(); |
| | | System.debug('lt123 --- 调用searchOppSetParam()后,setLayoutRWInfo()前 --- : ' + System.currentTimeMillis()); |
| | | setLayoutRWInfo(); |
| | | System.debug('lt123 --- 调用setLayoutRWInfo()后 --- : ' + System.currentTimeMillis()); |
| | | this.sortOrderAsc = true; |
| | | this.sortOrder = new String[columus.size()]; |
| | | for (Integer i = 0; i < columus.size(); i++) this.sortOrder[i] = ' '; |
| | | System.debug('lt123 --- 调用searchOppInner()前 --- : ' + System.currentTimeMillis()); |
| | | searchOppInner(); |
| | | System.debug('lt123 --- 调用searchOppInner()后 --- : ' + System.currentTimeMillis()); |
| | | System.debug('columnMoneyFlgMapvalue:'+columnMoneyFlgMap); |
| | | System.debug('columnMoneyMapvalue:'+columnMoneyMap); |
| | | System.debug('columnRightCss:'+columnRightCss); |
| | | columnRightCsscopy =columnRightCss; |
| | | titleRightcopy = titleRight; |
| | | columnsRightApicopy = columnsRightApi; |
| | | System.debug('lt123 --- init end --- : ' + System.currentTimeMillis()); |
| | | return null; |
| | | } |
| | | |
| | | |
| | | private void searchOppSetParam() { |
| | | hpForSort = accSearch; |
| | | ownerForSort = ownerSearch; |
| | |
| | | OpptyWaitForSort=OpptyWait; |
| | | //【委托】【重要】周会管理表修改 tcm end |
| | | } |
| | | |
| | | |
| | | private void setLayoutRWInfo() { |
| | | if (this.sortOrder == null) { |
| | | |
| | | List<String> columnsForMoney = new List<String>(); |
| | | Set<String> currencyFields = new Set<String>(); |
| | | |
| | | // 获得项目set |
| | | Map<String, Schema.FieldSet> fsMap = Schema.getGlobalDescribe().get('Opportunity').getDescribe().fieldSets.getMap(); |
| | | |
| | | // 合計金額計算用 |
| | | Schema.FieldSet fs = fsMap.get('Opportunity_PCL_Sum'); |
| | | List<FieldSetMember> fsmList = fs.getFields(); |
| | | columnMoneyMap = new Map<String, Decimal>(); |
| | | columnMoneyFlgMap = new Map<String, Boolean>(); |
| | | for (FieldSetMember fsm : fsmList) { |
| | | columnMoneyMap.put(fsm.getFieldPath(), 0); |
| | | |
| | | List<String> columnsForMoney = new List<String>(); |
| | | Set<String> currencyFields = new Set<String>(); |
| | | |
| | | // 获得项目set |
| | | Map<String, Schema.FieldSet> fsMap = Schema.getGlobalDescribe().get('Opportunity').getDescribe().fieldSets.getMap(); |
| | | |
| | | // 合計金額計算用 |
| | | Schema.FieldSet fs = fsMap.get('Opportunity_PCL_Sum'); |
| | | List<FieldSetMember> fsmList = fs.getFields(); |
| | | columnMoneyMap = new Map<String, Decimal>(); |
| | | columnMoneyFlgMap = new Map<String, Boolean>(); |
| | | for (FieldSetMember fsm : fsmList) { |
| | | columnMoneyMap.put(fsm.getFieldPath(), 0); |
| | | } |
| | | |
| | | // 左 固定 |
| | | fs = fsMap.get('Opportunity_PCL_L'); |
| | | // 获得项目set中的所有项目 |
| | | fsmList = fs.getFields(); |
| | | // 获得字段标签和字段名 |
| | | titleLeft = new List<String>(); |
| | | List<String> columnLeft = new List<String>(); |
| | | |
| | | columnLeftCss = new List<String>(); |
| | | columnLeftRW = new Map<String, String>(); |
| | | columnsLeftApi = new List<List<String> >(); |
| | | for (FieldSetMember fsm : fsmList) { |
| | | titleLeft.add(fsm.getLabel()); |
| | | columnLeft.add(fsm.getFieldPath()); |
| | | List<String> splitFieldPath = fsm.getFieldPath().split('\\.'); |
| | | columnsLeftApi.add(splitFieldPath); |
| | | |
| | | if (String.valueOf(fsm.getType()) == 'CURRENCY') { |
| | | currencyFields.add(fsm.getFieldPath()); |
| | | } |
| | | |
| | | // 左 固定 |
| | | fs = fsMap.get('Opportunity_PCL_L'); |
| | | // 获得项目set中的所有项目 |
| | | fsmList = fs.getFields(); |
| | | // 获得字段标签和字段名 |
| | | titleLeft = new List<String>(); |
| | | List<String> columnLeft = new List<String>(); |
| | | |
| | | columnLeftCss = new List<String>(); |
| | | columnLeftRW = new Map<String, String>(); |
| | | columnsLeftApi = new List<List<String> >(); |
| | | for (FieldSetMember fsm : fsmList) { |
| | | titleLeft.add(fsm.getLabel()); |
| | | columnLeft.add(fsm.getFieldPath()); |
| | | List<String> splitFieldPath = fsm.getFieldPath().split('\\.'); |
| | | columnsLeftApi.add(splitFieldPath); |
| | | |
| | | if (String.valueOf(fsm.getType()) == 'CURRENCY') { |
| | | currencyFields.add(fsm.getFieldPath()); |
| | | } |
| | | system.debug('splitFieldPath等于'+splitFieldPath.size()); |
| | | if (DESC_RW == null) { |
| | | columnLeftRW.put(fsm.getFieldPath(), 'r'); |
| | | } else if (splitFieldPath.size() == 1) { |
| | | String rw = DESC_RW.get(fsm.getFieldPath()); |
| | | if (rw != null) { |
| | | columnLeftRW.put(fsm.getFieldPath(), rw); |
| | | } else { |
| | | columnLeftRW.put(fsm.getFieldPath(), 'r'); |
| | | } |
| | | } else { |
| | | columnLeftRW.put(fsm.getFieldPath(), 'r'); |
| | | } |
| | | system.debug('splitFieldPath等于'+splitFieldPath.size()); |
| | | if (DESC_RW == null) { |
| | | columnLeftRW.put(fsm.getFieldPath(), 'r'); |
| | | } else if (splitFieldPath.size() == 1) { |
| | | String rw = DESC_RW.get(fsm.getFieldPath()); |
| | | if (rw != null) { |
| | | columnLeftRW.put(fsm.getFieldPath(), rw); |
| | | } else { |
| | | columnLeftRW.put(fsm.getFieldPath(), 'r'); |
| | | } |
| | | for (String s : columnLeft) { |
| | | if (columusSet.contains(s) == false) { |
| | | columus.add(s); |
| | | if (currencyFields.contains(s)) { |
| | | columnsForMoney.add('convertCurrency(' + s + ')'); |
| | | } else { |
| | | columnsForMoney.add(s); |
| | | } |
| | | columusSet.add(s); |
| | | } |
| | | if (columnMoneyMap.containsKey(s)) { |
| | | columnMoneyFlgMap.put(s.replace('.','_'), true); |
| | | } else { |
| | | columnMoneyFlgMap.put(s.replace('.','_'), false); |
| | | } |
| | | columnLeftCss.add(s.replace('.','_')); |
| | | } else { |
| | | columnLeftRW.put(fsm.getFieldPath(), 'r'); |
| | | } |
| | | fs = fsMap.get('Opportunity_PCL'); |
| | | // 获得项目set中的所有项目 |
| | | fsmList = fs.getFields(); |
| | | // 获得字段标签和字段名 |
| | | titleRight = new List<String>(); |
| | | List<String> tmpColRight = new List<String>(); |
| | | |
| | | columnRightCss = new List<String>(); |
| | | columnRightRW = new Map<String, String>(); |
| | | columnsRightApi = new List<List<String> >(); |
| | | |
| | | Integer cnt = 0; |
| | | for (FieldSetMember fsm : fsmList) { |
| | | titleRight.add(fsm.getLabel()); |
| | | List<String> splitFieldPath = fsm.getFieldPath().split('\\.'); |
| | | columnsRightApi.add(splitFieldPath); |
| | | |
| | | if (String.valueOf(fsm.getType()) == 'CURRENCY') { |
| | | currencyFields.add(fsm.getFieldPath()); |
| | | } |
| | | // 「1月末」を設定したら、12ヶ月分を設定と見なす |
| | | // 設定の順番や、欠番などを考慮せず |
| | | if (splitFieldPath.size() == 1 && splitFieldPath[0] == 'Rating01__c') { |
| | | ratingStartIdx = cnt; |
| | | } |
| | | |
| | | if (DESC_RW == null) { |
| | | columnRightRW.put(fsm.getFieldPath(), 'r'); |
| | | } else if (splitFieldPath.size() == 1) { |
| | | String rw = DESC_RW.get(fsm.getFieldPath()); |
| | | if (rw != null) { |
| | | columnRightRW.put(fsm.getFieldPath(), rw); |
| | | } else { |
| | | columnRightRW.put(fsm.getFieldPath(), 'r'); |
| | | } |
| | | } else { |
| | | columnRightRW.put(fsm.getFieldPath(), 'r'); |
| | | } |
| | | |
| | | tmpColRight.add(fsm.getFieldPath()); |
| | | cnt++; |
| | | } |
| | | for (String s : columnLeft) { |
| | | if (columusSet.contains(s) == false) { |
| | | columus.add(s); |
| | | if (currencyFields.contains(s)) { |
| | | columnsForMoney.add('convertCurrency(' + s + ')'); |
| | | } else { |
| | | columnsForMoney.add(s); |
| | | } |
| | | for (String s : tmpColRight) { |
| | | if (columusSet.contains(s) == false) { |
| | | columus.add(s); |
| | | if (currencyFields.contains(s)) { |
| | | columnsForMoney.add('convertCurrency(' + s + ')'); |
| | | } else { |
| | | columnsForMoney.add(s); |
| | | } |
| | | columusSet.add(s); |
| | | |
| | | } |
| | | if (columnMoneyMap.containsKey(s)) { |
| | | columnMoneyFlgMap.put(s.replace('.','_'), true); |
| | | } else { |
| | | columnMoneyFlgMap.put(s.replace('.','_'), false); |
| | | } |
| | | columnRightCss.add(s.replace('.','_')); |
| | | columusSet.add(s); |
| | | } |
| | | |
| | | for (Integer i = 0; i < columnRightCss.size(); i++) { |
| | | system.debug('columnRightCsssize等于'+columnRightCss.size()); |
| | | system.debug('ratingStartIdx等于'+ratingStartIdx); |
| | | if (i == ratingStartIdx) { |
| | | // 12ヶ月の旧Css |
| | | Map<Integer, String> oldCssMap = new Map<Integer, String>(); |
| | | // 12ヶ月の旧ラベル |
| | | Map<Integer, String> oldLabelMap = new Map<Integer, String>(); |
| | | for (Integer m = 1; m <= 12; m++) { |
| | | oldCssMap.put(m, columnRightCss[i + m - 1]); |
| | | oldLabelMap.put(m, titleRight[i + m - 1]); |
| | | } |
| | | // 12ヶ月 |
| | | for (Integer m = 1; m <= 12; m++) { |
| | | Integer newM = makeRatingLabel(m); |
| | | // ラベル |
| | | titleRight[i + m - 1] = oldLabelMap.get(newM); |
| | | // CSS |
| | | columnRightCss[i + m - 1] = oldCssMap.get(newM); |
| | | // Read/Write |
| | | columnRightRW.put(columnRightCss[i + m - 1], 'r'); |
| | | // API |
| | | columnsRightApi[i + m - 1] = new String[] { makeRatingAPI(m, Date.today().month()) }; |
| | | columus[columnLeftCss.size() + 1 + i + m - 1] = makeRatingAPI(m, Date.today().month()); |
| | | } |
| | | break; |
| | | } |
| | | if (columnMoneyMap.containsKey(s)) { |
| | | columnMoneyFlgMap.put(s.replace('.','_'), true); |
| | | } else { |
| | | columnMoneyFlgMap.put(s.replace('.','_'), false); |
| | | } |
| | | |
| | | // ソート用 |
| | | this.sortOrderAsc = true; |
| | | this.sortOrder = new String[columus.size()]; |
| | | for (Integer i = 0; i < columus.size(); i++) this.sortOrder[i] = ' '; |
| | | |
| | | // Mark |
| | | fs = fsMap.get('Opportunity_PCL_Mark'); |
| | | // 获得项目set中的所有项目 |
| | | fsmList = fs.getFields(); |
| | | columnMark = new List<String>(); |
| | | for (FieldSetMember fsm : fsmList) { |
| | | columnMark.add(fsm.getFieldPath()); |
| | | columnLeftCss.add(s.replace('.','_')); |
| | | } |
| | | fs = fsMap.get('Opportunity_PCL'); |
| | | // 获得项目set中的所有项目 |
| | | fsmList = fs.getFields(); |
| | | // 获得字段标签和字段名 |
| | | titleRight = new List<String>(); |
| | | List<String> tmpColRight = new List<String>(); |
| | | |
| | | columnRightCss = new List<String>(); |
| | | columnRightRW = new Map<String, String>(); |
| | | columnsRightApi = new List<List<String> >(); |
| | | |
| | | Integer cnt = 0; |
| | | for (FieldSetMember fsm : fsmList) { |
| | | titleRight.add(fsm.getLabel()); |
| | | List<String> splitFieldPath = fsm.getFieldPath().split('\\.'); |
| | | columnsRightApi.add(splitFieldPath); |
| | | |
| | | if (String.valueOf(fsm.getType()) == 'CURRENCY') { |
| | | currencyFields.add(fsm.getFieldPath()); |
| | | } |
| | | for (String s : columnMark) { |
| | | if (columusSet.contains(s) == false) { |
| | | columus.add(s); |
| | | columusSet.add(s); |
| | | } |
| | | // 「1月末」を設定したら、12ヶ月分を設定と見なす |
| | | // 設定の順番や、欠番などを考慮せず |
| | | System.debug('splitFieldPath:'+splitFieldPath); |
| | | System.debug('splitFieldPath[0]:'+splitFieldPath[0]); |
| | | if (splitFieldPath.size() == 1 && splitFieldPath[0] == 'Rating01__c') { |
| | | ratingStartIdx = cnt; |
| | | } |
| | | |
| | | strColumus = String.join(columus, ','); |
| | | strColumusForMoney = String.join(columnsForMoney, ','); |
| | | system.debug('=====strColumus:' + strColumus); |
| | | |
| | | if (DESC_RW == null) { |
| | | columnRightRW.put(fsm.getFieldPath(), 'r'); |
| | | } else if (splitFieldPath.size() == 1) { |
| | | String rw = DESC_RW.get(fsm.getFieldPath()); |
| | | if (rw != null) { |
| | | columnRightRW.put(fsm.getFieldPath(), rw); |
| | | } else { |
| | | columnRightRW.put(fsm.getFieldPath(), 'r'); |
| | | } |
| | | } else { |
| | | columnRightRW.put(fsm.getFieldPath(), 'r'); |
| | | } |
| | | tmpColRight.add(fsm.getFieldPath()); |
| | | cnt++; |
| | | } |
| | | //SWAG-CFN8JP 【委托】 【委托】【FY23询价改善】-询价预测时间改善 fy start |
| | | if(columnRightRW.containsKey('Close_Forecasted_Assume_Date__c')){ |
| | | columnRightRW.put('Close_Forecasted_Assume_Date__c', 'r'); |
| | | } |
| | | if(columnRightRW.containsKey('Close_Forecasted_Date__c')){ |
| | | columnRightRW.put('Close_Forecasted_Date__c', 'r'); |
| | | } |
| | | //SWAG-CFN8JP 【委托】 【委托】【FY23询价改善】-询价预测时间改善 fy end |
| | | for (String s : tmpColRight) { |
| | | if (columusSet.contains(s) == false) { |
| | | columus.add(s); |
| | | if (currencyFields.contains(s)) { |
| | | columnsForMoney.add('convertCurrency(' + s + ')'); |
| | | } else { |
| | | columnsForMoney.add(s); |
| | | } |
| | | columusSet.add(s); |
| | | |
| | | } |
| | | if (columnMoneyMap.containsKey(s)) { |
| | | columnMoneyFlgMap.put(s.replace('.','_'), true); |
| | | } else { |
| | | columnMoneyFlgMap.put(s.replace('.','_'), false); |
| | | } |
| | | columnRightCss.add(s.replace('.','_')); |
| | | } |
| | | |
| | | for (Integer i = 0; i < columnRightCss.size(); i++) { |
| | | system.debug('columnRightCsssize等于'+columnRightCss.size()); |
| | | system.debug('ratingStartIdx等于'+ratingStartIdx); |
| | | if (i == ratingStartIdx) { |
| | | // 12ヶ月の旧Css |
| | | Map<Integer, String> oldCssMap = new Map<Integer, String>(); |
| | | // 12ヶ月の旧ラベル |
| | | Map<Integer, String> oldLabelMap = new Map<Integer, String>(); |
| | | for (Integer m = 1; m <= 12; m++) { |
| | | oldCssMap.put(m, columnRightCss[i + m - 1]); |
| | | oldLabelMap.put(m, titleRight[i + m - 1]); |
| | | } |
| | | // 12ヶ月 |
| | | for (Integer m = 1; m <= 12; m++) { |
| | | Integer newM = makeRatingLabel(m); |
| | | // ラベル |
| | | titleRight[i + m - 1] = oldLabelMap.get(newM); |
| | | // CSS |
| | | columnRightCss[i + m - 1] = oldCssMap.get(newM); |
| | | // Read/Write |
| | | columnRightRW.put(columnRightCss[i + m - 1], 'r'); |
| | | // API |
| | | columnsRightApi[i + m - 1] = new String[] { makeRatingAPI(m, Date.today().month()) }; |
| | | columus[columnLeftCss.size() + 1 + i + m - 1] = makeRatingAPI(m, Date.today().month()); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | |
| | | // ソート用 |
| | | this.sortOrderAsc = true; |
| | | this.sortOrder = new String[columus.size()]; |
| | | for (Integer i = 0; i < columus.size(); i++) this.sortOrder[i] = ' '; |
| | | |
| | | // Mark |
| | | fs = fsMap.get('Opportunity_PCL_Mark'); |
| | | // 获得项目set中的所有项目 |
| | | fsmList = fs.getFields(); |
| | | columnMark = new List<String>(); |
| | | for (FieldSetMember fsm : fsmList) { |
| | | columnMark.add(fsm.getFieldPath()); |
| | | } |
| | | for (String s : columnMark) { |
| | | if (columusSet.contains(s) == false) { |
| | | columus.add(s); |
| | | columusSet.add(s); |
| | | } |
| | | } |
| | | |
| | | strColumus = String.join(columus, ','); |
| | | strColumusForMoney = String.join(columnsForMoney, ','); |
| | | system.debug('=====strColumus:' + strColumus); |
| | | } |
| | | } |
| | | |
| | | |
| | | private void searchOppInner() { |
| | | oppRecords = new List<OppInfo>(); |
| | | |
| | | |
| | | String soql = this.makeSoql(false, hpForSort, ownerForSort, |
| | | datefieldForSort, fromdForSort, todForSort, textForSort, conditionForSort, valueForSort, |
| | | textForSort2, conditionForSort2, valueForSort2, |
| | | textForSort3, conditionForSort3, valueForSort3,OpptyWaitForSort); |
| | | datefieldForSort, fromdForSort, todForSort, textForSort, conditionForSort, valueForSort, |
| | | textForSort2, conditionForSort2, valueForSort2, |
| | | textForSort3, conditionForSort3, valueForSort3,OpptyWaitForSort); |
| | | if (String.isBlank(this.sortKey)) { |
| | | soql += ' order by LastModifiedDate desc limit ' + Integer.valueOf(limits); |
| | | soql += ' order by LastModifiedDate desc limit ' + Integer.valueOf(limits); |
| | | } else { |
| | | soql += ' order by ' + this.columus[Integer.valueOf(this.sortKey)] + ' ' + (this.sortOrderAsc == true ? 'asc nulls first' : 'desc nulls last') + ' limit ' + Integer.valueOf(limits); |
| | | soql += ' order by ' + this.columus[Integer.valueOf(this.sortKey)] + ' ' + (this.sortOrderAsc == true ? 'asc nulls first' : 'desc nulls last') + ' limit ' + Integer.valueOf(limits); |
| | | } |
| | | |
| | | |
| | | String soqlForMoney = this.makeSoql(true, hpForSort, ownerForSort, |
| | | datefieldForSort, fromdForSort, todForSort, textForSort, conditionForSort, valueForSort, |
| | | textForSort2, conditionForSort2, valueForSort2, |
| | | textForSort3, conditionForSort3, valueForSort3,OpptyWaitForSort); |
| | | datefieldForSort, fromdForSort, todForSort, textForSort, conditionForSort, valueForSort, |
| | | textForSort2, conditionForSort2, valueForSort2, |
| | | textForSort3, conditionForSort3, valueForSort3,OpptyWaitForSort); |
| | | if (String.isBlank(this.sortKey)) { |
| | | soqlForMoney += ' order by LastModifiedDate desc limit ' + Integer.valueOf(System.Label.TotalLimit); |
| | | soqlForMoney += ' order by LastModifiedDate desc limit ' + Integer.valueOf(System.Label.TotalLimit); |
| | | } else { |
| | | soqlForMoney += ' order by ' + this.columus[Integer.valueOf(this.sortKey)] + ' ' + (this.sortOrderAsc == true ? 'asc nulls first' : 'desc nulls last')+ ' limit ' + Integer.valueOf(System.Label.TotalLimit); |
| | | soqlForMoney += ' order by ' + this.columus[Integer.valueOf(this.sortKey)] + ' ' + (this.sortOrderAsc == true ? 'asc nulls first' : 'desc nulls last')+ ' limit ' + Integer.valueOf(System.Label.TotalLimit); |
| | | } |
| | | system.debug('soql:' + soql); |
| | | List<Opportunity> queryList = Database.query(soql); |
| | | List<Opportunity> queryListForMoney = Database.query(soqlForMoney); |
| | | |
| | | |
| | | this.makeOppRecordsForView(queryList, queryListForMoney); |
| | | |
| | | |
| | | oppCount = oppRecords.size(); |
| | | if (String.isBlank(this.sortKey)) { |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '取得最近的 ' + oppCount + ' 条数据')); |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '取得最近的 ' + oppCount + ' 条数据')); |
| | | } else { |
| | | if (oppCount > oppLimit) { |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '数据超过' + oppLimit + '件,只显示前' + oppLimit + '件')); |
| | | } else { |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '共有 ' + oppCount + ' 条数据')); |
| | | } |
| | | if (oppCount > oppLimit) { |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '数据超过' + oppLimit + '件,只显示前' + oppLimit + '件')); |
| | | } else { |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '共有 ' + oppCount + ' 条数据')); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | public PageReference searchOpp() { |
| | | searchOppSetParam(); |
| | | setLayoutRWInfo(); |
| | | searchOppInner(); |
| | | return null; |
| | | } |
| | | |
| | | |
| | | public PageReference sortTable() { |
| | | oppRecords = new List<OppInfo>(); |
| | | |
| | | |
| | | if (this.sortKey == this.preSortKey) { |
| | | if (String.isBlank(this.sortKey) == false) { |
| | | // 方向が変わるのみ |
| | | this.sortOrderAsc = !this.sortOrderAsc; |
| | | this.sortOrder[Integer.valueOf(this.sortKey)] = (this.sortOrderAsc == true ? '↑' : '↓'); |
| | | } |
| | | } else { |
| | | this.sortOrderAsc = true; |
| | | if (String.isBlank(this.preSortKey) == false) { |
| | | this.sortOrder[Integer.valueOf(this.preSortKey)] = ' '; |
| | | } |
| | | if (String.isBlank(this.sortKey) == false) { |
| | | // 方向が変わるのみ |
| | | this.sortOrderAsc = !this.sortOrderAsc; |
| | | this.sortOrder[Integer.valueOf(this.sortKey)] = (this.sortOrderAsc == true ? '↑' : '↓'); |
| | | } |
| | | } else { |
| | | this.sortOrderAsc = true; |
| | | if (String.isBlank(this.preSortKey) == false) { |
| | | this.sortOrder[Integer.valueOf(this.preSortKey)] = ' '; |
| | | } |
| | | this.sortOrder[Integer.valueOf(this.sortKey)] = (this.sortOrderAsc == true ? '↑' : '↓'); |
| | | } |
| | | this.preSortKey = this.sortKey; |
| | | |
| | | |
| | | setLayoutRWInfo(); |
| | | searchOppInner(); |
| | | return null; |
| | | } |
| | | |
| | | //XLIU-CGF4TA 【委托】 【询价管理改善需求评估】询价中的进口论证判断 增加保存的修改,只保存可以修改的字段 start |
| | | private Opportunity makeUpdateOpp(Opportunity oppinline) { |
| | | Opportunity ret = new Opportunity(); |
| | | ret.Id = oppinline.Id; |
| | | for (String leftkey : columnLeftRW.keySet()) { |
| | | if (!'r'.equals(columnLeftRW.get(leftkey))) { |
| | | ret.put(leftkey, oppinline.get(leftkey)); |
| | | } |
| | | } |
| | | for (String rightkey : columnRightRW.keySet()) { |
| | | if (!'r'.equals(columnRightRW.get(rightkey))) { |
| | | ret.put(rightkey, oppinline.get(rightkey)); |
| | | } |
| | | } |
| | | return ret; |
| | | } |
| | | //XLIU-CGF4TA 【委托】 【询价管理改善需求评估】询价中的进口论证判断 增加保存的修改,只保存可以修改的字段 end |
| | | |
| | | public PageReference save() { |
| | | try { |
| | | List<Opportunity> updOpps = new List<Opportunity>(); |
| | | |
| | | List<String> oppidList = new List<String>(); |
| | | Map<String, String> oppidMap = new Map<String, String>(); |
| | | for (OppInfo oi : oppRecords) { |
| | | if (oi.changeFlg == '1') { |
| | | if (oppidMap.containsKey(oi.rec.Id) == false) { |
| | | oppidList.add(oi.rec.Id); |
| | | } |
| | | } |
| | | List<Opportunity> updOpps = new List<Opportunity>(); |
| | | |
| | | // List<String> oppidList = new List<String>(); |
| | | // Map<String, String> oppidMap = new Map<String, String>(); |
| | | // for (OppInfo oi : oppRecords) { |
| | | // if (oi.changeFlg == '1') { |
| | | // if (oppidMap.containsKey(oi.rec.Id) == false) { |
| | | // oppidList.add(oi.rec.Id); |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | // Map<String, Opportunity> oppMap = new Map<String, Opportunity>(); |
| | | // List<Opportunity> oppList = [select Id, Competitor__c from Opportunity where Id = :oppidList]; |
| | | // for (Opportunity opp : oppList) { |
| | | // oppMap.put(opp.Id, opp); |
| | | // } |
| | | |
| | | for (OppInfo oi : oppRecords) { |
| | | // 変更チェック |
| | | if (oi.changeFlg == '1') { |
| | | oi.changeFlg = '0'; |
| | | // oi.rec.Competitor__c = oppMap.get(oi.rec.Id).Competitor__c; |
| | | // updOpps.add(oi.rec); |
| | | Opportunity up_opp = makeUpdateOpp(oi.rec); |
| | | // up_opp.Competitor__c = oppMap.get(oi.rec.Id).Competitor__c; |
| | | System.debug('up_opp: ' + up_opp); |
| | | updOpps.add(up_opp); |
| | | } |
| | | |
| | | Map<String, Opportunity> oppMap = new Map<String, Opportunity>(); |
| | | List<Opportunity> oppList = [select Id, Competitor__c from Opportunity where Id = :oppidList]; |
| | | for (Opportunity opp : oppList) { |
| | | oppMap.put(opp.Id, opp); |
| | | } |
| | | |
| | | for (OppInfo oi : oppRecords) { |
| | | // 変更チェック |
| | | if (oi.changeFlg == '1') { |
| | | oi.changeFlg = '0'; |
| | | oi.rec.Competitor__c = oppMap.get(oi.rec.Id).Competitor__c; |
| | | updOpps.add(oi.rec); |
| | | } |
| | | } |
| | | |
| | | if (updOpps.size() > 0) update updOpps; |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '保存完了')); |
| | | } catch (Exception ex) { |
| | | ApexPages.addMessages(ex); |
| | | return null; |
| | | } |
| | | |
| | | |
| | | if (updOpps.size() > 0) update updOpps; |
| | | ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '保存完了')); |
| | | } catch (Exception ex) { |
| | | ApexPages.addMessages(ex); |
| | | return null; |
| | | } |
| | | |
| | | if (saveType == '1') { |
| | | searchOpp(); |
| | | saveType = ''; |
| | | searchOpp(); |
| | | saveType = ''; |
| | | } else if (saveType == '2') { |
| | | sortTable(); |
| | | saveType = ''; |
| | | sortTable(); |
| | | saveType = ''; |
| | | } else { |
| | | //进口论证 fy start |
| | | searchOpp(); |
| | | //进口论证 fy end |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | public PageReference cancel() { |
| | | return new PageReference('/home/home.jsp'); |
| | | } |
| | | |
| | | |
| | | private String makeSoql(Boolean isforMoneyFlg, String accStr, String ownerStr, //String dept, String rank, Boolean consumable, |
| | | String datefield, Date fromd, Date tod, String txt, String con, String val, |
| | | String txt2, String con2, String val2, |
| | | String txt3, String con3, String val3,Boolean OpptyWait) { |
| | | String datefield, Date fromd, Date tod, String txt, String con, String val, |
| | | String txt2, String con2, String val2, |
| | | String txt3, String con3, String val3,Boolean OpptyWait) { |
| | | //进口论证 fy start |
| | | // if(txt=='if_NeedImportDemonstration__c'){ |
| | | // if(val=='是'){ |
| | | // val = 'true'; |
| | | // }else if(val=='否'){ |
| | | // val = 'false'; |
| | | // } |
| | | // } |
| | | // if(txt2=='if_NeedImportDemonstration__c'){ |
| | | // if(val2=='是'){ |
| | | // val2 = 'true'; |
| | | // }else if(val2=='否'){ |
| | | // val2 = 'false'; |
| | | // } |
| | | // } |
| | | // if(txt3=='if_NeedImportDemonstration__c'){ |
| | | // if(val3=='是'){ |
| | | // val3 = 'true'; |
| | | // }else if(val3=='否'){ |
| | | // val3 = 'false'; |
| | | // } |
| | | // } |
| | | //进口论证 fy end |
| | | String soql =''; |
| | | if (isforMoneyFlg == false) { |
| | | soql += 'select ' + strColumus + ' from Opportunity where (RecordType.DeveloperName = \'Opportunity\' or RecordType.DeveloperName = \'SI_Oppor\')'; |
| | | /* soql += 'select Id, Name, Hospital__r.Name, Hospital__c, StageName__c, Status_Formula__c,' |
| | | + ' Opportunity_No__c, AccountId, Account.Name, OwnerId, Owner.Name, Opportunity_Category__c,' |
| | | + ' Estimation_List_Price__c, Estimation_Id__c, Estimation_No__c, Last_Shipping_Scheduled_Date__c, Last_Shipping_Date__c,' |
| | | + ' Last_Follow_Up_Date__c, CreatedDate, LastModified_Day__c, Closing_Bid_Date__c, Important_Rroduct_Flg__c,'//Owner.Brief_Name__c, |
| | | + ' Rating01__c, Rating02__c, Rating03__c, Rating04__c, Rating05__c, Rating06__c,' |
| | | + ' Rating07__c, Rating08__c, Rating09__c, Rating10__c, Rating11__c, Rating12__c,' |
| | | + ' HP_Name__c, Sales_incharge__c, Wholesale_Price_F__c, Agency1__c, '//Estimation_List_Price_Formula__c, OCM_Agent1_Price_Formula__c, |
| | | + ' Segment__c, Opp_Code__c, Open_Quotation__c, Competitor__c, Bid_Planned_Date__c,' |
| | | + ' Close_Forecasted_Date__c, CloseDate, Follow_up_comment__c, Department_Name__c,' |
| | | + ' Next_Action__c, Create_Activity__c, Nunber_of_visit__c, Number_of_OPD__c, Rating__c, '//Quotation_Number_SAP__c,, Discount_Rate__c |
| | | + ' OCM__c, Amount_Without_Tax_F__c, Key_tipics_last_update_day__c, Update_situation__c , Last_opd_date__c,' |
| | | + ' Stage2_last_update_day__c, Follow_up_plan_last_update__c, Closing_Bid_date_last_update_day__c, OPP_rank_Last_update_day__c, Situation_last_update_day__c, ' |
| | | + ' Opp_forecast_day_last_update_day__c, Tender_data_last_update_day__c, Forecast_amount_last_update_day__c, Forecast_shipping_day_last_update__c, Created_Day__c, ' |
| | | + ' Agency_Contract_Date1__c, Sales_Shop_Hospital_Contract__c, Manager_feedback__c, Forecast_this_month__c,' |
| | | + ' Manager_feedback_last_update__c, Agency_Contract_Date_last_update__c, Agent_Hospital_Contract_day_last_update__c,' |
| | | + ' Bid_Date__c, Bid_date_last_update_day__c, Collect_Customer_sign__c, Lapsed_Days__c, OPD_SIS_collect_evaluation_sight__c,' |
| | | + ' Owner.Salesdepartment__c, Owner.Province__c, Owner.Group__c' |
| | | + ' from Opportunity where (RecordType.DeveloperName = \'Opportunity\')';// and (stageName = \'引合\')';*/ |
| | | soql += 'select ' + strColumus + ' from Opportunity where (RecordType.DeveloperName = \'Opportunity\' or RecordType.DeveloperName = \'SI_Oppor\')'; |
| | | /* soql += 'select Id, Name, Hospital__r.Name, Hospital__c, StageName__c, Status_Formula__c,' |
| | | + ' Opportunity_No__c, AccountId, Account.Name, OwnerId, Owner.Name, Opportunity_Category__c,' |
| | | + ' Estimation_List_Price__c, Estimation_Id__c, Estimation_No__c, Last_Shipping_Scheduled_Date__c, Last_Shipping_Date__c,' |
| | | + ' Last_Follow_Up_Date__c, CreatedDate, LastModified_Day__c, Closing_Bid_Date__c, Important_Rroduct_Flg__c,'//Owner.Brief_Name__c, |
| | | + ' Rating01__c, Rating02__c, Rating03__c, Rating04__c, Rating05__c, Rating06__c,' |
| | | + ' Rating07__c, Rating08__c, Rating09__c, Rating10__c, Rating11__c, Rating12__c,Owner_Category__c,' |
| | | + ' HP_Name__c, Sales_incharge__c, Wholesale_Price_F__c, Agency1__c, '//Estimation_List_Price_Formula__c, OCM_Agent1_Price_Formula__c, |
| | | + ' Segment__c, Opp_Code__c, Open_Quotation__c, Competitor__c, Bid_Planned_Date__c,' |
| | | + ' Close_Forecasted_Date__c, CloseDate, Follow_up_comment__c, Department_Name__c,' |
| | | + ' Next_Action__c, Create_Activity__c, Nunber_of_visit__c, Number_of_OPD__c, Rating__c, '//Quotation_Number_SAP__c,, Discount_Rate__c |
| | | + ' OCM__c, Amount_Without_Tax_F__c, Key_tipics_last_update_day__c, Update_situation__c , Last_opd_date__c,' |
| | | + ' Stage2_last_update_day__c, Follow_up_plan_last_update__c, Closing_Bid_date_last_update_day__c, OPP_rank_Last_update_day__c, Situation_last_update_day__c, ' |
| | | + ' Opp_forecast_day_last_update_day__c, Tender_data_last_update_day__c, Forecast_amount_last_update_day__c, Forecast_shipping_day_last_update__c, Created_Day__c, ' |
| | | + ' Agency_Contract_Date1__c, Sales_Shop_Hospital_Contract__c, Manager_feedback__c, Forecast_this_month__c,' |
| | | + ' Manager_feedback_last_update__c, Agency_Contract_Date_last_update__c, Agent_Hospital_Contract_day_last_update__c,' |
| | | + ' Bid_Date__c, Bid_date_last_update_day__c, Collect_Customer_sign__c, Lapsed_Days__c, OPD_SIS_collect_evaluation_sight__c,' |
| | | + ' Owner.Salesdepartment__c, Owner.Province__c, Owner.Group__c' |
| | | + ' from Opportunity where (RecordType.DeveloperName = \'Opportunity\')';// and (stageName = \'引合\')';*/ |
| | | } else { |
| | | soql += 'select ' + strColumusForMoney + ' from Opportunity where (RecordType.DeveloperName = \'Opportunity\' or RecordType.DeveloperName = \'SI_Oppor\')'; |
| | | /* soql += 'select Id, Name, Hospital__r.Name, Hospital__c, StageName__c, Status_Formula__c,' |
| | | + ' Opportunity_No__c, AccountId, Account.Name, OwnerId, Owner.Name, Opportunity_Category__c,' |
| | | + ' convertCurrency(Estimation_List_Price__c), Estimation_Id__c, Estimation_No__c, Last_Shipping_Scheduled_Date__c, Last_Shipping_Date__c,' |
| | | + ' Last_Follow_Up_Date__c, CreatedDate, LastModified_Day__c, Closing_Bid_Date__c, Important_Rroduct_Flg__c,'//Owner.Brief_Name__c, |
| | | + ' Rating01__c, Rating02__c, Rating03__c, Rating04__c, Rating05__c, Rating06__c,' |
| | | + ' Rating07__c, Rating08__c, Rating09__c, Rating10__c, Rating11__c, Rating12__c,' |
| | | + ' HP_Name__c, Sales_incharge__c, convertCurrency(Wholesale_Price_F__c), Agency1__c, '//Estimation_List_Price_Formula__c, OCM_Agent1_Price_Formula__c, |
| | | + ' Segment__c, Opp_Code__c, Open_Quotation__c, Competitor__c, Bid_Planned_Date__c,' |
| | | + ' Close_Forecasted_Date__c, CloseDate, Follow_up_comment__c, Department_Name__c, ' |
| | | + ' Next_Action__c, Create_Activity__c, Nunber_of_visit__c, Number_of_OPD__c, Rating__c, '//Quotation_Number_SAP__c,, Discount_Rate__c |
| | | + ' OCM__c, convertCurrency(Amount_Without_Tax_F__c), Key_tipics_last_update_day__c, Update_situation__c , Last_opd_date__c,' |
| | | + ' Stage2_last_update_day__c, Follow_up_plan_last_update__c, Closing_Bid_date_last_update_day__c, OPP_rank_Last_update_day__c, Situation_last_update_day__c, ' |
| | | + ' Opp_forecast_day_last_update_day__c, Tender_data_last_update_day__c, Forecast_amount_last_update_day__c, Forecast_shipping_day_last_update__c, Created_Day__c, ' |
| | | + ' Agency_Contract_Date1__c, Sales_Shop_Hospital_Contract__c, Manager_feedback__c, Forecast_this_month__c,' |
| | | + ' Manager_feedback_last_update__c, Agency_Contract_Date_last_update__c, Agent_Hospital_Contract_day_last_update__c,' |
| | | + ' Bid_Date__c, Bid_date_last_update_day__c, Collect_Customer_sign__c, Lapsed_Days__c, OPD_SIS_collect_evaluation_sight__c,' |
| | | + ' Owner.Salesdepartment__c, Owner.Province__c, Owner.Group__c' |
| | | + ' from Opportunity where (RecordType.DeveloperName = \'Opportunity\')';// and (stageName = \'引合\')';*/ |
| | | soql += 'select ' + strColumusForMoney + ' from Opportunity where (RecordType.DeveloperName = \'Opportunity\' or RecordType.DeveloperName = \'SI_Oppor\')'; |
| | | /* soql += 'select Id, Name, Hospital__r.Name, Hospital__c, StageName__c, Status_Formula__c,' |
| | | + ' Opportunity_No__c, AccountId, Account.Name, OwnerId, Owner.Name, Opportunity_Category__c,' |
| | | + ' convertCurrency(Estimation_List_Price__c), Estimation_Id__c, Estimation_No__c, Last_Shipping_Scheduled_Date__c, Last_Shipping_Date__c,' |
| | | + ' Last_Follow_Up_Date__c, CreatedDate, LastModified_Day__c, Closing_Bid_Date__c, Important_Rroduct_Flg__c,'//Owner.Brief_Name__c, |
| | | + ' Rating01__c, Rating02__c, Rating03__c, Rating04__c, Rating05__c, Rating06__c,' |
| | | + ' Rating07__c, Rating08__c, Rating09__c, Rating10__c, Rating11__c, Rating12__c,Owner_Category__c,' |
| | | + ' HP_Name__c, Sales_incharge__c, convertCurrency(Wholesale_Price_F__c), Agency1__c, '//Estimation_List_Price_Formula__c, OCM_Agent1_Price_Formula__c, |
| | | + ' Segment__c, Opp_Code__c, Open_Quotation__c, Competitor__c, Bid_Planned_Date__c,' |
| | | + ' Close_Forecasted_Date__c, CloseDate, Follow_up_comment__c, Department_Name__c, ' |
| | | + ' Next_Action__c, Create_Activity__c, Nunber_of_visit__c, Number_of_OPD__c, Rating__c, '//Quotation_Number_SAP__c,, Discount_Rate__c |
| | | + ' OCM__c, convertCurrency(Amount_Without_Tax_F__c), Key_tipics_last_update_day__c, Update_situation__c , Last_opd_date__c,' |
| | | + ' Stage2_last_update_day__c, Follow_up_plan_last_update__c, Closing_Bid_date_last_update_day__c, OPP_rank_Last_update_day__c, Situation_last_update_day__c, ' |
| | | + ' Opp_forecast_day_last_update_day__c, Tender_data_last_update_day__c, Forecast_amount_last_update_day__c, Forecast_shipping_day_last_update__c, Created_Day__c, ' |
| | | + ' Agency_Contract_Date1__c, Sales_Shop_Hospital_Contract__c, Manager_feedback__c, Forecast_this_month__c,' |
| | | + ' Manager_feedback_last_update__c, Agency_Contract_Date_last_update__c, Agent_Hospital_Contract_day_last_update__c,' |
| | | + ' Bid_Date__c, Bid_date_last_update_day__c, Collect_Customer_sign__c, Lapsed_Days__c, OPD_SIS_collect_evaluation_sight__c,' |
| | | + ' Owner.Salesdepartment__c, Owner.Province__c, Owner.Group__c' |
| | | + ' from Opportunity where (RecordType.DeveloperName = \'Opportunity\')';// and (stageName = \'引合\')';*/ |
| | | } |
| | | // xudan 20140626 状态1をチェックボックスに |
| | | if (onlyOpp) { |
| | | soql += ' and StageName__c = \'询价\''; |
| | | soql += ' and StageName__c = \'询价\''; |
| | | } |
| | | if (!String.isBlank(accStr)) { |
| | | //soql += ' and Hospital__c = \'' + accStr + '\''; |
| | | String[] vals = accStr.split(' '); |
| | | for (String v : vals) { |
| | | soql += ' and Hospital__r.Name like \'%' + String.escapeSingleQuotes(v.replaceAll('%', '\\%')) + '%\''; |
| | | } |
| | | //soql += ' and Hospital__c = \'' + accStr + '\''; |
| | | String[] vals = accStr.split(' '); |
| | | for (String v : vals) { |
| | | soql += ' and Hospital__r.Name like \'%' + String.escapeSingleQuotes(v.replaceAll('%', '\\%')) + '%\''; |
| | | } |
| | | } |
| | | if (!String.isBlank(ownerStr)) { |
| | | //soql += ' and OwnerId = \'' + ownerStr + '\''; |
| | | String[] vals = ownerStr.split(' '); |
| | | for (String v : vals) { |
| | | soql += ' and Owner.Name like \'%' + String.escapeSingleQuotes(v.replaceAll('%', '\\%')) + '%\''; |
| | | } |
| | | //soql += ' and OwnerId = \'' + ownerStr + '\''; |
| | | String[] vals = ownerStr.split(' '); |
| | | for (String v : vals) { |
| | | soql += ' and Owner.Name like \'%' + String.escapeSingleQuotes(v.replaceAll('%', '\\%')) + '%\''; |
| | | } |
| | | |
| | | } |
| | | |
| | | if (!String.isBlank(datefield)) { |
| | | if (fromd != null) { |
| | | soql += ' and ' + datefield + ' >= ' + String.valueOf(fromd).substring(0, 10); |
| | | } |
| | | if (tod != null) { |
| | | soql += ' and (' + datefield + ' <= ' + String.valueOf(tod).substring(0, 10) + ' OR ' + datefield + ' = null)'; |
| | | } |
| | | if (fromd != null) { |
| | | soql += ' and ' + datefield + ' >= ' + String.valueOf(fromd).substring(0, 10); |
| | | } |
| | | if (tod != null) { |
| | | soql += ' and (' + datefield + ' <= ' + String.valueOf(tod).substring(0, 10) + ' OR ' + datefield + ' = null)'; |
| | | } |
| | | } |
| | | //【委托】【重要】周会管理表修改 tcm start |
| | | if (OpptyWait) { |
| | | soql+=' and StageName__c =\'询价\' and SAP_Send_OK__c =false and Bool_Create_Day__c=true and Update_situation__c like \'%没更新%\' and Close_Forecasted_Date__c <= 2022-03-31'; |
| | | soql+=' and StageName__c =\'询价\' and SAP_Send_OK__c =false and Bool_Create_Day__c=true and Update_situation__c like \'%没更新%\' and Close_Forecasted_Date__c <= 2022-03-31'; |
| | | } |
| | | //【委托】【重要】周会管理表修改 tcm end |
| | | |
| | | |
| | | // xudan 20140507 検索ロジック修正 |
| | | soql += this.makeTextSql(txt, con, val); |
| | | soql += this.makeTextSql(txt2, con2, val2); |
| | | soql += this.makeTextSql(txt3, con3, val3); |
| | | |
| | | |
| | | system.debug(soql); |
| | | return soql; |
| | | } |
| | | |
| | | |
| | | private void makeOppRecordsForView(List<Opportunity> queryList, List<Opportunity> queryListForMoney) { |
| | | Savepoint sp = Database.setSavepoint(); |
| | | // TODO queryList について、最初のoppLimitだけ更新すればOKです。 |
| | |
| | | Database.rollback(sp); |
| | | // 合计值清空 |
| | | for (String key : columnMoneyMap.keySet()) { |
| | | columnMoneyMap.put(key, 0); |
| | | columnMoneyMap.put(key, 0); |
| | | } |
| | | |
| | | |
| | | for (Integer i = 0; i < queryListForMoney.size(); i++) { |
| | | if(i<queryList.size()) { |
| | | // limitを超えた場合前limit件のみを出す |
| | | if (i == oppLimit + 1) { |
| | | // TODO メッセージ表示 |
| | | continue; |
| | | } |
| | | oppRecords.add(new OppInfo(queryList[i])); |
| | | oppRecords[oppRecords.size() - 1].lineNo = oppRecords.size() - 1; |
| | | if (!results[i].isSuccess()) { |
| | | oppRecords[oppRecords.size() - 1].canEdit = false; |
| | | // 空更新失敗の場合、編集できないとみなす |
| | | // xudan 20140624 更新権限のエラーのみロック |
| | | if (results[i].getErrors()[0].getStatusCode() != null) { |
| | | if (String.valueOf(results[i].getErrors()[0].getStatusCode()) == 'INSUFFICIENT_ACCESS_OR_READONLY') { |
| | | oppRecords[oppRecords.size() - 1].hasError = true; |
| | | // xudan 20140624 更新権限エラーとほかのエラーを区別 |
| | | } else { |
| | | oppRecords[oppRecords.size() - 1].hasFieldError = true; |
| | | } |
| | | } |
| | | if(i<queryList.size()) { |
| | | // limitを超えた場合前limit件のみを出す |
| | | if (i == oppLimit + 1) { |
| | | // TODO メッセージ表示 |
| | | continue; |
| | | } |
| | | oppRecords.add(new OppInfo(queryList[i])); |
| | | oppRecords[oppRecords.size() - 1].lineNo = oppRecords.size() - 1; |
| | | if (!results[i].isSuccess()) { |
| | | oppRecords[oppRecords.size() - 1].canEdit = false; |
| | | // 空更新失敗の場合、編集できないとみなす |
| | | // xudan 20140624 更新権限のエラーのみロック |
| | | if (results[i].getErrors()[0].getStatusCode() != null) { |
| | | if (String.valueOf(results[i].getErrors()[0].getStatusCode()) == 'INSUFFICIENT_ACCESS_OR_READONLY') { |
| | | oppRecords[oppRecords.size() - 1].hasError = true; |
| | | // xudan 20140624 更新権限エラーとほかのエラーを区別 |
| | | } else { |
| | | oppRecords[oppRecords.size() - 1].hasFieldError = true; |
| | | } |
| | | } |
| | | |
| | | for (String key : columnMoneyMap.keySet()) { |
| | | Decimal d = columnMoneyMap.get(key); |
| | | d += queryListForMoney[i].get(key) == null ? 0 : Decimal.valueOf(String.valueOf(queryListForMoney[i].get(key))); |
| | | columnMoneyMap.put(key, d); |
| | | } |
| | | } |
| | | |
| | | for (String key : columnMoneyMap.keySet()) { |
| | | Decimal d = columnMoneyMap.get(key); |
| | | d += queryListForMoney[i].get(key) == null ? 0 : Decimal.valueOf(String.valueOf(queryListForMoney[i].get(key))); |
| | | columnMoneyMap.put(key, d); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | private String makeTextSql(String txt1, String con, String val) { |
| | | String soql = ''; |
| | | // containsの場合、日報画面の病院検索を真似し、spaceで分けて、and検索 |
| | | // equalsの場合、SF標準の検索を真似し、「,」で分けて、or検索 |
| | | if (!String.isBlank(txt1)) { |
| | | if ((con == 'contains' || con == 'notcontains') && val.contains(' ')) { |
| | | String[] vals = val.split(' '); |
| | | String cSql = ''; |
| | | for (String v : vals) { |
| | | cSql += this.makeTextSqlStr(txt1, con, v); |
| | | } |
| | | if (con == 'contains') { |
| | | soql += cSql; |
| | | } else { |
| | | // notcontains |
| | | cSql = cSql.replaceAll(' and ', ') and (NOT '); |
| | | soql += cSql.substring(1) + ') '; |
| | | } |
| | | } else if ((con == 'equals' || con == 'notequals') && val.contains(',')) { |
| | | String[] vals = val.split(','); |
| | | if (vals.size() > 0) { |
| | | String txt = txt1.substring(2); // S:Name 、最初の2文字がタイプです |
| | | soql += ' and ( '; |
| | | for (String v : vals) { |
| | | if (con == 'equals') { |
| | | soql += txt + ' = \'' + v + '\' or '; |
| | | } else { |
| | | // notequals |
| | | soql += txt + ' <> \'' + v + '\' and '; |
| | | } |
| | | } |
| | | soql = soql.substring(0, soql.length() - 4); |
| | | soql += ')'; |
| | | } |
| | | if ((con == 'contains' || con == 'notcontains') && val.contains(' ')) { |
| | | String[] vals = val.split(' '); |
| | | String cSql = ''; |
| | | for (String v : vals) { |
| | | cSql += this.makeTextSqlStr(txt1, con, v); |
| | | } |
| | | if (con == 'contains') { |
| | | soql += cSql; |
| | | } else { |
| | | String cSql = this.makeTextSqlStr(txt1, con, val); |
| | | if (con != 'notcontains') { |
| | | soql += this.makeTextSqlStr(txt1, con, val); |
| | | // notcontains |
| | | cSql = cSql.replaceAll(' and ', ') and (NOT '); |
| | | soql += cSql.substring(1) + ') '; |
| | | } |
| | | } else if ((con == 'equals' || con == 'notequals') && val.contains(',')) { |
| | | String[] vals = val.split(','); |
| | | if (vals.size() > 0) { |
| | | String txt = txt1.substring(2); // S:Name 、最初の2文字がタイプです |
| | | soql += ' and ( '; |
| | | for (String v : vals) { |
| | | if (con == 'equals') { |
| | | soql += txt + ' = \'' + v + '\' or '; |
| | | } else { |
| | | // notcontains |
| | | cSql = cSql.substring(5); // ' and ' の5文字を外す |
| | | soql += ' and (NOT ' + cSql + ') '; |
| | | // notequals |
| | | soql += txt + ' <> \'' + v + '\' and '; |
| | | } |
| | | } |
| | | soql = soql.substring(0, soql.length() - 4); |
| | | soql += ')'; |
| | | } |
| | | } else { |
| | | String cSql = this.makeTextSqlStr(txt1, con, val); |
| | | if (con != 'notcontains') { |
| | | soql += this.makeTextSqlStr(txt1, con, val); |
| | | } else { |
| | | // notcontains |
| | | cSql = cSql.substring(5); // ' and ' の5文字を外す |
| | | soql += ' and (NOT ' + cSql + ') '; |
| | | } |
| | | } |
| | | } |
| | | return soql; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 文字列検索文を作成 |
| | | */ |
| | | private String makeTextSqlStr(String txt1, String con, String val) { |
| | | String soql = ''; |
| | | if (!String.isBlank(txt1)) { |
| | | String txt = txt1.substring(2); |
| | | String colType = txt1.substring(0, 2); |
| | | String tmpVal = val; |
| | | // 空白の場合''にする |
| | | if (String.isBlank(tmpVal)) { |
| | | if (con == 'equals') { |
| | | //soql += ' and ' + txt + ' = ' + tmpVal; |
| | | soql += ' and ' + txt + ' = null'; |
| | | } else if (con == 'notequals') { |
| | | soql += ' and ' + txt + ' <> null'; |
| | | } else { |
| | | // 空白の場合、contains, notcontains と starts withは無視 |
| | | } |
| | | //DB202211121149 【周会-询价管理】周会询价表把“资金来源”添加到“数据字段”中进行筛选 xxf 20221109 start |
| | | if (txt1 == 'S:Fund_Basis__c') { |
| | | if(val == '医院资金'){ |
| | | val = val.replaceAll('医院资金', '病院資金'); |
| | | } |
| | | if(val == '政府拨款'){ |
| | | val = val.replaceAll('政府拨款', '政府資金'); |
| | | } |
| | | if(val == '国际资金'){ |
| | | val = val.replaceAll('国际资金', '国際資金'); |
| | | } |
| | | if(val == '银行资金'){ |
| | | val = val.replaceAll('银行资金', '銀行資金'); |
| | | } |
| | | if(val == '公司/个人投资'){ |
| | | val = val.replaceAll('公司/个人投资', '会社/個人資金'); |
| | | } |
| | | if(val == '融资租赁'){ |
| | | val = val.replaceAll('融资租赁', '融资租赁(リース)'); |
| | | } |
| | | } |
| | | //DB202211121149 【周会-询价管理】周会询价表把“资金来源”添加到“数据字段”中进行筛选 xxf 20221109 end |
| | | String txt = txt1.substring(2); |
| | | String colType = txt1.substring(0, 2); |
| | | String tmpVal = val; |
| | | //进口论证 fy start |
| | | if(txt=='if_NeedImportDemonstration__c'){ |
| | | if(tmpVal=='是'){ |
| | | tmpVal = 'true'; |
| | | }else if(tmpVal=='否'){ |
| | | tmpVal = 'false'; |
| | | }else { |
| | | return soql; |
| | | } |
| | | } |
| | | //进口论证 fy end |
| | | // 空白の場合''にする |
| | | if (String.isBlank(tmpVal)) { |
| | | if (con == 'equals') { |
| | | //soql += ' and ' + txt + ' = ' + tmpVal; |
| | | soql += ' and ' + txt + ' = null'; |
| | | } else if (con == 'notequals') { |
| | | soql += ' and ' + txt + ' <> null'; |
| | | } else { |
| | | soql += ' and ' + txt; |
| | | if (con == 'equals') { |
| | | if (colType == 'S:') { |
| | | soql += ' = \'' + tmpVal + '\''; |
| | | } else { |
| | | soql += ' = ' + tmpVal + ' '; |
| | | } |
| | | } else if (con == 'notequals') { |
| | | if (colType == 'S:') { |
| | | soql += ' <> \'' + tmpVal + '\''; |
| | | } else { |
| | | soql += ' <> ' + tmpVal + ' '; |
| | | } |
| | | } else if (con == 'contains' || con == 'notcontains') { |
| | | soql += ' like \'%' + String.escapeSingleQuotes(tmpVal.replaceAll('%', '\\%')) + '%\''; |
| | | } else if (con == 'starts with') { |
| | | soql += ' like \'' + String.escapeSingleQuotes(tmpVal.replaceAll('%', '\\%')) + '%\''; |
| | | } else { |
| | | if (colType == 'S:') { |
| | | soql += ' ' + con + '\'' + tmpVal + '\''; |
| | | } else { |
| | | soql += ' ' + con + ' ' + tmpVal + ' '; |
| | | } |
| | | } |
| | | // 空白の場合、contains, notcontains と starts withは無視 |
| | | } |
| | | } else { |
| | | soql += ' and ' + txt; |
| | | if (con == 'equals') { |
| | | if (colType == 'S:') { |
| | | soql += ' = \'' + tmpVal + '\''; |
| | | } else { |
| | | soql += ' = ' + tmpVal + ' '; |
| | | } |
| | | } else if (con == 'notequals') { |
| | | if (colType == 'S:') { |
| | | soql += ' <> \'' + tmpVal + '\''; |
| | | } else { |
| | | soql += ' <> ' + tmpVal + ' '; |
| | | } |
| | | } else if (con == 'contains' || con == 'notcontains') { |
| | | soql += ' like \'%' + String.escapeSingleQuotes(tmpVal.replaceAll('%', '\\%')) + '%\''; |
| | | } else if (con == 'starts with') { |
| | | soql += ' like \'' + String.escapeSingleQuotes(tmpVal.replaceAll('%', '\\%')) + '%\''; |
| | | } else { |
| | | if (colType == 'S:') { |
| | | soql += ' ' + con + '\'' + tmpVal + '\''; |
| | | } else { |
| | | soql += ' ' + con + ' ' + tmpVal + ' '; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return soql; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 現在の月にて、表示すべきラベル名を作成 |
| | | */ |
| | | private Integer makeRatingLabel(Integer idx) { |
| | | Integer m = Date.today().month(); |
| | | |
| | | |
| | | Integer val = idx - 1 + m; |
| | | if (val > 12) { |
| | | val = val - 12; |
| | | val = val - 12; |
| | | } |
| | | return val; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 現在の月にて、Ratingのソート番号を作成 |
| | | */ |
| | | //【委托】【重要】周会管理表修改 tcm start |
| | | // private Integer makeRatingSortIdx(Integer idx) { |
| | | // Integer m = Date.today().month(); |
| | | |
| | | |
| | | // Integer val = idx - 1 + m; |
| | | // if (val > 29) { |
| | | // val = val - 12; |
| | |
| | | // return val; |
| | | // } |
| | | //【委托】【重要】周会管理表修改 tcm end |
| | | |
| | | |
| | | /** |
| | | * 現在の月にて、取得すべきAPI名を作成 |
| | | */ |
| | | private String makeRatingAPI(Integer idx, Integer m) { |
| | | String rtn = ''; |
| | | |
| | | |
| | | Integer val = idx - 1 + m; |
| | | if (val > 12) { |
| | | val = val - 12; |
| | | val = val - 12; |
| | | } |
| | | if (val < 10) { |
| | | rtn = '0' + val; |
| | | rtn = '0' + val; |
| | | } else { |
| | | rtn = '' + val; |
| | | rtn = '' + val; |
| | | } |
| | | |
| | | |
| | | return 'Rating' + rtn + '__c'; |
| | | } |
| | | //XLIU-CGF4TA 【委托】 【询价管理改善需求评估】询价中的进口论证判断 fy start |
| | | // public PageReference HideForecastOCSMSigningDate() { |
| | | // if(HideForecastOCSMflag){ |
| | | // List<String> HidecolumnRightCss = new List<String>(); |
| | | // List<String> HidetitleRight = new List<String>(); |
| | | // List<List<String> > HidecolumnsRightApiList = new List<List<String> >(); |
| | | // for(List<String> colrightapiList: columnsRightApicopy){ |
| | | // List<String> HidecolumnsRightApi = new List<String>(); |
| | | // for(String colrightapi :colrightapiList){ |
| | | // if(colrightapi != 'Close_Forecasted_Date__c'&&colrightapi != 'Close_Forecasted_Assume_Date__c'&&colrightapi != 'CloseDate'){ |
| | | // HidecolumnsRightApi.add(colrightapi); |
| | | // } |
| | | // } |
| | | // if(HidecolumnsRightApi.size()>0){ |
| | | // HidecolumnsRightApiList.add(HidecolumnsRightApi); |
| | | // } |
| | | // } |
| | | // for(String colright: columnRightCsscopy){ |
| | | // if(colright != 'Close_Forecasted_Date__c'&&colright != 'Close_Forecasted_Assume_Date__c'&&colright != 'CloseDate'){ |
| | | // HidecolumnRightCss.add(colright); |
| | | // } |
| | | // } |
| | | // for(String titlr: titleRightcopy){ |
| | | // if(titlr != '预测OCSM签约日(KPI)'&&titlr != '预测OCSM签约日(担当)'&&titlr != '预测发货日'){ |
| | | // HidetitleRight.add(titlr); |
| | | // } |
| | | // } |
| | | // columnsRightApi=HidecolumnsRightApiList; |
| | | // columnRightCss=HidecolumnRightCss; |
| | | // titleRight=HidetitleRight; |
| | | // }else{ |
| | | // system.debug('测试1'+titleRightcopy); |
| | | // system.debug('测试2'+columnsRightApicopy); |
| | | // system.debug('测试3'+columnRightCsscopy); |
| | | // titleRight=titleRightcopy; |
| | | // columnsRightApi=columnsRightApicopy; |
| | | // columnRightCss=columnRightCsscopy; |
| | | // } |
| | | |
| | | // return null; |
| | | // } |
| | | //SWAG-CGG7UK 【委托】 【询价管理改善需求评估】询价中的进口论证判断 fy end |
| | | class OppInfo { |
| | | public Opportunity rec { get; set; } |
| | | public Boolean canEdit { get; private set; } |
| | |
| | | public Boolean hasFieldError { get; private set; } |
| | | public Integer lineNo { get; private set; } |
| | | public String changeFlg { get; set; } |
| | | |
| | | |
| | | public OppInfo(Opportunity record) { |
| | | rec = record; |
| | | canEdit = true; |
| | | hasError = false; |
| | | hasFieldError = false; |
| | | lineNo = 0; |
| | | changeFlg = '0'; |
| | | rec = record; |
| | | canEdit = true; |
| | | hasError = false; |
| | | hasFieldError = false; |
| | | lineNo = 0; |
| | | changeFlg = '0'; |
| | | } |
| | | } |
| | | } |
| | | } |