public without sharing class ConsumableController { /*****************検索用******************/ public Consumable_order__c coc { get; set; } // FIMXE Consumable_order__c のインスタンス、sql多すぎ public String category1 { get; set; } public String category5 { get; set; } public String category4 { get; set; } public String category3 { get; set; } public String category_Goods {get ; set;} public Boolean specialCampaign {get ; set;} public Boolean cansee{get;set;} //经销商合同名称 public String contractName {get ; set;} //经销商合同ID public String contractId {get; set;} //经销商定价查看权限 public Boolean dealerPricesee{get;set;} /*****************画面初始化用********************************/ /******20160313_add**************/ //public String idCheck {get;set;} public Boolean editAble {get;set;} public Boolean edoffersPrice {get;set;} public String statusEdit {get;set;} public Boolean returnOrder {get;set;} public String searchDone{get;set;} //暂用20160323 public Decimal disCount = 0; //总价格计算结果 public Decimal sumPrice{get;set;} //自定义特价金额 public Decimal bargainPrice{get;set;} //产品上下限 String[] proLimitAndDate =new String[]{}; /*****************画面表示Bean******************/ private List consumableorderdetailsRecords = new List(); public List consumableorderdetailsRecordsview { get; set; } public Integer ConsumableorderdetailsCount { get { return consumableorderdetailsRecords == null ? 0 : consumableorderdetailsRecords.size(); } } public Integer ConsumableorderdetailsviewCount { get { return consumableorderdetailsRecordsview == null ? 0 : consumableorderdetailsRecordsview.size(); } } public List lower = new List(); //附件 public List attachmentRecoeds { get; set; } public List DealerProductId { get; set; } public Boolean editDelCommitBtnDisabled {get; private set;} public Boolean saveBtnDisabled { get; private set; } public Boolean sorderBtnDisabled { get; private set; } public String decisionCode {get;set;} // 保存后动作: 1.检索 2.排序 public String baseUrl {get;private set;} public String sortKey { get; set; } public String preSortKey { get; private set; } public Boolean sortOrderAsc { get; private set; } public String[] sortOrder { get; private set; } //public String[] ProidList =new String[]{}; private List contactDealer = new List(); private String[] columus = new String[]{ 'Consumable_Product__r.Name','Consumable_Product__r.Asset_Model_No__c','Consumable_Product__r.Intra_Trade_List_RMB__c','','','Consumable_Product__r.Category3__c','Consumable_Product__r.Category4__c','Consumable_Product__r.Category5__c'}; private String[] columus_no = new String[]{ 'Product2__c.Name','Product2__c.Asset_Model_No__c','Product2__c.Intra_Trade_List_RMB__c','','','Category3__c','Category4__c','Category5__c'}; // 已选择产品明细 private List attachmentinfo = new List(); //private List Product2Selected = new List(); /*****************ソート時再検索条件(画面からの入力条件を無視するため)******************/ private String cate1ForSort = null; private String accountid = null; private String accountName = null; // 产品 ID public String ESetId { get; set; } private String userId = ''; //private String[] ProidListAll = new String[]{}; public List categoryOptionList{get;set;} public List category4OptionList{get;set;} public List category5OptionList{get;set;} private Map DealerProductMap = new Map(); //private Map dealerPDiscountMap = new Map(); List orderzaikuId = new List(); //分页功能 //public List paginationSizeOptions{get;set;} public Integer size{get;set;} public Integer pageLimit{get;set;} public Integer noOfRecords{get; set;} public ApexPages.StandardSetController con { get; set; } public String soql {get;set;} private Boolean OSHFLG;//lt 20230517 安徽两票制 add // 登录者工作地 private String userWorkLocation; // public String agencyProType {get;set;} public String agencyProType1 {get;set;} //lt 20230526 安徽两票制 add public String methodType {get;set;} public String hospitalName {get;set;} public String hospitalId {get;set;} public String tempidHp {get; set;} public String tempidPp {get; set;} private List hpids = new List(); private Boolean isfirst = false; public ConsumableController() { baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); ESetId = ApexPages.currentPage().getParameters().get('esetId'); statusEdit = ApexPages.currentPage().getParameters().get('KeyWords'); consumableorderdetailsRecords = new List(); DealerProductId = new List(); attachmentRecoeds = new List(); consumableorderdetailsRecordsview = new List(); editAble = false; this.edoffersPrice = false; returnOrder = false; categoryOptionList = new List(); category4OptionList = new List(); category5OptionList = new List(); size = Integer.valueOf(System.Label.orderdetLimitsize); pageLimit = Integer.valueOf(System.Label.orderdetPageLimitsize); } private void initStandardController(){ con = new ApexPages.StandardSetController(Database.getQueryLocator( soql ) ); con.setPageSize(size); noOfRecords = con.getResultSize(); } public List product2s() { return (List) con.getRecords(); } public PageReference refreshPageSize() { con.setPageSize(size); //product2Selected = product2s(); getPageInfo(); return null; } private List getPageInfo(){ List reSet = new List(); Map selectedIdMap = new Map(); for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) { if(ass.check == true){ selectedIdMap.put(ass.Prod.id,ass.Prod.id); reSet.add(ass); } } consumableorderdetailsRecordsview = new List(); if (editAble){ consumableorderdetailsRecordsview = reSet; } Integer pagestartNo = (con.getPageNumber() * size)-size; Integer pageendNo = (con.getPageNumber() * size)>noOfRecords? noOfRecords:(con.getPageNumber() * size-1); Integer addNo = 0; for(Integer i = pagestartNo; i < consumableorderdetailsRecords.size(); i++){ Consumable_Orderdetails__c orderdetails1 = new Consumable_Orderdetails__c(); if(selectedIdMap.containsKey(consumableorderdetailsRecords[i].Prod.Id)){ addNo++; //continue; }else if(consumableorderdetailsRecordsview.size() >= pageLimit + size){ break; }else{ if(consumableorderdetailsRecords[i].check == false){ consumableorderdetailsRecords[i].esd = orderdetails1; } //consumableorderdetailsRecords[i].esd.Dealer_Custom_Price__c = consumableorderdetailsRecords[i].Prod.Intra_Trade_List_RMB__c * disCount / 100; consumableorderdetailsRecordsview.add(consumableorderdetailsRecords[i]); addNo++; } if(addNo >= size)break; } return consumableorderdetailsRecordsview; } // 画面初始化 public void init() { System.debug('zhj init'); this.methodType = ApexPages.currentPage().getParameters().get('type'); this.sortKey = '1'; this.preSortKey = '1'; this.sortOrderAsc = false; this.sortOrder = new String[8]; this.sortOrder = new String[]{' ',' ',' ',' ','↓','','',''}; cate1ForSort = ''; decisionCode = ''; sumPrice = 0; specialCampaign = false; //yuanP = '元'; //idCheck = EsetId; if(ESetId!=null&&ESetId!=''&&statusEdit==''&&statusEdit==null){ editAble = false; }else if((ESetId == null||ESetId=='')&&(statusEdit==''||statusEdit==null)){ editAble = true; }else if(ESetId != null&&ESetId!=''&&statusEdit!=''&&statusEdit!=null){ editAble = true; } userId = UserInfo.getUserId(); //userId = '0050l000001dLbc'; List Useracc = New List(); //lt 20230517 安徽两票制 add ,OSHFLG__c Useracc = [SELECT accountid, Work_Location__c,UserPro_Type__c,OSHFLG__c FROM user WHERE id = :userId ]; accountid = Useracc[0].accountid; userWorkLocation = Useracc[0].Work_Location__c; agencyProType = Useracc[0].UserPro_Type__c; agencyProType1 = Useracc[0].UserPro_Type__c; //lt 20230526 安徽两票制 add //lt 20230526 安徽两票制 start OSHFLG = Useracc[0].OSHFLG__c; //lt 20230517 安徽两票制 add if(OSHFLG){ agencyProType1 = 'OSH'; } else if(String.isBlank(Useracc[0].UserPro_Type__c)){ agencyProType1 = 'ET'; } //lt 20230526 安徽两票制 end if(String.isBlank(Useracc[0].UserPro_Type__c)){ agencyProType = 'ET'; } //错误信息提示 if (String.isNotBlank(methodType) && methodType.equals('hospitalorder') && agencyProType == 'ET') { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '您没有订货医院特价产品的权限!')); } contactDealer = new list(); Date dateToday = Date.today(); //查该经销商下所有有效合同 List contractList = [select Id,Name,RecordType.DeveloperName from Account where RecordType.DeveloperName ='AgencyContract' and Contract_Decide_Start_Date__c <= :dateToday and Contract_Decide_End_Date__c >= :dateToday and Contact_Type__c like :agencyProType1//lt 20230517 安徽两票制 add 1 and Agent_Ref__c =:accountid and OSH_Dealer__c =: OSHFLG //lt 20230517 安徽两票制 add ]; for(Account contract : contractList){ contactDealer.add(contract.Id); } DealerProductMap = new Map(); DealerProductId = this.getDealerProductId(); Account accountInfo = [SELECT Name,Dealer_discount__c,Product_Limit_Date__c,Product_Limit_DateENG__c FROM account WHERE id =:accountid]; accountName = accountInfo.Name; // contractId = accountInfo.Id; String product_Limit; if(agencyProType == 'ET'){ product_Limit = accountInfo.Product_Limit_Date__c; }else{ product_Limit = accountInfo.Product_Limit_DateENG__c; } if(product_Limit != null && product_Limit !=''){ proLimitAndDate = product_Limit.split(','); } saveBtnDisabled = false; sorderBtnDisabled = false; coc = new Consumable_order__c(); consumableorderdetailsRecords = new List(); if(String.isBlank(agencyProType)){ //return ; } List Product2Selected = new List(); Map MidMap = new Map(); //经销商在库数据 List countDel = [ SELECT Id,Bar_Code__c, Name,Inventory_date__c, Consumable_Product__c, Consumable_Product__r.Asset_Model_No__c, Recordtypeid,Box_Piece__c, hospitalSpecialOffer__c, promotionorder__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = true AND Dealer_Shipment__c = false AND Dealer_Saled__c = false AND Dealer_Returned__c = false AND Lose_Flag__c = false AND Cancellation_Flag__c = false AND Bar_Code__c !=null AND Isoverdue__c = 1 AND Arrive_Owner_Work_Location__c = :userWorkLocation AND Dealer_Info_text__c = :accountName]; if(ESetId== NULL || ESetId==''){ //获取经销商默认的一个合同 List contract = [SELECT id,Name,State_Master__c,State_Master__r.Name FROM Account WHERE ParentId = :accountid AND Contact_Type__c like :agencyProType1 //lt 20230517 安徽两票制 add 1 AND Contract_Decide_Start_Date__c <= :Date.Today() AND Contract_Decide_End_Date__c >= :Date.Today() AND OSH_Dealer__c =: OSHFLG //lt 20230517 安徽两票制 add ]; if(contract.size() == 1){ contractName = contract[0].Name; contractId = contract[0].Id; } editDelCommitBtnDisabled = true; List DealerProductId = new List(); soql = this.makeSoql('','','','','',false,DealerProductId); size = Integer.valueOf(System.Label.orderdetLimitsize); initStandardController(); product2Selected = Database.query(soql); System.debug('product2Selected.size() = ' + product2Selected.size()); for (Integer i = 0; i < product2Selected.size(); i++) { consumableorderdetailsRecords.add(new ConsumableorderdetailsInfo(product2Selected[i])); MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); } //只有在协议订货时会走这个for循环 其他两种订货模式都走的searchorderdetails方法 if (String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))) { for(Integer i = 0 ; i< countDel.size();i++){ if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) { if(MidMap.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } } //然后循环CountDel去修改map里的allnumber /*if(MidMap.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); }*/ } consumableorderdetailsRecords = new List(); //经销商定价 计算 for(ConsumableorderdetailsInfo bss : MidMap.values()){ bss.sortBy = this.sortOrderAsc; bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c); bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; if(DealerProductMap.containsKey(bss.Prod.Id)){ bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c; bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c; bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c; } consumableorderdetailsRecords.add(bss); } consumableorderdetailsRecords.sort(); if (methodType != null && methodType != '' &&(methodType.equals('hospitalorder')||methodType.equals('promotionorder'))) { searchorderdetails(); isfirst = true; } getPageInfo(); /*移到上面去了 //获取经销商默认的一个合同 List contract = [SELECT id,Name,State_Master__c,State_Master__r.Name FROM Account WHERE ParentId = :accountid AND Contact_Type__c like :agencyProType AND Contract_Decide_Start_Date__c <= :Date.Today() AND Contract_Decide_End_Date__c >= :Date.Today()]; if(contract.size() == 1){ contractName = contract[0].Name; }*/ }else{ if (methodType != null && methodType.equals('hospitalorder')) { List oclist = [Select orderPattern__c,Order_ForHospital__c,Order_ForHospital__r.Name from Consumable_order__c where id = :ESetid]; if (oclist.get(0).orderPattern__c.equals('hospitalorder')) { hospitalName = oclist.get(0).Order_ForHospital__r.Name; hospitalId = oclist.get(0).Order_ForHospital__c; } } List ConsumableorderdetailsSelected = new List(); //修改 List qs = New List(); qs = [SELECT Id,Name,Order_status__c,Consumable_pdf_insert_day__c, Dealer_Info__c,Deliver_date__c,Order_Reason__c,Order_date__c, Contract_application_decision__c,Total_amount__c,Offers_Price__c,Order_effective_contact__c, Order_effective_contact__r.Name FROM Consumable_order__c WHERE Id =:ESetId AND Order_Owner_WorkLocal__c =: userWorkLocation]; if (qs.size()>0){ coc = qs[0]; decisionCode = coc.Contract_application_decision__c; contractName = coc.Order_effective_contact__r.Name; //bargainPrice = coc.Offers_Price__c; contractId = coc.Order_effective_contact__r.Id; } if(qs[0].Order_status__c == '已提交' || qs[0].Order_status__c == '批准'|| qs[0].Order_status__c == '附件上传完成'){ saveBtnDisabled = true; sorderBtnDisabled = true; editDelCommitBtnDisabled = false; } // 選択済みの明细を取得 ConsumableorderdetailsSelected = [SELECT Id, Name, Consumable_order__c, Consumable_Product__r.Name__c, Consumable_Product__c,Consumable_Product__r.Name, Consumable_Count__c,Consumable_Product__r.Category3__c,Consumable_Product__r.Category4__c,Consumable_Product__r.Category5__c, Consumable_Product__r.Intra_Trade_List_RMB__c,Consumable_Product__r.Asset_Model_No__c, Sum_of_money__c, Consumable_Product__r.SFDA_Status__c, Consumable_Product__r.Product2__r.Packing_list_manual__c, Consumable_Product__r.Product2__r.SFDA_Approbation_No__c, Consumable_Product__r.Product2__r.SFDA_Expiration_Date__c FROM Consumable_Orderdetails__c WHERE recordtypeid = :System.Label.RT_ConOrderDetail1_Order AND Consumable_order__c = :ESetId AND Order_Owner_WorkLocal__c =: userWorkLocation AND Consumable_order__r.Dealer_Info__c = :accountid ]; for (Consumable_Orderdetails__c cdc1 : ConsumableorderdetailsSelected) { orderzaikuId.add(cdc1.Consumable_Product__c); } soql = this.makeSoqlorderdet(); size = orderzaikuId.size(); initStandardController(); product2Selected = Database.query(soql); for (Integer i = 0; i < product2Selected.size(); i++) { MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); } for(Integer i = 0 ; i< countDel.size();i++){ //add by rentx 2020-12-09 if (String.isNotBlank(methodType) && methodType.equals('hospitalorder')) { if (countDel[i].hospitalSpecialOffer__c == true ) { //然后循环CountDel去修改map里的allnumber if(MidMap.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } }else if (String.isBlank(methodType) || methodType.equals('promotionorder')) { if (countDel[i].promotionorder__c == true) { if(MidMap.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } }else if (String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))) { if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) { if(MidMap.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } } //add by rentx 2020-12-09 /* //然后循环CountDel去修改map里的allnumber if(MidMap.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if(countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; }else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap.put(countDel[i].Consumable_Product__c, Jstage); }*/ } consumableorderdetailsRecords = new List(); //再把map里的值从新赋给ConsumableorderdetailsRecords for(ConsumableorderdetailsInfo bss : MidMap.values()){ //if(bss.allnumber>0){ bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c); bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; if(DealerProductMap.containsKey(bss.Prod.Id)){ bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c; bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c; bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c; } //if(bss.esd.Dealer_Custom_Price__c == null){ // bss.esd.Dealer_Custom_Price__c = bss.Prod.Intra_Trade_List_RMB__c * disCount / 100; //} //if(bss.esd.Dealer_Custom_Price__c == null){ // bss.esd.Dealer_Custom_Price__c = bss.Prod.Intra_Trade_List_RMB__c * disCount / 100; //} consumableorderdetailsRecords.add(bss); //} } for(ConsumableorderdetailsInfo ass : consumableorderdetailsRecords){ ass.sortBy = this.sortOrderAsc; for (Consumable_Orderdetails__c cdc1 : ConsumableorderdetailsSelected) { sumPrice += cdc1.Sum_of_money__c; if(ass.prod.Id == cdc1.Consumable_Product__c){ ass.check = true; ass.esd = cdc1; } } } //consumableorderdetailsRecords.sort(); //附件 attachmentinfo =[SELECT Id, Name,OwnerId FROM Attachment WHERE parentid =:ESetId ]; if(attachmentinfo.size()>0){ for (Integer i = 0; i < attachmentinfo.size(); i++) { attachmentRecoeds.add(new ConsumableorderdetailsInfo(attachmentinfo[i])); } } consumableorderdetailsRecords.sort(); getPageInfo(); } //计算库存上、下限 productLimtAndDate(); lowerRecord(); //明细排序 List upper = new List(); if(String.isNotBlank(ESetid)){ for(ConsumableorderdetailsInfo bss : consumableorderdetailsRecords){ if(bss.esd.Consumable_count__c + bss.allnumber > bss.upperlimit){ upper.add(bss.esd.Consumable_Product__r.Name__c); } } } if(upper.size() > 0){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '存在以下产品订货数量超出库存上限!')); for(Integer i = 0; i < upper.size(); i++){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, upper[i])); } } if(lower.size() > 0){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '存在以下产品订货数量低于库存下限!')); for(Integer i = 0; i < lower.size(); i++){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, lower[i])); } } //consumableorderdetailsRecords.sort(); //ConsumableorderdetailsCount = consumableorderdetailsRecords.size(); //价格查看权限 Schema.DescribeFieldResult dfr = Product2__c.Intra_Trade_List_RMB__c.getDescribe(); cansee = dfr.isAccessible(); //经销商定价查看权限 //Schema.DescribeFieldResult dealerPrice = Consumable_Orderdetails__c.Dealer_Custom_Price__c.getDescribe(); //dealerPricesee = dealerPrice.isAccessible(); AggregateResult[] categoryList = [select Count(id), Category3_text__c c3c from Product2__c WHERE Estimation_Entry_Possibility__c = '○' AND Product_Type__c like :agencyProType AND Category3_text__c != null group by Category3_text__c]; categoryOptionList = new List(); categoryOptionList.add(new SelectOption('', '-无-')); for(AggregateResult category3Search : categoryList) { String deliverycnt = String.valueOf(category3Search.get('c3c')); categoryOptionList.add(new SelectOption(deliverycnt,deliverycnt)); } category4OptionList = new List(); category4OptionList.add(new SelectOption('', '-无-')); category5OptionList = new List(); category5OptionList.add(new SelectOption('', '-无-')); } public void categoryAllload() { AggregateResult[] category4List = [select Count(id), Category4_text__c c4c from Product2__c WHERE Estimation_Entry_Possibility__c = '○' AND Product_Type__c like :agencyProType AND Category3_text__c=:category3 AND Category4_text__c != null AND Category5_text__c != null group by Category4_text__c]; category4OptionList = new List(); category4OptionList.add(new SelectOption('', '-无-')); for(AggregateResult category4Search : category4List) { String deliverycnt4 = String.valueOf(category4Search.get('c4c')); category4OptionList.add(new SelectOption(deliverycnt4,deliverycnt4)); } AggregateResult[] category5List = [select Count(id), Category5_text__c c5c from Product2__c WHERE Estimation_Entry_Possibility__c = '○' AND Product_Type__c like :agencyProType AND Category3_text__c=:category3 AND Category4_text__c != null AND Category5_text__c != null group by Category5_text__c]; category5OptionList = new List(); category5OptionList.add(new SelectOption('', '-无-')); for(AggregateResult category5Search : category5List) { String deliverycnt5 = String.valueOf(category5Search.get('c5c')); category5OptionList.add(new SelectOption(deliverycnt5,deliverycnt5)); } } public void categoryload() { AggregateResult[] category4List = [select Count(id), Category4_text__c c4c from Product2__c WHERE Estimation_Entry_Possibility__c = '○' AND Product_Type__c like :agencyProType AND Category3_text__c=:category3 AND Category4_text__c != null AND Category5_text__c != null group by Category4_text__c]; category4OptionList = new List(); category4OptionList.add(new SelectOption('', '-无-')); for(AggregateResult category4Search : category4List) { String deliverycnt4 = String.valueOf(category4Search.get('c4c')); category4OptionList.add(new SelectOption(deliverycnt4,deliverycnt4)); } AggregateResult[] category5List = [select Count(id), Category5_text__c c5c from Product2__c WHERE Estimation_Entry_Possibility__c = '○' AND Product_Type__c like :agencyProType AND Category3_text__c=:category3 AND Category4_text__c=:category4 AND Category5_text__c != null group by Category5_text__c]; category5OptionList = new List(); category5OptionList.add(new SelectOption('', '-无-')); for(AggregateResult category5Search : category5List) { String deliverycnt5 = String.valueOf(category5Search.get('c5c')); category5OptionList.add(new SelectOption(deliverycnt5,deliverycnt5)); } } // 画面初始化 public void lowerRecord() { List lowerRecord = new List(); //库存明细取得 Map midMaprecord = new Map(); List product2Selected = [SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c FROM Product2__c WHERE Pro2_Dealer_Object__c = true AND Estimation_Entry_Possibility__c = '○' ]; for (Integer i = 0; i < product2Selected.size(); i++) { lowerRecord.add(new ConsumableorderdetailsInfo(product2Selected[i])); //先把ConsumableorderdetailsRecords 做成map midMaprecord.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); } List countDel = [SELECT Id, Bar_Code__c, Name, Inventory_date__c, Consumable_Product__c, Consumable_Product__r.Asset_Model_No__c, Recordtypeid, Guarantee_period_for_products__c, Isoverdue__c, Box_Piece__c, hospitalSpecialOffer__c, promotionorder__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = true AND Dealer_Shipment__c = false AND Dealer_Saled__c = false AND Dealer_Returned__c = false AND Lose_Flag__c = false AND Bar_Code__c !=null AND Isoverdue__c = 1 AND Arrive_Owner_Work_Location__c = :userWorkLocation //AND Consumable_order_minor__r.Dealer_Info__c = :accountid AND Dealer_Info_text__c = :accountName]; for(Integer i = 0 ; i< countDel.size();i++){ //add by rentx 2020-12-09 if (String.isNotBlank(methodType) && methodType.equals('hospitalorder')) { if (countDel[i].hospitalSpecialOffer__c == true ) { //然后循环CountDel去修改map里的allnumber if(midMaprecord.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = midMaprecord.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; midMaprecord.put(countDel[i].Consumable_Product__c, Jstage); } } }else if (String.isBlank(methodType) || methodType.equals('promotionorder')) { if (countDel[i].promotionorder__c == true) { if(midMaprecord.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = midMaprecord.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } midMaprecord.put(countDel[i].Consumable_Product__c, Jstage); } } }else if (String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))) { if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) { if(midMaprecord.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = midMaprecord.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } midMaprecord.put(countDel[i].Consumable_Product__c, Jstage); } } } //add by rentx 2020-12-09 /* //然后循环CountDel去修改map里的allnumber if(midMaprecord.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = midMaprecord.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } midMaprecord.put(countDel[i].Consumable_Product__c, Jstage); }*/ } lowerRecord = new List(); //再把map里的值从新赋给ConsumableorderdetailsRecords for(ConsumableorderdetailsInfo bss : midMaprecord.values()){ //if(bss.allnumber>0){ lowerRecord.add(bss); //} } allProductLimt(lowerRecord); for(ConsumableorderdetailsInfo bss : lowerRecord){ if(bss.allnumber < bss.lowerlimit){ lower.add(bss.Prod.Name__c); } } } //库存排序 public void SortStore(){ 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; List selectedSort = new List(); List noselectedSort = new List(); for(ConsumableorderdetailsInfo ass :consumableorderdetailsRecordsview){ ass.sortBy = this.sortOrderAsc; if(ass.check == true){ selectedSort.add(ass); }else{ noselectedSort.add(ass); } } consumableorderdetailsRecordsview = new List(); if(selectedSort.size() > 0){ if(searchDone != 'searchDone'){ selectedSort.sort(); } consumableorderdetailsRecordsview.addAll(selectedSort); } if(noselectedSort.size() > 0){ noselectedSort.sort(); consumableorderdetailsRecordsview.addAll(noselectedSort); } //list分割 //listCut(); } //限制性排序 public void SortLimited(){ List reSet = new List(); Map MidMap = new Map(); List countDel = [SELECT Id,Bar_Code__c, Name,Inventory_date__c, Consumable_Product__c, Consumable_Product__r.Asset_Model_No__c, Recordtypeid,Box_Piece__c, hospitalSpecialOffer__c, promotionorder__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = true AND Dealer_Shipment__c = false AND Dealer_Saled__c = false AND Dealer_Returned__c = false AND Lose_Flag__c = false AND Bar_Code__c !=null AND Arrive_Owner_Work_Location__c = :userWorkLocation //AND Consumable_order_minor__r.Dealer_Info__c = :accountid AND Dealer_Info_text__c = :accountName]; 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; // 所有产品取得 if((EsetId==null||ESetId=='')||(EsetId!=null&&ESetId!=''&&statusEdit== 'Redirect'&&searchDone=='searchDone')){ String strProd = null; for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) { //orderzaikuId.add(ass.prod.Id); if(strProd==null || strProd.length()==0){ strProd = '\'' + String.valueOf(ass.prod.Id) + '\''; } else{ strProd += ',\'' + String.valueOf(ass.prod.Id) + '\''; } } String soqll = 'SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,SFDA_Status__c,Product2__r.SFDA_Approbation_No__c,Product2__r.SFDA_Expiration_Date__c,Product2__r.Packing_list_manual__c,Category3__c,Category4__c,Category5__c FROM Product2__c WHERE Estimation_Entry_Possibility__c = \'○\' '; //update by rentx 2020-12-31 start // soqll += ' AND Pro2_Dealer_Object__c = true AND Intra_Trade_List_RMB__c > 0 ' ; if(agencyProType == 'ET'){ soqll += ' AND Pro2_Dealer_Object__c = true'; } if(agencyProType == 'ENG'){ soqll += ' AND Pro2_Dealer_ENG__c = true'; } soqll += ' AND Intra_Trade_List_RMB__c > 0 ' ; //update by rentx 2020-12-31 end soqll += ' AND Id IN (' + strProd + ')'; soqll += ' order by ' + this.columus_no[Integer.valueOf(this.sortKey)] + ' ' + (this.sortOrderAsc == true ? 'asc nulls first' : 'desc nulls last'); /*String soql = this.makeSoql(category1,category_Goods,category3,category4,category5,specialCampaign,DealerProductId); soql += ' order by ' + this.columus_no[Integer.valueOf(this.sortKey)] + ' ' + (this.sortOrderAsc == true ? 'asc nulls first' : 'desc nulls last');*/ List queryList = Database.query(soqll); // 選択済みの明细を取得 Map selectedIdMap = new Map(); for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) { if(ass.check == true){ selectedIdMap.put(ass.Prod.id,ass.Prod.id); reSet.add(ass); } } for (Integer i = 0; i < queryList.size(); i++) { if (selectedIdMap.containsKey(queryList[i].Id)) { // 跳过已经选择的消耗品明细 continue; } else { // 未选择的消耗品明细 MidMap.put(queryList[i].Id, new ConsumableorderdetailsInfo(queryList[i])); } } consumableorderdetailsRecordsview = new List(); consumableorderdetailsRecordsview = reSet; for(Integer i = 0 ; i< countDel.size();i++){ if (String.isNotBlank(methodType) && methodType.equals('hospitalorder')) { if (countDel[i].hospitalSpecialOffer__c == true) { //然后循环CountDel去修改map里的allnumber if(MidMap.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } }else if (String.isBlank(methodType) || methodType.equals('promotionorder')) { if (countDel[i].promotionorder__c == true) { if(MidMap.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } }else if (String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))) { if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) { if(MidMap.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } } //然后循环CountDel去修改map里的allnumber /*if(MidMap.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber + 1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece + 1 ; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); }*/ } //把map里的值从新赋给ConsumableorderdetailsRecords for(ConsumableorderdetailsInfo bss : MidMap.values()){ if(selectedIdMap.containsKey(bss.Prod.Id)){ continue; }else{ if(DealerProductMap.containsKey(bss.Prod.Id)){ bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c; bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c; bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c; } bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c); bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; //if(bss.esd.Dealer_Custom_Price__c == null){ // bss.esd.Dealer_Custom_Price__c = bss.Prod.Intra_Trade_List_RMB__c * disCount / 100; //} consumableorderdetailsRecordsview.add(bss); } } }else if(searchDone!='searchDone'){ String strProd = null; for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) { //orderzaikuId.add(ass.prod.Id); if(strProd==null || strProd.length()==0){ strProd = '\'' + String.valueOf(ass.prod.Id) + '\''; } else{ strProd += ',\'' + String.valueOf(ass.prod.Id) + '\''; } } String SqlOrder = 'SELECT Id, Name, Consumable_order__c, Consumable_Product__r.Name__c,'; SqlOrder += ' Consumable_Product__c,Consumable_Product__r.Name,'; SqlOrder += 'Consumable_Count__c,Consumable_Product__r.Intra_Trade_List_RMB__c,'; SqlOrder += 'Consumable_Product__r.Asset_Model_No__c,Sum_of_money__c, '; SqlOrder += 'Consumable_Product__r.SFDA_Status__c,Consumable_Product__r.Product2__r.Packing_list_manual__c,Consumable_Product__r.Product2__r.SFDA_Approbation_No__c,'; SqlOrder += 'Consumable_Product__r.Product2__r.SFDA_Expiration_Date__c,Consumable_Product__r.Category3__c,Consumable_Product__r.Category4__c,Consumable_Product__r.Category5__c '; SqlOrder += 'FROM Consumable_orderdetails__c WHERE recordtypeid != \'' + System.Label.RT_ConOrderDetail1_Sale +'\' AND Consumable_order__c = \''+ESetId+'\''; SqlOrder += ' AND Order_Owner_WorkLocal__c = \'' + userWorkLocation + '\' '; SqlOrder += ' AND Consumable_Product__c IN (' + strProd + ')'; SqlOrder += ' order by ' + this.columus[Integer.valueOf(this.sortKey)] + ' ' + (this.sortOrderAsc == true ? 'asc nulls first' : 'desc nulls last'); List queryList = Database.query(SqlOrder); // 選択済みの明细を取得 Map selectedIdMap = new Map(); for (Integer i = 0; i < queryList.size(); i++) { // 未选择的消耗品明细 //reSet.add(new ConsumableorderdetailsInfo(queryList[i])); MidMap.put(queryList[i].Consumable_Product__c, new ConsumableorderdetailsInfo(queryList[i])); } //consumableorderdetailsRecordsview = reSet; for(Integer i = 0 ; i< countDel.size();i++){ if (String.isNotBlank(methodType) && methodType.equals('hospitalorder')) { if (countDel[i].hospitalSpecialOffer__c == true) { //然后循环CountDel去修改map里的allnumber if(MidMap.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } }else if (String.isBlank(methodType) || methodType.equals('promotionorder')) { if (countDel[i].promotionorder__c == true) { if(MidMap.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } }else if (String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))) { if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) { if(MidMap.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } } //然后循环CountDel去修改map里的allnumber /*if(MidMap.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber + 1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece + 1 ; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); }*/ } consumableorderdetailsRecordsview = new List(); //把map里的值从新赋给ConsumableorderdetailsRecords for(ConsumableorderdetailsInfo bss : MidMap.values()){ /*if(selectedIdMap.containsKey(bss.Prod.Id)){ continue; }else{*/ if(DealerProductMap.containsKey(bss.Prod.Id)){ bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c; bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c; bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c; } bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c); bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; //if(bss.esd.Dealer_Custom_Price__c == null){ // bss.esd.Dealer_Custom_Price__c = bss.Prod.Intra_Trade_List_RMB__c * disCount / 100; //} consumableorderdetailsRecordsview.add(bss); //} } } productLimtAndDateView(); //for (Integer i = 0; i < consumableorderdetailsRecordsview.size(); i++) { // if(consumableorderdetailsRecordsview[i].esd.Dealer_Custom_Price__c == null){ // consumableorderdetailsRecordsview[i].esd.Dealer_Custom_Price__c = consumableorderdetailsRecordsview[i].Prod.Intra_Trade_List_RMB__c * disCount / 100; // } //} //list分割 //listCut(); } //库存上下限 public void productLimtAndDateView (){ String nowName = null, nowRightAsstModelNo = null; Map productLimt = new Map(); for(Integer i = 0; i < proLimitAndDate.size(); i++){ nowName = proLimitAndDate[i]; if( nowName.indexOf( '|') >= 0) { nowRightAsstModelNo = nowName.subString( 0, nowName.indexOf( '|')); nowName = nowName.subString( nowName.indexOf( '|')+1); } productLimt.put(nowRightAsstModelNo, nowName); } for(ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview){ if(productLimt.containsKey(ass.Prod.Asset_Model_No__c)){ ass.lowerlimit = decimal.valueOf(productLimt.get(ass.Prod.Asset_Model_No__c).subString(0, productLimt.get(ass.Prod.Asset_Model_No__c).indexOf( '|'))); ass.upperlimit = decimal.valueOf(productLimt.get(ass.Prod.Asset_Model_No__c).subString(productLimt.get(ass.Prod.Asset_Model_No__c).indexOf( '|')+1)); } } } //库存上下限 public void productLimtAndDate (){ String nowName = null, nowRightAsstModelNo = null; Map productLimt = new Map(); for(Integer i = 0; i < proLimitAndDate.size(); i++){ nowName = proLimitAndDate[i]; if( nowName.indexOf( '|') >= 0) { nowRightAsstModelNo = nowName.subString( 0, nowName.indexOf( '|')); nowName = nowName.subString( nowName.indexOf( '|')+1); } productLimt.put(nowRightAsstModelNo, nowName); } for(ConsumableorderdetailsInfo ass : consumableorderdetailsRecords){ if(productLimt.containsKey(ass.Prod.Asset_Model_No__c)){ ass.lowerlimit = decimal.valueOf(productLimt.get(ass.Prod.Asset_Model_No__c).subString(0, productLimt.get(ass.Prod.Asset_Model_No__c).indexOf( '|'))); ass.upperlimit = decimal.valueOf(productLimt.get(ass.Prod.Asset_Model_No__c).subString(productLimt.get(ass.Prod.Asset_Model_No__c).indexOf( '|')+1)); } } } //全部库存上下限 private void allProductLimt (List lowerRecord) { String nowName = null, nowRightAsstModelNo = null; Map productLimt = new Map(); for(Integer i = 0; i < proLimitAndDate.size(); i++){ nowName = proLimitAndDate[i]; if( nowName.indexOf( '|') >= 0) { nowRightAsstModelNo = nowName.subString( 0, nowName.indexOf( '|')); nowName = nowName.subString( nowName.indexOf( '|')+1); } productLimt.put(nowRightAsstModelNo, nowName); } for(ConsumableorderdetailsInfo ass : lowerRecord){ if(productLimt.containsKey(ass.Prod.Asset_Model_No__c)){ ass.lowerlimit = decimal.valueOf(productLimt.get(ass.Prod.Asset_Model_No__c).subString(0, productLimt.get(ass.Prod.Asset_Model_No__c).indexOf( '|'))); ass.upperlimit = decimal.valueOf(productLimt.get(ass.Prod.Asset_Model_No__c).subString(productLimt.get(ass.Prod.Asset_Model_No__c).indexOf( '|')+1)); } } } // 检索 public void searchConsumableorderdetails() { searchDone = 'searchDone'; this.sortKey = '1'; this.preSortKey = '1'; this.sortOrderAsc = false; this.sortOrder = new String[7]; this.sortOrder = new String[]{' ',' ',' ',' ','↓','','',''}; Map selectedIdMap = new Map(); List derdetailsRecords = new List(); Map MidMap = new Map(); List reSet = new List(); List countDel = [SELECT Id, Bar_Code__c, Name, Inventory_date__c, Consumable_Product__c, Consumable_Product__r.Asset_Model_No__c, Recordtypeid, Box_Piece__c, //add by rentx 2020-12-09 hospitalSpecialOffer__c, promotionorder__c //add by rentx 2020-12-09 FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = true AND Dealer_Shipment__c = false AND Dealer_Saled__c = false AND Dealer_Returned__c = false AND Lose_Flag__c = false AND Bar_Code__c !=null AND Arrive_Owner_Work_Location__c = :userWorkLocation //AND Consumable_order_minor__r.Dealer_Info__c = :accountid AND Dealer_Info_text__c = :accountName]; List product2Selected = new List(); consumableorderdetailsRecords = new List(); //consumableorderdetailsRecords = reSet; soql = this.makeSoql(category1,category_Goods,category3,category4,category5,specialCampaign,DealerProductId); size = Integer.valueOf(System.Label.orderdetLimitsize); initStandardController(); product2Selected = Database.query(soql); for (Integer i = 0; i < product2Selected.size(); i++) { MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); } for(Integer i = 0 ; i< countDel.size();i++){ //然后循环CountDel去修改map里的allnumber if (String.isNotBlank(methodType) && methodType.equals('hospitalorder')) { if (countDel[i].hospitalSpecialOffer__c == true) { if(MidMap.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } }else if (String.isBlank(methodType) || methodType.equals('promotionorder')) { if (countDel[i].promotionorder__c == true) { if(MidMap.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } }else if (String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))) { if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) { if(MidMap.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } } /*if(MidMap.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap.put(countDel[i].Consumable_Product__c, Jstage); }*/ } //再把map里的值从新赋给ConsumableorderdetailsRecordsa0l0l0000000byXAAQ for(ConsumableorderdetailsInfo bss : MidMap.values()){ if(selectedIdMap.containsKey(bss.Prod.id)){ continue; }else{ if(DealerProductMap.containsKey(bss.Prod.Id)){ bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c; bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c; bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c; } bss.sortBy = this.sortOrderAsc; bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c); bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; consumableorderdetailsRecords.add(bss); } } //consumableorderdetailsRecords.addAll(derdetailsRecords); consumableorderdetailsRecords.sort(); productLimtAndDate(); //for (Integer i = 0; i < consumableorderdetailsRecords.size(); i++) { // if(consumableorderdetailsRecords[i].esd.Dealer_Custom_Price__c == null){ // consumableorderdetailsRecords[i].esd.Dealer_Custom_Price__c = consumableorderdetailsRecords[i].Prod.Intra_Trade_List_RMB__c * disCount / 100; // } //} getPageInfo(); this.sortKey = '1'; this.preSortKey = '1'; this.sortOrderAsc = false; this.sortOrder = new String[7]; this.sortOrder = new String[]{' ',' ',' ', '','','','',''}; cate1ForSort = category1; // 显示数据条数信息 makeMessage(); } //add by rentx 2020-12-03 start ===================================================================================================================== //医院--检索 public void searchorderdetails(){ String soql = 'SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,SFDA_Status__c,Product2__r.SFDA_Approbation_No__c,Product2__r.SFDA_Expiration_Date__c,Product2__r.Packing_list_manual__c,Category3__c,Category4__c,Category5__c FROM Product2__c WHERE Estimation_Entry_Possibility__c = \'○\' '; if (methodType.equals('hospitalorder')) { //医院id 有值 List hplist = [select id,product__c from hospitalprice__c where account__c = :accountid AND hospital__c = :hospitalId]; if (hplist != null && hplist.size() > 0) { List hpids = new List(); for (hospitalprice__c hc : hplist) { hpids.add(hc.product__c); } if (hpids != null && hpids.size() > 0) { soql += ' AND Id in : hpids '; } }else{ //该医院下没有符合医院特价的产品 soql += ' AND Id = null '; } }else if (methodType.equals('promotionorder')) { List dpclist =[select Id,Dealer_Product2__c from Dealer_Product__c where Dealer_Contact__c = :contractId AND (Special_Discount__c <> null or Special_Campaign_Price__c <> null)]; if (dpclist != null && dpclist.size() > 0) { String ids = '('; for (Dealer_Product__c hc : dpclist) { hpids.add(hc.Dealer_Product2__c); ids += '\''+ hc.Dealer_Product2__c+'\','; } ids = ids.substring(0,ids.length()-1)+')'; if (hpids != null && hpids.size() > 0) { // soql += ' AND Id in : hpids '; soql += ' AND Id in '+ids; } }else{ //该经销商下没有促销价格的产品 soql += ' AND Id = null '; } } size = Integer.valueOf(System.Label.orderdetLimitsize); initStandardController(); List product2Selected = new List(); Map MidMap = new Map(); Map selectedIdMap = new Map(); consumableorderdetailsRecords = new List(); product2Selected = Database.query(soql); for (Integer i = 0; i < product2Selected.size(); i++) { MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); } List countDel = [SELECT Id, Bar_Code__c, Name, Inventory_date__c, Consumable_Product__c, Consumable_Product__r.Asset_Model_No__c, Recordtypeid, Box_Piece__c, hospitalSpecialOffer__c, promotionorder__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = true AND Dealer_Shipment__c = false AND Dealer_Saled__c = false AND Dealer_Returned__c = false AND Lose_Flag__c = false AND Bar_Code__c !=null AND Arrive_Owner_Work_Location__c = :userWorkLocation //AND Consumable_order_minor__r.Dealer_Info__c = :accountid AND Dealer_Info_text__c = :accountName]; for(Integer i = 0 ; i< countDel.size();i++){ if (methodType.equals('hospitalorder')) { if (countDel[i].hospitalSpecialOffer__c == true ) { //然后循环CountDel去修改map里的allnumber if(MidMap.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } }else if (methodType.equals('promotionorder')) { if (countDel[i].promotionorder__c == true ) { //然后循环CountDel去修改map里的allnumber if(MidMap.containsKey(countDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c); if (countDel[i].Box_Piece__c == '盒'){ Jstage.allnumber = Jstage.allnumber+1 ; } else{ Jstage.allnumber_piece = Jstage.allnumber_piece+1 ; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap.put(countDel[i].Consumable_Product__c, Jstage); } } } } //再把map里的值从新赋给ConsumableorderdetailsRecordsa0l0l0000000byXAAQ for(ConsumableorderdetailsInfo bss : MidMap.values()){ if(selectedIdMap.containsKey(bss.Prod.id)){ continue; }else{ if(DealerProductMap.containsKey(bss.Prod.Id)){ bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c; bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c; bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c; } bss.sortBy = this.sortOrderAsc; bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c); bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; consumableorderdetailsRecords.add(bss); } } consumableorderdetailsRecords.sort(); productLimtAndDate(); getPageInfoForHos(); this.sortKey = '1'; this.preSortKey = '1'; this.sortOrderAsc = false; this.sortOrder = new String[7]; this.sortOrder = new String[]{' ',' ',' ', '','','','',''}; cate1ForSort = category1; // 显示数据条数信息 noOfRecords = consumableorderdetailsRecords.size(); if (isfirst) { makeMessage(); } } //用户切换医院时取消选中的产品 private List getPageInfoForHos(){ List reSet = new List(); Map selectedIdMap = new Map(); consumableorderdetailsRecordsview = new List(); if (editAble){ consumableorderdetailsRecordsview = reSet; } Integer pagestartNo = (con.getPageNumber() * size)-size; Integer pageendNo = (con.getPageNumber() * size)>noOfRecords? noOfRecords:(con.getPageNumber() * size-1); Integer addNo = 0; for(Integer i = pagestartNo; i < consumableorderdetailsRecords.size(); i++){ Consumable_Orderdetails__c orderdetails1 = new Consumable_Orderdetails__c(); if(selectedIdMap.containsKey(consumableorderdetailsRecords[i].Prod.Id)){ addNo++; //continue; }else if(consumableorderdetailsRecordsview.size() >= pageLimit + size){ break; }else{ if(consumableorderdetailsRecords[i].check == false){ consumableorderdetailsRecords[i].esd = orderdetails1; } consumableorderdetailsRecordsview.add(consumableorderdetailsRecords[i]); addNo++; } if(addNo >= size)break; } return consumableorderdetailsRecordsview; } //add by rentx 2020-12-03 end ===================================================================================================================== //特价 public void OffersPrice(){ edoffersPrice = true; } //得到促销产品Id private List getDealerProductId(){ List ProductId = new List(); Map DealerProductIdMap = new Map(); Date dateToday = Date.today(); List DealerProductList = [select Id, Name, Dealer_Product2__c, Special_Campaign_Price__c, Campaign_StartDate__c, Campaign_EndDate__c, Dealer_Contact__c, OrderGoods_Limit__c from Dealer_Product__c where Dealer_Contact__c in :contactDealer and Campaign_StartDate__c <= :dateToday and Campaign_EndDate__c >= :dateToday and Special_Campaign_Price__c != null ]; for(Dealer_Product__c dealerProduct : DealerProductList){ if(DealerProductIdMap.containsKey(dealerProduct.Dealer_Product2__c)){ continue; }else{ ProductId.add(dealerProduct.Dealer_Product2__c); DealerProductIdMap.put(dealerProduct.Dealer_Product2__c, dealerProduct.Dealer_Product2__c); } } return ProductId; } private String makeSoql(String CateName,String CateCode,String Category3,String Category4,String Category5,Boolean specialCampaign,List DealerProductId){ String soql = 'SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,SFDA_Status__c,Product2__r.SFDA_Approbation_No__c,Product2__r.SFDA_Expiration_Date__c,Product2__r.Packing_list_manual__c,Category3__c,Category4__c,Category5__c FROM Product2__c WHERE Estimation_Entry_Possibility__c = \'○\' '; // add begin ================================================================================================ if(methodType != null && methodType.equals('hospitalorder')){ //如果是医院特价 //1.判断 医院id是否有值 如果有值 则根据医院id去 医院特价表中获取产品id //医院id 有值 if (hospitalId == null || hospitalId == '') { soql += ' and id = null '; ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '请选择医院')); }else{ List hplist = [select id,product__c from hospitalprice__c where account__c = :accountid AND hospital__c = :hospitalId]; if (hplist != null && hplist.size() > 0) { hpids = new List(); for (hospitalprice__c hc : hplist) { hpids.add(hc.product__c); } if (hpids != null && hpids.size() > 0) { soql += ' AND Id in : hpids '; } }else{ //该医院下没有符合医院特价的产品 soql += ' AND Id = null '; return soql; } } } //促销订货 if(methodType != null && methodType.equals('promotionorder')){ if (contractId == null || contractId == '') { soql += ' and id = null '; ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '请选择合同')); }else{ //1.查询所有经销商产品 List dpclist =[select Id,Dealer_Product2__c from Dealer_Product__c where Dealer_Contact__c = :contractId AND (Special_Discount__c <> null or Special_Campaign_Price__c <> null)]; if (dpclist != null && dpclist.size() > 0) { hpids = new List(); for (Dealer_Product__c hc : dpclist) { hpids.add(hc.Dealer_Product2__c); } if (hpids != null && hpids.size() > 0) { soql += ' AND Id in : hpids '; } }else{ //该经销商下没有促销价格的产品 soql += ' AND Id = null '; return soql; } } } //add end =================================================================================================== if(!String.isBlank(CateName)){ soql += ' AND (Name__c like \'%' + String.escapeSingleQuotes(CateName.replaceAll('%', '\\%')) + '%\' or Asset_Model_No__c like \'%' + String.escapeSingleQuotes(CateName.replaceAll('%', '\\%')) + '%\')'; }if(!String.isBlank(Category3)){ soql += ' AND Category3__c = \'' + Category3 + '\''; }if(!String.isBlank(Category4)){ soql += ' AND Category4__c = \'' + Category4 + '\''; }if(!String.isBlank(Category5)){ soql += ' AND Category5__c = \'' + Category5 + '\''; } // if(specialCampaign){ // soql += ' AND Id in :DealerProductId'; // } if(agencyProType == 'ET'){ soql += ' AND Pro2_Dealer_Object__c = true'; } if(agencyProType == 'ENG'){ soql += ' AND Pro2_Dealer_ENG__c = true'; } //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'agencyProType ' + agencyProType)); soql += ' AND Intra_Trade_List_RMB__c > 0 ' ; System.debug('soql +++++++++++ ' + soql ); return soql; } private String makeSoqlorderdet(){ String sqlTail = '(\''; for(Integer i = 0 ; i< orderzaikuId.size();i++){ if(i 0){ soql += ' AND Id in' + sqlTail; } return soql; } // 编辑按钮 public PageReference setEditAble(){ statusEdit = 'Redirect'; List oclist = [Select orderPattern__c from Consumable_order__c where id = :ESetid]; // PageReference ref = new Pagereference('/apex/Consumable?ESetid='+ESetid+'&KeyWords='+statusEdit); PageReference ref = new Pagereference('/apex/Consumable?ESetid='+ESetid+'&KeyWords='+statusEdit+'&type='+oclist.get(0).orderPattern__c); ref.setRedirect(true); return ref; } // 再申请 public PageReference backOrder(){ statusEdit = 'Redirect'; returnOrder = true; List oclist = [Select orderPattern__c from Consumable_order__c where id = :ESetid]; PageReference ref = new Pagereference('/apex/Consumable?ESetid='+ESetid+'&KeyWords='+statusEdit+'&type='+oclist.get(0).orderPattern__c); // PageReference ref = new Pagereference('/apex/Consumable?ESetid='+ESetid+'&KeyWords='+statusEdit); ref.setRedirect(true); return ref; } public PageReference FilesUpload(){ PageReference ref = new Pagereference('/p/attach/NoteAttach?pid='+ESetid+'&retURL=%2F' + '/Consumable?ESetid=' +ESetid); ref.setRedirect(true); return ref; } //删除按钮 public PageReference DelConsumable(){ Consumable_order__c cord = new Consumable_order__c(Id = ESetId); List orderdetails1 = [SELECT Id from Consumable_Orderdetails__c WHERE Consumable_order__c = :EsetId]; try { //主従ではない可能性があるので delete orderdetails1; delete cord; return returnOrderPage(); } catch (Exception e) { ApexPages.addMessages(e); return null; } } // 返回订货页面 public PageReference returnOrderPage(){ PageReference ref = new Pagereference('/ConsumableOrderManage'); ref.setRedirect(true); return ref; } // 提交按钮 public PageReference Sorder() { Savepoint sp = Database.setSavepoint(); Map prodMap = new Map(); Consumable_order__c P = new Consumable_order__c(); P = new Consumable_order__c(); p.Id=ESetId; p.Order_date__c = Date.today(); p.Order_status__c = '附件上传完成'; for(Consumable_Orderdetails__c cod1 : [SELECT Consumable_product__r.Product2__c, Consumable_product__r.Name__c FROM Consumable_Orderdetails__c WHERE Consumable_order__c = :ESetId]){ prodMap.put(cod1.Consumable_product__r.Product2__c, cod1.Consumable_product__r.Name__c); } //String strRet = OpportunityWebService.checkProRegisterDecide(prodMap, accountid, ''); //if(strRet != 'OK'){ // coc.addError(strRet); // return null; //} // GZW 提交产品无效 出错误消息 System.debug(prodMap); Map chkMap = OpportunityWebService.MapCheckProRegisterDecide(prodMap, accountid, ''); System.debug(chkMap); if(chkMap.size() > 0){ if(chkMap.containsKey('agency')){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '第一经销商没有有效的医疗器械经营许可证。')); } for(String proId : prodMap.keySet()){ if(chkMap.containsKey(proId)){ if(chkMap.get(proId) == '1'){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '产品 ' + prodMap.get(proId) + ' 没有有效的注册证。')); }else if(chkMap.get(proId) == '2'){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '产品 ' + prodMap.get(proId) + ' 超过经销商经营范围。')); } } } return null; } try{ update p; }catch(Exception e){ ApexPages.addmessages(e); } try { Approval.ProcessSubmitRequest psr = new Approval.ProcessSubmitRequest(); psr.setObjectId(ESetId); Approval.ProcessResult submitResult = Approval.process(psr); return returnOrderPage(); } catch (Exception e) { Database.rollback(sp); return null; } } // 打印订单 public PageReference printConsumable(){ //PrintConsumblePDF PageReference ref = new Pagereference('/PrintConsumblePDF?ESetid='+ESetid); return ref; } // 驳回订单copy public PageReference ordrCopy() { ESetId = ''; return save(); } /* // 保存按钮 public PageReference save() { Map dealerPDiscountMap = new Map(); List DealerProductList = [select Id, Name, Dealer_Product2__c, Special_Campaign_Price__c, Campaign_StartDate__c, Campaign_EndDate__c, Dealer_Contact__c, Special_Discount__c, OrderGoods_Limit__c from Dealer_Product__c where Dealer_Contact__c in :contactDealer AND Special_Discount__c <> null ]; for(Dealer_Product__c dealerProduct: DealerProductList){ dealerPDiscountMap.put('' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c,dealerProduct.Special_Discount__c); } //经销商合同判断 if(String.isEmpty(contractName)){ coc.Order_effective_contact__c.addError('请选择合同'); return null; } List contract = [select Id,Name,Contract_Department_Class__c,Contract_Quote_Decide_Flag__c from account WHERE Name = :contractName AND Contract_Decide_Start_Date__c <= :Date.Today() AND Contract_Decide_End_Date__c >= :Date.Today() and Contact_Type__c like :agencyProType and Agent_Ref__c =:accountid]; if(contract.size() <= 0){ coc.Order_effective_contact__c.addError('不存在的合同,请重新确认。'); return null; }else{ //if(contract[0].Contract_Department_Class__c != 'ET'){ // coc.Order_effective_contact__c.addError('合同担当科室分类不是ET,请重新确认。'); // return null; //} if(String.isEmpty(contract[0].Contract_Quote_Decide_Flag__c)){ coc.Order_effective_contact__c.addError('合同无效,请重新确认。'); return null; } } //取经销商合同折扣 List at = [SELECT id,Name,State_Master__c,State_Master__r.Name,Sales_Section__c,Dealer_discount__c FROM Account WHERE Name = :contractName and Contact_Type__c like :agencyProType AND Contract_Decide_Start_Date__c <= :Date.Today() AND Contract_Decide_End_Date__c >= :Date.Today()]; if(at.size() > 0 && at[0].Dealer_discount__c != null){ disCount = at[0].Dealer_discount__c; }else{ disCount = 100; } Integer FLG = 0; Integer Count = 0; for(ConsumableorderdetailsInfo CheckCount : consumableorderdetailsRecordsview) { FLG = FLG + 1; if(CheckCount.check == false){ Count = Count + 1; } if(CheckCount.check == true){ if(CheckCount.esd.Consumable_Count__c == null||CheckCount.esd.Consumable_Count__c==0){ //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '请输入订货数量')); CheckCount.esd.Consumable_Count__c.addError('请输入采购数量'); return null; } //else if(CheckCount.esd.Dealer_Custom_Price__c == null){ // CheckCount.esd.Dealer_Custom_Price__c.addError('请确认产品定价'); // return null; //} if(CheckCount.orderGoods_Limit > 0 && math.mod(Integer.valueOf(CheckCount.esd.Consumable_Count__c),Integer.valueOf(CheckCount.orderGoods_Limit)) > 0){ CheckCount.esd.Consumable_Count__c.addError('请输入促销数量的倍数'); return null; } } } if(Count == FLG){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '请选择所需消耗品')); return null; } Consumable_order__c P = new Consumable_order__c(); List Ins = New List(); //新建订单时 Savepoint sp = Database.setSavepoint(); try{ if(String.isBlank(ESetId)){ Integer i = 1; Integer Roll = 0; p.Name = '*'; p.Order_status__c = '草案中'; p.Dealer_Info__c = accountid; p.Order_ProType__c = agencyProType; p.Offers_Price__c = coc.Offers_Price__c; p.Order_date__c = coc.Order_date__c; p.Order_effective_contact__c = contract[0].Id; p.Order_Reason__c = coc.Order_Reason__c; p.RecordTypeid = System.Label.RT_ConOrder_Order; //p.Order_reason_details__c = coc.Order_reason_details__c; p.Overrule_order__c = coc.Id; try{ insert p; } catch (Exception e) { ApexPages.addMessages(e); } List Consumable_order = [SELECT Name FROM Consumable_order__c WHERE id =:p.id]; //ESetId = p.id; for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) { Roll = Roll+1; if(ass.check == true){ if(ass.esd.Consumable_Count__c == null||ass.esd.Consumable_Count__c==0){ //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '请输入订货数量')); ass.esd.Consumable_Count__c.addError('请输入采购数量'); return null; } else{ if(Roll==(FLG-Count)){ } Consumable_Orderdetails__c InsAfterDel = new Consumable_Orderdetails__c(); String str = string.valueOf(i); if(str.length() == 1){ str = '0' + str; } InsAfterDel.Name = Consumable_order[0].Name + '-'+ str; InsAfterDel.Consumable_Count__c = ass.esd.Consumable_Count__c; InsAfterDel.Consumable_order__c = p.id; InsAfterDel.Consumable_Product__c = ass.Prod.id; InsAfterDel.Box_Piece__c = '盒'; //InsAfterDel.Sterilization_limit__c = Date.today(); if(DealerProductMap.containsKey(ass.Prod.Id)){ InsAfterDel.Intra_Trade_List_RMB__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c; InsAfterDel.Purchase_Unitprtprice_From__c = '促销'; InsAfterDel.Special_Campaign_Price__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c; }else if(dealerPDiscountMap.containsKey(''+ contract[0].Id + ass.Prod.Id)){ InsAfterDel.Intra_Trade_List_RMB__c =ass.Prod.Intra_Trade_List_RMB__c * dealerPDiscountMap.get(''+ contract[0].Id + ass.Prod.Id) / 100; }else{ InsAfterDel.Intra_Trade_List_RMB__c =ass.Prod.Intra_Trade_List_RMB__c * disCount / 100; } //InsAfterDel.Asset_Model_No__c = ass.Prod.Asset_Model_No__c; //InsAfterDel.Sum_of_money__c = ass.esd.Consumable_Count__c * ass.esd.Dealer_Custom_Price__c; InsAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail1_Order; //InsAfterDel.Consumable_principal__c = p.id; //InsAfterDel.Dealer_Custom_Price__c = ass.esd.Dealer_Custom_Price__c; i++; Ins.add(InsAfterDel); } } } ESetId = p.id; } //修改之后 保存订单 else if(!String.isBlank(ESetId)){ } system.debug('Ins : ' + Ins); if(Ins.size()>0){ insert Ins; return UnabletoEdit(); } else{ List cocinfo = New List(); cocinfo = [SELECT Id,Name,Order_status__c,Dealer_Info__c, Deliver_date__c,Order_Reason__c,Offers_Price__c FROM Consumable_order__c WHERE Id =:ESetId]; if (cocinfo.size()>0){ p = cocinfo[0]; } p.Name = coc.Name; p.Dealer_Info__c = accountid; p.Order_ProType__c = agencyProType; p.Order_date__c = coc.Order_date__c; p.Order_effective_contact__c = contract[0].Id; p.Order_Reason__c = coc.Order_Reason__c; //p.Order_reason_details__c = coc.Order_reason_details__c; if(bargainPrice != null){ p.Offers_Price__c = bargainPrice; } update p; List Consumable_order = [SELECT Name FROM Consumable_order__c WHERE id =:p.id]; List qs = New List(); qs = [SELECT Id FROM Consumable_Orderdetails__c WHERE Consumable_order__c =:ESetId AND Consumable_order__r.Dealer_Info__c = :accountid ]; if (qs.size()>0){ delete qs; } Integer i = 1; for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) { if(ass.check == true){ Consumable_Orderdetails__c InsAfterDel = new Consumable_Orderdetails__c(); if(ass.esd.Consumable_Count__c == null||ass.esd.Consumable_Count__c ==0){ ass.esd.Consumable_Count__c.addError('请输入采购数量'); return null; } //else if(ass.esd.Dealer_Custom_Price__c == null){ // ass.esd.Dealer_Custom_Price__c.addError('请输入经销商定价'); //return null; } else{ String str = string.valueOf(i); if(str.length() == 1){ str = '0' + str; } InsAfterDel.Name = Consumable_order[0].Name + '-'+ str; InsAfterDel.Consumable_Count__c = ass.esd.Consumable_Count__c; InsAfterDel.Consumable_order__c = ESetId; InsAfterDel.Consumable_Product__c = ass.Prod.id; InsAfterDel.Box_Piece__c = '盒'; //InsAfterDel.Sterilization_limit__c = Date.today(); if(DealerProductMap.containsKey(ass.Prod.Id)){ InsAfterDel.Intra_Trade_List_RMB__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c; InsAfterDel.Purchase_Unitprtprice_From__c = '促销'; InsAfterDel.Special_Campaign_Price__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c; }else if(dealerPDiscountMap.containsKey(''+ contract[0].Id + ass.Prod.Id)){ InsAfterDel.Intra_Trade_List_RMB__c =ass.Prod.Intra_Trade_List_RMB__c * dealerPDiscountMap.get(''+ contract[0].Id + ass.Prod.Id) / 100; }else{ InsAfterDel.Intra_Trade_List_RMB__c =ass.Prod.Intra_Trade_List_RMB__c * disCount / 100; } //InsAfterDel.Intra_Trade_List_RMB__c =ass.Prod.Intra_Trade_List_RMB__c; //InsAfterDel.Asset_Model_No__c = ass.Prod.Asset_Model_No__c; //InsAfterDel.Sum_of_money__c = ass.esd.Consumable_Count__c * ass.esd.Dealer_Custom_Price__c; //InsAfterDel.Dealer_Custom_Price__c = ass.esd.Dealer_Custom_Price__c; InsAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail1_Order; //InsAfterDel.Consumable_principal__c = ESetId; i++; Ins.add(InsAfterDel); } } } if(Ins.size()>0){ insert Ins; } } }catch(Exception e){ ApexPages.addMessages(e); Database.rollback(sp); return null; } return UnabletoEdit(); } */ //保存按钮 byrentx start public PageReference save(){ this.methodType = ApexPages.currentPage().getParameters().get('type'); //错误信息展示 //经销商合同判断 if(String.isEmpty(contractName)){ coc.Order_effective_contact__c.addError('请选择合同'); return null; } List contract = [select Id,Name,Contract_Department_Class__c,Contract_Quote_Decide_Flag__c from account WHERE Name = :contractName AND Id =: contractId //lt 20230517 安徽两票制 add AND Contract_Decide_Start_Date__c <= :Date.Today() AND Contract_Decide_End_Date__c >= :Date.Today() and Contact_Type__c like :agencyProType1 //lt 20230517 安徽两票制 add 1 and Agent_Ref__c =:accountid and OSH_Dealer__c =: OSHFLG //lt 20230517 安徽两票制 add ]; if(contract.size() <= 0){ coc.Order_effective_contact__c.addError('不存在的合同,请重新确认。'); return null; }else{ if(String.isEmpty(contract[0].Contract_Quote_Decide_Flag__c)){ coc.Order_effective_contact__c.addError('合同无效,请重新确认。'); return null; } } Integer FLG = 0; Integer Count = 0; //add by rentx 2020-11-25 List tpids = new List(); //add by rentx 2020-11-25 for(ConsumableorderdetailsInfo CheckCount : consumableorderdetailsRecordsview) { FLG = FLG + 1; if(CheckCount.check == false){ Count = Count + 1; } if(CheckCount.check == true){ //add by rentx 2020-11-25 tpids.add(CheckCount.Prod.Id); //add by rentx 2020-11-25 if(CheckCount.esd.Consumable_Count__c == null||CheckCount.esd.Consumable_Count__c==0){ CheckCount.esd.Consumable_Count__c.addError('请输入采购数量'); return null; } if(CheckCount.orderGoods_Limit > 0 && math.mod(Integer.valueOf(CheckCount.esd.Consumable_Count__c),Integer.valueOf(CheckCount.orderGoods_Limit)) > 0){ CheckCount.esd.Consumable_Count__c.addError('请输入促销数量的倍数'); return null; } } } if(Count == FLG){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '请选择所需消耗品')); return null; } //=======================================医院特价,有金额的话取金额 // gzw 20230419 医院特价问题修复 start // Map dealerHospitalmMap = new Map(); // // Map dealerHospitalpMap = new Map(); // List hplist = [select Id,hospital__c,mPrice__c,pPrice__c,product__c,account__c // from hospitalprice__c // where product__c in :tpids and mPrice__c <> null // ]; // for(hospitalprice__c dealerProduct: hplist){ // if (dealerProduct.mPrice__c != null ) { // dealerHospitalmMap.put('' + dealerProduct.account__c + dealerProduct.product__c,dealerProduct.mPrice__c); // } // // if (dealerProduct.pPrice__c != null) { // // dealerHospitalpMap.put('' + dealerProduct.account__c + dealerProduct.product__c,dealerProduct.pPrice__c); // // } // } Map dealerHospitalmMap = new Map(); // Map dealerHospitalpMap = new Map(); List hplist = [select Id,hospital__c,mPrice__c,pPrice__c,product__c,account__c from hospitalprice__c where product__c in :tpids and mPrice__c <> null and account__c=:accountid ]; for(hospitalprice__c dealerProduct: hplist){ if (dealerProduct.mPrice__c != null ) { dealerHospitalmMap.put('' + dealerProduct.hospital__c + dealerProduct.product__c,dealerProduct.mPrice__c); } // if (dealerProduct.pPrice__c != null) { // dealerHospitalpMap.put('' + dealerProduct.account__c + dealerProduct.product__c,dealerProduct.pPrice__c); // } } // gzw 20230419 医院特价问题修复 end //促销订货 根据经销商产品中的数据计算金额 //=======================================产品特殊折扣 Map dealerPDiscountMap = new Map(); Map dealerMPDiscountMap = new Map(); //1.获取有开始结束日的产品 Date dateToday = Date.today(); List haveDateList = [select Id, Name, Dealer_Product2__c, Special_Campaign_Price__c, Campaign_StartDate__c, Campaign_EndDate__c, Dealer_Contact__c, OrderGoods_Limit__c, Special_Discount__c from Dealer_Product__c where Dealer_Contact__c in :contactDealer and Campaign_StartDate__c <= :dateToday and Campaign_EndDate__c >= :dateToday AND (Special_Discount__c <> null or Special_Campaign_Price__c <> null) ]; //2.获取没有开始结束日的产品 List DealerProductList = [select Id, Name, Dealer_Product2__c, Special_Campaign_Price__c, Campaign_StartDate__c, Campaign_EndDate__c, Dealer_Contact__c, Special_Discount__c, OrderGoods_Limit__c from Dealer_Product__c where Dealer_Contact__c in :contactDealer AND (Special_Discount__c <> null or Special_Campaign_Price__c <> null) ]; for(Dealer_Product__c dealerProduct: DealerProductList){ //如果促销价格为null 则设置特殊折扣(百分比)到集合 if (dealerProduct.Special_Campaign_Price__c == null) { dealerPDiscountMap.put('' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c,dealerProduct.Special_Discount__c); }else{ dealerMPDiscountMap.put('' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c,dealerProduct.Special_Campaign_Price__c); } } //这样做是为了计算促销价格时 优先计算促销开始结束日不为空的产品 //如果该集合有值 则说明需要根据当前的金额或者折扣来计算 if (haveDateList!= null && haveDateList.size() > 0) { for(Dealer_Product__c dealerProduct: haveDateList){ if (dealerProduct.Special_Campaign_Price__c == null) { dealerPDiscountMap.put('' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c,dealerProduct.Special_Discount__c); dealerMPDiscountMap.remove('' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c); }else{ dealerMPDiscountMap.put('' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c,dealerProduct.Special_Campaign_Price__c); dealerPDiscountMap.remove('' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c); } } } //=======================================经销商合同折扣 List at = [SELECT id,Name,State_Master__c,State_Master__r.Name,Sales_Section__c,Dealer_discount__c FROM Account WHERE Name = :contractName AND Id =: contractId //lt 20230517 安徽两票制 add AND Contact_Type__c like :agencyProType1 //lt 20230517 安徽两票制 add 1 AND Contract_Decide_Start_Date__c <= :Date.Today() AND Contract_Decide_End_Date__c >= :Date.Today() AND OSH_Dealer__c =: OSHFLG //lt 20230517 安徽两票制 add ]; System.debug('---lt123---at.size():'+at.size()); System.debug('---lt123---at[0].Dealer_discount__c:'+at[0].Dealer_discount__c); if(at.size() > 0 && at[0].Dealer_discount__c != null){ disCount = at[0].Dealer_discount__c; }else{ disCount = 100; } Consumable_order__c P = new Consumable_order__c(); List Ins = New List(); //新建订单时 Savepoint sp = Database.setSavepoint(); try{ if(String.isBlank(ESetId)){ Integer i = 1; Integer Roll = 0; p.Name = '*'; p.Order_status__c = '草案中'; p.Dealer_Info__c = accountid; p.Order_ProType__c = agencyProType; p.Offers_Price__c = coc.Offers_Price__c; p.Order_date__c = coc.Order_date__c; p.Order_effective_contact__c = contract[0].Id; p.Order_Reason__c = coc.Order_Reason__c; p.RecordTypeid = System.Label.RT_ConOrder_Order; p.Overrule_order__c = coc.Id; if(String.isNotBlank(methodType)){ p.orderPattern__c = methodType; } insert p; List Consumable_order = [SELECT Name,orderPattern__c FROM Consumable_order__c WHERE id =:p.id]; for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) { Roll = Roll+1; if(ass.check == true){ if(ass.esd.Consumable_Count__c == null||ass.esd.Consumable_Count__c==0){ ass.esd.Consumable_Count__c.addError('请输入采购数量'); return null; } else{ Consumable_Orderdetails__c InsAfterDel = new Consumable_Orderdetails__c(); String str = string.valueOf(i); if(str.length() == 1){ str = '0' + str; } InsAfterDel.Name = Consumable_order[0].Name + '-'+ str; InsAfterDel.Consumable_Count__c = ass.esd.Consumable_Count__c; InsAfterDel.Consumable_order__c = p.id; InsAfterDel.Consumable_Product__c = ass.Prod.id; InsAfterDel.Box_Piece__c = '盒'; //协议订货 if (methodType.equals('agreementorder')) { Consumable_order[0].orderPattern__c = 'agreementorder'; InsAfterDel.Intra_Trade_List_RMB__c =ass.Prod.Intra_Trade_List_RMB__c * disCount / 100; //=====================================================================================update by rentx 2020-11-25 }else if (methodType.equals('promotionorder')) { Consumable_order[0].orderPattern__c = 'promotionorder'; //促销订货 //如果促销价格不为null 则直接使用促销价格来计算金额 if (dealerMPDiscountMap.containsKey(''+ contract[0].Id + ass.Prod.Id)) { InsAfterDel.Intra_Trade_List_RMB__c =dealerMPDiscountMap.get(''+ contract[0].Id + ass.Prod.Id); }else if ( dealerPDiscountMap.containsKey(''+ contract[0].Id + ass.Prod.Id)) { InsAfterDel.Intra_Trade_List_RMB__c =ass.Prod.Intra_Trade_List_RMB__c * dealerPDiscountMap.get(''+ contract[0].Id + ass.Prod.Id) / 100; } //=====================================================================================update by rentx 2020-11-25 }else if (methodType.equals('hospitalorder')) { //医院特价 Consumable_order[0].Order_ForHospital__c = hospitalId; Consumable_order[0].orderPattern__c = 'hospitalorder'; // gzw 20230419 医院特价问题修复 start // if (dealerHospitalmMap.containsKey(accountid + ass.Prod.Id) && dealerHospitalmMap.get(accountid + ass.Prod.Id) != null) { // //直接根据促销金额计算 // InsAfterDel.Intra_Trade_List_RMB__c = dealerHospitalmMap.get(''+ accountid + ass.Prod.Id); // } if (dealerHospitalmMap.containsKey(hospitalId + ass.Prod.Id) && dealerHospitalmMap.get(hospitalId + ass.Prod.Id) != null) { //直接根据促销金额计算 InsAfterDel.Intra_Trade_List_RMB__c = dealerHospitalmMap.get(''+ hospitalId + ass.Prod.Id); } // gzw 20230419 医院特价问题修复 end } else if(DealerProductMap.containsKey(ass.Prod.Id)){ InsAfterDel.Intra_Trade_List_RMB__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c; InsAfterDel.Purchase_Unitprtprice_From__c = '促销'; InsAfterDel.Special_Campaign_Price__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c; } InsAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail1_Order; i++; Ins.add(InsAfterDel); } } } ESetId = p.id; if (Consumable_order.size() > 0) { update Consumable_order; } } //修改之后 保存订单 if (Ins.size() > 0) { insert Ins; }else{ //修改,获取消耗品订单 List cocinfo = New List(); cocinfo = [SELECT Id,Name,Order_status__c,Dealer_Info__c, Deliver_date__c,Order_Reason__c,Offers_Price__c FROM Consumable_order__c WHERE Id =:ESetId]; if (cocinfo.size()>0){ p = cocinfo[0]; } p.Name = coc.Name; p.Dealer_Info__c = accountid; p.Order_ProType__c = agencyProType; p.Order_date__c = coc.Order_date__c; p.Order_effective_contact__c = contract[0].Id; p.Order_Reason__c = coc.Order_Reason__c; if(bargainPrice != null){ p.Offers_Price__c = bargainPrice; } update p; List Consumable_order = [SELECT Name,orderPattern__c FROM Consumable_order__c WHERE id =:p.id]; List qs = New List(); qs = [SELECT Id FROM Consumable_Orderdetails__c WHERE Consumable_order__c =:ESetId AND Consumable_order__r.Dealer_Info__c = :accountid ]; if (qs.size()>0){ delete qs; } Integer i = 1; for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) { if(ass.check == true){ Consumable_Orderdetails__c InsAfterDel = new Consumable_Orderdetails__c(); if(ass.esd.Consumable_Count__c == null||ass.esd.Consumable_Count__c ==0){ ass.esd.Consumable_Count__c.addError('请输入采购数量'); return null; }else{ String str = string.valueOf(i); if(str.length() == 1){ str = '0' + str; } InsAfterDel.Name = Consumable_order[0].Name + '-'+ str; InsAfterDel.Consumable_Count__c = ass.esd.Consumable_Count__c; InsAfterDel.Consumable_order__c = ESetId; InsAfterDel.Consumable_Product__c = ass.Prod.id; InsAfterDel.Box_Piece__c = '盒'; //协议订货 if (methodType.equals('agreementorder')) { Consumable_order[0].orderPattern__c = 'agreementorder'; InsAfterDel.Intra_Trade_List_RMB__c =ass.Prod.Intra_Trade_List_RMB__c * disCount / 100; }else if (methodType.equals('promotionorder')) { Consumable_order[0].orderPattern__c = 'promotionorder'; //促销订货 if (dealerMPDiscountMap.containsKey(''+ contract[0].Id + ass.Prod.Id)) { InsAfterDel.Intra_Trade_List_RMB__c =dealerMPDiscountMap.get(''+ contract[0].Id + ass.Prod.Id); }else if ( dealerPDiscountMap.containsKey(''+ contract[0].Id + ass.Prod.Id)) { InsAfterDel.Intra_Trade_List_RMB__c =ass.Prod.Intra_Trade_List_RMB__c * dealerPDiscountMap.get(''+ contract[0].Id + ass.Prod.Id) / 100; } }else if (methodType.equals('hospitalorder')) { Consumable_order[0].orderPattern__c = 'hospitalorder'; //医院特价 Consumable_order[0].Order_ForHospital__c = hospitalId; // gzw 20230419 医院特价问题修复 start // if (dealerHospitalmMap.containsKey(accountid + ass.Prod.Id) && dealerHospitalmMap.get(accountid + ass.Prod.Id) != null) { // //直接根据促销金额计算 // InsAfterDel.Intra_Trade_List_RMB__c = dealerHospitalmMap.get(''+ accountid + ass.Prod.Id); // } if (dealerHospitalmMap.containsKey(hospitalId + ass.Prod.Id) && dealerHospitalmMap.get(hospitalId + ass.Prod.Id) != null) { //直接根据促销金额计算 InsAfterDel.Intra_Trade_List_RMB__c = dealerHospitalmMap.get(''+ hospitalId + ass.Prod.Id); } // gzw 20230419 医院特价问题修复 end } else if(DealerProductMap.containsKey(ass.Prod.Id)){ InsAfterDel.Intra_Trade_List_RMB__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c; InsAfterDel.Purchase_Unitprtprice_From__c = '促销'; InsAfterDel.Special_Campaign_Price__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c; } // ==================================================之前的促销订货的逻辑 InsAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail1_Order; i++; Ins.add(InsAfterDel); } } } if(Ins.size()>0){ insert Ins; } } }catch(Exception e){ ApexPages.addMessages(e); Database.rollback(sp); return null; } // return null; return UnabletoEdit(); } //保存按钮 byrentx end // 返回不可编辑状态 public PageReference UnabletoEdit(){ PageReference ref = new Pagereference('/Consumable?ESetid='+ESetId+'&type='+this.methodType); ref.setRedirect(true); return ref; } // 显示数据条数信息 private void makeMessage() { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '共有' + noOfRecords + '件产品')); } // Data Bean class ConsumableorderdetailsInfo implements Comparable { public Boolean check { get; set; } public Boolean oldCheck { get; set; } public Consumable_Orderdetails__c esd { get; set; } public Product2__c Prod { get; set; } public Integer packing_list { get; set; } public Date expiration_Date { get; set; } public String approbation_No { get; set; } public Decimal allnumber { get; set; } public Decimal allnumber_piece { get; set; } public Decimal oldConsumableCount { get; set; } public Boolean canSelect { get; set; } public Attachment Concc { get; set; } public Boolean sortBy { get; set; } public Decimal upperlimit { get; set; } public Decimal lowerlimit { get; set; } public Decimal SpecialCampaignPrice { get; set; } public Decimal orderGoods_Limit { get; set; } public Date Campaign_EndDate { get; set; } // 已存产品明细 public ConsumableorderdetailsInfo(Consumable_Orderdetails__c e) { check = true; oldCheck = true; esd = e; Prod = e.Consumable_Product__r; oldConsumableCount = e.Consumable_Count__c; canSelect = true; allnumber = 0; allnumber_piece = 0; } public ConsumableorderdetailsInfo(Product2__c e) { check = false; oldCheck = false; esd = new Consumable_Orderdetails__c(); Prod = e; oldConsumableCount = null; canSelect = true; allnumber = 0; allnumber_piece = 0; } //附件 public ConsumableorderdetailsInfo(Attachment e) { Concc = e; } // 排序Consumable_order__c public Integer compareTo(Object compareTo) { ConsumableorderdetailsInfo compareToesd =(ConsumableorderdetailsInfo)compareTo; Integer returnValue = 0; if(check == true){ if(sortBy == false){ if (allnumber > compareToesd.allnumber) { returnValue = -1; } else if (allnumber < compareToesd.allnumber) { returnValue = 1; } return returnValue; }else{ if (allnumber > compareToesd.allnumber) { returnValue = 1; } else if (allnumber < compareToesd.allnumber) { returnValue = -1; } return returnValue; } //returnValue = -1; //return returnValue; }else{ if(sortBy == false){ if (allnumber > compareToesd.allnumber) { returnValue = -1; } else if (allnumber < compareToesd.allnumber) { returnValue = 1; } return returnValue; }else{ if (allnumber > compareToesd.allnumber) { returnValue = 1; } else if (allnumber < compareToesd.allnumber) { returnValue = -1; } return returnValue; } } } } }