public with sharing class StatuAchievementsPCLController { public List pclInfos { get; set; } /*****************検索用******************/ public Contact con1 { get; set; } public Contact con2 { get; set; } public String accSearch { get; set; } public String ownerSearch { get; set; } public List dateOpts { get; private set; } public List textOpts { get; private set; } public List equalOpts { get; private set; } public List textOpts2 { get; private set; } public List equalOpts2 { get; private set; } public List textOpts3 { get; private set; } public List equalOpts3 { get; private set; } public List 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 チェック:询价、未チェック:全部(後藤要望) // FIXME katsu 複数選択にする必要があります。 とりあえず Boolean で作る public Boolean onlyOpp { get; set; } public String limits { get; set; } /*****************画面表示Bean******************/ public Integer pclCount { get; set; } public String saveType { get; set; } /*****************金額合計******************/ public Decimal CAmountSum { get; private set; } public Decimal PAmountSum { get; private set; } public Decimal NPAmountSum { get; private set; } public Decimal USAmountSum { get; private set; } public Decimal USwtAmountSum { get; private set; } /*****************ソートキー******************/ public String sortKey { get; set; } public String preSortKey { get; set; } public Boolean sortOrderAsc { get; set; } public String[] sortOrder { get; set; } public String[] columus = new String[]{'ContractNO__c', 'Opp_Hospital__c', 'Opportunity_Name__c', 'Agency1_Name_F__c', 'Opportunity_Salesdepartment_SAP__c' ,'SaleProvince_SAP__c', 'Team__c', 'Owner_Category__c', 'Owner__c', 'Order_no_without_0__c', 'Status_1__c' /* 10 */ ,'Status_2_Formula__c', 'Book_stock__c', 'Opp_OCM__c', 'Opp_Department_Name__c', 'Opportunity_Category__c' ,'QuotationCode__c', 'ContractAmount_F__c', 'PaymentAmount_F__c', 'NOT_PaymentAmount_F__c', 'PaymentRate_F__c' /* 20 */ ,'UnshippedAmount_F__c', 'UnshippedAmount_without_tax_Thousand_DN__c', 'X5weeks_ago__c', 'X4weeks_ago__c', 'X3Weeks_ago__c' ,'X2weeks_ago__c', 'Last_week__c', 'Current_status__c', 'OverviewStatus__c', 'End_User_contract__c' /* 30 */ ,'PaymentStatus__c', 'AssignmentStatus__c', 'DeliveryStatus__c', 'Pacial_shipment__c', 'SoLatestDeliveryDate__c' ,'First_DeliveryDate__c', 'Current_shipping_date__c', 'EndUser_contract_submit_day__c', 'Payment_Scheduled_Date__c', 'Payment_All_Scheduled_Date__c' /* 40 */ ,'Shipping_Scheduled_Date__c', 'Follow_up_comment__c', 'Reason_not_collect_money__c', 'Reason_not_ship__c', 'Manager_feedback__c' ,'Create_Activity__c', 'Create_task__c', 'Key_topic_last_update_date__c', 'Update_situation__c', 'FirstApproveDate__c' /* 50 */ ,'Monthly_forecast_shipping__c', 'Forecast_ship_monthly_mannual__c',' Opp_Number__c','Opportunity__c' }; // TODO katsu rl1 ~ rl12 rs1~rs12 はいらない // /***************** Rating表示ラベル(動的対応) ******************/ // public Integer rl1 { get; private set; } // public Integer rl2 { get; private set; } // public Integer rl3 { get; private set; } // public Integer rl4 { get; private set; } // public Integer rl5 { get; private set; } // public Integer rl6 { get; private set; } // public Integer rl7 { get; private set; } // public Integer rl8 { get; private set; } // public Integer rl9 { get; private set; } // public Integer rl10 { get; private set; } // public Integer rl11 { get; private set; } // public Integer rl12 { get; private set; } // // /***************** Ratingソート番号(動的対応) ******************/ // public Integer rs1 { get; private set; } // public Integer rs2 { get; private set; } // public Integer rs3 { get; private set; } // public Integer rs4 { get; private set; } // public Integer rs5 { get; private set; } // public Integer rs6 { get; private set; } // public Integer rs7 { get; private set; } // public Integer rs8 { get; private set; } // public Integer rs9 { get; private set; } // public Integer rs10 { get; private set; } // public Integer rs11 { get; private set; } // public Integer rs12 { get; private set; } /*****************ソート時再検索条件(画面からの入力条件を無視するため)******************/ // TODO katsu sql 2つ を保持すればいいと思います。 private String soqlWithoutSort = null; private String soqlForMoneyWithoutSort = null; // private String hpForSort = null; // private String ownerForSort = null; // private String datefieldForSort = null; // private Date fromdForSort = null; // private Date todForSort = null; // private String textForSort = null; // private String conditionForSort = null; // private String valueForSort = null; // private String textForSort2 = null; // private String conditionForSort2 = null; // private String valueForSort2 = null; // private String textForSort3 = null; // private String conditionForSort3 = null; // private String valueForSort3 = null; // private String limitForSort = null; // private Boolean onlyOppForSort = true; private static Integer searchLimit = 1000; public StatuAchievementsPCLController() { system.debug('test:12345'); //Apexpages.currentPage().getHeaders().put('X-UA-Compatible', 'IE=8'); pclInfos = new List(); // 日付検索条件のCalendar用 con1 = new Contact(); con2 = new Contact(); dateOpts = new List(); dateOpts.add(new SelectOption('', '--无--')); dateOpts.add(new SelectOption('SoLatestDeliveryDate__c', Schema.SObjectType.Statu_Achievements__c.fields.SoLatestDeliveryDate__c.label)); dateOpts.add(new SelectOption('First_DeliveryDate__c', Schema.SObjectType.Statu_Achievements__c.fields.First_DeliveryDate__c.label)); dateOpts.add(new SelectOption('Current_shipping_date__c', Schema.SObjectType.Statu_Achievements__c.fields.Current_shipping_date__c.label)); dateOpts.add(new SelectOption('EndUser_contract_submit_day__c', Schema.SObjectType.Statu_Achievements__c.fields.EndUser_contract_submit_day__c.label)); dateOpts.add(new SelectOption('Payment_Scheduled_Date__c', Schema.SObjectType.Statu_Achievements__c.fields.Payment_Scheduled_Date__c.label)); dateOpts.add(new SelectOption('Payment_All_Scheduled_Date__c', Schema.SObjectType.Statu_Achievements__c.fields.Payment_All_Scheduled_Date__c.label)); //dateOpts.add(new SelectOption('Shipping_Scheduled_Date__c', Schema.SObjectType.Statu_Achievements__c.fields.Shipping_Scheduled_Date__c.label)); dateOpts.add(new SelectOption('Shipping_Scheduled_Date_For_Report__c', Schema.SObjectType.Statu_Achievements__c.fields.Shipping_Scheduled_Date_For_Report__c.label)); dateOpts.add(new SelectOption('FirstApproveDate__c', Schema.SObjectType.Statu_Achievements__c.fields.FirstApproveDate__c.label)); //syu 2014/6/25 追加した dateOpts.add(new SelectOption('Key_topic_last_update_date__c', '重要字段更新日')); dateOpts.add(new SelectOption('Last_update_UnshippedAmount_without_tax__c', Schema.SObjectType.Statu_Achievements__c.fields.Last_update_UnshippedAmount_without_tax__c.label)); dateOpts.add(new SelectOption('Last_update_OverviewStatus__c', Schema.SObjectType.Statu_Achievements__c.fields.Last_update_OverviewStatus__c.label)); dateOpts.add(new SelectOption('Last_update_PaymentStatus__c', Schema.SObjectType.Statu_Achievements__c.fields.Last_update_PaymentStatus__c.label)); dateOpts.add(new SelectOption('Last_update_AssignmentStatus__c', Schema.SObjectType.Statu_Achievements__c.fields.Last_update_AssignmentStatus__c.label)); dateOpts.add(new SelectOption('Last_update_shipping_status__c', Schema.SObjectType.Statu_Achievements__c.fields.Last_update_shipping_status__c.label)); dateOpts.add(new SelectOption('Last_update_EndUser_contract_submit_day__c', Schema.SObjectType.Statu_Achievements__c.fields.Last_update_EndUser_contract_submit_day__c.label)); dateOpts.add(new SelectOption('Last_update_Payment_Scheduled_Date__c', Schema.SObjectType.Statu_Achievements__c.fields.Last_update_Payment_Scheduled_Date__c.label)); dateOpts.add(new SelectOption('Last_update_Payment_All_Scheduled_Date__c', Schema.SObjectType.Statu_Achievements__c.fields.Last_update_Payment_All_Scheduled_Date__c.label)); dateOpts.add(new SelectOption('Last_update_forecast_shipping_date__c', Schema.SObjectType.Statu_Achievements__c.fields.Last_update_forecast_shipping_date__c.label)); dateOpts.add(new SelectOption('Last_update_followup_situation__c', Schema.SObjectType.Statu_Achievements__c.fields.Last_update_followup_situation__c.label)); dateOpts.add(new SelectOption('Last_update_Reason_not_collect_money__c', Schema.SObjectType.Statu_Achievements__c.fields.Last_update_Reason_not_collect_money__c.label)); dateOpts.add(new SelectOption('Last_update_Reason_not_ship__c', Schema.SObjectType.Statu_Achievements__c.fields.Last_update_Reason_not_ship__c.label)); dateOpts.add(new SelectOption('Last_update_manager_feedback__c', Schema.SObjectType.Statu_Achievements__c.fields.Last_update_manager_feedback__c.label)); textOpts = new List(); textOpts.add(new SelectOption('','--无--')); textOpts.add(new SelectOption('S:ContractNO__c', Schema.SObjectType.Statu_Achievements__c.fields.ContractNO__c.label)); textOpts.add(new SelectOption('S:Opp_Hospital__c', Schema.SObjectType.Statu_Achievements__c.fields.Opp_Hospital__c.label)); textOpts.add(new SelectOption('S:Owner_Category__c', Schema.SObjectType.Statu_Achievements__c.fields.Owner_Category__c.label));// 20220907 XLIU-CHY4JL you textOpts.add(new SelectOption('S:Opportunity_Name__c', Schema.SObjectType.Opportunity.fields.Name.label)); textOpts.add(new SelectOption('S:Opportunity__r.Opportunity_sub_owner__r.name', Schema.SObjectType.Opportunity.fields.Opportunity_sub_owner__c.label)); textOpts.add(new SelectOption('S:Agency1_Name_F__c', Schema.SObjectType.Statu_Achievements__c.fields.Agency1_Name_F__c.label)); textOpts.add(new SelectOption('S:Opportunity_Salesdepartment_SAP__c', Schema.SObjectType.Opportunity.fields.Salesdepartment_SAP__c.label)); textOpts.add(new SelectOption('S:SaleProvince_SAP__c', Schema.SObjectType.Statu_Achievements__c.fields.SaleProvince_SAP__c.label)); textOpts.add(new SelectOption('S:Team__c', Schema.SObjectType.Statu_Achievements__c.fields.Team__c.label)); textOpts.add(new SelectOption('S:Owner__c', Schema.SObjectType.Statu_Achievements__c.fields.Owner__c.label)); textOpts.add(new SelectOption('S:Order_no_without_0__c', Schema.SObjectType.Statu_Achievements__c.fields.Order_no_without_0__c.label)); textOpts.add(new SelectOption('S:Status_1__c', Schema.SObjectType.Statu_Achievements__c.fields.Status_1__c.label)); //textOpts.add(new SelectOption('S:Status_2_Formula__c', Schema.SObjectType.Statu_Achievements__c.fields.Status_2_Formula__c.label)); //textOpts.add(new SelectOption('S:Book_stock__c', Schema.SObjectType.Statu_Achievements__c.fields.Book_stock__c.label)); //textOpts.add(new SelectOption('S:Opp_OCM__c', Schema.SObjectType.Statu_Achievements__c.fields.Opp_OCM__c.label)); textOpts.add(new SelectOption('S:Opp_Department_Name__c', Schema.SObjectType.Statu_Achievements__c.fields.Opp_Department_Name__c.label)); textOpts.add(new SelectOption('S:Opportunity_Category__c', Schema.SObjectType.Statu_Achievements__c.fields.Opportunity_Category__c.label)); //textOpts.add(new SelectOption('S:QuotationCode__c', Schema.SObjectType.Statu_Achievements__c.fields.QuotationCode__c.label)); //textOpts.add(new SelectOption('N:ContractAmount_F__c', Schema.SObjectType.Statu_Achievements__c.fields.ContractAmount_F__c.label)); //textOpts.add(new SelectOption('N:PaymentAmount_F__c', Schema.SObjectType.Statu_Achievements__c.fields.PaymentAmount_F__c.label)); //textOpts.add(new SelectOption('N:NOT_PaymentAmount_F__c', Schema.SObjectType.Statu_Achievements__c.fields.NOT_PaymentAmount_F__c.label)); textOpts.add(new SelectOption('S:PaymentRate_F__c', Schema.SObjectType.Statu_Achievements__c.fields.PaymentRate_F__c.label)); //textOpts.add(new SelectOption('N:UnshippedAmount_F__c', Schema.SObjectType.Statu_Achievements__c.fields.UnshippedAmount_F__c.label)); //textOpts.add(new SelectOption('N:UnshippedAmount_without_tax_F__c', Schema.SObjectType.Statu_Achievements__c.fields.UnshippedAmount_without_tax_F__c.label)); //textOpts.add(new SelectOption('S:X5weeks_ago__c', Schema.SObjectType.Statu_Achievements__c.fields.X5weeks_ago__c.label)); //textOpts.add(new SelectOption('S:X4weeks_ago__c', Schema.SObjectType.Statu_Achievements__c.fields.X4weeks_ago__c.label)); //textOpts.add(new SelectOption('S:X3Weeks_ago__c', Schema.SObjectType.Statu_Achievements__c.fields.X3Weeks_ago__c.label)); //textOpts.add(new SelectOption('S:X2weeks_ago__c', Schema.SObjectType.Statu_Achievements__c.fields.X2weeks_ago__c.label)); //textOpts.add(new SelectOption('S:Last_week__c', Schema.SObjectType.Statu_Achievements__c.fields.Last_week__c.label)); textOpts.add(new SelectOption('S:Current_status__c', Schema.SObjectType.Statu_Achievements__c.fields.Current_status__c.label)); textOpts.add(new SelectOption('S:OverviewStatus__c', Schema.SObjectType.Statu_Achievements__c.fields.OverviewStatus__c.label)); textOpts.add(new SelectOption('S:End_User_contract__c', Schema.SObjectType.Statu_Achievements__c.fields.End_User_contract__c.label)); //textOpts.add(new SelectOption('S:PaymentStatus__c', Schema.SObjectType.Statu_Achievements__c.fields.PaymentStatus__c.label)); //textOpts.add(new SelectOption('S:AssignmentStatus__c', Schema.SObjectType.Statu_Achievements__c.fields.AssignmentStatus__c.label)); //textOpts.add(new SelectOption('S:DeliveryStatus__c', Schema.SObjectType.Statu_Achievements__c.fields.DeliveryStatus__c.label)); //textOpts.add(new SelectOption('N:Pacial_shipment__c', Schema.SObjectType.Statu_Achievements__c.fields.Pacial_shipment__c.label)); //textOpts.add(new SelectOption('S:Forecast_ship_monthly_mannual__c', Schema.SObjectType.Statu_Achievements__c.fields.Forecast_ship_monthly_mannual__c.label)); //textOpts.add(new SelectOption('S:Follow_up_comment__c', Schema.SObjectType.Statu_Achievements__c.fields.Follow_up_comment__c.label)); //textOpts.add(new SelectOption('S:Reason_not_collect_money__c', Schema.SObjectType.Statu_Achievements__c.fields.Reason_not_collect_money__c.label)); //textOpts.add(new SelectOption('S:Reason_not_ship__c', Schema.SObjectType.Statu_Achievements__c.fields.Reason_not_ship__c.label)); //textOpts.add(new SelectOption('S:Manager_feedback__c', Schema.SObjectType.Statu_Achievements__c.fields.Manager_feedback__c.label)); //textOpts.add(new SelectOption('S:Create_Activity__c', Schema.SObjectType.Statu_Achievements__c.fields.Create_Activity__c.label)); //textOpts.add(new SelectOption('S:Create_task__c', Schema.SObjectType.Statu_Achievements__c.fields.Create_task__c.label)); //textOpts.add(new SelectOption('S:Update_situation__c', Schema.SObjectType.Statu_Achievements__c.fields.Update_situation__c.label)); textOpts.add(new SelectOption('S:Monthly_forecast_shipping__c',Schema.SObjectType.Statu_Achievements__c.fields.Monthly_forecast_shipping__c.label)); textOpts2 = textOpts; textOpts3 = textOpts; equalOpts = new List(); equalOpts.add(new SelectOption('equals','等于')); equalOpts.add(new SelectOption('notequals','不等于')); equalOpts.add(new SelectOption('<','<')); equalOpts.add(new SelectOption('>','>')); equalOpts.add(new SelectOption('<=','<=')); equalOpts.add(new SelectOption('>=','>=')); equalOpts.add(new SelectOption('contains','包含')); equalOpts.add(new SelectOption('notcontains','不包含')); equalOpts.add(new SelectOption('starts with','起始字符')); equalOpts2 = equalOpts; equalOpts3 = equalOpts; limitOpts = new List(); limitOpts.add(new SelectOption('20','20')); limitOpts.add(new SelectOption('50','50')); limitOpts.add(new SelectOption('100','100')); limitOpts.add(new SelectOption('200','200')); limitOpts.add(new SelectOption('500','500')); limitOpts.add(new SelectOption('' + (searchLimit + 1), '全部')); limits = '50'; // rl1 = this.makeRatingLabel(1); // rl2 = this.makeRatingLabel(2); // rl3 = this.makeRatingLabel(3); // rl4 = this.makeRatingLabel(4); // rl5 = this.makeRatingLabel(5); // rl6 = this.makeRatingLabel(6); // rl7 = this.makeRatingLabel(7); // rl8 = this.makeRatingLabel(8); // rl9 = this.makeRatingLabel(9); // rl10 = this.makeRatingLabel(10); // rl11 = this.makeRatingLabel(11); // rl12 = this.makeRatingLabel(12); // // // Ratingのソート順番は18~29、固定 // rs1 = this.makeRatingSortIdx(18); // rs2 = this.makeRatingSortIdx(19); // rs3 = this.makeRatingSortIdx(20); // rs4 = this.makeRatingSortIdx(21); // rs5 = this.makeRatingSortIdx(22); // rs6 = this.makeRatingSortIdx(23); // rs7 = this.makeRatingSortIdx(24); // rs8 = this.makeRatingSortIdx(25); // rs9 = this.makeRatingSortIdx(26); // rs10 = this.makeRatingSortIdx(27); // rs11 = this.makeRatingSortIdx(28); // rs12 = this.makeRatingSortIdx(29); } public PageReference init() { system.debug('test:12345'); CAmountSum = 0.0; PAmountSum = 0.0; NPAmountSum = 0.0; USAmountSum = 0.0; USwtAmountSum = 0.0; //20140331追加。郁 //text='S:DeliveryStatus__c'; //condition='notequals'; //value = '已完全交付'; //text2='S:Status_2_Formula__c'; //condition2='notequals'; //value2 = '无效'; // xudan 20140626 状态1をチェックボックスに // [委托]【周会-注残管理表】请确认周会注残管理表显示逻辑 by vivek start // onlyOpp = true; onlyOpp = false; // [委托]【周会-注残管理表】请确认周会注残管理表显示逻辑 by vivek start //20140822 追加 by katsu start 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; // ownerForSort = ownerSearch; } String hpidParam = System.currentPageReference().getParameters().get('hpid'); if(hpidParam != null){ List hpAcc = ControllerUtil.selectAccountForTrigger(new String[] {hpidParam}); if (hpAcc.size() > 0) { accSearch = hpAcc[0].name; // hpForSort = accSearch; } } //20140822 追加 by katsu end soqlWithoutSort = this.makeSoql(false, accSearch, ownerSearch, //opp.Opportunity_Category__c, opp.Consumable__c, dateField, con1.Birthdate, con2.Birthdate, text, condition, value, text2, condition2, value2, text3, condition3, value3); String soql = soqlWithoutSort + ' order by LastModifiedDate desc limit ' + Integer.valueOf(limits); soqlForMoneyWithoutSort = this.makeSoql(true, accSearch, ownerSearch, //opp.Opportunity_Category__c, opp.Consumable__c, dateField, con1.Birthdate, con2.Birthdate, text, condition, value, text2, condition2, value2, text3, condition3, value3); String soqlForMoney = soqlForMoneyWithoutSort + ' order by LastModifiedDate desc limit ' + Integer.valueOf(System.Label.TotalLimit); System.debug('soqlWithoutSort:' + soqlWithoutSort); List queryList = Database.query(soql); List queryListForMoney = Database.query(soqlForMoney); this.makeOppRecordsForView(queryList, queryListForMoney); this.sortKey = '0'; this.preSortKey = '0'; this.sortOrderAsc = true; this.sortOrder = new String[columus.size()]; for (Integer i = 0; i < columus.size(); i++) this.sortOrder[i] = ' '; pclCount = pclInfos.size(); ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '取得最近的 ' + pclCount + ' 条数据')); return null; } public PageReference searchOpp() { pclInfos = new List(); String soql = this.makeSoql(false, accSearch, ownerSearch, //opp.Opportunity_Category__c, opp.Rating_manual__c, opp.Consumable__c, dateField, con1.Birthdate, con2.Birthdate, text, condition, value, text2, condition2, value2, text3, condition3, value3); soql += ' order by ContractNO__c limit ' + Integer.valueOf(limits); String soqlForMoney = this.makeSoql(true, accSearch, ownerSearch, //opp.Opportunity_Category__c, opp.Rating_manual__c, opp.Consumable__c, dateField, con1.Birthdate, con2.Birthdate, text, condition, value, text2, condition2, value2, text3, condition3, value3); soqlForMoney += ' order by ContractNO__c limit ' + Integer.valueOf(System.Label.TotalLimit); this.sortOrder[0] = '↑'; system.debug('soql:'+soql); system.debug('soqlForMoney:'+soqlForMoney); List queryList = Database.query(soql); List queryListForMoney = Database.query(soqlForMoney); CAmountSum = 0.0; PAmountSum = 0.0; NPAmountSum = 0.0; USAmountSum = 0.0; USwtAmountSum = 0.0; this.makeOppRecordsForView(queryList, queryListForMoney); // hpForSort = accSearch; // ownerForSort = ownerSearch; // datefieldForSort = dateField; // fromdForSort = con1.Birthdate; // todForSort = con2.Birthdate; // textForSort = text; // conditionForSort = condition; // valueForSort = value; // textForSort2 = text2; // conditionForSort2 = condition2; // valueForSort2 = value2; // textForSort3 = text3; // conditionForSort3 = condition3; // valueForSort3 = value3; // limitForSort = limits; // onlyOppForSort = onlyOpp; pclCount = pclInfos.size(); if (pclCount > searchLimit) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, 'The search returned more than the maximum number of rows (' + searchLimit + ')')); } else { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '共有 ' + pclCount + ' 条数据')); } return null; } public PageReference sortTable() { pclInfos = new List(); if (this.sortKey == this.preSortKey) { // 方向が変わるのみ this.sortOrderAsc = !this.sortOrderAsc; this.sortOrder[Integer.valueOf(this.sortKey)] = (this.sortOrderAsc == true ? '↑' : '↓'); } else { this.sortOrderAsc = true; this.sortOrder[Integer.valueOf(this.preSortKey)] = ' '; this.sortOrder[Integer.valueOf(this.sortKey)] = (this.sortOrderAsc == true ? '↑' : '↓'); } this.preSortKey = this.sortKey; String soql = soqlWithoutSort + ' order by ' + this.columus[Integer.valueOf(this.sortKey)] + ' ' + (this.sortOrderAsc == true ? 'asc nulls first' : 'desc nulls last') + ' limit ' + Integer.valueOf(limits); system.debug('sort:::::'+ soql); List queryList = Database.query(soql); String soqlForMoney = soqlForMoneyWithoutSort + ' 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('sort:::::'+ soqlForMoney); List queryListForMoney = Database.query(soqlForMoney); CAmountSum = 0.0; PAmountSum = 0.0; NPAmountSum = 0.0; USAmountSum = 0.0; USwtAmountSum = 0.0; this.makeOppRecordsForView(queryList, queryListForMoney); pclCount = pclInfos.size(); if (pclCount > searchLimit) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, 'The search returned more than the maximum number of rows (' + searchLimit + ')')); } else { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '共有 ' + pclCount + ' 条数据')); } return null; } public PageReference save() { try { List updSAs = new List(); for (PCLInfo oi : pclInfos) { // 変更チェック if (oi.changeFlg == '1') { oi.changeFlg = '0'; updSAs.add(oi.rec); } } if (updSAs.size() > 0) update updSAs; ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, 'Save Completed')); } catch (Exception ex) { ApexPages.addMessages(ex); return null; } if (saveType == '1') { searchOpp(); saveType = ''; } else if (saveType == '2') { sortTable(); saveType = ''; } else { } return null; } public PageReference cancel() { return new PageReference('/home/home.jsp'); } // TODO katsu 出す項目の整理 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) { String soql =''; if (isforMoneyFlg == false) { // [委托]【周会-注残管理表】请确认周会注残管理表显示逻辑 修改之前的where条件:where Id != null and DeliveryStatus__c <> \'已完全交付\' and Status_2_Formula__c <> \'无效\' 修改之后的where条件:where Id != null and Status_2_Formula__c <> \'无效\' and Status_1__c not in (\'取消\',\'完毕\',\'冻结\') and UnshippedAmount_without_tax_Thousand_F__c > 1'; by vivek start //【委托】【重要】周会管理表修改 (添加字段:Opportunity__c) by tcm 20211029 start soql += 'select Id, Opportunity__c, Opp_Number__c, ContractNO__c, Opp_Hospital__c, QuotationCode__c, DeliveryStatus__c,' + ' Last_update_PaymentStatus__c, Last_update_AssignmentStatus__c, Last_update_Reason_not_collect_money__c, Last_update_UnshippedAmount_without_tax__c,' + ' Last_update_Reason_not_ship__c, Last_update_followup_situation__c, Last_update_shipping_status__c, Last_update_OverviewStatus__c, Last_update_manager_feedback__c,' + ' Last_update_Payment_All_Scheduled_Date__c, Last_update_Payment_Scheduled_Date__c, Last_update_forecast_shipping_date__c, Last_update_EndUser_contract_submit_day__c,' + ' ContractNO_link__c, Hospital_link__c, Opportunity_Name__c, Agency1_Name_F__c, Opportunity_Salesdepartment_SAP__c,' + ' SaleProvince_SAP__c, Team__c, Owner_Category__c, Owner__c, Order_no_without_0__c, Status_1__c,Opportunity__r.Opportunity_sub_owner__c,' + ' Status_2_Formula__c, Book_stock__c, Opp_OCM__c, Opp_Department_Name__c, Opportunity_Category__c,' + ' Open_Quotation__c, ContractAmount_F__c, PaymentAmount_F__c, NOT_PaymentAmount_F__c, PaymentRate_F__c,' + ' UnshippedAmount_F__c, UnshippedAmount_without_tax_Thousand_DN__c, X5weeks_ago__c, X4weeks_ago__c, X3Weeks_ago__c,' + ' X2weeks_ago__c, Last_week__c, Current_status__c, OverviewStatus__c, End_User_contract__c,' + ' PaymentStatus__c, AssignmentStatus__c, Parcial_ship_link__c, Pacial_shipment__c, SoLatestDeliveryDate__c,' + ' First_DeliveryDate__c, Current_shipping_date__c, EndUser_contract_submit_day__c, Payment_Scheduled_Date__c, Payment_All_Scheduled_Date__c,' + ' Shipping_Scheduled_Date__c, Follow_up_comment__c, Reason_not_collect_money__c, Reason_not_ship__c, Manager_feedback__c,' + ' Create_Activity__c, Create_task__c, Key_topic_last_update_date__c, Update_situation__c, FirstApproveDate__c,' + ' Monthly_forecast_shipping__c, Forecast_ship_monthly_mannual__c' + ' from Statu_Achievements__c where Id != null and Status_2_Formula__c <> \'无效\' and Status_1__c not in (\'取消\',\'完毕\',\'冻结\') and Forecast_Amount_F__c > 1'; } else { soql += 'select Id, Opportunity__c,ContractNO__c,Opp_Number__c, Opp_Hospital__c, QuotationCode__c, DeliveryStatus__c,' + ' Last_update_PaymentStatus__c, Last_update_AssignmentStatus__c, Last_update_Reason_not_collect_money__c, Last_update_UnshippedAmount_without_tax__c,' + ' Last_update_Reason_not_ship__c, Last_update_followup_situation__c, Last_update_shipping_status__c, Last_update_OverviewStatus__c, Last_update_manager_feedback__c,' + ' Last_update_Payment_All_Scheduled_Date__c, Last_update_Payment_Scheduled_Date__c, Last_update_forecast_shipping_date__c, Last_update_EndUser_contract_submit_day__c,' + ' ContractNO_link__c, Hospital_link__c, Opportunity_Name__c, Agency1_Name_F__c, Opportunity_Salesdepartment_SAP__c,' + ' SaleProvince_SAP__c, Team__c, Owner_Category__c, Owner__c, Order_no_without_0__c, Status_1__c,Opportunity__r.Opportunity_sub_owner__c,' + ' Status_2_Formula__c, Book_stock__c, Opp_OCM__c, Opp_Department_Name__c, Opportunity_Category__c,' + ' Open_Quotation__c, convertCurrency(ContractAmount_F__c), convertCurrency(PaymentAmount_F__c), convertCurrency(NOT_PaymentAmount_F__c), PaymentRate_F__c,' + ' convertCurrency(UnshippedAmount_F__c), UnshippedAmount_without_tax_Thousand_DN__c, X5weeks_ago__c, X4weeks_ago__c, X3Weeks_ago__c,' + ' X2weeks_ago__c, Last_week__c, Current_status__c, OverviewStatus__c, End_User_contract__c,' + ' PaymentStatus__c, AssignmentStatus__c, Parcial_ship_link__c, Pacial_shipment__c, SoLatestDeliveryDate__c,' + ' First_DeliveryDate__c, Current_shipping_date__c, EndUser_contract_submit_day__c, Payment_Scheduled_Date__c, Payment_All_Scheduled_Date__c,' + ' Shipping_Scheduled_Date__c, Follow_up_comment__c, Reason_not_collect_money__c, Reason_not_ship__c, Manager_feedback__c,' + ' Create_Activity__c, Create_task__c, Key_topic_last_update_date__c, Update_situation__c, FirstApproveDate__c,' + ' Monthly_forecast_shipping__c, Forecast_ship_monthly_mannual__c' + ' from Statu_Achievements__c where Id != null and Status_2_Formula__c <> \'无效\' and Status_1__c not in (\'取消\',\'完毕\',\'冻结\') and Forecast_Amount_F__c > 1'; } //【委托】【重要】周会管理表修改 (添加字段:Opportunity__c) by tcm 20211029 end // [委托]【周会-注残管理表】请确认周会注残管理表显示逻辑 by vivek end // xudan 20140626 状态1をチェックボックスに if (onlyOpp) { // [委托]【周会-注残管理表】请确认周会注残管理表显示逻辑 by vivek start // soql += ' and (Opportunity__r.StageName__c = \'注残\' or Opportunity__r.StageName__c = \'发货\') '; soql += ' and (Opportunity__r.StageName__c = \'注残\' or Opportunity__r.StageName__c = \'发货\') and DeliveryStatus__c = \'部分交付\''; // [委托]【周会-注残管理表】请确认周会注残管理表显示逻辑 by vivek end } // [委托]【周会-注残管理表】请确认周会注残管理表显示逻辑 by vivek start // if(!onlyOpp){ // soql += 'and DeliveryStatus__c <> \'已完全交付\''; // } // [委托]【周会-注残管理表】请确认周会注残管理表显示逻辑 by vivek end if (!String.isBlank(accStr)) { //soql += ' and Hospital__c = \'' + accStr + '\''; String[] vals = accStr.split(' '); for (String v : vals) { soql += ' and Opp_Hospital__c like \'%' + v + '%\''; } } if (!String.isBlank(ownerStr)) { //soql += ' and OwnerId = \'' + ownerStr + '\''; String[] vals = ownerStr.split(' '); for (String v : vals) { soql += ' and Opportunity__r.Owner.Name like \'%' + v + '%\''; } } 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)'; } } // 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 queryList, List queryListForMoney) { Savepoint sp = Database.setSavepoint(); // TODO queryList について、最初のoppLimitだけ更新すればOKです。 Database.SaveResult[] results = Database.update(queryList, false); // 強制ロールバック Database.rollback(sp); for (Integer i = 0; i < queryListForMoney.size(); i++) { if(i 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 += ')'; } } 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は無視 } } 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 \'%' + tmpVal + '%\''; } else if (con == 'starts with') { soql += ' like \'' + tmpVal + '%\''; } 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; // } // return val; // } // // /** // * 現在の月にて、Ratingのソート番号を作成 // */ // private Integer makeRatingSortIdx(Integer idx) { // Integer m = Date.today().month(); // // Integer val = idx - 1 + m; // if (val > 29) { // val = val - 12; // } // return val; // } class PCLInfo { public Statu_Achievements__c rec { get; set; } public Boolean canEdit { get; private set; } public Boolean hasError { get; private set; } public Boolean hasFieldError { get; private set; } public Integer lineNo { get; private set; } public String changeFlg { get; set; } public PCLInfo(Statu_Achievements__c record) { rec = record; canEdit = true; hasError = false; hasFieldError = false; lineNo = 0; changeFlg = '0'; } } }