.prettierrc
@@ -1,27 +1,26 @@ { "trailingComma": "none", "overrides": [ { "files": "**/lwc/**/*.html", "options": { "tabWidth": 4, "parser": "lwc" } }, { "files": "**/*.{cls,trigger,apex}", "options": { "apexInsertFinalNewline": true, "printWidth": 140, "tabWidth": 4 } }, { "files": "*.{cmp,page,component}", "options": { "parser": "html", "tabWidth": 4 } } ] "trailingComma": "none", "singleQuote": true, "tabWidth": 4, "overrides": [ { "files": "**/lwc/**/*.html", "options": { "parser": "lwc" } }, { "files": "**/*.{cls,trigger,apex}", "options": { "apexInsertFinalNewline": true, "printWidth": 140 } }, { "files": "*.{cmp,page,component}", "options": { "parser": "html" } } ] } .sf/config.json
@@ -1,3 +1,3 @@ { "target-org": "OlympusPIPLDev" } "target-org": "LEXOlympusDev" } force-app/main/default/aura/WeeklyReport/WeeklyReport.cmp
@@ -567,7 +567,7 @@ <br/> <div class="save_button_area"> <lightning:button class="slds-m-top_small" type="button" label="取消" onclick="{!c.createCancel}"/> <lightning:button class="slds-m-top_small" type="submit" label="新建" /> <lightning:button class="slds-m-top_small" type="submit" label="保存" /> </div> </lightning:recordEditForm> </div> force-app/main/default/aura/WeeklyReport/WeeklyReportController.js
@@ -1,5 +1,6 @@ ({ doInit : function(component, event, helper) { console.log('zhj 新方案'); if (window.location.href.endsWith("weekly-report")) { helper.doinit(component, event, helper); } else { @@ -101,16 +102,62 @@ */ var agencyHospitalid = component.get('v.hospitalLinkId'); var arr = new Array(); arr.push(agencyReport); var data = JSON.stringify(arr); // helper.set_aws_url(component,data,agencyHospitalid); //zhj MEBG新方案改造 2022-11-29 start debugger let hospitalName = ''; //调用后端searchAgencyDataId方法查询出医院下面所有客户人员dataid helper.CallBackAction(component,'searchAgencyDataId',{ hospitalId : agencyHospitalid },function(data){ if(data.getState() == "SUCCESS"){ var data = data.getReturnValue(); if(data.IsSuccess == true){ let agencyContactIds = '' if(data.Message == '' && data.Data && data.Data.length > 0){ hospitalName = data.Data[0].Agency_Hospital__r.Name; for(var i=0;i<data.Data.length;i++){ if(data.Data[i].AWS_Data_Id__c) agencyContactIds += ','+data.Data[i].AWS_Data_Id__c; } agencyContactIds = agencyContactIds.substring(1); agencyReport['agencyContactIds'] = agencyContactIds; }else{ agencyReport['agencyContactIds'] = agencyContactIds; } var arr = new Array(); arr.push(agencyReport); var requestData = JSON.stringify(arr); // helper.set_aws_url(component,data,agencyHospitalid); var token = component.get('v.AWStoken'); var newUrl = component.get('v.AWSinsert'); var token = component.get('v.AWStoken'); var newUrl = component.get('v.AWSinsert') + 'V2'; component.set('v.login',true); helper.insert_agencycontact(component,token,newUrl,requestData,agencyHospitalid,helper,hospitalName); }else{ helper.ShowToast({ "message" : data.message, "type" : "error" }); } }else{ helper.ShowToast({ "message" : 'searchAgency失败', "type" : "error" }); } }) //zhj MEBG新方案改造 2022-11-29 end // var arr = new Array(); // arr.push(agencyReport); // var data = JSON.stringify(arr); // // helper.set_aws_url(component,data,agencyHospitalid); // var token = component.get('v.AWStoken'); // var newUrl = component.get('v.AWSinsert'); component.set('v.login',true); helper.insert_agencycontact(component,token,newUrl,data,agencyHospitalid,helper); // component.set('v.login',true); // helper.insert_agencycontact(component,token,newUrl,data,agencyHospitalid,helper); // PIPL update Yin Mingjie 21/02/2022 end }else{ force-app/main/default/aura/WeeklyReport/WeeklyReportHelper.js
@@ -63,7 +63,7 @@ component.set('v.login',false); } }else{ this.error('AWS search status : ' + result.status); this.error('AWS search status1 : ' + result.status); component.set('v.login',false); } },component); @@ -221,7 +221,7 @@ b = true; Foo(); }else{ this.error('AWS search status : ' + result.status); this.error('请重新刷新一下页面。'); } },component); }else{ @@ -243,7 +243,7 @@ b1 = true; Foo(); }else{ this.error('AWS search status : ' + result.status); this.error('AWS search status3 : ' + result.status); } },component); }else{ @@ -345,7 +345,7 @@ var reports = component.get('v.reports'); var Agency_Hospital_text = ''; var Agency_Hospital_parent_id = ''; debugger // 医院名 if (select_data['Agency_Hospital__c'] != '') { for (var i = 0; i < reports.length; i++) { @@ -1171,7 +1171,6 @@ component.set('v.hospitalLinkId', hospital_data[i].Id); component.set('v.data.Agency_Hospital__c', hospital_data[i].Id); component.find('new_con').set('v.disabled', false); //break; } } component.set("v.hospital", accname); @@ -1231,7 +1230,7 @@ $A.enqueueAction(action); }, insert_agencycontact : function(component,token,newUrl,payload,agencyHospitalid,helper) { insert_agencycontact : function(component,token,newUrl,payload,agencyHospitalid,helper,hospitalName) { // AWSService.insert(newUrl,payload,function(result){ // if(result.status == '0'){ @@ -1263,7 +1262,11 @@ }else{ console.log('AWS status error:' + result) component.set('v.login',false); component.find('OppMessage').setError('AWS insert error.'); if(result.status == '129'){ component.find('OppMessage').setError('该客户人员名字已存在,在'+hospitalName+'医院,请修改'); }else{ component.find('OppMessage').setError('AWS insert error.'); } } }).catch(error => { console.log('AWS insert error:' + error) @@ -1277,11 +1280,11 @@ var action = component.get('c.saveAgencyContact'); action.setParams({ "name" : result.object[0].name, "nameEncrypt" : result.object[0].nameEncrypt, //"nameEncrypt" : result.object[0].nameEncrypt, "type" : result.object[0].type, "typeEncrypt" : result.object[0].typeEncrypt, //"typeEncrypt" : result.object[0].typeEncrypt, "doctorDivision1" : result.object[0].doctorDivision1, "doctorDivision1Encrypt" : result.object[0].doctorDivision1Encrypt, //"doctorDivision1Encrypt" : result.object[0].doctorDivision1Encrypt, "agencyHospitalid" : agencyHospitalid, "awsid" : result.object[0].dataId, }); @@ -1422,7 +1425,7 @@ if(result.status == '0'){ this.to_doctor_list(result,retMap,component); }else{ this.error('AWS search status : ' + result.status); this.error('AWS search status4 : ' + result.status); component.set('v.login',false); } },component); @@ -1443,6 +1446,9 @@ // }); }, search_core : function(token,searchUrl,payload,callback,component) { console.log('token = ' + token); console.log('searchUrl = ' + searchUrl); console.log('payload = ' + payload); fetch(searchUrl, { method: 'POST', body: payload, @@ -1456,6 +1462,7 @@ component.set('v.login',false); if(callback)callback(result); }).catch(error => { console.log('error = ' + JSON.stringify(error)); this.error('AWS search error.'); component.set('v.login',false); }); @@ -1519,6 +1526,7 @@ // }, opportunityChange : function(component, event, helper) { debugger var opp_id = component.get('v.data.Opportunity__c'); if (opp_id == '') { $A.util.addClass(component.find('input-opportunity-stage'), 'disp_none'); @@ -1582,24 +1590,28 @@ // } component.set('v.login',false); return false; } else if (res[0]['StageName2__c'] != '3.询价' && !component.get('v.loadOpp')){ this.warning('请选择询价中的项目'); // ToDo需要测试手机上能运行不 component.set('v.data.Opportunity__c', ''); $A.util.addClass(component.find('input-opportunity-stage'), 'disp_none'); $A.util.addClass(component.find('input-opportunity-amount1'), 'disp_none'); $A.util.addClass(component.find('input-opportunity-amount2'), 'disp_none'); $A.util.addClass(component.find('input-opportunity-date'), 'disp_none'); $A.util.removeClass(component.find('input-opportunity-blank'), 'disp_none'); // if ($A.get("$Browser.formFactor") == 'DESKTOP') { // var values = []; // component.find('input-opportunity').get("v.body")[0].set('v.values', values); // } else { // component.find('input-opportunity').get("v.body")[0].set('v.selectedLabel', ''); // } component.set('v.login',false); return false; } else { } //SWAG-CKH5M8 【委托】周报关联询价,可选择询价范围调整 fy start // else if (res[0]['StageName2__c'] != '3.询价' && !component.get('v.loadOpp')){ // this.warning('请选择询价中的项目'); // // ToDo需要测试手机上能运行不 // component.set('v.data.Opportunity__c', ''); // $A.util.addClass(component.find('input-opportunity-stage'), 'disp_none'); // $A.util.addClass(component.find('input-opportunity-amount1'), 'disp_none'); // $A.util.addClass(component.find('input-opportunity-amount2'), 'disp_none'); // $A.util.addClass(component.find('input-opportunity-date'), 'disp_none'); // $A.util.removeClass(component.find('input-opportunity-blank'), 'disp_none'); // // if ($A.get("$Browser.formFactor") == 'DESKTOP') { // // var values = []; // // component.find('input-opportunity').get("v.body")[0].set('v.values', values); // // } else { // // component.find('input-opportunity').get("v.body")[0].set('v.selectedLabel', ''); // // } // component.set('v.login',false); // return false; // } //SWAG-CKH5M8 【委托】周报关联询价,可选择询价范围调整 fy end else { component.set('v.loadOpp', false); component.set('v.oppdata',res[0]); this.set_selected(component, 'select_stageName', res[0].StageName__c); @@ -1784,6 +1796,7 @@ $A.util.addClass(modal_newAC, 'disp_none'); }, setOpportunity_cfilter : function(component) { debugger var hosId = component.get('v.hospitalId'); var Department_Cateogy__c = component.find('select_department').get('v.value'); var opportunity_cfilter = ''; @@ -1896,19 +1909,23 @@ fileData : component.get("v.fileContentData"), }); action1.setCallback(this, function(response) { console.log('response = ' + JSON.stringify(response)); var state = response.getState(); if (state === "SUCCESS") { var ress = response.getReturnValue(); console.log('ress = ' + JSON.stringify(ress)); if(ress){ var valur =ress.split('error1'); if(valur.length<=1){ var res = JSON.parse(response.getReturnValue()); console.log('res = ' + JSON.stringify(res)); var dataArr = new Array(); var dataMap = new Map(); res.forEach(item => { if(item.AWS_Data_Id__c){ dataArr.push(item.AWS_Data_Id__c); dataMap.set(item.AWS_Data_Id__c,item.Name_Encrypted__c); //dataMap.set(item.AWS_Data_Id__c,item.Name_Encrypted__c); dataMap.set(item.AWS_Data_Id__c,item.AWS_Data_Id__c); //zhj 新方案改造 2022-12-21 } }); debugger @@ -1931,11 +1948,11 @@ component.set('v.login',true); this.saveRecordsEditFile(component,dataMap,result.object,helper); }else{ this.error('AWS search status ' ); this.error('AWS search status5 ' ); component.set('v.login',false); } }else{ this.error('AWS search status : ' + result.status); this.error('AWS search status6 : ' + result.status); component.set('v.login',false); } },component); @@ -2087,7 +2104,7 @@ if (searchDataMap.get(fileName.replace(' ',''))) { var nameDataId = searchDataMap.get(fileName.replace(' ','')); if (dataMap.get(nameDataId)) { filelist[4] = dataMap.get(nameDataId); filelist[4] = dataMap.get(nameDataId); //zhj 新方案改造 filelist[4]不再存的nameEncrpt 2022-12-21 }else { error += 'error1 第'+i+'行数据拜访人SF不存在'; error += '='; @@ -2317,8 +2334,24 @@ var modalimportbg = component.find('modal_exportbg'); $A.util.addClass(modalimport, 'disp_none'); $A.util.addClass(modalimportbg,'disp_none'); } }, //zhj MEBG新方案改造 2022-11-29 start CallBackAction : function(component,action_name,para,callback) { var action = component.get("c." + action_name.trimStart().replace("c.","")); if(para){ action.setParams(para); } if(callback){ action.setCallback(this,function(data){ callback(data); }); } $A.enqueueAction(action); }, //zhj MEBG新方案改造 2022-11-29 end // searchAgencyContact : function(res) { // var agencyContacts = []; // for (let idx = 0; idx < res.length; idx++) { force-app/main/default/classes/ConsumableController.cls
@@ -1,4 +1,4 @@ public without sharing class ConsumableController { public without sharing class { /*****************検索用******************/ public Consumable_order__c coc { get; set; } // FIMXE Consumable_order__c のインスタンス、sql多すぎ force-app/main/default/classes/InventoryController.cls
@@ -114,10 +114,10 @@ this.sortOrder = new String[]{' ',' ','↓'}; String userId = UserInfo.getUserId(); // String userId = '00510000006xHnrAAE'; //String userId = '00510000006k82X'; //String userId = '00510000005QO75'; user Useracc = [select Accountid, Work_Location__c,UserPro_Type__c from user where id =:userId]; accountid = Useracc.Accountid; accountid = Useracc.accountid; userWorkLocation = Useracc.Work_Location__c; agencyProType = Useracc.UserPro_Type__c; if(String.isBlank(Useracc.UserPro_Type__c)){ @@ -131,19 +131,17 @@ List<ConsumableorderdetailsInfo> boxRecords = new List<ConsumableorderdetailsInfo>(); Map<String,ConsumableorderdetailsInfo> newMidBoxMap = new Map<String,ConsumableorderdetailsInfo>(); Map<String,ConsumableorderdetailsInfo> newMidPieceMap = new Map<String,ConsumableorderdetailsInfo>(); //DB202302357027 消耗品追溯系统无法正常使用——盘点页面操作即报错 fy start //开始制作表头数据 // List<Product2__c> productCount_Unfull_bak = [select Id, Name,Name__c, // SFDA_Status__c,Packing_list_manual__c, // Asset_Model_No__c // from Product2__c // //where Estimation_Entry_Possibility__c = '○' // where Product_Type__c like : sqlagencyProType // ]; // for(integer i = 0;i < productCount_Unfull_bak.size() ; i++){ // midMap.put(productCount_Unfull_bak[i].Id, productCount_Unfull_bak[i]); // } //DB202302357027 消耗品追溯系统无法正常使用——盘点页面操作即报错 fy end List<Product2__c> productCount_Unfull_bak = [select Id, Name,Name__c, SFDA_Status__c,Packing_list_manual__c, Asset_Model_No__c from Product2__c //where Estimation_Entry_Possibility__c = '○' where Product_Type__c like : sqlagencyProType ]; for(integer i = 0;i < productCount_Unfull_bak.size() ; i++){ midMap.put(productCount_Unfull_bak[i].Id, productCount_Unfull_bak[i]); } //查询库存 追加返品库存 List<Consumable_order_details2__c> ProductCount_Res = [select Id, Name,Consumable_Product__c, Bar_Code__c,Consumable_Product__r.Name__c, @@ -159,28 +157,7 @@ AND Product_Type__c like : sqlagencyProType AND Arrive_Owner_Work_Location__c =: userWorkLocation AND Dealer_Info_text__c = :accountName]; //DB202302357027 消耗品追溯系统无法正常使用——盘点页面操作即报错 fy start //开始制作表头数据 Set<Id> Product2cIdSet = new Set<Id>(); for(Consumable_order_details2__c con_or_d2item: ProductCount_Res){ Product2cIdSet.add(con_or_d2item.Consumable_Product__c); } List<Product2__c> productCount_Unfull_bak = [select Id, Name,Name__c, SFDA_Status__c,Packing_list_manual__c, Asset_Model_No__c from Product2__c //where Estimation_Entry_Possibility__c = '○' where Id in:Product2cIdSet and Product_Type__c like : sqlagencyProType ]; for(integer i = 0;i < productCount_Unfull_bak.size() ; i++){ midMap.put(productCount_Unfull_bak[i].Id, productCount_Unfull_bak[i]); } system.debug('productCount_Unfull_bak'+productCount_Unfull_bak.size()); // String erro='productCount_Unfull_bak:'+productCount_Unfull_bak.size(); // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, erro)); //DB202302357027 消耗品追溯系统无法正常使用——盘点页面操作即报错 fy end // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'ProductCount_Res ' + ProductCount_Res.size())); //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'ProductCount_Res ' + ProductCount_Res.size())); for(Integer i = 0 ; i< ProductCount_Res.size();i++){ //然后循环CountDel做Box和piece2个map if(MidMap.containsKey(ProductCount_Res[i].Consumable_Product__c) && ProductCount_Res[i].Box_Piece__c == '盒'){ @@ -1028,7 +1005,9 @@ } //CSV出力 public PageReference doClick() { system.debug('Click'); Pagereference pr = page.InventoryCSV; system.debug('data:'+JSON.serialize(consumableorderdetailsRecordserrordummy)); return pr; } force-app/main/default/classes/LexInventoryController.cls
New file @@ -0,0 +1,1159 @@ public without sharing class LexInventoryController { //分页使用数据 public static String fileName { get; set; } public static Integer size{get;set;} public static Integer noOfRecords{get; set;} public static List<ConsumableorderdetailsInfo> codPageRecords { get; set; } // 丢失和巡回的,画面显示用 public static ApexPages.StandardSetController setCon { get; set; } @AuraEnabled public static List<Consumable_order_details2__c> setConDetails2 { get; set; } public static Map<Id,String> pandiandetailsMap = new Map<Id,String>(); /*****************検索用******************/ public static String barcode { get; set; } public static Boolean done { get; set; } /*****************画面表示Bean******************/ //页面主数据显示用 private static List<ConsumableorderdetailsInfo> consumableorderdetailsRecords; //盘点到的产品 public static List<Consumable_order_details2__c> reSet = new List<Consumable_order_details2__c>(); public static List<Consumable_order_details2__c> showcod2nid = new List<Consumable_order_details2__c>(); //public List<Consumable_order_details2__c> pandiandetailsList { get; set; } public static List<List<Consumable_order_details2__c>> pandiandetailsListShow { get; set; } //寻回明细 public static List<ConsumableorderdetailsInfo> consumableorderdetailsRecordserrordummy; // 丢失和巡回的,实际炒作用 @AuraEnabled public static List<List<ConsumableorderdetailsInfo>> consumableorderdetailsRecordsview { get; set; } // 产品单位的List public static List<ConsumableorderdetailsInfo> consumableorderdetailsviewRecords; public static Integer consumableorderdetailsCount { get { return consumableorderdetailsRecords == null ? 0 : consumableorderdetailsRecords.size(); } } //list<String> notexitlist = new list<String>(); public static Map<String,String> reFindProduct = new Map<String,String>(); //排序用 public static String sortKey; public static String preSortKey; public static Boolean sortOrderAsc; public static String[] sortOrder; //private Set<String> carCodeListLose = new Set<String>(); //ProductCount_Res 有,BarCodeListP 没有 /*****************经销商ID******************/ private static String accountid = null; private static String accountName = null; // 盘点 ID private static String eSetId = ''; // 登录者工作地 private static String userWorkLocation; //经销商用户产品分类(ET、ENG) public static String agencyProType {get;set;} public static String sqlagencyProType; //判断操作人员是否盘点 public static Boolean iSinventory = false; public LexInventoryController(){ size = Integer.valueOf(System.Label.orderdetLimitsize); consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>(); done = false; consumableorderdetailsRecordsview = new List<List<ConsumableorderdetailsInfo>>(); consumableorderdetailsRecordserrordummy = new List<ConsumableorderdetailsInfo>(); codPageRecords = new List<ConsumableorderdetailsInfo>(); //codPageRecordsShow = new List<ConsumableorderdetailsInfo>(); } private static void initStandardController(){ // init standard controller List<Consumable_order_details2__c> showcod2 = [select Id, Name,Consumable_Product__c, Bar_Code__c,Consumable_Product__r.Name__c, Asset_Model_No__c,Isoverdue__c,Box_Piece__c, Bar_Code_search__c FROM Consumable_order_details2__c WHERE Id in :pandiandetailsMap.keySet() order by Name desc]; setConDetails2 = showcod2; System.debug('setConDetails2===>'+setConDetails2); // setCon = new ApexPages.StandardSetController(showcod2); // // sets the number of records in each page set // setCon.setPageSize(size); // noOfRecords = setCon.getResultSize(); } public static List<Consumable_order_details2__c> cod2s() { return setConDetails2; } //Changes the size of pagination public static PageReference refreshPageSize() { setCon.setPageSize(size); //showcod2nid = cod2s(); makepagerecords(); return null; } public static List<ConsumableorderdetailsInfo> makepagerecords() { showcod2nid = cod2s(); codPageRecords = new List<ConsumableorderdetailsInfo>(); for (Consumable_order_details2__c cod2 : showcod2nid) { codPageRecords.add(new ConsumableorderdetailsInfo(cod2,pandiandetailsMap.get(cod2.Id))); } System.debug('===>codPageRecords1'+codPageRecords); return codPageRecords; } // 画面初始化 @AuraEnabled public static ResponseBodyLWC init() { ResponseBodyLWC res = new ResponseBodyLWC(); Map<String,object> data = new Map<String,object>(); res.entity = data; consumableorderdetailsRecordsview = new List<List<ConsumableorderdetailsInfo>>(); setConDetails2 = new List<Consumable_order_details2__c>(); String url = '在库调整一览'; fileName = EncodingUtil.urlEncode(url, 'UTF-8'); List<Consumable_order_details2__c> showcod2 = [select Id, Name,Consumable_Product__c, Bar_Code__c,Consumable_Product__r.Name__c, Asset_Model_No__c,Isoverdue__c,Box_Piece__c, Bar_Code_search__c FROM Consumable_order_details2__c WHERE Id in :pandiandetailsMap.keySet() order by Name]; System.debug('pandiandetailsMap====>'+pandiandetailsMap); initStandardController(); makepagerecords(); sortKey = '1'; preSortKey = '1'; sortOrderAsc = false; sortOrder = new String[1]; sortOrder = new String[]{' ',' ','↓'}; String userId = UserInfo.getUserId(); //String userId = '00510000006k82X'; //String userId = '00510000005QO75'; user Useracc = [select Accountid, Work_Location__c,UserPro_Type__c from user where id =:userId]; accountid = Useracc.accountid; userWorkLocation = Useracc.Work_Location__c; agencyProType = Useracc.UserPro_Type__c; if(String.isBlank(Useracc.UserPro_Type__c)){ agencyProType = 'ET'; } sqlagencyProType = '%' + agencyProType + '%'; Account accountInfo = [SELECT Name,Dealer_discount__c FROM account WHERE id =:accountid]; accountName = accountInfo.Name; consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>(); Map<String,Product2__c> midMap = new Map<String,Product2__c>(); List<ConsumableorderdetailsInfo> boxRecords = new List<ConsumableorderdetailsInfo>(); Map<String,ConsumableorderdetailsInfo> newMidBoxMap = new Map<String,ConsumableorderdetailsInfo>(); Map<String,ConsumableorderdetailsInfo> newMidPieceMap = new Map<String,ConsumableorderdetailsInfo>(); //开始制作表头数据 List<Product2__c> productCount_Unfull_bak = [select Id, Name,Name__c, SFDA_Status__c,Packing_list_manual__c, Asset_Model_No__c from Product2__c //where Estimation_Entry_Possibility__c = '○' where Product_Type__c like : sqlagencyProType ]; for(integer i = 0;i < productCount_Unfull_bak.size() ; i++){ midMap.put(productCount_Unfull_bak[i].Id, productCount_Unfull_bak[i]); } //查询库存 追加返品库存 List<Consumable_order_details2__c> ProductCount_Res = [select Id, Name,Consumable_Product__c, Bar_Code__c,Consumable_Product__r.Name__c, Asset_Model_No__c,Isoverdue__c,Box_Piece__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = true AND Dealer_Shipment__c = false AND Dealer_Saled__c = false AND Dealer_Returned__c = false AND Lose_Flag__c = false AND Cancellation_Flag__c = false AND Bar_Code__c !=null AND Product_Type__c like : sqlagencyProType AND Arrive_Owner_Work_Location__c =: userWorkLocation AND Dealer_Info_text__c = :accountName]; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'ProductCount_Res ' + ProductCount_Res.size())); for(Integer i = 0 ; i< ProductCount_Res.size();i++){ //然后循环CountDel做Box和piece2个map if(MidMap.containsKey(ProductCount_Res[i].Consumable_Product__c) && ProductCount_Res[i].Box_Piece__c == '盒'){ if(newMidBoxMap.containsKey(ProductCount_Res[i].Consumable_Product__c+ProductCount_Res[i].Box_Piece__c)){ ConsumableorderdetailsInfo Jstage = newMidBoxMap.get(ProductCount_Res[i].Consumable_Product__c+ProductCount_Res[i].Box_Piece__c).clone(); Jstage.countid = Jstage.countid+1 ; if(ProductCount_Res[i].Isoverdue__c == 1){ Jstage.limitCount = Jstage.limitCount + 1; } Jstage.boxPiece = ProductCount_Res[i].Box_Piece__c; newMidBoxMap.put(ProductCount_Res[i].Consumable_Product__c+ProductCount_Res[i].Box_Piece__c, Jstage); }else{ ConsumableorderdetailsInfo Jstage = new ConsumableorderdetailsInfo(MidMap.get(ProductCount_Res[i].Consumable_Product__c)); Jstage.countid = Jstage.countid+1 ; if(ProductCount_Res[i].Isoverdue__c == 1){ Jstage.limitCount = Jstage.limitCount + 1; } Jstage.boxPiece = ProductCount_Res[i].Box_Piece__c; newMidBoxMap.put(ProductCount_Res[i].Consumable_Product__c+ProductCount_Res[i].Box_Piece__c, Jstage); } }else if(MidMap.containsKey(ProductCount_Res[i].Consumable_Product__c) && ProductCount_Res[i].Box_Piece__c == '个'){ if(newMidPieceMap.containsKey(ProductCount_Res[i].Consumable_Product__c+ProductCount_Res[i].Box_Piece__c)){ ConsumableorderdetailsInfo Jstage = newMidPieceMap.get(ProductCount_Res[i].Consumable_Product__c+ProductCount_Res[i].Box_Piece__c).clone(); Jstage.countid = Jstage.countid+1 ; if(ProductCount_Res[i].Isoverdue__c == 1){ Jstage.limitCount = Jstage.limitCount + 1; } Jstage.boxPiece = ProductCount_Res[i].Box_Piece__c; newMidPieceMap.put(ProductCount_Res[i].Consumable_Product__c+ProductCount_Res[i].Box_Piece__c, Jstage); }else{ ConsumableorderdetailsInfo Jstage = new ConsumableorderdetailsInfo(MidMap.get(ProductCount_Res[i].Consumable_Product__c)); Jstage.countid = Jstage.countid+1 ; if(ProductCount_Res[i].Isoverdue__c == 1){ Jstage.limitCount = Jstage.limitCount + 1; } Jstage.boxPiece = ProductCount_Res[i].Box_Piece__c; newMidPieceMap.put(ProductCount_Res[i].Consumable_Product__c+ProductCount_Res[i].Box_Piece__c, Jstage); } } } for(ConsumableorderdetailsInfo bss : newMidBoxMap.values()){ bss.overlimitCount = bss.countid - bss.limitCount; boxRecords.add(bss); } boxRecords.sort(); for(ConsumableorderdetailsInfo bss : newMidPieceMap.values()){ bss.overlimitCount = bss.countid - bss.limitCount; } for(ConsumableorderdetailsInfo bss : boxRecords){ consumableorderdetailsRecords.add(bss); if(newMidPieceMap.containsKey(bss.Prod.Id + '个')){ consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个')); //newMidPieceMap移除已经添加的Piece newMidPieceMap.remove(bss.Prod.Id + '个'); } } for(ConsumableorderdetailsInfo bss : newMidPieceMap.values()){ consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个')); } //consumableorderdetailsCount = consumableorderdetailsRecords.size(); listCut(); system.debug('ConsumableorderdetailsRecordsview'+ConsumableorderdetailsRecordsview); System.debug('ConsumableorderdetailsRecordsview==>'+ConsumableorderdetailsRecordsview); // data.put('ConsumableorderdetailsRecordsview',ConsumableorderdetailsRecordsview); // for(ConsumableorderdetailsInfo con: ConsumableorderdetailsRecordsview){ // consumableorderdetailsviewRecords.add(con); // } System.debug('consumableorderdetailsviewRecords===>'+consumableorderdetailsviewRecords); System.debug('consumableorderdetailsRecords===>'+consumableorderdetailsRecords); data.put('ConsumableorderdetailsRecordsview',JSON.serialize(ConsumableorderdetailsRecordsview)); data.put('userWorkLocation',userWorkLocation); data.put('agencyProType',agencyProType); data.put('accountName',accountName); data.put('consumableorderdetailsRecords',JSON.serialize(consumableorderdetailsRecords)); res.status = 'Success'; res.code = 200; System.debug('res = ' + res); return res; } private static void listCut(){ //拆分暂用list List<ConsumableorderdetailsInfo> ConsumableorderdetailsRecordsbreak = new List<ConsumableorderdetailsInfo>(); List<ConsumableorderdetailsInfo> ConsumableorderdetailsRecordsbreakover = new List<ConsumableorderdetailsInfo>(); ConsumableorderdetailsInfo c = null; ConsumableorderdetailsRecordsbreak.clear(); ConsumableorderdetailsRecordsbreakover.clear(); consumableorderdetailsRecordsview.clear(); //选择产品view ConsumableorderdetailsRecordsbreak = new List<ConsumableorderdetailsInfo>(); ConsumableorderdetailsRecordsbreakover = new List<ConsumableorderdetailsInfo>(); if(consumableorderdetailsRecords.size() > 1000){ for(Integer i = 0; i < consumableorderdetailsRecords.size(); i++){ if(i < 1000){ c = consumableorderdetailsRecords.get(i); ConsumableorderdetailsRecordsbreak.add(c); }else{ c = consumableorderdetailsRecords.get(i); ConsumableorderdetailsRecordsbreakover.add(c); } } consumableorderdetailsRecordsview.add(ConsumableorderdetailsRecordsbreak); consumableorderdetailsRecordsview.add(ConsumableorderdetailsRecordsbreakover); }else{ consumableorderdetailsRecordsview.add(consumableorderdetailsRecords); } } //========20160311======ADD_Start================================ // 将页面或取得BarCode去掉重复的,转换成List //========20160311======ADD_Start================================ public static List<String> ParseBarCode(String Code){ Map<String,Integer> barcodeCountMap = new Map<String,Integer>(); String[] Cache = new String[]{}; Cache = Code.split('\n'); List <String> Buff = new List<String>(); for(String A : Cache){ A = A.trim().toUpperCase(); if(barcodeCountMap.containsKey(A)){ barcodeCountMap.put(A,barcodeCountMap.get(A) + 1); }else{ barcodeCountMap.put(A,1); } Buff.add(A + barcodeCountMap.get(A)); } return Buff; } //test // @AuraEnabled // public static ResponseBodyLWC searchConsumableorderdetails(String sqlagencyProType,String userWorkLocation,String accountName,String barcode,List<ConsumableorderdetailsInfo> consumableorderdetailsRecordsLWC){ // return new ResponseBodyLWC('Error',500, 'test', ''); // } //========20160311======ADD_End================================== // BarCode录入 @AuraEnabled public static ResponseBodyLWC searchConsumableorderdetails(String agencyProType,String userWorkLocation,String accountName,String barcode,String consumableorderdetailsRecordsLWC){ System.debug('===>consumableorderdetailsRecordsLWC'+consumableorderdetailsRecordsLWC); List<ConsumableorderdetailsInfo> consumableorderdetailsRecords = (List<ConsumableorderdetailsInfo>)JSON.deserialize(consumableorderdetailsRecordsLWC,List<ConsumableorderdetailsInfo>.class); // ConsumableorderdetailsInfo[] consumableorderdetailsRecords=(List<ConsumableorderdetailsInfo>)JSON.deserialize(consumableorderdetailsRecordsLWC,List<ConsumableorderdetailsInfo>.class); system.debug('=====>consumableorderdetailsRecordsLWC'+consumableorderdetailsRecordsLWC); ResponseBodyLWC res = new ResponseBodyLWC(); Map<String,object> data = new Map<String,object>(); res.entity = data; sqlagencyProType = '%' + agencyProType + '%'; // consumableorderdetailsRecords = consumableorderdetailsRecordsLWC; System.debug('consumableorderdetailsRecords===>'+consumableorderdetailsRecords); System.debug('agencyProType===>'+sqlagencyProType); System.debug('accountName===>'+accountName); /* BarCodelist做成 */ //FIXME barcodeSet 做成,ProductCount_ResSet 做成 List<Consumable_order_details2__c> pandiandetailsList = new List<Consumable_order_details2__c>(); pandiandetailsListShow = new List<List<Consumable_order_details2__c>>(); done = false; List<String> BarCodeListP = ParseBarCode( barcode ); //查询库存 追加返品库存 List<Consumable_order_details2__c> ProductCount_Res = [select Id, Name,Consumable_Product__c, Bar_Code__c,Consumable_Product__r.Name__c,Dealer_Info_text__c, Asset_Model_No__c,Isoverdue__c,Box_Piece__c, Bar_Code_search__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = true AND Dealer_Shipment__c = false AND Dealer_Saled__c = false AND Dealer_Returned__c = false AND Lose_Flag__c = false AND Cancellation_Flag__c = false AND Bar_Code__c !=null AND Product_Type__c like : sqlagencyProType AND Arrive_Owner_Work_Location__c =: userWorkLocation AND Dealer_Info_text__c = :accountName ]; reFindProduct.clear(); Map<String,ConsumableorderdetailsInfo> barCodeListAdjustMap = new Map<String,ConsumableorderdetailsInfo>(); //barCodeListLoseMap.clear(); Set<String> carCodeListLose = new Set<String>(); List<ConsumableorderdetailsInfo> consumableorderdetailsRecordsAdjust = new List<ConsumableorderdetailsInfo>(); Map<String,String> proIdNotinpage = new Map<String,String>(); List<Consumable_order_details2__c> reFindProductList = new List<Consumable_order_details2__c>(); codPageRecords = new List<ConsumableorderdetailsInfo>(); consumableorderdetailsRecordserrordummy = new List<ConsumableorderdetailsInfo>(); List<ConsumableorderdetailsInfo> reFindProductaddtopage = new List<ConsumableorderdetailsInfo>(); pandiandetailsMap.clear(); reSet = new List<Consumable_order_details2__c>(); /* 判断BarCode是否为空 */ if (barcode == null || barcode == ''){ //先取出所有丢失产品 for(ConsumableorderdetailsInfo ass : consumableorderdetailsRecords){ // 20200509 gzw add 盘点数量初始化 ass.Pandian = 0; // 20200509 gzw add 盘点数量初始化 if(ass.check==true){ //ass.Diff = ass.countid - ass.Pandian; for(integer i = 0 ; i < ProductCount_Res.size();i++){ if(ProductCount_Res[i].Consumable_Product__c == ass.Prod.Id && ass.boxPiece == ProductCount_Res[i].Box_Piece__c){ if(carCodeListLose.contains(ProductCount_Res[i].Bar_Code__c)){ continue; }else{ //consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(ProductCount_Res[i],'丢失')); //pandiandetailsMap.put(ProductCount_Res[i].Id, '丢失'); ////barCodeListLoseMap.put(ProductCount_Res[i].Id, new ConsumableorderdetailsInfo(ProductCount_Res[i])); carCodeListLose.add(ProductCount_Res[i].Bar_Code__c); } } } } } //已经出库的产品 List<Consumable_order_details2__c> reSet1 = [SELECT Id, Name,Consumable_Product__c, Bar_Code__c,Consumable_Product__r.Name__c, Asset_Model_No__c,Isoverdue__c,Box_Piece__c, Bar_Code_search__c,Dealer_Info_text__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND (Dealer_Shipment__c= TRUE or Dealer_Saled__c = TRUE) AND Dealer_Returned__c = FALSE AND Cancellation_Flag__c = FALSE AND Bar_Code__c in :carCodeListLose AND Dealer_Info_text__c = :accountName ORDER BY Name ]; Map<String,Consumable_order_details2__c> needreturnMap = new Map<String,Consumable_order_details2__c>(); for(Consumable_order_details2__c cod2 :reSet1){ needreturnMap.put(cod2.Bar_Code__c,cod2); } // 经销商之间或者同一经销商不同工作地调货 reSet1 = [SELECT Id, Name,Consumable_Product__c, Bar_Code__c,Consumable_Product__r.Name__c, Asset_Model_No__c,Isoverdue__c,Box_Piece__c, Bar_Code_search__c,Dealer_Info_text__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND Dealer_Shipment__c= FALSE AND Dealer_Saled__c = FALSE AND Dealer_Returned__c = FALSE AND Cancellation_Flag__c = FALSE AND Bar_Code__c in :carCodeListLose AND (Dealer_Info_text__c != :accountName OR (Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c != :userWorkLocation) ) ORDER BY Name ]; Map<String,Consumable_order_details2__c> otherAgProMap = new Map<String,Consumable_order_details2__c>(); for(Consumable_order_details2__c cod2 :reSet1){ otherAgProMap.put(cod2.Bar_Code__c,cod2); } carCodeListLose.clear(); for(ConsumableorderdetailsInfo ass : consumableorderdetailsRecords){ if(ass.check==true){ ass.Diff = ass.countid - ass.Pandian; for(integer i = 0 ; i < ProductCount_Res.size();i++){ if(ProductCount_Res[i].Consumable_Product__c == ass.Prod.Id && ass.boxPiece == ProductCount_Res[i].Box_Piece__c){ if(carCodeListLose.contains(ProductCount_Res[i].Bar_Code_search__c)){ continue; }else{ if(needreturnMap.containsKey(ProductCount_Res[i].Bar_Code__c)){ consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(ProductCount_Res[i],'该产品未返品')); pandiandetailsMap.put(ProductCount_Res[i].Id, '该产品未返品'); carCodeListLose.add(ProductCount_Res[i].Bar_Code_search__c); continue; } if(otherAgProMap.containsKey(ProductCount_Res[i].Bar_Code__c)){ consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(ProductCount_Res[i],'该产品归属于' + otherAgProMap.get(ProductCount_Res[i].Bar_Code__c).Dealer_Info_text__c + '的库存。')); pandiandetailsMap.put(ProductCount_Res[i].Id, '该产品归属于' + otherAgProMap.get(ProductCount_Res[i].Bar_Code__c).Dealer_Info_text__c + '的库存。'); carCodeListLose.add(ProductCount_Res[i].Bar_Code_search__c); continue; } if (ProductCount_Res[i].Isoverdue__c == 0) { consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(ProductCount_Res[i],'该产品已经过有效期,请销存。')); pandiandetailsMap.put(ProductCount_Res[i].Id, '该产品已经过有效期,请销存。'); carCodeListLose.add(ProductCount_Res[i].Bar_Code_search__c); ass.Diff--; continue; } consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(ProductCount_Res[i],'丢失')); pandiandetailsMap.put(ProductCount_Res[i].Id, '丢失'); carCodeListLose.add(ProductCount_Res[i].Bar_Code_search__c); } } } }else{ ass.Pandian = 0; ass.Diff = 0; } } List<Consumable_order_details2__c> showcod2 = new List<Consumable_order_details2__c>(); if (pandiandetailsMap.keySet().size() > 0) { showcod2 = [select Id, Name,Consumable_Product__c, Bar_Code__c,Consumable_Product__r.Name__c, Asset_Model_No__c,Isoverdue__c,Box_Piece__c, Bar_Code_search__c FROM Consumable_order_details2__c WHERE Id in :pandiandetailsMap.keySet() order by Name]; } initStandardController(); showcod2nid = cod2s(); for (Consumable_order_details2__c cod2 : showcod2nid) { codPageRecords.add(new ConsumableorderdetailsInfo(cod2,pandiandetailsMap.get(cod2.Id))); } iSinventory = true; if(codPageRecords.size() > 0) done = true; consumableorderdetailsRecordserrordummy.clear(); //pandiandetailsList = new list<Consumable_order_details2__c>(); pandiandetailsList = [select Id, Bar_Code__c,Consumable_Product__r.Name__c, Box_Piece__c,Lose_reason__c FROM Consumable_order_details2__c WHERE Id in :pandiandetailsMap.keySet() order by Name]; for(Consumable_order_details2__c codDet : pandiandetailsList){ codDet.Lose_reason__c = pandiandetailsMap.get(codDet.Id); } List<Consumable_order_details2__c> pandiandetailsListMid = new List<Consumable_order_details2__c>(); for(Consumable_order_details2__c cod2 : pandiandetailsList){ pandiandetailsListMid.add(cod2); if(pandiandetailsListMid.size() == 1000){ pandiandetailsListShow.add(pandiandetailsListMid); pandiandetailsListMid = new List<Consumable_order_details2__c>(); } } if(pandiandetailsListMid.size() > 0){ pandiandetailsListShow.add(pandiandetailsListMid); } res.code = 400; res.status = 'fail'; res.msg = 'barcode为空'; return res; // return; } //CHAN-B7J4NB 只有一个时,盘点不到 //init(); //CHAN-B7J4NB Map<String,String> showproductIdMap = new Map<String,String>(); for(ConsumableorderdetailsInfo ass : consumableorderdetailsRecords){ showproductIdMap.put(ass.prod.Id + ass.boxPiece, ass.prod.Id + ass.boxPiece); } // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'BarCodeListP' + BarCodeListP)); /***************************************************************************/ // BarCode的检索 所有在库 reSet = [select Id,Consumable_Product__c,Consumable_Product__r.Name__c, Box_Piece__c,Bar_Code_search__c,Isoverdue__c from Consumable_order_details2__c where Bar_Code_search__c in :BarCodeListP AND Dealer_Arrive__c = true AND Dealer_Shipment__c = false AND Dealer_Saled__c = false AND Dealer_Returned__c = false AND Lose_Flag__c = false AND Cancellation_Date__c = null and Bar_Code__c !=null AND Product_Type__c like : sqlagencyProType AND Arrive_Owner_Work_Location__c =: userWorkLocation AND Dealer_Info_text__c = :accountName order by Name]; Map<String, Integer> pandianProdIdCountMap = new Map<String, Integer>(); // ProdId 単位 // 20200509 add gzw 记录需要销存数量 Map<String, Integer> pandianoverdueCountMap = new Map<String, Integer>(); // ProdId 単位 // 20200509 add gzw 记录需要销存数量 Map<String,ConsumableorderdetailsInfo> barCodeListPandianMap = new Map<String,ConsumableorderdetailsInfo>(); // 明細バーコード 単位 //盘点到的明细 for(Consumable_order_details2__c rs : reSet){ //BarCodeListPandian.add(rs.Bar_Code_search__c); for(ConsumableorderdetailsInfo ass : consumableorderdetailsRecords){ if(rs.Consumable_Product__c == ass.Prod.Id && rs.Box_Piece__c == ass.boxPiece){ ass.check = true; } } barCodeListPandianMap.put(rs.Bar_Code_search__c, new ConsumableorderdetailsInfo(rs)); if (rs.Isoverdue__c == 0) { consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(rs,'该产品已经过有效期,请销存。')); pandiandetailsMap.put(rs.Id, '该产品已经过有效期,请销存。'); if (pandianoverdueCountMap.containsKey(rs.Consumable_product__c + rs.Box_Piece__c) == false) { pandianoverdueCountMap.put(rs.Consumable_Product__c + rs.Box_Piece__c, 1); } else { pandianoverdueCountMap.put(rs.Consumable_Product__c + rs.Box_Piece__c, pandianoverdueCountMap.get(rs.Consumable_Product__c + rs.Box_Piece__c) + 1); } continue; } if (pandianProdIdCountMap.containsKey(rs.Consumable_product__c + rs.Box_Piece__c) == false) { pandianProdIdCountMap.put(rs.Consumable_Product__c + rs.Box_Piece__c, 1); } else { pandianProdIdCountMap.put(rs.Consumable_Product__c + rs.Box_Piece__c, pandianProdIdCountMap.get(rs.Consumable_Product__c + rs.Box_Piece__c) + 1); } } // 经销商之间或者同一经销商不同工作地调货 List<Consumable_order_details2__c> reSet1 = [SELECT Id, Name,Consumable_Product__c, Bar_Code__c,Consumable_Product__r.Name__c,Dealer_Shipment__c,Dealer_Saled__c, Asset_Model_No__c,Isoverdue__c,Box_Piece__c,Dealer_Arrive__c, Bar_Code_search__c,Dealer_Info_text__c FROM Consumable_order_details2__c WHERE (Dealer_Arrive__c = TRUE or Dealer_Shipment__c= TRUE or Dealer_Saled__c = TRUE) AND Dealer_Returned__c = FALSE AND Cancellation_Flag__c = FALSE AND Bar_Code_search__c in :BarCodeListP AND (Dealer_Info_text__c != :accountName OR (Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c != :userWorkLocation) ) ORDER BY Name ]; Map<String,Consumable_order_details2__c> otherAgProMap = new Map<String,Consumable_order_details2__c>(); for(Consumable_order_details2__c cod2 :reSet1){ otherAgProMap.put(cod2.Bar_Code__c,cod2); } // 需要入库的产品 for(Consumable_order_details2__c cod2 : reSet1){ for(ConsumableorderdetailsInfo ass : consumableorderdetailsRecords){ if(cod2.Consumable_Product__c == ass.Prod.Id && cod2.Box_Piece__c == ass.boxPiece){ ass.check = true; } } if(!showproductIdMap.containsKey(cod2.Consumable_product__c + cod2.Box_Piece__c)){ reFindProductList.add(cod2); proIdNotinpage.put(cod2.Consumable_Product__c, cod2.Box_Piece__c); } if(!barCodeListPandianMap.containsKey(cod2.Bar_Code_search__c) && otherAgProMap.containsKey(cod2.Bar_Code__c) && (otherAgProMap.get(cod2.Bar_Code__c).Dealer_Saled__c == true || otherAgProMap.get(cod2.Bar_Code__c).Dealer_Shipment__c == true) ){ consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(cod2,'无此产品的库存,请入库。')); pandiandetailsMap.put(cod2.Id, '无此产品的库存,请入库。'); } } //寻回明细 List<Consumable_order_details2__c> productAdjust = new List<Consumable_order_details2__c>(); productAdjust = [select Id, Name,Consumable_Product__c, Bar_Code__c,Consumable_Product__r.Name__c,Lose_reason__c, Asset_Model_No__c,Box_Piece__c,Bar_Code_search__c,Isoverdue__c from Consumable_order_details2__c where Bar_Code_search__c in :BarCodeListP and Bar_Code__c !=null and Lose_Flag__c = true AND Product_Type__c like : sqlagencyProType AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c =: userWorkLocation order by Name]; for (Consumable_order_details2__c rs : productAdjust){ // 过期库存销存 20200427 gzw add srart if (rs.Isoverdue__c == 0 || rs.Lose_reason__c == '过期库存销存' ) { consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(rs,'过期或者销存产品,无法寻回入库')); pandiandetailsMap.put(rs.Id, '过期或者销存产品,无法寻回入库'); carCodeListLose.add(rs.Bar_Code_search__c); continue; } // 过期库存销存 20200427 gzw add end for(ConsumableorderdetailsInfo ass : consumableorderdetailsRecords){ if(rs.Consumable_Product__c == ass.Prod.Id && rs.Box_Piece__c == ass.boxPiece){ ass.check = true; } } if(!showproductIdMap.containsKey(rs.Consumable_product__c + rs.Box_Piece__c)){ reFindProductList.add(rs); proIdNotinpage.put(rs.Consumable_Product__c, rs.Box_Piece__c); } if(barCodeListAdjustMap.containsKey(rs.Bar_Code_search__c)){ continue; }else{ barCodeListAdjustMap.put(rs.Bar_Code_search__c, new ConsumableorderdetailsInfo(rs)); consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(rs,'寻回')); pandiandetailsMap.put(rs.Id, '寻回'); consumableorderdetailsRecordsAdjust.add(new ConsumableorderdetailsInfo(rs)); } } if(reFindProductList.size() > 0){ Map<String,Product2__c> midMap = new Map<String,Product2__c>(); List<ConsumableorderdetailsInfo> boxRecords = new List<ConsumableorderdetailsInfo>(); Map<String,ConsumableorderdetailsInfo> newMidBoxMap = new Map<String,ConsumableorderdetailsInfo>(); Map<String,ConsumableorderdetailsInfo> newMidPieceMap = new Map<String,ConsumableorderdetailsInfo>(); List<Product2__c> product_Refind = [select Id, Name,Name__c,SFDA_Status__c,Packing_list_manual__c,Asset_Model_No__c from Product2__c WHERE Id in :proIdNotinpage.keySet()]; for(Product2__c pro : product_Refind){ midMap.put(pro.Id, pro); } for(Integer i = 0 ; i< reFindProductList.size();i++){ //然后循环CountDel做Box和piece2个map if(MidMap.containsKey(reFindProductList[i].Consumable_Product__c) && reFindProductList[i].Box_Piece__c == '盒'){ if(newMidBoxMap.containsKey(reFindProductList[i].Consumable_Product__c+reFindProductList[i].Box_Piece__c)){ ConsumableorderdetailsInfo Jstage = newMidBoxMap.get(reFindProductList[i].Consumable_Product__c+reFindProductList[i].Box_Piece__c).clone(); Jstage.countid = 0 ; if(reFindProductList[i].Isoverdue__c == 1){ Jstage.limitCount = 0; } Jstage.boxPiece = reFindProductList[i].Box_Piece__c; newMidBoxMap.put(reFindProductList[i].Consumable_Product__c+reFindProductList[i].Box_Piece__c, Jstage); }else{ ConsumableorderdetailsInfo Jstage = new ConsumableorderdetailsInfo(MidMap.get(reFindProductList[i].Consumable_Product__c)); Jstage.countid = 0 ; if(reFindProductList[i].Isoverdue__c == 1){ Jstage.limitCount = 0; } Jstage.boxPiece = reFindProductList[i].Box_Piece__c; newMidBoxMap.put(reFindProductList[i].Consumable_Product__c+reFindProductList[i].Box_Piece__c, Jstage); } }else if(MidMap.containsKey(reFindProductList[i].Consumable_Product__c) && reFindProductList[i].Box_Piece__c == '个'){ if(newMidPieceMap.containsKey(reFindProductList[i].Consumable_Product__c+reFindProductList[i].Box_Piece__c)){ ConsumableorderdetailsInfo Jstage = newMidPieceMap.get(reFindProductList[i].Consumable_product__c+reFindProductList[i].Box_Piece__c).clone(); Jstage.countid = 0 ; if(reFindProductList[i].Isoverdue__c == 1){ Jstage.limitCount = 0; } Jstage.boxPiece = reFindProductList[i].Box_Piece__c; newMidPieceMap.put(reFindProductList[i].Consumable_Product__c+reFindProductList[i].Box_Piece__c, Jstage); }else{ ConsumableorderdetailsInfo Jstage = new ConsumableorderdetailsInfo(MidMap.get(reFindProductList[i].Consumable_Product__c)); Jstage.countid = 0 ; if(reFindProductList[i].Isoverdue__c == 1){ Jstage.limitCount = 0; } Jstage.boxPiece = reFindProductList[i].Box_Piece__c; newMidPieceMap.put(reFindProductList[i].Consumable_Product__c+reFindProductList[i].Box_Piece__c, Jstage); } } } for(ConsumableorderdetailsInfo bss : newMidBoxMap.values()){ bss.check = true; bss.overlimitCount = bss.countid - bss.limitCount; boxRecords.add(bss); } boxRecords.sort(); for(ConsumableorderdetailsInfo bss : newMidPieceMap.values()){ bss.check = true; bss.overlimitCount = bss.countid - bss.limitCount; } for(ConsumableorderdetailsInfo bss : boxRecords){ consumableorderdetailsRecords.add(bss); if(newMidPieceMap.containsKey(bss.Prod.Id + '个')){ consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个')); //newMidPieceMap移除已经添加的Piece newMidPieceMap.remove(bss.Prod.Id + '个'); } } for(ConsumableorderdetailsInfo bss : newMidPieceMap.values()){ consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个')); } } //先取出未盘点到的产品 for(ConsumableorderdetailsInfo ass : consumableorderdetailsRecords){ if(ass.check == true){ for(integer i = 0 ; i<ProductCount_Res.size();i++){ if(ProductCount_Res[i].Consumable_Product__c == ass.Prod.Id && ass.boxPiece == ProductCount_Res[i].Box_Piece__c){ if(barCodeListPandianMap.get(ProductCount_Res[i].Bar_Code_search__c) != null){ continue; }else{ carCodeListLose.add(ProductCount_Res[i].Bar_Code__c); ////barCodeListLoseMap.put(ProductCount_Res[i].Id, new ConsumableorderdetailsInfo(ProductCount_Res[i])); //consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(ProductCount_Res[i],'丢失')); //pandiandetailsMap.put(ProductCount_Res[i].Id, '丢失'); } } } } } //已经出库的产品 List<Consumable_order_details2__c> reSet2 = [SELECT Id, Name,Consumable_Product__c, Bar_Code__c,Consumable_Product__r.Name__c, Asset_Model_No__c,Isoverdue__c,Box_Piece__c, Bar_Code_search__c,Dealer_Info_text__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND (Dealer_Shipment__c= TRUE or Dealer_Saled__c = TRUE) AND Dealer_Returned__c = FALSE AND Cancellation_Flag__c = FALSE AND Bar_Code_search__c in :BarCodeListP AND Dealer_Info_text__c = :accountName ORDER BY Name ]; Map<String,Consumable_order_details2__c> needreturnMap = new Map<String,Consumable_order_details2__c>(); for(Consumable_order_details2__c cod2 :reSet2){ needreturnMap.put(cod2.Bar_Code__c,cod2); } //// 经销商之间或者同一经销商不同工作地调货 //List<Consumable_order_details2__c> reSet1 = [SELECT Id, Name,Consumable_Product__c, // Bar_Code__c,Consumable_Product__r.Name__c,Dealer_Shipment__c,Dealer_Saled__c, // Asset_Model_No__c,Isoverdue__c,Box_Piece__c,Dealer_Arrive__c, // Bar_Code_search__c,Dealer_Info_text__c // FROM Consumable_order_details2__c // WHERE (Dealer_Arrive__c = TRUE // or Dealer_Shipment__c= TRUE // or Dealer_Saled__c = TRUE) // AND Dealer_Returned__c = FALSE // AND Cancellation_Flag__c = FALSE // AND Bar_Code_search__c in :BarCodeListP // AND (Dealer_Info_text__c != :accountName // OR (Dealer_Info_text__c = :accountName // AND Arrive_Owner_Work_Location__c != :userWorkLocation) // ) // ORDER BY Name ]; //Map<String,Consumable_order_details2__c> otherAgProMap = new Map<String,Consumable_order_details2__c>(); //for(Consumable_order_details2__c cod2 :reSet1){ // otherAgProMap.put(cod2.Bar_Code__c,cod2); //} carCodeListLose.clear(); //未盘点到的产品 for(ConsumableorderdetailsInfo ass : consumableorderdetailsRecords){ if(ass.check == true){ for(integer i = 0 ; i<ProductCount_Res.size();i++){ if(ProductCount_Res[i].Consumable_Product__c == ass.Prod.Id && ass.boxPiece == ProductCount_Res[i].Box_Piece__c){ if(barCodeListPandianMap.containsKey(ProductCount_Res[i].Bar_Code_search__c)){ continue; } if (ProductCount_Res[i].Isoverdue__c == 0) { consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(ProductCount_Res[i],'该产品已经过有效期,请销存。')); pandiandetailsMap.put(ProductCount_Res[i].Id, '该产品已经过有效期,请销存。'); if (pandianoverdueCountMap.containsKey(ProductCount_Res[i].Consumable_product__c + ProductCount_Res[i].Box_Piece__c) == false) { pandianoverdueCountMap.put(ProductCount_Res[i].Consumable_Product__c + ProductCount_Res[i].Box_Piece__c, 1); } else { pandianoverdueCountMap.put(ProductCount_Res[i].Consumable_Product__c + ProductCount_Res[i].Box_Piece__c, pandianoverdueCountMap.get(ProductCount_Res[i].Consumable_Product__c + ProductCount_Res[i].Box_Piece__c) + 1); } continue; } consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(ProductCount_Res[i],'丢失')); pandiandetailsMap.put(ProductCount_Res[i].Id, '丢失'); } } // 同时存在其他经销商库存产品 for(Consumable_order_details2__c cod2 : reSet1){ if(cod2.Consumable_Product__c == ass.Prod.Id && ass.boxPiece == cod2.Box_Piece__c){ if(barCodeListPandianMap.containsKey(cod2.Bar_Code_search__c) && otherAgProMap.containsKey(cod2.Bar_Code__c) && otherAgProMap.get(cod2.Bar_Code__c).Dealer_Saled__c == false && otherAgProMap.get(cod2.Bar_Code__c).Dealer_Shipment__c == false ){ consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(cod2,'该产品归属于' + otherAgProMap.get(cod2.Bar_Code__c).Dealer_Info_text__c + '的库存。')); pandiandetailsMap.put(cod2.Id, '该产品归属于' + otherAgProMap.get(cod2.Bar_Code__c).Dealer_Info_text__c + '的库存。'); continue; } } } // 需要返品的产品 for(Consumable_order_details2__c cod2 : reSet2){ if(cod2.Consumable_Product__c == ass.Prod.Id && ass.boxPiece == cod2.Box_Piece__c){ if(needreturnMap.containsKey(cod2.Bar_Code__c)){ consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(cod2,'该产品目前出库状态,请返品。')); pandiandetailsMap.put(cod2.Id, '该产品目前出库状态,请返品。'); continue; } } } } } //更新主明细单 if(barCodeListPandianMap.size() > 0){ for(ConsumableorderdetailsInfo ass : consumableorderdetailsRecords){ if(ass.check == true){ integer countSum = 0; if (pandianProdIdCountMap.containsKey(ass.Prod.Id + ass.boxPiece)) { countSum = pandianProdIdCountMap.get(ass.Prod.Id + ass.boxPiece); } integer overdueSum = 0; if (pandianoverdueCountMap.containsKey(ass.Prod.Id + ass.boxPiece)) { overdueSum = pandianoverdueCountMap.get(ass.Prod.Id + ass.boxPiece); } ass.Pandian = countSum; ass.Diff = ass.countid - countSum - overdueSum; ass.refind = 0; } } }else{ for(ConsumableorderdetailsInfo ass : consumableorderdetailsRecords){ if(ass.check == true){ integer overdueSum = 0; if (pandianoverdueCountMap.containsKey(ass.Prod.Id + ass.boxPiece)) { overdueSum = pandianoverdueCountMap.get(ass.Prod.Id + ass.boxPiece); } ass.Diff = ass.countid - ass.Pandian - overdueSum; } } } //寻回做成 for(ConsumableorderdetailsInfo ass :consumableorderdetailsRecords){ for(ConsumableorderdetailsInfo adjust :consumableorderdetailsRecordsAdjust){ if(ass.Prod.Name__c == adjust.Prod.Name__c && ass.boxPiece == adjust.orderdetails2.Box_Piece__c){ if(reFindProduct.containsKey(adjust.orderdetails2.Bar_Code_search__c)){ continue; }else { ass.Pandian ++; ass.refind ++; reFindProduct.put(adjust.orderdetails2.Bar_Code_search__c,adjust.orderdetails2.Bar_Code_search__c); } } } } if (pandiandetailsMap.keySet().size() > 0) { List<Consumable_order_details2__c> showcod2 = [select Id, Name,Consumable_Product__c, Bar_Code__c,Consumable_Product__r.Name__c, Asset_Model_No__c,Isoverdue__c,Box_Piece__c, Bar_Code_search__c FROM Consumable_order_details2__c WHERE Id in :pandiandetailsMap.keySet() order by Name]; initStandardController(); showcod2nid = cod2s(); } for (Consumable_order_details2__c cod2 : showcod2nid) { codPageRecords.add(new ConsumableorderdetailsInfo(cod2,pandiandetailsMap.get(cod2.Id))); } if(codPageRecords.size() > 0) done = true; iSinventory = true; consumableorderdetailsRecordserrordummy.clear(); pandiandetailsList = [select Id, Bar_Code__c,Consumable_Product__r.Name__c, Box_Piece__c,Lose_reason__c FROM Consumable_order_details2__c WHERE Id in :pandiandetailsMap.keySet() order by Name]; for(Consumable_order_details2__c codDet : pandiandetailsList){ codDet.Lose_reason__c = pandiandetailsMap.get(codDet.Id); } List<Consumable_order_details2__c> pandiandetailsListMid = new List<Consumable_order_details2__c>(); for(Consumable_order_details2__c cod2 : pandiandetailsList){ pandiandetailsListMid.add(cod2); if(pandiandetailsListMid.size() == 1000){ pandiandetailsListShow.add(pandiandetailsListMid); pandiandetailsListMid = new List<Consumable_order_details2__c>(); } } if(pandiandetailsListMid.size() > 0){ pandiandetailsListShow.add(pandiandetailsListMid); } System.debug('=====>codPageRecords2'+codPageRecords); System.debug('=====>consumableorderdetailsRecords'+consumableorderdetailsRecords); data.put('codPageRecords',JSON.serialize(codPageRecords)); data.put('consumableorderdetailsRecords',JSON.serialize(consumableorderdetailsRecords)); System.debug('iSinventory===>'+iSinventory); data.put('iSinventory',JSON.serialize(iSinventory)); System.debug('pandiandetailsMap===>'+pandiandetailsMap); data.put('pandiandetailsMap',JSON.serialize(pandiandetailsMap)); res.code = 200; res.status = 'Sucess'; return res; } public static ResponseBodyLWC saveConfirm(Boolean iSinventory,String consumableorderdetailsRecordsLWC) { save(iSinventory,consumableorderdetailsRecordsLWC); // LexInventoryController.oinoi return null; } // 保存按钮 @AuraEnabled public static ResponseBodyLWC save(Boolean iSinventory,String consumableorderdetailsRecordsLWC) { List<ConsumableorderdetailsInfo> consumableorderdetailsRecords = (List<ConsumableorderdetailsInfo>)JSON.deserialize(consumableorderdetailsRecordsLWC,List<ConsumableorderdetailsInfo>.class); ResponseBodyLWC res = new ResponseBodyLWC(); Map<String, object> data = new Map<String, object>(); res.entity = data; // 跳过明细2不必要更新 StaticParameter.EscapeConsumableOrderDetail2Trigger = true; if(!iSinventory){ return new ResponseBodyLWC('Error',500, '请先点【BarCode录入】', ''); // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'请先点【BarCode录入】')); // return null; } integer Lo = 0; for(ConsumableorderdetailsInfo header : consumableorderdetailsRecords){ if(header.check==true){ Lo++; } } if(Lo == 0){ iSinventory = false; // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'请选择要盘点的明细')); // return null; return new ResponseBodyLWC('Error',500, '请选择要盘点的明细', ''); } for(ConsumableorderdetailsInfo header : consumableorderdetailsRecords){ if(header.check==true){ //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, header.prod.Name__c + ' '+header.prod.Name__c)); //return null; if((header.DiffReason == ''||header.DiffReason ==null)&&header.Diff>0){ return new ResponseBodyLWC('Error',500, header.prod.Name__c + '请输入差异原因', ''); // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, header.prod.Name__c + '请输入差异原因')); // return null; }else if ((header.DiffReason != ''&&header.DiffReason !=null)&&header.Diff==0){ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '无丢失产品,不需要填写差异原因')); // return null; return new ResponseBodyLWC('Error',500, header.prod.Name__c + '无丢失产品,不需要填写差异原因', ''); } } } Integer orderDetNo = 1; Savepoint sp = Database.setSavepoint(); Consumable_order__c Po = new Consumable_order__c(); Po.Name ='*'; Po.Order_status__c = '批准'; Po.Inventory_date__c = Date.today(); Po.Order_type__c = '盘点'; Po.Dealer_Info__c = accountid; Po.Order_ProType__c = agencyProType; Po.RecordTypeid = System.Label.RT_ConOrder_Inventory; try{ insert Po; eSetId = Po.id; List<Consumable_order__c> Consumable_order = [SELECT Name FROM Consumable_order__c WHERE id =:Po.id]; List<Consumable_orderdetails__c> InsList = New List<Consumable_orderdetails__c>(); List<Consumable_order_details2__c> InsListUp = New List<Consumable_order_details2__c>(); List<Consumable_order_details2__c> updListAdjust = New List<Consumable_order_details2__c>(); Map<String,String> ErrorName = new Map<String,String>(); Map<String,Boolean> CheckTF = new Map<String,Boolean>(); for(ConsumableorderdetailsInfo header : consumableorderdetailsRecords){ if(header.check==true){ Consumable_orderdetails__c insPan = new Consumable_orderdetails__c(); insPan = new Consumable_orderdetails__c(); String str = string.valueOf(orderDetNo); if(str.length() == 1){ str = '0' + str; } insPan.Name = Consumable_order[0].Name + '-'+ str; insPan.Consumable_Product__c = header.ProdId; ErrorName.put(insPan.Consumable_Product__c,header.DiffReason); CheckTF.put(insPan.Consumable_product__c,true); insPan.Consumable_order__c = Po.Id; insPan.Lose_reason__c = header.DiffReason; insPan.Diff__c = header.Diff; insPan.Product_Refind__c = header.refind; insPan.inventory_sum__c = header.Pandian; insPan.Count_Sum__c = header.countid; insPan.RecordTypeId = System.Label.RT_ConOrderDetail1_Inventory; orderDetNo ++; InsList.add(insPan); } } if(InsList.size()>0){ insert InsList; } List<Consumable_order_details2__c> showcod2 = [select Id, Name,Consumable_Product__c, Bar_Code__c,Consumable_Product__r.Name__c, Asset_Model_No__c,Isoverdue__c,Box_Piece__c, Bar_Code_search__c FROM Consumable_order_details2__c WHERE Id in :pandiandetailsMap.keySet() order by Name]; for(Consumable_order_details2__c cod : showcod2){ Consumable_order_details2__c InsDetail = new Consumable_order_details2__c(); InsDetail.Id =cod.Id; InsDetail.Consumable_Inventory_order__c = po.Id; InsDetail.Inventory_date__c = Date.today(); // 20210224 gzw CHAN-BXF3PG start // if(pandiandetailsMap.get(cod.Id) == '丢失' ){ if(pandiandetailsMap.get(cod.Id) == '丢失' && CheckTF.containsKey(cod.Consumable_product__c)){ // 20210224 gzw CHAN-BXF3PG end InsDetail.Lose_reason__c = ErrorName.get(cod.Consumable_product__c); InsDetail.Lose_Flag__c = true; }else if(pandiandetailsMap.get(cod.Id) == '寻回' ){ InsDetail.Lose_reason__c = ''; InsDetail.Lose_Flag__c = false; }else{ continue; } InsListUp.add(InsDetail); } for(Consumable_order_details2__c rs : reSet){ rs.Inventory_date__c = Date.today(); } if(reSet.size() > 0){ update reSet; } if(InsListUp.size()>0){ ControllerUtil.updateOrderDetailsSatus(InsListUp);// Commented By DTT - Li Jun for testing 20230407 } }catch (Exception ex) { Database.rollback(sp); ApexPages.addMessages(ex); return null; } // FIXME impliment BarCodeListAdjust /************************************************************************************************/ // return ProS(); data.put('eSetId',eSetId); res.status = 'Success'; res.code = 200; System.debug('res = ' + res); return res; } //盘点一览 public PageReference ProS() { // 返回盘点一览 PageReference ref = new Pagereference('/apex/InventoryList?eSetId=' + eSetId); ref.setRedirect(true); return ref; } //CSV出力 public PageReference doClick() { Pagereference pr = page.InventoryCSV; return pr; } // Data Bean class ConsumableorderdetailsInfo implements Comparable { public Boolean check { get; set; } public Consumable_orderdetails__c orderdetails1 { get; set; } public Consumable_order_details2__c orderdetails2 { get; set; } public Product2__c Prod { get; set; } public Decimal countid { get; set; } public String ProdId{get;set;} public Decimal Pandian { get; set; } public Decimal Diff { get; set; } public Decimal refind { get; set; } public String DiffReason { get; set; } public Boolean canSelect { get; set; } public Boolean sortBy { get; set; } public Decimal limitCount { get; set; } public Decimal overlimitCount { get; set; } public String boxPiece { get; set; } public ConsumableorderdetailsInfo(Consumable_order_details2__c e,string str) { orderdetails2 = e; Prod = e.Consumable_Product__r; //e.Lose_reason__c = str; DiffReason = str; } // 已存在消耗品明细用 public ConsumableorderdetailsInfo(Consumable_order_details2__c e) { check = false; orderdetails2 = e; Prod = e.Consumable_Product__r; canSelect = true; } public ConsumableorderdetailsInfo(Product2__c e) { check = false; //orderdetails1 = new Consumable_orderdetails__c(); Prod = e; canSelect = true; ProdId = string.valueOf(e.id); countid =0; Pandian = 0; refind = 0; Diff = 0; limitCount = 0; overlimitCount = 0; } // 排序 public Integer compareTo(Object compareTo) { ConsumableorderdetailsInfo compareToesd =(ConsumableorderdetailsInfo)compareTo; Integer returnValue = 0; if (countid > compareToesd.countid ) { returnValue = -1; } else if (countid < compareToesd.countid ) { returnValue = 1; } return returnValue; } } } force-app/main/default/classes/LexInventoryController.cls-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>56.0</apiVersion> <status>Active</status> </ApexClass> force-app/main/default/classes/LexSummonsCreatController.cls
New file @@ -0,0 +1,2400 @@ public without sharing class LexSummonsCreatController { public static Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe(); /*****************検索用******************/ //经销商用户产品分类(ET、ENG) @AuraEnabled public static String agencyProType { get; set; } public static Consumable_order__c coc { get; set; } // 画view用, 可能是 出库指示单, 也有可能是到货单, 也有可能 空instance public static User localuser { get; set; } public static String category1 { get; set; } public static Integer noOfRecords { get; set; } //public String category_Goods {get ; set;} public static Boolean cansee { get; set; } public static Integer size { get; set; } //经销商定价查看权限 //public static ApexPages.StandardSetController setCon { get; set; } public static Boolean dealerPricesee { get; set; } /*****************画面初始化用********************************/ /******20160313_add**************/ public static String IdCheck { get; set; } public static Boolean editAble { get; set; } public static String statusEdit { get; set; } public static String alertMessage { get; set; } public static String SearchDone { get; set; } public static List<String> zaikuId = new List<String>(); public static List<String> orderzaikuId = new List<String>(); //附件 public static List<ConsumableorderdetailsInfo> attachmentRecoeds { get; set; } public static Boolean getExistarrive() { return (coc.Arrive_Order__c != null); } //总价格计算结果 @AuraEnabled public static Decimal sumPrice { get; set; } /******20160317_add**************/ public static String SummonsFlag { get; set; } // 新規: hidden, 更新: visible public static String category5 { get; set; } public static String category4 { get; set; } public static String category3 { get; set; } public static List<SelectOption> categoryOptionList { get; set; } public static List<SelectOption> category4OptionList { get; set; } public static List<SelectOption> category5OptionList { get; set; } @AuraEnabled public static Map<String,String> categoryOptionMap { get; set; } @AuraEnabled public static Map<String,String> category4OptionMap { get; set; } @AuraEnabled public static Map<String,String> category5OptionMap { get; set; } /*****************画面表示Bean******************/ private static List<ConsumableorderdetailsInfo> consumableorderdetailsSelectRecords = new List<ConsumableorderdetailsInfo>(); @AuraEnabled public static List<ConsumableorderdetailsInfo> pageRecords { get; set; } public static List<ConsumableorderdetailsInfoLwc> pageRecordsLwc { get; set; } //public List<List<ConsumableorderdetailsInfo>> consumableorderdetailsRecordsview { get; set; } public static List<ConsumableorderdetailsInfo> consumableorderdetails2Records { get; set; } public static List<Consumable_order__c> consumableInvoiceRecords { get; set; } private static List<ConsumableorderdetailsInfo> consumableproductdetailsRecords = new List<ConsumableorderdetailsInfo>(); private static List<Attachment> attachmentinfo = new List<Attachment>(); public static List<Product2__c> product2Selected = new List<Product2__c>(); //选择产品size public static Integer consumableorderdetailsCount { get { return pageRecords == null ? 0 : pageRecords.size(); } } //消耗品明细2数量 public static Integer consumableorderdetails2Count { get { return consumableorderdetails2Records == null ? 0 : consumableorderdetails2Records.size(); } } //订货单号 public static String consumableorderId { get { return (coc.Arrive_Order__c); } } //选择框 public static List<SelectOption> provinceOpts { get; set; } @AuraEnabled public static Map<String, String> provinceOptsMap { get; set; } public static String SecondDealer { get; set; } //public List<SelectOption> orderForHospitalOpts { get; set; } public static String HospitalInfo { get; set; } public static String HospitalName { get; set; } public static Boolean EditDelCommitBtnDisabled { get; private set; } public static Boolean saveBtnDisabled { get; private set; } public static Boolean SorderBtnDisabled { get; private set; } // 保存后动作: 1.检索 2.排序 public static String sortKey { get; set; } public static String preSortKey { get; private set; } public static Boolean sortOrderAsc { get; private set; } public static String[] sortOrder { get; private set; } private static String[] columus = new List<String>{ 'Consumable_Product__r.Name', 'Consumable_Product__r.Asset_Model_No__c', 'Consumable_Product__r.Intra_Trade_List_RMB__c', '', '', 'Consumable_Product__r.Category3__c', 'Consumable_Product__r.Category4__c', 'Consumable_Product__r.Category5__c' }; private static String[] columus_no = new List<String>{ 'Product2__c.Name', 'Product2__c.Asset_Model_No__c', 'Product2__c.Intra_Trade_List_RMB__c', '', '', 'Category3__c', 'Category4__c', 'Category5__c' }; //到货单明细1 private static List<Consumable_Orderdetails__c> consumableorderdetailsSelected = new List<Consumable_Orderdetails__c>(); //到货单明细2 private static List<Consumable_order_details2__c> consumablearriveproductdetailsSelected = new List<Consumable_order_details2__c>(); //出库单明细2 private static List<Consumable_order_details2__c> consumableorderdetails2RecordsList = new List<Consumable_order_details2__c>(); /*****************ソート時再検索条件(画面からの入力条件を無視するため)******************/ //private String cate1ForSort = null; private static String accountid = null; @AuraEnabled public static String accountName { get; set; } // 产品 ID private static String ESetId = ''; @AuraEnabled public static String arriveorder { get; set; } private static String userId = ''; //private String[] ProidListAll = new String[]{}; // 登录者工作地 @AuraEnabled public static String userWorkLocation { get; set; } //add by rentx 2021-01-29 public static List<SelectOption> outOutPatternOptionList { get; set; } @AuraEnabled public static Map<String, String> outOutPatternOptionMap { get; set; } public static String outOutPattern { get; set; } public static Boolean hasHos { get; set; } @AuraEnabled public static Boolean hasHosPro { get; set; } private static Map<String, String> HosProMap = new Map<String, String>(); //add by rentx 2021-01-29 public LexSummonsCreatController() { System.debug('LexSummonsCreatController'); size = Integer.valueOf(System.Label.orderdetLimitsize); // ESetId = ApexPages.currentPage().getParameters().get('esetId'); // arriveorder = ApexPages.currentPage().getParameters().get('arriveorder'); // statusEdit = ApexPages.currentPage().getParameters().get('KeyWords'); provinceOpts = new List<SelectOption>(); provinceOptsMap = new Map<String, String>(); pageRecords = new List<ConsumableorderdetailsInfo>(); consumableproductdetailsRecords = new List<ConsumableorderdetailsInfo>(); consumableorderdetailsSelectRecords = new List<ConsumableorderdetailsInfo>(); attachmentRecoeds = new List<ConsumableorderdetailsInfo>(); consumableorderdetails2Records = new List<ConsumableorderdetailsInfo>(); consumableInvoiceRecords = new List<Consumable_order__c>(); categoryOptionList = new List<SelectOption>(); category4OptionList = new List<SelectOption>(); category5OptionList = new List<SelectOption>(); categoryOptionMap = new Map<String,String>(); category4OptionMap = new Map<String,String>(); category5OptionMap = new Map<String,String>(); outOutPatternOptionMap = new Map<String, String>(); outOutPatternOptionMap.put('', '-无-'); outOutPatternOptionMap.put('ishos', '医院特价产品'); outOutPatternOptionMap.put('nothos', '非医院特价产品'); outOutPatternOptionList.add(new SelectOption('', '-无-')); outOutPatternOptionList.add(new SelectOption('ishos', '医院特价产品')); outOutPatternOptionList.add(new SelectOption('nothos', '非医院特价产品')); HospitalName = ''; } public static void firstInit(String ESetidJs){ System.debug('enter firstInit'); ESetid = ESetidJs; System.debug('ESetid = ' + ESetid); size = Integer.valueOf(System.Label.orderdetLimitsize); provinceOpts = new List<SelectOption>(); provinceOptsMap = new Map<String, String>(); pageRecords = new List<ConsumableorderdetailsInfo>(); consumableproductdetailsRecords = new List<ConsumableorderdetailsInfo>(); consumableorderdetailsSelectRecords = new List<ConsumableorderdetailsInfo>(); attachmentRecoeds = new List<ConsumableorderdetailsInfo>(); consumableorderdetails2Records = new List<ConsumableorderdetailsInfo>(); consumableInvoiceRecords = new List<Consumable_order__c>(); categoryOptionList = new List<SelectOption>(); category4OptionList = new List<SelectOption>(); category5OptionList = new List<SelectOption>(); categoryOptionMap = new Map<String,String>(); category4OptionMap = new Map<String,String>(); category5OptionMap = new Map<String,String>(); outOutPatternOptionMap = new Map<String, String>(); outOutPatternOptionMap.put('', '-无-'); outOutPatternOptionMap.put('ishos', '医院特价产品'); outOutPatternOptionMap.put('nothos', '非医院特价产品'); // outOutPatternOptionList.add(new SelectOption('', '-无-')); // outOutPatternOptionList.add(new SelectOption('ishos', '医院特价产品')); // outOutPatternOptionList.add(new SelectOption('nothos', '非医院特价产品')); HospitalName = ''; } // 画面初始化 @AuraEnabled public static ResponseBodyLWC init(String ESetidJs) { // try { firstInit(ESetidJs); arriveorder = ''; HospitalName = ''; provinceOpts = new List<SelectOption>(); provinceOptsMap = new Map<String, String>(); ResponseBodyLWC res = new ResponseBodyLWC(); Map<String, object> data = new Map<String, object>(); res.entity = data; sortKey = '1'; preSortKey = '1'; sortOrderAsc = false; sortOrder = new String[8]; sortOrder = new List<String>{ ' ', ' ', ' ', ' ', '↓', '', '', '' }; //cate1ForSort = ''; sumPrice = 0; IdCheck = EsetId; if (ESetId != null && ESetId != '' && (statusEdit == '' || statusEdit == null)) { editAble = false; } else if ((ESetId == null || ESetId == '') && (statusEdit == '' || statusEdit == null)) { editAble = true; } else if (ESetId != null && ESetId != '' && statusEdit != '' && statusEdit != null) { editAble = true; } userId = UserInfo.getUserId(); localuser = [SELECT id, State_Hospital__c FROM User WHERE id = :UserInfo.getUserId()]; //userId = '00510000005QO75'; user Useracc = [SELECT accountid, Work_Location__c, UserPro_Type__c FROM user WHERE id = :userId]; accountid = Useracc.accountid; userWorkLocation = Useracc.Work_Location__c; agencyProType = Useracc.UserPro_Type__c; if (String.isBlank(Useracc.UserPro_Type__c)) { agencyProType = 'ET'; } Account accountInfo = [SELECT Name FROM account WHERE id = :accountid]; accountName = accountInfo.Name; //coc.Order_date__c = Date.today(); list<Dealer_elationship__c> Dealerelationship = new List<Dealer_elationship__c>(); Dealerelationship = [ SELECT Dealer_subordinate__c, Dealer_subordinate__r.Name FROM Dealer_elationship__c WHERE Dealer_principal__c = :accountid ]; List<Agency_Hospital_Link__c> AgencyHospitalLink = new List<Agency_Hospital_Link__c>(); AgencyHospitalLink = [SELECT Id, Hospital__c, Hospital__r.Name FROM Agency_Hospital_Link__c WHERE Agency__c = :accountid]; //add by rentx 2021-3-1 start //判断当前经销商下是否有特价医院 List<hospitalprice__c> hlist = [SELECT id, product__c FROM hospitalprice__c WHERE account__c = :accountid]; if (hlist == null || hlist.size() == 0) { hasHos = false; } else { for (hospitalprice__c hp : hlist) { HosProMap.put(hp.product__c, ''); } hasHos = true; } //add by rentx 2021-3-1 end saveBtnDisabled = false; SorderBtnDisabled = false; String sqlagencyProType = '%' + agencyProType + '%'; coc = new Consumable_order__c(); consumableorderdetailsSelectRecords = new List<ConsumableorderdetailsInfo>(); Map<String, ConsumableorderdetailsInfo> MidMap = new Map<String, ConsumableorderdetailsInfo>(); //add by rentx 2021-01-29 Map<String, ConsumableorderdetailsInfo> MidMap2 = new Map<String, ConsumableorderdetailsInfo>(); //add by rentx 2021-01-29 List<AggregateResult> orderdetailCount = [ SELECT count(id), Consumable_Product__c cpc, Box_Piece__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Lose_Flag__c = FALSE AND Cancellation_Flag__c = FALSE AND Bar_Code__c != NULL AND Isoverdue__c = 1 AND Product_Type__c LIKE :sqlagencyProType AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c = :userWorkLocation GROUP BY Consumable_Product__c, Box_Piece__c ]; for (AggregateResult orderdetail : orderdetailCount) { zaikuId.add(String.valueOf(orderdetail.get('cpc'))); } List<Consumable_order_details2__c> CountDel = [ SELECT Id, Bar_Code__c, Name, Inventory_date__c, Consumable_Product__c, Consumable_Product__r.Asset_Model_No__c, Recordtypeid, Box_Piece__c, ProductPacking_list_manual__c, //add by rentx 2020-11-27 start hospitalSpecialOffer__c //add by rentx 2020-11-27 end FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Dealer_Returned__c = FALSE AND Lose_Flag__c = FALSE AND Cancellation_Flag__c = FALSE AND Bar_Code__c != NULL AND Isoverdue__c = 1 AND Product_Type__c LIKE :sqlagencyProType AND Arrive_Owner_Work_Location__c = :userWorkLocation AND Dealer_Info_text__c = :accountName ]; // 新規 if (ESetId == null || ESetId == '') { SummonsFlag = 'hidden'; String msoql = makeSoqlinventory(); initStandardController(msoql); product2Selected = Database.query(msoql); //product2Selected = product2s(); if (String.isBlank(arriveorder)) { EditDelCommitBtnDisabled = true; for (Integer i = 0; i < product2Selected.size(); i++) { MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); } for (Integer i = 0; i < CountDel.size(); i++) { String str = ''; if (CountDel[i].hospitalSpecialOffer__c) { str = 'isHos'; } else { str = 'notHos'; } //明细2对应的产品存在于MidMap中 if (MidMap.containsKey(CountDel[i].Consumable_Product__c)) { //设置map中key的后缀 用于区分医院特价和非医院特价 if (MidMap2.containsKey(CountDel[i].Consumable_Product__c + str)) { ConsumableorderdetailsInfo Jstage = MidMap2.get(CountDel[i].Consumable_Product__c + str); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Box_Piece__c == '盒') { Jstage.Boxnumber = Jstage.Boxnumber + 1; } else if (CountDel[i].Box_Piece__c == '个') { Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } if (HosProMap.containsKey(Jstage.Prod.Id)) { Jstage.hosPro = true; } MidMap2.put(CountDel[i].Consumable_Product__c + str, Jstage); } else { //midmap2中没有对应的产品 ConsumableorderdetailsInfo Jstage = MidMap.get(CountDel[i].Consumable_Product__c).clone(); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Box_Piece__c == '盒') { Jstage.Boxnumber = Jstage.Boxnumber + 1; } else if (CountDel[i].Box_Piece__c == '个') { Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } if (HosProMap.containsKey(Jstage.Prod.Id)) { Jstage.hosPro = true; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap2.put(CountDel[i].Consumable_Product__c + str, Jstage); } } /*//然后循环CountDel去修改map里的allnumber if(MidMap.containsKey(CountDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(CountDel[i].Consumable_Product__c); Jstage.allnumber = Jstage.allnumber+1 ; if(CountDel[i].Box_Piece__c == '盒'){ Jstage.Boxnumber = Jstage.Boxnumber + 1; }else if(CountDel[i].Box_Piece__c == '个'){ Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; }else{ Jstage.hospitalSpecialOffer = false; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap.put(CountDel[i].Consumable_Product__c+str, Jstage); }*/ } //update by rentx 2021-01-29 end //再把map里的值从新赋给ConsumableorderdetailsRecords //update by rentx 2021-01-29 // for(ConsumableorderdetailsInfo bss : MidMap.values()){ for (ConsumableorderdetailsInfo bss : MidMap2.values()) { //update by rentx 2021-01-29 //if(bss.allnumber>0){ bss.packinglist = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c); bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; consumableorderdetailsSelectRecords.add(bss); //} } Integer ishosnum = 0; for (ConsumableorderdetailsInfo ass : consumableorderdetailsSelectRecords) { ass.sortBy = sortOrderAsc; //add by rentx 2021-3-10 if (ass.hospitalSpecialOffer) { ishosnum = ishosnum + 1; } } if (ishosnum > 0) { hasHosPro = true; } else { hasHosPro = false; } consumableorderdetailsSelectRecords.sort(); //add by rentx noOfRecords = consumableorderdetailsSelectRecords.size(); //add by rentx System.debug('makepagerecords1'); makepagerecords(); //listCut(); } else { if (statusEdit == '' || statusEdit == null) { editAble = false; } else if (statusEdit != '' && statusEdit != null) { editAble = true; } // upadte start by vivek 2019-7-15 // coc = [SELECT Id,Name,Summons_Order_type__c,SummonsStatus_c__c,Order_ForDealerText__c, // Dealer_Info__c,Order_ForDealer__c,Order_ForDealer__r.Name,Order_ForDealerTextID__c, // Order_ForHospital__c,SummonsForDirction__c,Order_date__c,Arrive_Order__c, // Order_status__c,Shipment_total_amount__c,Offers_Price__c, // Billed_Status__c,ShipmentAccount__c,Order_Dealer_Info__c,Order_ForCustomerText__c,ConInvoice_Code__c,Onchange_order__c // FROM Consumable_order__c // WHERE Id =:arriveorder AND Order_Owner_WorkLocal__c =: userWorkLocation // AND recordtypeid = :System.Label.RT_ConOrder_Arrive]; coc = [ SELECT Id, Name, Summons_Order_type__c, NoConfirmedPrice__c, SummonsStatus_c__c, Order_ForDealerText__c, Dealer_Info__c, Order_ForDealer__c, Order_ForDealer__r.Name, Order_ForDealerTextID__c, Order_ForHospital__c, SummonsForDirction__c, Order_date__c, Arrive_Order__c, Order_status__c, Shipment_total_amount__c, Offers_Price__c, Billed_Status__c, ShipmentAccount__c, Order_Dealer_Info__c, Order_ForCustomerText__c, ConInvoice_Code__c, Onchange_order__c, OutPattern__c FROM Consumable_order__c WHERE Id = :arriveorder AND Order_Owner_WorkLocal__c = :userWorkLocation AND recordtypeid = :System.Label.RT_ConOrder_Arrive ]; // update end by vivek 2019-7-15 //明细1获取 consumableorderdetailsSelected = [ SELECT Id, Dealer_Custom_Price__c, Delivery_List_RMB__c, Consumable_Product__r.Name__c, Name, Consumable_order__c, Consumable_Product__c, Consumable_Product__r.Name, Consumable_Product__r.Category3__c, Consumable_Product__r.Category4__c, Consumable_Product__r.Category5__c, Shipment_Count__c, Consumable_Product__r.Intra_Trade_List_RMB__c, Consumable_Product__r.Asset_Model_No__c, Sum_of_money__c, Box_Piece__c, ProductPacking_list_manual__c, Consumable_Product__r.SFDA_Status__c, Consumable_count__c, Invoiced_Procount__c, RrturnPro_count__c, InvoiceProNot_count__c, //Unitprice_To_agency__c, Consumable_Product__r.Product2__r.SFDA_Approbation_No__c, Consumable_Product__r.Product2__r.SFDA_Expiration_Date__c FROM Consumable_Orderdetails__c WHERE Consumable_order__c = :coc.Arrive_Order__c ORDER BY Name ]; for (Consumable_Orderdetails__c cdc1 : consumableorderdetailsSelected) { orderzaikuId.add(cdc1.Consumable_Product__c); } msoql = makeSoqlorderdet(); product2Selected = Database.query(msoql); size = product2Selected.size(); initStandardController(msoql); for (Integer i = 0; i < product2Selected.size(); i++) { MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); } //update by rentx 2021-01-29 /*for(Integer i = 0 ; i< CountDel.size();i++){ //然后循环CountDel去修改map里的allnumber if(MidMap.containsKey(CountDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(CountDel[i].Consumable_Product__c); Jstage.allnumber = Jstage.allnumber+1 ; if(CountDel[i].Box_Piece__c == '盒'){ Jstage.Boxnumber = Jstage.Boxnumber + 1; }else if(CountDel[i].Box_Piece__c == '个'){ Jstage.Piecenumber = Jstage.Piecenumber + 1; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap.put(CountDel[i].Consumable_Product__c, Jstage); } }*/ for (Integer i = 0; i < CountDel.size(); i++) { String str = ''; if (CountDel[i].hospitalSpecialOffer__c) { str = 'isHos'; } else { str = 'notHos'; } //明细2对应的产品存在于MidMap中 if (MidMap.containsKey(CountDel[i].Consumable_Product__c)) { //设置map中key的后缀 用于区分医院特价和非医院特价 if (MidMap2.containsKey(CountDel[i].Consumable_Product__c + str)) { ConsumableorderdetailsInfo Jstage = MidMap2.get(CountDel[i].Consumable_Product__c + str); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Box_Piece__c == '盒') { Jstage.Boxnumber = Jstage.Boxnumber + 1; } else if (CountDel[i].Box_Piece__c == '个') { Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } if (HosProMap.containsKey(Jstage.Prod.Id)) { Jstage.hosPro = true; } MidMap2.put(CountDel[i].Consumable_Product__c + str, Jstage); } else { //midmap2中没有对应的产品 ConsumableorderdetailsInfo Jstage = MidMap.get(CountDel[i].Consumable_Product__c).clone(); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Box_Piece__c == '盒') { Jstage.Boxnumber = Jstage.Boxnumber + 1; } else if (CountDel[i].Box_Piece__c == '个') { Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } if (HosProMap.containsKey(Jstage.Prod.Id)) { Jstage.hosPro = true; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap2.put(CountDel[i].Consumable_Product__c + str, Jstage); } } } //再把map里的值从新赋给ConsumableorderdetailsRecords //update by rentx 2021-01-29 // for(ConsumableorderdetailsInfo bss : MidMap.values()){ for (ConsumableorderdetailsInfo bss : MidMap2.values()) { //update by rentx 2021-01-29 bss.packinglist = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c); bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; consumableorderdetailsSelectRecords.add(bss); } //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, 'test11111' + consumableorderdetailsSelected.size())); //return; Integer ishosnum = 0; for (ConsumableorderdetailsInfo ass : consumableorderdetailsSelectRecords) { ass.sortBy = sortOrderAsc; for (Consumable_Orderdetails__c cdc1 : consumableorderdetailsSelected) { cdc1.Shipment_Count__c = cdc1.Consumable_count__c; if (ass.prod.Id == cdc1.Consumable_Product__c) { ass.check = true; ass.orderdetails1 = cdc1; } } if (ass.hospitalSpecialOffer == true) { ishosnum = ishosnum + 1; } } if (ishosnum > 0) { hasHosPro = true; } else { hasHosPro = false; } consumableorderdetailsSelectRecords.sort(); //add by rentx noOfRecords = consumableorderdetailsSelectRecords.size(); //add by rentx System.debug('makepagerecords2'); makepagerecords(); consumablearriveproductdetailsSelected = [ SELECT Id, Name, Intra_Trade_List_RMB__c, Asset_Model_No__c, Consumable_Product__c, Consumable_Product__r.Name, Consumable_Product__r.Name__c, Consumable_Product__r.Category3__c, Consumable_Product__r.Category4__c, Consumable_Product__r.Category5__c, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, Dealer_Arrive__c, Delivery_List_RMB__c, Box_Piece__c, ProductPacking_list_manual__c, //add by rentx start hospitalSpecialOffer__c //add by rentx end FROM Consumable_order_details2__c WHERE Consumable_order_minor__c = :coc.Arrive_Order__c AND recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery AND Dealer_Arrive__c = TRUE ORDER BY Name ]; for (Integer i = 0; i < consumablearriveproductdetailsSelected.size(); i++) { if ( consumablearriveproductdetailsSelected[i].hospitalSpecialOffer__c && HosProMap.containsKey(consumablearriveproductdetailsSelected[i].Consumable_product__c) ) { coc.OutPattern__c = true; } consumableproductdetailsRecords.add(new ConsumableorderdetailsInfo(consumablearriveproductdetailsSelected[i])); } } } // 更新、 else { SummonsFlag = 'visible'; // update start by vivek 2019-7-15 add “NoConfirmedPrice__c” in select consumableInvoiceRecords = [ SELECT Id, Name, Invoice_Date__c, NoConfirmedPrice__c, Invoice_total_amount__c, Invoice_status__c FROM Consumable_order__c WHERE Id IN (SELECT Invoice_Code_link__c FROM Consumable_order_LinkTable__c WHERE Outboundorder_Code_link__c = :ESetId) AND Invoice_status__c != '草案中' ]; coc = [ SELECT Id, Name, Summons_Order_type__c, NoConfirmedPrice__c, SummonsStatus_c__c, Order_ForDealerText__c, Dealer_Info__c, Order_ForDealer__c, Order_ForDealer__r.Name, Order_ForDealerTextID__c, Order_ForHospital__c, SummonsForDirction__c, Order_date__c, Arrive_Order__c, Order_status__c, Shipment_total_amount__c, Offers_Price__c, Billed_Status__c, ShipmentAccount__c, Order_Dealer_Info__c, Order_ForCustomerText__c, ConInvoice_Code__c, Onchange_order__c, OutPattern__c FROM Consumable_order__c WHERE Id = :ESetId AND Order_Owner_WorkLocal__c = :userWorkLocation AND Order_type__c = '传票' ]; // update start by vivek 2019-7-15 if (getExistarrive()) { arriveorder = coc.Arrive_Order__c; } // 到货订单来的时候 if (getExistarrive()) { if (editAble) { alertMessage = '到货订单直接出库,出库单明细不可编辑。'; } if (coc.SummonsStatus_c__c == '已提交' || coc.SummonsStatus_c__c == '批准') { system.debug('coc.SummonsStatus_c__c : ' + coc.SummonsStatus_c__c); saveBtnDisabled = true; SorderBtnDisabled = true; EditDelCommitBtnDisabled = false; } //医院二级经销商分类 Integer io = 0; while (io < Dealerelationship.size()) { if (coc.Order_ForDealer__c == Dealerelationship[io].Dealer_subordinate__c) { SecondDealer = Dealerelationship[io].Dealer_subordinate__c; coc.Order_ForDealer__c = null; io = io + Dealerelationship.size(); } io++; } Integer ik = 0; while (ik < AgencyHospitalLink.size()) { if (coc.Order_ForHospital__c == AgencyHospitalLink[ik].Hospital__c) { HospitalInfo = AgencyHospitalLink[ik].Hospital__c; HospitalName = AgencyHospitalLink[ik].Hospital__r.Name; coc.Order_ForHospital__c = null; ik = ik + AgencyHospitalLink.size(); } ik++; } //出库单明细1取得 consumableorderdetailsSelected = [ SELECT Id, Dealer_Custom_Price__c, Delivery_List_RMB__c, Consumable_Product__r.Name__c, Consumable_Product__r.SFDA_Status__c, Name, Consumable_order__c, Consumable_Product__c, Consumable_Product__r.Name, Shipment_Count__c, Consumable_Product__r.Intra_Trade_List_RMB__c, Consumable_Product__r.Asset_Model_No__c, Consumable_Product__r.Category3__c, Consumable_Product__r.Category4__c, Consumable_Product__r.Category5__c, Shipment_amount__c, //Unitprice_To_agency__c, Box_Piece__c, ProductPacking_list_manual__c, Invoiced_Procount__c, RrturnPro_count__c, InvoiceProNot_count__c, Consumable_Product__r.Product2__r.SFDA_Approbation_No__c, Consumable_Product__r.Product2__r.SFDA_Expiration_Date__c, isOutPattern__c FROM Consumable_orderdetails__c WHERE Consumable_order__c = :ESetId AND Consumable_order__r.Order_Owner_WorkLocal__c = :userWorkLocation ORDER BY Name ]; Map<String, Consumable_Orderdetails__c> cocMap = new Map<String, Consumable_Orderdetails__c>(); for (Consumable_Orderdetails__c cdc1 : consumableorderdetailsSelected) { sumPrice += cdc1.Shipment_amount__c; orderzaikuId.add(cdc1.Consumable_Product__c); //add by rentx 2021-2-26 String tempId = cdc1.Consumable_product__c; if (cdc1.isOutPattern__c) { cocMap.put(tempId + 'ishos', cdc1); } else { cocMap.put(tempId + 'nothos', cdc1); } //add by rentx 2021-2-26 } String msoql = makeSoqlorderdet(); product2Selected = Database.query(msoql); size = product2Selected.size(); initStandardController(msoql); for (Integer i = 0; i < product2Selected.size(); i++) { MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); } //update by rentx 2021-01-29 /*for(Integer i = 0 ; i< CountDel.size();i++){ //然后循环CountDel去修改map里的allnumber if(MidMap.containsKey(CountDel[i].Consumable_Product__c)){ ConsumableorderdetailsInfo Jstage = MidMap.get(CountDel[i].Consumable_Product__c); Jstage.allnumber = Jstage.allnumber+1 ; if(CountDel[i].Box_Piece__c == '盒'){ Jstage.Boxnumber = Jstage.Boxnumber + 1; }else if(CountDel[i].Box_Piece__c == '个'){ Jstage.Piecenumber = Jstage.Piecenumber + 1; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap.put(CountDel[i].Consumable_Product__c, Jstage); } }*/ for (Integer i = 0; i < CountDel.size(); i++) { String str = ''; if (CountDel[i].hospitalSpecialOffer__c) { str = 'isHos'; } else { str = 'notHos'; } //明细2对应的产品存在于MidMap中 if (MidMap.containsKey(CountDel[i].Consumable_Product__c)) { //设置map中key的后缀 用于区分医院特价和非医院特价 if (MidMap2.containsKey(CountDel[i].Consumable_Product__c + str)) { ConsumableorderdetailsInfo Jstage = MidMap2.get(CountDel[i].Consumable_Product__c + str); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Box_Piece__c == '盒') { Jstage.Boxnumber = Jstage.Boxnumber + 1; } else if (CountDel[i].Box_Piece__c == '个') { Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } if (HosProMap.containsKey(Jstage.Prod.Id)) { Jstage.hosPro = true; } MidMap2.put(CountDel[i].Consumable_Product__c + str, Jstage); } else { //midmap2中没有对应的产品 ConsumableorderdetailsInfo Jstage = MidMap.get(CountDel[i].Consumable_Product__c).clone(); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Box_Piece__c == '盒') { Jstage.Boxnumber = Jstage.Boxnumber + 1; } else if (CountDel[i].Box_Piece__c == '个') { Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } if (HosProMap.containsKey(Jstage.Prod.Id)) { Jstage.hosPro = true; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap2.put(CountDel[i].Consumable_Product__c + str, Jstage); } } } //update by rentx 2021-01-29 consumableorderdetailsSelectRecords = new List<ConsumableorderdetailsInfo>(); //再把map里的值从新赋给ConsumableorderdetailsRecords //update by rentx 2021-01-29 // for(ConsumableorderdetailsInfo bss : MidMap.values()){ for (ConsumableorderdetailsInfo bss : MidMap2.values()) { //update by rentx 2021-01-29 //if(bss.allnumber > 0){ //bss.UnitpriceToagency = bss.orderdetails1.Unitprice_To_agency__c == null || bss.orderdetails1.Unitprice_To_agency__c == 0 ? '' :bss.orderdetails1.Unitprice_To_agency__c.format(); bss.packinglist = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c); bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; //update by rentx 2021-2-26 start if (cocMap.containsKey(bss.Prod.Id + 'ishos') && bss.hospitalSpecialOffer == true) { consumableorderdetailsSelectRecords.add(bss); } else if (cocMap.containsKey(bss.Prod.Id + 'nothos') && bss.hospitalSpecialOffer == false) { consumableorderdetailsSelectRecords.add(bss); } //update by rentx 2021-2-26 end // consumableorderdetailsSelectRecords.add(bss); //} } Integer ishosnum = 0; for (ConsumableorderdetailsInfo ass : consumableorderdetailsSelectRecords) { for (Consumable_Orderdetails__c cdc1 : consumableorderdetailsSelected) { //update by rentx 2012-3-1 start // if(ass.prod.Id == cdc1.Consumable_Product__c){ // ass.check = true; // ass.orderdetails1 = cdc1; // } if (ass.Prod.Id == cdc1.Consumable_Product__c && ass.hospitalSpecialOffer == cdc1.isOutPattern__c) { ass.check = true; ass.orderdetails1 = cdc1; } //update by rentx 2012-3-1 end } if (ass.hospitalSpecialOffer == true) { ishosnum = ishosnum + 1; } } if (ishosnum > 0) { hasHosPro = true; } else { hasHosPro = false; } //add by rentx noOfRecords = consumableorderdetailsSelectRecords.size(); //add by rentx System.debug('makepagerecords3'); makepagerecords(); //listCut(); // 消耗品明细2を取得 consumableorderdetails2RecordsList = [ SELECT Id, Name, SerialLotNo__c, Consumable_Product__r.Name__c, TracingCode__c, Sterilization_limit__c, Consumable_Product__c, Consumable_Product__r.Name, Consumable_Product__r.Category3__c, Consumable_Product__r.Category4__c, Consumable_Product__r.Category5__c, Return_date__c, Invoice_Date__c, Box_Piece__c, ProductPacking_list_manual__c, //add by rentx start hospitalSpecialOffer__c //add by rentx end FROM Consumable_order_details2__c WHERE Consumable_ZS_order__c = :ESetId ORDER BY Name ]; for (Integer i = 0; i < consumableorderdetails2RecordsList.size(); i++) { consumableorderdetails2Records.add(new ConsumableorderdetailsInfo(consumableorderdetails2RecordsList[i])); } //产品明细取得 consumablearriveproductdetailsSelected = [ SELECT Id, Delivery_List_RMB__c, Consumable_Product__r.Name__c, Name, Consumable_Product__r.SFDA_Status__c, Consumable_Product__r.Category3__c, Consumable_Product__r.Category4__c, Consumable_Product__r.Category5__c, Consumable_Product__c, Consumable_Product__r.Name, Sterilization_limit__c, Consumable_Product__r.Intra_Trade_List_RMB__c, Consumable_Product__r.Asset_Model_No__c, Box_Piece__c, ProductPacking_list_manual__c, //add by rentx start hospitalSpecialOffer__c //add by rentx end FROM Consumable_order_details2__c WHERE Consumable_ZS_order__c = :ESetId ORDER BY Name ]; for (Integer i = 0; i < consumablearriveproductdetailsSelected.size(); i++) { consumableproductdetailsRecords.add(new ConsumableorderdetailsInfo(consumablearriveproductdetailsSelected[i])); } } // 不是到货订单来的时候 else { if (coc.SummonsStatus_c__c == '已提交' || coc.SummonsStatus_c__c == '批准') { system.debug('coc.SummonsStatus_c__c : ' + coc.SummonsStatus_c__c); saveBtnDisabled = true; SorderBtnDisabled = true; EditDelCommitBtnDisabled = false; } //医院二级经销商分类 Integer io = 0; while (io < Dealerelationship.size()) { if (coc.Order_ForDealer__c == Dealerelationship[io].Dealer_subordinate__c) { SecondDealer = Dealerelationship[io].Dealer_subordinate__c; coc.Order_ForDealer__c = null; io = io + Dealerelationship.size(); } io++; } Integer ik = 0; while (ik < AgencyHospitalLink.size()) { if (coc.Order_ForHospital__c == AgencyHospitalLink[ik].Hospital__c) { HospitalInfo = AgencyHospitalLink[ik].Hospital__c; HospitalName = AgencyHospitalLink[ik].Hospital__r.Name; coc.Order_ForHospital__c = null; ik = ik + AgencyHospitalLink.size(); } ik++; } // 消耗品明细1を取得 consumableorderdetailsSelected = [ SELECT Id, Dealer_Custom_Price__c, Delivery_List_RMB__c, Consumable_Product__r.Name__c, Consumable_Product__r.SFDA_Status__c, Name, Consumable_order__c, Consumable_Product__c, Consumable_Product__r.Name, Shipment_Count__c, Consumable_Product__r.Intra_Trade_List_RMB__c, Consumable_Product__r.Asset_Model_No__c, Shipment_amount__c, Box_Piece__c, ProductPacking_list_manual__c, Invoiced_Procount__c, RrturnPro_count__c, //Unitprice_To_agency__c, InvoiceProNot_count__c, Consumable_Product__r.Category3__c, Consumable_Product__r.Category4__c, Consumable_Product__r.Category5__c, Consumable_Product__r.Product2__r.SFDA_Approbation_No__c, Consumable_Product__r.Product2__r.SFDA_Expiration_Date__c, isOutPattern__c FROM Consumable_orderdetails__c WHERE Consumable_order__c = :ESetId AND Consumable_order__r.Order_Owner_WorkLocal__c = :userWorkLocation ORDER BY Name ]; //add by rentx 202-2-26 Map<String, Consumable_Orderdetails__c> cocMap = new Map<String, Consumable_Orderdetails__c>(); for (Consumable_Orderdetails__c cdc1 : consumableorderdetailsSelected) { sumPrice += cdc1.Shipment_amount__c; orderzaikuId.add(cdc1.Consumable_Product__c); //add by rentx 2021-2-26 String tempId = cdc1.Consumable_product__c; if (cdc1.isOutPattern__c) { cocMap.put(tempId + 'ishos', cdc1); } else { cocMap.put(tempId + 'nothos', cdc1); } //add by rentx 2021-2-26 } String msoql = makeSoqlorderdet(); product2Selected = Database.query(msoql); size = product2Selected.size(); initStandardController(msoql); for (Integer i = 0; i < product2Selected.size(); i++) { MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); } for (Integer i = 0; i < CountDel.size(); i++) { String str = ''; if (CountDel[i].hospitalSpecialOffer__c) { str = 'isHos'; } else { str = 'notHos'; } //明细2对应的产品存在于MidMap中 if (MidMap.containsKey(CountDel[i].Consumable_Product__c)) { //设置map中key的后缀 用于区分医院特价和非医院特价 if (MidMap2.containsKey(CountDel[i].Consumable_Product__c + str)) { ConsumableorderdetailsInfo Jstage = MidMap2.get(CountDel[i].Consumable_Product__c + str); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Box_Piece__c == '盒') { Jstage.Boxnumber = Jstage.Boxnumber + 1; } else if (CountDel[i].Box_Piece__c == '个') { Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } if (HosProMap.containsKey(Jstage.Prod.Id)) { Jstage.hosPro = true; } MidMap2.put(CountDel[i].Consumable_Product__c + str, Jstage); } else { //midmap2中没有对应的产品 ConsumableorderdetailsInfo Jstage = MidMap.get(CountDel[i].Consumable_Product__c).clone(); Jstage.allnumber = Jstage.allnumber + 1; if (CountDel[i].Box_Piece__c == '盒') { Jstage.Boxnumber = Jstage.Boxnumber + 1; } else if (CountDel[i].Box_Piece__c == '个') { Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; } else { Jstage.hospitalSpecialOffer = false; } if (HosProMap.containsKey(Jstage.Prod.Id)) { Jstage.hosPro = true; } Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap2.put(CountDel[i].Consumable_Product__c + str, Jstage); } } } //再把map里的值从新赋给ConsumableorderdetailsRecords //update by rentx 2021-01-29 // for(ConsumableorderdetailsInfo bss : MidMap.values()){ for (ConsumableorderdetailsInfo bss : MidMap2.values()) { //update by rentx 2021-01-29 //if(bss.allnumber>0){ bss.packinglist = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c); bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; //update by rentx 2021-2-26 start if (cocMap.containsKey(bss.Prod.Id + 'ishos') && bss.hospitalSpecialOffer == true) { consumableorderdetailsSelectRecords.add(bss); } else if (cocMap.containsKey(bss.Prod.Id + 'nothos') && bss.hospitalSpecialOffer == false) { consumableorderdetailsSelectRecords.add(bss); } // consumableorderdetailsSelectRecords.add(bss); //} } // return null; Integer ishosnum = 0; for (ConsumableorderdetailsInfo ass : consumableorderdetailsSelectRecords) { ass.sortBy = sortOrderAsc; for (Consumable_Orderdetails__c cdc1 : consumableorderdetailsSelected) { //update by rentx 2012-3-1 start // if(ass.prod.Id == cdc1.Consumable_Product__c){ // ass.check = true; // ass.orderdetails1 = cdc1; // } if (ass.Prod.Id == cdc1.Consumable_Product__c && ass.hospitalSpecialOffer == cdc1.isOutPattern__c) { ass.check = true; ass.orderdetails1 = cdc1; } //update by rentx 2012-3-1 end } if (ass.hospitalSpecialOffer == true) { ishosnum = ishosnum + 1; } } if (ishosnum > 0) { hasHosPro = true; } else { hasHosPro = false; } consumableorderdetailsSelectRecords.sort(); //add by rentx noOfRecords = consumableorderdetailsSelectRecords.size(); //add by rentx System.debug('makepagerecords4'); makepagerecords(); // 消耗品明细2を取得 consumableorderdetails2RecordsList = [ SELECT Id, Name, SerialLotNo__c, Consumable_Product__r.Name__c, TracingCode__c, Sterilization_limit__c, Consumable_Product__c, Consumable_Product__r.Name, Consumable_Product__r.Category3__c, Consumable_Product__r.Category4__c, Consumable_Product__r.Category5__c, Return_date__c, Invoice_Date__c, Box_Piece__c, ProductPacking_list_manual__c, //add by rentx start hospitalSpecialOffer__c //add by rentx end FROM Consumable_order_details2__c WHERE Consumable_ZS_order__c = :ESetId ORDER BY Name ]; for (Integer i = 0; i < consumableorderdetails2RecordsList.size(); i++) { consumableorderdetails2Records.add(new ConsumableorderdetailsInfo(consumableorderdetails2RecordsList[i])); } } } //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, 'test++++++' + SecondDealer)); if (SecondDealer == null || SecondDealer == '') { provinceOpts.add(new SelectOption('', '-无-')); provinceOptsMap.put('', '-无-'); for (Integer i = 0; i < Dealerelationship.size(); i++) { provinceOpts.add( new SelectOption(Dealerelationship[i].Dealer_subordinate__c, Dealerelationship[i].Dealer_subordinate__r.Name) ); provinceOptsMap.put(Dealerelationship[i].Dealer_subordinate__c, Dealerelationship[i].Dealer_subordinate__r.Name); } } else { provinceOpts.add(new SelectOption('', '-无-')); provinceOptsMap.put('', '-无-'); for (Integer i = 0; i < Dealerelationship.size(); i++) { if (Dealerelationship[i].Dealer_subordinate__c == SecondDealer) { provinceOpts.add( new SelectOption(Dealerelationship[i].Dealer_subordinate__c, Dealerelationship[i].Dealer_subordinate__r.Name) ); provinceOptsMap.put(Dealerelationship[i].Dealer_subordinate__c, Dealerelationship[i].Dealer_subordinate__r.Name); } } for (Integer i = 0; i < Dealerelationship.size(); i++) { if (Dealerelationship[i].Dealer_subordinate__c != SecondDealer) { provinceOpts.add( new SelectOption(Dealerelationship[i].Dealer_subordinate__c, Dealerelationship[i].Dealer_subordinate__r.Name) ); provinceOptsMap.put(Dealerelationship[i].Dealer_subordinate__c, Dealerelationship[i].Dealer_subordinate__r.Name); } } } Schema.DescribeFieldResult dfr = Product2__c.Intra_Trade_List_RMB__c.getDescribe(); cansee = dfr.isAccessible(); Schema.DescribeFieldResult dealerPrice = Consumable_orderdetails__c.Dealer_Custom_Price__c.getDescribe(); dealerPricesee = dealerPrice.isAccessible(); // 显示数据条数信息 // makeMessage(); //附件 attachmentinfo = [SELECT Id, Name, OwnerId FROM Attachment WHERE parentid = :ESetId]; if (attachmentinfo.size() > 0) { for (Integer i = 0; i < attachmentinfo.size(); i++) { attachmentRecoeds.add(new ConsumableorderdetailsInfo(attachmentinfo[i])); } } AggregateResult[] categoryList = [ SELECT Count(id), Category3_text__c c3c FROM Product2__c WHERE Category3_text__c != NULL GROUP BY Category3_text__c ]; categoryOptionList = new List<SelectOption>(); categoryOptionList.add(new SelectOption('', '-无-')); categoryOptionMap = new Map<String,String>(); categoryOptionMap.put('', '-无-'); for (AggregateResult category3Search : categoryList) { String deliverycnt = String.valueOf(category3Search.get('c3c')); categoryOptionList.add(new SelectOption(deliverycnt, deliverycnt)); categoryOptionMap.put(deliverycnt, deliverycnt); } category4OptionList = new List<SelectOption>(); category4OptionList.add(new SelectOption('', '-无-')); category4OptionMap = new Map<String,String>(); category4OptionMap.put('', '-无-'); /*for(AggregateResult category4Search : category4List) { String deliverycnt4 = String.valueOf(category4Search.get('c4c')); category4OptionList.add(new SelectOption(deliverycnt4,deliverycnt4)); }*/ category5OptionList = new List<SelectOption>(); category5OptionList.add(new SelectOption('', '-无-')); category5OptionMap = new Map<String,String>(); category5OptionMap.put('', '-无-'); Boolean Existarrive = (coc.Arrive_Order__c != null); String ConsumableOut_report = System.Label.ConsumableOut_report; System.debug('consumableproductdetailsRecords = ' + consumableproductdetailsRecords); data.put('ConsumableOut_report','ConsumableOut_report'); data.put('accountid',accountid); data.put('consumableproductdetailsRecords',consumableproductdetailsRecords); data.put('agencyProType',agencyProType); data.put('accountName',accountName); data.put('userWorkLocation',userWorkLocation); data.put('categoryOptionMap',categoryOptionMap); data.put('category4OptionMap',category4OptionMap); data.put('category5OptionMap',category5OptionMap); data.put('outOutPatternOptionMap',outOutPatternOptionMap); data.put('hasHosPro',hasHosPro); data.put('Existarrive',Existarrive); data.put('sumPrice',sumPrice); data.put('HospitalName', HospitalName); data.put('provinceOptsMap', provinceOptsMap); data.put('SummonsFlag', SummonsFlag); data.put('EditDelCommitBtnDisabled', EditDelCommitBtnDisabled); data.put('EditAble', EditAble); data.put('coc', coc); data.put('pageRecords', pageRecords); data.put('arriveorder',arriveorder); res.status = 'Success'; res.code = 200; System.debug('res = ' + res); return res; // } catch (Exception e) { // return new ResponseBodyLWC('Error',500, e.getMessage(), ''); // } } // 检索 @AuraEnabled public static ResponseBodyLWC searchConsumableorderdetails(String agencyProTypeLwc,String accountNameLwc,String userWorkLocationLwc,String outOutPattern,String category1,String category3,String category4,String category5,Boolean editAbleLwc,List<ConsumableorderdetailsInfoLwc> pageRecordsLwcLwc,List<ConsumableorderdetailsInfo> consumableproductdetailsRecordsLwc,String arriveorderLwc) { consumableproductdetailsRecords = consumableproductdetailsRecordsLwc; pageRecordsLwc = pageRecordsLwcLwc; System.debug('pageRecordsLwc = ' + pageRecordsLwc); arriveorder = arriveorderLwc; accountName = accountNameLwc; userWorkLocation = userWorkLocationLwc; agencyProType = agencyProTypeLwc; String sqlagencyProType = '%' + agencyProTypeLwc + '%'; List<AggregateResult> orderdetailCount = [ SELECT count(id), Consumable_Product__c cpc, Box_Piece__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Lose_Flag__c = FALSE AND Cancellation_Flag__c = FALSE AND Bar_Code__c != NULL AND Isoverdue__c = 1 AND Product_Type__c LIKE :sqlagencyProType AND Dealer_Info_text__c = :accountNameLwc AND Arrive_Owner_Work_Location__c = :userWorkLocationLwc GROUP BY Consumable_Product__c, Box_Piece__c ]; for (AggregateResult orderdetail : orderdetailCount) { zaikuId.add(String.valueOf(orderdetail.get('cpc'))); } editAble = editAbleLwc; ResponseBodyLWC res = new ResponseBodyLWC(); Map<String, object> data = new Map<String, object>(); res.entity = data; SearchDone = 'SearchDone'; Map<String, String> selectedIdMap = new Map<String, String>(); List<ConsumableorderdetailsInfo> reSet = new List<ConsumableorderdetailsInfo>(); Map<String,ConsumableorderdetailsInfo> MidMap = new Map<String,ConsumableorderdetailsInfo>(); //update by rentx 2021-01-29 Map<String,ConsumableorderdetailsInfo> MidMap2 = new Map<String,ConsumableorderdetailsInfo>(); String countdelSoql = 'SELECT Id,Bar_Code__c,Name,Inventory_date__c,Consumable_Product__c,Consumable_Product__r.Asset_Model_No__c,Recordtypeid,Box_Piece__c,ProductPacking_list_manual__c,hospitalSpecialOffer__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = true AND Dealer_Shipment__c = false AND Dealer_Saled__c = false AND Dealer_Returned__c = false AND Lose_Flag__c = false AND Bar_Code__c != null AND Isoverdue__c = 1 AND Arrive_Owner_Work_Location__c = :userWorkLocation AND Dealer_Info_text__c = :accountName '; if (String.isNotBlank(outOutPattern) && outOutPattern.equals('ishos')) { countdelSoql += ' AND hospitalSpecialOffer__c = true'; }else if (String.isNotBlank(outOutPattern) && outOutPattern.equals('nothos')) { countdelSoql += ' AND hospitalSpecialOffer__c = false'; } System.debug('countdelSoql = ' + countdelSoql); List<Consumable_order_details2__c> CountDel = Database.query(countdelSoql); System.debug('CountDel = ' + CountDel); //update by rentx 2021-01-29 consumableorderdetailsSelectRecords = new List<ConsumableorderdetailsInfo>(); //consumableorderdetailsSelectRecords = reSet; String soql = makeSoql(category1,category3,category4,category5); System.debug('soql = ' + soql); size = Integer.valueOf(System.Label.orderdetLimitsize); initStandardController(soql); product2Selected = Database.query(soql); for (Integer i = 0; i < product2Selected.size(); i++) { MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i])); } for (Integer i = 0; i < CountDel.size() ;i++ ) { String str = ''; if (CountDel[i].hospitalSpecialOffer__c) { str = 'isHos'; }else{ str = 'notHos'; } System.debug('MidMap = ' + MidMap); //明细2对应的产品存在于MidMap中 if (MidMap.containsKey(CountDel[i].Consumable_Product__c)) { //设置map中key的后缀 用于区分医院特价和非医院特价 if (MidMap2.containsKey(CountDel[i].Consumable_Product__c + str)) { ConsumableorderdetailsInfo Jstage = MidMap2.get(CountDel[i].Consumable_Product__c+str); Jstage.allnumber = Jstage.allnumber+1 ; if(CountDel[i].Box_Piece__c == '盒'){ Jstage.Boxnumber = Jstage.Boxnumber + 1; }else if(CountDel[i].Box_Piece__c == '个'){ Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; }else{ Jstage.hospitalSpecialOffer = false; } if (HosProMap.containsKey(Jstage.Prod.Id)) { Jstage.hosPro = true; } MidMap2.put(CountDel[i].Consumable_Product__c+str, Jstage); }else{ //midmap2中没有对应的产品 ConsumableorderdetailsInfo Jstage = MidMap.get(CountDel[i].Consumable_Product__c).clone(); Jstage.allnumber = Jstage.allnumber+1 ; if(CountDel[i].Box_Piece__c == '盒'){ Jstage.Boxnumber = Jstage.Boxnumber + 1; }else if(CountDel[i].Box_Piece__c == '个'){ Jstage.Piecenumber = Jstage.Piecenumber + 1; } if (CountDel[i].hospitalSpecialOffer__c) { Jstage.hospitalSpecialOffer = true; }else{ Jstage.hospitalSpecialOffer = false; } if (HosProMap.containsKey(Jstage.Prod.Id)) { Jstage.hosPro = true; } //Jstage.BoxPiece = CountDel[i].Box_Piece__c; MidMap2.put(CountDel[i].Consumable_Product__c+str, Jstage); } } } Integer ishosnum = 0; System.debug('MidMap2 = ' + MidMap2); for(ConsumableorderdetailsInfo bss : MidMap2.values()){ if(selectedIdMap.containsKey(bss.Prod.id)){ continue; }else{ bss.sortBy = false; bss.packinglist = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c); bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c; bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c; consumableorderdetailsSelectRecords.add(bss); if (bss.hospitalSpecialOffer == true) { ishosnum = ishosnum + 1; } } } if (ishosnum > 0) { hasHosPro = true; }else{ hasHosPro = false; } consumableorderdetailsSelectRecords.sort(); //add by rentx //noOfRecords = consumableorderdetailsSelectRecords.size(); //add by rentx //makepagerecords(); makepagerecordsLwc(); // this.sortKey = '1'; // this.preSortKey = '1'; // this.sortOrderAsc = false; // this.sortOrder = new String[8]; // this.sortOrder = new String[]{' ',' ',' ',' ','↓','','',''}; data.put('pageRecords', pageRecords); data.put('test','test'); res.status = 'Success'; res.code = 200; System.debug('res = ' + res); return res; } private static String makeSoql(String CateName,String Category3,String Category4,String Category5){ String sqlTail1 = '(\''; for(Integer i = 0 ; i< zaikuId.size();i++){ if(i<zaikuId.size()-1){ sqlTail1 += zaikuId[i]+'\',\''; }else{ sqlTail1 += zaikuId[i]; } } sqlTail1 += '\')'; String soql = 'SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,Product2__r.Packing_list_manual__c,SFDA_Status__c,Product2__r.SFDA_Approbation_No__c,Product2__r.SFDA_Expiration_Date__c,Category3__c,Category4__c,Category5__c FROM Product2__c '; soql += ' WHERE Id in' + sqlTail1; if(!String.isBlank(CateName)){ soql += ' AND (Name__c like \'%' + String.escapeSingleQuotes(CateName.replaceAll('%', '\\%')) + '%\' or Asset_Model_No__c like \'%' + String.escapeSingleQuotes(CateName.replaceAll('%', '\\%')) + '%\')'; }if(!String.isBlank(Category3)){ soql += ' AND Category3__c = \'' + Category3 + '\''; }if(!String.isBlank(Category4)){ soql += ' AND Category4__c = \'' + Category4 + '\''; }if(!String.isBlank(Category5)){ soql += ' AND Category5__c = \'' + Category5 + '\''; } return soql; } public static String makeSoqlorderdet() { String sqlTail = '(\''; for (Integer i = 0; i < orderzaikuId.size(); i++) { if (i < orderzaikuId.size() - 1) { sqlTail += orderzaikuId[i] + '\',\''; } else { sqlTail += orderzaikuId[i]; } } sqlTail += '\')'; String msoql = 'SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,Product2__r.Packing_list_manual__c,SFDA_Status__c,Product2__r.SFDA_Approbation_No__c,Product2__r.SFDA_Expiration_Date__c,Category3__c,Category4__c,Category5__c FROM Product2__c '; msoql += ' WHERE Id in' + sqlTail; return msoql; } public static String makeSoqlinventory() { String sqlTail = '(\''; for (Integer i = 0; i < zaikuId.size(); i++) { if (i < zaikuId.size() - 1) { sqlTail += zaikuId[i] + '\',\''; } else { sqlTail += zaikuId[i]; } } sqlTail += '\')'; String msoql = 'SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,Product2__r.Packing_list_manual__c,SFDA_Status__c,Product2__r.SFDA_Approbation_No__c,Product2__r.SFDA_Expiration_Date__c,Category3__c,Category4__c,Category5__c FROM Product2__c '; msoql += ' WHERE Id in' + sqlTail; return msoql; } public static void initStandardController(String soql) { // init standard controller System.debug('soql =' + soql); System.debug('initStandardController star'); //setCon = new ApexPages.StandardSetController(Database.getQueryLocator(soql)); // sets the number of records in each page set //setCon.setPageSize(size); System.debug('initStandardController end'); } public static List<ConsumableorderdetailsInfo> makepagerecords() { List<ConsumableorderdetailsInfo> reSet = new List<ConsumableorderdetailsInfo>(); Map<String, String> selectedIdMap = new Map<String, String>(); System.debug('zhj1'); //取出选择的产品 if (pageRecords != null) { System.debug('zhj2'); for (ConsumableorderdetailsInfo ass : pageRecords) { if (ass.check == true) { if (ass.hospitalSpecialOffer == true) { selectedIdMap.put(ass.Prod.Id + 'ishos', ass.Prod.Id); } else { selectedIdMap.put(ass.Prod.Id + 'nothos', ass.Prod.Id); } reSet.add(ass); } } } System.debug('zhj3'); pageRecords = new List<ConsumableorderdetailsInfo>(); if (editAble && String.isBlank(arriveorder)) { pageRecords = reSet; } //Integer pagestartNo = (setCon.getPageNumber() * size)-size; //Integer pageendNo = (setCon.getPageNumber() * size)>noOfRecords ? noOfRecords :(setCon.getPageNumber() * size-1); Integer addNo = 0; //update by rentx 2021-2-26 start System.debug('consumableorderdetailsSelectRecords = ' + consumableorderdetailsSelectRecords); for (ConsumableorderdetailsInfo info : consumableorderdetailsSelectRecords) { Consumable_Orderdetails__c orderdetails1 = new Consumable_Orderdetails__c(); if ( (info.hospitalSpecialOffer && selectedIdMap.containsKey(info.Prod.Id + 'ishos')) || (info.hospitalSpecialOffer == false && selectedIdMap.containsKey(info.Prod.Id + 'nothos')) ) { addNo++; } else { if (info.check == false) { info.orderdetails1 = orderdetails1; } pageRecords.add(info); addNo++; } } System.debug('pageRecords 2 = ' + pageRecords); System.debug('zhj5'); System.debug('pageRecords = ' + pageRecords); return pageRecords; } public static List<ConsumableorderdetailsInfo> makepagerecordsLwc() { List<ConsumableorderdetailsInfoLwc> reSetLwc = new List<ConsumableorderdetailsInfoLwc>(); Map<String, String> selectedIdMap = new Map<String, String>(); System.debug('makepagerecordsLwc pageRecordsLwc = ' + pageRecordsLwc); //取出选择的产品 if (pageRecordsLwc != null) { for (ConsumableorderdetailsInfoLwc ass : pageRecordsLwc) { System.debug('ass.check = ' + ass.check); if (ass.check == true) { if (ass.hospitalSpecialOffer == true) { selectedIdMap.put(ass.Prod.Id + 'ishos', ass.Prod.Id); } else { selectedIdMap.put(ass.Prod.Id + 'nothos', ass.Prod.Id); } reSetLwc.add(ass); } } } System.debug('reSetLwc = ' + reSetLwc); System.debug('selectedIdMap = ' + selectedIdMap); pageRecords = new List<ConsumableorderdetailsInfo>(); if (editAble && String.isBlank(arriveorder)) { List<ConsumableorderdetailsInfo> reSet = new List<ConsumableorderdetailsInfo>(); for(ConsumableorderdetailsInfoLwc assLwc : reSetLwc){ ConsumableorderdetailsInfo ci = new ConsumableorderdetailsInfo(); ci.check = assLwc.check; ci.oldCheck = assLwc.oldCheck; ci.orderdetails1 = assLwc.orderdetails1; ci.orderdetails2 = assLwc.orderdetails2; ci.Prod = assLwc.Prod; ci.Boxnumber = assLwc.Boxnumber; ci.Piecenumber = assLwc.Piecenumber; ci.allnumber = assLwc.allnumber; ci.oldConsumableCount = assLwc.oldConsumableCount; ci.canSelect = assLwc.canSelect; ci.sortBy = assLwc.sortBy; ci.packinglist = assLwc.packinglist; ci.approbation_No = assLwc.approbation_No; ci.expiration_Date = assLwc.expiration_Date; ci.boxorpiecein = assLwc.boxorpiecein; ci.boxorpiece = assLwc.boxorpiece; ci.boxorpieceMap = assLwc.boxorpieceMap; ci.concc = assLwc.concc; ci.BoxPiece = assLwc.BoxPiece; ci.hospitalSpecialOffer = assLwc.hospitalSpecialOffer; ci.hosPro = assLwc.hosPro; reSet.add(ci); } pageRecords = reSet; } //Integer pagestartNo = (setCon.getPageNumber() * size)-size; //Integer pageendNo = (setCon.getPageNumber() * size)>noOfRecords ? noOfRecords :(setCon.getPageNumber() * size-1); Integer addNo = 0; //update by rentx 2021-2-26 start System.debug('consumableorderdetailsSelectRecords = ' + consumableorderdetailsSelectRecords); for (ConsumableorderdetailsInfo info : consumableorderdetailsSelectRecords) { Consumable_Orderdetails__c orderdetails1 = new Consumable_Orderdetails__c(); if ( (info.hospitalSpecialOffer && selectedIdMap.containsKey(info.Prod.Id + 'ishos')) || (info.hospitalSpecialOffer == false && selectedIdMap.containsKey(info.Prod.Id + 'nothos')) ) { addNo++; } else { if (info.check == false) { info.orderdetails1 = orderdetails1; } pageRecords.add(info); addNo++; } } System.debug('pageRecords = ' + pageRecords); return pageRecords; } // 保存按钮 @AuraEnabled public static ResponseBodyLWC save(Consumable_order__c cocLwc,String hospitalInfoLwc,String hospitalNameLwc,String secondaryDistributor,List<ConsumableorderdetailsInfoLwc> pageRecordsLwc,String accountid,String ESetId,List<ConsumableorderdetailsInfo> consumableproductdetailsRecordsLwc) { System.debug('cocLwc = ' + cocLwc); coc = cocLwc; HospitalInfo = hospitalInfoLwc; HospitalName = hospitalNameLwc; SecondDealer = secondaryDistributor; pageRecordsLwc = pageRecordsLwc; consumableproductdetailsRecords = consumableproductdetailsRecordsLwc; ResponseBodyLWC res = new ResponseBodyLWC(); Map<String, object> data = new Map<String, object>(); res.entity = data; //订单信息确认 if(coc.SummonsForDirction__c ==''||coc.SummonsForDirction__c == null){ // coc.SummonsForDirction__c.addError('请输入指示单目的。'); // return null; return new ResponseBodyLWC('Error',500, '请输入指示单目的。', ''); } else if(coc.SummonsForDirction__c =='直接销售给医院'){ if(String.isBlank(HospitalInfo) || String.isBlank(HospitalName)){ // coc.addError('请输入医院。'); // return null; return new ResponseBodyLWC('Error',500, '请输入医院。', ''); } if(String.isBlank(coc.Order_ForCustomerText__c)){ // coc.Order_ForCustomerText__c.addError('请输入科室。'); // return null; return new ResponseBodyLWC('Error',500, '请输入科室。', ''); } else if(String.isNotBlank(SecondDealer) || String.isNotBlank(coc.Order_ForDealerText__c)){ // coc.addError('不需要二级经销商和经销商(录入)信息。' ); // return null; return new ResponseBodyLWC('Error',500, '不需要二级经销商和经销商(录入)信息。', ''); } }else if(coc.SummonsForDirction__c =='医院试用'){ if(String.isBlank(HospitalInfo) || String.isBlank(HospitalName)){ // coc.addError('请输入医院。'); // return null; return new ResponseBodyLWC('Error',500, '请输入医院。', ''); } if(String.isBlank(coc.Order_ForCustomerText__c)){ // coc.Order_ForCustomerText__c.addError('请输入科室。'); // return null; return new ResponseBodyLWC('Error',500, '请输入科室。', ''); } } else if(coc.SummonsForDirction__c =='销售给二级经销商'){ if(String.isBlank(SecondDealer) && String.isBlank(coc.Order_ForDealerText__c)){ // coc.addError('必须输入二级经销商或经销商(录入)。'); // return null; return new ResponseBodyLWC('Error',500, '必须输入二级经销商或经销商(录入)。', ''); } if(String.isBlank(HospitalInfo) || String.isBlank(HospitalName)){ // coc.addError('请输入医院。'); // return null; return new ResponseBodyLWC('Error',500, '请输入医院。', ''); } if(String.isBlank(coc.Order_ForCustomerText__c)){ // coc.Order_ForCustomerText__c.addError('请输入科室。'); // return null; return new ResponseBodyLWC('Error',500, '请输入科室。', ''); } } else if(coc.SummonsForDirction__c =='互相调货'){ if(String.isNotBlank(HospitalInfo) || String.isNotBlank(HospitalName)){ // coc.addError('不需要输入医院。'); // return null; return new ResponseBodyLWC('Error',500, '不需要输入医院。', ''); } if(String.isNotBlank(coc.Order_ForCustomerText__c)){ // coc.Order_ForCustomerText__c.addError('不需要输入科室。'); // return null; return new ResponseBodyLWC('Error',500, '不需要输入科室。', ''); } if(String.isBlank(SecondDealer) && String.isBlank(coc.Order_ForDealerText__c)){ // coc.addError('必须输入二级经销商或经销商(录入)。'); // return null; return new ResponseBodyLWC('Error',500, '必须输入二级经销商或经销商(录入)。', ''); } } Integer isHos = 0; Integer FLG = 0; Integer Count = 0; for(ConsumableorderdetailsInfoLwc CheckCount : pageRecordsLwc) { FLG = FLG + 1; if(CheckCount.check == false){ Count = Count + 1; }else{ //add by rentx if (CheckCount.hospitalSpecialOffer) { isHos = isHos+1; } //add by rentx } } if(Count == FLG){ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '请选择所需消耗品')); // return null; return new ResponseBodyLWC('Error',500, '请选择所需消耗品', ''); } // gzw 注释 判断提前 20210308 //checkOutPattern(); //根据用户选中的产品给 出库单上的是否医院特价出库字段赋值 Integer isHosCheckOutPattern = 0; for(ConsumableorderdetailsInfoLwc CheckCount : pageRecordsLwc) { if (CheckCount.check == true && CheckCount.hospitalSpecialOffer == true) { isHosCheckOutPattern = isHosCheckOutPattern +1; } } if (isHosCheckOutPattern > 0) { coc.OutPattern__c = true; }else{ coc.OutPattern__c = false; } // add by rentx 2021-3-10 start //特价医院出库非本医院维护的特价商品时,报错 非特价医院出库维护在医院特价关系表的产品时 报错 if(coc.SummonsForDirction__c !='互相调货'){ //非特价医院出库特价产品时 报错(当前经销商下没有特价医院除外) List<hospitalprice__c> hopList = [select id,hospital__c,product__c from hospitalprice__c where account__c = :accountid]; //经销商对应医院下的所有特价产品 Map<String,String> proMap = new Map<String,String>(); //经销商下的所有特价产品 Map<String,String> allProMap = new Map<String,String>(); if (hopList != null && hopList.size() > 0) { Boolean flag = false; if (HospitalInfo != null && HospitalInfo != '') { for (hospitalprice__c hp : hopList) { allProMap.put(hp.product__c, ''); //如果当前 医院特价关系中的医院对应出库单上出库的医院,则放产品id到map if (hp.hospital__c == HospitalInfo) { flag = true; proMap.put(hp.product__c, ''); } } } for(ConsumableorderdetailsInfoLwc ass : pageRecordsLwc){ if (ass.check == true) { //判断选中的医院特价产品 if (ass.hospitalSpecialOffer == true) { //用户选中了当前医院下的特价产品 if (proMap.containsKey(ass.Prod.Id)) { continue; //用户选中了没有维护特价医院的特价产品 }else if (!allProMap.containsKey(ass.Prod.Id)) { continue; }else{ //用户选中非当前医院维护的特价产品 // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '当前医院没有维护 消耗品:'+ ass.Prod.Name__c +' 的特价')); // return null; return new ResponseBodyLWC('Error',500, '当前医院没有维护 消耗品:' + ass.Prod.Name__c + '的特价', ''); } }//非医院特价产品可以出库给任意医院,所以不需要判断 } } } }else{ //如果是互相调货,判断 经销商(录入) 是否维护了 当前选中的特价产品 List<hospitalprice__c> hopList = [select id,hospital__c,product__c from hospitalprice__c where account__c = :coc.Order_ForDealerTextID__c]; Map<Id,String> proMap = new Map<Id,String>(); if (hopList != null && hopList.size() > 0) { for (hospitalprice__c hpc : hopList) { proMap.put(hpc.product__c, ''); } String proStr = ''; for(ConsumableorderdetailsInfoLwc ass : pageRecordsLwc){ if (ass.check == true) { if (ass.hospitalSpecialOffer == true) { if (!proMap.containsKey(ass.Prod.Id)) { proStr += ass.Prod.Name__c+','; } } } } if (proStr != '') { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '经销商:'+coc.Order_ForDealerText__c +' 没有消耗品:'+proStr.substring(0,proStr.length()-1) + ' 的特价')); // return null; return new ResponseBodyLWC('Error',500, '经销商:' + coc.Order_ForDealerText__c + ' 没有消耗品:' + proStr.substring(0,proStr.length()-1) + ' 的特价', ''); } } } // checkOutPattern(); Consumable_order__c p = new Consumable_order__c(); List<Consumable_orderdetails__c> Ins = New List<Consumable_orderdetails__c>(); List<Consumable_order_details2__c> InsProduct = New List<Consumable_order_details2__c>(); Savepoint sp = Database.setSavepoint(); // try { //新建订单时 if(String.isEmpty(ESetId)){ p.Name = '*'; p.Order_type__c = '传票'; p.Order_ProType__c = agencyProType; if(coc.SummonsStatus_c__c ==null||String.isBlank(coc.SummonsStatus_c__c))coc.SummonsStatus_c__c ='草案中'; // update strat by vivek 2019-7-12 p.NoConfirmedPrice__c = coc.NoConfirmedPrice__c; // update end by vivek 2019-7-12 p.SummonsStatus_c__c = coc.SummonsStatus_c__c; if(coc.Arrive_Order__c != null){ p.Arrive_Order__c = coc.Arrive_Order__c; } p.Offers_Price__c = coc.Offers_Price__c; p.Dealer_Info__c = accountid; if(String.isBlank(SecondDealer)){ p.Order_ForHospital__c =String.isNotBlank(HospitalInfo) ? HospitalInfo : null; p.Order_ForCustomerText__c = coc.Order_ForCustomerText__c; }else { p.Order_ForHospital__c = String.isNotBlank(HospitalInfo) ? HospitalInfo : null; p.Order_ForCustomerText__c = coc.Order_ForCustomerText__c; p.Order_ForDealer__c = SecondDealer; } P.Order_ForDealerText__c = coc.Order_ForDealerText__c; P.Order_ForDealerTextID__c = coc.Order_ForDealerTextID__c; p.Order_date__c = coc.Order_date__c; p.SummonsForDirction__c = coc.SummonsForDirction__c; p.RecordTypeid = System.Label.RT_ConOrder_Outboundorder; // update start by vivek 2019-7-15 p.NoConfirmedPrice__c = coc.NoConfirmedPrice__c; // update end by vivek 2019-7-15 //add by rentx p.OutPattern__c = coc.OutPattern__c; //add by rentx //Map<String,String> ProductNewMap = new Map<String, String>(); for(ConsumableorderdetailsInfoLwc ass : pageRecordsLwc){ if(ass.check == true){ if(ass.orderdetails1.Delivery_List_RMB__c < 0){ // ass.orderdetails1.Delivery_List_RMB__c.addError('请输入正确的出货单价 (元)。'); // return null; return new ResponseBodyLWC('Error',500, '请输入正确的出货单价 (元)。', ''); } if(ass.orderdetails1.Delivery_List_RMB__c == null && coc.SummonsForDirction__c !='医院试用'){ // ass.orderdetails1.Delivery_List_RMB__c.addError('请输入出货单价 (元)。'); // return null; return new ResponseBodyLWC('Error',500, '请输入正确的出货单价 (元)。', ''); } if(ass.orderdetails1.Delivery_List_RMB__c == 0 && (coc.SummonsForDirction__c =='销售给二级经销商' || coc.SummonsForDirction__c =='直接销售给医院')){ // ass.orderdetails1.Delivery_List_RMB__c.addError('请输入出货单价 (元)。'); // return null; return new ResponseBodyLWC('Error',500, '请输入出货单价 (元)。', ''); } if(ass.orderdetails1.Shipment_Count__c == null ||ass.orderdetails1.Shipment_Count__c ==0){ // ass.orderdetails1.Shipment_Count__c.addError('请输入出货数量。'); // return null; return new ResponseBodyLWC('Error',500, '请输入出货数量。', ''); } if(ass.orderdetails1.Box_Piece__c == null ||ass.orderdetails1.Box_Piece__c ==''){ // ass.orderdetails1.Box_Piece__c.addError('请输入单位。'); // return null; return new ResponseBodyLWC('Error',500, '请输入单位。', ''); } if(ass.orderdetails1.Box_Piece__c == '盒'){ if(ass.orderdetails1.Shipment_Count__c > ass.Boxnumber){ //ass.orderdetails1.Shipment_Count__c.addError('库存不足'); if(ass.oldCheck == false){ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '消耗品'+ ass.Prod.Name__c + '库存不足')); return new ResponseBodyLWC('Error',500, '消耗品'+ ass.Prod.Name__c + '库存不足', ''); }else{ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '消耗品'+ ass.orderdetails1.Consumable_Product__r.Name__c + '库存不足')); return new ResponseBodyLWC('Error',500, '消耗品'+ ass.orderdetails1.Consumable_Product__r.Name__c + '库存不足', ''); } } }else if(ass.orderdetails1.Box_Piece__c == '个'){ if(ass.orderdetails1.Shipment_Count__c > ass.Piecenumber){ //ass.orderdetails1.Shipment_Count__c.addError('库存不足'); if(ass.oldCheck == false){ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '消耗品'+ ass.Prod.Name__c + '库存不足')); return new ResponseBodyLWC('Error',500, '消耗品'+ ass.Prod.Name__c + '库存不足', ''); }else{ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '消耗品'+ ass.orderdetails1.Consumable_Product__r.Name__c + '库存不足')); return new ResponseBodyLWC('Error',500, '消耗品'+ ass.orderdetails1.Consumable_Product__r.Name__c + '库存不足', ''); } } } } } insert p; ESetId = p.id; List<Consumable_order__c> detailName = new List<Consumable_order__c>(); detailName = [SELECT id,Name FROM Consumable_order__c WHERE id =:ESetId]; Integer i = 1; for (ConsumableorderdetailsInfoLwc ass : pageRecordsLwc) { if(ass.check == true){ Consumable_orderdetails__c InsAfterDel = new Consumable_orderdetails__c(); String str = string.valueOf(i); if(str.length() == 1){ str = '0' + str; } InsAfterDel.Name = detailName[0].name + '-'+ str; InsAfterDel.Shipment_Count__c = ass.orderdetails1.Shipment_Count__c; InsAfterDel.Consumable_order__c = p.id; InsAfterDel.Consumable_Product__c = ass.Prod.id; InsAfterDel.Intra_Trade_List_RMB__c =ass.Prod.Intra_Trade_List_RMB__c; InsAfterDel.Delivery_List_RMB__c = ass.orderdetails1.Delivery_List_RMB__c; // TODO 默认 盒 ,需要修正 InsAfterDel.Box_Piece__c = ass.orderdetails1.Box_Piece__c; InsAfterDel.Out_unit__c = ass.orderdetails1.Box_Piece__c; //InsAfterDel.Unitprice_To_agency__c = ass.orderdetails1.Unitprice_To_agency__c; InsAfterDel.Dealer_Custom_Price__c = ass.orderdetails1.Dealer_Custom_Price__c; InsAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail1_Order; //add by rentx 2021-2-26 start InsAfterDel.isOutPattern__c = ass.hospitalSpecialOffer; //add by rentx 2021-2-26 end i++; Ins.add(InsAfterDel); } } // 如果 出库单 和 OCM发货Header连 的话,发货的Detail2 Copy到 出库单的Detail2里 if (getExistarrive()) { for (ConsumableorderdetailsInfo ass : consumableproductdetailsRecords) { //BlockForP; Consumable_order_details2__c InsProductDet = new Consumable_order_details2__c(); InsProductDet.Id = ass.orderdetails2.Id; InsProductDet.Consumable_ZS_order__c = p.id; i++; InsProduct.add(InsProductDet); } } if(Ins.size()>0){ insert Ins; } if(InsProduct.size() >0){ ControllerUtil.updateOrderDetailsSatus(InsProduct); } } //修改之后 保存订单 else if(ESetId != null || ESetId.length() >0 ){ List<Consumable_order__c> cocinfo = New List<Consumable_order__c>(); // update start by vivek 2019-7-15 add "NoConfirmedPrice__c" in select cocinfo = [SELECT Id, Name, SummonsStatus_c__c, NoConfirmedPrice__c, Dealer_Info__c, Order_ForHospital__c, SummonsForDirction__c FROM Consumable_order__c WHERE Id =:ESetId]; // update end by vivek 2019-7-15 if (cocinfo.size()>0){ p = cocinfo[0]; } p.Name = coc.Name; p.Dealer_Info__c = accountid; p.Order_ProType__c = agencyProType; if(SecondDealer == null){ p.Order_ForHospital__c = String.isNotBlank(HospitalInfo) ? HospitalInfo : null; p.Order_ForCustomerText__c = coc.Order_ForCustomerText__c; p.Order_ForDealer__c = SecondDealer; }else { p.Order_ForHospital__c = String.isNotBlank(HospitalInfo) ? HospitalInfo : null; p.Order_ForCustomerText__c = coc.Order_ForCustomerText__c; p.Order_ForDealer__c = SecondDealer; } P.Order_ForDealerText__c = coc.Order_ForDealerText__c; P.Order_ForDealerTextID__c = coc.Order_ForDealerTextID__c; p.Order_date__c = coc.Order_date__c; p.SummonsForDirction__c = coc.SummonsForDirction__c; //add by rentx p.OutPattern__c = coc.OutPattern__c; // update start by vivek 2019-7-15 if(p.SummonsStatus_c__c== '价格未定'){ p.NoConfirmedPrice__c = false; p.SummonsStatus_c__c= '已完成'; }else{ p.SummonsStatus_c__c = '草案中'; } // p.SummonsStatus_c__c = '草案中'; // update end by vivek 2019-7-15 Integer i = 1; //Map<String,String> ProductOldMap = new Map<String, String>(); for (ConsumableorderdetailsInfoLwc ass : pageRecordsLwc) { if(ass.check == true){ if(ass.orderdetails1.Delivery_List_RMB__c < 0){ // ass.orderdetails1.Delivery_List_RMB__c.addError('请输入正确的出货单价 (元)。'); // return null; return new ResponseBodyLWC('Error',500, '请输入正确的出货单价 (元)。', ''); } Consumable_orderdetails__c InsAfterDel = new Consumable_orderdetails__c(); if(ass.orderdetails1.Delivery_List_RMB__c == null && coc.SummonsForDirction__c !='医院试用'){ // ass.orderdetails1.Delivery_List_RMB__c.addError('请输入出货单价 (元)。'); // return null; return new ResponseBodyLWC('Error',500, '请输入出货单价 (元)。', ''); } if(ass.orderdetails1.Delivery_List_RMB__c == 0 && (coc.SummonsForDirction__c =='销售给二级经销商' || coc.SummonsForDirction__c =='直接销售给医院')){ // ass.orderdetails1.Delivery_List_RMB__c.addError('请输入出货单价 (元)。'); // return null; return new ResponseBodyLWC('Error',500, '请输入出货单价 (元)。', ''); } if(ass.orderdetails1.Box_Piece__c == null ||ass.orderdetails1.Box_Piece__c ==''){ // ass.orderdetails1.Box_Piece__c.addError('请输入单位。'); // return null; return new ResponseBodyLWC('Error',500, '请输入单位。', ''); } if(ass.orderdetails1.Box_Piece__c == '盒'){ if(ass.orderdetails1.Shipment_Count__c > ass.Boxnumber){ //ass.orderdetails1.Shipment_Count__c.addError('库存不足'); if(ass.oldCheck == false){ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '消耗品'+ ass.Prod.Name__c + '库存不足')); return new ResponseBodyLWC('Error',500, '消耗品'+ ass.Prod.Name__c + '库存不足', ''); }else{ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '消耗品'+ ass.orderdetails1.Consumable_Product__r.Name__c + '库存不足')); return new ResponseBodyLWC('Error',500, '消耗品'+ ass.orderdetails1.Consumable_Product__r.Name__c + '库存不足', ''); } } }else if(ass.orderdetails1.Box_Piece__c == '个'){ if(ass.orderdetails1.Shipment_Count__c > ass.Piecenumber){ if(ass.oldCheck == false){ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '消耗品'+ ass.Prod.Name__c + '库存不足')); return new ResponseBodyLWC('Error',500, '消耗品'+ ass.Prod.Name__c + '库存不足', ''); }else{ //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '消耗品'+ ass.orderdetails1.Consumable_Product__r.Name__c + '库存不足')); return new ResponseBodyLWC('Error',500, '消耗品'+ ass.orderdetails1.Consumable_Product__r.Name__c + '库存不足', ''); } } } if(ass.orderdetails1.Shipment_Count__c == null||ass.orderdetails1.Shipment_Count__c==0){ // ass.orderdetails1.Shipment_Count__c.addError('请输入出货数量。'); // return null; return new ResponseBodyLWC('Error',500, '请输入出货数量。', ''); }else{ String str = string.valueOf(i); if(str.length() == 1){ str = '0' + str; } InsAfterDel.Name = p.name + '-'+ str; InsAfterDel.Shipment_Count__c = ass.orderdetails1.Shipment_Count__c; InsAfterDel.Consumable_order__c = ESetId; InsAfterDel.Consumable_Product__c = ass.Prod.id; InsAfterDel.Intra_Trade_List_RMB__c =ass.Prod.Intra_Trade_List_RMB__c; InsAfterDel.Delivery_List_RMB__c = ass.orderdetails1.Delivery_List_RMB__c; InsAfterDel.Box_Piece__c = ass.orderdetails1.Box_Piece__c; InsAfterDel.Out_unit__c = ass.orderdetails1.Box_Piece__c; //InsAfterDel.Unitprice_To_agency__c = ass.orderdetails1.Unitprice_To_agency__c; InsAfterDel.Dealer_Custom_Price__c = ass.orderdetails1.Dealer_Custom_Price__c; InsAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail1_Order; //add by rentx 2021-2-26 start InsAfterDel.isOutPattern__c = ass.hospitalSpecialOffer; //add by rentx 2021-2-26 end i++; Ins.add(InsAfterDel); } } } update p; List<Consumable_orderdetails__c> qs = New List<Consumable_orderdetails__c>(); qs = [SELECT Id FROM Consumable_orderdetails__c WHERE Consumable_order__c =:ESetId]; if (qs.size()>0){ delete qs; } if(Ins.size()>0){ insert Ins; } } // }catch (Exception ex) { // Database.rollback(sp); // // ApexPages.addMessages(ex); // // return null; // //return new ResponseBodyLWC('Error',500, ex.getMessage(), ''); // return new ResponseBodyLWC('Error',500, JSON.serialize(ex), ''); // } data.put('ESetId',ESetId); res.status = 'Success'; res.code = 200; System.debug('res = ' + res); return res; } public static void checkOutPattern(){ //根据用户选中的产品给 出库单上的是否医院特价出库字段赋值 Integer isHos = 0; for(ConsumableorderdetailsInfo CheckCount : pageRecords) { if (CheckCount.check == true && CheckCount.hospitalSpecialOffer == true) { ishos = ishos +1; } } if (isHos > 0) { coc.OutPattern__c = true; }else{ coc.OutPattern__c = false; } } //打印PDF @AuraEnabled public static ResponseBodyLWC PraseToPDF(Consumable_order__c cocLwc,String ESetId){ System.debug('cocLwc = ' + cocLwc); System.debug('ESetId = ' + ESetId); coc = cocLwc; ResponseBodyLWC res = new ResponseBodyLWC(); Map<String, object> data = new Map<String, object>(); res.entity = data; if(coc.SummonsStatus_c__c =='批准'){ Consumable_order__c P = new Consumable_order__c(); List<Consumable_order__c> cocinfo = New List<Consumable_order__c>(); // update start by vivek 2019-7-15 add “NoConfirmedPrice__c” in select cocinfo = [SELECT Id,Name,SummonsStatus_c__c,NoConfirmedPrice__c,Dealer_Info__c,Order_ForHospital__c,SummonsForDirction__c,Billed_Status__c FROM Consumable_order__c WHERE Id =:ESetId]; // update end by vivek 2019-7-15 if (cocinfo.size()>0){ p = cocinfo[0]; } p.SummonsStatus_c__c = '出库单已打印'; update p; } data.put('ESetId',ESetId); res.status = 'Success'; res.code = 200; System.debug('res = ' + res); return res; } // Data Bean class ConsumableorderdetailsInfo implements Comparable { @AuraEnabled public Boolean check { get; set; } @AuraEnabled public Boolean oldCheck { get; set; } @AuraEnabled public Consumable_Orderdetails__c orderdetails1 { get; set; } @AuraEnabled public Consumable_order_details2__c orderdetails2 { get; set; } @AuraEnabled public Product2__c Prod { get; set; } @AuraEnabled public Decimal Boxnumber { get; set; } @AuraEnabled public Decimal Piecenumber { get; set; } @AuraEnabled public Decimal allnumber { get; set; } @AuraEnabled public Decimal oldConsumableCount { get; set; } @AuraEnabled public Boolean canSelect { get; set; } @AuraEnabled public Boolean sortBy { get; set; } @AuraEnabled public Integer packinglist { get; set; } @AuraEnabled public String approbation_No { get; set; } @AuraEnabled public Date expiration_Date { get; set; } @AuraEnabled public String boxorpiecein { get; set; } public List<SelectOption> boxorpiece { get; set; } @AuraEnabled public Map<String, String> boxorpieceMap { get; set; } @AuraEnabled public Attachment concc { get; set; } @AuraEnabled public String BoxPiece { get; set; } @AuraEnabled public Boolean hospitalSpecialOffer { get; set; } @AuraEnabled public Boolean hosPro { get; set; } public ConsumableorderdetailsInfo(){} public ConsumableorderdetailsInfo(Consumable_Orderdetails__c e) { check = true; oldCheck = true; orderdetails1 = e; orderdetails2 = new Consumable_order_details2__c(); Prod = e.Consumable_Product__r; oldConsumableCount = e.Shipment_Count__c; canSelect = true; allnumber = 0; Boxnumber = 0; Piecenumber = 0; BoxPiece = e.Box_Piece__c; boxorpiece = new List<SelectOption>(); boxorpiece.add(new SelectOption('盒', '盒')); boxorpiece.add(new SelectOption('个', '个')); boxorpieceMap = new Map<String, String>(); boxorpieceMap.put('盒', '盒'); boxorpieceMap.put('个', '个'); hospitalSpecialOffer = false; hosPro = false; } // 消耗品发货明细 public ConsumableorderdetailsInfo(Consumable_order_details2__c e) { check = true; oldCheck = true; orderdetails1 = new Consumable_Orderdetails__c(); orderdetails2 = e; Prod = e.Consumable_Product__r; canSelect = true; allnumber = 0; Boxnumber = 0; Piecenumber = 0; //boxorpiece = new List<SelectOption>(); //boxorpiece.add(new SelectOption('盒', '盒')); //boxorpiece.add(new SelectOption('个', '个')); hospitalSpecialOffer = false; hosPro = false; } //附件 public ConsumableorderdetailsInfo(Attachment e) { concc = e; hospitalSpecialOffer = false; hosPro = false; } public ConsumableorderdetailsInfo(Product2__c e) { check = false; oldCheck = false; orderdetails1 = new Consumable_Orderdetails__c(); orderdetails2 = new Consumable_order_details2__c(); Prod = e; //oldConsumableCount = null; canSelect = true; allnumber = 0; Boxnumber = 0; Piecenumber = 0; orderdetails1.Box_Piece__c = '盒'; boxorpiece = new List<SelectOption>(); boxorpiece.add(new SelectOption('盒', '盒')); boxorpiece.add(new SelectOption('个', '个')); boxorpieceMap = new Map<String, String>(); boxorpieceMap.put('盒', '盒'); boxorpieceMap.put('个', '个'); hospitalSpecialOffer = false; hosPro = false; } // 排序 public Integer compareTo(Object compareTo) { ConsumableorderdetailsInfo compareToorderdetails1 = (ConsumableorderdetailsInfo) compareTo; Integer returnValue = 0; if (sortBy == false) { if (Boxnumber > compareToorderdetails1.Boxnumber) { returnValue = -1; } else if (Boxnumber < compareToorderdetails1.Boxnumber) { returnValue = 1; } return returnValue; } else { if (Boxnumber > compareToorderdetails1.Boxnumber) { returnValue = 1; } else if (Boxnumber < compareToorderdetails1.Boxnumber) { returnValue = -1; } return returnValue; } } } class ConsumableorderdetailsInfoLwc{ @AuraEnabled public Boolean check { get; set; } @AuraEnabled public Boolean oldCheck { get; set; } @AuraEnabled public Consumable_Orderdetails__c orderdetails1 { get; set; } @AuraEnabled public Consumable_order_details2__c orderdetails2 { get; set; } @AuraEnabled public Product2__c Prod { get; set; } @AuraEnabled public Decimal Boxnumber { get; set; } @AuraEnabled public Decimal Piecenumber { get; set; } @AuraEnabled public Decimal allnumber { get; set; } @AuraEnabled public Decimal oldConsumableCount { get; set; } @AuraEnabled public Boolean canSelect { get; set; } @AuraEnabled public Boolean sortBy { get; set; } @AuraEnabled public Integer packinglist { get; set; } @AuraEnabled public String approbation_No { get; set; } @AuraEnabled public Date expiration_Date { get; set; } @AuraEnabled public String boxorpiecein { get; set; } public List<SelectOption> boxorpiece { get; set; } @AuraEnabled public Map<String, String> boxorpieceMap { get; set; } @AuraEnabled public Attachment concc { get; set; } @AuraEnabled public String BoxPiece { get; set; } @AuraEnabled public Boolean hospitalSpecialOffer { get; set; } @AuraEnabled public Boolean hosPro { get; set; } @AuraEnabled public List<Map<String,String>> unitOptions{ get; set; } @AuraEnabled public String unitValue{ get; set; } @AuraEnabled public Integer shipmentNumber{ get; set; } @AuraEnabled public Decimal shippingUnitPrice{ get; set; } @AuraEnabled public String recordId{ get; set; } @AuraEnabled public String Id{ get; set; } @AuraEnabled public String Name{ get; set; } @AuraEnabled public String Category3{ get; set; } @AuraEnabled public String Category4{ get; set; } @AuraEnabled public String Category5{ get; set; } } } force-app/main/default/classes/LexSummonsCreatController.cls-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>56.0</apiVersion> <status>Active</status> </ApexClass> force-app/main/default/classes/NFMUtil.cls
@@ -1321,9 +1321,7 @@ request.setEndpoint(hostUrl + '/api/nfm/reCallNFM624Batch?nfm624RequestId=' + GeDataList[0].nfm624RequestId + '&rowDataId=' + rowDataId); request.setMethod('GET'); request.setHeader('pi-token',documentPI.token); request.setTimeout(60000); HttpResponse response = http.send(request); System.debug('response = ' + response); System.debug('send batchSendToAWS624'); } //zhj batch 调用624接口的时候 需要调用AWS 2023-01-08 end @@ -1344,7 +1342,7 @@ System.debug('documentPI.token = ' + documentPI.token); request.setEndpoint(hostUrl + '/api/nfm/reCallNFM624?reCallNfm624RequestId=' + GeDataList[0].reCallNfm624RequestId + '&rowDataId=' + rowDataId); request.setMethod('GET'); request.setHeader('pi-token',documentPI.token); request.setHeader('pi-token',documentPI.token); HttpResponse response = http.send(request); System.debug('send againSendToAWS624'); } @@ -1377,74 +1375,6 @@ public static Integer ControllerUtil() { Integer i = 0; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; force-app/main/default/classes/PaginatedListControllerLwc.cls
New file @@ -0,0 +1,42 @@ public with sharing class PaginatedListControllerLwc { @AuraEnabled public static PaginatedAccounts getAccountsPaginated(Integer pageSize, Integer pageToken, String sortField, String sortOrder) { system.debug('init soql'+ String.valueOf(pageSize) + String.valueof(pageToken)); PaginatedAccounts paginatedAccounts = new PaginatedAccounts(); String paginatedQuery = 'SELECT Name, Type, Phone, NumberOfEmployees, Owner.Name' + ' FROM Account' + ' WITH SECURITY_ENFORCED'; system.debug('sort field:'+sortField + '--'+sortOrder); if(sortField != null && sortOrder !=null) { paginatedQuery += ' ORDER BY '+ sortField +' '+ sortOrder; } paginatedQuery += ' LIMIT ' + pageSize; paginatedQuery += ' OFFSET ' + pageToken; system.debug('SOQL:' + paginatedQuery); paginatedAccounts.records = Database.query(paginatedQuery); Integer totalCount = [SELECT COUNT() FROM Account]; paginatedAccounts.nextPageToken = (pageToken + pageSize < totalCount) ? pageToken + pageSize : null; paginatedAccounts.recordStart = pageToken + 1; paginatedAccounts.pageNumber = pageToken/pageSize + 1; Integer recordEnd = pageSize * paginatedAccounts.pageNumber; paginatedAccounts.recordEnd = totalCount >= recordEnd ? recordEnd : totalCount; paginatedAccounts.totalRecords = totalCount; return paginatedAccounts; } public class PaginatedAccounts { @AuraEnabled public List<Account> records; @AuraEnabled public Integer nextPageToken; @AuraEnabled public Integer pageNumber {get;set;} @AuraEnabled public Integer totalRecords {get;set;} @AuraEnabled public Integer recordStart {get;set;} @AuraEnabled public Integer recordEnd {get;set;} } } force-app/main/default/classes/PaginatedListControllerLwc.cls-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>54.0</apiVersion> <status>Active</status> </ApexClass> force-app/main/default/classes/SaleOrderController.cls
@@ -222,10 +222,12 @@ List<hospitalprice__c> hpList = [select id,hospital__c,product__c from hospitalprice__c where account__c = :accountid]; if (hpList!= null && hpList.size() > 0) { for (hospitalprice__c hp : hpList) { proIdMap.put((''+hp.product__c).subString(0,15)+'是', ''); if (hp.hospital__c ==coc.Order_ForHospital__c) { proHosMap.put((''+hp.product__c).subString(0,15)+'是', ''); } if(hp.product__c!=null && String.valueof(hp.product__c).length()>=15){//Add by Li Jun for issue fix 20230403 proIdMap.put((''+hp.product__c).subString(0,15)+'是', ''); if (hp.hospital__c ==coc.Order_ForHospital__c) { proHosMap.put((''+hp.product__c).subString(0,15)+'是', ''); } } } } force-app/main/default/classes/SampleLookupController.cls
New file @@ -0,0 +1,89 @@ public with sharing class SampleLookupController { private final static Integer MAX_RESULTS = 5; @AuraEnabled(cacheable=true scope='global') public static List<LookupSearchResult> search(String searchTerm, List<String> selectedIds) { // Prepare query parameters searchTerm += '*'; // Execute search query // List<List<SObject>> searchResults = [ // FIND :searchTerm // IN ALL FIELDS // RETURNING // Account(Id, Name, BillingCity WHERE id NOT IN :selectedIds), // Opportunity(Id, Name, StageName WHERE id NOT IN :selectedIds) // LIMIT :MAX_RESULTS // ]; // Prepare results List<LookupSearchResult> results = new List<LookupSearchResult>(); // Extract Accounts & convert them into LookupSearchResult String accountIcon = 'standard:account'; //Account[] accounts = (List<Account>) searchResults[0]; Account[] accounts = [select id,Name,CreatedDate,BillingCity from Account limit 5]; for (Account account : accounts) { String subtitle = account.BillingCity == null ? 'Account' : 'Account • ' + account.BillingCity; results.add(new LookupSearchResult(account.Id, 'Account', accountIcon, account.Name, subtitle)); } // Extract Opportunities & convert them into LookupSearchResult // String opptyIcon = 'standard:opportunity'; // Opportunity[] opptys = (List<Opportunity>) searchResults[1]; // for (Opportunity oppty : opptys) { // results.add( // new LookupSearchResult( // oppty.Id, // 'Opportunity', // opptyIcon, // oppty.Name, // 'Opportunity • ' + oppty.StageName // ) // ); // } // Optionnaly sort all results on title results.sort(); System.debug('results = ' + results); return results; } @AuraEnabled(cacheable=true scope='global') public static List<LookupSearchResult> getRecentlyViewed() { List<LookupSearchResult> results = new List<LookupSearchResult>(); // Get recently viewed records of type Account or Opportunity List<RecentlyViewed> recentRecords = [ SELECT Id, Name, Type FROM RecentlyViewed WHERE Type = 'Account' OR Type = 'Opportunity' ORDER BY LastViewedDate DESC LIMIT 5 ]; // Convert recent records into LookupSearchResult for (RecentlyViewed recentRecord : recentRecords) { if (recentRecord.Type == 'Account') { results.add( new LookupSearchResult( recentRecord.Id, 'Account', 'standard:account', recentRecord.Name, 'Account • ' + recentRecord.Name ) ); } else { results.add( new LookupSearchResult( recentRecord.Id, 'Opportunity', 'standard:opportunity', recentRecord.Name, 'Opportunity • ' + recentRecord.Name ) ); } } return results; } } force-app/main/default/classes/SampleLookupController.cls-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>57.0</apiVersion> <status>Active</status> </ApexClass> force-app/main/default/classes/TestClassByLiJun.cls
New file @@ -0,0 +1,5 @@ public without sharing class TestClassByLiJun { public TestClassByLiJun() { system.debug(Test.isRunningTest()); } } force-app/main/default/classes/TestClassByLiJun.cls-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>56.0</apiVersion> <status>Active</status> </ApexClass> force-app/main/default/lwc/customShippingUnitPriceComp/customShippingUnitPriceComp.html
New file @@ -0,0 +1,12 @@ <template> <lightning-input step="0.01" type="number" name="shipmentUnitPrice" label="deliveryOrderNo" variant="label-hidden" data-field="shipmentUnitPrice" value={shipmentUnitPrice} onblur={shipmentUnitPriceBlur} ></lightning-input> </template> force-app/main/default/lwc/customShippingUnitPriceComp/customShippingUnitPriceComp.js
New file @@ -0,0 +1,24 @@ import { LightningElement,api,track } from 'lwc'; export default class CustomShippingUnitPriceComp extends LightningElement { @api recordId; @track shipmentUnitPrice = 0.00; connectedCallback(){ console.log('CustomShippingUnitPriceComp recordId = ' + this.recordId); } shipmentUnitPriceBlur(event){ console.log('shipmentUnitPriceBlur') this.shipmentUnitPrice = event.target.value; this.dispatchEvent(new CustomEvent('shipmentunitprice', { composed: true, bubbles: true, cancelable: true, detail: { data: { shipmentunitprice: this.shipmentUnitPrice, recordId: this.recordId } } })); } } force-app/main/default/lwc/customShippingUnitPriceComp/customShippingUnitPriceComp.js-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>56.0</apiVersion> <isExposed>false</isExposed> </LightningComponentBundle> force-app/main/default/lwc/customUnitComp/customUnitComp.html
New file @@ -0,0 +1,13 @@ <!-- sldsValidatorIgnore --> <!-- sldsValidatorIgnore --> <template> <!-- <select id="citySel" class="selectUnit" onchange={handleDataChange} data-field="selectUnit"> <template for:each={unitOptions} for:item="uo"> <option value={uo.value} key={uo.value}>{uo.label}</option> </template> </select> --> <div class="picklist-container"> <lightning-combobox name="selectUnit" label="unit" value={unitValue} variant="label-hidden" onchange={handleDataChange} data-field="selectUnit" options={unitOptions}></lightning-combobox> </div> </template> force-app/main/default/lwc/customUnitComp/customUnitComp.js
New file @@ -0,0 +1,26 @@ import { LightningElement,api } from 'lwc'; export default class CustomUnitComp extends LightningElement { @api unitValue; @api unitOptions; @api recordId; connectedCallback(){ console.log('unitValue = ' + this.unitValue); console.log('unitOptions = ' + JSON.stringify(this.unitOptions)); console.log('recordId = ' + this.recordId); } handleDataChange(event){ console.log('dataChange' + event.target.value); this.dispatchEvent(new CustomEvent('unitchange', { composed: true, bubbles: true, cancelable: true, detail: { data: { unitValue: this.unitValue, recordId: this.recordId } } })); } } force-app/main/default/lwc/customUnitComp/customUnitComp.js-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>56.0</apiVersion> <isExposed>false</isExposed> </LightningComponentBundle> force-app/main/default/lwc/lexCustomLightningDatatable/customShipmentAmount.html
New file @@ -0,0 +1,7 @@ <template> <c-custom-shipment-Amount-comp shipment-amount={typeAttributes.shipmentAmount} record-id={typeAttributes.recordId}> </c-custom-shipment-Amount-comp> </template> force-app/main/default/lwc/lexCustomLightningDatatable/customShipmentNumber.html
New file @@ -0,0 +1,6 @@ <template> <c-custom-shipment-number-comp record-id={typeAttributes.recordId}> </c-custom-shipment-number-comp> </template> force-app/main/default/lwc/lexCustomLightningDatatable/customShippingUnitPrice.html
New file @@ -0,0 +1,6 @@ <template> <c-custom-shipping-unit-price-comp record-id={typeAttributes.recordId}> </c-custom-shipping-unit-price-comp> </template> force-app/main/default/lwc/lexCustomLightningDatatable/customUnit.html
New file @@ -0,0 +1,11 @@ <!-- sldsValidatorIgnore --> <!-- sldsValidatorIgnore --> <template> <c-custom-unit-comp unit-value={typeAttributes.unitValue} unit-options={typeAttributes.unitOptions} record-id={typeAttributes.recordId} onunitchange={handleDataChange} > </c-custom-unit-comp> </template> force-app/main/default/lwc/lexCustomLightningDatatable/lexCustomLightningDatatable.html
New file @@ -0,0 +1,3 @@ <template> </template> force-app/main/default/lwc/lexCustomLightningDatatable/lexCustomLightningDatatable.js
New file @@ -0,0 +1,33 @@ import LightningDatatable from 'lightning/datatable'; import customUnitTemplate from './customUnit.html'; import customShipmentNumberTemplate from './customShipmentNumber.html'; import customShippingUnitPriceTemplate from './customShippingUnitPrice.html'; import customShipmentAmountTemplate from './customShipmentAmount.html'; import { loadStyle } from 'lightning/platformResourceLoader'; import LexCustomDataTable from '@salesforce/resourceUrl/LexCustomDataTable'; export default class LexCustomLightningDatatable extends LightningDatatable { static customTypes = { customUnit: { template: customUnitTemplate, typeAttributes: ['unitValue', 'unitOptions', 'recordId'] }, customShipment: { template: customShipmentNumberTemplate, typeAttributes: ['recordId'] }, customShipmentUnitPrice: { template: customShippingUnitPriceTemplate, typeAttributes: ['recordId'] }, customShipmentAmount: { template: customShipmentAmountTemplate, typeAttributes: ['shipmentAmount', 'recordId'] } }; constructor() { super(); Promise.all([loadStyle(this, LexCustomDataTable)]).then(() => {}); } } force-app/main/default/lwc/lexCustomLightningDatatable/lexCustomLightningDatatable.js-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>56.0</apiVersion> <isExposed>false</isExposed> </LightningComponentBundle> force-app/main/default/lwc/lexInventoryCount/lexInventoryCount.html
New file @@ -0,0 +1,196 @@ <template> <template if:true={showcount}> <div style="border: 1px solid #D4D4D4;border-radius:5px;"> <div style="border-top: 3px solid #51606E;;border-bottom: 1px solid #D4D4D4;padding:3px;"> <div> <p style="font-size: 19px;float:left"><strong>库存盘点</strong></p> </div> <div style="margin-left:400px;"> <lightning-button label="盘点确认" title="盘点确认" onclick={saveConfirm}></lightning-button></td> </div> </div> <div style="padding:10px;"> <div style="border: 1px solid #D4D4D4;border-radius:5px;margin-bottom:7px;"> <div style="border-top: 3px solid #51606E;border-bottom: 1px solid #D4D4D4;padding:3px;"> <table> <colgroup> <col width="160px" /> <col width="100px" /> <col width="10px" /> <col width="70px" /> <col width="100px" /> <col width="10px" /> <col width="90px" /> <col width="100px" /> <col width="10px" /> <col width="85px" /> <col width="100px" /> <col width="10px" /> <col width="70px" /> <col width="100px" /> </colgroup> <tbody> <tr> <td></td> <td align="right">Barcode</td> <td style="width:600px"><lightning-textarea name="Barcode" label="" onchange={handleChange}></lightning-textarea></td> <td align="right"></td> <td></td> <td><lightning-button label="Barcode" title="Barcode录入" onclick={barcodeEntrys} style="width: 150px;"></lightning-button> </td> </tr> </tbody> </table> </div> </div> <div style="border: 1px solid #D4D4D4;border-radius:5px;margin-bottom:7px;"> <div style="border-top: 3px solid #51606E;border-bottom: 1px solid #D4D4D4;padding:3px;"> <p style="font-size: 16px;"><strong>在库商品库存一览</strong></p> </div> <div style="padding:10px;"> <div style="height: 300px;"> <template if:true={showTable}> <c-lex-custom-lightning-datatable key-field="ProdId" data={data} columns={columns} ondiffreasons={diffreasons} onrowselection={getSelectedRows} selected-rows={selectedRows}> </c-lex-custom-lightning-datatable> </template> <!-- 加载框 --> <div if:true={casesSpinner} class="slds-spinner_inline spinner-padding" style="margin-top:10px;"> <lightning-spinner variant="brand" alternative-text="Loading Cases" size="medium"> </lightning-spinner> </div> </div> </div> </div> </div> <div style="border: 1px solid #D4D4D4;border-radius:5px;margin-bottom:7px;margin-top:50px"> <div style="border-top: 3px solid #51606E;border-bottom: 1px solid #D4D4D4;padding:3px;"> <table> <tr> <td> <p style="font-size: 16px;"><strong>调整明细</strong></p> </td> <template if:true={showbutton}> <td align="center"> <lightning-button label="下载本次盘点库存变化明细" title="下载本次盘点库存变化明细" onclick={exportData} style="width: 150px;"></lightning-button></td> </template> </tr> </table> </div> <div style="padding:10px;"> <template if:true={showTable}> <c-lwc-datatable-utility records={codPageRecords} total-records={codPageRecords.length} columns={column} key-field="Id" show-search-box="true" max-row-selection={codPageRecords.length} onpaginatorchange={handlePaginatorChange}> </c-lwc-datatable-utility> </template> </div> </div> </div> </template> <template if:true={EditAble}> <div style="border: 1px solid #D4D4D4;border-radius:5px;"> <div style="border-top: 3px solid #51606E;;border-bottom: 1px solid #D4D4D4;padding:3px;"> <div style="border: 1px solid #D4D4D4;border-radius:5px;"> <div style="border-top: 3px solid #51606E;;border-bottom: 1px solid #D4D4D4;padding:6px;"> <p style="font-size: 19px;"><strong>盘点情况一览</strong></p> </div> <div class="acc-container"> <lightning-record-edit-form object-api-name="Consumable_order__c" record-id={conId}> <lightning-layout multiple-rows="true"> <!-- <template if:true={isSummonsFlag}> --> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="Name"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="Inventory_date__c"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> <!-- </template> --> </lightning-layout> </lightning-record-edit-form> </div> </div> </div> <lightning-accordion allow-multiple-sections-open class="slds-m-around_medium" active-section-name={activeSections}> <lightning-accordion-section name="dataExpand" label="盘点明细"> <table class="list" border="0" cellpadding="0" cellspacing="0" id="example"> <thead> <tr class="headerRow"> <th>消耗品名称</th> <th>库存</th> <th>盘点</th> <th>丢失</th> <th>寻回</th> <th>差异原因</th> </tr> </thead> <tbody> <template for:each={detailData} for:item="m"> <tr key={m.Prod.Name__c}> <td>{m.Prod.Name__c}</td> <td>{m.orderdetails1.Count_Sum__c}</td> <td>{m.orderdetails1.inventory_sum__c}</td> <td>{m.orderdetails1.Diff__c}</td> <td>{m.orderdetails1.Product_Refind__c}</td> <td>{m.orderdetails1.Lose_reason__c}</td> </tr> </template> </tbody> </table> </lightning-accordion-section> </lightning-accordion> <lightning-accordion allow-multiple-sections-open class="slds-m-around_medium" active-section-name={activeSections}> <lightning-accordion-section name="dataExpand" label="在库调整明细"> <table class="list" border="0" cellpadding="0" cellspacing="0" id="examples"> <thead> <tr class="headerRow"> <th>消耗品名称</th> <th>产品型号</th> <th>差异原因</th> <th>是否丢失</th> </tr> </thead> <tbody> <template for:each={adjustdata} for:item="m"> <tr key={m.Prod.Name__c}> <td>{m.Prod.Name__c}</td> <td>{m.Prod.Asset_Model_No__c}</td> <td>{m.orderdetails2.Lose_reason__c}</td> <td>{m.orderdetails1.Diff__c}</td> <td>{m.orderdetails1.Product_Refind__c}</td> <td>{m.orderdetails2.Lose_Flag__c}</td> </tr> </template> </tbody> </table> </lightning-accordion-section> </lightning-accordion> </div> </template> </template> force-app/main/default/lwc/lexInventoryCount/lexInventoryCount.js
New file @@ -0,0 +1,502 @@ import { LightningElement, wire, api, track } from 'lwc'; import oninit from '@salesforce/apex/LexInventoryController.init'; import barcodeEntry from '@salesforce/apex/LexInventoryController.searchConsumableorderdetails'; import saveConfirm from '@salesforce/apex/LexInventoryController.save'; import { ShowToastEvent } from 'lightning/platformShowToastEvent'; import { NavigationMixin } from 'lightning/navigation'; //库存盘点主页面数据 const columns = [ { label: '是否盘点', fieldName: 'iscount', type: 'checkbox', cellAttributes: { alignment: 'left' } }, { label: '消耗品名称', fieldName: 'Name__c', type: 'Name', cellAttributes: { alignment: 'left' } }, { label: '规格', fieldName: 'Packing_list_manual__c', hideDefaultActions: true }, { label: '单位', fieldName: 'boxPiece', hideDefaultActions: true }, { label: '有效期内库存', fieldName: 'limitCount', hideDefaultActions: true }, { label: '过期库存', fieldName: 'overlimitCount', hideDefaultActions: true, initialWidth: 100 }, { label: '盘点', fieldName: 'Pandian', hideDefaultActions: true, initialWidth: 100 }, { label: '丢失', fieldName: 'Diff', hideDefaultActions: true, initialWidth: 100 }, { label: '寻回 ', fieldName: 'refind', hideDefaultActions: true, initialWidth: 150 }, { label: '差异原因', // fieldName: "DiffReason", hideDefaultActions: true, type: 'customDiffReason', typeAttributes: { DiffReason: { fieldName: 'DiffReason' }, ProdId: { fieldName: 'ProdId' } } } ]; //调整明细 const column = [ { label: '消耗品名称', fieldName: 'Name__c', type: 'Name', cellAttributes: { alignment: 'left' } }, { label: '单位', fieldName: 'Box_Piece__c', hideDefaultActions: true }, { label: 'barcode', fieldName: 'Bar_Code__c', hideDefaultActions: true, initialWidth: 150 }, { label: '调整原因', fieldName: 'DiffReason', hideDefaultActions: true } ]; //盘点明细 const dcolumns = [ { label: '消耗品名称', fieldName: 'Name__c', type: 'Name', cellAttributes: { alignment: 'left' } }, { label: '库存', fieldName: 'Box_Piece__c', hideDefaultActions: true }, { label: '盘点', fieldName: 'Bar_Code__c', hideDefaultActions: true, initialWidth: 150 }, { label: '丢失', fieldName: 'DiffReason', hideDefaultActions: true }, { label: '寻回', fieldName: 'DiffReason', hideDefaultActions: true }, , { label: '差异原因', fieldName: 'DiffReason', hideDefaultActions: true } ]; //在库调整明细 const stockadjustcolumns = [ { label: '消耗品名称', fieldName: 'Name__c', type: 'Name', cellAttributes: { alignment: 'left' } }, { label: '产品型号', fieldName: 'Box_Piece__c', hideDefaultActions: true }, { label: '差异原因', fieldName: 'Bar_Code__c', hideDefaultActions: true, initialWidth: 150 }, { label: '是否丢失', fieldName: 'DiffReason', hideDefaultActions: true } ]; export default class LexInventoryCount extends NavigationMixin( LightningElement ) { columns = columns; column = column; stockadjustcolumns = stockadjustcolumns; dcolumns = dcolumns; @track data = []; @track codPageRecords = []; @track accountName; @track agencyProType; @track userWorkLocation; @track showTable = false; @track showbutton = false; @track barCode; @track ConsumableorderdetailsRecordsview = []; @track consumableorderdetailsRecords = []; @track showTable = false; @track barcode; @track showcount = true; @track iSinventory; @track numberDetail; //加载框 @track casesSpinner = true; //row @track selectedRows = []; //inventoryList @track isSummonsFlag; //展开栏 activeSections = ['dataExpand']; columnHeader = ['消耗品名称', '单位', 'barCode', '调整原因']; //确认一览 @track eSetId = ''; @track EditAble = false; @track selectedData; @track conId; @track detailData = []; @track adjustdata = []; //获取链接参数 getQueryString(name) { console.log('getQueryString name ' + name); let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'); let r = window.location.search.substr(1).match(reg); if (r != null) { return decodeURIComponent(r[2]); } return null; } connectedCallback() { console.log('===>初始化'); //获取ESetid this.eSetId = this.getQueryString('eSetId'); this.eSetId = this.eSetId == null ? '' : this.eSetId; console.log(' this.eSetId' + this.eSetId); this.EditAble = false; this.showcount = true; oninit() .then((result) => { console.log('1112' + JSON.stringify(result)); result = JSON.parse(JSON.stringify(result)); console.log('result.status = ' + result.status); console.log( ' ConsumableorderdetailsRecordsview= ' + result.entity.ConsumableorderdetailsRecordsview ); this.ConsumableorderdetailsRecordsview = JSON.parse( result.entity.ConsumableorderdetailsRecordsview ); this.consumableorderdetailsRecords = result.entity.consumableorderdetailsRecords; console.log( ' consumableorderdetailsRecords= ' + result.entity.consumableorderdetailsRecords ); console.log( '传参类型', typeof this.consumableorderdetailsRecords ); if (result.status == 'Success') { console.log( 'this.ConsumableorderdetailsRecordsview[0] = ' + JSON.stringify( this.ConsumableorderdetailsRecordsview[0] ) ); console.log( 'this.ConsumableorderdetailsRecordsview[0].length = ' + this.ConsumableorderdetailsRecordsview[0].length ); // let cloneData = []; // for (let i in this.ConsumableorderdetailsRecordsview[0]) { // cloneData.push(JSON.parse(this.ConsumableorderdetailsRecordsview[0][i])); // } // console.log('cloneData = ' + typeof cloneData); // console.log('cloneData = ' + cloneData); // this.data = cloneData; this.data = []; this.data = this.ConsumableorderdetailsRecordsview[0]; console.log('this.data ==>' + JSON.stringify(this.data)); for (let i in this.data) { this.data[i]['Name__c'] = this.data[i].Prod.Name__c; this.data[i]['Packing_list_manual__c'] = this.data[i].Prod.Packing_list_manual__c; } this.accountName = result.entity.accountName; this.agencyProType = result.entity.agencyProType; this.userWorkLocation = result.entity.userWorkLocation; this.casesSpinner = false; this.showTable = true; } else { console.log('Error:' + result.errorMsg); const evt = new ShowToastEvent({ title: '解析失败', message: result.errorMsg, variant: 'error' }); this.dispatchEvent(evt); } }) .catch((error) => { console.log('error = ' + JSON.stringify(error)); }); //默认展开栏 this.activeSections = ['dataExpand']; this.showTable = false; this.showbutton = false; //init } //录入barcode barcodeEntrys() { this.showTable = false; this.showbutton = false; console.log('进入录入'); console.log( 'this.consumableorderdetailsRecords===>' + this.consumableorderdetailsRecords ); if ( this.barcode == '' || this.barcode == null || this.barcode == 'undefined' ) { this.connectedCallback(); } barcodeEntry({ accountName: this.accountName, agencyProType: this.agencyProType, userWorkLocation: this.userWorkLocation, barcode: this.barcode, consumableorderdetailsRecordsLWC: this.consumableorderdetailsRecords }) .then((result) => { // result = JSON.parse(JSON.stringify(result)); this.codPageRecords = JSON.parse(result.entity.codPageRecords); for (var i in this.codPageRecords) { this.codPageRecords[i]['Name__c'] = this.codPageRecords[i].Prod.Name__c; this.codPageRecords[i]['Box_Piece__c'] = this.codPageRecords[i].orderdetails2.Box_Piece__c; this.codPageRecords[i]['Bar_Code__c'] = this.codPageRecords[i].orderdetails2.Bar_Code__c; } this.data = JSON.parse( result.entity.consumableorderdetailsRecords ); for (var i in this.data) { this.data[i]['Name__c'] = this.data[i].Prod.Name__c; this.data[i]['Packing_list_manual__c'] = this.data[i].Prod.Packing_list_manual__c; } for (var i in this.data) { if (this.data[i]['check']) { this.selectedRows.push(this.data[i].ProdId); console.log('selectedRows:' + this.selectedRows); } } this.iSinventory = result.entity.iSinventory; console.log('iSinventory:' + this.iSinventory); this.showTable = true; this.showbutton = true; console.log( ' this.codPageRecords=11111 ' + result.entity.codPageRecords ); console.log('result录入= ' + JSON.stringify(result)); console.log( 'result主页数据= ' + result.entity.consumableorderdetailsRecords ); }) .catch((error) => { console.log('error = ' + JSON.stringify(error)); }); } //获取当前输入值 handleChange(event) { let value = event.detail.value; console.log('value' + value); this.barcode = value; } getSelectedRows(event) { const selectedRows = event.detail.selectedRows; console.log('this.selectedRows = ' + this.selectedRows); for (var i in this.data) { this.data[i]['check'] = false; } for (var i in this.data) { for (var j in selectedRows) { if (this.data[i].Id == selectedRows[j].Id) { this.data[i]['check'] = true; } } } } //导出为csv exportData() { console.log('导出'); // Prepare a html table let doc = '<table>'; // Add styles for the table doc += '<style>'; doc += 'table, th, td {'; doc += ' border: 1px solid black;'; doc += ' border-collapse: collapse;'; doc += '}'; doc += '</style>'; // Add all the Table Headers doc += '<tr>'; this.columnHeader.forEach((element) => { doc += '<th>' + element + '</th>'; }); doc += '</tr>'; // Add the data rows this.codPageRecords.forEach((record) => { doc += '<tr>'; doc += '<th>' + record.Name__c + '</th>'; doc += '<th>' + record.Box_Piece__c + '</th>'; doc += '<th>' + record.Bar_Code__c + '</th>'; doc += '<th>' + record.DiffReason + '</th>'; doc += '</tr>'; }); doc += '</table>'; var element = 'data:application/vnd.ms-excel,' + encodeURIComponent(doc); let downloadElement = document.createElement('a'); downloadElement.href = element; downloadElement.target = '_self'; // use .csv as extension on below line if you want to export data as csv downloadElement.download = '库存变化明细.xls'; document.body.appendChild(downloadElement); downloadElement.click(); } //自定义dataType diffreasons(event) { const numberDetail = event.detail; // this.numberDetail = numberDetail; console.log('numberDetail' + JSON.stringify(numberDetail)); for (var i in this.data) { if (this.data[i]['ProId'] == numberDetail.data.ProId) { this.data[i]['DiffReason'] = numberDetail.data.DiffReason; } } console.log(' this.data==>' + JSON.stringify(this.data)); } saveConfirm() { console.log('进入盘点确认'); var el = this.template.querySelector( 'c-lex-custom-lightning-datatable' ); var selected = el.getSelectedRows(); this.selectedData = selected; console.log('选中数据' + JSON.stringify(this.selectedData)); saveConfirm({ iSinventory: this.iSinventory, consumableorderdetailsRecordsLWC: JSON.stringify(this.selectedData) }) .then((result) => { console.log('result = ' + JSON.stringify(result)); this.EditAble = true; this.showcount = false; // result = JSON.parse(JSON.stringify(result)); // console.log('result = ' + JSON.stringify(result)); // if (result.status == 'Success') { // // let url = '/lexInventoryCount?eSetId=' + result.entity.eSetId; // // this[NavigationMixin.Navigate]({ // // type: 'standard__webPage', // // attributes: { // // url: url // // } // // }); // this.EditAble = true; // this.showcount = false; // } else { // console.log('result.msg = ' + result.msg); // const evt = new ShowToastEvent({ // title: '失败', // message: result.msg, // variant: 'error' // }); // this.dispatchEvent(evt); // } }) .catch((error) => { console.log('error = ' + JSON.stringify(error)); }); } // inits(){ // init({ // eSetId:this.eSetId // }).then((result) => { // result = JSON.parse(JSON.stringify(result)); // for(var i in result.entity.qs){ // this.conId = result.entity.qs[i].Id; // } // console.log('this.conId'+typeof( this.conId)); // this.detailData = JSON.parse(result.entity.consumableorderdetailsRecords); // console.log('result盘点Id'+JSON.stringify(this.conId)); // }) // .catch((error) => { // console.log("error = " + JSON.stringify(error)); // }); // } } force-app/main/default/lwc/lexInventoryCount/lexInventoryCount.js-meta.xml
New file @@ -0,0 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>56.0</apiVersion> <isExposed>true</isExposed> <targets> <target>lightningCommunity__Page</target> <target>lightningCommunity__Default</target> </targets> </LightningComponentBundle> force-app/main/default/lwc/lexSummonsCreat/lexSummonsCreat.css
New file @@ -0,0 +1,29 @@ .outerBorderCss{ border: 1px solid #D4D4D4; border-radius : 5px; border-top : 3px solid #565959; } .borderCss{ border: 1px solid #D4D4D4; border-radius : 5px; margin-bottom : 7px; border-top : 3px solid #565959; } .headerDorderCss{ border-top: 1px solid #565959; border-bottom: 1px solid #D4D4D4; padding:3px; } .centerCss{ text-align: center; } .centerCss .left{ margin-left: 100px; } .datatable { max-height: 400px !important; } .tableColumn { margin-top: 5px !important; overflow-x: auto; } force-app/main/default/lwc/lexSummonsCreat/lexSummonsCreat.html
New file @@ -0,0 +1,564 @@ <!-- sldsValidatorIgnore --> <!-- sldsValidatorIgnore --> <template> <template if:true={isShowSpinner}> <lightning-spinner alternative-text="Loading" size="large"></lightning-spinner> </template> <!-- 搜索客户名 --> <template if:true={isModalOpen}> <!-- Modal/Popup Box LWC starts here --> <section role="dialog" tabindex="-1" aria-labelledby="modal-heading-01" aria-modal="true" aria-describedby="modal-content-id-1" class="slds-modal slds-fade-in-open"> <div class="slds-modal__container"> <!-- Modal/Popup Box LWC header here --> <header class="slds-modal__header"> <button class="slds-button slds-button_icon slds-modal__close slds-button_icon-inverse" title="Close" onclick={closeModal}> <lightning-icon icon-name="utility:close" alternative-text="close" variant="inverse" size="small"></lightning-icon> <span class="slds-assistive-text">Close</span> </button> <h2 id="modal-heading-01" class="slds-text-heading_medium slds-hyphenate"> 经销商医院检索 </h2> </header> <!-- Modal/Popup Box LWC body starts here --> <div class="slds-modal__content slds-p-around_medium" id="modal-content-id-1"> <lightning-layout> <lightning-layout-item flexibility="auto" padding="around-small"> <lightning-input type="text" label="医院名称" onchange={dataChange} data-field="searchHospitalName" value={searchHospitalName} variant="label-inline"></lightning-input> </lightning-layout-item> <lightning-layout-item flexibility="auto" padding="around-small"> <lightning-button label="检索" onclick={searchHospital}></lightning-button> </lightning-layout-item> </lightning-layout> <div class="tableColumn"> <lightning-layout class="datatable"> <lightning-datatable class="datatabel slds-border_top" key-field="id" data={hospitalList} columns={hospitalColumns} hide-checkbox-column="true" onrowaction={searchHandleRowAction}> </lightning-datatable> </lightning-layout> </div> </div> <!-- Modal/Popup Box LWC footer starts here --> <footer class="slds-modal__footer"> <button class="slds-button slds-button_neutral" onclick={closeModal} title="Cancel"> 关闭 </button> </footer> </div> </section> <div class="slds-backdrop slds-backdrop_open"></div> </template> <div class="outerBorderCss"> <div style="padding: 5px"> <!-- 按钮 --> <div class="borderCss"> <div style="padding: 10px"> <div lwc:dom="manual" class="resultDiv"></div> <div draggable="false"> <!-- <lightning-button label="保存" onclick={neworderhead} style="margin-left: 100px;"></lightning-button> --> <table> <colgroup> <col width="150px" /> <col width="200px" /> <col width="200px" /> <col width="200px" /> <col width="200px" /> <col width="200px" /> <col width="90px" /> <col width="100px" /> <col width="10px" /> <col width="85px" /> <col width="100px" /> <col width="10px" /> <col width="70px" /> <col width="100px" /> </colgroup> <tr> <td></td> <!-- <td colspan="4"><apex:commandButton onclick="saveConfirmJs('{!coc.SummonsStatus_c__c}');" value="保存" style="width:150px" rerender="dummy" rendered="{!(EditDelCommitBtnDisabled||EditAble)}"/></td> --> <td colspan="4"> <template if:true={isSaveShow}> <lightning-button label="保存" onclick={saveConfirmJs} style="width: 150px"></lightning-button> </template> </td> </tr> <tr> <td></td> <td> <!-- <apex:commandButton onclick="EditConsumable();" value="编辑出库单" style="width:150px" rerender="dummy" rendered="{!!(EditDelCommitBtnDisabled||EditAble)}" disabled="{!IF(coc.SummonsStatus_c__c='已完成',true,false)}"/> --> <template if:true={isEditShow}> <lightning-button label="编辑出库单" onclick={EditConsumable} style="width: 150px" disabled={isEditDisabled}></lightning-button> </template> </td> <!--CHAN-B65CAZ 20181105 UpdateStart--> <!-- <td ><apex:commandButton onclick="CommitConsumable();" value="提交出库单" style="width:150px" rerender="dummy" rendered="{!!(EditDelCommitBtnDisabled||EditAble)}" disabled="{!IF(coc.SummonsStatus_c__c='批准'||coc.SummonsStatus_c__c='已销售待上传纳品书'||coc.SummonsStatus_c__c='出库单已打印'||coc.SummonsStatus_c__c='已完成',true,false)}"/></td> --> <td> <!-- <apex:commandButton onclick="GoodsDeliveryJs();" value="出货/销售" style="width:150px" rerender="dummy" rendered="{!!(EditDelCommitBtnDisabled||EditAble)}" disabled="{!IF(coc.SummonsStatus_c__c='已销售待上传纳品书'||coc.SummonsStatus_c__c='已完成'||coc.SummonsStatus_c__c='价格未定',true,false)}"/> --> <template if:true={isDeliveryShow}> <lightning-button label="出货/销售" onclick={GoodsDeliveryJs} style="width: 150px" disabled={isDeliveryDisabled}></lightning-button> </template> </td> <!-- CHAN-B65CAZ 20181105 UpdateEnd--> <td> <!-- <apex:commandButton onclick="openToInvoiceJs();return false;" value="开票" style="width:150px" rerender="dummy" rendered="{!!(EditDelCommitBtnDisabled||EditAble)}" disabled="{!IF(((coc.Billed_Status__c !='全部开票' &&coc.SummonsStatus_c__c='已完成') || coc.Onchange_order__c = true) && coc.SummonsForDirction__c!='互相调货',false,true)}"/> --> <template if:true={isOpenToInvoiceShow}> <lightning-button label="开票" onclick={openToInvoiceJs} style="width: 150px" disabled={isOpenToInvoiceDisabled}></lightning-button> </template> </td> </tr> <tr> <td></td> <!--CHAN-B65CAZ 20181105 UpdateStart--> <td> <!-- <apex:commandButton onclick="PraseToPDFJs();" value="打印指示单" style="width:150px" rerender="dummy" rendered="{!!(EditDelCommitBtnDisabled||EditAble)}" disabled="{!IF(coc.SummonsStatus_c__c='已销售待上传纳品书'||coc.SummonsStatus_c__c='批准'||coc.SummonsStatus_c__c='出库单已打印'||coc.SummonsStatus_c__c='草案中',false,true)}"/> --> <template if:true={isPraseToPDFShow}> <lightning-button label="打印指示单" onclick={PraseToPDFJs} style="width: 150px" disabled={isPraseToPDFDisabled}></lightning-button> </template> </td> <!-- CHAN-B65CAZ 20181105 UpdateEnd--> <td> <!-- <apex:commandButton onclick="openReportJs(); return false;" value="显示明细" style="width:150px" rerender="dummy" rendered="{!!(EditDelCommitBtnDisabled||EditAble)}" disabled="{!IF(coc.Billed_Status__c !='还没开票' || coc.SummonsStatus_c__c='已完成',false,true)}"/> --> <template if:true={isOpenReportShow}> <lightning-button label="显示明细" onclick={openReportJs} style="width: 150px" disabled={isOpenReportDisabled}></lightning-button> </template> </td> <td> <!-- <apex:commandButton onclick="DeleteConsumable();" value="删除" style="width:150px" rerender="dummy" rendered="{!!(EditDelCommitBtnDisabled||EditAble)}" disabled="{!IF(coc.SummonsStatus_c__c='已销售待上传纳品书'||coc.SummonsStatus_c__c='价格未定'||coc.SummonsStatus_c__c='批准'||coc.SummonsStatus_c__c='出库单已打印'||coc.SummonsStatus_c__c='已完成',true,false)}"/> --> <template if:true={isDeleteShow}> <lightning-button label="删除" onclick={DeleteConsumable} style="width: 150px" disabled={isDeleteDisabled}></lightning-button> </template> </td> <td></td> </tr> </table> </div> </div> </div> <!-- 出库单信息 EditAble = true --> <template if:true={EditAble}> <div class="borderCss"> <div class="headerDorderCss"> <p style="font-size: 16px"> <strong>出库单信息</strong> </p> </div> <div style="padding: 10px"> <div lwc:dom="manual" class="resultDiv"></div> <div draggable="false"> <!-- SummonsStatus_c__c == '价格未定' --> <template if:true={summonsStatusPriceNotDetermined}> <lightning-record-edit-form object-api-name="Consumable_order__c" record-id={cocId}> <!-- 出库单号 出库单状态 --> <lightning-layout multiple-rows="true"> <template if:true={isSummonsFlag}> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="Name"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="SummonsStatus_c__c"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> </template> </lightning-layout> <!-- 目的 开票状态 --> <lightning-layout multiple-rows="true"> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="SummonsForDirction__c"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="Billed_Status__c"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> </lightning-layout> <!-- 二级经销商 --> <template if:true={isSummonsForDirctionTwoShow}> <lightning-layout multiple-rows="true"> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="Order_Dealer_Info__c"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> </lightning-layout> </template> <!-- 客户名 发票--> <lightning-layout multiple-rows="true"> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="ShipmentAccount__c"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> 发票 还需进行开发1 </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> </lightning-layout> <!-- 科室 出库金额 --> <lightning-layout multiple-rows="true"> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="Order_ForCustomerText__c"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="Shipment_total_amount__c"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> </lightning-layout> <!-- 没有确定价格 --> <lightning-layout multiple-rows="true"> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="NoConfirmedPrice__c"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> </lightning-layout> </lightning-record-edit-form> </template> <!-- SummonsStatus_c__c != '价格未定' --> <template if:false={summonsStatusPriceNotDetermined}> <lightning-record-edit-form object-api-name="Consumable_order__c" record-id={cocId} onsubmit={handleSubmit}> <!-- 出库单号 出库单状态 --> <lightning-layout multiple-rows="true"> <template if:true={isSummonsFlag}> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="Name"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="SummonsStatus_c__c"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> </template> </lightning-layout> <!-- 目的 二级经销商 --> <lightning-layout multiple-rows="true"> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-input-field data-field="summonsForDirction" value={summonsForDirction} field-name="SummonsForDirction__c" required="true" onchange={ChangeDirction}></lightning-input-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-combobox data-field="secondaryDistributor" name="secondaryDistributor" label="二级经销商" value={secondaryDistributor} placeholder="请选择..." options={secondaryDistributorOptions} variant="label-inline" onchange={dataChange} disabled={isDisabledSecondaryDistributor}></lightning-combobox> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> </lightning-layout> <!-- 客户名 经销商录入 --> <lightning-layout multiple-rows="true"> <lightning-layout-item class="hehe-layoutItem" size="4"> <div class="slds-form-element__control slds-input-has-icon slds-input-has-icon_right"> <lightning-icon size="x-small" class="iconMargin slds-icon slds-input__icon slds-input__icon_right slds-icon-text-default" icon-name="utility:search"></lightning-icon> <lightning-input type="text" name="HospitalName" label="客户名" value={HospitalName} variant="label-inline" onclick={searchHospitalNameModal} data-field="HospitalName" disabled={isDisabledHospitalName} onchange={clearAgencyI}></lightning-input> </div> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> <!-- <lightning-input-field onfocus={setVisitorPlace} onblur={vpClear2Delay} data-field="ForDealerText" value={ForDealerText} field-name="Order_ForDealerText__c" disabled={isDisabledForDealerText}></lightning-input-field> --> <!-- <lightning-input type="text" name="Order_ForDealerText__c" label="经销商(录入)" value={ForDealerText} onfocus={setVisitorPlace} onblur={vpClear2Delay} data-field="Order_ForDealerText__c" disabled={isDisabledForDealerText} variant="label-inline"> </lightning-input> --> <c-lookup onsearch={handleSearch} onselectionchange={handleSelectionChange} label="经销商(录入)" variant="label-inline" placeholder="搜索经销商"> </c-lookup> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> </lightning-layout> <!-- 科室 总金额 --> <lightning-layout multiple-rows="true"> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-input-field onchange={dataChange} data-field="ForCustomerText" value={ForCustomerText} field-name="Order_ForCustomerText__c" disabled={isDisabledForCustomerText}></lightning-input-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-input type="text" name="sumPrice" label="总金额" value={sumPrice} variant="label-inline" onchange={dataChange} data-field="sumPrice" readonly></lightning-input> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> </lightning-layout> <!-- 没有确定价格 --> <lightning-layout multiple-rows="true"> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-input-field value={NoConfirmedPrice} field-name="NoConfirmedPrice__c" data-field="NoConfirmedPrice" onchange={dataChange}></lightning-input-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> </lightning-layout> </lightning-record-edit-form> </template> </div> </div> </div> </template> <!-- 出库单信息 EditAble = false --> <template if:false={EditAble}> <div class="borderCss"> <div class="headerDorderCss"> <p style="font-size: 16px"> <strong>出库单信息</strong> </p> </div> <div style="padding: 10px"> <div lwc:dom="manual" class="resultDiv"></div> <div draggable="false"> <lightning-record-edit-form object-api-name="Consumable_order__c" record-id={cocId}> <!-- 出库单号 出库单状态 --> <lightning-layout multiple-rows="true"> <template if:true={isSummonsFlag}> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="Name"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="SummonsStatus_c__c"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> </template> </lightning-layout> <!-- 目的 开票状态 --> <lightning-layout multiple-rows="true"> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="SummonsForDirction__c"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="Billed_Status__c"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> </lightning-layout> <!-- 二级经销商 --> <template if:true={isSummonsForDirctionTwoShow}> <lightning-layout multiple-rows="true"> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="Order_Dealer_Info__c"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> </lightning-layout> </template> <!-- 客户名 发票--> <lightning-layout multiple-rows="true"> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="ShipmentAccount__c"></lightning-output-field> </lightning-layout-item> <template if:true={isConInvoiceShow}> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-input-field field-name="ConInvoice_Code__c"></lightning-input-field> </lightning-layout-item> </template> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> </lightning-layout> <!-- 科室 出库金额 --> <lightning-layout multiple-rows="true"> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="Order_ForCustomerText__c"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="Shipment_total_amount__c"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> </lightning-layout> <!-- 没有确定价格 --> <lightning-layout multiple-rows="true"> <lightning-layout-item class="hehe-layoutItem" size="4"> <lightning-output-field field-name="NoConfirmedPrice__c"></lightning-output-field> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> <lightning-layout-item class="hehe-layoutItem" size="4"> </lightning-layout-item> </lightning-layout> </lightning-record-edit-form> </div> </div> </div> </template> <!-- 检索 --> <template if:true={isSearchShow}> <div class="borderCss"> <div style="padding: 10px"> <div lwc:dom="manual" class="resultDiv"></div> <div draggable="false"> <lightning-layout> <lightning-layout-item flexibility="auto" padding="around-small"> <lightning-input type="text" name="consumableName" label="消耗品名称" value={consumableName} variant="label-inline" onchange={dataChange} data-field="consumableName"></lightning-input> </lightning-layout-item> <lightning-layout-item flexibility="auto" padding="around-small"> <lightning-combobox name="progress" label="第3分类" value={Category3} variant="label-inline" options={category3Options} onchange={dataChange} data-field="Category3"></lightning-combobox> </lightning-layout-item> <lightning-layout-item flexibility="auto" padding="around-small"> <lightning-combobox name="progress" label="第4分类" value={Category4} variant="label-inline" options={category4Options} onchange={dataChange} data-field="Category4"></lightning-combobox> </lightning-layout-item> <lightning-layout-item flexibility="auto" padding="around-small"> <lightning-combobox name="progress" label="第5分类" value={Category5} variant="label-inline" onchange={dataChange} data-field="Category5" options={category5Options}></lightning-combobox> </lightning-layout-item> <template if:true={hasHosPro}> <lightning-layout-item flexibility="auto" padding="around-small"> <lightning-combobox name="progress" label="医院特价" value={outOutPattern} variant="label-inline" options={outOutPatternOptionList} onchange={handleChange}></lightning-combobox> </lightning-layout-item> </template> <lightning-layout-item flexibility="auto, no-grow" padding="around-small"> <lightning-button label="检索" onclick={searchProductJs}></lightning-button> </lightning-layout-item> <lightning-layout-item flexibility="auto, no-grow" padding="around-small"> <lightning-button label="清空" onclick={neworderhead}></lightning-button> </lightning-layout-item> </lightning-layout> </div> </div> </div> </template> <!-- 出库单明细 --> <div class="borderCss"> <div class="headerDorderCss"> <p style="font-size: 16px"> <strong>出库单明细</strong> </p> </div> <div style="padding: 10px"> <template if:true={EditAble}> <template if:true={showTable}> <!-- <c-poc-lightning-datatable key-field="Id" data={data} columns={columns} onunitchange={handleUnitChange} onshipmentnumber={handleShipmentNumber} onshipmentunitprice={handleShipmentUnitPrice} onrowselection={getSelectedRows} selected-rows={selectedRows}> </c-poc-lightning-datatable> --> <c-lex-custom-lightning-datatable key-field="Id" data={data} columns={columns} onunitchange={handleUnitChange} onshipmentnumber={handleShipmentNumber} onshipmentunitprice={handleShipmentUnitPrice} onrowselection={getSelectedRows} selected-rows={selectedRows}> </c-lex-custom-lightning-datatable> </template> </template> <template if:false={EditAble}> <template if:true={showTable}> <!-- <c-poc-lightning-datatable hide-checkbox-column key-field="Id" data={data} columns={editColumns} onunitchange={handleUnitChange} onshipmentnumber={handleShipmentNumber} onshipmentunitprice={handleShipmentUnitPrice} onrowselection={getSelectedRows} selected-rows={selectedRows}> </c-poc-lightning-datatable> --> <c-lex-custom-lightning-datatable hide-checkbox-column key-field="Id" data={data} columns={editColumns} onunitchange={handleUnitChange} onshipmentnumber={handleShipmentNumber} onshipmentunitprice={handleShipmentUnitPrice} onrowselection={getSelectedRows} selected-rows={selectedRows}> </c-lex-custom-lightning-datatable> </template> </template> </div> </div> <!-- 上传附件 --> <template if:true={EditAble}> <div class="borderCss"> <div class="headerDorderCss"> <p style="font-size: 16px"> <strong>出库单信息</strong> </p> </div> <div style="padding: 10px"> <div lwc:dom="manual" class="resultDiv"></div> <div draggable="false"></div> </div> </div> </template> </div> </div> </template> force-app/main/default/lwc/lexSummonsCreat/lexSummonsCreat.js
New file @@ -0,0 +1,1109 @@ import { LightningElement, wire, api, track } from 'lwc'; import init from '@salesforce/apex/LexSummonsCreatController.init'; import { ShowToastEvent } from 'lightning/platformShowToastEvent'; import searchConsumableorderdetails from '@salesforce/apex/LexSummonsCreatController.searchConsumableorderdetails'; import PraseToPDF from '@salesforce/apex/LexSummonsCreatController.PraseToPDF'; import apexSearch from '@salesforce/apex/SampleLookupController.search'; import save from '@salesforce/apex/LexSummonsCreatController.save'; import OPPORTUNITY_OBJECT from '@salesforce/schema/Consumable_Orderdetails__c'; import { getObjectInfo } from 'lightning/uiObjectInfoApi'; import hospitalInit from '@salesforce/apex/lexSearchAgencyHospitalController.init'; import serContact from '@salesforce/apex/lexSearchAgencyHospitalController.serContact'; import { NavigationMixin } from 'lightning/navigation'; export default class LexSummonsCreat extends NavigationMixin(LightningElement) { @track isShowSpinner = true; @track showResults = true; @track results = [ { Id:'1', Name : 'z' }, { Id:'2', Name : 'h' }, { Id:'3', Name : 'j' } ]; @track COLS = [ { label: 'Account Name', type: 'customName', typeAttributes: { accountName: { fieldName: 'Name' } } }]; @track columns = [ { label: '消耗品名称', fieldName: 'Name__c', hideDefaultActions: true , wrapText:true, //initialWidth : 100, }, { label: '规格', fieldName: 'packinglist', //initialWidth : 50, wrapText:true, hideDefaultActions: true }, { label: 'CFDA状态', fieldName: 'SFDA_Status__c', //initialWidth : 100, wrapText:true, hideDefaultActions: true }, { label: '注册证编码号', fieldName: 'approbation_No', //initialWidth : 150, wrapText:true, hideDefaultActions: true }, { label: '注册证效期', //initialWidth : 100, wrapText:true, fieldName: 'expiration_Date', hideDefaultActions: true , }, { label: '第3分类', fieldName: 'Category3__c', //initialWidth : 100, wrapText:true, hideDefaultActions: true, sortable: true, }, { label: '第4分类', fieldName: 'Category4__c', //initialWidth : 100, wrapText:true, hideDefaultActions: true, sortable: true }, { label: '第5分类', fieldName: 'Category5__c', //initialWidth : 100, wrapText:true, hideDefaultActions: true, sortable: true }, { label: '单位', type:'customUnit', //initialWidth : 100, hideDefaultActions: true, typeAttributes: { unitValue: { fieldName: 'unitValue' }, unitOptions: { fieldName: 'unitOptions' }, recordId: { fieldName: 'recordId' } }, }, { label: '出货数量', type: 'customShipment', //initialWidth : 150, hideDefaultActions: true, typeAttributes: { recordId: { fieldName: 'recordId' }, shipmentNumber: { fieldName: 'shipmentNumber' }, }, }, { label: '出货单价(元)', type: 'customShipmentUnitPrice', //initialWidth : 150, hideDefaultActions: true, typeAttributes: { recordId: { fieldName: 'recordId' }, shippingUnitPrice: { fieldName: 'shippingUnitPrice' } }, }, { label: '出货金额(元)', type: 'customShipmentAmount', //initialWidth : 120, hideDefaultActions: true, typeAttributes: { shipmentAmount: { fieldName: 'shipmentAmount' } }, }, { label: '有效期内库存(盒)', fieldName: 'Boxnumber', //initialWidth : 120, wrapText:true, hideDefaultActions: true, }, { label: '有效期内库存(个)', fieldName: 'Piecenumber', //initialWidth : 120, wrapText:true, hideDefaultActions: true, } ]; @track editColumns = [ { label: '消耗品名称', fieldName: 'Name__c', hideDefaultActions: true , initialWidth : 250, }, { label: '规格', fieldName: 'packinglist', initialWidth : 50, hideDefaultActions: true }, { label: 'CFDA状态', fieldName: 'SFDA_Status__c', initialWidth : 100, hideDefaultActions: true }, { label: '注册证编码号', fieldName: 'approbation_No', initialWidth : 150, hideDefaultActions: true }, { label: '注册证效期', initialWidth : 100, fieldName: 'expiration_Date', hideDefaultActions: true , }, { label: '第3分类', fieldName: 'Category3__c', initialWidth : 100, hideDefaultActions: true, sortable: true, }, { label: '第4分类', fieldName: 'Category4__c', initialWidth : 100, hideDefaultActions: true, sortable: true }, { label: '第5分类', fieldName: 'Category5__c', initialWidth : 100, hideDefaultActions: true, sortable: true }, { label: '单位', fieldName: 'Box_Piece__c', initialWidth : 100, hideDefaultActions: true, }, { label: '出货数量', fieldName: 'Shipment_Count__c', initialWidth : 150, hideDefaultActions: true, }, { label: '出货单价(元)', fieldName: 'Shipment_amount__c', initialWidth : 150, hideDefaultActions: true, } ]; @track hospitalList=[]; @track hospitalColumns = [ { label: '医院名称', fieldName: 'Name', initialWidth : 400, hideDefaultActions: true , }, { label: '省份', fieldName: 'stateMasterName', hideDefaultActions: true , }, { label: '选择', fieldName : 'Id1', type : 'button', hideDefaultActions: true , typeAttributes: { label: '选择', name: 'Id2', size: 1 } } ]; @track accountid = ''; @track consumableproductdetailsRecords = []; @track SummonsStatus = ''; @track ESetid = ''; @track cocLwc = {}; @track selectedRows = []; @track ConsumableOut_report = ''; //显示按钮 @track isSaveShow = false; @track isEditShow = false; @track isDeliveryShow = false; @track isOpenToInvoiceShow = false; @track isPraseToPDFShow = false; @track isOpenReportShow = false; @track isDeleteShow = false; @track isFileShow = false; //disable按钮 @track isEditDisabled = false; @track isDeliveryDisabled = false; @track isOpenToInvoiceDisabled = true; @track isPraseToPDFDisabled = true; @track isOpenReportDisabled = true; @track isDeleteDisabled = false; //出库单信息 @track cocId = '' @track EditAble = false; @track summonsStatusPriceNotDetermined = false; @track isSummonsForDirctionTwoShow = false; @track isSummonsFlag = false; @track isConInvoiceShow = false; @track sumPrice = ''; @track isSearchShow = false; @track Existarrive = false; @track Category3 = ''; @track category3Options=[]; @track Category4 = ''; @track category4Options=[]; @track Category5 = ''; @track category5Options=[]; //二级经销商 @track secondaryDistributor = ''; @track secondaryDistributorOptions = []; @track isDisabledSecondaryDistributor = false; //经销商录入 @track ForDealerText = ''; @track isDisabledForDealerText = false; //客户名 @track isModalOpen = false; @track HospitalName = ''; @track searchHospitalName = ''; @track OECId = ''; @track isDisabledHospitalName = false; //科室 @track ForCustomerText = ''; @track isDisabledForCustomerText = false; //没有确定价格 @track NoConfirmedPrice = false; //消耗品名称 @track consumableName = ''; @track agencyProType = ''; @track accountName = ''; @track userWorkLocation = ''; @track OutPattern__c = false; @track outOutPattern = ''; //出库单明细 @track showTable = false; @track data = []; @track isSelectShow = false; @track hidecheckboxcolumn = false; @track is345Show = false; @track arriveorder = ''; @track hasHosPro = false; @track InvoiceProNotLabel = ''; @track RrturnProLabel = ''; @track InvoicedLabel = ''; @track outOutPatternOptionList = []; //InvoiceProNotLabel RrturnProLabel InvoicedLabel @wire(getObjectInfo, { objectApiName: OPPORTUNITY_OBJECT }) oppInfo({ data, error }) { if (data) { this.InvoiceProNotLabel = data.fields.InvoiceProNot_count__c.label this.RrturnProLabel = data.fields.RrturnPro_count__c.label this.InvoicedLabel = data.fields.Invoiced_Procount__c.label console.log('this.InvoiceProNotLabel = ' + this.InvoiceProNotLabel); console.log('this.RrturnProLabel = ' + this.RrturnProLabel); console.log('this.InvoicedLabel = ' + this.InvoicedLabel); } } // get secondaryDistributorOptions() { // return this.secondaryDistributorOptions; // } // get outOutPatternOptionList() { // return this.outOutPatternOptionList; // } // // get category3Options() { // // return this.category3Options; // // } // get category4Options() { // return this.category4Options; // } // get category5Options() { // return this.category5Options; // } //获取链接参数 getQueryString(name) { console.log('getQueryString name ' + name) let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); let r = window.location.search.substr(1).match(reg); if (r != null) { return decodeURIComponent(r[2]); }; return null; } connectedCallback(){ this.ESetid = this.getQueryString('ESetid'); this.ESetid = this.ESetid == null ? '' : this.ESetid; init({ ESetidJs : this.ESetid }).then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('r = ' + JSON.stringify(r)); if (r.status == 'Success') { this.ConsumableOut_report = r.entity.ConsumableOut_report; console.log('this.ConsumableOut_report = ' + this.ConsumableOut_report) this.accountid = r.entity.accountid; this.consumableproductdetailsRecords = r.entity.consumableproductdetailsRecords; this.accountName = r.entity.accountName; this.agencyProType = r.entity.agencyProType; this.accountName = r.entity.accountName; this.userWorkLocation = r.entity.userWorkLocation; this.EditAble = r.entity.EditAble; console.log('this.agencyProType = ' + this.agencyProType); console.log('this.EditAble = ' + this.EditAble); //第3分类 for(var key in r.entity.categoryOptionMap){ let object = {}; object['label'] = r.entity.categoryOptionMap[key]; object['value'] = key; this.category3Options.push(object); } console.log('this.category3Options = ' + this.category3Options) //第4分类 for(var key in r.entity.category4OptionMap){ let object = {}; object['label'] = r.entity.category4OptionMap[key]; object['value'] = key; this.category4Options.push(object); } console.log('this.category4Options = ' + this.category4Options) //第5分类 for(var key in r.entity.category5OptionMap){ let object = {}; object['label'] = r.entity.category5OptionMap[key]; object['value'] = key; this.category5Options.push(object); } console.log('this.category5Options = ' + this.category5Options) this.data = r.entity.pageRecords; for(var i in this.data){ let unitOptions = []; for(var key in this.data[i].boxorpieceMap){ let unitOption = {}; unitOption['label'] = this.data[i].boxorpieceMap[key]; unitOption['value'] = key; unitOptions.push(unitOption); } this.data[i]['unitOptions'] = unitOptions; this.data[i]['unitValue'] = unitOptions[0].value; if(this.EditAble){ this.data[i].orderdetails1['Box_Piece__c'] = unitOptions[0].value; this.data[i].orderdetails1['Shipment_Count__c'] = 0; this.data[i].orderdetails1['Delivery_List_RMB__c'] = 0.00; }else{ this.data[i]['InvoiceProNot_count__c'] = this.data[i].orderdetails1.InvoiceProNot_count__c; this.data[i]['RrturnPro_count__c'] = this.data[i].orderdetails1.RrturnPro_count__c; this.data[i]['Invoiced_Procount__c'] = this.data[i].orderdetails1.Invoiced_Procount__c; } this.data[i]['shipmentNumber'] = 0; this.data[i]['shippingUnitPrice'] = 0.00; this.data[i]['recordId'] = this.data[i].Prod.Id; this.data[i]['Id'] = this.data[i].Prod.Id; this.data[i]['Name__c'] = this.data[i].Prod.Name__c; this.data[i]['SFDA_Status__c'] = this.data[i].Prod.SFDA_Status__c; this.data[i]['Category3__c'] = this.data[i].Prod.Category3__c; this.data[i]['Category4__c'] = this.data[i].Prod.Category4__c; this.data[i]['Category5__c'] = this.data[i].Prod.Category5__c; this.data[i]['Box_Piece__c'] = this.data[i].orderdetails1.Box_Piece__c; this.data[i]['shipmentAmount'] = this.data[i].orderdetails1.Shipment_amount__c; this.data[i]['Shipment_amount__c'] = this.data[i].orderdetails1.Shipment_amount__c; this.data[i]['Shipment_Count__c'] = this.data[i].orderdetails1.Shipment_Count__c; } console.log('this.data = ' + JSON.stringify(this.data)); //show if(r.entity.EditDelCommitBtnDisabled || r.entity.EditAble){ this.isSaveShow = true; }else{ this.isEditShow = true; this.isDeliveryShow = true; this.isOpenToInvoiceShow = true; this.isPraseToPDFShow = true; this.isOpenReportShow = true; this.isDeleteShow = true; } this.Existarrive = r.entity.Existarrive; console.log('this.EditAble = ' + this.EditAble); this.hasHosPro = r.entity.hasHosPro; //disable if(Object.values(r.entity.coc).length > 0){ this.cocLwc = r.entity.coc; console.log('this.cocLwc = ' + JSON.stringify(this.cocLwc)); var coc = r.entity.coc; this.cocId = coc.Id; coc.SummonsStatus = coc.SummonsStatus_c__c; if(coc.SummonsStatus_c__c == '已完成'){ this.isEditDisabled = true; } if(coc.SummonsStatus_c__c == '批准' || coc.SummonsStatus_c__c == '已销售待上传纳品书' || coc.SummonsStatus_c__c == '出库单已打印' || coc.SummonsStatus_c__c == '已完成'){ this.isDeliveryDisabled = true; } if(((coc.Billed_Status__c != '全部开票' && coc.SummonsStatus_c__c == '已完成') || coc.Onchange_order__c == true) && coc.SummonsForDirction__c != '互相调货'){ this.isOpenToInvoiceDisabled = false; } if(coc.SummonsStatus_c__c == '已销售待上传纳品书' || coc.SummonsStatus_c__c == '批准' || coc.SummonsStatus_c__c == '出库单已打印' || coc.SummonsStatus_c__c == '草案中'){ this.isPraseToPDFDisabled = false; } if(coc.Billed_Status__c != '还没开票' || coc.SummonsStatus_c__c == '已完成'){ this.isOpenReportDisabled = false; } if(coc.SummonsStatus_c__c == '已销售待上传纳品书' || coc.SummonsStatus_c__c == '价格未定' || coc.SummonsStatus_c__c == '批准' || coc.SummonsStatus_c__c == '出库单已打印' || coc.SummonsStatus_c__c == '已完成'){ this.isDeleteDisabled = true; } this.isConInvoiceShow = (coc.SummonsStatus_c__c == '已完成' && coc.SummonsForDirction__c != '互相调货') ? true : false; this.summonsStatusPriceNotDetermined = coc.SummonsStatus_c__c == '价格未定' ? true : false; this.isSummonsForDirctionTwoShow = coc.SummonsForDirction__c == '销售给二级经销商' ? true : false; } this.isSearchShow = (!this.Existarrive && r.entity.coc.SummonsStatus_c__c != '价格未定' && r.entity.EditAble) ? true : false; this.hidecheckboxcolumn = !this.isSearchShow; this.arriveorder = r.entity.arriveorder; this.is345Show = (this.arriveorder == '' && this.Existarrive == false && this.EditAble) ? true : false; //如果不显示345分类,columns里面删除3,4,5分类 if(!this.is345Show){ for(var i=0; i<this.columns.length; i++){ if(this.columns[i].label == '第3分类'){ this.columns.splice(i,1); } } for(var i=0; i<this.columns.length; i++){ if(this.columns[i].label == '第4分类'){ this.columns.splice(i,1); } } for(var i=0; i<this.columns.length; i++){ if(this.columns[i].label == '第5分类'){ this.columns.splice(i,1); } } for(var i=0; i<this.editColumns.length; i++){ if(this.editColumns[i].label == '第3分类'){ this.editColumns.splice(i,1); } } for(var i=0; i<this.editColumns.length; i++){ if(this.editColumns[i].label == '第4分类'){ this.editColumns.splice(i,1); } } for(var i=0; i<this.editColumns.length; i++){ if(this.editColumns[i].label == '第5分类'){ this.editColumns.splice(i,1); } } } //如果EditAble==false,删除 出货金额(元) 有效期内库存(盒) 有效期内库存(个) 3列 展示 还没发票数量 返品数量 已发票数量 if(!this.EditAble){ let object1 = { label: this.InvoiceProNotLabel, fieldName: 'InvoiceProNot_count__c', hideDefaultActions: true }; let object2 = { label: this.RrturnProLabel, fieldName: 'RrturnPro_count__c', hideDefaultActions: true }; let object3 = { label: this.InvoicedLabel, fieldName: 'Invoiced_Procount__c', hideDefaultActions: true }; this.editColumns.push(object1); this.editColumns.push(object2); this.editColumns.push(object3); } //如果hasHosPro = true 医院特价 if(this.hasHosPro){ let object1 = { label: '医院特价', fieldName: 'InvoiceProNot_count__c', hideDefaultActions: true }; this.columns.push(object1); this.editColumns.push(object1); } //出库单信息 this.isSummonsFlag = r.entity.SummonsFlag == 'visible' ? true : false; console.log('r.entity.provinceOptsMap = ' + r.entity.provinceOptsMap); for(var key in r.entity.provinceOptsMap){ let object = {}; object['label'] = r.entity.provinceOptsMap[key]; object['value'] = key; this.secondaryDistributorOptions.push(object); } for(var key in r.entity.outOutPatternOptionMap){ let object = {}; object['label'] = r.entity.outOutPatternOptionMap[key]; object['value'] = key; this.outOutPatternOptionList.push(object); } console.log('this.secondaryDistributorOptions = ' + JSON.stringify(this.secondaryDistributorOptions)); this.HospitalName = r.entity.HospitalName; this.sumPrice = r.entity.sumPrice + '元'; this.isShowSpinner = false; this.showTable = true; console.log('ESetid = ' + this.ESetid) } else { console.log('r = ' + JSON.stringify(r)) this.showToast('Error', r.msg); } }) } ChangeDirction(event){ let value = event.target.value; this.summonsForDirction = value; this.cocLwc['SummonsForDirction__c'] = value; console.log('选择了 = ' + value); switch(value){ case '直接销售给医院': this.isDisabledHospitalName = false; this.isDisabledForCustomerText = false; this.secondaryDistributor = ''; this.ForDealerText = ''; this.isDisabledForDealerText = true; this.isDisabledSecondaryDistributor = true; break; case '医院试用': this.isDisabledHospitalName = false; this.isDisabledForCustomerText = false; this.isDisabledForDealerText = false; this.isDisabledSecondaryDistributor = false; break; case '销售给二级经销商': this.isDisabledHospitalName = false; this.isDisabledForCustomerText = false; this.isDisabledForDealerText = false; this.isDisabledSecondaryDistributor = false; break; case '互相调货': this.isDisabledHospitalName = true; this.HospitalName = ''; this.OECId = ''; this.isDisabledForCustomerText = true; this.ForCustomerText = ''; this.isDisabledForDealerText = false; this.isDisabledSecondaryDistributor = false; break; default: this.isDisabledHospitalName = false; this.isDisabledForCustomerText = false; this.isDisabledForDealerText = false; this.isDisabledSecondaryDistributor = false; } } dataChange(event) { let fieldName = event.target.getAttribute("data-field"); let value = event.detail.value; switch (fieldName) { case 'summonsForDirction': this.summonsForDirction = value; break case 'secondaryDistributor': this.secondaryDistributor = value; break case 'HospitalName': this.HospitalName = value; break case 'ForDealerText': this.ForDealerText = value; this.cocLwc['Order_ForDealerText__c'] = value; break case 'ForCustomerText': this.cocLwc['Order_ForCustomerText__c'] = value; this.ForCustomerText = value; break case 'sumPrice': this.sumPrice = value; break case 'NoConfirmedPrice': this.NoConfirmedPrice = !this.NoConfirmedPrice this.cocLwc['NoConfirmedPrice__c'] = this.NoConfirmedPrice; console.log('this.NoConfirmedPrice = ' + this.NoConfirmedPrice) break case 'consumableName': this.consumableName = value; break case 'Category3': this.Category3 = value; break case 'Category4': this.Category4 = value; break case 'Category5': this.Category5 = value; break case 'searchHospitalName': this.searchHospitalName = value; break } } showToast(type, msg) { this.isShowSpinner = false; const event = new ShowToastEvent({ title: type, variant: type, message: msg }); this.dispatchEvent(event); } searchProductJs(){ this.isShowSpinner = true; //this.showTable = false; let cloneData = this.data; for(var i in cloneData){ cloneData[i]['Name'] = cloneData[i].Name__c; cloneData[i]['Category3'] = cloneData[i].Category3__c; cloneData[i]['Category4'] = cloneData[i].Category4__c; cloneData[i]['Category5'] = cloneData[i].Category5__c; cloneData[i]['BoxPiece'] = cloneData[i].Box_Piece__c; delete cloneData[i].Name__c; delete cloneData[i].Category3__c; delete cloneData[i].Category4__c; delete cloneData[i].Category5__c; delete cloneData[i].Box_Piece__c; } console.log('cloneData = ' + JSON.stringify(cloneData)); searchConsumableorderdetails({ agencyProTypeLwc : this.agencyProType, accountNameLwc : this.accountName, userWorkLocationLwc : this.userWorkLocation, outOutPattern : this.outOutPattern, category1 : this.consumableName, category3 : this.Category3, category4 : this.Category4, category5 : this.Category5, editAbleLwc : this.EditAble, pageRecordsLwcLwc : cloneData, consumableproductdetailsRecordsLwc : this.consumableproductdetailsRecords, arriveorderLwc : this.arriveorder }).then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('r = ' + JSON.stringify(r)); if (r.status == 'Success') { let tempData = []; //this.data = r.entity.pageRecords; tempData = r.entity.pageRecords; for(var i in tempData){ let unitOptions = []; for(var key in tempData[i].boxorpieceMap){ let unitOption = {}; unitOption['label'] = tempData[i].boxorpieceMap[key]; unitOption['value'] = key; unitOptions.push(unitOption); } tempData[i]['unitOptions'] = unitOptions; tempData[i]['unitValue'] = unitOptions[0].value; tempData[i]['recordId'] = tempData[i].Prod.Id; tempData[i]['Id'] = tempData[i].Prod.Id; tempData[i]['Name__c'] = tempData[i].Prod.Name__c; tempData[i]['SFDA_Status__c'] = tempData[i].Prod.SFDA_Status__c; tempData[i]['Category3__c'] = tempData[i].Prod.Category3__c; tempData[i]['Category4__c'] = tempData[i].Prod.Category4__c; tempData[i]['Category5__c'] = tempData[i].Prod.Category5__c; tempData[i]['Box_Piece__c'] = tempData[i].orderdetails1.Box_Piece__c; tempData[i]['shipmentNumber'] = tempData[i].orderdetails1.Shipment_Count__c; tempData[i]['shippingUnitPrice'] = tempData[i].orderdetails1.Delivery_List_RMB__c; console.log('shippingUnitPrice = ' + tempData[i]['shippingUnitPrice']); if(tempData[i]['shippingUnitPrice'] && tempData[i]['shipmentNumber']) tempData[i]['shipmentAmount'] = this.amend(tempData[i]['shipmentNumber'],tempData[i]['shippingUnitPrice'],'*') } this.data = tempData; console.log('this.data = ' + JSON.stringify(this.data)); //this.showTable = true; this.isShowSpinner = false; } }) } searchHospitalNameModal(){ console.log('searchHospitalNameModal') hospitalInit({ ctype : this.agencyProType }).then((r) => { r = JSON.parse(JSON.stringify(r)); if (r.status == 'Success') { this.hospitalList = r.entity.at; for(var i in this.hospitalList){ this.hospitalList[i]['stateMasterName'] = this.hospitalList[i].State_Master__r.Name; } console.log('hospitalInit r = ' + JSON.stringify(this.hospitalList)); this.isModalOpen = true; } }); } searchHospital(){ console.log('this.searchHospitalName = ' + this.searchHospitalName); serContact({ searchName : this.searchHospitalName, ctype : this.agencyProType }).then((r) => { r = JSON.parse(JSON.stringify(r)); if (r.status == 'Success') { this.hospitalList = r.entity.at; for(var i in this.hospitalList){ this.hospitalList[i]['stateMasterName'] = this.hospitalList[i].State_Master__r.Name; } console.log('hospitalInit r = ' + JSON.stringify(this.hospitalList)); } }); } searchHandleRowAction(event) { console.log('searchHandleRowAction') let row = event.detail.row; this.OECId = row.Id; this.HospitalName = row.Name; console.log('this.OECId = ' + this.OECId + ' this.HospitalName = ' + this.HospitalName); this.isModalOpen = false; console.log('this.isModalOpen = ' + this.isModalOpen); } clearAgencyI(event){ this.HospitalName = event.target.value; if(this.HospitalName == '' || this.HospitalName == null){ this.OECId = ''; } console.log('this.HospitalName = ' + this.HospitalName); console.log('this.OECId = ' + this.OECId); if (this.OECId != null && this.OECId != '') { this.checkOutPattern(); } } checkOutPattern(){ //根据用户选中的产品给 出库单上的是否医院特价出库字段赋值 let ishos = 0; for(var i in this.data){ if(this.data[i].check == true && this.data[i].hospitalSpecialOffer == true){ ishos = ishos +1; } } if (ishos > 0) { this.cocLwc['OutPattern__c'] = true; }else{ this.cocLwc['OutPattern__c'] = false; } } closeModal(){ this.isModalOpen = false; } handleUnitChange(event){ console.log('handleUnitChange') const unitDetail = event.detail; console.log('unitDetail = ' + JSON.stringify(unitDetail)) for(var i in this.data){ if(this.data[i].recordId == unitDetail.data.recordId){ this.data[i].unitValue = unitDetail.data.unitValue; this.data[i].orderdetails1['Box_Piece__c'] = unitDetail.data.unitValue; } } console.log('this.data = ' + JSON.stringify(this.data)) } handleShipmentNumber(event){ console.log('handleShipmentNumber') const numberDetail = event.detail; console.log('numberDetail = ' + JSON.stringify(numberDetail)) let index = 0; for(var i in this.data){ if(this.data[i].recordId == numberDetail.data.recordId){ index = i; this.data[i].shipmentNumber = Number(numberDetail.data.shipmentnumber); this.data[i].orderdetails1['Shipment_Count__c'] = Number(numberDetail.data.shipmentnumber); console.log('this.data[i].shipmentNumber = ' + this.data[i].shipmentNumber) } } this.ComputePrice(index,this.data[index].shipmentNumber,this.data[index].shippingUnitPrice); } handleShipmentUnitPrice(event){ console.log('handleShipmentUnitPrice') const priceDetail = event.detail; let index = 0; for(var i in this.data){ if(this.data[i].recordId == priceDetail.data.recordId){ index = i; this.data[i].shippingUnitPrice = Number(priceDetail.data.shipmentunitprice); this.data[i].orderdetails1['Delivery_List_RMB__c'] = Number(priceDetail.data.shipmentunitprice); console.log('this.data[i].shippingUnitPrice = ' + this.data[i].shippingUnitPrice) } } this.ComputePrice(index,this.data[index].shipmentNumber,this.data[index].shippingUnitPrice); } ComputePrice(index,number,price){ console.log('index = ' + index); console.log('number = ' + number); console.log('price = ' + price); let shipmentAmount = this.amend(number,price,'*'); console.log('shipmentAmount = ' + shipmentAmount); let sumPrice = 0.00; this.data[index].shipmentAmount = shipmentAmount; for(var i in this.data){ if(this.data[i].shipmentAmount) sumPrice += this.data[i].shipmentAmount; } this.sumPrice = sumPrice + '元'; //存下选择行,不会被清空 this.selectedRows = []; for(var i in this.data){ if(this.data[i].check){ this.selectedRows.push(this.data[i].Id); } } this.data = [...this.data]; console.log('this.selectedRows = ' + JSON.stringify(this.selectedRows)) console.log('this.data = ' + JSON.stringify(this.data)) } //num1 num2传入两个值 symbol +-*/符号 amend(num1,num2,symbol){ var str1=num1.toString(),str2=num2.toString(),result,str1Length,str2Length //解决整数没有小数点方法 try {str1Length= str1.split('.')[1].length} catch (error) {str1Length=0} try {str2Length= str2.split('.')[1].length} catch (error) {str2Length=0} var step=Math.pow(10,Math.max(str1Length,str2Length)) // console.log(step); switch (symbol) { case "+": result= (num1*step+num2*step)/step break; case "-": result= (num1*step-num2*step)/step break; case "*": result= ((num1*step)*(num2*step)) / step/step break; case "/": result= (num1*step)/(num2*step) break; default: break; } return result } getSelectedRows(event) { const selectedRows = event.detail.selectedRows; console.log('this.selectedRows = ' + this.selectedRows); for(var i in this.data){ this.data[i]['check'] = false; } for(var i in this.data){ for(var j in selectedRows){ if(this.data[i].Id == selectedRows[j].Id){ this.data[i]['check'] = true; } } } } saveConfirmJs(){ let msg = "出库价格仅可操作一次变更,保存后将无法修改。\n\n请确认!"; if(this.SummonsStatus == '价格未定'){ if(confirm(msg)==true){ this.saveConfirm() } }else{ this.saveConfirm() } } saveConfirm(){ this.isShowSpinner = true; let cloneData = this.data; for(var i in cloneData){ cloneData[i]['Name'] = cloneData[i].Name__c; cloneData[i]['Category3'] = cloneData[i].Category3__c; cloneData[i]['Category4'] = cloneData[i].Category4__c; cloneData[i]['Category5'] = cloneData[i].Category5__c; cloneData[i]['BoxPiece'] = cloneData[i].Box_Piece__c; delete cloneData[i].Name__c; delete cloneData[i].Category3__c; delete cloneData[i].Category4__c; delete cloneData[i].Category5__c; delete cloneData[i].Box_Piece__c; } console.log('this.cocLwc = ' + JSON.stringify(this.cocLwc)) console.log('this.OECId = ' + this.OECId) console.log('this.HospitalName = ' + this.HospitalName) console.log('this.secondaryDistributor = ' + this.secondaryDistributor) console.log('this.pageRecordsLwc = ' + JSON.stringify(cloneData)) console.log('this.accountid = ' + this.accountid) console.log('this.ESetid = ' + this.ESetid) console.log('this.consumableproductdetailsRecords = ' + JSON.stringify(this.consumableproductdetailsRecords)) save({ cocLwc : this.cocLwc, hospitalInfoLwc : this.OECId, hospitalNameLwc : this.HospitalName, secondaryDistributor : this.secondaryDistributor, pageRecordsLwc : cloneData, accountid : this.accountid, ESetId : this.ESetid, consumableproductdetailsRecordsLwc : this.consumableproductdetailsRecords }).then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('r = ' + JSON.stringify(r)); if (r.status == 'Success') { let url = '/lexsummonscreat?ESetid=' + r.entity.ESetId; this[NavigationMixin.Navigate]({ type: 'standard__webPage', attributes: { url: url } }); }else{ console.log('r.msg = ' + r.msg); this.showToast('Error', r.msg); } }).catch((error) => { console.log('error = ' + JSON.stringify(error)) }); } //打印指示单 PraseToPDFJs(){ console.log('this.cocLwc = ' + JSON.stringify(this.cocLwc)) console.log('this.ESetId = ' + this.ESetid) PraseToPDF({ cocLwc : this.cocLwc, ESetId : this.ESetid }).then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('r = ' + JSON.stringify(r)); if (r.status == 'Success') { window.open('/customer/summonsPDF?ESetid=' + r.entity.ESetId); }else{ console.log('r.msg = ' + r.msg); this.showToast('Error', r.msg); } }); } //显示明细 openReportJs(){ var reportId = this.ESetid; reportId = reportId.substring(0,15); window.open("/customer/" +this.ConsumableOut_report+ "?pv1="+ reportId); } setVisitorPlace(){ console.log('setVisitorPlace') if(this.summonsForDirction == '互相调货'){ } } vpClear2Delay(event){ console.log('vpClear2Delay') if(this.summonsForDirction != '互相调货'){ this.cocLwc['Order_ForDealerText__c'] = event.target.value; }else{ console.log('Order_ForDealerTextID__c = ' + this.cocLwc['Order_ForDealerTextID__c']) this.cocLwc['Order_ForDealerText__c'] = (this.cocLwc['Order_ForDealerTextID__c'] == '' || this.cocLwc['Order_ForDealerTextID__c'] == null || this.cocLwc['Order_ForDealerTextID__c'] == undefined) ? '' : this.cocLwc['Order_ForDealerText__c']; console.log('this.cocLwc = ' + JSON.stringify(this.cocLwc)); this.ForDealerText = this.cocLwc['Order_ForDealerText__c']; event.target.value = this.cocLwc['Order_ForDealerText__c']; console.log('this.ForDealerText = ' + this.ForDealerText); } } handleSearch(event) { debugger const lookupElement = event.target; console.log('event.detail = ' + JSON.stringify(event.detail)) apexSearch({ searchTerm : event.detail.searchTerm, selectedIds : event.detail.selectedIds }) .then(results => { lookupElement.setSearchResults(results); }) .catch(error => { // TODO: handle error console.log('error'+JSON.stringify(error)); }); } handleSelectionChange(event) { // Get the selected ids from the event (same interface as lightning-input-field) const selectedIds = event.detail; // Or, get the selection objects with ids, labels, icons... const selection = event.target.getSelection(); // TODO: do something with the lookup selection } } force-app/main/default/lwc/lexSummonsCreat/lexSummonsCreat.js-meta.xml
New file @@ -0,0 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>56.0</apiVersion> <isExposed>true</isExposed> <targets> <target>lightningCommunity__Page</target> <target>lightningCommunity__Default</target> </targets> </LightningComponentBundle> force-app/main/default/lwc/lexinventoryViewLWC/lexinventoryViewLWC.html
New file @@ -0,0 +1,176 @@ <template> <div style="border: 1px solid #D4D4D4;border-radius:5px;"> <div style="border-top: 3px solid #51606E;;border-bottom: 1px solid #D4D4D4;padding:3px;"> <p style="font-size: 19px;"><strong>库存管理</strong></p> </div> <div style="padding:10px;"> <div style="border: 1px solid #D4D4D4;border-radius:5px;margin-bottom:7px;"> <div style="border-top: 3px solid #51606E;border-bottom: 1px solid #D4D4D4;padding:3px;"> <table> <colgroup> <col width="160px"/> <col width="100px"/> <col width="10px"/> <col width="70px"/> <col width="100px"/> <col width="10px"/> <col width="90px"/> <col width="100px"/> <col width="10px"/> <col width="85px"/> <col width="100px"/> <col width="10px"/> <col width="70px"/> <col width="100px"/> </colgroup> <tbody> <tr> <td></td> <td><lightning-button label="库存盘点" title="库存盘点" onclick={inventoryCount} ></lightning-button></td> <td></td> <td></td> <td style="width:100px;"><lightning-button label="过期库存销存" title="过期库存销存" onclick={handleClick} ></lightning-button></td> <td></td> <td></td> <td style="width:100px;"><lightning-button label="拆盒" title="拆盒" onclick={handleClick} ></lightning-button></td> <td></td> <td></td> <td style="width:100px;"><lightning-button label="取消拆盒" title="取消拆盒" onclick={handleClick}></lightning-button></td> </tr> </tbody> </table> </div> </div> <div style="border: 1px solid #D4D4D4;border-radius:5px;margin-bottom:7px;"> <div style="border-top: 3px solid #51606E;border-bottom: 1px solid #D4D4D4;padding:3px;"> <table> <colgroup> <col width="160px"/> <col width="100px"/> <col width="10px"/> <col width="70px"/> <col width="100px"/> <col width="10px"/> <col width="70px"/> <col width="100px"/> <col width="10px"/> <col width="90px"/> <col width="100px"/> <col width="85px"/> <col width="100px"/> <col width="10px"/> <col width="70px"/> <col width="100px"/> </colgroup> <tbody> <tr> <td style="width: 21%;"> <lightning-input type="text" name="Name" label="消耗品名称" value={Name} variant="label-inline" onchange={handleChange} data-field ="Name" ></lightning-input> </td> <td style="width: 21%;"> <lightning-combobox name="CategoryThree" label="第3分类" value={value} placeholder="请选择..." options={optionscatone} variant="label-inline" onchange={handleChange}></lightning-combobox> </td> <td style="width: 21%;"> <lightning-combobox name="CategoryFour" label="第4分类" value={value} placeholder="请选择..." options={options2} variant="label-inline" onchange={handleChange}></lightning-combobox> </td> <td style="width: 21%;"> <lightning-combobox name="CategoryFive" label="第5分类" value={value} placeholder="请选择..." options={options3} variant="label-inline" onchange={handleChange}></lightning-combobox> </td> <td style="width: 3%;"></td> <td style="width: 8%;"> <lightning-button label="消耗品搜索" onclick={searchOrderDetail}></lightning-button> </td> <td style="width: 8%;"> <lightning-button label="清空" onclick={clearAll}></lightning-button> </td> </tr> </tbody> </table> </div> </div> <div style="border: 1px solid #D4D4D4;border-radius:5px;margin-bottom:7px;"> <div style="border-top: 3px solid #51606E;border-bottom: 1px solid #D4D4D4;padding:3px;"> <p style="font-size: 16px;"><strong>库存详情</strong></p> </div> <div style="padding:10px;"> <template if:true={showTable}> <c-lwc-datatable-utility records={data} total-records={data.length} columns = {columns} key-field="Id" show-search-box="true" max-row-selection={data.length} onpaginatorchange={handlePaginatorChange}> </c-lwc-datatable-utility> </template> <!-- <table class="list" border="0" cellpadding="0" cellspacing="0" id="example"> <thead> <tr class="headerRow"> <th>消耗品名称</th> <th>第3分类</th> <th>第4分类</th> <th>第5分类</th> <th>规格</th> <th>单位</th> <th>注册证编码号</th> <th>注册证效期</th> <th>CFDA状态</th> <th>使用期限</th> <th>有效期内库存</th> <th>过期库存</th> <template if:true={hasHos}> <th>医院特价</th> </template> </tr> </thead> <tbody> <template for:each={pageRecords} for:item="m"> <tr key={m.Prod.Name__c}> <td align="center">{m.Prod.Name__c}</td> <td align="center">{m.Prod.Category3__c}</td> <td align="center">{m.Prod.Category4__c}</td> <td align="center">{m.Prod.Category5__c}</td> <td align="center">{m.packing_list}</td> <td align="center">{m.BoxPiece}</td> <td align="center">{m.approbation_No}</td> <td align="center">{m.expiration_Date}</td> <td align="center">{m.Prod.SFDA_Status__c}</td> <td align="center">{m.guaranteeperiod}</td> <td align="center">{m.limitCount}</td> <td align="center">{m.overlimitCount}</td> <template if:true={hasHos}> <td> <template if:true={m.hospitalSpecialOffer}> √ </template> </td> </template> </tr> </template> </tbody> </table> --> <!-- <div style="height: 300px;"> <lightning-datatable key-field="id" data={data} columns={columns} hide-checkbox-column default-sort-direction={defaultSortDirection} sorted-direction={sortDirection} sorted-by={sortedBy} onsort={onHandleSort}> </lightning-datatable> </div> --> </div> </div> </div> </div> </template> force-app/main/default/lwc/lexinventoryViewLWC/lexinventoryViewLWC.js
New file @@ -0,0 +1,323 @@ import { LightningElement, wire, api, track } from 'lwc'; import oninit from '@salesforce/apex/LexInventoryViewController.init'; import { ShowToastEvent } from 'lightning/platformShowToastEvent'; import searchOrder from '@salesforce/apex/LexInventoryViewController.searchConsumableorderdetails'; import { NavigationMixin } from 'lightning/navigation'; const columns = [ { label: '消耗品名称', fieldName: 'Name__c', type: 'Name', sortable: true, cellAttributes: { alignment: 'left' } }, { label: '第三分类', fieldName: 'Category3__c', hideDefaultActions: true, sortable: true }, { label: '第四分类', fieldName: 'Category4__c', hideDefaultActions: true, sortable: true }, { label: '第五分类', fieldName: 'Category5__c', hideDefaultActions: true }, { label: '规格', fieldName: 'packing_list', hideDefaultActions: true, initialWidth: 100 }, { label: '单位', fieldName: 'BoxPiece', hideDefaultActions: true, initialWidth: 100 }, { label: '注册证编码号', fieldName: 'approbation_No', hideDefaultActions: true, initialWidth: 100 }, { label: '注册有效期', fieldName: 'expiration_Date', hideDefaultActions: true, initialWidth: 150 }, { label: 'CFDA状态', fieldName: 'SFDA_Status__c', hideDefaultActions: true }, { label: '使用期限', fieldName: 'guaranteeperiod', hideDefaultActions: true }, { label: '有效期内库存', fieldName: 'limitCount', hideDefaultActions: true, sortable: true }, { label: '过期库存', fieldName: 'overlimitCount', hideDefaultActions: true } ]; export default class LexinventoryViewLWC extends LightningElement { @track pageRecords = []; @track data = []; @track message = ''; @track Name; @track CategoryThree; @track CategoryFour; @track CategoryFive; @track orderDetZaikuList = []; @track accountName; @track agencyProType; @track userWorkLocation; @track value = ''; @track showTable = false; @track optionscatone = []; @track options2 = []; @track options3 = []; columns = columns; defaultSortDirection = 'asc'; sortDirection = 'asc'; sortedBy; // columns = columns; connectedCallback() { oninit() .then((result) => { result = JSON.parse(JSON.stringify(result)); console.log('result.status = ' + result.status); console.log('result = ' + JSON.stringify(result)); console.log('result 1= ' + JSON.stringify(result.entity)); console.log( 'result 2= ' + JSON.stringify(result.entity.pageRecords) ); console.log( 'result.entity.categoryOptionMap 2= ' + JSON.stringify(result.entity.categoryOptionMap) ); console.log( 'result.entity.categoryOptionMap 2= ' + JSON.stringify(result.entity.category4OptionMap) ); console.log( 'result.entity.categoryOptionMap 2= ' + JSON.stringify(result.entity.category5OptionMap) ); if (result.status == 'Success') { // this.pageRecords = result.entity.pageRecords; this.data = result.entity.pageRecords; for (var i in this.data) { this.data[i]['Name__c'] = this.data[i].Prod.Name__c; this.data[i]['Category3__c'] = this.data[i].Prod.Category3__c; this.data[i]['Category4__c'] = this.data[i].Prod.Category3__c; this.data[i]['Category5__c'] = this.data[i].Prod.Category3__c; this.data[i]['SFDA_Status__c'] = this.data[i].Prod.SFDA_Status__c; } console.log(); this.showTable = true; this.orderDetZaikuList = result.entity.orderDetZaikuList; this.accountName = result.entity.accountName; this.agencyProType = result.entity.agencyProType; this.userWorkLocation = result.entity.userWorkLocation; let option1ValueTemp = []; for (var key in result.entity.categoryOptionMap) { let object = {}; object['label'] = result.entity.categoryOptionMap[key]; object['value'] = key; option1ValueTemp.push(object); } this.optionscatone = option1ValueTemp; console.log( ' this.optionscatone===>' + JSON.stringify(this.optionscatone) ); let option2ValueTemp = []; for (var key in result.entity.category4OptionMap) { let object = {}; object['label'] = result.entity.category4OptionMap[key]; object['value'] = key; option2ValueTemp.push(object); } this.options2 = option2ValueTemp; for (var key in result.entity.category5OptionMap) { let object = {}; object['label'] = result.entity.category5OptionMap[key]; object['value'] = key; this.options3.push(object); } console.log(' this.data=====>' + this.data); console.log('this.accountName=====>' + this.accountName); console.log( 'this.agencyProType=====>' + this.agencyProType ); console.log( 'this.userWorkLocationt=====>' + this.userWorkLocation ); console.log( 'orderDetZaikuList=====>' + this.orderDetZaikuList ); } else { console.log('Error:' + result.errorMsg); const evt = new ShowToastEvent({ title: '解析失败', message: result.errorMsg, variant: 'error' }); this.dispatchEvent(evt); } }) .catch((error) => { console.log('error = ' + JSON.stringify(error)); }); } get options2() { return this.options2; } get options3() { return this.options3; } sortBy(field, reverse, primer) { const key = primer ? function (x) { return primer(x[field]); } : function (x) { return x[field]; }; return function (a, b) { a = key(a); b = key(b); return reverse * ((a > b) - (b > a)); }; } onHandleSort(event) { const { fieldName: sortedBy, sortDirection } = event.detail; const cloneData = [...this.data]; cloneData.sort(this.sortBy(sortedBy, sortDirection === 'asc' ? 1 : -1)); this.data = cloneData; this.sortDirection = sortDirection; this.sortedBy = sortedBy; } handlePaginatorChange(event) { this.recordsToDisplay = event.detail.recordsToDisplay; this.preSelected = event.detail.preSelected; if (this.recordsToDisplay && this.recordsToDisplay > 0) { this.rowNumberOffset = this.recordsToDisplay[0].rowNumber - 1; } else { this.rowNumberOffset = 0; } } handleChange(event) { let fieldName = event.target.getAttribute('data-field'); let value = event.detail.value; console.log('======>fieldName' + fieldName); console.log('======>value' + value); switch (fieldName) { case 'Name': this.Name = value; break; case 'CategoryThree': this.CategoryThree = value; break; case 'CategoryFour': this.CategoryFour = value; break; case 'CategoryFive': this.CategoryFive = value; break; default: console.log('no data'); } } searchOrderDetail() { this.showTable = false; console.log('进入搜索11111111111111'); console.log('进入搜索'); console.log('this.Name = ' + this.Name); searchOrder({ category1: this.Name, Category3: this.CategoryThree, Category4: '', Category5: '', orderDetZaikuListLWC: JSON.stringify(this.orderDetZaikuList), accountName: this.accountName, agencyProType: this.agencyProType, userWorkLocation: this.userWorkLocation }) .then((result) => { result = JSON.parse(JSON.stringify(result)); console.log('result搜索 = ' + JSON.stringify(result)); if (result.status == 'Success') { const evt = new ShowToastEvent({ title: '搜索成功', message: result.msg, variant: 'Success' }); this.dispatchEvent(evt); this.pageRecords = result.entity.pageRecords; this.showTable = true; } else { const evt = new ShowToastEvent({ title: '', message: result.msg, variant: 'Success' }); this.dispatchEvent(evt); this.pageRecords = []; console.log(' this.data===>= ' + this.pageRecords); } }) .catch((error) => { console.log('error = ' + JSON.stringify(error)); }); } inventoryCount() { console.log('111库存盘点'); this[NavigationMixin.Navigate]({ type: 'standard__webPage', attributes: { url: '/lexInventoryCount' } }); } clearAll() { this.Name = ''; this.value = '无'; this.template.querySelectorAll('lightning-combobox').forEach((each) => { each.value = null; }); } } force-app/main/default/lwc/lexinventoryViewLWC/lexinventoryViewLWC.js-meta.xml
New file @@ -0,0 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>56.0</apiVersion> <isExposed>true</isExposed> <targets> <target>lightningCommunity__Page</target> <target>lightningCommunity__Default</target> </targets> </LightningComponentBundle> force-app/main/default/lwc/lookup/lookup.css
New file @@ -0,0 +1,30 @@ .slds-combobox__input, .slds-combobox_container { transition: border 0.1s linear, box-shadow 0.1 linear; } .slds-combobox__input { box-shadow: none; } .slds-combobox__input.has-custom-border { box-shadow: 0 0 0 2px #fff inset, 0 0 0 3px rgb(221, 219, 218) inset; } .slds-combobox__input.has-custom-error { border: 1px solid rgb(194, 57, 52); box-shadow: rgb(194, 57, 52) 0 0 0 1px inset; } .slds-combobox_container.has-custom-error { border: none !important; } .slds-combobox__input.has-custom-height { height: 32px !important; } .form-error { color: rgb(194, 57, 52); display: block; } force-app/main/default/lwc/lookup/lookup.html
New file @@ -0,0 +1,139 @@ <template> <div class={getFormElementClass}> <label lwc:if={label} class={getLabelClass} for="combobox"> <abbr lwc:if={required} title="required" class="slds-required">*</abbr> {label} </label> <div class="slds-form-element__control"> <div class={getContainerClass}> <div class={getDropdownClass} aria-expanded={isListboxOpen} aria-haspopup="listbox" aria-owns="listbox" role="combobox"> <!-- Search input start --> <div class={getComboboxClass} role="none"> <template lwc:if={isSingleEntry}> <lightning-icon icon-name={getSelectIconName} size="small" alternative-text="Selected item icon" class={getSelectIconClass}> </lightning-icon> </template> <!-- Text input --> <input type="text" class={getInputClass} aria-autocomplete="list" aria-controls="listbox" aria-activedescendant={_focusedResultIndex} autocomplete="off" role="textbox" id="combobox" placeholder={placeholder} value={getInputValue} title={getInputTitle} readonly={isInputReadonly} disabled={disabled} onfocus={handleFocus} onblur={handleBlur} oninput={handleInput} onkeydown={handleKeyDown} /> <!-- Search icon --> <lightning-icon icon-name="utility:search" size="x-small" alternative-text="Search icon" class={getSearchIconClass}></lightning-icon> <!-- Clear selection button icon for single entry lookups --> <template lwc:if={isSingleEntry}> <button title="Remove selected option" type="button" onclick={handleClearSelection} class={getClearSelectionButtonClass} disabled={disabled}> <lightning-icon icon-name="utility:close" size="x-small" alternative-text="Remove selected option" class="slds-button__icon"></lightning-icon> </button> </template> </div> <!-- Search input end --> <!-- Result list box start --> <div id="listbox" role="listbox" aria-label={label} onmousedown={handleComboboxMouseDown} onmouseup={handleComboboxMouseUp} class={getListboxClass}> <ul class="slds-listbox slds-listbox_vertical" role="presentation"> <!-- Spinner to display when waiting for results of search --> <div lwc:if={loading}> <lightning-spinner alternative-text="Loading" size="small"></lightning-spinner> </div> <!-- Result list start --> <template for:each={searchResultsLocalState} for:item="item" for:index="index" lwc:if={hasResults}> <li key={item.result.id} role="presentation" class="slds-listbox__item"> <div class={item.classes} role="option" id={index} aria-label={item.result.title} onclick={handleResultClick} data-recordid={item.result.id}> <span class="slds-media__figure slds-listbox__option-icon"> <lightning-icon icon-name={item.result.icon} size="small" alternative-text="Result item icon"></lightning-icon> </span> <span class="slds-media__body"> <span class="slds-listbox__option-text slds-listbox__option-text_entity"> <lightning-formatted-rich-text value={item.result.titleFormatted} disable-linkify> </lightning-formatted-rich-text> </span> <span lwc:if={item.result.subtitleFormatted} class="slds-listbox__option-meta slds-listbox__option-meta_entity"> <lightning-formatted-rich-text value={item.result.subtitleFormatted} disable-linkify> </lightning-formatted-rich-text> </span> </span> </div> </li> </template> <!-- Result list end --> <!-- No results start --> <template lwc:else> <li role="presentation"> <span class="slds-media slds-listbox__option_entity" role="option"> <span lwc:if={loading} class="slds-media__body">Loading...</span> <span lwc:else class="slds-media__body">No results.</span> </span> </li> </template> <!-- No results end --> <!-- Create new records --> <template for:each={newRecordOptions} for:item="newRecord"> <li key={newRecord.value} role="presentation" class="slds-listbox__item"> <div class="slds-media slds-media_center slds-listbox__option slds-listbox__option_entity" onclick={handleNewRecordClick} data-sobject={newRecord.value} role="option"> <span class="slds-media__figure slds-listbox__option-icon"> <lightning-icon icon-name="utility:add" size="small" alternative-text={newRecord.label}></lightning-icon> </span> <span class="slds-media__body"> <span class="slds-listbox__option-text">{newRecord.label}</span> </span> </div> </li> </template> <!-- Create new records end --> </ul> </div> <!-- Result list box end --> </div> </div> <!-- Multi-selection start --> <template lwc:if={isMultiEntry}> <div id="selection" role="listbox" aria-label={label} aria-orientation="horizontal"> <ul class="slds-listbox slds-listbox_inline slds-var-p-top_xxx-small" role="group" aria-label="Selected options"> <template for:each={selection} for:item="item"> <li key={item.id} role="presentation"> <lightning-pill label={item.title} title={item.title} onremove={handleRemoveSelectedItem} name={item.id}> <lightning-icon icon-name={item.icon}></lightning-icon> </lightning-pill> </li> </template> </ul> </div> </template> <!-- Multi-selection end --> <!-- Errors start --> <template for:each={_errors} for:item="error"> <div key={error.id} role="alert" class="slds-form-element__label slds-var-m-top_xx-small form-error"> {error.message} </div> </template> <!-- Errors end --> </div> </div> </template> force-app/main/default/lwc/lookup/lookup.js
New file @@ -0,0 +1,468 @@ import { LightningElement, api } from 'lwc'; import { NavigationMixin } from 'lightning/navigation'; const SEARCH_DELAY = 300; // Wait 300 ms after user stops typing then, peform search const KEY_ARROW_UP = 38; const KEY_ARROW_DOWN = 40; const KEY_ENTER = 13; const VARIANT_LABEL_STACKED = 'label-stacked'; const VARIANT_LABEL_INLINE = 'label-inline'; const VARIANT_LABEL_HIDDEN = 'label-hidden'; const REGEX_SOSL_RESERVED = /(\?|&|\||!|\{|\}|\[|\]|\(|\)|\^|~|\*|:|"|\+|-|\\)/g; const REGEX_EXTRA_TRAP = /(\$|\\)/g; export default class Lookup extends NavigationMixin(LightningElement) { // Public properties @api variant = VARIANT_LABEL_STACKED; @api label = ''; @api required = false; @api disabled = false; @api placeholder = ''; @api isMultiEntry = false; @api scrollAfterNItems = null; @api newRecordOptions = []; @api minSearchTermLength = 2; // Template properties searchResultsLocalState = []; loading = false; // Private properties _errors = []; _hasFocus = false; _isDirty = false; _searchTerm = ''; _cleanSearchTerm; _cancelBlur = false; _searchThrottlingTimeout; _searchResults = []; _defaultSearchResults = []; _curSelection = []; _focusedResultIndex = null; // PUBLIC FUNCTIONS AND GETTERS/SETTERS @api set selection(initialSelection) { if (initialSelection) { this._curSelection = Array.isArray(initialSelection) ? initialSelection : [initialSelection]; this.processSelectionUpdate(false); } } get selection() { return this._curSelection; } @api set errors(errors) { this._errors = errors; // Blur component if errors are passed if (this._errors?.length > 0) { this.blur(); } } get errors() { return this._errors; } @api get validity() { return { valid: !this._errors || this._errors.length === 0 }; } @api get value() { return this.getSelection(); } @api setSearchResults(results) { // Reset the spinner this.loading = false; // Clone results before modifying them to avoid Locker restriction let resultsLocal = JSON.parse(JSON.stringify(results)); // Remove selected items from search results const selectedIds = this._curSelection.map((sel) => sel.id); resultsLocal = resultsLocal.filter((result) => selectedIds.indexOf(result.id) === -1); // Format results const cleanSearchTerm = this._searchTerm.replace(REGEX_SOSL_RESERVED, '.?').replace(REGEX_EXTRA_TRAP, '\\$1'); const regex = new RegExp(`(${cleanSearchTerm})`, 'gi'); this._searchResults = resultsLocal.map((result) => { // Format title and subtitle if (this._searchTerm.length > 0) { result.titleFormatted = result.title ? result.title.replace(regex, '<strong>$1</strong>') : result.title; result.subtitleFormatted = result.subtitle ? result.subtitle.replace(regex, '<strong>$1</strong>') : result.subtitle; } else { result.titleFormatted = result.title; result.subtitleFormatted = result.subtitle; } // Add icon if missing if (typeof result.icon === 'undefined') { result.icon = 'standard:default'; } return result; }); // Add local state and dynamic class to search results this._focusedResultIndex = null; const self = this; this.searchResultsLocalState = this._searchResults.map((result, i) => { return { result, state: {}, get classes() { let cls = 'slds-media slds-media_center slds-listbox__option slds-listbox__option_entity'; if (result.subtitleFormatted) { cls += ' slds-listbox__option_has-meta'; } if (self._focusedResultIndex === i) { cls += ' slds-has-focus'; } return cls; } }; }); } @api getSelection() { return this._curSelection; } @api setDefaultResults(results) { this._defaultSearchResults = [...results]; if (this._searchResults.length === 0) { this.setSearchResults(this._defaultSearchResults); } } @api blur() { this.template.querySelector('input')?.blur(); } // INTERNAL FUNCTIONS updateSearchTerm(newSearchTerm) { this._searchTerm = newSearchTerm; // Compare clean new search term with current one and abort if identical const newCleanSearchTerm = newSearchTerm.trim().replace(REGEX_SOSL_RESERVED, '?').toLowerCase(); if (this._cleanSearchTerm === newCleanSearchTerm) { return; } // Save clean search term this._cleanSearchTerm = newCleanSearchTerm; // Ignore search terms that are too small after removing special characters if (newCleanSearchTerm.replace(/\?/g, '').length < this.minSearchTermLength) { this.setSearchResults(this._defaultSearchResults); return; } // Apply search throttling (prevents search if user is still typing) if (this._searchThrottlingTimeout) { clearTimeout(this._searchThrottlingTimeout); } // eslint-disable-next-line @lwc/lwc/no-async-operation this._searchThrottlingTimeout = setTimeout(() => { // Send search event if search term is long enougth if (this._cleanSearchTerm.length >= this.minSearchTermLength) { // Display spinner until results are returned this.loading = true; const searchEvent = new CustomEvent('search', { detail: { searchTerm: this._cleanSearchTerm, rawSearchTerm: newSearchTerm, selectedIds: this._curSelection.map((element) => element.id) } }); this.dispatchEvent(searchEvent); } this._searchThrottlingTimeout = null; }, SEARCH_DELAY); } isSelectionAllowed() { if (this.isMultiEntry) { return true; } return !this.hasSelection(); } hasSelection() { return this._curSelection.length > 0; } processSelectionUpdate(isUserInteraction) { // Reset search this._cleanSearchTerm = ''; this._searchTerm = ''; this.setSearchResults([...this._defaultSearchResults]); // Indicate that component was interacted with this._isDirty = isUserInteraction; // Blur input after single select lookup selection if (!this.isMultiEntry && this.hasSelection()) { this._hasFocus = false; } // If selection was changed by user, notify parent components if (isUserInteraction) { const selectedIds = this._curSelection.map((sel) => sel.id); this.dispatchEvent(new CustomEvent('selectionchange', { detail: selectedIds })); } } // EVENT HANDLING handleInput(event) { // Prevent action if selection is not allowed if (!this.isSelectionAllowed()) { return; } this.updateSearchTerm(event.target.value); } handleKeyDown(event) { if (this._focusedResultIndex === null) { this._focusedResultIndex = -1; } if (event.keyCode === KEY_ARROW_DOWN) { // If we hit 'down', select the next item, or cycle over. this._focusedResultIndex++; if (this._focusedResultIndex >= this._searchResults.length) { this._focusedResultIndex = 0; } event.preventDefault(); } else if (event.keyCode === KEY_ARROW_UP) { // If we hit 'up', select the previous item, or cycle over. this._focusedResultIndex--; if (this._focusedResultIndex < 0) { this._focusedResultIndex = this._searchResults.length - 1; } event.preventDefault(); } else if (event.keyCode === KEY_ENTER && this._hasFocus && this._focusedResultIndex >= 0) { // If the user presses enter, and the box is open, and we have used arrows, // treat this just like a click on the listbox item const selectedId = this._searchResults[this._focusedResultIndex].id; this.template.querySelector(`[data-recordid="${selectedId}"]`).click(); event.preventDefault(); } } handleResultClick(event) { const recordId = event.currentTarget.dataset.recordid; // Save selection const selectedItem = this._searchResults.find((result) => result.id === recordId); if (!selectedItem) { return; } const newSelection = [...this._curSelection]; newSelection.push(selectedItem); this._curSelection = newSelection; // Process selection update this.processSelectionUpdate(true); } handleComboboxMouseDown(event) { const mainButton = 0; if (event.button === mainButton) { this._cancelBlur = true; } } handleComboboxMouseUp() { this._cancelBlur = false; // Re-focus to text input for the next blur event this.template.querySelector('input').focus(); } handleFocus() { // Prevent action if selection is not allowed if (!this.isSelectionAllowed()) { return; } this._hasFocus = true; this._focusedResultIndex = null; } handleBlur() { // Prevent action if selection is either not allowed or cancelled if (!this.isSelectionAllowed() || this._cancelBlur) { return; } this._hasFocus = false; } handleRemoveSelectedItem(event) { if (this.disabled) { return; } const recordId = event.currentTarget.name; this._curSelection = this._curSelection.filter((item) => item.id !== recordId); // Process selection update this.processSelectionUpdate(true); } handleClearSelection() { this._curSelection = []; this._hasFocus = false; // Process selection update this.processSelectionUpdate(true); } handleNewRecordClick(event) { const objectApiName = event.currentTarget.dataset.sobject; const selection = this.newRecordOptions.find((option) => option.value === objectApiName); const preNavigateCallback = selection.preNavigateCallback ? selection.preNavigateCallback : () => Promise.resolve(); preNavigateCallback(selection).then(() => { this[NavigationMixin.Navigate]({ type: 'standard__objectPage', attributes: { objectApiName, actionName: 'new' }, state: { defaultFieldValues: selection.defaults } }); }); } // STYLE EXPRESSIONS get isSingleEntry() { return !this.isMultiEntry; } get isListboxOpen() { const isSearchTermValid = this._cleanSearchTerm && this._cleanSearchTerm.length >= this.minSearchTermLength; return ( this._hasFocus && this.isSelectionAllowed() && (isSearchTermValid || this.hasResults || this.newRecordOptions?.length > 0) ); } get hasResults() { return this._searchResults.length > 0; } get getFormElementClass() { return this.variant === VARIANT_LABEL_INLINE ? 'slds-form-element slds-form-element_horizontal' : 'slds-form-element'; } get getLabelClass() { return this.variant === VARIANT_LABEL_HIDDEN ? 'slds-form-element__label slds-assistive-text' : 'slds-form-element__label'; } get getContainerClass() { let css = 'slds-combobox_container '; if (this._errors.length > 0) { css += 'has-custom-error'; } return css; } get getDropdownClass() { let css = 'slds-combobox slds-dropdown-trigger slds-dropdown-trigger_click '; if (this.isListboxOpen) { css += 'slds-is-open'; } return css; } get getInputClass() { let css = 'slds-input slds-combobox__input has-custom-height '; if (this._hasFocus && this.hasResults) { css += 'slds-has-focus '; } if (this._errors.length > 0 || (this._isDirty && this.required && !this.hasSelection())) { css += 'has-custom-error '; } if (!this.isMultiEntry) { css += 'slds-combobox__input-value ' + (this.hasSelection() ? 'has-custom-border' : ''); } return css; } get getComboboxClass() { let css = 'slds-combobox__form-element slds-input-has-icon '; if (this.isMultiEntry) { css += 'slds-input-has-icon_right'; } else { css += this.hasSelection() ? 'slds-input-has-icon_left-right' : 'slds-input-has-icon_right'; } return css; } get getSearchIconClass() { let css = 'slds-input__icon slds-input__icon_right '; if (!this.isMultiEntry) { css += this.hasSelection() ? 'slds-hide' : ''; } return css; } get getClearSelectionButtonClass() { return ( 'slds-button slds-button_icon slds-input__icon slds-input__icon_right ' + (this.hasSelection() ? '' : 'slds-hide') ); } get getSelectIconName() { return this.hasSelection() ? this._curSelection[0].icon : 'standard:default'; } get getSelectIconClass() { return 'slds-combobox__input-entity-icon ' + (this.hasSelection() ? '' : 'slds-hide'); } get getInputValue() { if (this.isMultiEntry) { return this._searchTerm; } return this.hasSelection() ? this._curSelection[0].title : this._searchTerm; } get getInputTitle() { if (this.isMultiEntry) { return ''; } return this.hasSelection() ? this._curSelection[0].title : ''; } get getListboxClass() { return ( 'slds-dropdown ' + (this.scrollAfterNItems ? `slds-dropdown_length-with-icon-${this.scrollAfterNItems} ` : '') + 'slds-dropdown_fluid' ); } get isInputReadonly() { if (this.isMultiEntry) { return false; } return this.hasSelection(); } } force-app/main/default/lwc/lookup/lookup.js-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata" fqn="lookup"> <apiVersion>57.0</apiVersion> <isExposed>false</isExposed> </LightningComponentBundle> force-app/main/default/lwc/lwcDatatableUtility/lwcDatatableUtility.css
New file @@ -0,0 +1,25 @@ .customSelect select { padding-right: 1.25rem; min-height: inherit; line-height: normal; height: 1.4rem; } .customSelect label { margin-top: .1rem; } .customSelect .slds-select_container::before { border-bottom: 0; } .customInput { width: 3rem; height: 1.4rem; text-align: center; border: 1px solid #dddbda; border-radius: 3px; background-color:#fff; } .THIS .slds-table_header-fixed_container { min-height: 12em; } force-app/main/default/lwc/lwcDatatableUtility/lwcDatatableUtility.html
New file @@ -0,0 +1,80 @@ <template> <template if:true={records}> <div class="slds-grid slds-grid_vertical-align-center slds-grid_align-spread"> <div class="slds-col"><!--RECORDS PER PAGE--> <div style={paginationVisibility} class="slds-list_inline slds-p-bottom_xx-small customSelect"> <label class="slds-text-color_weak slds-p-horizontal_x-small" for="recordsPerPage">Page Size:</label> <div class="slds-select_container"> <select class="slds-select" id="recordsPerPage" onchange={handleRecordsPerPage}> <template for:each={pageSizeOptions} for:item="option"> <option key={option} value={option}>{option}</option> </template> </select> </div> </div> </div> <!-- <div class="slds-col"> <div if:true={showSearchBox}> <div class="slds-p-horizontal_x-small slds-p-bottom_xx-small"> <lightning-input label="" type="search" placeholder="Search" variant="label-hidden" onchange={handleKeyChange}></lightning-input> </div> </div> </div> --> </div> <div class="slds-grid slds-grid_vertical-align-center slds-grid_align-spread"> <div class="slds-col"> <div class="slds-col slds-p-bottom_xx-small"> <span> <label class="slds-text-color_weak slds-p-horizontal_x-small" >Total: {filtredNum}</label> </span> <span> <label class="slds-text-color_weak slds-p-horizontal_x-small" >Selected: {totalSelected}</label> </span> </div> </div> </div> <div class="slds-grid slds-grid_vertical-align-center slds-grid_align-spread" > <div class="slds-col" style={tableHeightStyle}> <lightning-datatable key-field={keyField} hide-checkbox-column = {hidecheckboxcolumn} data={recordsToDisplay} columns={columns} max-row-selection={maxRowSelection} onrowselection={getSelectedRows} selected-rows={preSelected} default-sort-direction={defaultSortDirection} sorted-direction={sortDirection} sorted-by={sortedBy} onsort={handelSort} show-row-number-column = {showrownumber}> </lightning-datatable> </div> </div> <div class="slds-grid slds-grid_vertical-align-center slds-grid_align-spread" style="padding-top: 0.5em;"> <div class="slds-col"></div> <div class="slds-col"></div> <!--PAGE NAVIGATION--> <div class="slds-col"> <div style={paginationVisibility}> <div class="slds-col slds-p-bottom_xx-small"> <span> <lightning-button-icon icon-name="utility:chevronleft" variant="bare" size="medium" alternative-text="Previous Page" onclick={previousPage}></lightning-button-icon> </span> <label class="slds-text-color_weak slds-p-horizontal_x-small" for="pageNum">Page:</label> <input type="number" id="pageNum" value={pageNumber} maxlength="4" onkeypress={handlePageNumberChange} class="customInput" title="Go to a Page"></input> <span> of <b id="totalPages">{totalPages}</b></span> <span> <template if:true={pageNumber}></template> <lightning-button-icon icon-name="utility:chevronright" variant="bare" size="medium" alternative-text="Next Page" onclick={nextPage} class="slds-p-horizontal_x-small"></lightning-button-icon> </span> </div> </div> </div> </div> </template> </template> force-app/main/default/lwc/lwcDatatableUtility/lwcDatatableUtility.js
New file @@ -0,0 +1,273 @@ import { LightningElement, api,track } from 'lwc'; import customUnitTemplate from './templates/customUnit.html'; import customShipmentNumberTemplate from './templates/customShipmentNumber.html'; import customShippingUnitPriceTemplate from './templates/customShippingUnitPrice.html'; const DELAY = 300; const recordsPerPage = [5,10,25,50,75,100]; const pageNumber = 1; const SHOWDIV = 'visibility:visible'; const HIDEDIV = 'visibility:hidden'; const DEFAULTHEIGHT = '300'; export default class LwcDatatableUtility extends LightningElement { static customTypes = { customUnit: { template: customUnitTemplate, standardCellLayout: true, typeAttributes: ['Id'], }, customShipment: { template: customShipmentNumberTemplate, standardCellLayout: true, typeAttributes: ['Id'], }, customShipmentUnitPrice: { template: customShippingUnitPriceTemplate, standardCellLayout: true, typeAttributes: ['Id'], } // Other types here } // Input Attributes from Parent Componant @api keyField = 'Id'; @api showSearchBox = false; //Show/hide search box; valid values are true/false @api showPagination; //Show/hide pagination; valid values are true/false @api pageSizeOptions = recordsPerPage; //Page size options; valid values are array of integers @api totalRecords; //Total no.of records; valid type is Integer @api records; //All records available in the data table; valid type is Array @api maxRowSelection; //All records available in the data table; valid type is Array @api columns = []; //Records to be displayed on the page @api hidecheckboxcolumn = false; @api showrownumber = false; tableHeightStyle = 'height: '+ DEFAULTHEIGHT +'px;'; // Set Default Height as 300px @api get tableHeight() { return this.tableHeightStyle; } set tableHeight(value) { this.tableHeightStyle = 'height: '+ value +'px;'; } pageSize; //No.of records to be displayed per page totalPages; //Total no.of pages pageNumber = pageNumber; //Page number searchKey; //Search Input paginationVisibility = SHOWDIV; rowNumberOffset; //Row number preSelected; //preSelectedOnDisplay recordsToDisplay = []; //Records to be displayed on the page filteredRecords = []; //Filtered records available in the data table; valid type is Array selectedRecords = []; //OverallSelected records in the data table; valid type is Array pageSelectedRecords = []; //Page Selected rows in the data table; valid type is Array filtredNum; // Total no.of Filtered records; valid type is Integer totalSelected = 0; refreshCurrentData; //SORT defaultSortDirection = 'asc'; sortDirection = 'asc'; sortedBy; //Called after the component finishes inserting to DOM connectedCallback() { console.log('进入 子组件 connectedCallback '); console.log('this.records = ' + JSON.stringify(this.records)); console.log('keyField = ' + this.keyField); if(this.pageSizeOptions && this.pageSizeOptions.length > 0) this.pageSize = this.pageSizeOptions[0]; else{ this.pageSize = this.totalRecords; this.showPagination = false; } this.paginationVisibility = this.showPagination === false ? HIDEDIV : SHOWDIV; this.filteredRecords = this.records; this.filtredNum = this.totalRecords; this.setRecordsOnPage(); } handleRecordsPerPage(event){ this.pageSize = event.target.value; this.setRecordsOnPage(); } handlePageNumberChange(event){ if(event.keyCode === 13){ this.pageNumber = event.target.value; this.setRecordsOnPage(); } } previousPage(){ this.pageNumber = this.pageNumber-1; this.setRecordsOnPage(); } nextPage(){ this.pageNumber = this.pageNumber+1; this.setRecordsOnPage(); } @api setRecordsOnPage(){ this.recordsToDisplay = []; if(!this.pageSize) this.pageSize = this.filtredNum; this.totalPages = Math.ceil(this.filtredNum/this.pageSize); this.setPaginationControls(); for(let i=(this.pageNumber-1)*this.pageSize; i < this.pageNumber*this.pageSize; i++){ if(i === this.filtredNum) break; this.recordsToDisplay.push(this.filteredRecords[i]); } this.preSelected = []; this.selectedRecords.forEach((item) => { if(item.selected) this.preSelected.push(item.Id); }) let paginatedRecords = new Object(); paginatedRecords.recordsToDisplay = this.recordsToDisplay; paginatedRecords.preSelected = this.preSelected; if(this.maxRowSelection === '1' ){ this.totalSelected = 0; } if(this.selectedRecords && this.selectedRecords.length > 0){ this.refreshCurrentData = true; } } setPaginationControls(){ // Previous/Next buttons visibility by Total pages if(this.totalPages === 1){ this.showPrevious = HIDEDIV; this.showNext = HIDEDIV; }else if(this.totalPages > 1){ this.showPrevious = SHOWDIV; this.showNext = SHOWDIV; } // Previous/Next buttons visibility by Page number if(this.pageNumber <= 1){ this.pageNumber = 1; this.showPrevious = HIDEDIV; }else if(this.pageNumber >= this.totalPages){ this.pageNumber = this.totalPages; this.showNext = HIDEDIV; } // Previous/Next buttons visibility by Pagination visibility if(this.paginationVisibility === HIDEDIV){ this.showPrevious = HIDEDIV; this.showNext = HIDEDIV; } } handleKeyChange(event) { window.clearTimeout(this.delayTimeout); const searchKey = event.target.value; if(searchKey){ this.delayTimeout = setTimeout(() => { //this.paginationVisibility = HIDEDIV; this.setPaginationControls(); this.searchKey = searchKey; //Use other field name here in place of 'Name' field if you want to search by other field //this.recordsToDisplay = this.records.filter(rec => rec.includes(searchKey)); //Search with any column value (Updated as per the feedback) this.filteredRecords = this.records.filter(rec => JSON.stringify(rec).toLowerCase().includes(searchKey.toLowerCase())); this.filtredNum = this.filteredRecords.length; this.setRecordsOnPage(); }, DELAY); }else{ this.filteredRecords = this.records; this.filtredNum = this.totalRecords; this.paginationVisibility = SHOWDIV; this.setRecordsOnPage(); } } handelRowsSelected(selectedRows) { console.log(selectedRows.length); this.totalSelected = 0; this.pageSelectedRecords = []; if(this.maxRowSelection != '1' && this.recordsToDisplay && this.recordsToDisplay.length > 0 && ((selectedRows.length === 0 && !this.refreshCurrentData) || selectedRows.length > 0) ){ this.recordsToDisplay.forEach((item)=>{ var row = new Object(); row.Id = item.Id; if(selectedRows.includes(item.Id)){ row.selected = true; }else{ row.selected = false; } this.pageSelectedRecords.push(row) ; }); } // To store previous row Selection if(this.selectedRecords.length == 0 ){ this.selectedRecords = this.pageSelectedRecords; } this.selectedRecords = this.mergeObjectArray(this.selectedRecords, this.pageSelectedRecords, "Id"); if(this.maxRowSelection === '1' && selectedRows && selectedRows.length > 0){ this.totalSelected = 1; }else{ let i=0; this.selectedRecords.forEach(item => { if(item.selected){ i++; this.totalSelected = i; } }) //this.totalSelected = this.totalSelected ===1 && selectedRows.length ===0? 0: this.totalSelected; } const filterSelected = this.selectedRecords.filter(({ selected }) => selected === true ); this.dispatchEvent(new CustomEvent('setselectedrecords', {detail: filterSelected})); //Send records to display on table to the parent component this.refreshCurrentData = false; } mergeObjectArray(firstArray, secondArray, prop){ var reduced = firstArray.filter( aitem => ! secondArray.find ( bitem => aitem[prop] === bitem[prop]) ) //let arr3 = arr1.map((item, i) => Object.assign({}, item, arr2[i])); return reduced.concat(secondArray); } getSelectedRows(event) { const selectedRows = event.detail.selectedRows; let selectedRecordIds = []; // Display that fieldName of the selected rows for (let i = 0; i < selectedRows.length; i++){ selectedRecordIds.push(selectedRows[i].Id); } this.handelRowsSelected(selectedRecordIds); } handelSort(event){ const { fieldName: sortedBy, sortDirection } = event.detail; const cloneData = [...this.filteredRecords]; cloneData.sort(this.sortBy(sortedBy, sortDirection === 'asc' ? 1 : -1)); this.filteredRecords = cloneData; this.sortDirection = sortDirection; this.sortedBy = sortedBy; this.setRecordsOnPage(); } sortBy(field, reverse, primer) { const key = primer ? function(x) { return primer(x[field]); } : function(x) { return x[field]; }; return function(a, b) { a = key(a); b = key(b); return reverse * ((a > b) - (b > a)); }; } } force-app/main/default/lwc/lwcDatatableUtility/lwcDatatableUtility.js-meta.xml
New file @@ -0,0 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>48.0</apiVersion> <isExposed>true</isExposed> <targets> <target>lightning__AppPage</target> </targets> </LightningComponentBundle> force-app/main/default/lwc/lwcDatatableUtility/templates/customShipmentNumber.html
New file @@ -0,0 +1,11 @@ <template> <lightning-input type="text" name="shipmentNumber" label="deliveryOrderNo" variant="label-hidden" onchange={dataChange} data-field="shipmentNumber" value={shipmentNumber} ></lightning-input> </template> force-app/main/default/lwc/lwcDatatableUtility/templates/customShippingUnitPrice.html
New file @@ -0,0 +1,11 @@ <template> <lightning-input type="number" name="shipmentUnitPrice" label="deliveryOrderNo" variant="label-hidden" onchange={dataChange} data-field="shipmentUnitPrice" value={shipmentUnitPrice} ></lightning-input> </template> force-app/main/default/lwc/lwcDatatableUtility/templates/customUnit.html
New file @@ -0,0 +1,8 @@ <!-- sldsValidatorIgnore --> <!-- sldsValidatorIgnore --> <template> <select> <option value="盒">盒</option> <option value="个">个</option> </select> </template> force-app/main/default/lwc/myCustomTypeDatatable/customName.html
New file @@ -0,0 +1,6 @@ <template> <lightning-badge label={typeAttributes.accountName} icon-name="standard:account"> </lightning-badge> </template> force-app/main/default/lwc/myCustomTypeDatatable/customNumber.html
New file @@ -0,0 +1,6 @@ <template> <div class="slds-p-around_x-small"> <lightning-formatted-number value={value} class="slds-float_right"></lightning-formatted-number> <lightning-icon icon-name={typeAttributes.status} alternative-text="Employer Status"></lightning-icon> </div> </template> force-app/main/default/lwc/myCustomTypeDatatable/customShipmentNumber.html
New file @@ -0,0 +1,11 @@ <template> <lightning-input type="text" name="shipmentNumber" label="deliveryOrderNo" variant="label-hidden" onchange={dataChange} data-field="shipmentNumber" value={shipmentNumber} ></lightning-input> </template> force-app/main/default/lwc/myCustomTypeDatatable/customShippingUnitPrice.html
New file @@ -0,0 +1,11 @@ <template> <lightning-input type="number" name="shipmentUnitPrice" label="deliveryOrderNo" variant="label-hidden" onchange={dataChange} data-field="shipmentUnitPrice" value={shipmentUnitPrice} ></lightning-input> </template> force-app/main/default/lwc/myCustomTypeDatatable/customUnit.html
New file @@ -0,0 +1,8 @@ <!-- sldsValidatorIgnore --> <!-- sldsValidatorIgnore --> <template> <select> <option value="盒">盒</option> <option value="个">个</option> </select> </template> force-app/main/default/lwc/myCustomTypeDatatable/myCustomTypeDatatable.html
New file @@ -0,0 +1,2 @@ <template> </template> force-app/main/default/lwc/myCustomTypeDatatable/myCustomTypeDatatable.js
New file @@ -0,0 +1,41 @@ import { LightningElement,api,wire,track } from 'lwc'; import LightningDatatable from 'lightning/datatable'; import customUnitTemplate from './customUnit.html'; import customShipmentNumberTemplate from './customShipmentNumber.html'; import customShippingUnitPriceTemplate from './customShippingUnitPrice.html'; import customNameTemplate from './customName.html'; import customNumberTemplate from './customNumber.html'; export default class MyCustomTypeDatatable extends LightningDatatable { // static customTypes = { // customUnit: { // template: customUnitTemplate, // //typeAttributes: ['value'], // }, // customShipment: { // template: customShipmentNumberTemplate, // //typeAttributes: ['value'], // }, // customShipmentUnitPrice: { // template: customShippingUnitPriceTemplate, // //typeAttributes: ['value'], // } // // Other types here // } static customTypes = { customName: { template: customNameTemplate, standardCellLayout: true, typeAttributes: ['accountName'], } // Other types here } connectedCallback(){ console.log('MyCustomTypeDatatable enter') } } force-app/main/default/lwc/myCustomTypeDatatable/myCustomTypeDatatable.js-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>56.0</apiVersion> <isExposed>false</isExposed> </LightningComponentBundle> force-app/main/default/lwc/paginatedList/paginatedList.html
New file @@ -0,0 +1,35 @@ <template> <template if:true={loader}> <lightning-spinner alternative-text="Loading..." size="small"></lightning-spinner> </template> <template if:true={records}> <div class="table-container"> <lightning-datatable key-field="id" data={records} columns={columns} sorted-by={sortBy} sorted-direction={sortDirection} onsort={doSorting} > </lightning-datatable> </div> <c-paginator if:true={paginationVisibility} onprevious={handlePrevious} onnext={handleNext} onpageschange={handlePageschange} onfirst={handleFirst} onlast={handleLast} page-size-options={pageSizeOptions} previous-button-disabled={previousButtonDisabled} next-button-disabled={nextButtonDisabled} record-start={recordStart} record-end={recordEnd} total-records={totalRecords} ></c-paginator> </template> <template if:true={error}> <c-error-panel errors={error}></c-error-panel> </template> </template> force-app/main/default/lwc/paginatedList/paginatedList.js
New file @@ -0,0 +1,120 @@ import { LightningElement, api, track } from "lwc"; import getAccountsPaginated from "@salesforce/apex/PaginatedListControllerLwc.getAccountsPaginated"; import { ShowToastEvent } from 'lightning/platformShowToastEvent'; import { reduceErrors } from 'c/ldsUtils'; import ACCOUNT_NAME_FIELD from "@salesforce/schema/Account.Name"; import ACCOUNT_TYPE_FIELD from "@salesforce/schema/Account.Type"; import ACCOUNT_PHONE_FIELD from "@salesforce/schema/Account.Type"; import ACCOUNT_EMPLOYEES_FIELD from "@salesforce/schema/Account.NumberOfEmployees"; const COLUMNS = [ { label: "Account Name", fieldName: ACCOUNT_NAME_FIELD.fieldApiName, type: "text", sortable: "true" }, { label: "Type", fieldName: ACCOUNT_TYPE_FIELD.fieldApiName, type: "text" }, { label: "Phone", fieldName: ACCOUNT_PHONE_FIELD.fieldApiName, type: "phone" }, { label: "Employees", fieldName: ACCOUNT_EMPLOYEES_FIELD.fieldApiName, type: "Number" } ]; export default class PaginatedList extends LightningElement { columns = COLUMNS; @track sortBy = "Name"; @track sortDirection = "asc"; @track pageSize = 10; error; records; currentPageToken = 0; nextPageToken = this.pageSize; @track loader = false; @track pageNumber = 1; @track paginationVisibility = false; @track totalPages = 1; @api pageSizeOptions = [10, 25, 50, 75, 100]; connectedCallback() { this.getAccounts(); } getAccounts() { this.loader = true; getAccountsPaginated({ pageSize: this.pageSize, pageToken: this.currentPageToken, sortField: this.sortBy, sortOrder: this.sortDirection }) .then((result) => { this.loader = false; if (result) { this.records = result.records; this.nextPageToken = result.nextPageToken; this.totalRecords = result.totalRecords; this.recordStart = result.recordStart; this.recordEnd = result.recordEnd; this.totalPages = Math.ceil(result.totalRecords / this.pageSize); this.paginationVisibility = this.totalPages > 1 ? true : false; } }) .catch((error) => { this.loader = false; this.error = error; this.currentPageToken = 0; const evt = new ShowToastEvent({ title: 'Error', message: reduceErrors(error).join(', '), variant: 'error' }); this.dispatchEvent(evt); }); } doSorting(event) { console.log("Sort"); this.sortBy = event.detail.fieldName; this.sortDirection = event.detail.sortDirection; this.currentPageToken = 0; this.getAccounts(); } handlePrevious() { this.currentPageToken = Number(this.currentPageToken) - Number(this.pageSize); this.getAccounts(); } handleNext() { this.currentPageToken = Number(this.currentPageToken) + Number(this.pageSize); this.getAccounts(); } handleFirst() { this.currentPageToken = 0; this.getAccounts(); } handleLast() { this.currentPageToken = this.totalPages > 1? (this.totalPages-1)* this.pageSize:0; this.getAccounts(); } handlePageschange(event) { console.log(event.detail); this.pageSize = event.detail; this.currentPageToken = 0; this.getAccounts(); } get previousButtonDisabled() { return this.currentPageToken === 0; } get nextButtonDisabled() { return this.nextPageToken === undefined; } } force-app/main/default/lwc/paginatedList/paginatedList.js-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>54.0</apiVersion> <isExposed>false</isExposed> </LightningComponentBundle> force-app/main/default/lwc/paginator/paginator.css
New file @@ -0,0 +1,13 @@ .customSelect select { padding-right: 1.25rem; min-height: inherit; line-height: normal; height: 1.4rem; } .customSelect label { margin-top: .1rem; } .customSelect .slds-select_container::before { border-bottom: 0; } force-app/main/default/lwc/paginator/paginator.html
New file @@ -0,0 +1,42 @@ <template> <lightning-card> <div class="slds-grid slds-grid_vertical-align-center slds-grid_align-spread"> <div class="slds-col"><!--RECORDS PER PAGE--> <div class="slds-list_inline slds-p-bottom_xx-small customSelect"> <label class="slds-text-color_weak slds-p-horizontal_x-small" for="recordsPerPage">Page Size:</label> <div class="slds-select_container"> <select class="slds-select" id="recordsPerPage" onchange={handleRecordsPerPage}> <template for:each={pageSizeOptions} for:item="option"> <option key={option} value={option}>{option}</option> </template> </select> </div> </div> </div> <div class="slds-align_absolute-center"> <lightning-layout> <lightning-layout-item> <lightning-button icon-name="utility:jump_to_left" onclick={handleFirst} class="first" disabled={previousButtonDisabled}></lightning-button> </lightning-layout-item> <lightning-layout-item> <lightning-button icon-name="utility:chevronleft" onclick={handlePrevious} class="previous" disabled={previousButtonDisabled}></lightning-button> </lightning-layout-item> <lightning-layout-item flexibility="grow"></lightning-layout-item> <span class="slds-badge slds-badge_lightest"> {recordStart}-{recordEnd} 共 {totalRecords}个 </span> <lightning-layout-item> <lightning-button icon-name="utility:chevronright" onclick={handleNext} class="next" disabled={nextButtonDisabled}></lightning-button> </lightning-layout-item> <lightning-layout-item> <lightning-button icon-name="utility:jump_to_right" onclick={handleLast} class="last" disabled={nextButtonDisabled}></lightning-button> </lightning-layout-item> </lightning-layout> </div> </div> </lightning-card> </template> force-app/main/default/lwc/paginator/paginator.js
New file @@ -0,0 +1,32 @@ import { LightningElement, api } from 'lwc'; export default class Paginator extends LightningElement { @api previousButtonDisabled; @api nextButtonDisabled; @api recordStart; @api recordEnd; @api totalRecords; @api pageSizeOptions; handlePrevious() { this.dispatchEvent(new CustomEvent('previous')); } handleNext() { this.dispatchEvent(new CustomEvent('next')); } handleFirst() { this.dispatchEvent(new CustomEvent('first')); } handleLast() { this.dispatchEvent(new CustomEvent('last')); } handleRecordsPerPage(event){ let perpages = event.target.value; let pageschangeEvent = new CustomEvent("pageschange",{detail:perpages}); this.dispatchEvent(pageschangeEvent); } } force-app/main/default/lwc/paginator/paginator.js-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>54.0</apiVersion> <isExposed>false</isExposed> </LightningComponentBundle> force-app/main/default/lwc/pocLightningDatatable/customShipmentAmount.html
New file @@ -0,0 +1,7 @@ <template> <c-custom-shipment-Amount-comp shipment-amount={typeAttributes.shipmentAmount} record-id={typeAttributes.recordId}> </c-custom-shipment-Amount-comp> </template> force-app/main/default/lwc/pocLightningDatatable/customShipmentNumber.html
New file @@ -0,0 +1,6 @@ <template> <c-custom-shipment-number-comp record-id={typeAttributes.recordId}> </c-custom-shipment-number-comp> </template> force-app/main/default/lwc/pocLightningDatatable/customShippingUnitPrice.html
New file @@ -0,0 +1,6 @@ <template> <c-custom-shipping-unit-price-comp record-id={typeAttributes.recordId}> </c-custom-shipping-unit-price-comp> </template> force-app/main/default/lwc/pocLightningDatatable/customUnit.html
New file @@ -0,0 +1,12 @@ <!-- sldsValidatorIgnore --> <!-- sldsValidatorIgnore --> <template> <c-custom-unit-comp style="position:relative; z-index:9999;" unit-value={typeAttributes.unitValue} unit-options={typeAttributes.unitOptions} record-id={typeAttributes.recordId} onunitchange={handleDataChange} > </c-custom-unit-comp> </template> force-app/main/default/lwc/pocLightningDatatable/pocFileUpload.html
New file @@ -0,0 +1,5 @@ <template> <c-poc-custom-comp record-id={value} accepted-formats={typeAttributes.acceptedFormats}> </c-poc-custom-comp> </template> force-app/main/default/lwc/pocLightningDatatable/pocLightningDatatable.html
New file @@ -0,0 +1,3 @@ <template> </template> force-app/main/default/lwc/pocLightningDatatable/pocLightningDatatable.js
New file @@ -0,0 +1,28 @@ import LightningDatatable from 'lightning/datatable'; import pocFileUpload from './pocFileUpload.html'; import customUnitTemplate from './customUnit.html'; import customShipmentNumberTemplate from './customShipmentNumber.html'; import customShippingUnitPriceTemplate from './customShippingUnitPrice.html'; import customShipmentAmountTemplate from './customShipmentAmount.html'; export default class PocLightningDatatable extends LightningDatatable { static customTypes = { customUnit: { template: customUnitTemplate, typeAttributes: ['unitValue','unitOptions','recordId'], }, customShipment: { template: customShipmentNumberTemplate, typeAttributes: ['recordId'], }, customShipmentUnitPrice: { template: customShippingUnitPriceTemplate, typeAttributes: ['recordId'], }, customShipmentAmount: { template: customShipmentAmountTemplate, typeAttributes: ['shipmentAmount','recordId'], } }; } force-app/main/default/lwc/pocLightningDatatable/pocLightningDatatable.js-meta.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>56.0</apiVersion> <isExposed>false</isExposed> </LightningComponentBundle> force-app/main/default/lwc/testPaginated/__tests__/testPaginated.test.js
New file @@ -0,0 +1,25 @@ import { createElement } from 'lwc'; import TestPaginated from 'c/testPaginated'; describe('c-test-paginated', () => { afterEach(() => { // The jsdom instance is shared across test cases in a single file so reset the DOM while (document.body.firstChild) { document.body.removeChild(document.body.firstChild); } }); it('TODO: test case generated by CLI command, please fill in test logic', () => { // Arrange const element = createElement('c-test-paginated', { is: TestPaginated }); // Act document.body.appendChild(element); // Assert // const div = element.shadowRoot.querySelector('div'); expect(1).toBe(1); }); }); force-app/main/default/lwc/testPaginated/testPaginated.html
New file @@ -0,0 +1,3 @@ <template> <c-paginated-list slot="lwc"></c-paginated-list> </template> force-app/main/default/lwc/testPaginated/testPaginated.js
New file @@ -0,0 +1,3 @@ import { LightningElement } from 'lwc'; export default class TestPaginated extends LightningElement {} force-app/main/default/lwc/testPaginated/testPaginated.js-meta.xml
New file @@ -0,0 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>56.0</apiVersion> <isExposed>true</isExposed> <targets> <target>lightning__AppPage</target> </targets> </LightningComponentBundle> force-app/main/default/package.xml
File was deleted force-app/main/default/pages/Inventory.page
@@ -5,6 +5,7 @@ <apex:includeScript value="{!URLFOR($Resource.PleaseWaitDialog)}" /> <script> console.log('ConsumableorderdetailsRecordsview = ' + '{!ConsumableorderdetailsRecordsview}') function checkAll() { var productCount = j$(escapeVfId('allPage:allForm:allBlock:ConsumableorderdetailsSection:ConsumableorderdetailsCnt')).value(); if (j$(escapeVfId('checker')).attr('checked') == 'checked') { force-app/main/default/pages/InventoryView.page
@@ -4,6 +4,7 @@ <apex:includeScript value="{!URLFOR($Resource.PleaseWaitDialog)}"/> <apex:includeScript value="{!URLFOR($Resource.CommonUtilJs)}"/> <script> console.log('pageRecords = ' + '{!pageRecords}') function ClearJs(){ blockme(); //document.getElementById("allPage:allForm:allBlock:searchBlock:OrderCodeSearch").value = ""; force-app/main/default/staticresources/LexCustomDataTable.css
New file @@ -0,0 +1,12 @@ .picklist-container, .lookup-container { overflow: visible; } .picklist-container .slds-dropdown, .lookup-container .slds-dropdown { position: relative !important; z-index: 99 !important; max-height: 120px; overflow: visible; } force-app/main/default/staticresources/LexCustomDataTable.resource-meta.xml
New file @@ -0,0 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <StaticResource xmlns="http://soap.sforce.com/2006/04/metadata"> <cacheControl>Public</cacheControl> <contentType>text/css</contentType> <description>File to hold CSS for custom datatable</description> </StaticResource> manifest/package.xml
@@ -1,9 +1,478 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8"?> <Package xmlns="http://soap.sforce.com/2006/04/metadata"> <types> <members>NewAndEditLead</members> <members>NewAndEditReport</members> <members>*</members> <name>ApexClass</name> </types> <types> <members>*</members> <name>ApexComponent</name> </types> <types> <members>*</members> <name>ApexPage</name> </types> <version>52.0</version> </Package> <types> <members>*</members> <name>ApexTrigger</name> </types> <types> <members>*</members> <name>AuraDefinitionBundle</name> </types> <types> <members>*</members> <name>CustomApplication</name> </types> <types> <members>*</members> <name>CustomApplicationComponent</name> </types> <types> <members>*</members> <name>CustomMetadata</name> </types> <types> <members>ASEActivity__c</members> <members>AWS_Integration_Info__mdt</members> <members>Account</members> <members>Account2__c</members> <members>AccountBrand</members> <members>AccountContactRole</members> <members>AccountTeamMember</members> <members>Account_Number_of_case__c</members> <members>Account_Number_of_target__c</members> <members>Account_Service_Of_Target__c</members> <members>Achievement_linkage__c</members> <members>Activity</members> <members>ActivityRecurrence2Exception</members> <members>Activity_History_Daily_Report__c</members> <members>Address_Level2__c</members> <members>Address_Level__c</members> <members>Address__c</members> <members>Advance_Payment__c</members> <members>Agency_Contact__c</members> <members>Agency_Hospital_Link__c</members> <members>Agency_Opportunity__c</members> <members>Agency_Report_Header__c</members> <members>Agency_Report__c</members> <members>Amount_Major_Product__c</members> <members>Application_for_Conference_Adjudication__c</members> <members>AssessmentReportStaff__c</members> <members>AssessmentReport__c</members> <members>Asset</members> <members>AssetHistory__c</members> <members>AssetMaintainDetail__c</members> <members>AssetMaintainHeader__c</members> <members>AssetModifyBelongsChangeDetail__c</members> <members>AssetModifyBelongsChange__c</members> <members>AssetRelationship</members> <members>Asset_EquipmentSet_Managment_Code__c</members> <members>Asset_Service_Of_Target__c</members> <members>AssistantProgress</members> <members>AssociatedLocation</members> <members>AuthorizationForm</members> <members>AuthorizationFormConsent</members> <members>AuthorizationFormDataUse</members> <members>AuthorizationFormText</members> <members>BI_OpportunityLineItem__c</members> <members>BI_Opportunity__c</members> <members>BI_Product2__c</members> <members>BI_Statu_Achievements__c</members> <members>BMEFollowup__c</members> <members>BSS_Master__c</members> <members>BackOrderOpen__c</members> <members>BackOrder__c</members> <members>Backorder_Comment__c</members> <members>BatchIF_Log__c</members> <members>BatchIF_Transfer__c</members> <members>Bid_Announcement__c</members> <members>Bulletin_Board__c</members> <members>BusinessBrand</members> <members>CIC__c</members> <members>CIC_and_product_middle_table__c</members> <members>CIC_case_and_product_middle_table__c</members> <members>Campaign</members> <members>CampaignLable__c</members> <members>CampaignMember</members> <members>CampaignMember__c</members> <members>Campaign_Cost__c</members> <members>CancelPostponePlan__c</members> <members>Case</members> <members>CaseContactRole</members> <members>ChatterActivity</members> <members>CollaborationGroup</members> <members>CollaborationGroupMember</members> <members>CommSubscription</members> <members>CommSubscriptionChannelType</members> <members>CommSubscriptionConsent</members> <members>CommSubscriptionTiming</members> <members>Comment_Sequence__c</members> <members>Common_Sequence__c</members> <members>Competition_Company__c</members> <members>Complaint__c</members> <members>ConsumApplySafetyStockMiddleTable__c</members> <members>Consum_Apply_Equipment_Set_Detail__c</members> <members>Consum_Apply_Equipment_Set__c</members> <members>Consum_Apply_Meta__mdt</members> <members>Consum_Apply__c</members> <members>Consum_Inventory_Detail__c</members> <members>ConsumableSales__c</members> <members>ConsumableSampleLineItem__c</members> <members>ConsumableSample__c</members> <members>Consumable_ET__c</members> <members>Consumable_Orderdetails__c</members> <members>Consumable_Promotion__c</members> <members>Consumable_accessories_invoice__c</members> <members>Consumable_order_LinkTable__c</members> <members>Consumable_order__c</members> <members>Consumable_order_details2__c</members> <members>Contact</members> <members>ContactPointAddress</members> <members>ContactPointConsent</members> <members>ContactPointEmail</members> <members>ContactPointPhone</members> <members>ContactPointTypeConsent</members> <members>ContactRequest</members> <members>ContentVersion</members> <members>Contract</members> <members>ContractContactRole</members> <members>CustomObject123__c</members> <members>Customer</members> <members>Daily_Report__c</members> <members>DataUseLegalBasis</members> <members>DataUsePurpose</members> <members>Dealer_Product__c</members> <members>Dealer_Stock__c</members> <members>Dealer_elationship__c</members> <members>DelegatedAccount</members> <members>DiscountProductApplicationDetail__c</members> <members>DiscountProductApplication__c</members> <members>DuplicateRecordItem</members> <members>DuplicateRecordSet</members> <members>EffectProgress__c</members> <members>EmailMessage</members> <members>EngagementChannelType</members> <members>Enquiry_No_Bidding_Apply__c</members> <members>Equipment_Set_Detail__c</members> <members>Equipment_Set__c</members> <members>Event</members> <members>Event_Oppotunity__c</members> <members>Event_Service__c</members> <members>Event__c</members> <members>ExchangeUserMapping</members> <members>ExpressionFilter</members> <members>ExpressionFilterCriteria</members> <members>ExternalEventMapping</members> <members>FSE_Regional_Assistant_Account__mdt</members> <members>FSE_Regional_Assistant__mdt</members> <members>FeedItem</members> <members>FixtureDeliverySlip__c</members> <members>FixtureRemindSnapshot__c</members> <members>Fixture_OneToOne_Link__c</members> <members>Fixture_Set_Detail__c</members> <members>Fixture_Set__c</members> <members>GIRSolutionAreaNumber__c</members> <members>GuaranteePeriodAlterationApplication__c</members> <members>GuaranteePeriodAlterationDetail__c</members> <members>IS_Opportunity_Demand_Configuration__c</members> <members>IS_Opportunity_Demand_Demonstration__c</members> <members>IS_Opportunity_Demand_Operating__c</members> <members>IS_Opportunity_Demand__c</members> <members>Idea</members> <members>Image</members> <members>ImportantProductCategory__c</members> <members>Individual</members> <members>Inquiry_form__c</members> <members>Inspection_Item__c</members> <members>Inspection_Report__c</members> <members>Inspectup_Plan__c</members> <members>InstructStatusMonthly__c</members> <members>Instruct_report__c</members> <members>Instructed_staff__c</members> <members>Inventory_Batch_Mapping__mdt</members> <members>Inventory_Detail__c</members> <members>Inventory_Header_New__c</members> <members>Inventory_Header__c</members> <members>Inventory_User_Permission__mdt</members> <members>JF_scope_Training__c</members> <members>Key_Product_Goals__c</members> <members>LTV_6_SS__c</members> <members>LastbuyProduct__c</members> <members>Lead</members> <members>License_Information__c</members> <members>Loaner_check_disinfection__c</members> <members>Location</members> <members>LocationTrustMeasure</members> <members>LogisticsInformation__c</members> <members>LostReport_Detail__c</members> <members>LostReport__c</members> <members>Lost_Report__c</members> <members>Lost_cancel_report__c</members> <members>MB4S__MotionBoardProperty__c</members> <members>MB_Account__c</members> <members>MB_Asset__c</members> <members>MB_Daily_Report__c</members> <members>MB_Event__c</members> <members>MB_Maintenance_Contract__c</members> <members>MB_OpportunityLineItem__c</members> <members>MB_Opportunity__c</members> <members>MB_Repair__c</members> <members>MB_Report__c</members> <members>MB_Statu_Achievements__c</members> <members>MB_TargetLineItem__c</members> <members>MB_Target__c</members> <members>Macro</members> <members>MacroAction</members> <members>MacroInstruction</members> <members>MacroUsage</members> <members>Maintenance_Contract_Asset_Estimate__c</members> <members>Maintenance_Contract_Asset__c</members> <members>Maintenance_Contract_Estimate__c</members> <members>Maintenance_Contract__c</members> <members>Maintenance_Product_Data_Details__c</members> <members>Maintenance_Product_Data__c</members> <members>Maintenance_Task__c</members> <members>ManagedContentVersion</members> <members>Material_For__c</members> <members>Medical_expense_Province__c</members> <members>Medical_expense_Request__c</members> <members>Medical_expense__c</members> <members>Medical_expense_product_middle__c</members> <members>MeetingManagement__c</members> <members>ModelLendingProduct__c</members> <members>Monthly_Report__c</members> <members>NetworkMember</members> <members>NetworkMemberChunk</members> <members>NewMaintenanceReport_Task__c</members> <members>NotesEventHistory__c</members> <members>Num_Major_Product__c</members> <members>OCM_Management_Province__c</members> <members>ODS__c</members> <members>OFSHospitalLayout__c</members> <members>OFSInsReportLayout__c</members> <members>OFSSetting__c</members> <members>OPDPlan__c</members> <members>ObjectPrefix__c</members> <members>OlympusCalendar__c</members> <members>OnCall_detail__c</members> <members>On_Call__c</members> <members>On_Line_Survey__c</members> <members>OppComment__c</members> <members>Opponent_Bid_Information__c</members> <members>Opportunity</members> <members>Opportunity2__c</members> <members>OpportunityCompetitor</members> <members>OpportunityContactRole</members> <members>OpportunityFileOrder__c</members> <members>OpportunityLineItem</members> <members>OpportunitySpecialApply__c</members> <members>OpportunityTeamMember</members> <members>Opportunity_Budget_Actual__c</members> <members>Opportunity_File__c</members> <members>OrderOpen__c</members> <members>Order__c</members> <members>Order_history__c</members> <members>OrgMetricScanResult</members> <members>OrgMetricScanSummary</members> <members>PAE_DecisionRecordDetail__c</members> <members>PAE_DecisionRecord__c</members> <members>PBIAuthorization__c</members> <members>PCLLostBrand__c</members> <members>PCLLostProduct__c</members> <members>PI_Field_Policy__c</members> <members>PartnerRole</members> <members>PartyConsent</members> <members>Payment_Maintenance_Contract__c</members> <members>PersonalEvaluation__c</members> <members>Personal_Evaluation__c</members> <members>Plan_Rental_Equipment__c</members> <members>PowerBISyncDefine__c</members> <members>Pricebook2</members> <members>PricebookEntry</members> <members>ProcessException</members> <members>Product2</members> <members>Product2__c</members> <members>ProductMonthlySales__c</members> <members>ProductTypes__c</members> <members>ProductURF__c</members> <members>Product_CategoryPrice_Table__c</members> <members>Product_Documentation__c</members> <members>Product_Material__c</members> <members>Product_Register_Link__c</members> <members>Product_Register__c</members> <members>Product_Register_contrast__c</members> <members>Product_Score_Table_History__c</members> <members>Product_Score_Table__c</members> <members>Product_Set_Detail__c</members> <members>Product_Set__c</members> <members>Product_and_document_middle_table__c</members> <members>Product_document_Lead__c</members> <members>PromotionHead__c</members> <members>PromotionProduct__c</members> <members>PromotionSalesProducts__c</members> <members>PromotionSales__c</members> <members>PromptAction</members> <members>PromptError</members> <members>Province_Target_Table__c</members> <members>Provincial_Goal_Setting_Input__c</members> <members>QIS_M_BC__c</members> <members>QIS_Report__c</members> <members>QIS_SC_Report__c</members> <members>Questionnaire_Survey__c</members> <members>QuestionsAndAnswers__c</members> <members>QuickText</members> <members>QuickTextUsage</members> <members>Quote</members> <members>QuoteIraiLineItem__c</members> <members>QuoteIrai__c</members> <members>QuoteLineItem</members> <members>RSA_master_data__c</members> <members>ReceivingNoteDetail__c</members> <members>ReceivingNoteSummary__c</members> <members>ReceivingNote__c</members> <members>Recommendation</members> <members>RecordAction</members> <members>RecordMergeHistory</members> <members>RentalApply_Postpone__mdt</members> <members>Rental_Apply_App_CCEmail__mdt</members> <members>Rental_Apply_Equipment_Set_DetailPower_B__c</members> <members>Rental_Apply_Equipment_Set_Detail__c</members> <members>Rental_Apply_Equipment_Set_Power_BI__c</members> <members>Rental_Apply_Equipment_Set__c</members> <members>Rental_Apply_Power_BI__c</members> <members>Rental_Apply_Sequence__c</members> <members>Rental_Apply__c</members> <members>Rental_Equipment__c</members> <members>Rental_Queue_Info__c</members> <members>RepairAgainAn__c</members> <members>RepairComment__c</members> <members>RepairSubOrder__c</members> <members>Repair_Quotation__c</members> <members>Repair__c</members> <members>Repair_quotation_reason__c</members> <members>Repair_reason__c</members> <members>Repair_receipt__c</members> <members>ReportList__c</members> <members>ReportMemo__c</members> <members>Report__c</members> <members>Request_tedner_doc__c</members> <members>Result_for_Conference_Adjudication__c</members> <members>SAP_for_BackOrder__c</members> <members>SFDA__c</members> <members>SFDelete__c</members> <members>SI_Attachment__c</members> <members>SLAReportInfo__c</members> <members>SMARM__c</members> <members>SSConsumable_order_details2__c</members> <members>SS_BO_shipment_accurancy__c</members> <members>SS_BatchColumnMapping__c</members> <members>SS_Batch_Column_Mapping__c</members> <members>SS_Dinghuo_accurancy__c</members> <members>SS_HCP_vist_cover_monthly__c</members> <members>SS_LTV_Dept_monthly__c</members> <members>SS_LTV_HP_monthly__c</members> <members>SS_LastMonthCompleteaccuracy__c</members> <members>SS_OPDPlan__c</members> <members>SS_OPDQuarterPlan__c</members> <members>SS_OPD_SIS_Monthly_by_User__c</members> <members>SS_Prospect_5days_list__c</members> <members>SS_Prospect_Order_accurancy__c</members> <members>SS_Prospect_detail_product__c</members> <members>SS_Prospect_list__c</members> <members>SS_User_list__c</members> <members>SS_accompany_report_monthly__c</members> <members>SS_backorder_list__c</members> <members>SS_monthly_submit_daily_report__c</members> <members>SS_shipment_acurancy__c</members> <members>SS_update_this_month__c</members> <members>SS_user_visit_covager__c</members> <members>Sample_inventory_sheet__c</members> <members>Sample_order_list_DN__c</members> <members>Sample_order_list__c</members> <members>Sample_order_list_detail__c</members> <members>Sample_stock_log_sheet__c</members> <members>Scorecard</members> <members>ScorecardAssociation</members> <members>ScorecardMetric</members> <members>SelableProduct__c</members> <members>Seller</members> <members>Service_Category6__c</members> <members>Service_Category7__c</members> <members>Ship_History__c</members> <members>Ship_History_open__c</members> <members>Ship_Open__c</members> <members>Ship__c</members> <members>Shipment_address__c</members> <members>Site</members> <members>SocialPersona</members> <members>SocialPost</members> <members>Solution</members> <members>SolutionProjectRequirements__c</members> <members>Solution_Programme__c</members> <members>Statu_Achievements_DN__c</members> <members>Statu_Achievements_DN_details__c</members> <members>Statu_Achievements_Journal__c</members> <members>Statu_Achievements__c</members> <members>StreamActivityAccess</members> <members>StreamingChannel</members> <members>SubAuthorized__c</members> <members>SurveyQuestionResponse__c</members> <members>SurveyTaker__c</members> <members>Survey_Question__c</members> <members>Survey__c</members> <members>System_Request__c</members> <members>System_UserSetting__c</members> <members>Target_account_manage__c</members> <members>Task</members> <members>TaskEventReportOPD__c</members> <members>TemporaryFileBox__c</members> <members>Tender_Opportunity_Link__c</members> <members>Tender_information__c</members> <members>Tender_information_details__c</members> <members>Territory2</members> <members>Territory2Model</members> <members>ThreeMonthlyContact__c</members> <members>Topic</members> <members>TopicAssignment</members> <members>TracingCode__c</members> <members>Training_test_Result__c</members> <members>Transaction_Log__c</members> <members>TransferApplyDetail__c</members> <members>TransferApplySummary__c</members> <members>TransferApply__c</members> <members>User</members> <members>UserProvisioningRequest</members> <members>UserTerritory2Association</members> <members>VideoCall</members> <members>VideoCallParticipant</members> <members>VideoCallRecording</members> <members>Visit_Report__c</members> <members>WarlockClassification__c</members> <members>Weekly_OPP_Follow_record__c</members> <members>accompanying_report__c</members> <members>asset_Power_BI__c</members> <members>bidInfoFile__c</members> <members>bp3_Setting__c</members> <members>eSignFormEntry__c</members> <members>eSignFormLineItemEntry__c</members> <members>eSignFormLineItem__c</members> <members>eSignForm__c</members> <members>guar__GUAR_Setting__mdt</members> <members>hospitalprice__c</members> <members>meeting_delay_apply__c</members> <members>report_report__c</members> <members>solutionClosingAttachment__c</members> <members>task__c</members> <name>CustomObject</name> </types> <types> <members>*</members> <name>HomePageComponent</name> </types> <types> <members>*</members> <name>StaticResource</name> </types> <version>41.0</version> </Package> manifest/packageForPIPL.xml
@@ -1,255 +1,8 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Package xmlns="http://soap.sforce.com/2006/04/metadata"> <types> <members>AgencyAccountCmp</members> <members>AgencyAccountCmpTest</members> <members>AgencyContactHandler</members> <members>AgencyContactHandlerTest</members> <members>AssessmentReportController</members> <members>AssessmentReportControllerTest</members> <members>AWSServiceTool</members> <members>AWSServiceToolTest</members> <members>B_Test</members> <members>B_TestTest</members> <members>BmeWorkController</members> <members>BmeWorkControllerTest</members> <members>CampaignMemberController</members> <members>CampaignMemberControllerTest</members> <members>CampaignMemberServiceController</members> <members>CampaignMemberServiceControllerTest</members> <members>CM_SearchContact</members> <members>CM_SearchContactServiceController</members> <members>CM_SearchContactServiceControllerTest</members> <members>CM_SearchContactTest</members> <members>ConsumFixtureSetSelectController</members> <members>ConsumFixtureSetSelectControllerTest</members> <members>ConsumReassignController</members> <members>ConsumReassignControllerTest</members> <members>ConsumTrialController</members> <members>ConsumTrialControllerTest</members> <members>ConsumTrialPDFController</members> <members>ConsumTrialPDFControllerTest</members> <members>ControllerResponse</members> <members>ControllerResponseTest</members> <members>DeleteBatch</members> <members>DeleteBatchTest</members> <members>FieldInfo</members> <members>FieldInfoTest</members> <members>FileUploadController</members> <members>FileUploadControllerTest</members> <members>FixtureRentalPDFController</members> <members>FixtureRentalPDFControllerTest</members> <members>InsReportPDFController</members> <members>InsReportPDFControllerTest</members> <members>InstructReportController</members> <members>InstructReportControllerTest</members> <members>LayoutDescriberHelper</members> <members>LayoutDescriberHelperTest</members> <members>LeadIntentionController</members> <members>LeadIntentionControllerTest</members> <members>LightningUtil</members> <members>LightningUtilTest</members> <members>MetaDataUtility</members> <members>NewAgencyContactController</members> <members>NewAgencyContactControllerTest</members> <members>NewAndEditAddressController</members> <members>NewAndEditAddressControllerTest</members> <members>NewAndEditAgencyContactController</members> <members>NewAndEditAgencyContactControllerTest</members> <members>NewAndEditASEActivityController</members> <members>NewAndEditASEActivityControllerTest</members> <members>NewAndEditBaseController</members> <members>NewAndEditBaseControllerTest</members> <members>NewAndEditCampaignMemberController</members> <members>NewAndEditCampaignMemberControllerTest</members> <members>NewAndEditCaseController</members> <members>NewAndEditCaseControllerTest</members> <members>NewAndEditContactController</members> <members>NewAndEditContactControllerTest</members> <members>NewAndEditEventController</members> <members>NewAndEditEventControllerTest</members> <members>NewAndEditInquiryFormController</members> <members>NewAndEditInquiryFormControllerTest</members> <members>NewAndEditInspectionReportController</members> <members>NewAndEditInspectionReportControllerTest</members> <members>NewAndEditLeadController</members> <members>NewAndEditLeadControllerTest</members> <members>NewAndEditQISController</members> <members>NewAndEditQISControllerTest</members> <members>NewAndEditRepairSubOrderController</members> <members>NewAndEditRepairSubOrderControllerTest</members> <members>NewAndEditReportController</members> <members>NewAndEditReportControllerTest</members> <members>NewAndEditTenderinformationController</members> <members>NewAndEditTenderinformationControlTest</members> <members>NewConsumApplyController</members> <members>NewConsumApplyControllerTest</members> <members>NewConsumApplyEquipSetDetailController</members> <members>NewConsumApplyEquipSetDetailControlTest</members> <members>NewRepairController</members> <members>NewRepairControllerTest</members> <members>NFM103Controller</members> <members>NFM103ControllerTest</members> <members>NFM115ControllerTest</members> <members>NFM203Rest</members> <members>NFM203RestTest</members> <members>NFM501Controller</members> <members>NFM501ControllerTest</members> <members>NFM501FutureController</members> <members>NFM501FutureControllerTest</members> <members>NFM502Controller</members> <members>NFM502ControllerTest</members> <members>NFM503Controller</members> <members>NFM503InfoFileBatch</members> <members>NFM503InfoFileBatchTest</members> <members>NFM606Controller</members> <members>NFM606ControllerTest</members> <members>NFM607Rest</members> <members>NFM607RestTest</members> <members>NFM612Rest</members> <members>NFM612RestTest</members> <members>NFM620Rest</members> <members>NFM620RestSchedule</members> <members>NFM620RestScheduleTest</members> <members>NFM620RestTest</members> <members>NFM623Rest</members> <members>NFM623RestTest</members> <members>NFM702Controller</members> <members>NFM702ControllerTest</members> <members>NFM702WebService</members> <members>NFM702WebServiceTest</members> <members>NFMUtil</members> <members>NFMUtilTest</members> <members>OFSInsReportLayoutController</members> <members>OFSInsReportLayoutControllerTest</members> <members>OnCallController</members> <members>OnCallControllerTest</members> <members>Option</members> <members>PIHelper</members> <members>PIHelperTest</members> <members>QISPDFController</members> <members>QISPDFControllerTest</members> <members>RentalApplyController</members> <members>RentalApplyControllerTest</members> <members>SearchContactController</members> <members>SearchContactControllerTest</members> <members>SearchLeadController</members> <members>SearchLeadControllerTest</members> <members>SearchVisitorController</members> <members>SearchVistorControllerTest</members> <members>SimpleEventRegisterController</members> <members>SimpleEventRegisterControllerTester</members> <members>SLAReportDetailsController</members> <members>SLAReportDetailsControllerTest</members> <members>SObjectHelper</members> <members>SObjectHelperTest</members> <members>SoqlHelper</members> <members>SoqlHelperTest</members> <members>StartTradingController</members> <members>StartTradingControllerTest</members> <members>StraightBackAddressController</members> <members>StraightBackAddressControllerTest</members> <members>UpdateContractAimAmountHandler</members> <members>UpdateContractAimAmountHandlerTest</members> <members>ViewParticipantsController</members> <members>ViewParticipantsControllerTest</members> <members>WeeklyReportCmp</members> <members>WeeklyReportCmpTest</members> <members>XinDailyReportController</members> <members>XinDailyReportControllerTest</members> <name>ApexClass</name> </types> <types> <members>AssessmentReport</members> <members>BMEWorkPage</members> <members>B_Test</members> <members>CampaignMember</members> <members>CampaignMemberService</members> <members>CM_SearchContact</members> <members>CM_SearchContactService</members> <members>ConsumApplyUploadPdf</members> <members>ConsumReassign</members> <members>ConsumTrial</members> <members>ConsumTrialPDF</members> <members>FixtureRentalPDF</members> <members>FixtureRentalPicturePDF</members> <members>InsReportPDF</members> <members>InsReportPDFOuter</members> <members>InstructReport</members> <members>LeadIntention</members> <members>NewAndEditAddress</members> <members>NewAndEditAgencyContact</members> <members>NewAndEditASEActivity</members> <members>NewAndEditCampaignMember</members> <members>NewAndEditCase</members> <members>NewAndEditContact</members> <members>NewAndEditInquiryForm</members> <members>NewAndEditInspectionReport</members> <members>NewAndEditLead</members> <members>NewAndEditQIS</members> <members>NewAndEditRepairSubOrder</members> <members>NewAndEditReport</members> <members>NewAndEditTenderinformation</members> <members>NewConsumApply</members> <members>NewConsumApplyEquipmentSetDetail</members> <members>NewListOfConsumables</members> <members>NewOnCall</members> <members>NewRentalApply</members> <members>NewRepair</members> <members>NewRepairPage</members> <members>OFSInsReportLayout</members> <members>QISPDF</members> <members>RentalApplyUploadPdf</members> <members>SearchContactPage</members> <members>SearchLeadPage</members> <members>SearchVisitor</members> <members>SimpleEventRegister</members> <members>SLAReportDetails</members> <members>StartTrading</members> <members>StraightBackAddress</members> <members>TenderInformationUploadPdf</members> <members>TestClass</members> <members>TestVfPage</members> <members>UploadPdf</members> <members>ViewAddressDecryptInfo</members> <members>ViewAgencyContactDecryptInfo</members> <members>ViewASEActivityDecryptInfo</members> <members>ViewCaseDecryptInfo</members> <members>ViewConsumApplyEquipmentSetDetailDecrypt</members> <members>ViewContactDecryptInfo</members> <members>ViewDecryptConsumApply</members> <members>ViewEventDecryptInfo</members> <members>ViewInquiryFormDecryptInfo</members> <members>ViewInspectionReportDecryptInfo</members> <members>ViewLeadDecryptInfo</members> <members>ViewListOfConsumablesDecrypt</members> <members>ViewOnCallDecrypt</members> <members>ViewParticipantsDecryptInfo</members> <members>ViewQISReportDecryptInfo</members> <members>ViewRentalApplyDecrypt</members> <members>ViewRepairEncrypt</members> <members>ViewRepairSubOrderDecryptInfo</members> <members>ViewReportDecryptInfo</members> <members>ViewTenderinformationDecryptInfo</members> <members>XinDailyReport</members> <members>SearchAWSContactByNamePage</members> <name>ApexPage</name> </types> <types> <members>ContactHpDeptUpd</members> <members>FileAddressTrigger</members> <members>Repair</members> <name>ApexTrigger</name> </types> <types> <members>AgencyAccount</members> <members>NewAgencyContact</members> <members>WeeklyReport</members> <name>AuraDefinitionBundle</name> </types> <types> <members>AWSService</members> <name>StaticResource</name> <members>lexInventoryCount</members> <name>LightningComponentBundle</name> </types> <version>52.0</version> </Package>