public without sharing class ArriveGoodsController { public String barcode { get; set; } public Consumable_order__c coc { get; set; } /*****************画面表示Bean******************/ public List ConsumableorderdetailsRecords = new List(); public List consumableorderdetailsRecordsUse = new List(); public List consumableInventory { get; set; } public List detailsSummary { get; set; } public List consumableInventoryUse = new List(); //更新明细取消时间 public List consumableorderdetails2Cancle = new List(); // 更新借调信息 add by gzw 2020-0-415 start Map orderdetails2trMap = new Map(); // 更新借调信息 add by gzw 2020-0-415 end public List consumableorderdetails2Insert = new List(); public List consumableorderdetails2Nobox = new List(); public List ConsumableorderdetailsRecordserror { get; set; } public transient List ConsumableorderdetailsRecordsdummy { get; set; } public List ShowGoodsofReturnList { get; set; } public List ShowGoodsofRemoveBoxReturnList { get; set; } //add by rentx 20210602 CHAN-C3K4ZQ public List> consumableorderdetailsRecordsview { get; set; } //add by rentx 20210602 CHAN-C3K4ZQ public List GrList = new List(); //超出定货数量的产品 public List cancellationProList = new List(); //错误信息 public String alertMessage { get; set; } public integer getinventorysize() { return consumableInventory.size(); } public integer geterrorsize() { return ConsumableorderdetailsRecordserror.size(); } Set noboxBarcodeList = new Set(); public transient Map ExistIdMap = new Map(); public transient Map ErrorIdMap = new Map(); public transient Map AllMap = new Map(); Map otherAgencyMap = new Map(); public transient Map barMcodeMap = new Map(); Map BarcodeCntMap = new Map(); //qi public transient List BarCodeListP = new List(); // public transient Map OrderAllMap = new Map(); Map orderProductCunMap = new Map(); Map orderProductArrivedCunMap = new Map(); Map orderWantArriveCunMap = new Map(); //超出型号和数量 Map overOrderCunMap = new Map(); //超出BARCODE和型号 Map> overOrderBARcodeCunMap = new Map>(); list overOrderBARcodeTTTTTT = new List(); //不符合的barcode和型号 Map> notEqualBARcodeCunMap = new Map>(); list overOrderBARcodeSSSSSS = new List(); list productList = new List(); list notInlist = new List(); //不选择订单时保存订单ID、产品型号用 //List orderId = new List(); //List prodName = new List(); //库存登录使用 list notInStorelist = new List(); list exitBarCodeList = new List(); // Map reallMap = new Map(); Map HosErrorMap = new Map(); List HosErrorList = new List(); public String baseUrl { get; private set; } public String ESetId { get; set; } public String arriveId = ''; private String accountid = null; private String accountName = null; //public String[] proidList =new String[]{}; public Decimal orderCountAll = 0; public Decimal orderCountNotarrive = 0; //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 public id return_Order_id = null; public id inventory_Order_id = null; public boolean ReturnFLGbln { get; set; } public boolean saveFLGbln { get; set; } public String ArrType { get; set; } // 登录者工作地 private String userWorkLocation; //用户产品区分 public String userPro_Typestr = null; public String userPro_Type = null; public String product_Type = null; public Boolean EngFlag = false; public Boolean ETFlag = false; //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 public Boolean isLwc = false; public String returnError; public List warningList; public List errorList; public String urlType; public ArriveGoodsController() { baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); ESetId = ApexPages.currentPage().getParameters().get('esetId'); ArrType = ApexPages.currentPage().getParameters().get('ArrType'); ConsumableorderdetailsRecords = new List(); ConsumableorderdetailsRecordserror = new List(); ConsumableorderdetailsRecordsdummy = new List(); consumableInventory = new List(); consumableorderdetailsRecordsUse = new List(); consumableInventoryUse = new List(); consumableorderdetails2Cancle = new List(); orderdetails2trMap = new Map(); detailsSummary = new List(); saveFLGbln = false; //overOrderBARcodeTTTTTT.add(''); //add by rentx 20210602 CHAN-C3K4ZQ start consumableorderdetailsRecordsview = new List>(); //add by rentx 20210602 CHAN-C3K4ZQ end // OrderAllMap = new Map(); } //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 public ArriveGoodsController(String eSetId, String arrType) { this.ESetId = eSetId; this.ArrType = arrType; ConsumableorderdetailsRecords = new List(); ConsumableorderdetailsRecordserror = new List(); ConsumableorderdetailsRecordsdummy = new List(); consumableInventory = new List(); consumableorderdetailsRecordsUse = new List(); consumableInventoryUse = new List(); consumableorderdetails2Cancle = new List(); orderdetails2trMap = new Map(); detailsSummary = new List(); saveFLGbln = false; consumableorderdetailsRecordsview = new List>(); noboxBarcodeList = new Set(); //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 warningList = new List(); errorList = new List(); returnError = null; urlType = null; } //add by rentx 20210602 CHAN-C3K4ZQ start 出错的原因是页面最多展示1000条数据,但是需要展示的数据超过了1000条,现在把展示上线改为1000 * 1000 public void makeRecordsView(List recordsdummy) { consumableorderdetailsRecordsview = new List>(); if (recordsdummy.size() > 1000) { List ConsumableorderdetailsRecordsbreak = new List(); List ConsumableorderdetailsRecordsbreakover = new List(); ConsumableorderdetailsInfo c = null; ConsumableorderdetailsRecordsbreak.clear(); ConsumableorderdetailsRecordsbreakover.clear(); consumableorderdetailsRecordsview.clear(); //选择产品view ConsumableorderdetailsRecordsbreak = new List(); ConsumableorderdetailsRecordsbreakover = new List(); if (recordsdummy.size() > 1000) { for (Integer i = 0; i < recordsdummy.size(); i++) { if (i < 1000) { c = recordsdummy.get(i); ConsumableorderdetailsRecordsbreak.add(c); } else { c = recordsdummy.get(i); ConsumableorderdetailsRecordsbreakover.add(c); } } consumableorderdetailsRecordsview.add( ConsumableorderdetailsRecordsbreak ); consumableorderdetailsRecordsview.add( ConsumableorderdetailsRecordsbreakover ); } else { consumableorderdetailsRecordsview.add(recordsdummy); } // Integer count = recordsdummy.size() / 1000; // Integer last = recordsdummy.size() - (1000*count); // for(Integer i = 0; i < count ; i++){ // List tempList = new List(); // for(Integer j=0; j < 1000; j++){ // tempList.add(recordsdummy.get(i * count + j )); // // itemList.add(resList.get(i*count+j)); // } // consumableorderdetailsRecordsview.add(tempList); // } // if (last > 0) { // List tempList = new List(); // for(Integer j=0; j < last; j++){ // tempList.add(recordsdummy.get(count * 1000 + j )); // // itemList.add(resList.get(i*count+j)); // } // consumableorderdetailsRecordsview.add(tempList); // } } else { consumableorderdetailsRecordsview.add(recordsdummy); } } //add by rentx 20210602 CHAN-C3K4ZQ end public void init() { // String userId = '00510000007cthP'; String userId = UserInfo.getUserId(); List Useracc = new List(); Useracc = [ SELECT accountid, Work_Location__c, UserPro_Type__c FROM user WHERE id = :userId ]; accountid = Useracc[0].accountid; //--------AddStart-----XHL--------------20181008------------- userPro_Type = Useracc[0].UserPro_Type__c; if (String.isBlank(userPro_Type)) { userPro_Type = 'ET'; } if (userPro_Type == 'ENG') { product_Type = 'ET'; EngFlag = true; } else { product_Type = 'ENG'; ETFlag = true; } userPro_Typestr = '%' + userPro_Type + '%'; //--------AddEnd-----XHL--------------20181008------------- userWorkLocation = Useracc[0].Work_Location__c; system.debug('userWorkLocation' + userWorkLocation); List accountInfo = [ SELECT Name FROM account WHERE id = :accountid ]; accountName = accountInfo[0].Name; system.debug('accountName' + accountName); coc = new Consumable_order__c(); if (ArrType == 'ReG') { ReturnFLGbln = true; } else { ReturnFLGbln = false; } if (ESetId != '' && ESetId != null) { List qs = new List(); List reSet1 = new List(); List reSet = new List(); qs = [ SELECT Id, Name, Order_status__c, Dealer_Info__c, Deliver_date__c, ReturnGs_Upload_Date__c, Order_Reason__c, Order_date__c, Contract_application_decision__c, Order_type__c, Total_num__c, OrderNumber_arrived__c, Delivery_detail_count__c, OrderNumber_notarrive__c, orderPattern__c FROM Consumable_order__c WHERE Id = :ESetId AND Order_Owner_WorkLocal__c = :userWorkLocation AND Dealer_Info__c = :accountid ]; if (qs.size() > 0) { coc = qs[0]; orderCountAll = coc.Total_num__c; orderCountNotarrive = coc.OrderNumber_notarrive__c; } //产品定货数量 reSet = [ SELECT Asset_Model_No__c, Consumable_order__c, Consumable_count__c FROM Consumable_Orderdetails__c WHERE Consumable_order__c = :ESetId AND Order_Owner_WorkLocal__c = :userWorkLocation ]; for (Integer i = 0; i < reSet.size(); i++) { productList.add(reSet[i].Asset_Model_No__c); orderProductCunMap.put( reSet[i].Asset_Model_No__c, reSet[i].Consumable_count__c ); orderProductArrivedCunMap.put(reSet[i].Asset_Model_No__c, 0); orderWantArriveCunMap.put(reSet[i].Asset_Model_No__c, 0); overOrderCunMap.put(reSet[i].Asset_Model_No__c, 0); overOrderBARcodeCunMap.put( reSet[i].Asset_Model_No__c, overOrderBARcodeTTTTTT ); //overOrderCunMap.put(reSet[i].Asset_Model_No__c,0); } // reSet1 = [ SELECT Id, Name, Intra_Trade_List_RMB__c, Asset_Model_No__c, Consumable_Product__c, Consumable_Product__r.Name, Consumable_Product__r.Name__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, Guarantee_period_for_products__c, CFDA_Status__c, Box_Piece__c, Rrturn_count__c, ProductPacking_list_manual__c, Report_Product_Approbation__c, Report_Product_Expiration__c, //add by rentx 2020-10-14 start ContractNo_text__c /*,ContractNo__c1*/, // tcm start Consumable_order_minor__r.ContractNo__c // tcm end //add by rentx 2020-10-14 end FROM Consumable_order_details2__c WHERE recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery AND Arrive_Owner_Work_Location__c = :userWorkLocation AND Consumable_order_minor__c = :ESetId AND Dealer_Arrive__c = TRUE AND Box_Piece__c != '个' ]; for (Integer i = 0; i < reSet1.size(); i++) { // OrderAllMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); //init的时候不展示已经入库的明细 by rentx 20210617 CHAN-C3K4ZQ // ConsumableorderdetailsRecordsdummy.add(new ConsumableorderdetailsInfo(reSet1[i])); //update by rentx 20210617 end CHAN-C3K4ZQ if ( orderProductArrivedCunMap.containsKey(reSet1[i].Asset_Model_No__c) ) { orderProductArrivedCunMap.put( reSet1[i].Asset_Model_No__c, orderProductArrivedCunMap.get(reSet1[i].Asset_Model_No__c) + 1 ); } } //add by rentx 20210602 start CHAN-C3K4ZQ // makeRecordsView(ConsumableorderdetailsRecordsdummy); //add by rentx 20210602 end CHAN-C3K4ZQ } } //========20160311======ADD_Start================================ // 将页面或取得BarCode去掉重复的,转换成List //========20160311======ADD_Start================================ public List ParseBarCode(String Code) { String[] Cache = new List{}; Cache = Code.split('\n'); Set Buff = new Set(); for (String A : Cache) { Buff.add(A.toUpperCase()); } List outPut = new List(); for (String B : Buff) { B = B.trim(); if (B.length() > 8) { String tracingCode = B.substring(B.length() - 5, B.length()); barMcodeMap.put(B, tracingCode); } outPut.add(B); } system.debug('barMcodeMap等于' + barMcodeMap); return outPut; } //========20160311======ADD_End================================== //获取明细 public void SearchPro() { //从下边移上来 by Link 2023-5-23 if (barcode == null || barcode.trim() == '') { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { returnError = '请输入BarCode号'; } else { ApexPages.addmessage( new ApexPages.message(ApexPages.severity.INFO, '请输入BarCode号。') ); } return; } notInlist = new List(); otherAgencyMap = new Map(); barMcodeMap = new Map(); consumableInventory = new List(); consumableInventoryUse = new List(); consumableorderdetails2Cancle = new List(); orderdetails2trMap = new Map(); //update by Link 20230428 if (isLwc) { noboxBarcodeList = new Set(); } //add by rentx 2021-01-27 start HosErrorList = new List(); HosErrorMap = new Map(); //add by rentx 2021-01-27 end noboxBarcodeList.clear(); //再检索项目清空 ConsumableorderdetailsRecordserror = new List(); ErrorIdMap = new Map(); ErrorIdMap.clear(); AllMap = new Map(); AllMap.clear(); ExistIdMap = new Map(); ExistIdMap.clear(); consumableorderdetails2Insert = new List(); ConsumableorderdetailsRecordsdummy = new List(); /*if(EsetId != null && EsetId != ''){ List reSet1 = [SELECT Id, Name, Intra_Trade_List_RMB__c, Asset_Model_No__c, Consumable_Product__c, Consumable_Product__r.Name, Consumable_Product__r.Name__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, Guarantee_period_for_products__c, CFDA_Status__c, Box_Piece__c, Rrturn_count__c, ProductPacking_list_manual__c, Report_Product_Approbation__c, Report_Product_Expiration__c //add by rentx 2020-10-14 start ,ContractNo_text__c,/*ContractNo__c1* //add by rentx 2020-10-14 end ,hospitalSpecialOffer__c FROM Consumable_order_details2__c WHERE recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery AND Consumable_order_minor__c = :ESetId AND Arrive_Owner_Work_Location__c =: userWorkLocation AND Dealer_Arrive__c = true ]; for (Integer i = 0; i < reSet1.size(); i++) { // OrderAllMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); //add by rentx 2021-01-27 // reallMap.put(reSet1[i].Bar_Code__C, reSet1[i]); //add by rentx 2021-01-27 //不需要展示已到货的明细 update by rentx 20210617 start CHAN-C3K4ZQ // ConsumableorderdetailsRecordsdummy.add(new ConsumableorderdetailsInfo(reSet1[i])); //不需要展示已到货的明细 update by rentx 20210617 end CHAN-C3K4ZQ //if(orderProductArrivedCunMap.containsKey(reSet1[i].Asset_Model_No__c)){ // orderProductArrivedCunMap.put(reSet1[i].Asset_Model_No__c,orderProductArrivedCunMap.get(reSet1[i].Asset_Model_No__c)+1); //} } }*/ ConsumableorderdetailsRecords = new List(); BarCodeListP = new List(); BarCodeListP = ParseBarCode(barcode); Consumable_order_details2__c p = new Consumable_order_details2__c(); List Ins = new List(); List reSet = new List(); List reSet1 = new List(); //移到最上边 by Link 2023-5-23 // if(barcode == null || barcode.trim() ==''){ // //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 // if(isLwc){ // returnError = '请输入BarCode号'; // }else { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO,'请输入BarCode号。')); // } // return; // } //对比全部库存中是否存在管理编码一样,barcode号不一样的产品 reSet1 = [ SELECT Id, Name, TracingCode__c, Bar_Code__c, Report_Product_Expiration__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 Dealer_Returned__c = FALSE AND Cancellation_Flag__c = FALSE AND TracingCode__c IN :barMcodeMap.values() AND Bar_Code__c NOT IN :barMcodeMap.keySet() AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c = :userWorkLocation ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { for (String str : barMcodeMap.keySet()) { if (barMcodeMap.get(str) == reSet1[i].TracingCode__c) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( str + ' 的管理编码已经存在于系统的库存中,请确认输入信息是否有误。' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, str + ' 的管理编码已经存在于系统的库存中,请确认输入信息是否有误。' ) ); } ErrorIdMap.put(str, str); ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } } } //管理编码为空的产品 reSet1 = [ SELECT Id, Name, Consumable_Product__r.Name__c, Consumable_Product__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Box_Piece__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, TracingCode__c, Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Bar_Code__c IN :BarCodeListP AND Dealer_Info_text__c = :accountName //AND Arrive_Owner_Work_Location__c =: userWorkLocation AND (TracingCode__c = NULL OR TracingCode__c = '') ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '该产品没有管理编码,无法入库'; ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(reSet1[i], str) ); ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '管理编码为空的产品 ' + ErrorIdMap)); //整体到货 System.debug('EsetId===>' + EsetId); System.debug('ArrType===>' + ArrType); if (EsetId == null || EsetId == '') { if (ArrType != 'ReG') { //到货但产品类型与用户的类型不符 reSet1 = [ 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.Asset_Model_No__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, Guarantee_period_for_products__c, CFDA_Status__c, ProductPacking_list_manual__c, Report_Product_Approbation__c, Report_Product_Expiration__c, Box_Piece__c, Rrturn_count__c, Product_Type__c, ContractNo_text__c /*,ContractNo__c1*/, // tcm start Consumable_order_minor__r.ContractNo__c // tcm end FROM Consumable_order_details2__c WHERE Bar_Code__c IN :BarCodeListP AND (NOT Product_Type__c LIKE :userPro_Typestr) AND Dealer_Info_text__c = :accountName AND ((Consumable_order_minor__c != NULL AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation) OR Consumable_order_minor__c = NULL) ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '产品类型[' + reSet1[i].Product_Type__c + ']与用户的类型[' + userPro_Type + ']不符'; ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(reSet1[i], str) ); ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } System.debug('reSet1===>' + reSet1); //add by Wang Xueqin //到货但产品类型与用户的类型不符 reSet1 = [ 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.Asset_Model_No__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, Guarantee_period_for_products__c, CFDA_Status__c, ProductPacking_list_manual__c, Report_Product_Approbation__c, Report_Product_Expiration__c, Box_Piece__c, Rrturn_count__c, Product_Type__c, ContractNo_text__c, Consumable_order_minor__r.ContractNo__c FROM Consumable_order_details2__c WHERE Bar_Code__c IN :BarCodeListP AND (NOT Product_Type__c LIKE :userPro_Typestr) ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '产品类型[' + reSet1[i].Product_Type__c + ']与用户的类型[' + userPro_Type + ']不符'; ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(reSet1[i], str) ); ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } System.debug('reSet1===>1' + reSet1); //end //销售产品 reSet1 = [ SELECT Id, Name, Consumable_Product__r.Name__c, Consumable_Product__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Box_Piece__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, OwnerId, Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Saled__c = TRUE AND Dealer_Returned__c = FALSE AND Bar_Code__c IN :BarCodeListP AND Dealer_Info_text__c = :accountName AND (Arrive_Owner_Work_Location__c = :userWorkLocation OR OwnerId = :System.Label.User_OlympusSystem) ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = ''; if (reSet1[i].OwnerId == System.Label.User_OlympusSystem) { str = '该商品是直销产品请先返品'; } else { str = '该商品已经销售'; } ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(reSet1[i], str) ); ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } //出库产品 reSet1 = [ SELECT Id, Name, Consumable_Product__r.Name__c, Consumable_Product__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Box_Piece__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Shipment__c = TRUE AND Dealer_Returned__c = FALSE AND Bar_Code__c IN :BarCodeListP AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c = :userWorkLocation ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '该商品已经出库'; ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(reSet1[i], str) ); ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } //已到货产品 reSet1 = [ SELECT Id, Name, Consumable_Product__r.Name__c, Consumable_Product__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Lose_Flag__c, Box_Piece__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND Dealer_Returned__c = FALSE AND Bar_Code__c IN :BarCodeListP AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c = :userWorkLocation ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '该商品已经到货'; if (reSet1[i].Lose_Flag__c == true) { str = '该商品已经丢失'; } ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(reSet1[i], str) ); ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } //已拆盒产品 reSet1 = [ SELECT Id, Name, Consumable_Product__r.Name__c, Consumable_Product__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Box_Piece__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND Bar_Code__c IN :BarCodeListP AND (Dealer_Info_text__c != :accountName OR (Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c != :userWorkLocation)) AND Box_Piece__c = '个' ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '已拆盒的产品不能入库'; ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(reSet1[i], str) ); ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } // 经销商之间或者同一经销商不同工作地调货 reSet1 = [ SELECT Id, Name, Consumable_Product__r.Name__c, Asset_Model_No__c, Arrive_Owner_Work_Location__c, Consumable_Product__c, Consumable_Product__r.Name, Sterilization_limit__c, Box_Piece__c, Deliver_date__c, Bar_Code__c, TracingCode__c, Dealer_Info_text__c, OwnerId, Lose_Flag__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, SerialLotNo__c, Dealer_Arrive__c, Consumable_Arrived_order__r.Dealer_Info__c, Consumable_Arrived_order__r.Dealer_Info__r.Name, Intra_Trade_List_RMB__c, Dealer_Shipment__c, Dealer_Saled__c, Consumable_Product__r.Asset_Model_No__c, // 更新借调信息 add by gzw 2020-0-415 start SummonsForDirction_det__c, Transfer_Time__c, Frist_Transfer_Agency__c, Agency_Transfer__c, // 更新借调信息 add by gzw 2020-0-415 start // 首次入库经销商信息 add by gzw 2020-04-27 start Agencyinfo_fromSAP__c, Frist_Storage_Agency__c, // 首次入库经销商信息 add by gzw 2020-04-27 end //add by rentx 2020-10-13 start 互相调货时,借入方记录SAP合同号 ContractNo_text__c /*,ContractNo__c */, // tcm start Consumable_order_minor__r.ContractNo__c, // tcm end //add by rentx 2020-10-13 end //add by rentx 2021-03-22 start hospitalSpecialOffer__c, exchangeOutPattern__c, Report_Product_Expiration__c //add by rentx 2021-03-22 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 Cancellation_Flag__c = FALSE AND Bar_Code__c IN :BarCodeListP //AND (Dealer_Shipment__c = FALSE // OR (Dealer_Shipment__c = TRUE // AND Consumable_Shipment_order__r.SummonsForDirction__c != '互相调货')) AND (Dealer_Info_text__c != :accountName OR (Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c != :userWorkLocation)) // 更新借调信息 add by gzw 2020-0-415 start ORDER BY Bar_Code__c, Transfer_Time__c DESC // 更新借调信息 add by gzw 2020-0-415 end ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { if (otherAgencyMap.containsKey(reSet1[i].Bar_Code__c)) { continue; } else { //其他经销商出库产品可以入库 List barcodedetList = new List(); barcodedetList.add(reSet1[i].Bar_Code__c); barcodedetList.add( String.valueOf(reSet1[i].Sterilization_limit__c) ); barcodedetList.add(reSet1[i].SerialLotNo__c); barcodedetList.add(reSet1[i].TracingCode__c); if (reSet1[i].Lose_Flag__c == false) { //&& reSet1[i].Dealer_Info_text__c == accountName consumableorderdetails2Cancle.add(reSet1[i]); } // 更新借调信息 add by gzw 2020-0-415 start if ( reSet1[i].SummonsForDirction_det__c == '互相调货' && !orderdetails2trMap.containsKey(reSet1[i].Bar_Code__c) ) { orderdetails2trMap.put(reSet1[i].Bar_Code__c, reSet1[i]); } // 更新借调信息 add by gzw 2020-0-415 end consumableInventory.add( new ConsumableorderdetailsInfo(reSet1[i], barcodedetList) ); Consumable_order_details2__c codsIns = new Consumable_order_details2__c(); codsIns.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery; codsIns.Intra_Trade_List_RMB__c = reSet1[i] .Intra_Trade_List_RMB__c; //gzw 手动入库 默认产品单价 20230307 codsIns.Asset_Model_No__c = reSet1[i].Asset_Model_No__c; codsIns.Direct_Arrive_Product__c = true; codsIns.Sterilization_limit__c = reSet1[i] .Sterilization_limit__c; codsIns.Consumable_Product__c = reSet1[i].Consumable_Product__c; codsIns.Bar_Code__c = reSet1[i].Bar_Code__c; codsIns.SerialLotNo__c = reSet1[i].SerialLotNo__c; codsIns.TracingCode__c = reSet1[i].TracingCode__c; // 更新借调信息 add by gzw 2020-0-415 start codsIns.Transfer_Time__c = reSet1[i].Transfer_Time__c == null ? 1 : reSet1[i].Transfer_Time__c; codsIns.Frist_Transfer_Agency__c = reSet1[i] .Frist_Transfer_Agency__c == null ? reSet1[i].Dealer_Info_text__c : reSet1[i].Frist_Transfer_Agency__c; codsIns.Agency_Transfer__c = true; // 更新借调信息 add by gzw 2020-0-415 end // 追加首次入库经销商 add by gzw 2020-04-27 start codsIns.Agencyinfo_fromSAP__c = reSet1[i].Agencyinfo_fromSAP__c; codsIns.Frist_Storage_Agency__c = reSet1[i] .Frist_Storage_Agency__c; // 追加首次入库经销商 add by gzw 2020-04-27 end //add by rentx 2020-10-13 start 互相调货时,记录SAP合同号 // update tcm start if ( String.isBlank( reSet1[i].Consumable_order_minor__r.ContractNo__c ) ) { codsIns.ContractNo_text__c = reSet1[i].ContractNo_text__c; } else { codsIns.ContractNo_text__c = reSet1[i] .Consumable_order_minor__r.ContractNo__c; } // update tcm end //add by rentx 2020-10-13 end //add by rentx 2021-03-22 start // if (reSet1[i].Lose_Flag__c == true){ if ( reSet1[i].hospitalSpecialOffer__c == true && reSet1[i].SummonsForDirction_det__c == '互相调货' ) { codsIns.exchangeOutPattern__c = true; } //add by rentx 2021-03-22 end consumableorderdetails2Insert.add(codsIns); otherAgencyMap.put( reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c ); //String str = '该商品在其他经销商库存'; //ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str)); //ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); } } } } //发错库 未到货 reSet1 = [ SELECT Id, Name, Consumable_Product__r.Name__c, Asset_Model_No__c, Consumable_Product__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, TracingCode__c, Box_Piece__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, SerialLotNo__c, Dealer_Arrive__c, Dealer_Shipment__c, Dealer_Saled__c, Consumable_Product__r.Asset_Model_No__c, // 更新借调信息 add by gzw 2020-0-415 start SummonsForDirction_det__c, Transfer_Time__c, Frist_Transfer_Agency__c, Agency_Transfer__c, Dealer_Info_text__c, Intra_Trade_List_RMB__c, // 更新借调信息 add by gzw 2020-0-415 start // 首次入库经销商信息 add by gzw 2020-04-27 start Agencyinfo_fromSAP__c, Frist_Storage_Agency__c, // 首次入库经销商信息 add by gzw 2020-04-27 end //add by rentx 2020-10-13 start 互相调货时,借入方记录SAP合同号 ContractNo_text__c /*,ContractNo__c*/, // tcm start Consumable_order_minor__r.ContractNo__c, // tcm end //add by rentx 2020-10-13 end 互相调货时,借入方记录SAP合同号 hospitalSpecialOffer__c, exchangeOutPattern__c, Lose_Flag__c, Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = FALSE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE //AND Cancellation_Flag__c = FALSE AND Bar_Code__c IN :BarCodeListP AND (Dealer_Info_text__c != :accountName OR (Dealer_Info_text__c = :accountName AND ((Consumable_order_minor__c != NULL AND (Consumable_order_minor__r.Order_Owner_WorkLocal__c != :userWorkLocation OR (Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation AND Cancellation_Flag__c = TRUE))) OR (Consumable_order_minor__c = NULL AND Cancellation_Flag__c = TRUE)))) // 更新借调信息 add by gzw 2020-0-415 start ORDER BY Bar_Code__c, Transfer_Time__c DESC // 更新借调信息 add by gzw 2020-0-415 end ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { if (otherAgencyMap.containsKey(reSet1[i].Bar_Code__c)) { continue; } else { //取消明细 List barcodedetList = new List(); barcodedetList.add(reSet1[i].Bar_Code__c); barcodedetList.add( String.valueOf(reSet1[i].Sterilization_limit__c) ); barcodedetList.add(reSet1[i].SerialLotNo__c); barcodedetList.add(reSet1[i].TracingCode__c); // 发错库存时,自动取消 update by gzw 2020-04-15 start //if (reSet1[i].Consumable_order_minor__c == null) { consumableorderdetails2Cancle.add(reSet1[i]); //} // 发错库存时,自动取消 update by gzw 2020-04-15 start // 更新借调信息 add by gzw 2020-0-415 start if ( reSet1[i].SummonsForDirction_det__c == '互相调货' && !orderdetails2trMap.containsKey(reSet1[i].Bar_Code__c) ) { orderdetails2trMap.put(reSet1[i].Bar_Code__c, reSet1[i]); } // 更新借调信息 add by gzw 2020-0-415 end consumableInventory.add( new ConsumableorderdetailsInfo(reSet1[i], barcodedetList) ); Consumable_order_details2__c codsIns = new Consumable_order_details2__c(); codsIns.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery; codsIns.Intra_Trade_List_RMB__c = reSet1[i] .Intra_Trade_List_RMB__c; //gzw 手动入库 默认产品单价 20230307 codsIns.Asset_Model_No__c = reSet1[i].Asset_Model_No__c; codsIns.Direct_Arrive_Product__c = true; codsIns.Sterilization_limit__c = reSet1[i] .Sterilization_limit__c; codsIns.Consumable_Product__c = reSet1[i].Consumable_Product__c; codsIns.Bar_Code__c = reSet1[i].Bar_Code__c; codsIns.SerialLotNo__c = reSet1[i].SerialLotNo__c; codsIns.TracingCode__c = reSet1[i].TracingCode__c; // 更新借调信息 add by gzw 2020-0-415 start // 没有入库时,没有借调信息 codsIns.Transfer_Time__c = reSet1[i].Transfer_Time__c; codsIns.Frist_Transfer_Agency__c = reSet1[i] .Frist_Transfer_Agency__c; codsIns.Agency_Transfer__c = reSet1[i].Agency_Transfer__c; // 更新借调信息 add by gzw 2020-0-415 end // 追加首次入库经销商 add by gzw 2020-04-27 start codsIns.Agencyinfo_fromSAP__c = reSet1[i].Agencyinfo_fromSAP__c; codsIns.Frist_Storage_Agency__c = reSet1[i] .Frist_Storage_Agency__c; // 追加首次入库经销商 add by gzw 2020-04-27 end //add by rentx 2020-10-13 start 互相调货时,借入方记录SAP合同号 // update tcm start if ( String.isBlank( reSet1[i].Consumable_order_minor__r.ContractNo__c ) ) { codsIns.ContractNo_text__c = reSet1[i].ContractNo_text__c; } else { codsIns.ContractNo_text__c = reSet1[i] .Consumable_order_minor__r.ContractNo__c; } // update tcm end //add by rentx 2020-10-13 end 互相调货时,借入方记录SAP合同号 //add by rentx 2021-03-22 start // if (reSet1[i].Lose_Flag__c == true){ if ( reSet1[i].hospitalSpecialOffer__c == true && reSet1[i].SummonsForDirction_det__c == '互相调货' ) { codsIns.exchangeOutPattern__c = true; } //add by rentx 2021-03-22 end consumableorderdetails2Insert.add(codsIns); otherAgencyMap.put( reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c ); } } } } } else { //返品检查 //到货但产品类型与用户的类型不符 reSet1 = [ 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.Asset_Model_No__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, Guarantee_period_for_products__c, CFDA_Status__c, ProductPacking_list_manual__c, Report_Product_Approbation__c, Report_Product_Expiration__c, Box_Piece__c, Rrturn_count__c, Product_Type__c, //add by rentx 2020-10-14 start ContractNo_text__c /*,ContractNo__c*/, // tcm start Consumable_order_minor__r.ContractNo__c // tcm end //add by rentx 2020-10-14 end FROM Consumable_order_details2__c WHERE Bar_Code__c IN :BarCodeListP AND (NOT Product_Type__c LIKE :userPro_Typestr) AND Dealer_Info_text__c = :accountName AND ((Consumable_order_minor__c != NULL AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation) OR Consumable_order_minor__c = NULL) ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '产品类型[' + reSet1[i].Product_Type__c + ']与用户的类型[' + userPro_Type + ']不符'; ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(reSet1[i], str) ); ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } reSet1 = [ SELECT Id, Name, Consumable_Product__r.Name__c, Consumable_Product__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Box_Piece__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, //add by rentx 2020-10-14 start ContractNo_text__c /*,ContractNo__c*/, // tcm start Consumable_order_minor__r.ContractNo__c, // tcm end Report_Product_Expiration__c //add by rentx 2020-10-14 end FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = FALSE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE // gzw fix 取消产品判断为未入库 20230323 AND Cancellation_Flag__c = FALSE AND Dealer_Returned__c = FALSE AND Bar_Code__c IN :BarCodeListP AND Dealer_Info_text__c = :accountName ORDER BY Name ]; //没到货 if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '该商品尚未入库'; ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(reSet1[i], str) ); ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } reSet1 = [ SELECT Id, Name, Consumable_Product__r.Name__c, ToDueDateDays__c, Consumable_Product__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Lose_Flag__c, Box_Piece__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, //add by rentx 2020-10-14 start ContractNo_text__c /*,ContractNo__c*/, // tcm start Consumable_order_minor__r.ContractNo__c, // tcm end Report_Product_Expiration__c //add by rentx 2020-10-14 end FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Bar_Code__c IN :BarCodeListP AND Dealer_Returned__c = FALSE // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start //AND Lose_Flag__c = FALSE // AND Lose_Flag__c = FALSE // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c = :userWorkLocation // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start // Gzw 20201215修复,拆盒产品不判断 AND Box_Piece__c = '盒' // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end ORDER BY Name ]; //没出库,没销售,就是在库 if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start // String str = '该商品在库'; // if (reSet1[i].Lose_Flag__c) { // str = '该商品丢失'; // } String str = ''; if (reSet1[i].Lose_Flag__c == false) { str = '该商品在库'; //没出库 ,没销售,没丢失就是在库。 } if ( reSet1[i].Lose_Flag__c == true && reSet1[i].ToDueDateDays__c >= 0 ) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { warningList.add( '产品' + reSet1[i].Consumable_Product__r.Name + '存在丢失记录' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.WARNING, '产品' + reSet1[i].Consumable_Product__r.Name + '存在丢失记录' ) ); //如果丢失产品就给提示。 } } if ( reSet1[i].Lose_Flag__c == true && reSet1[i].ToDueDateDays__c < 0 ) { str = '过期已销存产品,不允许返品'; } if (str != '') { ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(reSet1[i], str) ); ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } // ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str)); // ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end } } } } //到货正确信息 reSet = [ 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.Asset_Model_No__c, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Box_Piece__c, Rrturn_count__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, Dealer_Arrive__c, Guarantee_period_for_products__c, CFDA_Status__c, ProductPacking_list_manual__c, Report_Product_Approbation__c, Report_Product_Expiration__c, Consumable_Product__r.Pro2_Dealer_ENG__c, Consumable_Product__r.Pro2_Dealer_Object__c, TracingCode__c, Agencyinfo_fromSAP__c, Frist_Storage_Agency__c, Dealer_Info_text__c, //add by rentx 2020-10-14 start ContractNo_text__c /*,ContractNo__c*/, // tcm start Consumable_order_minor__r.ContractNo__c // tcm end //add by rentx 2020-10-14 end FROM Consumable_order_details2__c WHERE recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery AND Cancellation_Date__c = NULL AND Dealer_Arrive__c = FALSE AND Product_Type__c LIKE :userPro_Typestr AND Bar_Code__c IN :BarCodeListP AND Dealer_Info_text__c = :accountName AND ((Consumable_order_minor__c != NULL AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation) OR Consumable_order_minor__c = NULL) ORDER BY Name ]; if (reSet.size() > 0) { //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'ErrorIdMap+++ '+ ErrorIdMap.keyset())); Map errorMap = new Map(); for (Integer i = 0; i < reSet.size(); i++) { if ( ExistIdMap.containsKey(reSet[i].Bar_Code__c) || ErrorIdMap.containsKey(reSet[i].Bar_Code__c) ) { // 跳过已经处理的消耗品明细 continue; } else { Matcher n = Pattern.compile('[0-9]') .matcher(reSet[i].TracingCode__c); if (n.find()) { // gzw DB202305352696 入库管理编码验证程序调整 start if (reSet[i].TracingCode__c.length() == 5) { String tr = reSet[i].TracingCode__c; String Ctr = tr.substring(tr.length() - 3, tr.length()); String Btr = tr.substring(tr.length() - 4, tr.length() - 3); String Atr = tr.substring(tr.length() - 5, tr.length() - 4); if ( Pattern.compile('[0-9]').matcher(Atr).find() || Pattern.compile('[0-9]').matcher(Ctr).find() ) { String str = '管理编码有误,请检查条形码数据。'; ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(reSet[i], str) ); ErrorIdMap.put(reSet[i].Bar_Code__c, reSet[i].Bar_Code__c); continue; } } // String str = '管理编码中有数字,请与管理员确认是否错误。'; // ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet[i],str)); // ErrorIdMap.put(reSet[i].Bar_Code__c,reSet[i].Bar_Code__c); // continue; // gzw DB202305352696 入库管理编码验证程序调整 end } if (otherAgencyMap.containsKey(reSet[i].Bar_Code__c)) { for (Integer j = 0; j < consumableInventory.size(); j++) { ConsumableorderdetailsInfo codInfo = consumableInventory.get(j); if (codInfo.barCodeNo == reSet[i].Bar_Code__c) { consumableInventory.remove(j); break; } } for ( Integer m = 0; m < consumableorderdetails2Insert.size(); m++ ) { Consumable_order_details2__c cod2 = consumableorderdetails2Insert.get( m ); if (cod2.Bar_Code__c == reSet[i].Bar_Code__c) { consumableorderdetails2Insert.remove(m); break; } } } //orderId.add(reSet[i].Consumable_order_minor__c); //prodName.add(reSet[i].Consumable_Product__r.Name); ConsumableorderdetailsRecordsdummy.add( new ConsumableorderdetailsInfo(reSet[i]) ); ConsumableorderdetailsRecords.add( new ConsumableorderdetailsInfo(reSet[i]) ); ExistIdMap.put(reSet[i].Bar_Code__c, reSet[i].Bar_Code__c); } } } //barcode不一致,管理编码一致 reSet = [ 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.Asset_Model_No__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, Guarantee_period_for_products__c, CFDA_Status__c, ProductPacking_list_manual__c, Report_Product_Approbation__c, Report_Product_Expiration__c, Box_Piece__c, Rrturn_count__c, TracingCode__c, Agencyinfo_fromSAP__c, Frist_Storage_Agency__c, //add by rentx 2020-10-14 start ContractNo_text__c /*,ContractNo__c */, // tcm start Consumable_order_minor__r.ContractNo__c // tcm end //add by rentx 2020-10-14 end FROM Consumable_order_details2__c WHERE recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery AND Dealer_Info_text__c = :accountName //update by rentx 2021-01-04 start CHAN-BWX3XW // AND Consumable_order_minor__c != null // AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation AND ((Consumable_order_minor__c != NULL AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation) OR Consumable_order_minor__c = NULL) //update by rentx 2021-01-04 end CHAN-BWX3XW AND Dealer_Arrive__c = FALSE AND Cancellation_Date__c = NULL AND TracingCode__c IN :barMcodeMap.values() AND Bar_Code__c NOT IN :barMcodeMap.keySet() ORDER BY Name ]; if (reSet.size() > 0) { for (Integer i = 0; i < reSet.size(); i++) { if ( ExistIdMap.containsKey(reSet[i].Bar_Code__c) || ErrorIdMap.containsKey(reSet[i].Bar_Code__c) ) { // 跳过已经处理的消耗品明细 continue; } else { Matcher n = Pattern.compile('[0-9]') .matcher(reSet[i].TracingCode__c); if (n.find()) { // gzw DB202305352696 入库管理编码验证程序调整 start if (reSet[i].TracingCode__c.length() == 5) { String tr = reSet[i].TracingCode__c; String Ctr = tr.substring(tr.length() - 3, tr.length()); String Btr = tr.substring(tr.length() - 4, tr.length() - 3); String Atr = tr.substring(tr.length() - 5, tr.length() - 4); if ( Pattern.compile('[0-9]').matcher(Atr).find() || Pattern.compile('[0-9]').matcher(Ctr).find() ) { String str = '管理编码有误,请检查条形码数据。'; ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(reSet[i], str) ); ErrorIdMap.put(reSet[i].Bar_Code__c, reSet[i].Bar_Code__c); continue; } } // String str = '管理编码中有数字,请与管理员确认是否错误。'; // ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet[i],str)); // ErrorIdMap.put(reSet[i].Bar_Code__c,reSet[i].Bar_Code__c); // continue; // gzw DB202305352696 入库管理编码验证程序调整 end } ExistIdMap.put(reSet[i].Bar_Code__c, reSet[i].Bar_Code__c); for (String str : barMcodeMap.keySet()) { // BarCode不一致时的警告信息 if ( reSet[i].Bar_Code__c != str && reSet[i].TracingCode__c == barMcodeMap.get(str) ) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { warningList.add( '条形码为(' + str + ')的入库数据与发货数据不一致' ); } else { // 20220815 ljh SWAG-CH65B7 start // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING,'此管理编码与实际发货BarCode不一致,请核对管理编码('+ str +')的入库及库存数据。')); ApexPages.addmessage( new ApexPages.message( ApexPages.severity.WARNING, '条形码为(' + str + ')的入库数据与发货数据不一致' ) ); // 20220815 ljh SWAG-CH65B7 end } } if (barMcodeMap.get(str) == reSet[i].TracingCode__c) { reSet[i].Bar_Code__c = str; //===================================== // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING,'入库BarCode('+ str +')和库存条码不一致。')); ExistIdMap.put(str, str); } } ConsumableorderdetailsRecordsdummy.add( new ConsumableorderdetailsInfo(reSet[i]) ); ConsumableorderdetailsRecords.add( new ConsumableorderdetailsInfo(reSet[i]) ); } } } // CHAN-BD43NK 关闭直接返品功能 追加 barcode不一致判断 reSet1 = [ SELECT Id, Name, TracingCode__c, Bar_Code__c, Sale_orderName__c, Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND (Dealer_Shipment__c = TRUE OR Dealer_Saled__c = TRUE) AND TracingCode__c IN :barMcodeMap.values() AND Bar_Code__c NOT IN :barMcodeMap.keySet() AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c = :userWorkLocation ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { for (String str : barMcodeMap.keySet()) { if (barMcodeMap.get(str) == reSet1[i].TracingCode__c) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( 'barcode' + str + '与出库单' + reSet1[i].Sale_orderName__c + ' 中的管理编码一致,但Barcode不同,请确认具体数据。' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, 'barcode' + str + '与出库单' + reSet1[i].Sale_orderName__c + ' 中的管理编码一致,但Barcode不同,请确认具体数据。' ) ); } ErrorIdMap.put(str, str); ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } } } integer RGcnt = GoodsReturnCheck(); AllMap.putAll(ErrorIdMap); AllMap.putAll(ExistIdMap); if (RGcnt > 0) { for (String str : GrList) { AllMap.put(str, str); } } //得到不存在的BarCode //return; for (Integer i = 0; i < BarCodeListP.size(); i++) { if (AllMap.containsKey(BarCodeListP[i])) { continue; } else if (otherAgencyMap.containsKey(BarCodeListP[i])) { continue; } //add by rentx 2021-01-27 start else if (coc != null && coc.orderPattern__c == 'hospitalorder') { HosErrorList.add(BarCodeListP[i]); continue; } //add by rentx 2021-01-27 end else { notInlist.add(BarCodeListP[i]); otherAgencyMap.put(BarCodeListP[i], BarCodeListP[i]); } } // CHAN-BD43NK 关闭直接返品功能 if (notInlist.size() > 0) { if (ArrType != 'ReG') { inventoryEntryNoESetId(notInlist); if (notInStorelist.size() > 0) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { returnError = 'BarCode号' + notInStorelist + '不存在'; } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, 'BarCode号' + notInStorelist + '不存在。' ) ); } return; } } else { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { returnError = 'BarCode号' + notInlist + '不存在,无对应的出库单,请先操作产品入库'; } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, 'BarCode号' + notInlist + '不存在,无对应的出库单,请先操作产品入库。' ) ); } return; } } //add by rentx 2021-01-27 start if (HosErrorList.size() > 0) { for (String str : HosErrorList) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add('BarCode号:' + str + HosErrorMap.get(str) + ''); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, 'BarCode号:' + str + HosErrorMap.get(str) + '' ) ); } } } //add by rentx 2021-01-27 end } else { //已取消产品 reSet1 = [ SELECT Id, Name, Consumable_Product__r.Name__c, Consumable_Product__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Box_Piece__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = FALSE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Dealer_Returned__c = FALSE AND Cancellation_Date__c != NULL AND Bar_Code__c IN :BarCodeListP AND Dealer_Info_text__c = :accountName ORDER BY Name ]; //没到货 if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '该商品取消'; ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(reSet1[i], str) ); ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } //已经销售 reSet1 = [ SELECT Id, Name, Consumable_Product__r.Name__c, Consumable_Product__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Box_Piece__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Saled__c = TRUE AND Dealer_Returned__c = FALSE AND Dealer_Info_text__c = :accountName AND Bar_Code__c IN :BarCodeListP AND Arrive_Owner_Work_Location__c = :userWorkLocation ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '该商品已经销售'; ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(reSet1[i], str) ); ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } //已经出库产品 reSet1 = [ SELECT Id, Name, Consumable_Product__r.Name__c, Consumable_Product__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Box_Piece__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Shipment__c = TRUE AND Dealer_Returned__c = FALSE AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c = :userWorkLocation AND Bar_Code__c IN :BarCodeListP ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '该商品已经出库'; ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(reSet1[i], str) ); ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } //已经到货产品 reSet1 = [ SELECT Id, Name, Consumable_Product__r.Name__c, Consumable_Product__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Lose_Flag__c, Box_Piece__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND Dealer_Returned__c = FALSE AND Bar_Code__c IN :BarCodeListP AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c = :userWorkLocation ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '该商品已经到货'; if (reSet1[i].Lose_Flag__c == true) { str = '该商品已经丢失'; } ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(reSet1[i], str) ); ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } //不属于本订单 reSet1 = [ SELECT Id, Name, Consumable_Product__r.Name__c, Consumable_Product__c, Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Box_Piece__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, recordtypeid, Consumable_order_minor__r.Arrive_Order__c, Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Consumable_order_minor__c != :ESetId AND Bar_Code__c IN :BarCodeListP //AND Dealer_Info_text__c = :accountName ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '该消耗品不属于本订单'; ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(reSet1[i], str) ); ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } //到货但产品类型与用户的类型不符 reSet1 = [ 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.Asset_Model_No__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, Guarantee_period_for_products__c, CFDA_Status__c, ProductPacking_list_manual__c, Report_Product_Approbation__c, Report_Product_Expiration__c, Box_Piece__c, Rrturn_count__c, Product_Type__c, ContractNo_text__c /*,ContractNo__c*/, // tcm start Consumable_order_minor__r.ContractNo__c // tcm end FROM Consumable_order_details2__c WHERE recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery AND Dealer_Info_text__c = :accountName AND (NOT Product_Type__c LIKE :userPro_Typestr) AND Consumable_order_minor__c = :ESetId AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation AND Dealer_Arrive__c = FALSE AND Cancellation_Date__c = NULL AND Bar_Code__c IN :BarCodeListP ORDER BY Name ]; if (reSet1.size() > 0) { for (Integer i = 0; i < reSet1.size(); i++) { if (ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)) { // 跳过已经处理的消耗品明细 continue; } else { String str = '产品类型[' + reSet1[i].Product_Type__c + ']与用户的类型[' + userPro_Type + ']不符'; ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(reSet1[i], str) ); ErrorIdMap.put(reSet1[i].Bar_Code__c, reSet1[i].Bar_Code__c); } } } //到货正确信息 reSet = [ 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.Asset_Model_No__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, Guarantee_period_for_products__c, CFDA_Status__c, ProductPacking_list_manual__c, Report_Product_Approbation__c, Report_Product_Expiration__c, Box_Piece__c, Rrturn_count__c, TracingCode__c, Agencyinfo_fromSAP__c, Frist_Storage_Agency__c, Dealer_Info_text__c, ContractNo_text__c /*,ContractNo__c*/, // tcm start Consumable_order_minor__r.ContractNo__c // tcm end FROM Consumable_order_details2__c WHERE recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery AND Dealer_Info_text__c = :accountName AND Product_Type__c LIKE :userPro_Typestr AND Consumable_order_minor__c = :ESetId AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation AND Dealer_Arrive__c = FALSE AND Cancellation_Date__c = NULL AND Bar_Code__c IN :BarCodeListP ORDER BY Name ]; if (reSet.size() > 0) { Map errorMap = new Map(); for (Integer i = 0; i < reSet.size(); i++) { if ( ExistIdMap.containsKey(reSet[i].Bar_Code__c) || ErrorIdMap.containsKey(reSet[i].Bar_Code__c) ) { // 跳过已经处理的消耗品明细 continue; } else { Matcher n = Pattern.compile('[0-9]') .matcher(reSet[i].TracingCode__c); if (n.find()) { // gzw DB202305352696 入库管理编码验证程序调整 start if (reSet[i].TracingCode__c.length() == 5) { String tr = reSet[i].TracingCode__c; String Ctr = tr.substring(tr.length() - 3, tr.length()); String Btr = tr.substring(tr.length() - 4, tr.length() - 3); String Atr = tr.substring(tr.length() - 5, tr.length() - 4); if ( Pattern.compile('[0-9]').matcher(Atr).find() || Pattern.compile('[0-9]').matcher(Ctr).find() ) { String str = '管理编码有误,请检查条形码数据。'; ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(reSet[i], str) ); ErrorIdMap.put(reSet[i].Bar_Code__c, reSet[i].Bar_Code__c); continue; } } // String str = '管理编码中有数字,请与管理员确认是否错误。'; // ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet[i],str)); // ErrorIdMap.put(reSet[i].Bar_Code__c,reSet[i].Bar_Code__c); // continue; // gzw DB202305352696 入库管理编码验证程序调整 end } ConsumableorderdetailsRecordsdummy.add( new ConsumableorderdetailsInfo(reSet[i]) ); ConsumableorderdetailsRecords.add( new ConsumableorderdetailsInfo(reSet[i]) ); ExistIdMap.put(reSet[i].Bar_Code__c, reSet[i].Bar_Code__c); } } } //barcode不一致,管理编码一致 reSet = [ 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.Asset_Model_No__c, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Box_Piece__c, Rrturn_count__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, Dealer_Arrive__c, Guarantee_period_for_products__c, CFDA_Status__c, ProductPacking_list_manual__c, Report_Product_Approbation__c, Report_Product_Expiration__c, TracingCode__c, Agencyinfo_fromSAP__c, Frist_Storage_Agency__c, ContractNo_text__c /*,ContractNo__c*/, // tcm start Consumable_order_minor__r.ContractNo__c // tcm end FROM Consumable_order_details2__c WHERE recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery AND Cancellation_Date__c = NULL AND Dealer_Arrive__c = FALSE AND TracingCode__c IN :barMcodeMap.values() AND Bar_Code__c NOT IN :barMcodeMap.keySet() AND Dealer_Info_text__c = :accountName AND ((Consumable_order_minor__c != NULL AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation) OR Consumable_order_minor__c = NULL) ORDER BY Name ]; if (reSet.size() > 0) { for (Integer i = 0; i < reSet.size(); i++) { if ( ExistIdMap.containsKey(reSet[i].Bar_Code__c) || ErrorIdMap.containsKey(reSet[i].Bar_Code__c) ) { // 跳过已经处理的消耗品明细 continue; } else { Matcher n = Pattern.compile('[0-9]') .matcher(reSet[i].TracingCode__c); if (n.find()) { // gzw DB202305352696 入库管理编码验证程序调整 start if (reSet[i].TracingCode__c.length() == 5) { String tr = reSet[i].TracingCode__c; String Ctr = tr.substring(tr.length() - 3, tr.length()); String Btr = tr.substring(tr.length() - 4, tr.length() - 3); String Atr = tr.substring(tr.length() - 5, tr.length() - 4); if ( Pattern.compile('[0-9]').matcher(Atr).find() || Pattern.compile('[0-9]').matcher(Ctr).find() ) { String str = '管理编码有误,请检查条形码数据。'; ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(reSet[i], str) ); ErrorIdMap.put(reSet[i].Bar_Code__c, reSet[i].Bar_Code__c); continue; } } // String str = '管理编码中有数字,请与管理员确认是否错误。'; // ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet[i],str)); // ErrorIdMap.put(reSet[i].Bar_Code__c,reSet[i].Bar_Code__c); // continue; // gzw DB202305352696 入库管理编码验证程序调整 end } ExistIdMap.put(reSet[i].Bar_Code__c, reSet[i].Bar_Code__c); for (String str : barMcodeMap.keySet()) { if (barMcodeMap.get(str) == reSet[i].TracingCode__c) { reSet[i].Bar_Code__c = str; ExistIdMap.put(str, str); } } ConsumableorderdetailsRecordsdummy.add( new ConsumableorderdetailsInfo(reSet[i]) ); ConsumableorderdetailsRecords.add( new ConsumableorderdetailsInfo(reSet[i]) ); } } } AllMap.putAll(ErrorIdMap); AllMap.putAll(ExistIdMap); //得到不存在的BarCode for (Integer i = 0; i < BarCodeListP.size(); i++) { if (AllMap.containsKey(BarCodeListP[i])) { continue; } else if (otherAgencyMap.containsKey(BarCodeListP[i])) { continue; } //add by rentx 2021-01-27 start else if (coc != null && coc.orderPattern__c == 'hospitalorder') { HosErrorList.add(BarCodeListP[i]); continue; } //add by rentx 2021-01-27 end else { notInlist.add(BarCodeListP[i]); otherAgencyMap.put(BarCodeListP[i], BarCodeListP[i]); } } if (notInlist.size() > 0) { inventoryEntry(notInlist); if (notInStorelist.size() > 0) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { returnError = 'BarCode号' + notInStorelist + '不存在'; } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, 'BarCode号' + notInStorelist + '不存在。' ) ); } return; } } } //add by rentx 2021-01-27 start 当订单为医院特价类型的订单时,如果找不到barcode,不解析,并且默认该barcode对应的明细2为非医院特价产品,直接报错 if (HosErrorList.size() > 0) { for (String str : HosErrorList) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add('BarCode号:' + str + '是非医院特价产品'); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, 'BarCode号:' + str + '是非医院特价产品' ) ); } } } //add by rentx 2021-01-27 end makeArrivedSummary(); //add by rentx 20210602 start CHAN-C3K4ZQ makeRecordsView(ConsumableorderdetailsRecordsdummy); //add by rentx 20210602 end CHAN-C3K4ZQ } public void inventoryEntryNoESetId(List barCodeList) { //所有barcode解析到的Jancode List alljanCodeList = new List(); List allotCodeList = new List(); List barCode01List = new List(); List barCode241List = new List(); Map> barJancodeMap = new Map>(); Map> barOtcodeMap = new Map>(); Map> barcodeinfoMap = new Map>(); Map barcoderightMap = new Map(); notInStorelist.clear(); for (Integer i = 0; i < barCodeList.size(); i++) { Date expirationDate = null; String serialNoorLotNo = ''; String tracingCode = ''; String productDateStr = ''; Date productionDate = null; String expirationDateStr = ''; if (barCodeList[i].length() >= 3) { if (barCodeList[i].substring(0, 2) == '01') { String janCodeMark = ''; //生产日期 List janCode = new List(); if (barCodeList[i].length() < 16) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + barCodeList[i] + ')的位数不足16,不符合要求错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的位数不足16,不符合要求错误!' ) ); } continue; } else { //if(barCodeList[i].substring(0,2) !='01'){ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')没有janCode,不符合要求!')); // return; //} janCodeMark = barCodeList[i].substring(2, 16); try { Decimal test = Decimal.valueOf(janCodeMark); } catch (Exception e) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + barCodeList[i] + ')的janCode错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的janCode错误!' ) ); } continue; } } if (barCodeList[i].length() >= 22) { if ( barCodeList[i] .substring( barCodeList[i].length() - 8, barCodeList[i].length() - 5 ) != '250' ) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + barCodeList[i] + ')没有管理编码!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')没有管理编码!' ) ); } continue; } if (barCodeList[i].substring(16, 18) == '11') { try { productDateStr = '20' + barCodeList[i].substring(18, 20) + '-' + barCodeList[i].substring(20, 22) + '-01'; productionDate = Date.valueOf(productDateStr); } catch (Exception e) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + barCodeList[i] + ')的生产日期' + productDateStr + '错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的生产日期' + productDateStr + '错误!' ) ); } continue; } if (barCodeList[i].length() >= 32) { if (barCodeList[i].substring(24, 26) == '17') { try { if (barCodeList[i].substring(30, 32) == '00') { expirationDateStr = '20' + barCodeList[i].substring(26, 28) + '-' + barCodeList[i].substring(28, 30) + '-' + '01'; expirationDate = Date.valueOf(expirationDateStr); expirationDate = expirationDate.addMonths(1) .toStartofMonth() .addDays(-1); } else { expirationDateStr = '20' + barCodeList[i].substring(26, 28) + '-' + barCodeList[i].substring(28, 30) + '-' + barCodeList[i].substring(30, 32); expirationDate = Date.valueOf(expirationDateStr); } } catch (Exception e) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + barCodeList[i] + ')的滅菌有効期限' + expirationDateStr + '错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的滅菌有効期限' + expirationDateStr + '错误!' ) ); } continue; } if (barCodeList[i].length() >= 42) { if ( barCodeList[i].substring(32, 34) == '10' || barCodeList[i].substring(32, 34) == '21' ) { serialNoorLotNo = barCodeList[i] .substring(34, barCodeList[i].length() - 8); } } } else if ( barCodeList[i].substring(24, 26) == '10' || barCodeList[i].substring(24, 26) == '21' ) { serialNoorLotNo = barCodeList[i] .substring(26, barCodeList[i].length() - 8); } } } else if (barCodeList[i].substring(16, 18) == '17') { try { if (barCodeList[i].substring(22, 24) == '00') { expirationDateStr = '20' + barCodeList[i].substring(18, 20) + '-' + barCodeList[i].substring(20, 22) + '-01'; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品expirationDateStr' + expirationDateStr)); expirationDate = Date.valueOf(expirationDateStr); expirationDate = expirationDate.addMonths(1) .toStartofMonth() .addDays(-1); } else { expirationDateStr = '20' + barCodeList[i].substring(18, 20) + '-' + barCodeList[i].substring(20, 22) + '-' + barCodeList[i].substring(22, 24); expirationDate = Date.valueOf(expirationDateStr); } } catch (Exception e) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + barCodeList[i] + ')的滅菌有効期限' + expirationDateStr + '错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的滅菌有効期限' + expirationDateStr + '错误!' ) ); } continue; } if (barCodeList[i].length() >= 34) { if ( barCodeList[i].substring(24, 26) == '10' || barCodeList[i].substring(24, 26) == '21' ) { serialNoorLotNo = barCodeList[i] .substring(26, barCodeList[i].length() - 8); } } } else if (barCodeList[i].length() >= 26) { if ( barCodeList[i].substring(16, 18) == '10' || barCodeList[i].substring(16, 18) == '21' ) { serialNoorLotNo = barCodeList[i] .substring(18, barCodeList[i].length() - 8); } } } if ( barCodeList[i].length() >= 24 && barCodeList[i] .substring( barCodeList[i].length() - 8, barCodeList[i].length() - 5 ) == '250' ) { if ( barCodeList[i] .substring( barCodeList[i].length() - 8, barCodeList[i].length() - 5 ) == '250' ) { tracingCode = barCodeList[i] .substring( barCodeList[i].length() - 5, barCodeList[i].length() ); Matcher n = Pattern.compile('[0-9]').matcher(tracingCode); if (n.find()) { // gzw DB202305352696 入库管理编码验证程序调整 start if (tracingCode.length() == 5) { String tr = tracingCode; String Ctr = tr.substring(tr.length() - 3, tr.length()); String Btr = tr.substring(tr.length() - 4, tr.length() - 3); String Atr = tr.substring(tr.length() - 5, tr.length() - 4); if ( Pattern.compile('[0-9]').matcher(Atr).find() || Pattern.compile('[0-9]').matcher(Ctr).find() ) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 String str = '管理编码有误,请检查条形码数据。'; if (isLwc) { errorList.add( '产品BarCode(' + barCodeList[i] + ')管理编码有误,请检查条形码数据。' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')管理编码有误,请检查条形码数据。' ) ); } continue; } } } } else { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + barCodeList[i] + ')的tracingCode错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的tracingCode错误!' ) ); } continue; } } List barcodedetList = new List(); barcodedetList.add(barCodeList[i]); barcodedetList.add(String.valueOf(expirationDate)); barcodedetList.add(serialNoorLotNo); barcodedetList.add(tracingCode); Integer jan1 = Integer.valueOf(janCodeMark.substring(0, 1)); Integer jan2 = Integer.valueOf(janCodeMark.substring(1, 2)); Integer jan3 = Integer.valueOf(janCodeMark.substring(2, 3)); Integer jan4 = Integer.valueOf(janCodeMark.substring(3, 4)); Integer jan5 = Integer.valueOf(janCodeMark.substring(4, 5)); Integer jan6 = Integer.valueOf(janCodeMark.substring(5, 6)); Integer jan7 = Integer.valueOf(janCodeMark.substring(6, 7)); Integer jan8 = Integer.valueOf(janCodeMark.substring(7, 8)); Integer jan9 = Integer.valueOf(janCodeMark.substring(8, 9)); Integer jan10 = Integer.valueOf(janCodeMark.substring(9, 10)); Integer jan11 = Integer.valueOf(janCodeMark.substring(10, 11)); Integer jan12 = Integer.valueOf(janCodeMark.substring(11, 12)); Integer jan13 = Integer.valueOf(janCodeMark.substring(12, 13)); Integer count12 = jan2 + jan3 * 3 + jan4 + jan5 * 3 + jan6 + jan7 * 3 + jan8 + jan9 * 3 + jan10 + jan11 * 3 + jan12 + jan13 * 3; Integer count13 = jan1 * 3 + jan2 + jan3 * 3 + jan4 + jan5 * 3 + jan6 + jan7 * 3 + jan8 + jan9 * 3 + jan10 + jan11 * 3 + jan12 + jan13 * 3; String frost12 = (String.valueOf(count12)) .substring((String.valueOf(count12)).length() - 1); String frost13 = (String.valueOf(count13)) .substring((String.valueOf(count13)).length() - 1); //减去12位个位 frost12 = (String.valueOf(10 - Integer.valueOf(frost12))) .substring( (String.valueOf(10 - Integer.valueOf(frost12))).length() - 1 ); frost13 = (String.valueOf(10 - Integer.valueOf(frost13))) .substring( (String.valueOf(10 - Integer.valueOf(frost13))).length() - 1 ); janCode.add(janCodeMark.substring(1, 13) + frost12); janCode.add(janCodeMark.substring(0, 13) + frost12); janCode.add(janCodeMark.substring(1, 13) + frost13); janCode.add(janCodeMark.substring(0, 13) + frost13); alljanCodeList.addAll(janCode); Map janCodeMap = new Map(); janCodeMap.put( janCodeMark.substring(1, 13) + frost12, barCodeList[i] ); janCodeMap.put( janCodeMark.substring(0, 13) + frost12, barCodeList[i] ); janCodeMap.put( janCodeMark.substring(1, 13) + frost13, barCodeList[i] ); janCodeMap.put( janCodeMark.substring(0, 13) + frost13, barCodeList[i] ); barJancodeMap.put(barCodeList[i], janCodeMap); barcodeinfoMap.put(barCodeList[i], barcodedetList); barCode01List.add(barCodeList[i]); } else if (barCodeList[i].substring(0, 3) == '241') { if ( barCodeList[i].length() > 8 && barCodeList[i] .substring( barCodeList[i].length() - 8, barCodeList[i].length() - 5 ) != '250' ) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + barCodeList[i] + ')没有管理编码!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')没有管理编码!' ) ); } continue; } List otCodeList = new List(); Map otCodeMap = new Map(); if (barCodeList[i].length() < 7) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + barCodeList[i] + ')的位数不足16,不符合要求错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的位数不足16,不符合要求错误!' ) ); } continue; } else if (barCodeList[i].length() == 11) { String otCode4 = barCodeList[i].substring(3, 7); String otCode5 = barCodeList[i].substring(3, 8); String otCode6 = barCodeList[i].substring(3, 9); String otCode7 = barCodeList[i].substring(3, 10); String otCode8 = barCodeList[i].substring(3, 11); otCodeList.add(otCode4); otCodeList.add(otCode5); otCodeList.add(otCode6); otCodeList.add(otCode7); otCodeList.add(otCode8); otCodeMap.put(otCode4, barCodeList[i]); otCodeMap.put(otCode5, barCodeList[i]); otCodeMap.put(otCode6, barCodeList[i]); otCodeMap.put(otCode7, barCodeList[i]); otCodeMap.put(otCode8, barCodeList[i]); } else if (barCodeList[i].length() >= 12) { String otCode4 = barCodeList[i].substring(3, 7); String otCode5 = barCodeList[i].substring(3, 8); String otCode6 = barCodeList[i].substring(3, 9); String otCode7 = barCodeList[i].substring(3, 10); String otCode8 = barCodeList[i].substring(3, 11); String otCode9 = barCodeList[i].substring(3, 12); otCodeList.add(otCode4); otCodeList.add(otCode5); otCodeList.add(otCode6); otCodeList.add(otCode7); otCodeList.add(otCode8); otCodeList.add(otCode9); otCodeMap.put(otCode4, barCodeList[i]); otCodeMap.put(otCode5, barCodeList[i]); otCodeMap.put(otCode6, barCodeList[i]); otCodeMap.put(otCode7, barCodeList[i]); otCodeMap.put(otCode8, barCodeList[i]); otCodeMap.put(otCode9, barCodeList[i]); } allotCodeList.addAll(otCodeList); barOtcodeMap.put(barCodeList[i], otCodeMap); barCode241List.add(barCodeList[i]); } else { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add('产品BarCode(' + barCodeList[i] + ')不符合要求!'); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')不符合要求!' ) ); } continue; } } else { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add('产品BarCode(' + barCodeList[i] + ')不符合要求!'); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')不符合要求!' ) ); } continue; } } //01通过检索产品是否存在 //-----------XHL--------------UpdateSTART----------------20181010------ if (alljanCodeList.size() > 0) { List product2InStore = [ SELECT Id, Name, Name__c, Intra_Trade_List_RMB__c, Asset_Model_No__c, OT_CODE__c, Product2_Jancode__c, Pro2_Dealer_ENG__c, Pro2_Dealer_Object__c FROM Product2__c WHERE Product2_Jancode__c IN :alljanCodeList ORDER BY SFDA_Expiration_Date__c DESC ]; if (product2InStore.size() > 0) { // CHAN-AVSAST Map rightBar = new Map(); Map errorMap = new Map(); for (String bar : barJancodeMap.keySet()) { Integer cou = 0; for (Product2__c produ : product2InStore) { if ( barJancodeMap.get(bar).containsKey(produ.Product2_Jancode__c) && !rightBar.containsKey(bar) ) { cou++; if (EngFlag == true && produ.Pro2_Dealer_ENG__c == true) { consumableInventory.add( new ConsumableorderdetailsInfo(produ, barcodeinfoMap.get(bar)) ); consumableInventoryUse.add( new ConsumableorderdetailsInfo(produ, barcodeinfoMap.get(bar)) ); rightBar.put(bar, bar); } else if ( ETFlag == true && produ.Pro2_Dealer_Object__c == true ) { consumableInventory.add( new ConsumableorderdetailsInfo(produ, barcodeinfoMap.get(bar)) ); consumableInventoryUse.add( new ConsumableorderdetailsInfo(produ, barcodeinfoMap.get(bar)) ); rightBar.put(bar, bar); } else { errorMap.put(bar, bar); } } } if (cou <= 0) { notInStorelist.add(bar); } } if (errorMap.size() > 0) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( 'BarCode号[' + errorMap.values() + ']产品类型[' + product_Type + ']与用户类型[' + userPro_Type + ']不符' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, 'BarCode号[' + errorMap.values() + ']产品类型[' + product_Type + ']与用户类型[' + userPro_Type + ']不符' ) ); } } } } //241通过检索产品是否存在 if (allotCodeList.size() > 0) { Map errorMap = new Map(); Map exitBarCodeMap = new Map(); List product2InStore = [ SELECT Id, Name, Name__c, Intra_Trade_List_RMB__c, Asset_Model_No__c, OT_CODE__c, Product2_Jancode__c, Pro2_Dealer_ENG__c, Pro2_Dealer_Object__c FROM Product2__c WHERE OT_CODE__c IN :allotCodeList AND (NOT Product_Type__c LIKE :userPro_Typestr) ]; if (product2InStore.size() > 0) { for (Product2__c produ : product2InStore) { for (String bar : barOtcodeMap.keySet()) { if (barOtcodeMap.get(bar).containsKey(produ.OT_CODE__c)) { exitBarCodeMap.put(bar, bar); errorMap.put(bar, bar); } } } } if (errorMap.size() > 0) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( 'BarCode号[' + errorMap.values() + ']产品类型[' + product_Type + ']与用户[' + userPro_Type + ']类型不符' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, 'BarCode号[' + errorMap.values() + ']产品类型[' + product_Type + ']与用户[' + userPro_Type + ']类型不符' ) ); } } product2InStore = [ SELECT Id, Name, Name__c, Intra_Trade_List_RMB__c, Asset_Model_No__c, OT_CODE__c, Product2_Jancode__c, Pro2_Dealer_ENG__c, Pro2_Dealer_Object__c FROM Product2__c WHERE OT_CODE__c IN :allotCodeList AND Product_Type__c LIKE :userPro_Typestr ]; if (product2InStore.size() > 0) { for (Product2__c produ : product2InStore) { for (String bar : barOtcodeMap.keySet()) { Date expirationDate = null; String serialNoorLotNo = ''; String tracingCode = ''; String productDateStr = ''; Date productionDate = null; String expirationDateStr = ''; if (barOtcodeMap.get(bar).containsKey(produ.OT_CODE__c)) { Integer oTcodeLength = produ.OT_CODE__c.length(); if (bar.length() >= oTcodeLength + 11) { if (bar.substring(oTcodeLength + 3, oTcodeLength + 5) == '11') { try { productDateStr = '20' + bar.substring(oTcodeLength + 5, oTcodeLength + 7) + '-' + bar.substring(oTcodeLength + 7, oTcodeLength + 9) + '-01'; productionDate = Date.valueOf(productDateStr); } catch (Exception e) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + bar + ')的生产日期' + productDateStr + '错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + bar + ')的生产日期' + productDateStr + '错误!' ) ); } continue; } if (bar.length() >= oTcodeLength + 3 + 16) { if ( bar.substring( oTcodeLength + 3 + 8, oTcodeLength + 3 + 10 ) == '17' ) { try { if ( bar.substring( oTcodeLength + 3 + 14, oTcodeLength + 3 + 16 ) == '00' ) { expirationDateStr = '20' + bar.substring( oTcodeLength + 3 + 10, oTcodeLength + 3 + 12 ) + '-' + bar.substring( oTcodeLength + 3 + 12, oTcodeLength + 3 + 14 ) + '-' + '01'; expirationDate = Date.valueOf(expirationDateStr); expirationDate = expirationDate.addMonths(1) .toStartofMonth() .addDays(-1); } else { expirationDateStr = '20' + bar.substring( oTcodeLength + 3 + 10, oTcodeLength + 3 + 12 ) + '-' + bar.substring( oTcodeLength + 3 + 12, oTcodeLength + 3 + 14 ) + '-' + bar.substring( oTcodeLength + 3 + 14, oTcodeLength + 3 + 16 ); expirationDate = Date.valueOf(expirationDateStr); } } catch (Exception e) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + bar + ')的滅菌有効期限' + expirationDateStr + '错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + bar + ')的滅菌有効期限' + expirationDateStr + '错误!' ) ); } continue; } if (bar.length() >= oTcodeLength + 3 + 25) { if ( bar.substring( oTcodeLength + 3 + 16, oTcodeLength + 3 + 18 ) == '10' || bar.substring( oTcodeLength + 3 + 16, oTcodeLength + 3 + 18 ) == '21' ) { serialNoorLotNo = bar.substring( oTcodeLength + 3 + 18, bar.length() - 8 ); //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'serialNoorLotNo' + serialNoorLotNo)); } } } else if ( bar.substring( oTcodeLength + 3 + 8, oTcodeLength + 3 + 10 ) == '10' || bar.substring( oTcodeLength + 3 + 8, oTcodeLength + 3 + 10 ) == '21' ) { serialNoorLotNo = bar.substring( oTcodeLength + 3 + 10, bar.length() - 8 ); //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'serialNoorLotNo' + serialNoorLotNo)); } } } else if ( bar.substring(oTcodeLength + 3, oTcodeLength + 5) == '17' ) { try { if ( bar.substring( oTcodeLength + 3 + 6, oTcodeLength + 3 + 8 ) == '00' ) { expirationDateStr = '20' + bar.substring( oTcodeLength + 3 + 2, oTcodeLength + 3 + 4 ) + '-' + bar.substring( oTcodeLength + 3 + 4, oTcodeLength + 3 + 6 ) + '-01'; expirationDate = Date.valueOf(expirationDateStr); expirationDate = expirationDate.addMonths(1) .toStartofMonth() .addDays(-1); } else { expirationDateStr = '20' + bar.substring( oTcodeLength + 3 + 2, oTcodeLength + 3 + 4 ) + '-' + bar.substring( oTcodeLength + 3 + 4, oTcodeLength + 3 + 6 ) + '-' + bar.substring( oTcodeLength + 3 + 6, oTcodeLength + 3 + 8 ); expirationDate = Date.valueOf(expirationDateStr); } } catch (Exception e) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + bar + ')的滅菌有効期限' + expirationDateStr + '错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + bar + ')的滅菌有効期限' + expirationDateStr + '错误!' ) ); } continue; } if (bar.length() >= oTcodeLength + 20) { if ( bar.substring( oTcodeLength + 3 + 8, oTcodeLength + 3 + 10 ) == '10' || bar.substring( oTcodeLength + 3 + 8, oTcodeLength + 3 + 10 ) == '21' ) { serialNoorLotNo = bar.substring( oTcodeLength + 3 + 10, bar.length() - 8 ); } } } else if (bar.length() >= oTcodeLength + 12) { if ( bar.substring(oTcodeLength + 3, oTcodeLength + 5) == '10' || bar.substring(oTcodeLength + 3, oTcodeLength + 5) == '21' ) { serialNoorLotNo = bar.substring( oTcodeLength + 3 + 2, bar.length() - 8 ); } } } if ( bar.length() >= oTcodeLength + 3 + 8 && bar.substring(bar.length() - 8, bar.length() - 5) == '250' ) { if ( bar.substring(bar.length() - 8, bar.length() - 5) == '250' ) { tracingCode = bar.substring(bar.length() - 5, bar.length()); Matcher n = Pattern.compile('[0-9]').matcher(tracingCode); if (n.find()) { // gzw DB202305352696 入库管理编码验证程序调整 start if (tracingCode.length() == 5) { String tr = tracingCode; String Ctr = tr.substring(tr.length() - 3, tr.length()); String Btr = tr.substring( tr.length() - 4, tr.length() - 3 ); String Atr = tr.substring( tr.length() - 5, tr.length() - 4 ); if ( Pattern.compile('[0-9]').matcher(Atr).find() || Pattern.compile('[0-9]').matcher(Ctr).find() ) { String str = '管理编码不正确,请与管理员确认是否错误。'; //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + bar + ')管理编码有误,请检查条形码数据。' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + bar + ')管理编码有误,请检查条形码数据。' ) ); } continue; } } // String str = '管理编码不正确,请与管理员确认是否错误。'; // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + bar + ')管理编码中有数字,请与管理员确认是否错误!')); // continue; // gzw DB202305352696 入库管理编码验证程序调整 end } } else { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + bar + ')的tracingCode错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + bar + ')的tracingCode错误!' ) ); } continue; } } exitBarCodeMap.put(bar, bar); List barcodedetList = new List(); barcodedetList.add(bar); barcodedetList.add(String.valueOf(expirationDate)); barcodedetList.add(serialNoorLotNo); barcodedetList.add(tracingCode); consumableInventory.add( new ConsumableorderdetailsInfo(produ, barcodedetList) ); consumableInventoryUse.add( new ConsumableorderdetailsInfo(produ, barcodedetList) ); } } } } for (String bartxt : barCode241List) { if (!exitBarCodeMap.containsKey(bartxt)) { if (!errorMap.containsKey(bartxt)) { notInStorelist.add(bartxt); } } } } } public void inventoryEntry(List barCodeList) { //所有barcode解析到的Jancode List alljanCodeList = new List(); List allotCodeList = new List(); List barCode01List = new List(); List barCode241List = new List(); Map> barJancodeMap = new Map>(); Map> barOtcodeMap = new Map>(); Map> barcodeinfoMap = new Map>(); notInStorelist.clear(); notEqualBARcodeCunMap.clear(); Map orderdetailMap = new Map(); List orderdetail = [ SELECT Id, Name, Consumable_order__c, Consumable_Product__c, Asset_Model_No__c FROM Consumable_Orderdetails__c WHERE Consumable_order__r.Dealer_Info__c = :accountid AND Consumable_order__c != NULL AND Consumable_order__c = :ESetId AND Order_Owner_WorkLocal__c = :userWorkLocation ORDER BY Name ]; for (Integer i = 0; i < orderdetail.size(); i++) { orderdetailMap.put( orderdetail[i].Consumable_Product__c, orderdetail[i].Consumable_Product__c ); } for (Integer i = 0; i < barCodeList.size(); i++) { Date expirationDate = null; String serialNoorLotNo = ''; String tracingCode = ''; String productDateStr = ''; Date productionDate = null; String expirationDateStr = ''; if (barCodeList[i].substring(0, 2) == '01') { String janCodeMark = ''; //生产日期 List janCode = new List(); if (barCodeList[i].length() < 16) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + barCodeList[i] + ')的位数不足16,不符合要求错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的位数不足16,不符合要求错误!' ) ); } continue; } else { janCodeMark = barCodeList[i].substring(2, 16); try { Decimal test = Decimal.valueOf(janCodeMark); } catch (Exception e) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + barCodeList[i] + ')的janCode错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的janCode错误!' ) ); } continue; } } if (barCodeList[i].length() >= 22) { if ( barCodeList[i] .substring( barCodeList[i].length() - 8, barCodeList[i].length() - 5 ) != '250' ) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + barCodeList[i] + ')没有管理编码!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')没有管理编码!' ) ); } continue; } if (barCodeList[i].substring(16, 18) == '11') { try { productDateStr = '20' + barCodeList[i].substring(18, 20) + '-' + barCodeList[i].substring(20, 22) + '-01'; productionDate = Date.valueOf(productDateStr); } catch (Exception e) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + barCodeList[i] + ')的生产日期' + productDateStr + '错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的生产日期' + productDateStr + '错误!' ) ); } continue; } if (barCodeList[i].length() >= 32) { if (barCodeList[i].substring(24, 26) == '17') { try { if (barCodeList[i].substring(30, 32) == '00') { expirationDateStr = '20' + barCodeList[i].substring(26, 28) + '-' + barCodeList[i].substring(28, 30) + '-' + '01'; expirationDate = Date.valueOf(expirationDateStr); expirationDate = expirationDate.addMonths(1) .toStartofMonth() .addDays(-1); } else { expirationDateStr = '20' + barCodeList[i].substring(26, 28) + '-' + barCodeList[i].substring(28, 30) + '-' + barCodeList[i].substring(30, 32); expirationDate = Date.valueOf(expirationDateStr); } } catch (Exception e) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + barCodeList[i] + ')的滅菌有効期限' + expirationDateStr + '错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的滅菌有効期限' + expirationDateStr + '错误!' ) ); } continue; } if (barCodeList[i].length() >= 42) { if ( barCodeList[i].substring(32, 34) == '10' || barCodeList[i].substring(32, 34) == '21' ) { serialNoorLotNo = barCodeList[i] .substring(34, barCodeList[i].length() - 8); } } } else if ( barCodeList[i].substring(24, 26) == '10' || barCodeList[i].substring(24, 26) == '21' ) { serialNoorLotNo = barCodeList[i] .substring(26, barCodeList[i].length() - 8); } } } else if (barCodeList[i].substring(16, 18) == '17') { try { if (barCodeList[i].substring(22, 24) == '00') { expirationDateStr = '20' + barCodeList[i].substring(18, 20) + '-' + barCodeList[i].substring(20, 22) + '-01'; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品expirationDateStr' + expirationDateStr)); expirationDate = Date.valueOf(expirationDateStr); expirationDate = expirationDate.addMonths(1) .toStartofMonth() .addDays(-1); } else { expirationDateStr = '20' + barCodeList[i].substring(18, 20) + '-' + barCodeList[i].substring(20, 22) + '-' + barCodeList[i].substring(22, 24); expirationDate = Date.valueOf(expirationDateStr); } } catch (Exception e) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + barCodeList[i] + ')的滅菌有効期限' + expirationDateStr + '错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的滅菌有効期限' + expirationDateStr + '错误!' ) ); } continue; } if (barCodeList[i].length() >= 34) { if ( barCodeList[i].substring(24, 26) == '10' || barCodeList[i].substring(24, 26) == '21' ) { serialNoorLotNo = barCodeList[i] .substring(26, barCodeList[i].length() - 8); } } } else if (barCodeList[i].length() >= 26) { if ( barCodeList[i].substring(16, 18) == '10' || barCodeList[i].substring(16, 18) == '21' ) { serialNoorLotNo = barCodeList[i] .substring(18, barCodeList[i].length() - 8); } } } if ( barCodeList[i].length() >= 24 && barCodeList[i] .substring( barCodeList[i].length() - 8, barCodeList[i].length() - 5 ) == '250' ) { if ( barCodeList[i] .substring( barCodeList[i].length() - 8, barCodeList[i].length() - 5 ) == '250' ) { tracingCode = barCodeList[i] .substring(barCodeList[i].length() - 5, barCodeList[i].length()); Matcher n = Pattern.compile('[0-9]').matcher(tracingCode); if (n.find()) { // gzw DB202305352696 入库管理编码验证程序调整 start if (tracingCode.length() == 5) { String tr = tracingCode; String Ctr = tr.substring(tr.length() - 3, tr.length()); String Btr = tr.substring(tr.length() - 4, tr.length() - 3); String Atr = tr.substring(tr.length() - 5, tr.length() - 4); if ( Pattern.compile('[0-9]').matcher(Atr).find() || Pattern.compile('[0-9]').matcher(Ctr).find() ) { String str = '管理编码不正确,请与管理员确认是否错误。'; //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + barCodeList[i] + ')管理编码有误,请检查条形码数据。' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')管理编码有误,请检查条形码数据。' ) ); } continue; } } // String str = '管理编码不正确,请与管理员确认是否错误。'; // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')管理编码中有数字,请与管理员确认是否错误!')); // continue; // gzw DB202305352696 入库管理编码验证程序调整 end } } else { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + barCodeList[i] + ')的tracingCode错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的tracingCode错误!' ) ); } continue; } } List barcodedetList = new List(); barcodedetList.add(barCodeList[i]); barcodedetList.add(String.valueOf(expirationDate)); barcodedetList.add(serialNoorLotNo); barcodedetList.add(tracingCode); Integer jan1 = Integer.valueOf(janCodeMark.substring(0, 1)); Integer jan2 = Integer.valueOf(janCodeMark.substring(1, 2)); Integer jan3 = Integer.valueOf(janCodeMark.substring(2, 3)); Integer jan4 = Integer.valueOf(janCodeMark.substring(3, 4)); Integer jan5 = Integer.valueOf(janCodeMark.substring(4, 5)); Integer jan6 = Integer.valueOf(janCodeMark.substring(5, 6)); Integer jan7 = Integer.valueOf(janCodeMark.substring(6, 7)); Integer jan8 = Integer.valueOf(janCodeMark.substring(7, 8)); Integer jan9 = Integer.valueOf(janCodeMark.substring(8, 9)); Integer jan10 = Integer.valueOf(janCodeMark.substring(9, 10)); Integer jan11 = Integer.valueOf(janCodeMark.substring(10, 11)); Integer jan12 = Integer.valueOf(janCodeMark.substring(11, 12)); Integer jan13 = Integer.valueOf(janCodeMark.substring(12, 13)); Integer count12 = jan2 + jan3 * 3 + jan4 + jan5 * 3 + jan6 + jan7 * 3 + jan8 + jan9 * 3 + jan10 + jan11 * 3 + jan12 + jan13 * 3; Integer count13 = jan1 * 3 + jan2 + jan3 * 3 + jan4 + jan5 * 3 + jan6 + jan7 * 3 + jan8 + jan9 * 3 + jan10 + jan11 * 3 + jan12 + jan13 * 3; String frost12 = (String.valueOf(count12)) .substring((String.valueOf(count12)).length() - 1); String frost13 = (String.valueOf(count13)) .substring((String.valueOf(count13)).length() - 1); //减去12位个位4 frost12 = (String.valueOf(10 - Integer.valueOf(frost12))) .substring( (String.valueOf(10 - Integer.valueOf(frost12))).length() - 1 ); frost13 = (String.valueOf(10 - Integer.valueOf(frost13))) .substring( (String.valueOf(10 - Integer.valueOf(frost13))).length() - 1 ); janCode.add(janCodeMark.substring(1, 13) + frost12); janCode.add(janCodeMark.substring(0, 13) + frost12); janCode.add(janCodeMark.substring(1, 13) + frost13); janCode.add(janCodeMark.substring(0, 13) + frost13); alljanCodeList.addAll(janCode); Map janCodeMap = new Map(); janCodeMap.put(janCodeMark.substring(1, 13) + frost12, barCodeList[i]); janCodeMap.put(janCodeMark.substring(0, 13) + frost12, barCodeList[i]); janCodeMap.put(janCodeMark.substring(1, 13) + frost13, barCodeList[i]); janCodeMap.put(janCodeMark.substring(0, 13) + frost13, barCodeList[i]); barJancodeMap.put(barCodeList[i], janCodeMap); barcodeinfoMap.put(barCodeList[i], barcodedetList); barCode01List.add(barCodeList[i]); } else if (barCodeList[i].substring(0, 3) == '241') { if ( barCodeList[i].length() > 8 && barCodeList[i] .substring( barCodeList[i].length() - 8, barCodeList[i].length() - 5 ) != '250' ) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add('产品BarCode(' + barCodeList[i] + ')没有管理编码!'); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')没有管理编码!' ) ); } continue; } List otCodeList = new List(); Map otCodeMap = new Map(); if (barCodeList[i].length() < 7) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + barCodeList[i] + ')的位数不足16,不符合要求错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的位数不足16,不符合要求错误!' ) ); } continue; } else if (barCodeList[i].length() == 11) { String otCode4 = barCodeList[i].substring(3, 7); String otCode5 = barCodeList[i].substring(3, 8); String otCode6 = barCodeList[i].substring(3, 9); String otCode7 = barCodeList[i].substring(3, 10); String otCode8 = barCodeList[i].substring(3, 11); otCodeList.add(otCode4); otCodeList.add(otCode5); otCodeList.add(otCode6); otCodeList.add(otCode7); otCodeList.add(otCode8); otCodeMap.put(otCode4, barCodeList[i]); otCodeMap.put(otCode5, barCodeList[i]); otCodeMap.put(otCode6, barCodeList[i]); otCodeMap.put(otCode7, barCodeList[i]); otCodeMap.put(otCode8, barCodeList[i]); } else if (barCodeList[i].length() >= 12) { String otCode4 = barCodeList[i].substring(3, 7); String otCode5 = barCodeList[i].substring(3, 8); String otCode6 = barCodeList[i].substring(3, 9); String otCode7 = barCodeList[i].substring(3, 10); String otCode8 = barCodeList[i].substring(3, 11); String otCode9 = barCodeList[i].substring(3, 12); otCodeList.add(otCode4); otCodeList.add(otCode5); otCodeList.add(otCode6); otCodeList.add(otCode7); otCodeList.add(otCode8); otCodeList.add(otCode9); otCodeMap.put(otCode4, barCodeList[i]); otCodeMap.put(otCode5, barCodeList[i]); otCodeMap.put(otCode6, barCodeList[i]); otCodeMap.put(otCode7, barCodeList[i]); otCodeMap.put(otCode8, barCodeList[i]); otCodeMap.put(otCode9, barCodeList[i]); } allotCodeList.addAll(otCodeList); barOtcodeMap.put(barCodeList[i], otCodeMap); barCode241List.add(barCodeList[i]); } else { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + barCodeList[i] + ')没有janCode或OTcode,不符合要求!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')没有janCode或OTcode,不符合要求!' ) ); } continue; } } //01通过检索产品是否存在 Map rightBar = new Map(); if (alljanCodeList.size() > 0) { Map exitBarCodeMap = new Map(); List product2InStore = [ SELECT Id, Name, Name__c, Intra_Trade_List_RMB__c, Asset_Model_No__c, OT_CODE__c, Product2_Jancode__c, Pro2_Dealer_ENG__c, Pro2_Dealer_Object__c, Product_Type__c FROM Product2__c WHERE Product2_Jancode__c IN :alljanCodeList AND (NOT Product_Type__c LIKE :userPro_Typestr) ORDER BY SFDA_Expiration_Date__c DESC ]; if (product2InStore.size() > 0) { Map errorMap = new Map(); for (Product2__c produ : product2InStore) { for (String bar : barJancodeMap.keySet()) { if ( barJancodeMap.get(bar).containsKey(produ.Product2_Jancode__c) && !rightBar.containsKey(bar) ) { exitBarCodeMap.put(bar, bar); errorMap.put(bar, bar); } } } if (errorMap.size() > 0) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( 'BarCode号[' + errorMap.values() + ']产品类型[' + product_Type + ']与用户的类型[' + userPro_Type + ']不符' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, 'BarCode号[' + errorMap.values() + ']产品类型[' + product_Type + ']与用户的类型[' + userPro_Type + ']不符' ) ); } } } product2InStore = [ SELECT Id, Name, Name__c, Intra_Trade_List_RMB__c, Asset_Model_No__c, OT_CODE__c, Product2_Jancode__c, Pro2_Dealer_ENG__c, Pro2_Dealer_Object__c, Product_Type__c FROM Product2__c WHERE Product2_Jancode__c IN :alljanCodeList AND Product_Type__c LIKE :userPro_Typestr ORDER BY SFDA_Expiration_Date__c DESC ]; if (product2InStore.size() > 0) { Map errorMap = new Map(); for (Product2__c produ : product2InStore) { for (String bar : barJancodeMap.keySet()) { if ( barJancodeMap.get(bar).containsKey(produ.Product2_Jancode__c) && !rightBar.containsKey(bar) ) { exitBarCodeMap.put(bar, bar); if (orderdetailMap.containsKey(produ.Id)) { consumableInventory.add( new ConsumableorderdetailsInfo(produ, barcodeinfoMap.get(bar)) ); rightBar.put(bar, bar); } else { consumableInventory.add( new ConsumableorderdetailsInfo(produ, barcodeinfoMap.get(bar)) ); rightBar.put(bar, bar); list overOrderBARcodeCunList = new List(); if (notEqualBARcodeCunMap.containsKey(produ.Id)) { overOrderBARcodeCunList = notEqualBARcodeCunMap.get(produ.Id) .clone(); overOrderBARcodeCunList.add(bar); notEqualBARcodeCunMap.put(produ.Id, overOrderBARcodeCunList); } else { overOrderBARcodeCunList.add(bar); notEqualBARcodeCunMap.put(produ.Id, overOrderBARcodeCunList); } } } } } } for (String bartxt : barCode01List) { if (!exitBarCodeMap.containsKey(bartxt)) { notInStorelist.add(bartxt); } } } //241通过检索产品是否存在 if (allotCodeList.size() > 0) { Map exitBarCodeMap = new Map(); Map errorMap = new Map(); List product2InStore = [ SELECT Id, Name, Name__c, Intra_Trade_List_RMB__c, Asset_Model_No__c, OT_CODE__c, Pro2_Dealer_Object__c, Pro2_Dealer_ENG__c FROM Product2__c WHERE OT_CODE__c IN :allotCodeList AND (NOT Product_Type__c LIKE :userPro_Typestr) ]; if (product2InStore.size() > 0) { for (Product2__c produ : product2InStore) { for (String bar : barOtcodeMap.keySet()) { if (barOtcodeMap.get(bar).containsKey(produ.OT_CODE__c)) { exitBarCodeMap.put(bar, bar); errorMap.put(bar, bar); } } } } if (errorMap.size() > 0) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( 'BarCode号[' + errorMap.values() + ']产品类型[' + product_Type + ']与用户[' + userPro_Type + ']类型不符' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, 'BarCode号[' + errorMap.values() + ']产品类型[' + product_Type + ']与用户[' + userPro_Type + ']类型不符' ) ); } } product2InStore = [ SELECT Id, Name, Name__c, Intra_Trade_List_RMB__c, Asset_Model_No__c, OT_CODE__c, Pro2_Dealer_Object__c, Pro2_Dealer_ENG__c FROM Product2__c WHERE OT_CODE__c IN :allotCodeList AND Product_Type__c LIKE :userPro_Typestr ]; if (product2InStore.size() > 0) { for (Product2__c produ : product2InStore) { for (String bar : barOtcodeMap.keySet()) { Date expirationDate = null; String serialNoorLotNo = ''; String tracingCode = ''; String productDateStr = ''; Date productionDate = null; String expirationDateStr = ''; Integer oTcodeLength = produ.OT_CODE__c.length(); if (bar.length() >= oTcodeLength + 11) { if (bar.substring(oTcodeLength + 3, oTcodeLength + 5) == '11') { try { productDateStr = '20' + bar.substring(oTcodeLength + 5, oTcodeLength + 7) + '-' + bar.substring(oTcodeLength + 7, oTcodeLength + 9) + '-01'; productionDate = Date.valueOf(productDateStr); } catch (Exception e) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + bar + ')的生产日期' + productDateStr + '错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + bar + ')的生产日期' + productDateStr + '错误!' ) ); } continue; } if (bar.length() >= oTcodeLength + 3 + 16) { //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode17' + bar.substring(oTcodeLength + 3 + 8,oTcodeLength + 3 + 10))); if ( bar.substring( oTcodeLength + 3 + 8, oTcodeLength + 3 + 10 ) == '17' ) { try { if ( bar.substring( oTcodeLength + 3 + 14, oTcodeLength + 3 + 16 ) == '00' ) { expirationDateStr = '20' + bar.substring( oTcodeLength + 3 + 10, oTcodeLength + 3 + 12 ) + '-' + bar.substring( oTcodeLength + 3 + 12, oTcodeLength + 3 + 14 ) + '-' + '01'; expirationDate = Date.valueOf(expirationDateStr); expirationDate = expirationDate.addMonths(1) .toStartofMonth() .addDays(-1); } else { expirationDateStr = '20' + bar.substring( oTcodeLength + 3 + 10, oTcodeLength + 3 + 12 ) + '-' + bar.substring( oTcodeLength + 3 + 12, oTcodeLength + 3 + 14 ) + '-' + bar.substring( oTcodeLength + 3 + 14, oTcodeLength + 3 + 16 ); expirationDate = Date.valueOf(expirationDateStr); } } catch (Exception e) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + bar + ')的滅菌有効期限' + expirationDateStr + '错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + bar + ')的滅菌有効期限' + expirationDateStr + '错误!' ) ); } continue; } if (bar.length() >= oTcodeLength + 3 + 25) { if ( bar.substring( oTcodeLength + 3 + 16, oTcodeLength + 3 + 18 ) == '10' || bar.substring( oTcodeLength + 3 + 16, oTcodeLength + 3 + 18 ) == '21' ) { serialNoorLotNo = bar.substring( oTcodeLength + 3 + 18, bar.length() - 8 ); //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'serialNoorLotNo' + serialNoorLotNo)); } } } else if ( bar.substring( oTcodeLength + 3 + 8, oTcodeLength + 3 + 10 ) == '10' || bar.substring( oTcodeLength + 3 + 8, oTcodeLength + 3 + 10 ) == '21' ) { serialNoorLotNo = bar.substring( oTcodeLength + 3 + 10, bar.length() - 8 ); //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'serialNoorLotNo' + serialNoorLotNo)); } } } else if ( bar.substring(oTcodeLength + 3, oTcodeLength + 5) == '17' ) { try { if ( bar.substring(oTcodeLength + 3 + 6, oTcodeLength + 3 + 8) == '00' ) { expirationDateStr = '20' + bar.substring( oTcodeLength + 3 + 2, oTcodeLength + 3 + 4 ) + '-' + bar.substring( oTcodeLength + 3 + 4, oTcodeLength + 3 + 6 ) + '-01'; expirationDate = Date.valueOf(expirationDateStr); expirationDate = expirationDate.addMonths(1) .toStartofMonth() .addDays(-1); } else { expirationDateStr = '20' + bar.substring( oTcodeLength + 3 + 2, oTcodeLength + 3 + 4 ) + '-' + bar.substring( oTcodeLength + 3 + 4, oTcodeLength + 3 + 6 ) + '-' + bar.substring(oTcodeLength + 3 + 6, oTcodeLength + 3 + 8); expirationDate = Date.valueOf(expirationDateStr); } } catch (Exception e) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + bar + ')的滅菌有効期限' + expirationDateStr + '错误!' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + bar + ')的滅菌有効期限' + expirationDateStr + '错误!' ) ); } continue; } if (bar.length() >= oTcodeLength + 20) { if ( bar.substring( oTcodeLength + 3 + 8, oTcodeLength + 3 + 10 ) == '10' || bar.substring( oTcodeLength + 3 + 8, oTcodeLength + 3 + 10 ) == '21' ) { serialNoorLotNo = bar.substring( oTcodeLength + 3 + 10, bar.length() - 8 ); } } } else if (bar.length() >= oTcodeLength + 12) { if ( bar.substring(oTcodeLength + 3, oTcodeLength + 5) == '10' || bar.substring(oTcodeLength + 3, oTcodeLength + 5) == '21' ) { serialNoorLotNo = bar.substring( oTcodeLength + 3 + 2, bar.length() - 8 ); } } } if ( bar.length() >= oTcodeLength + 3 + 8 && bar.substring(bar.length() - 8, bar.length() - 5) == '250' ) { if (bar.substring(bar.length() - 8, bar.length() - 5) == '250') { tracingCode = bar.substring(bar.length() - 5, bar.length()); Matcher n = Pattern.compile('[0-9]').matcher(tracingCode); if (n.find()) { // gzw DB202305352696 入库管理编码验证程序调整 start if (tracingCode.length() == 5) { String tr = tracingCode; String Ctr = tr.substring(tr.length() - 3, tr.length()); String Btr = tr.substring(tr.length() - 4, tr.length() - 3); String Atr = tr.substring(tr.length() - 5, tr.length() - 4); if ( Pattern.compile('[0-9]').matcher(Atr).find() || Pattern.compile('[0-9]').matcher(Ctr).find() ) { String str = '管理编码不正确,请与管理员确认是否错误。'; //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add( '产品BarCode(' + bar + ')管理编码有误,请检查条形码数据。' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + bar + ')管理编码有误,请检查条形码数据。' ) ); } continue; } } // String str = '管理编码不正确,请与管理员确认是否错误。'; // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + bar + ')管理编码中有数字,请与管理员确认是否错误!')); // continue; // gzw DB202305352696 入库管理编码验证程序调整 end } } else { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { errorList.add('产品BarCode(' + bar + ')的tracingCode错误!'); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '产品BarCode(' + bar + ')的tracingCode错误!' ) ); } continue; } } List barcodedetList = new List(); barcodedetList.add(bar); barcodedetList.add(String.valueOf(expirationDate)); barcodedetList.add(serialNoorLotNo); barcodedetList.add(tracingCode); if (barOtcodeMap.get(bar).containsKey(produ.OT_CODE__c)) { exitBarCodeMap.put(bar, bar); if (orderdetailMap.containsKey(produ.Id)) { consumableInventory.add( new ConsumableorderdetailsInfo(produ, barcodedetList) ); } else { consumableInventory.add( new ConsumableorderdetailsInfo(produ, barcodedetList) ); list overOrderBARcodeCunList = new List(); if (notEqualBARcodeCunMap.containsKey(produ.Id)) { overOrderBARcodeCunList = notEqualBARcodeCunMap.get(produ.Id) .clone(); overOrderBARcodeCunList.add(bar); notEqualBARcodeCunMap.put(produ.Id, overOrderBARcodeCunList); } else { overOrderBARcodeCunList.add(bar); notEqualBARcodeCunMap.put(produ.Id, overOrderBARcodeCunList); } } } } } } for (String bartxt : barCode241List) { if (!exitBarCodeMap.containsKey(bartxt)) { if (!errorMap.containsKey(bartxt)) { notInStorelist.add(bartxt); } } } } //判断产品是否一致 if (notEqualBARcodeCunMap.size() > 0) { for (String widget : notEqualBARcodeCunMap.keySet()) { if (notEqualBARcodeCunMap.get(widget).size() > 0) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { warningList.add('以下barcode产品与订货产品不一致。'); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.INFO, '以下barcode产品与订货产品不一致。' ) ); } for ( String barcodeListTTT : (List) notEqualBARcodeCunMap.get( widget ) ) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { warningList.add(barcodeListTTT); } else { ApexPages.addmessage( new ApexPages.message(ApexPages.severity.INFO, barcodeListTTT) ); } } } } } } public String ConfimResult() { list overOrderproList = new List(); list overOrderBARcodeCunList = new List(); list overOrderBARcodeCunListTest = new List(); //overOrderBARcodeCunMap.clear(); for (ConsumableorderdetailsInfo ass : ConsumableorderdetailsRecords) { if ( orderWantArriveCunMap.get(ass.esd.Asset_Model_No__c) + orderProductArrivedCunMap.get(ass.esd.Asset_Model_No__c) > orderProductCunMap.get(ass.esd.Asset_Model_No__c) - 1 ) { // 获取超过定货数量的消耗品信息 overOrderBARcodeCunList = new List(); overOrderBARcodeCunList = overOrderBARcodeCunMap.get( ass.esd.Asset_Model_No__c ) .clone(); overOrderBARcodeCunList.add(ass.esd.Bar_Code__c); overOrderBARcodeCunMap.put( ass.esd.Asset_Model_No__c, overOrderBARcodeCunList ); overOrderCunMap.put( ass.esd.Asset_Model_No__c, overOrderCunMap.get(ass.esd.Asset_Model_No__c) + 1 ); cancellationProList.add(ass.esd.Asset_Model_No__c); } else if ( orderWantArriveCunMap.get(ass.esd.Asset_Model_No__c) + orderProductArrivedCunMap.get(ass.esd.Asset_Model_No__c) == orderProductCunMap.get(ass.esd.Asset_Model_No__c) - 1 ) { consumableorderdetailsRecordsUse.add(ass); cancellationProList.add(ass.esd.Asset_Model_No__c); } else { consumableorderdetailsRecordsUse.add(ass); } orderWantArriveCunMap.put( ass.esd.Asset_Model_No__c, orderWantArriveCunMap.get(ass.esd.Asset_Model_No__c) + 1 ); } for (ConsumableorderdetailsInfo ass : consumableInventory) { if (!orderWantArriveCunMap.containsKey(ass.Prod.Asset_Model_No__c)) { consumableInventoryUse.add(ass); continue; } if ( orderWantArriveCunMap.get(ass.Prod.Asset_Model_No__c) + orderProductArrivedCunMap.get(ass.Prod.Asset_Model_No__c) > orderProductCunMap.get(ass.Prod.Asset_Model_No__c) - 1 ) { //取得原有list overOrderBARcodeCunList = new List(); overOrderBARcodeCunList = overOrderBARcodeCunMap.get( ass.Prod.Asset_Model_No__c ) .clone(); //更新list overOrderBARcodeCunList.add(ass.barCodeNo); //更新map overOrderBARcodeCunMap.put( ass.Prod.Asset_Model_No__c, overOrderBARcodeCunList ); overOrderCunMap.put( ass.Prod.Asset_Model_No__c, overOrderCunMap.get(ass.Prod.Asset_Model_No__c) + 1 ); cancellationProList.add(ass.Prod.Asset_Model_No__c); } else if ( orderWantArriveCunMap.get(ass.Prod.Asset_Model_No__c) + orderProductArrivedCunMap.get(ass.Prod.Asset_Model_No__c) == orderProductCunMap.get(ass.Prod.Asset_Model_No__c) - 1 ) { consumableInventoryUse.add(ass); cancellationProList.add(ass.Prod.Asset_Model_No__c); } else { consumableInventoryUse.add(ass); } orderWantArriveCunMap.put( ass.Prod.Asset_Model_No__c, orderWantArriveCunMap.get(ass.Prod.Asset_Model_No__c) + 1 ); } for (Integer i = 0; i < productList.size(); i++) { if (overOrderBARcodeCunMap.get(productList[i]).size() > 0) { // 获取超过定货数量的消耗品信息 overOrderproList.add(productList[i]); } } if (overOrderproList.size() > 0) { return '产品' + overOrderproList + '本次到货数量和已到货数量已经超过订货数量!'; } else { return ''; } } public void confimResultWithoutOrder() { /*list overOrderproList = new list(); list overOrderBARcodeCunList = new list(); orderProductCunMap.clear(); orderProductArrivedCunMap.clear(); orderWantArriveCunMap.clear(); //所有产品数量 List mx1 = [SELECT Asset_Model_No__c, Consumable_order__c, Consumable_count__c, Consumable_Product__r.Name FROM Consumable_Orderdetails__c WHERE Consumable_order__c in :orderId AND Consumable_Product__r.Name in : prodName AND Consumable_order__r.Dealer_Info__c = :accountid]; for (Integer i = 0; i < mx1.size(); i++) { orderProductCunMap.put(mx1[i].Consumable_order__c + mx1[i].Asset_Model_No__c,mx1[i].Consumable_count__c); orderProductArrivedCunMap.put(mx1[i].Consumable_order__c + mx1[i].Asset_Model_No__c,0); orderWantArriveCunMap.put(mx1[i].Consumable_order__c + mx1[i].Asset_Model_No__c,0); } //已到货产品数量 List mx2 = [SELECT Asset_Model_No__c, Consumable_count__c, Consumable_order_minor__c, Consumable_Product__r.Name FROM Consumable_order_details2__c WHERE recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery AND Consumable_order_minor__c in :orderId AND Consumable_Product__r.Name in : prodName AND Dealer_Info_text__c = :accountName AND Dealer_Arrive__c = true]; for (Integer i = 0; i < mx2.size(); i++) { if(orderProductArrivedCunMap.containsKey(mx2[i].Consumable_order_minor__c + mx2[i].Asset_Model_No__c)){ orderProductArrivedCunMap.put(mx2[i].Consumable_order_minor__c + mx2[i].Asset_Model_No__c,orderProductArrivedCunMap.get(mx2[i].Consumable_order_minor__c + mx2[i].Asset_Model_No__c)+1); } }*/ //要到货产品数量 for (ConsumableorderdetailsInfo ass : ConsumableorderdetailsRecords) { /*if(orderWantArriveCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c) + orderProductArrivedCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c) > orderProductCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c)-1){ // 获取超过定货数量的消耗品信息 overOrderproList.add('产品' + ass.esd.Asset_Model_No__c + '在订单' + ass.esd.Consumable_order_minor__r.Name + '中超过订货数量!\n'); overOrderBARcodeCunList = new list(); overOrderBARcodeCunList = overOrderBARcodeCunMap.get(ass.esd.Asset_Model_No__c).clone(); overOrderBARcodeCunList.add(ass.esd.Bar_Code__c); overOrderBARcodeCunMap.put(ass.esd.Asset_Model_No__c,overOrderBARcodeCunList); }else if(orderWantArriveCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c) + orderProductArrivedCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c) == orderProductCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c)-1){ consumableorderdetailsRecordsUse.add(ass); orderWantArriveCunMap.put(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c,orderWantArriveCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c)+1); }else{*/ consumableorderdetailsRecordsUse.add(ass); } /*orderWantArriveCunMap.put(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c,orderWantArriveCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c)+1); } return overOrderproList;*/ } // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start // 虚拟盘点单消耗品明细1创建巡回 public void addInventoryDetails1(List addList) { Map> accountGroupMap = new Map>(); Map> productMap = new Map>(); List orderIdList = new List(); // 以经销商名将要生成出库单的数据分组 for (Consumable_order_details2__c cod : addList) { List accGroupList = new List(); Map pNumMap = new Map(); Integer num = 1; if ( accountGroupMap.containsKey( cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c ) ) { accGroupList = accountGroupMap.get( cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c ); pNumMap = productMap.get( cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c ); if (pNumMap.containsKey(cod.Consumable_Product__c)) { num = pNumMap.get(cod.Consumable_Product__c) + 1; } } orderIdList.add(cod.Consumable_Inventory_order__c); pNumMap.put(cod.Consumable_Product__c, num); accGroupList.add(cod); productMap.put( cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c, pNumMap ); accountGroupMap.put( cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c, accGroupList ); System.debug('======accGroupList' + accGroupList); } System.debug('======accountGroupMap' + accountGroupMap); List orderList = [ SELECT Id, Name, Dealer_Info__r.Name, Order_Owner_WorkLocal__c FROM Consumable_order__c WHERE id IN :orderIdList ]; // 生成各经销商出库订单List // List orderList = new List (); Map> insDetail1Map = new Map>(); for (String acc : accountGroupMap.keySet()) { Consumable_order_details2__c arriveAccount = accountGroupMap.get(acc)[0]; List prodPriceList = accountGroupMap.get( acc ); Map pNumMap = new Map(); pNumMap = productMap.get(acc); List insDetail1 = new List(); for (Id id : pNumMap.keySet()) { Consumable_orderdetails__c ins = new Consumable_orderdetails__c(); //InsAfterDel.Consumable_order__c = p.id; ins.Product_Refind__c = pNumMap.get(id); ins.inventory_sum__c = pNumMap.get(id); ins.Consumable_Product__c = id; for (Consumable_order_details2__c pri : prodPriceList) { if (pri.Consumable_Product__c == id) { ins.Intra_Trade_List_RMB__c = pri.Intra_Trade_List_RMB__c; break; } } ins.Box_Piece__c = '盒'; ins.Out_unit__c = '盒'; //ins.Delivery_List_RMB__c = ass.orderdetails1.Delivery_List_RMB__c; //ins.Unitprice_To_agency__c = ass.orderdetails1.Unitprice_To_agency__c; //ins.Dealer_Custom_Price__c = ass.orderdetails1.Dealer_Custom_Price__c; ins.RecordTypeId = System.Label.RT_ConOrderDetail1_Inventory; ins.Used_date__c = Date.today(); ins.OwnerId = arriveAccount.OwnerId; insDetail1.add(ins); } System.debug('======insDetail1' + insDetail1); insDetail1Map.put(acc, insDetail1); System.debug('======insDetail1Map' + insDetail1Map); } List insDetail1List = new List(); for (Consumable_order__c setId : orderList) { // 明细1 List d1list = insDetail1Map.get( setId.Dealer_Info__r.Name + setId.Order_Owner_WorkLocal__c ); Integer i = 1; for (Consumable_orderdetails__c dtl1 : d1list) { String str = ('000' + i).right(4); dtl1.Consumable_order__c = setId.Id; dtl1.Name = setId.Name + '-' + str; insDetail1List.add(dtl1); } } System.debug('======insDetail1List' + insDetail1List); insert insDetail1List; } // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end // 经销商的不同工作地调货自动生成出库单 public void addSaleOrderAuto(List addList) { Map> accountGroupMap = new Map>(); Map> productMap = new Map>(); // 以经销商名将要生成出库单的数据分组 for (Consumable_order_details2__c cod : addList) { List accGroupList = new List(); Map pNumMap = new Map(); Integer num = 1; if ( accountGroupMap.containsKey( cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c ) ) { accGroupList = accountGroupMap.get( cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c ); pNumMap = productMap.get( cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c ); if (pNumMap.containsKey(cod.Consumable_Product__c)) { num = pNumMap.get(cod.Consumable_Product__c) + 1; } } pNumMap.put(cod.Consumable_Product__c, num); accGroupList.add(cod); productMap.put( cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c, pNumMap ); accountGroupMap.put( cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c, accGroupList ); } // 生成各经销商出库订单List List orderList = new List(); Map> insDetail1Map = new Map>(); for (String acc : accountGroupMap.keySet()) { Consumable_order_details2__c arriveAccount = accountGroupMap.get(acc)[0]; Consumable_order__c autoOrder = new Consumable_order__c(); autoOrder.Name = '*'; autoOrder.Dealer_Info__c = arriveAccount.Consumable_Arrived_order__r.Dealer_Info__c; autoOrder.OwnerId = arriveAccount.OwnerId; autoOrder.Order_type__c = '传票'; autoOrder.SummonsStatus_c__c = '已完成'; autoOrder.Order_ForDealerText__c = accountName; autoOrder.SummonsForDirction__c = '互相调货'; autoOrder.RecordTypeid = System.Label.RT_ConOrder_Shipment; autoOrder.Outbound_Date__c = Date.today(); autoOrder.Order_date__c = Date.today(); autoOrder.AutoShipment__c = true; orderList.add(autoOrder); List prodPriceList = accountGroupMap.get( acc ); Map pNumMap = new Map(); pNumMap = productMap.get(acc); List insDetail1 = new List(); for (Id id : pNumMap.keySet()) { Consumable_orderdetails__c ins = new Consumable_orderdetails__c(); //InsAfterDel.Consumable_order__c = p.id; ins.Shipment_Count__c = pNumMap.get(id); ins.Consumable_Product__c = id; for (Consumable_order_details2__c pri : prodPriceList) { if (pri.Consumable_Product__c == id) { ins.Intra_Trade_List_RMB__c = pri.Intra_Trade_List_RMB__c; break; } } ins.Box_Piece__c = '盒'; ins.Out_unit__c = '盒'; //ins.Delivery_List_RMB__c = ass.orderdetails1.Delivery_List_RMB__c; //ins.Unitprice_To_agency__c = ass.orderdetails1.Unitprice_To_agency__c; //ins.Dealer_Custom_Price__c = ass.orderdetails1.Dealer_Custom_Price__c; ins.RecordTypeId = System.Label.RT_ConOrderDetail1_Shipment; ins.Used_date__c = Date.today(); ins.OwnerId = arriveAccount.OwnerId; insDetail1.add(ins); } insDetail1Map.put(acc, insDetail1); } insert orderList; List orderIdList = new List(); for (Consumable_order__c co : orderList) { orderIdList.add(co.Id); } orderList = new List(); orderList = [ SELECT Id, Name, Dealer_Info__r.Name, Order_Owner_WorkLocal__c FROM Consumable_order__c WHERE id IN :orderIdList ]; // 设置明细1 和 明细2 的 订单ID List insDetail1List = new List(); List updDetail2List = new List(); for (Consumable_order__c setId : orderList) { // 明细1 List d1list = insDetail1Map.get( setId.Dealer_Info__r.Name + setId.Order_Owner_WorkLocal__c ); Integer i = 1; for (Consumable_orderdetails__c dtl1 : d1list) { String str = ('000' + i).right(4); // if(str.length() == 1){ // str = '0' + str; // } dtl1.Consumable_order__c = setId.Id; dtl1.Name = setId.Name + '-' + str; insDetail1List.add(dtl1); } // 明细2 List d2list = accountGroupMap.get( setId.Dealer_Info__r.Name + setId.Order_Owner_WorkLocal__c ); for (Consumable_order_details2__c dtl2 : d2list) { dtl2.Send_Date__c = Date.today(); dtl2.Consumable_Sale_order__c = null; dtl2.Consumable_Return_order__c = null; dtl2.Consumable_ZS_order__c = setId.Id; //dtl2.Delivery_List_RMB__c = null; dtl2.Return_date__c = null; dtl2.Return_reason__c = null; dtl2.Consumable_Shipment_order__c = setId.Id; // 更新借调信息 add by gzw 2020-0-415 start dtl2.Transfer_Time__c = 1; dtl2.Agency_Transfer__c = true; dtl2.Frist_Transfer_Agency__c = dtl2.Dealer_Info_text__c; // 更新借调信息 add by gzw 2020-0-415 end updDetail2List.add(dtl2); } } insert insDetail1List; update updDetail2List; } //到货确认 public PageReference ArriveGoodsConfim() { //add by rentx 20210618 start CHAN-C3K4ZQ 跳过不必要的查询 StaticParameter.ConsumableOrderTrigger = true; //add by rentx 20210618 end CHAN-C3K4ZQ 跳过不必要的查询 cancellationProList = new List(); List ins = new List(); String resultcheck = ''; List resultcheckWithoutOrder = new List(); Savepoint sp = Database.setSavepoint(); if ( ConsumableorderdetailsRecords.size() < 1 && consumableInventory.size() < 1 ) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { returnError = '不存在到货明细'; } else { ApexPages.addmessage( new ApexPages.message(ApexPages.severity.ERROR, '不存在到货明细') ); } return null; } if (EsetId != null && EsetId != '') { resultcheck = ConfimResult(); if (resultcheck.length() > 0) { for (String widget : overOrderBARcodeCunMap.keySet()) { if (overOrderBARcodeCunMap.get(widget).size() > 0) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { warningList.add( '产品' + widget + '本次到货数量超过' + overOrderBARcodeCunMap.get(widget).size() + '个订货的数量。' ); } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.INFO, '产品' + widget + '本次到货数量超过' + overOrderBARcodeCunMap.get(widget).size() + '个订货的数量。' ) ); } for ( String barcodeListTTT : (List) overOrderBARcodeCunMap.get( widget ) ) { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { warningList.add(barcodeListTTT); } else { ApexPages.addmessage( new ApexPages.message(ApexPages.severity.INFO, barcodeListTTT) ); } } } } } } else { confimResultWithoutOrder(); } try { Consumable_order__c orderMain = new Consumable_order__c(); List orderdetails = new List(); //到货正确信息 orderMain.Name = '*'; orderMain.Order_status__c = '批准'; orderMain.Dealer_Info__c = accountid; orderMain.Deliver_date__c = Date.today(); orderMain.Order_date__c = Date.today(); orderMain.Order_type__c = '到货'; orderMain.Order_ProType__c = userPro_Type; if (EsetId != null && EsetId != '') { orderMain.Arrive_Order__c = coc.Id; } orderMain.RecordTypeid = System.Label.RT_ConOrder_Arrive; insert orderMain; List consumable_order = [ SELECT Name FROM Consumable_order__c WHERE id = :orderMain.id ]; arriveId = orderMain.id; Decimal arriveAmount = 0; for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsUse) { //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------1------')); Consumable_order_details2__c insDetails = new Consumable_order_details2__c(); insDetails.Id = ass.esd.Id; insDetails.Consumable_Arrived_order__c = orderMain.id; insDetails.Arrive_date__c = Date.today(); insDetails.Bar_Code__c = ass.esd.Bar_Code__c; insDetails.OwnerId = UserInfo.getUserId(); // 更新借调信息 add by gzw 2020-0-415 start if (orderdetails2trMap.containsKey(ass.esd.Bar_Code__c)) { insDetails.Transfer_Time__c = ass.esd.Transfer_Time__c == null ? 1 : ass.esd.Transfer_Time__c; insDetails.Agency_Transfer__c = true; insDetails.Frist_Transfer_Agency__c = ass.esd.Frist_Transfer_Agency__c == null ? ass.esd.Dealer_Info_text__c : ass.esd.Frist_Transfer_Agency__c; } // 更新借调信息 add by gzw 2020-0-415 end // 追加首次入库经销商 add by gzw 2020-04-27 start insDetails.Agencyinfo_fromSAP__c = ass.esd.Agencyinfo_fromSAP__c; insDetails.Frist_Storage_Agency__c = ass.esd.Frist_Storage_Agency__c == null ? ass.esd.Dealer_Info_text__c : ass.esd.Frist_Storage_Agency__c; // 追加首次入库经销商 add by gzw 2020-04-27 end arriveAmount += ass.esd.Intra_Trade_List_RMB__c; orderdetails.add(insDetails); } Integer i = 1; for (ConsumableorderdetailsInfo ass : consumableInventoryUse) { //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------2------')); Consumable_order_details2__c insAfterDel = new Consumable_order_details2__c(); String str = ('000' + i).right(4); // if(str.length() == 1){ // str = '0' + str; // } insAfterDel.Name = consumable_order[0].Name + '-' + str; insAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery; // gzw 手动入库 默认产品单价 20230307 // if(EsetId != null && EsetId != ''){ // insAfterDel.Intra_Trade_List_RMB__c = ass.Prod.Intra_Trade_List_RMB__c; // }else{ // insAfterDel.Intra_Trade_List_RMB__c = 0; // } insAfterDel.Intra_Trade_List_RMB__c = ass.Prod.Intra_Trade_List_RMB__c; //gzw 手动入库 默认产品单价 20230307 insAfterDel.Asset_Model_No__c = ass.Prod.Asset_Model_No__c; if (EsetId != null && EsetId != '') { insAfterDel.Consumable_order_minor__c = ESetId; } insAfterDel.Deliver_date__c = Date.today(); insAfterDel.Direct_Arrive_Product__c = true; //TODO待确认 insAfterDel.Sterilization_limit__c = ass.sterilizationlimitDate; insAfterDel.Consumable_Product__c = ass.Prod.id; insAfterDel.Bar_Code__c = ass.barCodeNo; insAfterDel.Used_account__c = accountid; //TODO待确认 insAfterDel.SerialLotNo__c = ass.serialNoorLotNo; insAfterDel.TracingCode__c = ass.tracingCodeNo; //insAfterDel.Dealer_Arrive__c = true; insAfterDel.Consumable_Arrived_order__c = orderMain.id; insAfterDel.Arrive_date__c = Date.today(); insAfterDel.OwnerId = UserInfo.getUserId(); // 更新借调信息 add by gzw 2020-0-415 start if (orderdetails2trMap.containsKey(ass.esd.Bar_Code__c)) { insAfterDel.Transfer_Time__c = ass.esd.Transfer_Time__c == null ? 1 : ass.esd.Transfer_Time__c; insAfterDel.Agency_Transfer__c = true; insAfterDel.Frist_Transfer_Agency__c = ass.esd.Frist_Transfer_Agency__c == null ? accountName : ass.esd.Frist_Transfer_Agency__c; } // 更新借调信息 add by gzw 2020-0-415 end // 追加首次入库经销商 add by gzw 2020-04-27 start insAfterDel.Agencyinfo_fromSAP__c = ass.esd.Agencyinfo_fromSAP__c; insAfterDel.Frist_Storage_Agency__c = ass.esd.Frist_Storage_Agency__c == null ? accountName : ass.esd.Frist_Storage_Agency__c; // 追加首次入库经销商 add by gzw 2020-04-27 end arriveAmount += insAfterDel.Intra_Trade_List_RMB__c; //add by rentx 2020-10-14 strat //insAfterDel.ContractNo_text__c = /*ass.esd.ContractNo__c*/; // tcm start if (String.isBlank(ass.esd.Consumable_order_minor__r.ContractNo__c)) { insAfterDel.ContractNo_text__c = ass.esd.ContractNo_text__c; } else { insAfterDel.ContractNo_text__c = ass.esd.Consumable_order_minor__r.ContractNo__c; } // tcm end //add by rentx 2020-10-14 end i++; ins.add(insAfterDel); } orderMain.Arrive_total_amount__c = arriveAmount; update orderMain; List updateconsumableorderdetails2 = new List(); //更新明细取消时间 => 未到货取消,到货自动生成出库流程 List addSaleOrderList = new List(); for (Consumable_order_details2__c Cod : consumableorderdetails2Cancle) { //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------3------')); if (Cod.Dealer_Arrive__c) { if (Cod.Dealer_Shipment__c == false && Cod.Dealer_Saled__c == false) { addSaleOrderList.add(Cod); } } else { Cod.Cancellation_Date__c = Date.today(); Cod.Cancellation_Flag__c = true; updateconsumableorderdetails2.add(Cod); } } if (addSaleOrderList.size() > 0) { addSaleOrderAuto(addSaleOrderList); } if (updateconsumableorderdetails2.size() > 0) { update updateconsumableorderdetails2; } List insertconsumableorderdetails2 = new List(); for (Consumable_order_details2__c Cod2 : consumableorderdetails2Insert) { //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------4------')); String str = ('000' + i).right(4); // if(str.length() == 1){ // str = '0' + str; // } Cod2.Name = consumable_order[0].Name + '-' + str; Cod2.Consumable_order_minor__c = null; Cod2.Deliver_date__c = Date.today(); Cod2.Used_account__c = accountid; Cod2.Consumable_Arrived_order__c = orderMain.id; Cod2.Arrive_date__c = Date.today(); // 更新借调信息 add by gzw 2020-0-415 start if (orderdetails2trMap.containsKey(Cod2.Bar_Code__c)) { //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------4++++++' + Cod2.Frist_Storage_Agency__c)); Cod2.Transfer_Time__c = Cod2.Transfer_Time__c == null ? 1 : Cod2.Transfer_Time__c; Cod2.Agency_Transfer__c = true; Cod2.Frist_Transfer_Agency__c = Cod2.Frist_Transfer_Agency__c == null ? accountName : Cod2.Frist_Transfer_Agency__c; } // 更新借调信息 add by gzw 2020-0-415 end // 追加首次入库经销商 add by gzw 2020-04-27 start Cod2.Agencyinfo_fromSAP__c = Cod2.Agencyinfo_fromSAP__c; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------4------' + Cod2.Frist_Storage_Agency__c)); Cod2.Frist_Storage_Agency__c = Cod2.Frist_Storage_Agency__c == null ? accountName : Cod2.Frist_Storage_Agency__c; // 追加首次入库经销商 add by gzw 2020-04-27 end insertconsumableorderdetails2.add(Cod2); i++; } //return null; if (insertconsumableorderdetails2.size() > 0) { insert insertconsumableorderdetails2; } if (ins.size() > 0) { insert ins; } if (orderdetails.size() > 0) { ControllerUtil.updateOrderDetailsSatus(orderdetails); } //超出到货数量产品取消日期更新 List needcanceldet = new List(); if (cancellationProList.size() > 0) { needcanceldet = [ SELECT Id, Cancellation_Date__c FROM Consumable_order_details2__c WHERE Asset_Model_No__c IN :cancellationProList AND Consumable_order_minor__c = :ESetId AND Dealer_Arrive__c = FALSE AND Cancellation_Date__c = NULL ]; if (needcanceldet.size() > 0) { for (Integer a = 0; a < needcanceldet.size(); a++) { needcanceldet[a].Cancellation_Date__c = Date.today(); needcanceldet[a].Cancellation_Flag__c = true; } ControllerUtil.updateOrderDetailsSatus(needcanceldet); } } List qs = new List(); qs = [ SELECT Id, Name, Order_status__c, Dealer_Info__c, Deliver_date__c, ReturnGs_Upload_Date__c, Order_Reason__c, Order_date__c, Contract_application_decision__c, Order_type__c, Total_num__c, OrderNumber_arrived__c, Delivery_detail_count__c, OrderNumber_notarrive__c FROM Consumable_order__c WHERE Id = :ESetId AND Dealer_Info__c = :accountid ]; if (qs.size() > 0) { coc = qs[0]; } saveFLGbln = true; alertMessage = '到货完成。'; // Integer a = 1/0; } catch (Exception e) { Database.rollback(sp); //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { returnError = e.getLineNumber() + '---' + e.getMessage(); } else { ApexPages.addMessages(e); } return null; } if (resultcheck.length() > 0) { return null; } else if (resultcheckWithoutOrder.size() > 0) { return null; } else { urlType = 'UnabletoEdit'; return UnabletoEdit(); // return null; } } // 返品检查,后回库 public integer GoodsReturnCheck() { List GrListIn = ParseBarCode(barcode); GrList = new List(); Map CheckBarcodeResult = new Map(); for (String Str : GrListIn) { CheckBarcodeResult.put(str, 'UnFind'); } List BarcodeRetrunResult = [ 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.Asset_Model_No__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, Guarantee_period_for_products__c, CFDA_Status__c, ProductPacking_list_manual__c, Report_Product_Approbation__c, Report_Product_Expiration__c, Box_Piece__c, Rrturn_count__c, Product_Type__c, //add by rentx 2020-10-14 start ContractNo_text__c /*,ContractNo__c*/, // tcm start Consumable_order_minor__r.ContractNo__c // tcm end //add by rentx 2020-10-14 end FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND (Dealer_Shipment__c = TRUE //AND Consumable_Shipment_order__r.SummonsForDirction__c != '互相调货') OR Dealer_Saled__c = TRUE) AND Dealer_Info_text__c = :accountName AND Bar_Code__c IN :GrListIn AND (NOT Product_Type__c LIKE :userPro_Typestr) AND Dealer_Returned__c = FALSE AND Arrive_Owner_Work_Location__c = :userWorkLocation ORDER BY Box_Piece__c DESC, Name ]; if (BarcodeRetrunResult.size() > 0) { for (Integer i = 0; i < BarcodeRetrunResult.size(); i++) { if ( ErrorIdMap.containsKey(BarcodeRetrunResult[i].Bar_Code__c) || ExistIdMap.containsKey(BarcodeRetrunResult[i].Bar_Code__c) ) { // 跳过已经处理的消耗品明细 continue; } else { String str = '产品类型[' + BarcodeRetrunResult[i].Product_Type__c + ']与用户的类型[' + userPro_Type + ']不符'; ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(BarcodeRetrunResult[i], str) ); ErrorIdMap.put( BarcodeRetrunResult[i].Bar_Code__c, BarcodeRetrunResult[i].Bar_Code__c ); } } } AllMap.putAll(ErrorIdMap); BarcodeRetrunResult = [ SELECT Id, Consumable_order_minor__c, Deliver_date__c, Asset_Model_No__c, Consumable_Product__c, Consumable_Product__r.Name, Consumable_Product__r.Name__c, Name, Bar_Code__c, Arrive_date__c, Dealer_Shipment__c, Lose_Flag__c, Dealer_Saled__c, Return_reason__c, Consumable_Shipment_order__c, Consumable_Shipment_order__r.Name, Send_date__c, Consumable_Sale_order__c, Consumable_Sale_order__r.Name, Used_date__c, SerialLotNo__c, TracingCode__c, Sterilization_limit__c, Consumable_ZS_order__c, Consumable_ZS_order__r.Name, Product_OutDate__c, Invoice_Date__c, recordtypeid, Consumable_Arrived_order__c, Box_Piece__c, Rrturn_count__c, Intra_Trade_List_RMB__c, OwnerId, SummonsForDirction_det__c, Order_Dealer_Info__c, HospItal_Name__c, Agencyinfo_fromSAP__c, Frist_Storage_Agency__c, Dealer_Info_text__c, Used_account__c, Transfer_Time__c, Frist_Transfer_Agency__c, Arrive_Owner_Work_Location__c, Agency_Transfer__c, //add by rentx 2020-10-14 start ContractNo_text__c /*,ContractNo__c*/, // tcm start Consumable_order_minor__r.ContractNo__c, // tcm end //add by rentx 2020-10-14 end Report_Product_Expiration__c, Intra_Trade_List__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND (Dealer_Shipment__c = TRUE //AND Consumable_Shipment_order__r.SummonsForDirction__c != '互相调货') OR Dealer_Saled__c = TRUE // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start OR (Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Lose_Flag__c = TRUE)) // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end AND Dealer_Info_text__c = :accountName AND Bar_Code__c IN :GrListIn AND Product_Type__c LIKE :userPro_Typestr AND Dealer_Returned__c = FALSE AND (Arrive_Owner_Work_Location__c = :userWorkLocation OR OwnerId = :System.Label.User_OlympusSystem) ORDER BY Box_Piece__c DESC, Name ]; ShowGoodsofReturnList = new List(); //返品时istinct处理 if (ArrType == 'ReG') { BarcodeRetrunResult = getDistinctZSOrder(BarcodeRetrunResult); } for (Consumable_order_details2__c codc : BarcodeRetrunResult) { if ( ErrorIdMap.containsKey(codc.Bar_Code__c) || ExistIdMap.containsKey(codc.Bar_Code__c) ) { // 跳过已经处理的消耗品明细 continue; } else { Matcher n = Pattern.compile('[0-9]').matcher(codc.TracingCode__c); if (n.find()) { // gzw DB202305352696 入库管理编码验证程序调整 start if (codc.TracingCode__c.length() == 5) { String tr = codc.TracingCode__c; String Ctr = tr.substring(tr.length() - 3, tr.length()); String Btr = tr.substring(tr.length() - 4, tr.length() - 3); String Atr = tr.substring(tr.length() - 5, tr.length() - 4); if ( Pattern.compile('[0-9]').matcher(Atr).find() || Pattern.compile('[0-9]').matcher(Ctr).find() ) { String str = '管理编码有误,请检查条形码数据。'; ConsumableorderdetailsRecordserror.add( new ConsumableorderdetailsInfo(codc, str) ); ErrorIdMap.put(codc.Bar_Code__c, codc.Bar_Code__c); continue; } } // String str = '管理编码中有数字,请与管理员确认是否错误。'; // ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(codc,str)); // ErrorIdMap.put(codc.Bar_Code__c,codc.Bar_Code__c); // continue; // gzw DB202305352696 入库管理编码验证程序调整 end } if (CheckBarcodeResult.containsKey(codc.Bar_Code__c)) { GrList.add(codc.Bar_Code__c); if (codc.Dealer_Shipment__c == true) { CheckBarcodeResult.put(codc.Bar_Code__c, '已出库'); ShowGoodsofReturnList.add(new ConsumableorderdetailsInfo(codc)); } // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start // else{ // CheckBarcodeResult.put( codc.Bar_Code__c, '已销售'); // ShowGoodsofReturnList.add( new ConsumableorderdetailsInfo( codc ) ); // } else if (codc.Dealer_Saled__c == true) { CheckBarcodeResult.put(codc.Bar_Code__c, '已销售'); ShowGoodsofReturnList.add(new ConsumableorderdetailsInfo(codc)); } else { CheckBarcodeResult.put(codc.Bar_Code__c, '已丢失'); ShowGoodsofReturnList.add(new ConsumableorderdetailsInfo(codc)); } // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end } else { continue; } } } return BarcodeRetrunResult.size(); } // 单位为个的Barcode对应的出库单 public integer Getconsumableorderdetails2Nobox() { consumableorderdetails2Nobox = new List(); BarcodeCntMap.clear(); consumableorderdetails2Nobox = [ SELECT Id, Consumable_order_minor__c, Deliver_date__c, Asset_Model_No__c, Consumable_Product__c, Consumable_Product__r.Name, Consumable_Product__r.Name__c, Name, Bar_Code__c, Arrive_date__c, Dealer_Shipment__c, Dealer_Saled__c, Return_reason__c, Consumable_Shipment_order__c, Send_date__c, Consumable_Sale_order__c, Used_date__c, SerialLotNo__c, TracingCode__c, Sterilization_limit__c, Consumable_ZS_order__c, Consumable_ZS_order__r.Name, Product_OutDate__c, Invoice_Date__c, recordtypeid, Consumable_Arrived_order__c, Box_Piece__c, RemoveBox_No__c, RemoveBox_date__c, Rrturn_count__c, Dealer_Info_text__c, Arrive_Owner_Work_Location__c, Intra_Trade_List_RMB__c, //add by rentx 2020-10-13 start 返品时 新数据记录SAP合同号 ContractNo_text__c /*,ContractNo__c*/, // tcm start Consumable_order_minor__r.ContractNo__c, // tcm end Report_Product_Expiration__c, //add by rentx 2020-10-13 end Intra_Trade_List__c //gzw 手动入库 默认产品单价 20230307 FROM Consumable_order_details2__c WHERE // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start // (Dealer_Shipment__c = true or Dealer_Saled__c = true) (Dealer_Shipment__c = TRUE OR Dealer_Saled__c = TRUE OR (Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Lose_Flag__c = TRUE)) // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end AND Dealer_Info_text__c = :accountName AND Bar_Code__c IN :noboxBarcodeList AND Arrive_Owner_Work_Location__c = :userWorkLocation AND Dealer_Returned__c = FALSE AND Box_Piece__c = '个' ORDER BY Consumable_ZS_order__c, RemoveBox_No__c ]; AggregateResult[] results = [ SELECT Consumable_ZS_order__c, Bar_Code__c, count(Id) recordCount FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start // AND (Dealer_Shipment__c= true OR Dealer_Saled__c = true) AND (Dealer_Shipment__c = TRUE OR Dealer_Saled__c = TRUE OR (Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Lose_Flag__c = TRUE)) // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end AND Dealer_Returned__c = FALSE AND Bar_Code__c IN :noboxBarcodeList AND Arrive_Owner_Work_Location__c = :userWorkLocation AND Box_Piece__c = '个' AND Dealer_Info_text__c = :accountName GROUP BY Consumable_ZS_order__c, Bar_Code__c ]; for (AggregateResult ar : results) { String key = '' + ar.get('Consumable_ZS_order__c') + ar.get('Bar_Code__c'); BarcodeCntMap.put(key, Integer.valueOf(ar.get('recordCount'))); } return consumableorderdetails2Nobox.size(); } //distinct public List getDistinctZSOrder( List duplicates ) { List distinctOrder = new List(); for (Consumable_order_details2__c details2 : duplicates) { Boolean found = false; for (Consumable_order_details2__c result : distinctOrder) { if ( details2.Consumable_ZS_order__c == result.Consumable_ZS_order__c && details2.Bar_Code__c == result.Bar_Code__c ) { found = true; break; } } if (!found) { distinctOrder.add(details2); if (details2.Box_Piece__c == '个') noboxBarcodeList.add(details2.Bar_Code__c); } } return distinctOrder; } // Update返品明细信息 public Pagereference UpdateGoodsOfReturn() { if (ShowGoodsofReturnList == null) { GoodsReturnCheck(); } Getconsumableorderdetails2Nobox(); Savepoint sp = Database.setSavepoint(); boolean hasReturnGoods = false; boolean hasLoseGoods = false; try { if (ShowGoodsofReturnList.size() > 0 || consumableInventory.size() > 0) { Consumable_order__c Return_Order_Sheet = new Consumable_order__c(); Return_Order_Sheet.Name = '*'; Return_Order_Sheet.Order_status__c = '批准'; Return_Order_Sheet.ReturnGs_Uploader_ID__c = UserInfo.getUserId(); Return_Order_Sheet.ReturnGs_Upload_Date__c = Date.today(); Return_Order_Sheet.Order_type__c = '返品'; Return_Order_Sheet.RecordTypeid = System.Label.Dealer_Returned_Label; Return_Order_Sheet.Order_ProType__c = userPro_Type; insert Return_Order_Sheet; return_Order_id = Return_Order_Sheet.id; List consumable_order_ret = [ SELECT Name FROM Consumable_order__c WHERE id = :Return_Order_Sheet.id ]; //2017-07-03 到货订单 Consumable_order__c Arrived_Order_Sheet = new Consumable_order__c(); Arrived_Order_Sheet.Name = '*'; Arrived_Order_Sheet.Order_status__c = '批准'; Arrived_Order_Sheet.Order_type__c = '到货'; Arrived_Order_Sheet.Dealer_Info__c = accountid; Arrived_Order_Sheet.RecordTypeid = System.Label.RT_ConOrder_Arrive; Arrived_Order_Sheet.Order_ProType__c = userPro_Type; insert Arrived_Order_Sheet; List consumable_order_arr = [ SELECT Name FROM Consumable_order__c WHERE id = :Arrived_Order_Sheet.id ]; // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start // 虚拟盘点单 Consumable_order__c Inventory_Order_Sheet = new Consumable_order__c(); Inventory_Order_Sheet.Name = '*'; Inventory_Order_Sheet.Order_status__c = '批准'; Inventory_Order_Sheet.ReturnGs_Uploader_ID__c = UserInfo.getUserId(); Inventory_Order_Sheet.Inventory_date__c = Date.today(); Inventory_Order_Sheet.Dealer_Info__c = accountid; Inventory_Order_Sheet.ReturnGs_Upload_Date__c = Date.today(); Inventory_Order_Sheet.Order_type__c = '盘点'; Inventory_Order_Sheet.RecordTypeid = System.Label.RT_ConOrder_Inventory; Inventory_Order_Sheet.Order_ProType__c = userPro_Type; insert Inventory_Order_Sheet; inventory_Order_id = Inventory_Order_Sheet.id; List consumable_order_Inv = [ SELECT Name FROM Consumable_order__c WHERE id = :Inventory_Order_Sheet.id ]; // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end List codcList = new List(); //新规返品对应的产品明细 List codcorderdetList = new List(); //返品原因,返品数量检查 for (ConsumableorderdetailsInfo codi : ShowGoodsofReturnList) { if ( codi.esd.Box_Piece__c == '个' && (codi.esd.Rrturn_count__c == null || String.valueof(codi.esd.Rrturn_count__c) == '' || codi.esd.Rrturn_count__c <= 0) ) { continue; } if ( codi.esd.Return_reason__c == null || codi.esd.Return_reason__c == '' ) { if (isLwc) { returnError = '请补充返品原因'; } else { codi.esd.Return_reason__c.addError('请补充返品原因'); } return null; } if (codi.esd.Box_Piece__c == '个' && codi.esd.Rrturn_count__c > 0) { String key = '' + codi.esd.Consumable_ZS_order__c + codi.esd.Bar_Code__c; Integer deliverycnt = BarcodeCntMap.get(key); if (codi.esd.Rrturn_count__c > deliverycnt) { if (isLwc) { returnError = '超出出库数量'; } else { codi.esd.Rrturn_count__c.addError('超出出库数量'); } return null; } } } Integer tempNo = 0; // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start List conOrderDetail2InList = new List(); // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start for (ConsumableorderdetailsInfo codi : ShowGoodsofReturnList) { Consumable_order_details2__c codcorderdet = new Consumable_order_details2__c(); //单位=个 if ( codi.esd.Box_Piece__c == '个' && (codi.esd.Rrturn_count__c == null || String.valueof(codi.esd.Rrturn_count__c) == '' || codi.esd.Rrturn_count__c <= 0) ) { continue; } if (codi.esd.Box_Piece__c == '个' && codi.esd.Rrturn_count__c > 0) { hasReturnGoods = true; Integer cnt = 1; for ( Consumable_order_details2__c codctmp : consumableorderdetails2Nobox ) { if ( codctmp.Consumable_ZS_order__c == codi.esd.Consumable_ZS_order__c && codctmp.Bar_Code__c == codi.esd.Bar_Code__c ) { Consumable_order_details2__c esd = codctmp; // esd.Consumable_Return_order__c = Return_Order_Sheet.id; esd.Return_reason__c = codi.esd.Return_reason__c; esd.Return_date__c = Date.today(); // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start // esd.Return_reason__c = codi.esd.Return_reason__c; // esd.Return_date__c = Date.today(); // esd.Consumable_Return_order__c = Return_Order_Sheet.id; if ( codi.esd.Dealer_Saled__c == false && codi.esd.Dealer_Shipment__c == false && codi.esd.Lose_Flag__c == true ) { // esd.Lose_Flag__c = false; esd.Consumable_Inventory_order__c = Inventory_Order_Sheet.id; conOrderDetail2InList.add(esd); hasLoseGoods = true; } else { // esd.Return_date__c = Date.today(); esd.Consumable_Return_order__c = Return_Order_Sheet.id; } // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end esd.ReturnGs_Uploader_ID__c = UserInfo.getUserId(); //修改返品所有人 esd.OwnerId = UserInfo.getUserId(); esd.RecordTypeId = System.Label.RT_ConOrderDetail2_Return; //Consumable_order__c coc = [select name from Consumable_order__c where Id =:Arrived_Order_Sheet.id]; codcorderdet = new Consumable_order_details2__c(); codcorderdet.Name = consumable_order_arr[0].name + '-' + String.valueOf(++tempNo).leftPad(4, '0'); codcorderdet.Consumable_order_minor__c = codi.esd.Consumable_order_minor__c; codcorderdet.Consumable_Arrived_order__c = Arrived_Order_Sheet.id; //修改到货所有人 codcorderdet.OwnerId = UserInfo.getUserId(); codcorderdet.Arrive_date__c = Date.today(); codcorderdet.Consumable_Product__c = codi.esd.Consumable_Product__c; codcorderdet.Asset_Model_No__c = codi.esd.Asset_Model_No__c; codcorderdet.Bar_Code__c = codi.esd.Bar_Code__c; codcorderdet.Deliver_date__c = codi.esd.Deliver_date__c; codcorderdet.SerialLotNo__c = codi.esd.SerialLotNo__c; codcorderdet.TracingCode__c = codi.esd.TracingCode__c; codcorderdet.Sterilization_limit__c = codi.esd.Sterilization_limit__c; //gzw 手动入库 默认产品单价 20230307 codcorderdet.Intra_Trade_List_RMB__c = (codi.esd.Intra_Trade_List_RMB__c == null || codi.esd.Intra_Trade_List_RMB__c == 0) ? codi.esd.Intra_Trade_List__c : codi.esd.Intra_Trade_List_RMB__c; codcorderdet.RemoveBox_No__c = codctmp.RemoveBox_No__c; codcorderdet.RemoveBox_date__c = codctmp.RemoveBox_date__c; codcorderdet.Box_Piece__c = codctmp.Box_Piece__c; //add by rentx 2020-10-13 start 返品时新数据记录SAP合同号 // codcorderdet.ContractNo_text__c= codctmp.ContractNo__c; // tcm start if ( String.isBlank( codctmp.Consumable_order_minor__r.ContractNo__c ) ) { codcorderdet.ContractNo_text__c = codctmp.ContractNo_text__c; } else { codcorderdet.ContractNo_text__c = codctmp.Consumable_order_minor__r.ContractNo__c; } // tcm end //add by rentx 2020-10-13 end 返品时新数据记录SAP合同号 // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start if (hasLoseGoods) { codcorderdet.loseInventory__c = true; } // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end // 追加首次入库经销商 add by gzw 2020-04-27 start // 返品时,①追加借调借出方信息 ②保留借调信息 ③保存SAP和经销商首次发货经销商 codcorderdet.Used_account__c = codi.esd.Used_account__c; codcorderdet.Transfer_Time__c = codi.esd.Transfer_Time__c; codcorderdet.Frist_Transfer_Agency__c = codi.esd.Frist_Transfer_Agency__c; codcorderdet.Agency_Transfer__c = codi.esd.Agency_Transfer__c; codcorderdet.Agencyinfo_fromSAP__c = codi.esd.Agencyinfo_fromSAP__c; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------1------' + codi.esd.Frist_Storage_Agency__c)); codcorderdet.Frist_Storage_Agency__c = codi.esd.Frist_Storage_Agency__c == null ? codi.esd.Dealer_Info_text__c : codi.esd.Frist_Storage_Agency__c; // 追加首次入库经销商 add by gzw 2020-04-27 end codcorderdetList.add(codcorderdet); codcList.add(esd); cnt++; if (cnt > codi.esd.Rrturn_count__c) break; } } } else { hasReturnGoods = true; //单位=盒 //changeinvoiceInfo(codi.esd); //Consumable_order__c coc = [select name from Consumable_order__c where Id =:Arrived_Order_Sheet.id]; // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start codi.esd.Return_date__c = Date.today(); // codi.esd.Consumable_Return_order__c = Return_Order_Sheet.id; if ( codi.esd.Dealer_Saled__c == false && codi.esd.Dealer_Shipment__c == false && codi.esd.Lose_Flag__c == true ) { codi.esd.Lose_Flag__c = false; codi.esd.Return_reason__c = ''; codi.esd.Consumable_Inventory_order__c = Inventory_Order_Sheet.id; conOrderDetail2InList.add(codi.esd); hasLoseGoods = true; } else { // codi.esd.Return_date__c = Date.today(); codi.esd.Consumable_Return_order__c = Return_Order_Sheet.id; } // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end codi.esd.ReturnGs_Uploader_ID__c = UserInfo.getUserId(); // codi.esd.Consumable_Return_order__c = Return_Order_Sheet.id; //修改返品所有人 codi.esd.OwnerId = UserInfo.getUserId(); codi.esd.RecordTypeId = System.Label.RT_ConOrderDetail2_Return; codcorderdet.Name = consumable_order_arr[0].name + '-' + String.valueOf(++tempNo).leftPad(4, '0'); codcorderdet.Consumable_order_minor__c = codi.esd.Consumable_order_minor__c; codcorderdet.Consumable_Arrived_order__c = Arrived_Order_Sheet.id; //修改到货所有人 codcorderdet.OwnerId = UserInfo.getUserId(); codcorderdet.Arrive_date__c = Date.today(); codcorderdet.Consumable_Product__c = codi.esd.Consumable_Product__c; codcorderdet.Asset_Model_No__c = codi.esd.Asset_Model_No__c; codcorderdet.Bar_Code__c = codi.esd.Bar_Code__c; codcorderdet.Deliver_date__c = codi.esd.Deliver_date__c; codcorderdet.SerialLotNo__c = codi.esd.SerialLotNo__c; codcorderdet.TracingCode__c = codi.esd.TracingCode__c; codcorderdet.Sterilization_limit__c = codi.esd.Sterilization_limit__c; //gzw 手动入库 默认产品单价 20230307 codcorderdet.Intra_Trade_List_RMB__c = (codi.esd.Intra_Trade_List_RMB__c == null || codi.esd.Intra_Trade_List_RMB__c == 0) ? codi.esd.Intra_Trade_List__c : codi.esd.Intra_Trade_List_RMB__c; // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start if (hasLoseGoods) { codcorderdet.loseInventory__c = true; } // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end // 追加首次入库经销商 add by gzw 2020-04-27 start // 返品时,①追加借调借出方信息 ②保留借调信息 ③保存SAP和经销商首次发货经销商 codcorderdet.Used_account__c = codi.esd.Used_account__c; codcorderdet.Transfer_Time__c = codi.esd.Transfer_Time__c; codcorderdet.Frist_Transfer_Agency__c = codi.esd.Frist_Transfer_Agency__c; codcorderdet.Agency_Transfer__c = codi.esd.Agency_Transfer__c; codcorderdet.Agencyinfo_fromSAP__c = codi.esd.Agencyinfo_fromSAP__c; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------2------' + codi.esd.Frist_Storage_Agency__c)); codcorderdet.Frist_Storage_Agency__c = codi.esd.Frist_Storage_Agency__c == null ? codi.esd.Dealer_Info_text__c : codi.esd.Frist_Storage_Agency__c; // 追加首次入库经销商 add by gzw 2020-04-27 end //add by rentx 2020-10-13 start 返品时新数据记录SAP合同号 // codcorderdet.ContractNo_text__c = /*codi.esd.ContractNo__c*/; // tcm start if ( String.isBlank(codi.esd.Consumable_order_minor__r.ContractNo__c) ) { codcorderdet.ContractNo_text__c = codi.esd.ContractNo_text__c; } else { codcorderdet.ContractNo_text__c = codi.esd.Consumable_order_minor__r.ContractNo__c; } // tcm end //add by rentx 2020-10-13 end 返品时新数据记录SAP合同号 codcorderdetList.add(codcorderdet); codcList.add(codi.esd); } } //明细2不存在的对应的到货订单明细 2017-07-05 Integer i = 1; //for(ConsumableorderdetailsInfo ass : consumableInventoryUse){ for (ConsumableorderdetailsInfo ass : consumableInventory) { hasReturnGoods = true; Consumable_order_details2__c codcorderdetail = new Consumable_order_details2__c(); Consumable_order_details2__c retorddetail = new Consumable_order_details2__c(); String str = ('000' + i).right(4); // if(str.length() == 1){ // str = '0' + str; // } if (ass.ReturnReason == null || ass.ReturnReason == '') { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { returnError = '请补充返品原因'; } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '请补充返品原因' ) ); } return null; } //到货明细 codcorderdetail.Name = consumable_order_arr[0].Name + '-' + str; codcorderdetail.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery; codcorderdetail.Intra_Trade_List_RMB__c = ass.Prod.Intra_Trade_List_RMB__c; //gzw 手动入库 默认产品单价 20230307 codcorderdetail.Asset_Model_No__c = ass.Prod.Asset_Model_No__c; codcorderdetail.Direct_Arrive_Product__c = true; codcorderdetail.Sterilization_limit__c = ass.sterilizationlimitDate; codcorderdetail.Consumable_Product__c = ass.Prod.id; codcorderdetail.Bar_Code__c = ass.barCodeNo; codcorderdetail.SerialLotNo__c = ass.serialNoorLotNo; codcorderdetail.TracingCode__c = ass.tracingCodeNo; codcorderdetail.Consumable_Arrived_order__c = Arrived_Order_Sheet.id; codcorderdetail.Arrive_date__c = Date.today(); //add by rentx 2020-10-14 start // codcorderdetail.ContractNo_text__c = /*ass.esd.ContractNo__c*/; // tcm start if (String.isBlank(ass.esd.Consumable_order_minor__r.ContractNo__c)) { codcorderdetail.ContractNo_text__c = ass.esd.ContractNo_text__c; } else { codcorderdetail.ContractNo_text__c = ass.esd.Consumable_order_minor__r.ContractNo__c; } // tcm end //add by rentx 2020-10-14 end codcorderdetList.add(codcorderdetail); //返品明细 retorddetail.Return_reason__c = ass.ReturnReason; retorddetail.Return_date__c = Date.today(); retorddetail.ReturnGs_Uploader_ID__c = UserInfo.getUserId(); // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start // if(ass.esd.Dealer_Saled__c == false && ass.esd.Dealer_Shipment__c == false && ass.esd.Lose_Flag__c == true){ // retorddetail.Consumable_Inventory_order__c = Inventory_Order_Sheet.id; // retorddetail.loseInventory__c = true; // } retorddetail.Consumable_Return_order__c = Return_Order_Sheet.id; // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end retorddetail.Name = consumable_order_ret[0].Name + '-' + str; retorddetail.RecordTypeId = System.Label.RT_ConOrderDetail2_Return; retorddetail.Intra_Trade_List_RMB__c = ass.Prod.Intra_Trade_List_RMB__c; //gzw 手动入库 默认产品单价 20230307 retorddetail.Dealer_Info_IF__c = accountid; retorddetail.Asset_Model_No__c = ass.Prod.Asset_Model_No__c; retorddetail.Direct_Arrive_Product__c = true; retorddetail.Sterilization_limit__c = ass.sterilizationlimitDate; retorddetail.Consumable_Product__c = ass.Prod.id; retorddetail.Bar_Code__c = ass.barCodeNo; retorddetail.SerialLotNo__c = ass.serialNoorLotNo; retorddetail.TracingCode__c = ass.tracingCodeNo; retorddetail.Arrive_date__c = Date.today(); retorddetail.Deliver_date__c = Date.today(); // 追加首次入库经销商 add by gzw 2020-04-27 start retorddetail.Frist_Storage_Agency__c = accountName; // 追加首次入库经销商 add by gzw 2020-04-27 end //add by rentx 2020-10-14 start // retorddetail.ContractNo_text__c = /*ass.esd.ContractNo__c*/; // tcm start if (String.isBlank(ass.esd.Consumable_order_minor__r.ContractNo__c)) { retorddetail.ContractNo_text__c = ass.esd.ContractNo_text__c; } else { retorddetail.ContractNo_text__c = ass.esd.Consumable_order_minor__r.ContractNo__c; } // tcm end //add by rentx 2020-10-14 end codcorderdetList.add(retorddetail); i++; } // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------end------')); // return null; if (codcList.size() > 0) { ControllerUtil.updateOrderDetailsSatus(codcList); //insert codcorderdetList; } if (codcorderdetList.size() > 0) { System.debug('codcorderdetList +++++ ' + codcorderdetList); insert codcorderdetList; } // WYIN-BPE3T4 虚拟盘点单 update by vivek 2020-05-11 start if (conOrderDetail2InList.size() > 0) { addInventoryDetails1(conOrderDetail2InList); } // WYIN-BPE3T4 虚拟盘点单 update by vivek 2020-05-11 start if (hasReturnGoods) { // WYIN-BPE3T4 虚拟盘点单 update by vivek 2020-05-11 start // return ToReturnGoodsPage(); if (hasLoseGoods) { urlType = 'ToInventoryGoodsPage'; return ToInventoryGoodsPage(); // return null; } else { urlType = 'ToReturnGoodsPage'; return ToReturnGoodsPage(); // return null; } // WYIN-BPE3T4 虚拟盘点单 update by vivek 2020-05-11 start } else { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { returnError = '没有需要登录的返品'; } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '没有需要登录的返品' ) ); } return null; } } else { //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { returnError = '没有需要登录的返品'; } else { ApexPages.addmessage( new ApexPages.message( ApexPages.severity.ERROR, '没有需要登录的返品' ) ); } return null; } } catch (Exception e) { Database.rollback(sp); //LWC:Lwcflag和报错提醒 update by Link 2023-04-27 if (isLwc) { returnError = e.getLineNumber() + '---' + e.getMessage(); } else { ApexPages.addMessages(e); } return null; } } public void makeArrivedSummary() { detailsSummary = new List(); //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'consumableInventory ' + consumableInventory)); try { ConsumableorderdetailsInfo arriveDdetailsSummary = null; Map detailsSummaryMap = new Map(); for (ConsumableorderdetailsInfo ass : ConsumableorderdetailsRecords) { if (detailsSummaryMap.containsKey(ass.Prod.Id)) { detailsSummaryMap.get(ass.Prod.Id).arrivedCount++; detailsSummaryMap.get(ass.Prod.Id) .arriveAmount += ass.esd.Intra_Trade_List_RMB__c; } else { arriveDdetailsSummary = new ConsumableorderdetailsInfo(ass.Prod); arriveDdetailsSummary.arrivedCount = 1; arriveDdetailsSummary.arriveAmount = ass.esd.Intra_Trade_List_RMB__c; detailsSummaryMap.put(ass.Prod.Id, arriveDdetailsSummary); } } for (ConsumableorderdetailsInfo ass : consumableInventory) { if (detailsSummaryMap.containsKey(ass.Prod.Id)) { detailsSummaryMap.get(ass.Prod.Id).arrivedCount++; if (EsetId != null && EsetId != '') { detailsSummaryMap.get(ass.Prod.Id) .arriveAmount += ass.Prod.Intra_Trade_List_RMB__c; } else { detailsSummaryMap.get(ass.Prod.Id).arriveAmount += 0; } } else { arriveDdetailsSummary = new ConsumableorderdetailsInfo(ass.Prod); arriveDdetailsSummary.arrivedCount = 1; if (EsetId != null && EsetId != '') { arriveDdetailsSummary.arriveAmount = ass.Prod.Intra_Trade_List_RMB__c; } else { arriveDdetailsSummary.arriveAmount = 0; } detailsSummaryMap.put(ass.Prod.Id, arriveDdetailsSummary); } } for (String key : detailsSummaryMap.keySet()) { detailsSummary.add(detailsSummaryMap.get(key)); } } catch (Exception e) { //Database.rollback(sp); throw new ControllerUtil.myException( 'e::' + e + ' linenumber::' + e.getLineNumber() ); // ApexPages.addMessages(e); // ApexPages.addMessages(e.getLineNumber() + ' 11111111111111111'); //return null; } } //跳转到返品页面 public Pagereference ToReturnGoodsPage() { PageReference ref = new Pagereference('/' + return_Order_id); ref.setRedirect(true); return ref; } // WYIN-BPE3T4 虚拟盘点单 update by vivek 2020-05-11 start public Pagereference ToInventoryGoodsPage() { PageReference ref = new Pagereference('/' + inventory_Order_id); ref.setRedirect(true); return ref; } // WYIN-BPE3T4 虚拟盘点单 update by vivek 2020-05-11 end // 跳转到到货订单明细 public PageReference UnabletoEdit() { PageReference ref = new Pagereference( '/ArriveGsDetails?EsetId=' + arriveId ); ref.setRedirect(true); return ref; } public class ConsumableorderdetailsInfo implements Comparable { public Consumable_order_details2__c esd { get; set; } public Product2__c Prod { get; set; } public String ProductName { get; set; } //public Boolean canSELECT { get; set; } public String barCodeNo { get; set; } public Date sterilizationlimitDate { get; set; } public String serialNoorLotNo { get; set; } public String tracingCodeNo { get; set; } public String ReturnReason { get; set; } public String oldConsumableCount { get; set; } public String ErrorReason { get; set; } public boolean canEdit { get; set; } public Integer intMark { get; set; } public Decimal arriveAmount { get; set; } public Decimal arrivedCount { get; set; } public String ReportProductExpirationDate { get; set; } public ConsumableorderdetailsInfo() { } public ConsumableorderdetailsInfo( Consumable_order_details2__c e, string str ) { esd = e; Prod = e.Consumable_Product__r; oldConsumableCount = e.name; ErrorReason = str; intMark = 1; if (e.Report_Product_Expiration__c != null) { ReportProductExpirationDate = e.Report_Product_Expiration__c.format(); } } public ConsumableorderdetailsInfo(Consumable_order_details2__c e) { canEdit = false; if (e.Box_Piece__c == '盒') { e.Rrturn_count__c = 1; canEdit = true; } esd = e; Prod = e.Consumable_Product__r; oldConsumableCount = e.name; if (e.Report_Product_Expiration__c != null) { ReportProductExpirationDate = e.Report_Product_Expiration__c.format(); } } public ConsumableorderdetailsInfo(Product2__c e, List barinfoL) { esd = new Consumable_order_details2__c(); ProductName = e.Name__c; Prod = e; barCodeNo = barinfoL[0]; if (String.isNotBlank(barinfoL[1])) { sterilizationlimitDate = Date.valueOf(barinfoL[1]); } serialNoorLotNo = barinfoL[2]; tracingCodeNo = barinfoL[3]; ReturnReason = ''; } public ConsumableorderdetailsInfo( Consumable_order_details2__c e, List barinfoL ) { esd = e; Prod = e.Consumable_Product__r; barCodeNo = barinfoL[0]; if (String.isNotBlank(barinfoL[1])) { sterilizationlimitDate = Date.valueOf(barinfoL[1]); } serialNoorLotNo = barinfoL[2]; tracingCodeNo = barinfoL[3]; if (e.Report_Product_Expiration__c != null) { ReportProductExpirationDate = e.Report_Product_Expiration__c.format(); } } public ConsumableorderdetailsInfo(Product2__c e) { Prod = e; } // 排序 public Integer compareTo(Object compareTo) { return null; } } }