public without sharing class LexSummonsCreatController { public static Map schemaMap = Schema.getGlobalDescribe(); /*****************検索用******************/ //经销商用户产品分类(ET、ENG) @AuraEnabled public static String agencyProType { get; set; } public static Consumable_order__c coc { get; set; } // 画view用, 可能是 出库指示单, 也有可能是到货单, 也有可能 空instance public static User localuser { get; set; } public static String category1 { get; set; } public static Integer noOfRecords { get; set; } //public String category_Goods {get ; set;} public static Boolean cansee { get; set; } public static Integer size { get; set; } //经销商定价查看权限 //public static ApexPages.StandardSetController setCon { get; set; } public static Boolean dealerPricesee { get; set; } /*****************画面初始化用********************************/ /******20160313_add**************/ public static String IdCheck { get; set; } public static Boolean editAble { get; set; } public static String statusEdit { get; set; } public static String alertMessage { get; set; } public static String SearchDone { get; set; } public static List zaikuId = new List(); public static List orderzaikuId = new List(); //附件 public static List attachmentRecoeds { get; set; } public static Boolean getExistarrive() { return (coc.Arrive_Order__c != null); } //总价格计算结果 @AuraEnabled public static Decimal sumPrice { get; set; } /******20160317_add**************/ public static String SummonsFlag { get; set; } // 新規: hidden, 更新: visible public static String category5 { get; set; } public static String category4 { get; set; } public static String category3 { get; set; } public static List categoryOptionList { get; set; } public static List category4OptionList { get; set; } public static List category5OptionList { get; set; } @AuraEnabled public static Map categoryOptionMap { get; set; } @AuraEnabled public static Map category4OptionMap { get; set; } @AuraEnabled public static Map category5OptionMap { get; set; } /*****************画面表示Bean******************/ private static List consumableorderdetailsSelectRecords = new List(); @AuraEnabled public static List pageRecords { get; set; } public static List pageRecordsLwc { get; set; } //public List> consumableorderdetailsRecordsview { get; set; } public static List consumableorderdetails2Records { get; set; } public static List consumableInvoiceRecords { get; set; } private static List consumableproductdetailsRecords = new List(); private static List attachmentinfo = new List(); public static List product2Selected = new List(); //选择产品size public static Integer consumableorderdetailsCount { get { return pageRecords == null ? 0 : pageRecords.size(); } } //消耗品明细2数量 public static Integer consumableorderdetails2Count { get { return consumableorderdetails2Records == null ? 0 : consumableorderdetails2Records.size(); } } //订货单号 public static String consumableorderId { get { return (coc.Arrive_Order__c); } } //选择框 public static List provinceOpts { get; set; } @AuraEnabled public static Map provinceOptsMap { get; set; } public static String SecondDealer { get; set; } //public List orderForHospitalOpts { get; set; } public static String HospitalInfo { get; set; } public static String HospitalName { get; set; } public static Boolean EditDelCommitBtnDisabled { get; private set; } public static Boolean saveBtnDisabled { get; private set; } public static Boolean SorderBtnDisabled { get; private set; } // 保存后动作: 1.检索 2.排序 public static String sortKey { get; set; } public static String preSortKey { get; private set; } public static Boolean sortOrderAsc { get; private set; } public static String[] sortOrder { get; private set; } private static String[] columus = new List{ '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 static String[] columus_no = new List{ 'Product2__c.Name', 'Product2__c.Asset_Model_No__c', 'Product2__c.Intra_Trade_List_RMB__c', '', '', 'Category3__c', 'Category4__c', 'Category5__c' }; //到货单明细1 private static List consumableorderdetailsSelected = new List(); //到货单明细2 private static List consumablearriveproductdetailsSelected = new List(); //出库单明细2 private static List consumableorderdetails2RecordsList = new List(); /*****************ソート時再検索条件(画面からの入力条件を無視するため)******************/ //private String cate1ForSort = null; private static String accountid = null; @AuraEnabled public static String accountName { get; set; } // 产品 ID private static String ESetId = ''; @AuraEnabled public static String arriveorder { get; set; } private static String userId = ''; //private String[] ProidListAll = new String[]{}; // 登录者工作地 @AuraEnabled public static String userWorkLocation { get; set; } //add by rentx 2021-01-29 public static List outOutPatternOptionList { get; set; } @AuraEnabled public static Map outOutPatternOptionMap { get; set; } public static String outOutPattern { get; set; } public static Boolean hasHos { get; set; } @AuraEnabled public static Boolean hasHosPro { get; set; } private static Map HosProMap = new Map(); //add by rentx 2021-01-29 public LexSummonsCreatController() { System.debug('LexSummonsCreatController'); size = Integer.valueOf(System.Label.orderdetLimitsize); // ESetId = ApexPages.currentPage().getParameters().get('esetId'); // arriveorder = ApexPages.currentPage().getParameters().get('arriveorder'); // statusEdit = ApexPages.currentPage().getParameters().get('KeyWords'); provinceOpts = new List(); provinceOptsMap = new Map(); pageRecords = new List(); consumableproductdetailsRecords = new List(); consumableorderdetailsSelectRecords = new List(); attachmentRecoeds = new List(); consumableorderdetails2Records = new List(); consumableInvoiceRecords = new List(); categoryOptionList = new List(); category4OptionList = new List(); category5OptionList = new List(); categoryOptionMap = new Map(); category4OptionMap = new Map(); category5OptionMap = new Map(); outOutPatternOptionMap = new Map(); outOutPatternOptionMap.put('', '-无-'); outOutPatternOptionMap.put('ishos', '医院特价产品'); outOutPatternOptionMap.put('nothos', '非医院特价产品'); outOutPatternOptionList.add(new SelectOption('', '-无-')); outOutPatternOptionList.add(new SelectOption('ishos', '医院特价产品')); outOutPatternOptionList.add(new SelectOption('nothos', '非医院特价产品')); HospitalName = ''; } public static void firstInit(String ESetidJs){ System.debug('enter firstInit'); ESetid = ESetidJs; System.debug('ESetid = ' + ESetid); size = Integer.valueOf(System.Label.orderdetLimitsize); provinceOpts = new List(); provinceOptsMap = new Map(); pageRecords = new List(); consumableproductdetailsRecords = new List(); consumableorderdetailsSelectRecords = new List(); attachmentRecoeds = new List(); consumableorderdetails2Records = new List(); consumableInvoiceRecords = new List(); categoryOptionList = new List(); category4OptionList = new List(); category5OptionList = new List(); categoryOptionMap = new Map(); category4OptionMap = new Map(); category5OptionMap = new Map(); outOutPatternOptionMap = new Map(); outOutPatternOptionMap.put('', '-无-'); outOutPatternOptionMap.put('ishos', '医院特价产品'); outOutPatternOptionMap.put('nothos', '非医院特价产品'); // outOutPatternOptionList.add(new SelectOption('', '-无-')); // outOutPatternOptionList.add(new SelectOption('ishos', '医院特价产品')); // outOutPatternOptionList.add(new SelectOption('nothos', '非医院特价产品')); HospitalName = ''; } // 画面初始化 @AuraEnabled public static ResponseBodyLWC init(String ESetidJs) { // try { firstInit(ESetidJs); arriveorder = ''; HospitalName = ''; provinceOpts = new List(); provinceOptsMap = new Map(); ResponseBodyLWC res = new ResponseBodyLWC(); Map data = new Map(); res.entity = data; sortKey = '1'; preSortKey = '1'; sortOrderAsc = false; sortOrder = new String[8]; sortOrder = new List{ ' ', ' ', ' ', ' ', '↓', '', '', '' }; //cate1ForSort = ''; sumPrice = 0; 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(); localuser = [SELECT id, State_Hospital__c FROM User WHERE id = :UserInfo.getUserId()]; //userId = '00510000005QO75'; user Useracc = [SELECT accountid, Work_Location__c, UserPro_Type__c FROM user WHERE id = :userId]; accountid = Useracc.accountid; userWorkLocation = Useracc.Work_Location__c; agencyProType = Useracc.UserPro_Type__c; if (String.isBlank(Useracc.UserPro_Type__c)) { agencyProType = 'ET'; } Account accountInfo = [SELECT Name FROM account WHERE id = :accountid]; accountName = accountInfo.Name; //coc.Order_date__c = Date.today(); list Dealerelationship = new List(); Dealerelationship = [ SELECT Dealer_subordinate__c, Dealer_subordinate__r.Name FROM Dealer_elationship__c WHERE Dealer_principal__c = :accountid ]; List AgencyHospitalLink = new List(); AgencyHospitalLink = [SELECT Id, Hospital__c, Hospital__r.Name FROM Agency_Hospital_Link__c WHERE Agency__c = :accountid]; //add by rentx 2021-3-1 start //判断当前经销商下是否有特价医院 List hlist = [SELECT id, product__c FROM hospitalprice__c WHERE account__c = :accountid]; if (hlist == null || hlist.size() == 0) { hasHos = false; } else { for (hospitalprice__c hp : hlist) { HosProMap.put(hp.product__c, ''); } hasHos = true; } //add by rentx 2021-3-1 end saveBtnDisabled = false; SorderBtnDisabled = false; String sqlagencyProType = '%' + agencyProType + '%'; coc = new Consumable_order__c(); consumableorderdetailsSelectRecords = new List(); Map MidMap = new Map(); //add by rentx 2021-01-29 Map MidMap2 = new Map(); //add by rentx 2021-01-29 List orderdetailCount = [ SELECT count(id), Consumable_Product__c cpc, Box_Piece__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Lose_Flag__c = FALSE AND Cancellation_Flag__c = FALSE AND Bar_Code__c != NULL AND Isoverdue__c = 1 AND Product_Type__c LIKE :sqlagencyProType AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c = :userWorkLocation GROUP BY Consumable_Product__c, Box_Piece__c ]; for (AggregateResult orderdetail : orderdetailCount) { zaikuId.add(String.valueOf(orderdetail.get('cpc'))); } 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, ProductPacking_list_manual__c, //add by rentx 2020-11-27 start hospitalSpecialOffer__c //add by rentx 2020-11-27 end 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 Product_Type__c LIKE :sqlagencyProType AND Arrive_Owner_Work_Location__c = :userWorkLocation AND Dealer_Info_text__c = :accountName ]; // 新規 if (ESetId == null || ESetId == '') { SummonsFlag = 'hidden'; String msoql = makeSoqlinventory(); initStandardController(msoql); product2Selected = Database.query(msoql); //product2Selected = product2s(); if (String.isBlank(arriveorder)) { EditDelCommitBtnDisabled = true; 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++) { String str = ''; if (CountDel[i].hospitalSpecialOffer__c) { str = 'isHos'; } else { str = 'notHos'; } //明细2对应的产品存在于MidMap中 if (MidMap.containsKey(CountDel[i].Consumable_Product__c)) { //设置map中key的后缀 用于区分医院特价和非医院特价 if (MidMap2.containsKey(CountDel[i].Consumable_Product__c + str)) { ConsumableorderdetailsInfo Jstage = MidMap2.get(CountDel[i].Consumable_Product__c + str); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Box_Piece__c == '盒') { Jstage.Boxnumber = Jstage.Boxnumber + 1; } else if (CountDel[i].Box_Piece__c == '个') { Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } if (HosProMap.containsKey(Jstage.Prod.Id)) { Jstage.hosPro = true; } MidMap2.put(CountDel[i].Consumable_Product__c + str, Jstage); } else { //midmap2中没有对应的产品 ConsumableorderdetailsInfo Jstage = MidMap.get(CountDel[i].Consumable_Product__c).clone(); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Box_Piece__c == '盒') { Jstage.Boxnumber = Jstage.Boxnumber + 1; } else if (CountDel[i].Box_Piece__c == '个') { Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } if (HosProMap.containsKey(Jstage.Prod.Id)) { Jstage.hosPro = true; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap2.put(CountDel[i].Consumable_Product__c + str, Jstage); } } /*//然后循环CountDel去修改map里的allnumber if(MidMap.containsKey(CountDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(CountDel[i].Consumable_Product__c); Jstage.allnumber = Jstage.allnumber+1 ; if(CountDel[i].Box_Piece__c == '盒'){ Jstage.Boxnumber = Jstage.Boxnumber + 1; }else if(CountDel[i].Box_Piece__c == '个'){ Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; }else{ Jstage.hospitalSpecialOffer = false; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap.put(CountDel[i].Consumable_Product__c+str, Jstage); }*/ } //update by rentx 2021-01-29 end //再把map里的值从新赋给ConsumableorderdetailsRecords //update by rentx 2021-01-29 // for(ConsumableorderdetailsInfo bss : MidMap.values()){ for (ConsumableorderdetailsInfo bss : MidMap2.values()) { //update by rentx 2021-01-29 //if(bss.allnumber>0){ bss.packinglist = 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; consumableorderdetailsSelectRecords.add(bss); //} } Integer ishosnum = 0; for (ConsumableorderdetailsInfo ass : consumableorderdetailsSelectRecords) { ass.sortBy = sortOrderAsc; //add by rentx 2021-3-10 if (ass.hospitalSpecialOffer) { ishosnum = ishosnum + 1; } } if (ishosnum > 0) { hasHosPro = true; } else { hasHosPro = false; } consumableorderdetailsSelectRecords.sort(); //add by rentx noOfRecords = consumableorderdetailsSelectRecords.size(); //add by rentx System.debug('makepagerecords1'); makepagerecords(); //listCut(); } else { if (statusEdit == '' || statusEdit == null) { editAble = false; } else if (statusEdit != '' && statusEdit != null) { editAble = true; } // upadte start by vivek 2019-7-15 // coc = [SELECT Id,Name,Summons_Order_type__c,SummonsStatus_c__c,Order_ForDealerText__c, // Dealer_Info__c,Order_ForDealer__c,Order_ForDealer__r.Name,Order_ForDealerTextID__c, // Order_ForHospital__c,SummonsForDirction__c,Order_date__c,Arrive_Order__c, // Order_status__c,Shipment_total_amount__c,Offers_Price__c, // Billed_Status__c,ShipmentAccount__c,Order_Dealer_Info__c,Order_ForCustomerText__c,ConInvoice_Code__c,Onchange_order__c // FROM Consumable_order__c // WHERE Id =:arriveorder AND Order_Owner_WorkLocal__c =: userWorkLocation // AND recordtypeid = :System.Label.RT_ConOrder_Arrive]; coc = [ SELECT Id, Name, Summons_Order_type__c, NoConfirmedPrice__c, SummonsStatus_c__c, Order_ForDealerText__c, Dealer_Info__c, Order_ForDealer__c, Order_ForDealer__r.Name, Order_ForDealerTextID__c, Order_ForHospital__c, SummonsForDirction__c, Order_date__c, Arrive_Order__c, Order_status__c, Shipment_total_amount__c, Offers_Price__c, Billed_Status__c, ShipmentAccount__c, Order_Dealer_Info__c, Order_ForCustomerText__c, ConInvoice_Code__c, Onchange_order__c, OutPattern__c FROM Consumable_order__c WHERE Id = :arriveorder AND Order_Owner_WorkLocal__c = :userWorkLocation AND recordtypeid = :System.Label.RT_ConOrder_Arrive ]; // update end by vivek 2019-7-15 //明细1获取 consumableorderdetailsSelected = [ SELECT Id, Dealer_Custom_Price__c, Delivery_List_RMB__c, Consumable_Product__r.Name__c, Name, Consumable_order__c, Consumable_Product__c, Consumable_Product__r.Name, Consumable_Product__r.Category3__c, Consumable_Product__r.Category4__c, Consumable_Product__r.Category5__c, Shipment_Count__c, Consumable_Product__r.Intra_Trade_List_RMB__c, Consumable_Product__r.Asset_Model_No__c, Sum_of_money__c, Box_Piece__c, ProductPacking_list_manual__c, Consumable_Product__r.SFDA_Status__c, Consumable_count__c, Invoiced_Procount__c, RrturnPro_count__c, InvoiceProNot_count__c, //Unitprice_To_agency__c, Consumable_Product__r.Product2__r.SFDA_Approbation_No__c, Consumable_Product__r.Product2__r.SFDA_Expiration_Date__c FROM Consumable_Orderdetails__c WHERE Consumable_order__c = :coc.Arrive_Order__c ORDER BY Name ]; for (Consumable_Orderdetails__c cdc1 : consumableorderdetailsSelected) { orderzaikuId.add(cdc1.Consumable_Product__c); } msoql = makeSoqlorderdet(); product2Selected = Database.query(msoql); size = product2Selected.size(); initStandardController(msoql); for (Integer i = 0; i < product2Selected.size(); i++) { MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); } //update by rentx 2021-01-29 /*for(Integer i = 0 ; i< CountDel.size();i++){ //然后循环CountDel去修改map里的allnumber if(MidMap.containsKey(CountDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(CountDel[i].Consumable_Product__c); Jstage.allnumber = Jstage.allnumber+1 ; if(CountDel[i].Box_Piece__c == '盒'){ Jstage.Boxnumber = Jstage.Boxnumber + 1; }else if(CountDel[i].Box_Piece__c == '个'){ Jstage.Piecenumber = Jstage.Piecenumber + 1; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap.put(CountDel[i].Consumable_Product__c, Jstage); } }*/ for (Integer i = 0; i < CountDel.size(); i++) { String str = ''; if (CountDel[i].hospitalSpecialOffer__c) { str = 'isHos'; } else { str = 'notHos'; } //明细2对应的产品存在于MidMap中 if (MidMap.containsKey(CountDel[i].Consumable_Product__c)) { //设置map中key的后缀 用于区分医院特价和非医院特价 if (MidMap2.containsKey(CountDel[i].Consumable_Product__c + str)) { ConsumableorderdetailsInfo Jstage = MidMap2.get(CountDel[i].Consumable_Product__c + str); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Box_Piece__c == '盒') { Jstage.Boxnumber = Jstage.Boxnumber + 1; } else if (CountDel[i].Box_Piece__c == '个') { Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } if (HosProMap.containsKey(Jstage.Prod.Id)) { Jstage.hosPro = true; } MidMap2.put(CountDel[i].Consumable_Product__c + str, Jstage); } else { //midmap2中没有对应的产品 ConsumableorderdetailsInfo Jstage = MidMap.get(CountDel[i].Consumable_Product__c).clone(); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Box_Piece__c == '盒') { Jstage.Boxnumber = Jstage.Boxnumber + 1; } else if (CountDel[i].Box_Piece__c == '个') { Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } if (HosProMap.containsKey(Jstage.Prod.Id)) { Jstage.hosPro = true; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap2.put(CountDel[i].Consumable_Product__c + str, Jstage); } } } //再把map里的值从新赋给ConsumableorderdetailsRecords //update by rentx 2021-01-29 // for(ConsumableorderdetailsInfo bss : MidMap.values()){ for (ConsumableorderdetailsInfo bss : MidMap2.values()) { //update by rentx 2021-01-29 bss.packinglist = 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; consumableorderdetailsSelectRecords.add(bss); } //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, 'test11111' + consumableorderdetailsSelected.size())); //return; Integer ishosnum = 0; for (ConsumableorderdetailsInfo ass : consumableorderdetailsSelectRecords) { ass.sortBy = sortOrderAsc; for (Consumable_Orderdetails__c cdc1 : consumableorderdetailsSelected) { cdc1.Shipment_Count__c = cdc1.Consumable_count__c; if (ass.prod.Id == cdc1.Consumable_Product__c) { ass.check = true; ass.orderdetails1 = cdc1; } } if (ass.hospitalSpecialOffer == true) { ishosnum = ishosnum + 1; } } if (ishosnum > 0) { hasHosPro = true; } else { hasHosPro = false; } consumableorderdetailsSelectRecords.sort(); //add by rentx noOfRecords = consumableorderdetailsSelectRecords.size(); //add by rentx System.debug('makepagerecords2'); makepagerecords(); consumablearriveproductdetailsSelected = [ SELECT Id, Name, Intra_Trade_List_RMB__c, Asset_Model_No__c, Consumable_Product__c, Consumable_Product__r.Name, Consumable_Product__r.Name__c, Consumable_Product__r.Category3__c, Consumable_Product__r.Category4__c, Consumable_Product__r.Category5__c, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, Dealer_Arrive__c, Delivery_List_RMB__c, Box_Piece__c, ProductPacking_list_manual__c, //add by rentx start hospitalSpecialOffer__c //add by rentx end FROM Consumable_order_details2__c WHERE Consumable_order_minor__c = :coc.Arrive_Order__c AND recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery AND Dealer_Arrive__c = TRUE ORDER BY Name ]; for (Integer i = 0; i < consumablearriveproductdetailsSelected.size(); i++) { if ( consumablearriveproductdetailsSelected[i].hospitalSpecialOffer__c && HosProMap.containsKey(consumablearriveproductdetailsSelected[i].Consumable_product__c) ) { coc.OutPattern__c = true; } consumableproductdetailsRecords.add(new ConsumableorderdetailsInfo(consumablearriveproductdetailsSelected[i])); } } } // 更新、 else { SummonsFlag = 'visible'; // update start by vivek 2019-7-15 add “NoConfirmedPrice__c” in select consumableInvoiceRecords = [ SELECT Id, Name, Invoice_Date__c, NoConfirmedPrice__c, Invoice_total_amount__c, Invoice_status__c FROM Consumable_order__c WHERE Id IN (SELECT Invoice_Code_link__c FROM Consumable_order_LinkTable__c WHERE Outboundorder_Code_link__c = :ESetId) AND Invoice_status__c != '草案中' ]; coc = [ SELECT Id, Name, Summons_Order_type__c, NoConfirmedPrice__c, SummonsStatus_c__c, Order_ForDealerText__c, Dealer_Info__c, Order_ForDealer__c, Order_ForDealer__r.Name, Order_ForDealerTextID__c, Order_ForHospital__c, SummonsForDirction__c, Order_date__c, Arrive_Order__c, Order_status__c, Shipment_total_amount__c, Offers_Price__c, Billed_Status__c, ShipmentAccount__c, Order_Dealer_Info__c, Order_ForCustomerText__c, ConInvoice_Code__c, Onchange_order__c, OutPattern__c FROM Consumable_order__c WHERE Id = :ESetId AND Order_Owner_WorkLocal__c = :userWorkLocation AND Order_type__c = '传票' ]; // update start by vivek 2019-7-15 if (getExistarrive()) { arriveorder = coc.Arrive_Order__c; } // 到货订单来的时候 if (getExistarrive()) { if (editAble) { alertMessage = '到货订单直接出库,出库单明细不可编辑。'; } if (coc.SummonsStatus_c__c == '已提交' || coc.SummonsStatus_c__c == '批准') { system.debug('coc.SummonsStatus_c__c : ' + coc.SummonsStatus_c__c); saveBtnDisabled = true; SorderBtnDisabled = true; EditDelCommitBtnDisabled = false; } //医院二级经销商分类 Integer io = 0; while (io < Dealerelationship.size()) { if (coc.Order_ForDealer__c == Dealerelationship[io].Dealer_subordinate__c) { SecondDealer = Dealerelationship[io].Dealer_subordinate__c; coc.Order_ForDealer__c = null; io = io + Dealerelationship.size(); } io++; } Integer ik = 0; while (ik < AgencyHospitalLink.size()) { if (coc.Order_ForHospital__c == AgencyHospitalLink[ik].Hospital__c) { HospitalInfo = AgencyHospitalLink[ik].Hospital__c; HospitalName = AgencyHospitalLink[ik].Hospital__r.Name; coc.Order_ForHospital__c = null; ik = ik + AgencyHospitalLink.size(); } ik++; } //出库单明细1取得 consumableorderdetailsSelected = [ SELECT Id, Dealer_Custom_Price__c, Delivery_List_RMB__c, Consumable_Product__r.Name__c, Consumable_Product__r.SFDA_Status__c, Name, Consumable_order__c, Consumable_Product__c, Consumable_Product__r.Name, Shipment_Count__c, Consumable_Product__r.Intra_Trade_List_RMB__c, Consumable_Product__r.Asset_Model_No__c, Consumable_Product__r.Category3__c, Consumable_Product__r.Category4__c, Consumable_Product__r.Category5__c, Shipment_amount__c, //Unitprice_To_agency__c, Box_Piece__c, ProductPacking_list_manual__c, Invoiced_Procount__c, RrturnPro_count__c, InvoiceProNot_count__c, Consumable_Product__r.Product2__r.SFDA_Approbation_No__c, Consumable_Product__r.Product2__r.SFDA_Expiration_Date__c, isOutPattern__c FROM Consumable_orderdetails__c WHERE Consumable_order__c = :ESetId AND Consumable_order__r.Order_Owner_WorkLocal__c = :userWorkLocation ORDER BY Name ]; Map cocMap = new Map(); for (Consumable_Orderdetails__c cdc1 : consumableorderdetailsSelected) { sumPrice += cdc1.Shipment_amount__c; orderzaikuId.add(cdc1.Consumable_Product__c); //add by rentx 2021-2-26 String tempId = cdc1.Consumable_product__c; if (cdc1.isOutPattern__c) { cocMap.put(tempId + 'ishos', cdc1); } else { cocMap.put(tempId + 'nothos', cdc1); } //add by rentx 2021-2-26 } String msoql = makeSoqlorderdet(); product2Selected = Database.query(msoql); size = product2Selected.size(); initStandardController(msoql); for (Integer i = 0; i < product2Selected.size(); i++) { MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); } //update by rentx 2021-01-29 /*for(Integer i = 0 ; i< CountDel.size();i++){ //然后循环CountDel去修改map里的allnumber if(MidMap.containsKey(CountDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(CountDel[i].Consumable_Product__c); Jstage.allnumber = Jstage.allnumber+1 ; if(CountDel[i].Box_Piece__c == '盒'){ Jstage.Boxnumber = Jstage.Boxnumber + 1; }else if(CountDel[i].Box_Piece__c == '个'){ Jstage.Piecenumber = Jstage.Piecenumber + 1; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap.put(CountDel[i].Consumable_Product__c, Jstage); } }*/ for (Integer i = 0; i < CountDel.size(); i++) { String str = ''; if (CountDel[i].hospitalSpecialOffer__c) { str = 'isHos'; } else { str = 'notHos'; } //明细2对应的产品存在于MidMap中 if (MidMap.containsKey(CountDel[i].Consumable_Product__c)) { //设置map中key的后缀 用于区分医院特价和非医院特价 if (MidMap2.containsKey(CountDel[i].Consumable_Product__c + str)) { ConsumableorderdetailsInfo Jstage = MidMap2.get(CountDel[i].Consumable_Product__c + str); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Box_Piece__c == '盒') { Jstage.Boxnumber = Jstage.Boxnumber + 1; } else if (CountDel[i].Box_Piece__c == '个') { Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } if (HosProMap.containsKey(Jstage.Prod.Id)) { Jstage.hosPro = true; } MidMap2.put(CountDel[i].Consumable_Product__c + str, Jstage); } else { //midmap2中没有对应的产品 ConsumableorderdetailsInfo Jstage = MidMap.get(CountDel[i].Consumable_Product__c).clone(); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Box_Piece__c == '盒') { Jstage.Boxnumber = Jstage.Boxnumber + 1; } else if (CountDel[i].Box_Piece__c == '个') { Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } if (HosProMap.containsKey(Jstage.Prod.Id)) { Jstage.hosPro = true; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap2.put(CountDel[i].Consumable_Product__c + str, Jstage); } } } //update by rentx 2021-01-29 consumableorderdetailsSelectRecords = new List(); //再把map里的值从新赋给ConsumableorderdetailsRecords //update by rentx 2021-01-29 // for(ConsumableorderdetailsInfo bss : MidMap.values()){ for (ConsumableorderdetailsInfo bss : MidMap2.values()) { //update by rentx 2021-01-29 //if(bss.allnumber > 0){ //bss.UnitpriceToagency = bss.orderdetails1.Unitprice_To_agency__c == null || bss.orderdetails1.Unitprice_To_agency__c == 0 ? '' :bss.orderdetails1.Unitprice_To_agency__c.format(); bss.packinglist = 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; //update by rentx 2021-2-26 start if (cocMap.containsKey(bss.Prod.Id + 'ishos') && bss.hospitalSpecialOffer == true) { consumableorderdetailsSelectRecords.add(bss); } else if (cocMap.containsKey(bss.Prod.Id + 'nothos') && bss.hospitalSpecialOffer == false) { consumableorderdetailsSelectRecords.add(bss); } //update by rentx 2021-2-26 end // consumableorderdetailsSelectRecords.add(bss); //} } Integer ishosnum = 0; for (ConsumableorderdetailsInfo ass : consumableorderdetailsSelectRecords) { for (Consumable_Orderdetails__c cdc1 : consumableorderdetailsSelected) { //update by rentx 2012-3-1 start // if(ass.prod.Id == cdc1.Consumable_Product__c){ // ass.check = true; // ass.orderdetails1 = cdc1; // } if (ass.Prod.Id == cdc1.Consumable_Product__c && ass.hospitalSpecialOffer == cdc1.isOutPattern__c) { ass.check = true; ass.orderdetails1 = cdc1; } //update by rentx 2012-3-1 end } if (ass.hospitalSpecialOffer == true) { ishosnum = ishosnum + 1; } } if (ishosnum > 0) { hasHosPro = true; } else { hasHosPro = false; } //add by rentx noOfRecords = consumableorderdetailsSelectRecords.size(); //add by rentx System.debug('makepagerecords3'); makepagerecords(); //listCut(); // 消耗品明细2を取得 consumableorderdetails2RecordsList = [ SELECT Id, Name, SerialLotNo__c, Consumable_Product__r.Name__c, TracingCode__c, Sterilization_limit__c, Consumable_Product__c, Consumable_Product__r.Name, Consumable_Product__r.Category3__c, Consumable_Product__r.Category4__c, Consumable_Product__r.Category5__c, Return_date__c, Invoice_Date__c, Box_Piece__c, ProductPacking_list_manual__c, //add by rentx start hospitalSpecialOffer__c //add by rentx end FROM Consumable_order_details2__c WHERE Consumable_ZS_order__c = :ESetId ORDER BY Name ]; for (Integer i = 0; i < consumableorderdetails2RecordsList.size(); i++) { consumableorderdetails2Records.add(new ConsumableorderdetailsInfo(consumableorderdetails2RecordsList[i])); } //产品明细取得 consumablearriveproductdetailsSelected = [ SELECT Id, Delivery_List_RMB__c, Consumable_Product__r.Name__c, Name, Consumable_Product__r.SFDA_Status__c, Consumable_Product__r.Category3__c, Consumable_Product__r.Category4__c, Consumable_Product__r.Category5__c, Consumable_Product__c, Consumable_Product__r.Name, Sterilization_limit__c, Consumable_Product__r.Intra_Trade_List_RMB__c, Consumable_Product__r.Asset_Model_No__c, Box_Piece__c, ProductPacking_list_manual__c, //add by rentx start hospitalSpecialOffer__c //add by rentx end FROM Consumable_order_details2__c WHERE Consumable_ZS_order__c = :ESetId ORDER BY Name ]; for (Integer i = 0; i < consumablearriveproductdetailsSelected.size(); i++) { consumableproductdetailsRecords.add(new ConsumableorderdetailsInfo(consumablearriveproductdetailsSelected[i])); } } // 不是到货订单来的时候 else { if (coc.SummonsStatus_c__c == '已提交' || coc.SummonsStatus_c__c == '批准') { system.debug('coc.SummonsStatus_c__c : ' + coc.SummonsStatus_c__c); saveBtnDisabled = true; SorderBtnDisabled = true; EditDelCommitBtnDisabled = false; } //医院二级经销商分类 Integer io = 0; while (io < Dealerelationship.size()) { if (coc.Order_ForDealer__c == Dealerelationship[io].Dealer_subordinate__c) { SecondDealer = Dealerelationship[io].Dealer_subordinate__c; coc.Order_ForDealer__c = null; io = io + Dealerelationship.size(); } io++; } Integer ik = 0; while (ik < AgencyHospitalLink.size()) { if (coc.Order_ForHospital__c == AgencyHospitalLink[ik].Hospital__c) { HospitalInfo = AgencyHospitalLink[ik].Hospital__c; HospitalName = AgencyHospitalLink[ik].Hospital__r.Name; coc.Order_ForHospital__c = null; ik = ik + AgencyHospitalLink.size(); } ik++; } // 消耗品明细1を取得 consumableorderdetailsSelected = [ SELECT Id, Dealer_Custom_Price__c, Delivery_List_RMB__c, Consumable_Product__r.Name__c, Consumable_Product__r.SFDA_Status__c, Name, Consumable_order__c, Consumable_Product__c, Consumable_Product__r.Name, Shipment_Count__c, Consumable_Product__r.Intra_Trade_List_RMB__c, Consumable_Product__r.Asset_Model_No__c, Shipment_amount__c, Box_Piece__c, ProductPacking_list_manual__c, Invoiced_Procount__c, RrturnPro_count__c, //Unitprice_To_agency__c, InvoiceProNot_count__c, Consumable_Product__r.Category3__c, Consumable_Product__r.Category4__c, Consumable_Product__r.Category5__c, Consumable_Product__r.Product2__r.SFDA_Approbation_No__c, Consumable_Product__r.Product2__r.SFDA_Expiration_Date__c, isOutPattern__c FROM Consumable_orderdetails__c WHERE Consumable_order__c = :ESetId AND Consumable_order__r.Order_Owner_WorkLocal__c = :userWorkLocation ORDER BY Name ]; //add by rentx 202-2-26 Map cocMap = new Map(); for (Consumable_Orderdetails__c cdc1 : consumableorderdetailsSelected) { sumPrice += cdc1.Shipment_amount__c; orderzaikuId.add(cdc1.Consumable_Product__c); //add by rentx 2021-2-26 String tempId = cdc1.Consumable_product__c; if (cdc1.isOutPattern__c) { cocMap.put(tempId + 'ishos', cdc1); } else { cocMap.put(tempId + 'nothos', cdc1); } //add by rentx 2021-2-26 } String msoql = makeSoqlorderdet(); product2Selected = Database.query(msoql); size = product2Selected.size(); initStandardController(msoql); 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++) { String str = ''; if (CountDel[i].hospitalSpecialOffer__c) { str = 'isHos'; } else { str = 'notHos'; } //明细2对应的产品存在于MidMap中 if (MidMap.containsKey(CountDel[i].Consumable_Product__c)) { //设置map中key的后缀 用于区分医院特价和非医院特价 if (MidMap2.containsKey(CountDel[i].Consumable_Product__c + str)) { ConsumableorderdetailsInfo Jstage = MidMap2.get(CountDel[i].Consumable_Product__c + str); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Box_Piece__c == '盒') { Jstage.Boxnumber = Jstage.Boxnumber + 1; } else if (CountDel[i].Box_Piece__c == '个') { Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } if (HosProMap.containsKey(Jstage.Prod.Id)) { Jstage.hosPro = true; } MidMap2.put(CountDel[i].Consumable_Product__c + str, Jstage); } else { //midmap2中没有对应的产品 ConsumableorderdetailsInfo Jstage = MidMap.get(CountDel[i].Consumable_Product__c).clone(); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Box_Piece__c == '盒') { Jstage.Boxnumber = Jstage.Boxnumber + 1; } else if (CountDel[i].Box_Piece__c == '个') { Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } if (HosProMap.containsKey(Jstage.Prod.Id)) { Jstage.hosPro = true; } Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap2.put(CountDel[i].Consumable_Product__c + str, Jstage); } } } //再把map里的值从新赋给ConsumableorderdetailsRecords //update by rentx 2021-01-29 // for(ConsumableorderdetailsInfo bss : MidMap.values()){ for (ConsumableorderdetailsInfo bss : MidMap2.values()) { //update by rentx 2021-01-29 //if(bss.allnumber>0){ bss.packinglist = 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; //update by rentx 2021-2-26 start if (cocMap.containsKey(bss.Prod.Id + 'ishos') && bss.hospitalSpecialOffer == true) { consumableorderdetailsSelectRecords.add(bss); } else if (cocMap.containsKey(bss.Prod.Id + 'nothos') && bss.hospitalSpecialOffer == false) { consumableorderdetailsSelectRecords.add(bss); } // consumableorderdetailsSelectRecords.add(bss); //} } // return null; Integer ishosnum = 0; for (ConsumableorderdetailsInfo ass : consumableorderdetailsSelectRecords) { ass.sortBy = sortOrderAsc; for (Consumable_Orderdetails__c cdc1 : consumableorderdetailsSelected) { //update by rentx 2012-3-1 start // if(ass.prod.Id == cdc1.Consumable_Product__c){ // ass.check = true; // ass.orderdetails1 = cdc1; // } if (ass.Prod.Id == cdc1.Consumable_Product__c && ass.hospitalSpecialOffer == cdc1.isOutPattern__c) { ass.check = true; ass.orderdetails1 = cdc1; } //update by rentx 2012-3-1 end } if (ass.hospitalSpecialOffer == true) { ishosnum = ishosnum + 1; } } if (ishosnum > 0) { hasHosPro = true; } else { hasHosPro = false; } consumableorderdetailsSelectRecords.sort(); //add by rentx noOfRecords = consumableorderdetailsSelectRecords.size(); //add by rentx System.debug('makepagerecords4'); makepagerecords(); // 消耗品明细2を取得 consumableorderdetails2RecordsList = [ SELECT Id, Name, SerialLotNo__c, Consumable_Product__r.Name__c, TracingCode__c, Sterilization_limit__c, Consumable_Product__c, Consumable_Product__r.Name, Consumable_Product__r.Category3__c, Consumable_Product__r.Category4__c, Consumable_Product__r.Category5__c, Return_date__c, Invoice_Date__c, Box_Piece__c, ProductPacking_list_manual__c, //add by rentx start hospitalSpecialOffer__c //add by rentx end FROM Consumable_order_details2__c WHERE Consumable_ZS_order__c = :ESetId ORDER BY Name ]; for (Integer i = 0; i < consumableorderdetails2RecordsList.size(); i++) { consumableorderdetails2Records.add(new ConsumableorderdetailsInfo(consumableorderdetails2RecordsList[i])); } } } //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, 'test++++++' + SecondDealer)); if (SecondDealer == null || SecondDealer == '') { provinceOpts.add(new SelectOption('', '-无-')); provinceOptsMap.put('', '-无-'); for (Integer i = 0; i < Dealerelationship.size(); i++) { provinceOpts.add( new SelectOption(Dealerelationship[i].Dealer_subordinate__c, Dealerelationship[i].Dealer_subordinate__r.Name) ); provinceOptsMap.put(Dealerelationship[i].Dealer_subordinate__c, Dealerelationship[i].Dealer_subordinate__r.Name); } } else { provinceOpts.add(new SelectOption('', '-无-')); provinceOptsMap.put('', '-无-'); for (Integer i = 0; i < Dealerelationship.size(); i++) { if (Dealerelationship[i].Dealer_subordinate__c == SecondDealer) { provinceOpts.add( new SelectOption(Dealerelationship[i].Dealer_subordinate__c, Dealerelationship[i].Dealer_subordinate__r.Name) ); provinceOptsMap.put(Dealerelationship[i].Dealer_subordinate__c, Dealerelationship[i].Dealer_subordinate__r.Name); } } for (Integer i = 0; i < Dealerelationship.size(); i++) { if (Dealerelationship[i].Dealer_subordinate__c != SecondDealer) { provinceOpts.add( new SelectOption(Dealerelationship[i].Dealer_subordinate__c, Dealerelationship[i].Dealer_subordinate__r.Name) ); provinceOptsMap.put(Dealerelationship[i].Dealer_subordinate__c, Dealerelationship[i].Dealer_subordinate__r.Name); } } } 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(); // 显示数据条数信息 // makeMessage(); //附件 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])); } } AggregateResult[] categoryList = [ SELECT Count(id), Category3_text__c c3c FROM Product2__c WHERE Category3_text__c != NULL GROUP BY Category3_text__c ]; categoryOptionList = new List(); categoryOptionList.add(new SelectOption('', '-无-')); categoryOptionMap = new Map(); categoryOptionMap.put('', '-无-'); for (AggregateResult category3Search : categoryList) { String deliverycnt = String.valueOf(category3Search.get('c3c')); categoryOptionList.add(new SelectOption(deliverycnt, deliverycnt)); categoryOptionMap.put(deliverycnt, deliverycnt); } category4OptionList = new List(); category4OptionList.add(new SelectOption('', '-无-')); category4OptionMap = new Map(); category4OptionMap.put('', '-无-'); /*for(AggregateResult category4Search : category4List) { String deliverycnt4 = String.valueOf(category4Search.get('c4c')); category4OptionList.add(new SelectOption(deliverycnt4,deliverycnt4)); }*/ category5OptionList = new List(); category5OptionList.add(new SelectOption('', '-无-')); category5OptionMap = new Map(); category5OptionMap.put('', '-无-'); Boolean Existarrive = (coc.Arrive_Order__c != null); String ConsumableOut_report = System.Label.ConsumableOut_report; System.debug('consumableproductdetailsRecords = ' + consumableproductdetailsRecords); data.put('ConsumableOut_report','ConsumableOut_report'); data.put('accountid',accountid); data.put('consumableproductdetailsRecords',consumableproductdetailsRecords); data.put('agencyProType',agencyProType); data.put('accountName',accountName); data.put('userWorkLocation',userWorkLocation); data.put('categoryOptionMap',categoryOptionMap); data.put('category4OptionMap',category4OptionMap); data.put('category5OptionMap',category5OptionMap); data.put('outOutPatternOptionMap',outOutPatternOptionMap); data.put('hasHosPro',hasHosPro); data.put('Existarrive',Existarrive); data.put('sumPrice',sumPrice); data.put('HospitalName', HospitalName); data.put('provinceOptsMap', provinceOptsMap); data.put('SummonsFlag', SummonsFlag); data.put('EditDelCommitBtnDisabled', EditDelCommitBtnDisabled); data.put('EditAble', EditAble); data.put('coc', coc); data.put('pageRecords', pageRecords); data.put('arriveorder',arriveorder); res.status = 'Success'; res.code = 200; System.debug('res = ' + res); return res; // } catch (Exception e) { // return new ResponseBodyLWC('Error',500, e.getMessage(), ''); // } } // 检索 @AuraEnabled public static ResponseBodyLWC searchConsumableorderdetails(String agencyProTypeLwc,String accountNameLwc,String userWorkLocationLwc,String outOutPattern,String category1,String category3,String category4,String category5,Boolean editAbleLwc,List pageRecordsLwcLwc,List consumableproductdetailsRecordsLwc,String arriveorderLwc) { consumableproductdetailsRecords = consumableproductdetailsRecordsLwc; pageRecordsLwc = pageRecordsLwcLwc; System.debug('pageRecordsLwc = ' + pageRecordsLwc); arriveorder = arriveorderLwc; accountName = accountNameLwc; userWorkLocation = userWorkLocationLwc; agencyProType = agencyProTypeLwc; String sqlagencyProType = '%' + agencyProTypeLwc + '%'; List orderdetailCount = [ SELECT count(id), Consumable_Product__c cpc, Box_Piece__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Lose_Flag__c = FALSE AND Cancellation_Flag__c = FALSE AND Bar_Code__c != NULL AND Isoverdue__c = 1 AND Product_Type__c LIKE :sqlagencyProType AND Dealer_Info_text__c = :accountNameLwc AND Arrive_Owner_Work_Location__c = :userWorkLocationLwc GROUP BY Consumable_Product__c, Box_Piece__c ]; for (AggregateResult orderdetail : orderdetailCount) { zaikuId.add(String.valueOf(orderdetail.get('cpc'))); } editAble = editAbleLwc; ResponseBodyLWC res = new ResponseBodyLWC(); Map data = new Map(); res.entity = data; SearchDone = 'SearchDone'; Map selectedIdMap = new Map(); List reSet = new List(); Map MidMap = new Map(); //update by rentx 2021-01-29 Map MidMap2 = new Map(); String countdelSoql = 'SELECT Id,Bar_Code__c,Name,Inventory_date__c,Consumable_Product__c,Consumable_Product__r.Asset_Model_No__c,Recordtypeid,Box_Piece__c,ProductPacking_list_manual__c,hospitalSpecialOffer__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 Dealer_Info_text__c = :accountName '; if (String.isNotBlank(outOutPattern) && outOutPattern.equals('ishos')) { countdelSoql += ' AND hospitalSpecialOffer__c = true'; }else if (String.isNotBlank(outOutPattern) && outOutPattern.equals('nothos')) { countdelSoql += ' AND hospitalSpecialOffer__c = false'; } System.debug('countdelSoql = ' + countdelSoql); List CountDel = Database.query(countdelSoql); System.debug('CountDel = ' + CountDel); //update by rentx 2021-01-29 consumableorderdetailsSelectRecords = new List(); //consumableorderdetailsSelectRecords = reSet; String soql = makeSoql(category1,category3,category4,category5); System.debug('soql = ' + soql); size = Integer.valueOf(System.Label.orderdetLimitsize); initStandardController(soql); 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++ ) { String str = ''; if (CountDel[i].hospitalSpecialOffer__c) { str = 'isHos'; }else{ str = 'notHos'; } System.debug('MidMap = ' + MidMap); //明细2对应的产品存在于MidMap中 if (MidMap.containsKey(CountDel[i].Consumable_Product__c)) { //设置map中key的后缀 用于区分医院特价和非医院特价 if (MidMap2.containsKey(CountDel[i].Consumable_Product__c + str)) { ConsumableorderdetailsInfo Jstage = MidMap2.get(CountDel[i].Consumable_Product__c+str); Jstage.allnumber = Jstage.allnumber+1 ; if(CountDel[i].Box_Piece__c == '盒'){ Jstage.Boxnumber = Jstage.Boxnumber + 1; }else if(CountDel[i].Box_Piece__c == '个'){ Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; }else{ Jstage.hospitalSpecialOffer = false; } if (HosProMap.containsKey(Jstage.Prod.Id)) { Jstage.hosPro = true; } MidMap2.put(CountDel[i].Consumable_Product__c+str, Jstage); }else{ //midmap2中没有对应的产品 ConsumableorderdetailsInfo Jstage = MidMap.get(CountDel[i].Consumable_Product__c).clone(); Jstage.allnumber = Jstage.allnumber+1 ; if(CountDel[i].Box_Piece__c == '盒'){ Jstage.Boxnumber = Jstage.Boxnumber + 1; }else if(CountDel[i].Box_Piece__c == '个'){ Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; }else{ Jstage.hospitalSpecialOffer = false; } if (HosProMap.containsKey(Jstage.Prod.Id)) { Jstage.hosPro = true; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap2.put(CountDel[i].Consumable_Product__c+str, Jstage); } } } Integer ishosnum = 0; System.debug('MidMap2 = ' + MidMap2); for(ConsumableorderdetailsInfo bss : MidMap2.values()){ if(selectedIdMap.containsKey(bss.Prod.id)){ continue; }else{ bss.sortBy = false; bss.packinglist = 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; consumableorderdetailsSelectRecords.add(bss); if (bss.hospitalSpecialOffer == true) { ishosnum = ishosnum + 1; } } } if (ishosnum > 0) { hasHosPro = true; }else{ hasHosPro = false; } consumableorderdetailsSelectRecords.sort(); //add by rentx //noOfRecords = consumableorderdetailsSelectRecords.size(); //add by rentx //makepagerecords(); makepagerecordsLwc(); // this.sortKey = '1'; // this.preSortKey = '1'; // this.sortOrderAsc = false; // this.sortOrder = new String[8]; // this.sortOrder = new String[]{' ',' ',' ',' ','↓','','',''}; data.put('pageRecords', pageRecords); data.put('test','test'); res.status = 'Success'; res.code = 200; System.debug('res = ' + res); return res; } private static String makeSoql(String CateName,String Category3,String Category4,String Category5){ String sqlTail1 = '(\''; for(Integer i = 0 ; i< zaikuId.size();i++){ if(i makepagerecords() { List reSet = new List(); Map selectedIdMap = new Map(); System.debug('zhj1'); //取出选择的产品 if (pageRecords != null) { System.debug('zhj2'); for (ConsumableorderdetailsInfo ass : pageRecords) { if (ass.check == true) { if (ass.hospitalSpecialOffer == true) { selectedIdMap.put(ass.Prod.Id + 'ishos', ass.Prod.Id); } else { selectedIdMap.put(ass.Prod.Id + 'nothos', ass.Prod.Id); } reSet.add(ass); } } } System.debug('zhj3'); pageRecords = new List(); if (editAble && String.isBlank(arriveorder)) { pageRecords = reSet; } //Integer pagestartNo = (setCon.getPageNumber() * size)-size; //Integer pageendNo = (setCon.getPageNumber() * size)>noOfRecords ? noOfRecords :(setCon.getPageNumber() * size-1); Integer addNo = 0; //update by rentx 2021-2-26 start System.debug('consumableorderdetailsSelectRecords = ' + consumableorderdetailsSelectRecords); for (ConsumableorderdetailsInfo info : consumableorderdetailsSelectRecords) { Consumable_Orderdetails__c orderdetails1 = new Consumable_Orderdetails__c(); if ( (info.hospitalSpecialOffer && selectedIdMap.containsKey(info.Prod.Id + 'ishos')) || (info.hospitalSpecialOffer == false && selectedIdMap.containsKey(info.Prod.Id + 'nothos')) ) { addNo++; } else { if (info.check == false) { info.orderdetails1 = orderdetails1; } pageRecords.add(info); addNo++; } } System.debug('pageRecords 2 = ' + pageRecords); System.debug('zhj5'); System.debug('pageRecords = ' + pageRecords); return pageRecords; } public static List makepagerecordsLwc() { List reSetLwc = new List(); Map selectedIdMap = new Map(); System.debug('makepagerecordsLwc pageRecordsLwc = ' + pageRecordsLwc); //取出选择的产品 if (pageRecordsLwc != null) { for (ConsumableorderdetailsInfoLwc ass : pageRecordsLwc) { System.debug('ass.check = ' + ass.check); if (ass.check == true) { if (ass.hospitalSpecialOffer == true) { selectedIdMap.put(ass.Prod.Id + 'ishos', ass.Prod.Id); } else { selectedIdMap.put(ass.Prod.Id + 'nothos', ass.Prod.Id); } reSetLwc.add(ass); } } } System.debug('reSetLwc = ' + reSetLwc); System.debug('selectedIdMap = ' + selectedIdMap); pageRecords = new List(); if (editAble && String.isBlank(arriveorder)) { List reSet = new List(); for(ConsumableorderdetailsInfoLwc assLwc : reSetLwc){ ConsumableorderdetailsInfo ci = new ConsumableorderdetailsInfo(); ci.check = assLwc.check; ci.oldCheck = assLwc.oldCheck; ci.orderdetails1 = assLwc.orderdetails1; ci.orderdetails2 = assLwc.orderdetails2; ci.Prod = assLwc.Prod; ci.Boxnumber = assLwc.Boxnumber; ci.Piecenumber = assLwc.Piecenumber; ci.allnumber = assLwc.allnumber; ci.oldConsumableCount = assLwc.oldConsumableCount; ci.canSelect = assLwc.canSelect; ci.sortBy = assLwc.sortBy; ci.packinglist = assLwc.packinglist; ci.approbation_No = assLwc.approbation_No; ci.expiration_Date = assLwc.expiration_Date; ci.boxorpiecein = assLwc.boxorpiecein; ci.boxorpiece = assLwc.boxorpiece; ci.boxorpieceMap = assLwc.boxorpieceMap; ci.concc = assLwc.concc; ci.BoxPiece = assLwc.BoxPiece; ci.hospitalSpecialOffer = assLwc.hospitalSpecialOffer; ci.hosPro = assLwc.hosPro; reSet.add(ci); } pageRecords = reSet; } //Integer pagestartNo = (setCon.getPageNumber() * size)-size; //Integer pageendNo = (setCon.getPageNumber() * size)>noOfRecords ? noOfRecords :(setCon.getPageNumber() * size-1); Integer addNo = 0; //update by rentx 2021-2-26 start System.debug('consumableorderdetailsSelectRecords = ' + consumableorderdetailsSelectRecords); for (ConsumableorderdetailsInfo info : consumableorderdetailsSelectRecords) { Consumable_Orderdetails__c orderdetails1 = new Consumable_Orderdetails__c(); if ( (info.hospitalSpecialOffer && selectedIdMap.containsKey(info.Prod.Id + 'ishos')) || (info.hospitalSpecialOffer == false && selectedIdMap.containsKey(info.Prod.Id + 'nothos')) ) { addNo++; } else { if (info.check == false) { info.orderdetails1 = orderdetails1; } pageRecords.add(info); addNo++; } } System.debug('pageRecords = ' + pageRecords); return pageRecords; } // 保存按钮 @AuraEnabled public static ResponseBodyLWC save(Consumable_order__c cocLwc,String hospitalInfoLwc,String hospitalNameLwc,String secondaryDistributor,List pageRecordsLwc,String accountid,String ESetId,List consumableproductdetailsRecordsLwc) { System.debug('cocLwc = ' + cocLwc); coc = cocLwc; HospitalInfo = hospitalInfoLwc; HospitalName = hospitalNameLwc; SecondDealer = secondaryDistributor; pageRecordsLwc = pageRecordsLwc; consumableproductdetailsRecords = consumableproductdetailsRecordsLwc; ResponseBodyLWC res = new ResponseBodyLWC(); Map data = new Map(); res.entity = data; //订单信息确认 if(coc.SummonsForDirction__c ==''||coc.SummonsForDirction__c == null){ // coc.SummonsForDirction__c.addError('请输入指示单目的。'); // return null; return new ResponseBodyLWC('Error',500, '请输入指示单目的。', ''); } else if(coc.SummonsForDirction__c =='直接销售给医院'){ if(String.isBlank(HospitalInfo) || String.isBlank(HospitalName)){ // coc.addError('请输入医院。'); // return null; return new ResponseBodyLWC('Error',500, '请输入医院。', ''); } if(String.isBlank(coc.Order_ForCustomerText__c)){ // coc.Order_ForCustomerText__c.addError('请输入科室。'); // return null; return new ResponseBodyLWC('Error',500, '请输入科室。', ''); } else if(String.isNotBlank(SecondDealer) || String.isNotBlank(coc.Order_ForDealerText__c)){ // coc.addError('不需要二级经销商和经销商(录入)信息。' ); // return null; return new ResponseBodyLWC('Error',500, '不需要二级经销商和经销商(录入)信息。', ''); } }else if(coc.SummonsForDirction__c =='医院试用'){ if(String.isBlank(HospitalInfo) || String.isBlank(HospitalName)){ // coc.addError('请输入医院。'); // return null; return new ResponseBodyLWC('Error',500, '请输入医院。', ''); } if(String.isBlank(coc.Order_ForCustomerText__c)){ // coc.Order_ForCustomerText__c.addError('请输入科室。'); // return null; return new ResponseBodyLWC('Error',500, '请输入科室。', ''); } } else if(coc.SummonsForDirction__c =='销售给二级经销商'){ if(String.isBlank(SecondDealer) && String.isBlank(coc.Order_ForDealerText__c)){ // coc.addError('必须输入二级经销商或经销商(录入)。'); // return null; return new ResponseBodyLWC('Error',500, '必须输入二级经销商或经销商(录入)。', ''); } if(String.isBlank(HospitalInfo) || String.isBlank(HospitalName)){ // coc.addError('请输入医院。'); // return null; return new ResponseBodyLWC('Error',500, '请输入医院。', ''); } if(String.isBlank(coc.Order_ForCustomerText__c)){ // coc.Order_ForCustomerText__c.addError('请输入科室。'); // return null; return new ResponseBodyLWC('Error',500, '请输入科室。', ''); } } else if(coc.SummonsForDirction__c =='互相调货'){ if(String.isNotBlank(HospitalInfo) || String.isNotBlank(HospitalName)){ // coc.addError('不需要输入医院。'); // return null; return new ResponseBodyLWC('Error',500, '不需要输入医院。', ''); } if(String.isNotBlank(coc.Order_ForCustomerText__c)){ // coc.Order_ForCustomerText__c.addError('不需要输入科室。'); // return null; return new ResponseBodyLWC('Error',500, '不需要输入科室。', ''); } if(String.isBlank(SecondDealer) && String.isBlank(coc.Order_ForDealerText__c)){ // coc.addError('必须输入二级经销商或经销商(录入)。'); // return null; return new ResponseBodyLWC('Error',500, '必须输入二级经销商或经销商(录入)。', ''); } } Integer isHos = 0; Integer FLG = 0; Integer Count = 0; for(ConsumableorderdetailsInfoLwc CheckCount : pageRecordsLwc) { FLG = FLG + 1; if(CheckCount.check == false){ Count = Count + 1; }else{ //add by rentx if (CheckCount.hospitalSpecialOffer) { isHos = isHos+1; } //add by rentx } } if(Count == FLG){ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '请选择所需消耗品')); // return null; return new ResponseBodyLWC('Error',500, '请选择所需消耗品', ''); } // gzw 注释 判断提前 20210308 //checkOutPattern(); //根据用户选中的产品给 出库单上的是否医院特价出库字段赋值 Integer isHosCheckOutPattern = 0; for(ConsumableorderdetailsInfoLwc CheckCount : pageRecordsLwc) { if (CheckCount.check == true && CheckCount.hospitalSpecialOffer == true) { isHosCheckOutPattern = isHosCheckOutPattern +1; } } if (isHosCheckOutPattern > 0) { coc.OutPattern__c = true; }else{ coc.OutPattern__c = false; } // add by rentx 2021-3-10 start //特价医院出库非本医院维护的特价商品时,报错 非特价医院出库维护在医院特价关系表的产品时 报错 if(coc.SummonsForDirction__c !='互相调货'){ //非特价医院出库特价产品时 报错(当前经销商下没有特价医院除外) List hopList = [select id,hospital__c,product__c from hospitalprice__c where account__c = :accountid]; //经销商对应医院下的所有特价产品 Map proMap = new Map(); //经销商下的所有特价产品 Map allProMap = new Map(); if (hopList != null && hopList.size() > 0) { Boolean flag = false; if (HospitalInfo != null && HospitalInfo != '') { for (hospitalprice__c hp : hopList) { allProMap.put(hp.product__c, ''); //如果当前 医院特价关系中的医院对应出库单上出库的医院,则放产品id到map if (hp.hospital__c == HospitalInfo) { flag = true; proMap.put(hp.product__c, ''); } } } for(ConsumableorderdetailsInfoLwc ass : pageRecordsLwc){ if (ass.check == true) { //判断选中的医院特价产品 if (ass.hospitalSpecialOffer == true) { //用户选中了当前医院下的特价产品 if (proMap.containsKey(ass.Prod.Id)) { continue; //用户选中了没有维护特价医院的特价产品 }else if (!allProMap.containsKey(ass.Prod.Id)) { continue; }else{ //用户选中非当前医院维护的特价产品 // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '当前医院没有维护 消耗品:'+ ass.Prod.Name__c +' 的特价')); // return null; return new ResponseBodyLWC('Error',500, '当前医院没有维护 消耗品:' + ass.Prod.Name__c + '的特价', ''); } }//非医院特价产品可以出库给任意医院,所以不需要判断 } } } }else{ //如果是互相调货,判断 经销商(录入) 是否维护了 当前选中的特价产品 List hopList = [select id,hospital__c,product__c from hospitalprice__c where account__c = :coc.Order_ForDealerTextID__c]; Map proMap = new Map(); if (hopList != null && hopList.size() > 0) { for (hospitalprice__c hpc : hopList) { proMap.put(hpc.product__c, ''); } String proStr = ''; for(ConsumableorderdetailsInfoLwc ass : pageRecordsLwc){ if (ass.check == true) { if (ass.hospitalSpecialOffer == true) { if (!proMap.containsKey(ass.Prod.Id)) { proStr += ass.Prod.Name__c+','; } } } } if (proStr != '') { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '经销商:'+coc.Order_ForDealerText__c +' 没有消耗品:'+proStr.substring(0,proStr.length()-1) + ' 的特价')); // return null; return new ResponseBodyLWC('Error',500, '经销商:' + coc.Order_ForDealerText__c + ' 没有消耗品:' + proStr.substring(0,proStr.length()-1) + ' 的特价', ''); } } } // checkOutPattern(); Consumable_order__c p = new Consumable_order__c(); List Ins = New List(); List InsProduct = New List(); Savepoint sp = Database.setSavepoint(); // try { //新建订单时 if(String.isEmpty(ESetId)){ p.Name = '*'; p.Order_type__c = '传票'; p.Order_ProType__c = agencyProType; if(coc.SummonsStatus_c__c ==null||String.isBlank(coc.SummonsStatus_c__c))coc.SummonsStatus_c__c ='草案中'; // update strat by vivek 2019-7-12 p.NoConfirmedPrice__c = coc.NoConfirmedPrice__c; // update end by vivek 2019-7-12 p.SummonsStatus_c__c = coc.SummonsStatus_c__c; if(coc.Arrive_Order__c != null){ p.Arrive_Order__c = coc.Arrive_Order__c; } p.Offers_Price__c = coc.Offers_Price__c; p.Dealer_Info__c = accountid; if(String.isBlank(SecondDealer)){ p.Order_ForHospital__c =String.isNotBlank(HospitalInfo) ? HospitalInfo : null; p.Order_ForCustomerText__c = coc.Order_ForCustomerText__c; }else { p.Order_ForHospital__c = String.isNotBlank(HospitalInfo) ? HospitalInfo : null; p.Order_ForCustomerText__c = coc.Order_ForCustomerText__c; p.Order_ForDealer__c = SecondDealer; } P.Order_ForDealerText__c = coc.Order_ForDealerText__c; P.Order_ForDealerTextID__c = coc.Order_ForDealerTextID__c; p.Order_date__c = coc.Order_date__c; p.SummonsForDirction__c = coc.SummonsForDirction__c; p.RecordTypeid = System.Label.RT_ConOrder_Outboundorder; // update start by vivek 2019-7-15 p.NoConfirmedPrice__c = coc.NoConfirmedPrice__c; // update end by vivek 2019-7-15 //add by rentx p.OutPattern__c = coc.OutPattern__c; //add by rentx //Map ProductNewMap = new Map(); for(ConsumableorderdetailsInfoLwc ass : pageRecordsLwc){ if(ass.check == true){ if(ass.orderdetails1.Delivery_List_RMB__c < 0){ // ass.orderdetails1.Delivery_List_RMB__c.addError('请输入正确的出货单价 (元)。'); // return null; return new ResponseBodyLWC('Error',500, '请输入正确的出货单价 (元)。', ''); } if(ass.orderdetails1.Delivery_List_RMB__c == null && coc.SummonsForDirction__c !='医院试用'){ // ass.orderdetails1.Delivery_List_RMB__c.addError('请输入出货单价 (元)。'); // return null; return new ResponseBodyLWC('Error',500, '请输入正确的出货单价 (元)。', ''); } if(ass.orderdetails1.Delivery_List_RMB__c == 0 && (coc.SummonsForDirction__c =='销售给二级经销商' || coc.SummonsForDirction__c =='直接销售给医院')){ // ass.orderdetails1.Delivery_List_RMB__c.addError('请输入出货单价 (元)。'); // return null; return new ResponseBodyLWC('Error',500, '请输入出货单价 (元)。', ''); } if(ass.orderdetails1.Shipment_Count__c == null ||ass.orderdetails1.Shipment_Count__c ==0){ // ass.orderdetails1.Shipment_Count__c.addError('请输入出货数量。'); // return null; return new ResponseBodyLWC('Error',500, '请输入出货数量。', ''); } if(ass.orderdetails1.Box_Piece__c == null ||ass.orderdetails1.Box_Piece__c ==''){ // ass.orderdetails1.Box_Piece__c.addError('请输入单位。'); // return null; return new ResponseBodyLWC('Error',500, '请输入单位。', ''); } if(ass.orderdetails1.Box_Piece__c == '盒'){ if(ass.orderdetails1.Shipment_Count__c > ass.Boxnumber){ //ass.orderdetails1.Shipment_Count__c.addError('库存不足'); if(ass.oldCheck == false){ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '消耗品'+ ass.Prod.Name__c + '库存不足')); return new ResponseBodyLWC('Error',500, '消耗品'+ ass.Prod.Name__c + '库存不足', ''); }else{ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '消耗品'+ ass.orderdetails1.Consumable_Product__r.Name__c + '库存不足')); return new ResponseBodyLWC('Error',500, '消耗品'+ ass.orderdetails1.Consumable_Product__r.Name__c + '库存不足', ''); } } }else if(ass.orderdetails1.Box_Piece__c == '个'){ if(ass.orderdetails1.Shipment_Count__c > ass.Piecenumber){ //ass.orderdetails1.Shipment_Count__c.addError('库存不足'); if(ass.oldCheck == false){ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '消耗品'+ ass.Prod.Name__c + '库存不足')); return new ResponseBodyLWC('Error',500, '消耗品'+ ass.Prod.Name__c + '库存不足', ''); }else{ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '消耗品'+ ass.orderdetails1.Consumable_Product__r.Name__c + '库存不足')); return new ResponseBodyLWC('Error',500, '消耗品'+ ass.orderdetails1.Consumable_Product__r.Name__c + '库存不足', ''); } } } } } insert p; ESetId = p.id; List detailName = new List(); detailName = [SELECT id,Name FROM Consumable_order__c WHERE id =:ESetId]; Integer i = 1; for (ConsumableorderdetailsInfoLwc ass : pageRecordsLwc) { if(ass.check == true){ Consumable_orderdetails__c InsAfterDel = new Consumable_orderdetails__c(); String str = string.valueOf(i); if(str.length() == 1){ str = '0' + str; } InsAfterDel.Name = detailName[0].name + '-'+ str; InsAfterDel.Shipment_Count__c = ass.orderdetails1.Shipment_Count__c; InsAfterDel.Consumable_order__c = p.id; InsAfterDel.Consumable_Product__c = ass.Prod.id; InsAfterDel.Intra_Trade_List_RMB__c =ass.Prod.Intra_Trade_List_RMB__c; InsAfterDel.Delivery_List_RMB__c = ass.orderdetails1.Delivery_List_RMB__c; // TODO 默认 盒 ,需要修正 InsAfterDel.Box_Piece__c = ass.orderdetails1.Box_Piece__c; InsAfterDel.Out_unit__c = ass.orderdetails1.Box_Piece__c; //InsAfterDel.Unitprice_To_agency__c = ass.orderdetails1.Unitprice_To_agency__c; InsAfterDel.Dealer_Custom_Price__c = ass.orderdetails1.Dealer_Custom_Price__c; InsAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail1_Order; //add by rentx 2021-2-26 start InsAfterDel.isOutPattern__c = ass.hospitalSpecialOffer; //add by rentx 2021-2-26 end i++; Ins.add(InsAfterDel); } } // 如果 出库单 和 OCM发货Header连 的话,发货的Detail2 Copy到 出库单的Detail2里 if (getExistarrive()) { for (ConsumableorderdetailsInfo ass : consumableproductdetailsRecords) { //BlockForP; Consumable_order_details2__c InsProductDet = new Consumable_order_details2__c(); InsProductDet.Id = ass.orderdetails2.Id; InsProductDet.Consumable_ZS_order__c = p.id; i++; InsProduct.add(InsProductDet); } } if(Ins.size()>0){ insert Ins; } if(InsProduct.size() >0){ ControllerUtil.updateOrderDetailsSatus(InsProduct); } } //修改之后 保存订单 else if(ESetId != null || ESetId.length() >0 ){ List cocinfo = New List(); // update start by vivek 2019-7-15 add "NoConfirmedPrice__c" in select cocinfo = [SELECT Id, Name, SummonsStatus_c__c, NoConfirmedPrice__c, Dealer_Info__c, Order_ForHospital__c, SummonsForDirction__c FROM Consumable_order__c WHERE Id =:ESetId]; // update end by vivek 2019-7-15 if (cocinfo.size()>0){ p = cocinfo[0]; } p.Name = coc.Name; p.Dealer_Info__c = accountid; p.Order_ProType__c = agencyProType; if(SecondDealer == null){ p.Order_ForHospital__c = String.isNotBlank(HospitalInfo) ? HospitalInfo : null; p.Order_ForCustomerText__c = coc.Order_ForCustomerText__c; p.Order_ForDealer__c = SecondDealer; }else { p.Order_ForHospital__c = String.isNotBlank(HospitalInfo) ? HospitalInfo : null; p.Order_ForCustomerText__c = coc.Order_ForCustomerText__c; p.Order_ForDealer__c = SecondDealer; } P.Order_ForDealerText__c = coc.Order_ForDealerText__c; P.Order_ForDealerTextID__c = coc.Order_ForDealerTextID__c; p.Order_date__c = coc.Order_date__c; p.SummonsForDirction__c = coc.SummonsForDirction__c; //add by rentx p.OutPattern__c = coc.OutPattern__c; // update start by vivek 2019-7-15 if(p.SummonsStatus_c__c== '价格未定'){ p.NoConfirmedPrice__c = false; p.SummonsStatus_c__c= '已完成'; }else{ p.SummonsStatus_c__c = '草案中'; } // p.SummonsStatus_c__c = '草案中'; // update end by vivek 2019-7-15 Integer i = 1; //Map ProductOldMap = new Map(); for (ConsumableorderdetailsInfoLwc ass : pageRecordsLwc) { if(ass.check == true){ if(ass.orderdetails1.Delivery_List_RMB__c < 0){ // ass.orderdetails1.Delivery_List_RMB__c.addError('请输入正确的出货单价 (元)。'); // return null; return new ResponseBodyLWC('Error',500, '请输入正确的出货单价 (元)。', ''); } Consumable_orderdetails__c InsAfterDel = new Consumable_orderdetails__c(); if(ass.orderdetails1.Delivery_List_RMB__c == null && coc.SummonsForDirction__c !='医院试用'){ // ass.orderdetails1.Delivery_List_RMB__c.addError('请输入出货单价 (元)。'); // return null; return new ResponseBodyLWC('Error',500, '请输入出货单价 (元)。', ''); } if(ass.orderdetails1.Delivery_List_RMB__c == 0 && (coc.SummonsForDirction__c =='销售给二级经销商' || coc.SummonsForDirction__c =='直接销售给医院')){ // ass.orderdetails1.Delivery_List_RMB__c.addError('请输入出货单价 (元)。'); // return null; return new ResponseBodyLWC('Error',500, '请输入出货单价 (元)。', ''); } if(ass.orderdetails1.Box_Piece__c == null ||ass.orderdetails1.Box_Piece__c ==''){ // ass.orderdetails1.Box_Piece__c.addError('请输入单位。'); // return null; return new ResponseBodyLWC('Error',500, '请输入单位。', ''); } if(ass.orderdetails1.Box_Piece__c == '盒'){ if(ass.orderdetails1.Shipment_Count__c > ass.Boxnumber){ //ass.orderdetails1.Shipment_Count__c.addError('库存不足'); if(ass.oldCheck == false){ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '消耗品'+ ass.Prod.Name__c + '库存不足')); return new ResponseBodyLWC('Error',500, '消耗品'+ ass.Prod.Name__c + '库存不足', ''); }else{ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '消耗品'+ ass.orderdetails1.Consumable_Product__r.Name__c + '库存不足')); return new ResponseBodyLWC('Error',500, '消耗品'+ ass.orderdetails1.Consumable_Product__r.Name__c + '库存不足', ''); } } }else if(ass.orderdetails1.Box_Piece__c == '个'){ if(ass.orderdetails1.Shipment_Count__c > ass.Piecenumber){ if(ass.oldCheck == false){ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '消耗品'+ ass.Prod.Name__c + '库存不足')); return new ResponseBodyLWC('Error',500, '消耗品'+ ass.Prod.Name__c + '库存不足', ''); }else{ //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '消耗品'+ ass.orderdetails1.Consumable_Product__r.Name__c + '库存不足')); return new ResponseBodyLWC('Error',500, '消耗品'+ ass.orderdetails1.Consumable_Product__r.Name__c + '库存不足', ''); } } } if(ass.orderdetails1.Shipment_Count__c == null||ass.orderdetails1.Shipment_Count__c==0){ // ass.orderdetails1.Shipment_Count__c.addError('请输入出货数量。'); // return null; return new ResponseBodyLWC('Error',500, '请输入出货数量。', ''); }else{ String str = string.valueOf(i); if(str.length() == 1){ str = '0' + str; } InsAfterDel.Name = p.name + '-'+ str; InsAfterDel.Shipment_Count__c = ass.orderdetails1.Shipment_Count__c; InsAfterDel.Consumable_order__c = ESetId; InsAfterDel.Consumable_Product__c = ass.Prod.id; InsAfterDel.Intra_Trade_List_RMB__c =ass.Prod.Intra_Trade_List_RMB__c; InsAfterDel.Delivery_List_RMB__c = ass.orderdetails1.Delivery_List_RMB__c; InsAfterDel.Box_Piece__c = ass.orderdetails1.Box_Piece__c; InsAfterDel.Out_unit__c = ass.orderdetails1.Box_Piece__c; //InsAfterDel.Unitprice_To_agency__c = ass.orderdetails1.Unitprice_To_agency__c; InsAfterDel.Dealer_Custom_Price__c = ass.orderdetails1.Dealer_Custom_Price__c; InsAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail1_Order; //add by rentx 2021-2-26 start InsAfterDel.isOutPattern__c = ass.hospitalSpecialOffer; //add by rentx 2021-2-26 end i++; Ins.add(InsAfterDel); } } } update p; List qs = New List(); qs = [SELECT Id FROM Consumable_orderdetails__c WHERE Consumable_order__c =:ESetId]; if (qs.size()>0){ delete qs; } if(Ins.size()>0){ insert Ins; } } // }catch (Exception ex) { // Database.rollback(sp); // // ApexPages.addMessages(ex); // // return null; // //return new ResponseBodyLWC('Error',500, ex.getMessage(), ''); // return new ResponseBodyLWC('Error',500, JSON.serialize(ex), ''); // } data.put('ESetId',ESetId); res.status = 'Success'; res.code = 200; System.debug('res = ' + res); return res; } public static void checkOutPattern(){ //根据用户选中的产品给 出库单上的是否医院特价出库字段赋值 Integer isHos = 0; for(ConsumableorderdetailsInfo CheckCount : pageRecords) { if (CheckCount.check == true && CheckCount.hospitalSpecialOffer == true) { ishos = ishos +1; } } if (isHos > 0) { coc.OutPattern__c = true; }else{ coc.OutPattern__c = false; } } //打印PDF @AuraEnabled public static ResponseBodyLWC PraseToPDF(Consumable_order__c cocLwc,String ESetId){ System.debug('cocLwc = ' + cocLwc); System.debug('ESetId = ' + ESetId); coc = cocLwc; ResponseBodyLWC res = new ResponseBodyLWC(); Map data = new Map(); res.entity = data; if(coc.SummonsStatus_c__c =='批准'){ Consumable_order__c P = new Consumable_order__c(); List cocinfo = New List(); // update start by vivek 2019-7-15 add “NoConfirmedPrice__c” in select cocinfo = [SELECT Id,Name,SummonsStatus_c__c,NoConfirmedPrice__c,Dealer_Info__c,Order_ForHospital__c,SummonsForDirction__c,Billed_Status__c FROM Consumable_order__c WHERE Id =:ESetId]; // update end by vivek 2019-7-15 if (cocinfo.size()>0){ p = cocinfo[0]; } p.SummonsStatus_c__c = '出库单已打印'; update p; } data.put('ESetId',ESetId); res.status = 'Success'; res.code = 200; System.debug('res = ' + res); return res; } // Data Bean class ConsumableorderdetailsInfo implements Comparable { @AuraEnabled public Boolean check { get; set; } @AuraEnabled public Boolean oldCheck { get; set; } @AuraEnabled public Consumable_Orderdetails__c orderdetails1 { get; set; } @AuraEnabled public Consumable_order_details2__c orderdetails2 { get; set; } @AuraEnabled public Product2__c Prod { get; set; } @AuraEnabled public Decimal Boxnumber { get; set; } @AuraEnabled public Decimal Piecenumber { get; set; } @AuraEnabled public Decimal allnumber { get; set; } @AuraEnabled public Decimal oldConsumableCount { get; set; } @AuraEnabled public Boolean canSelect { get; set; } @AuraEnabled public Boolean sortBy { get; set; } @AuraEnabled public Integer packinglist { get; set; } @AuraEnabled public String approbation_No { get; set; } @AuraEnabled public Date expiration_Date { get; set; } @AuraEnabled public String boxorpiecein { get; set; } public List boxorpiece { get; set; } @AuraEnabled public Map boxorpieceMap { get; set; } @AuraEnabled public Attachment concc { get; set; } @AuraEnabled public String BoxPiece { get; set; } @AuraEnabled public Boolean hospitalSpecialOffer { get; set; } @AuraEnabled public Boolean hosPro { get; set; } public ConsumableorderdetailsInfo(){} public ConsumableorderdetailsInfo(Consumable_Orderdetails__c e) { check = true; oldCheck = true; orderdetails1 = e; orderdetails2 = new Consumable_order_details2__c(); Prod = e.Consumable_Product__r; oldConsumableCount = e.Shipment_Count__c; canSelect = true; allnumber = 0; Boxnumber = 0; Piecenumber = 0; BoxPiece = e.Box_Piece__c; boxorpiece = new List(); boxorpiece.add(new SelectOption('盒', '盒')); boxorpiece.add(new SelectOption('个', '个')); boxorpieceMap = new Map(); boxorpieceMap.put('盒', '盒'); boxorpieceMap.put('个', '个'); hospitalSpecialOffer = false; hosPro = false; } // 消耗品发货明细 public ConsumableorderdetailsInfo(Consumable_order_details2__c e) { check = true; oldCheck = true; orderdetails1 = new Consumable_Orderdetails__c(); orderdetails2 = e; Prod = e.Consumable_Product__r; canSelect = true; allnumber = 0; Boxnumber = 0; Piecenumber = 0; //boxorpiece = new List(); //boxorpiece.add(new SelectOption('盒', '盒')); //boxorpiece.add(new SelectOption('个', '个')); hospitalSpecialOffer = false; hosPro = false; } //附件 public ConsumableorderdetailsInfo(Attachment e) { concc = e; hospitalSpecialOffer = false; hosPro = false; } public ConsumableorderdetailsInfo(Product2__c e) { check = false; oldCheck = false; orderdetails1 = new Consumable_Orderdetails__c(); orderdetails2 = new Consumable_order_details2__c(); Prod = e; //oldConsumableCount = null; canSelect = true; allnumber = 0; Boxnumber = 0; Piecenumber = 0; orderdetails1.Box_Piece__c = '盒'; boxorpiece = new List(); boxorpiece.add(new SelectOption('盒', '盒')); boxorpiece.add(new SelectOption('个', '个')); boxorpieceMap = new Map(); boxorpieceMap.put('盒', '盒'); boxorpieceMap.put('个', '个'); hospitalSpecialOffer = false; hosPro = false; } // 排序 public Integer compareTo(Object compareTo) { ConsumableorderdetailsInfo compareToorderdetails1 = (ConsumableorderdetailsInfo) compareTo; Integer returnValue = 0; if (sortBy == false) { if (Boxnumber > compareToorderdetails1.Boxnumber) { returnValue = -1; } else if (Boxnumber < compareToorderdetails1.Boxnumber) { returnValue = 1; } return returnValue; } else { if (Boxnumber > compareToorderdetails1.Boxnumber) { returnValue = 1; } else if (Boxnumber < compareToorderdetails1.Boxnumber) { returnValue = -1; } return returnValue; } } } class ConsumableorderdetailsInfoLwc{ @AuraEnabled public Boolean check { get; set; } @AuraEnabled public Boolean oldCheck { get; set; } @AuraEnabled public Consumable_Orderdetails__c orderdetails1 { get; set; } @AuraEnabled public Consumable_order_details2__c orderdetails2 { get; set; } @AuraEnabled public Product2__c Prod { get; set; } @AuraEnabled public Decimal Boxnumber { get; set; } @AuraEnabled public Decimal Piecenumber { get; set; } @AuraEnabled public Decimal allnumber { get; set; } @AuraEnabled public Decimal oldConsumableCount { get; set; } @AuraEnabled public Boolean canSelect { get; set; } @AuraEnabled public Boolean sortBy { get; set; } @AuraEnabled public Integer packinglist { get; set; } @AuraEnabled public String approbation_No { get; set; } @AuraEnabled public Date expiration_Date { get; set; } @AuraEnabled public String boxorpiecein { get; set; } public List boxorpiece { get; set; } @AuraEnabled public Map boxorpieceMap { get; set; } @AuraEnabled public Attachment concc { get; set; } @AuraEnabled public String BoxPiece { get; set; } @AuraEnabled public Boolean hospitalSpecialOffer { get; set; } @AuraEnabled public Boolean hosPro { get; set; } @AuraEnabled public List> unitOptions{ get; set; } @AuraEnabled public String unitValue{ get; set; } @AuraEnabled public Integer shipmentNumber{ get; set; } @AuraEnabled public Decimal shippingUnitPrice{ get; set; } @AuraEnabled public String recordId{ get; set; } @AuraEnabled public String Id{ get; set; } @AuraEnabled public String Name{ get; set; } @AuraEnabled public String Category3{ get; set; } @AuraEnabled public String Category4{ get; set; } @AuraEnabled public String Category5{ get; set; } } }