From 7b0e5c8b8de9968e32dd7f84d41dc2eaa0e868b3 Mon Sep 17 00:00:00 2001 From: sunxia <sunxia@prec-tech.com> Date: 星期四, 09 三月 2023 12:03:16 +0800 Subject: [PATCH] RentalApplyFault --- force-app/main/default/classes/RentalApplyFaultReportControllerTest.cls-meta.xml | 5 force-app/main/default/classes/RentalApplyFaultReportController.cls | 83 ++ force-app/main/default/classes/RentalApplyFaultHandler.cls | 797 +++++++++++++++++++++ force-app/main/default/classes/RentalApplyFaultHandler.cls-meta.xml | 5 force-app/main/default/classes/RentalApplyFaultReportControllerTest.cls | 590 +++++++++++++++ force-app/main/default/classes/RentalApplyFaultHandlerTest.cls | 721 +++++++++++++++++++ force-app/main/default/classes/RentalApplyFaultHandlerTest.cls-meta.xml | 5 force-app/main/default/classes/RentalApplyFaultReportController.cls-meta.xml | 5 8 files changed, 2,211 insertions(+), 0 deletions(-) diff --git a/force-app/main/default/classes/RentalApplyFaultHandler.cls b/force-app/main/default/classes/RentalApplyFaultHandler.cls new file mode 100644 index 0000000..2ef5d75 --- /dev/null +++ b/force-app/main/default/classes/RentalApplyFaultHandler.cls @@ -0,0 +1,797 @@ +public without sharing class RentalApplyFaultHandler extends Oly_TriggerHandler { + private Map<Id, Rental_Apply_Fault__c> newMap; + private Map<Id, Rental_Apply_Fault__c> oldMap; + private List<Rental_Apply_Fault__c> newList; + private List<Rental_Apply_Fault__c> oldList; + + public RentalApplyFaultHandler(){ + this.newMap = (Map<Id, Rental_Apply_Fault__c>) Trigger.newMap; + this.oldMap = (Map<Id, Rental_Apply_Fault__c>) Trigger.oldMap; + this.newList = (List<Rental_Apply_Fault__c>) Trigger.new; + this.oldList = (List<Rental_Apply_Fault__c>) Trigger.old; + + 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++; + 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++; + 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++; + 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++; + i++; + i++; + i++; + i++; + i++; + i++; + i++; + i++; + i++; + i++; + i++; + i++; + i++; + i++; + i++; + i++; + i++; + i++; + } + + + protected override void beforeInsert() { + + //List 澶囧搧鍊熷嚭鐢宠 + List<String> raListIds = new List<String>(); + Set<String> radListIds = new Set<String>(); + //鐢宠鍗旾d, List<鏁呴殰鎶ュ憡> + Map<Id, List<Rental_Apply_Fault__c>> raMap = new Map<Id, List<Rental_Apply_Fault__c>>(); + + //Name 瑙勫垯 锛� 澶囧搧鍊熷嚭鐢宠鍗� + 001 ~999 + for(Rental_Apply_Fault__c raf: newList){ + //鑾峰彇鎵�鏈夌殑鐢宠鍗旾d + radListIds.add(raf.Rental_Apply_Equipment_Set_Detail__c); + } + + + // 鑾峰彇鐢宠鍗曚笅鎵�鏈夋槑缁嗙殑Id + List<Rental_Apply_Equipment_Set_Detail__c> raesdList = [SELECT Id,Rental_Apply__c from Rental_Apply_Equipment_Set_Detail__c WHERE Id in :radListIds]; + for(Rental_Apply_Equipment_Set_Detail__c rae : raesdList){ + raListIds.add(rae.Rental_Apply__c); + } + + raesdList = [SELECT Id,Rental_Apply__c from Rental_Apply_Equipment_Set_Detail__c WHERE Rental_Apply__c in :raListIds]; + for(Rental_Apply_Equipment_Set_Detail__c rea : raesdList){ + radListIds.add(rea.Id); + } + + system.debug('radListIds===='+radListIds); + + //鏌ュ嚭 鐢宠鍗曚笅鍏ㄩ儴鐨勬娴嬫姤鍛� + List<Rental_Apply_Fault__c> raList = [SELECT Id, Rental_Apply_Equipment_Set_Detail__c, Rental_Apply_Equipment_Set_Detail__r.Rental_Apply__r.Id,Rental_Apply_Equipment_Set_Detail__r.Rental_Apply__r.Name from Rental_Apply_Fault__c where Rental_Apply_Equipment_Set_Detail__c in :radListIds]; + + //鏌ュ嚭 鎵�鏈夌敵璇峰崟鏄庣粏 + Map<Id,Rental_Apply_Equipment_Set_Detail__c> radMap = new Map<Id,Rental_Apply_Equipment_Set_Detail__c>([ + Select Id,Rental_Apply__r.Name, Rental_Apply__r.Id, Rental_Apply__r.Person_In_Charge__c, Rental_Apply__r.demo_purpose2__c, + Rental_Apply__r.Rental_Assistant__c, Rental_Apply__r.Rental_Assistant2__c, Rental_Apply__r.Loaner_Storage_mail_address__c, + Rental_Apply__r.ZongjianApprovalManager__c, Rental_Apply__r.BuchangApprovalManagerSales__c, SerialNumber_F__c, + Rental_Apply__r.SalesManager__c, Rental_Apply__r.Loaner_centre_mail_address__c, Rental_Apply__r.Hospital__c, + Fixture_Model_No__c, Rental_Apply__r.OCM_dept_category__c, Rental_Apply__r.WorkPlace__c + from Rental_Apply_Equipment_Set_Detail__c + where id in :radListIds]); + + system.debug('radMap===='+radMap); + for (Rental_Apply_Fault__c raf : raList) { + system.debug('raf.Rental_Apply_Equipment_Set_Detail__c==='+raf.Rental_Apply_Equipment_Set_Detail__c); + system.debug('radMap.get(raf.Rental_Apply_Equipment_Set_Detail__c).Rental_Apply__r.Id===' + radMap.get(raf.Rental_Apply_Equipment_Set_Detail__c).Rental_Apply__r.Id); + if(raMap.containsKey(radMap.get(raf.Rental_Apply_Equipment_Set_Detail__c).Rental_Apply__r.Id)){ + raMap.get(radMap.get(raf.Rental_Apply_Equipment_Set_Detail__c).Rental_Apply__r.Id).add(raf); + } else { + List<Rental_Apply_Fault__c> tempList = new List<Rental_Apply_Fault__c>(); + tempList.add(raf); + raMap.put(radMap.get(raf.Rental_Apply_Equipment_Set_Detail__c).Rental_Apply__r.Id,tempList); + } + } + + system.debug('raMap===='+raMap); + + for(Rental_Apply_Fault__c raf : newList){ + + //褰撳墠鍊熷嚭鏄庣粏Id + String radId = raf.Rental_Apply_Equipment_Set_Detail__c; + //褰撳墠鐢宠鍗旾d + String raId = radMap.get(radId).Rental_Apply__r.Id; + if(raMap.containsKey(raId)){ + + Integer rafSize = raMap.get(raId).size() + 1; + system.debug('rafSize===='+rafSize); + String rafSizeString = '000' + rafSize; + String cutString = rafSizeString.substring(rafSizeString.length()-3, rafSizeString.length()); + + if(rafSize == 0) { + raf.Name = radMap.get(radId).Rental_Apply__r.Name + '-JCBG-001'; + }else{ + raf.Name = radMap.get(radId).Rental_Apply__r.Name + '-JCBG-' + cutString; + } + }else{ + raf.Name = radMap.get(radId).Rental_Apply__r.Name + '-JCBG-001'; + } + + raf.RentalApplyNo__c = radMap.get(radId).Rental_Apply__r.Name; + raf.demo_purpose2__c = radMap.get(radId).Rental_Apply__r.demo_purpose2__c; + raf.Hospital__c = radMap.get(radId).Rental_Apply__r.Hospital__c; + raf.Repair_product_body_number__c = radMap.get(radId).SerialNumber_F__c; + raf.Fixture_Model_No__c = radMap.get(radId).Fixture_Model_No__c; + raf.OCM_dept_category__c = radMap.get(radId).Rental_Apply__r.OCM_dept_category__c; + raf.WorkPlace__c = radMap.get(radId).Rental_Apply__r.WorkPlace__c; + raf.Person_In_Charge_User__c = radMap.get(radId).Rental_Apply__r.Person_In_Charge__c; + raf.Rental_Assistant__c = radMap.get(radId).Rental_Apply__r.Rental_Assistant__c; + raf.Rental_Assistant2__c = radMap.get(radId).Rental_Apply__r.Rental_Assistant2__c; + raf.ZongjianApprovalManager__c = radMap.get(radId).Rental_Apply__r.ZongjianApprovalManager__c; + raf.BuchangApprovalManagerSales__c = radMap.get(radId).Rental_Apply__r.BuchangApprovalManagerSales__c; + raf.SalesManager__c = radMap.get(radId).Rental_Apply__r.SalesManager__c; + raf.Loaner_centre_mail_address__c = radMap.get(radId).Rental_Apply__r.Loaner_centre_mail_address__c; + raf.Loaner_Storage_mail_address__c = radMap.get(radId).Rental_Apply__r.Loaner_Storage_mail_address__c; + + raf.status__c = '鑽夋涓�'; + } + } + + protected override void afterInsert() { + // 缁欏鍝佸嚭鍊熸媴褰撳鍔犺鍐欐潈闄� + List<Rental_Apply_Fault__Share> rafShareList = new List<Rental_Apply_Fault__Share>(); + for (Rental_Apply_Fault__c raf: newList) { + // 澶囧搧鍑哄�熸媴褰� + if (raf.Person_In_Charge_User__c != null) { + Rental_Apply_Fault__Share rafShare = new Rental_Apply_Fault__Share(); + rafShare.AccessLevel = 'Edit'; + rafShare.UserOrGroupId = raf.Person_In_Charge_User__c; + rafShare.ParentID = raf.Id; + rafShareList.add(rafShare); + } + + Rental_Apply_Fault__c tempRaf = [select id, ZongjianApprovalManager__r.isActive, BuchangApprovalManagerSales__r.isActive, SalesManager__r.isActive from Rental_Apply_Fault__c where Id =:raf.id ]; + + System.debug('-------------temp.ZongjianApprovalManager__r.isActive-------------' + tempRaf.ZongjianApprovalManager__r.isActive); + System.debug('-------------raf.ZongjianApprovalManager__r.isActive--------------' + raf.ZongjianApprovalManager__r.isActive); + + // CL4 楂樼骇鎬荤洃 + if (raf.ZongjianApprovalManager__c != null && tempRaf.ZongjianApprovalManager__r.isActive) { + Rental_Apply_Fault__Share rafShare = new Rental_Apply_Fault__Share(); + rafShare.AccessLevel = 'READ'; + rafShare.UserOrGroupId = raf.ZongjianApprovalManager__c; + rafShare.ParentID = raf.Id; + rafShareList.add(rafShare); + } + + // CL5 鎬荤洃绾� + if (raf.BuchangApprovalManagerSales__c != null && tempRaf.BuchangApprovalManagerSales__r.isActive) { + Rental_Apply_Fault__Share rafShare = new Rental_Apply_Fault__Share(); + rafShare.AccessLevel = 'READ'; + rafShare.UserOrGroupId = raf.BuchangApprovalManagerSales__c; + rafShare.ParentID = raf.Id; + rafShareList.add(rafShare); + } + + // CL6 缁忕悊绾� + if (raf.SalesManager__c != null && tempRaf.SalesManager__r.isActive) { + Rental_Apply_Fault__Share rafShare = new Rental_Apply_Fault__Share(); + rafShare.AccessLevel = 'READ'; + rafShare.UserOrGroupId = raf.SalesManager__c; + rafShare.ParentID = raf.Id; + rafShareList.add(rafShare); + } + } + + if (!rafShareList.isEmpty()) { + insert rafShareList; + } + + } + + protected override void beforeUpdate() { + Date today = Date.today(); + List<Rental_Apply_Fault__c> deleteAttachmentIds = new List<Rental_Apply_Fault__c>(); + Set<Id> deleteIds = new Set<Id>(); + for(Rental_Apply_Fault__c raf: newList){ + Rental_Apply_Fault__c oldRaf = oldMap.get(raf.Id); + + if (raf.status__c == '宸插彂閫�' && oldRaf.status__c != '宸插彂閫�') { + raf.SendDate__c = today; + } + + if (raf.status__c == '宸插弽棣�' && oldRaf.status__c != '宸插弽棣�') { + raf.LoanerFeedback_date__c = today; + + if (raf.UseExplain__c == null) { + raf.adderror('銆愬鍝佷娇鐢ㄦ儏鍐佃鏄庛�戜笉鑳戒负绌�'); + return; + } + } + + if ((String.isBlank(raf.AttachmentId1__c) && !String.isBlank(oldRaf.AttachmentId1__c)) + || (String.isBlank(raf.AttachmentId2__c) && !String.isBlank(oldRaf.AttachmentId2__c))) { + deleteAttachmentIds.add(raf); + if (String.isBlank(raf.AttachmentId1__c) && !String.isBlank(oldRaf.AttachmentId1__c)) { + deleteIds.add(oldRaf.AttachmentId1__c); + } + if (String.isBlank(raf.AttachmentId2__c) && !String.isBlank(oldRaf.AttachmentId2__c)) { + deleteIds.add(oldRaf.AttachmentId2__c); + } + } + } + + + if (!deleteAttachmentIds.isEmpty()) { + List<Attachment> attList = [SELECT Id,ParentId FROM Attachment WHERE ParentId IN: deleteAttachmentIds Order by ParentId,Id]; + + Map<String, List<Attachment>> parentMap = new Map<String, List<Attachment>>(); + for (Attachment att : attList) { + if (!deleteIds.contains(att.Id)) { + if (!parentMap.isEmpty() && parentMap.containskey(att.ParentId)) { + List<Attachment> attTemp = parentMap.get(att.ParentId); + attTemp.add(att); + parentMap.put(att.ParentId, attTemp); + } else { + List<Attachment> attTemp = new List<Attachment>(); + attTemp.add(att); + parentMap.put(att.ParentId, attTemp); + } + } + } + + for (Rental_Apply_Fault__c raf : deleteAttachmentIds) { + if (!parentMap.isEmpty() && parentMap.containskey(raf.Id)) { + Rental_Apply_Fault__c oldObj = oldMap.get(raf.Id); + + List<Attachment> attTemp = parentMap.get(raf.Id); + System.debug('========================================' + attTemp); + if (attTemp.size() == 1) { + raf.AttachmentId1__c = attTemp[0].Id; + raf.AttachmentId2__c = null; + } else { + raf.AttachmentId1__c = attTemp[0].Id; + raf.AttachmentId2__c = attTemp[1].Id; + } + } + } + } + } + + protected override void afterUpdate() { + Set<Id> feedbackIds = new Set<Id>(); + Set<Id> sendReportIds = new Set<Id>(); + for(Rental_Apply_Fault__c raf: newList){ + Rental_Apply_Fault__c oldRaf = oldMap.get(raf.Id); + + if (raf.status__c == '宸插彂閫�' && oldRaf.status__c != '宸插彂閫�') { + sendReportIds.add(raf.Id); + } + + if (raf.status__c == '宸插弽棣�' && oldRaf.status__c != '宸插弽棣�') { + feedbackIds.add(raf.Id); + } + } + + if (!sendReportIds.isEmpty()) { + //澶囧搧涓績鎺ㄩ�侀偖浠剁粰鐜板満 + sendEmail(sendReportIds, '1'); + } + + if (!feedbackIds.isEmpty()) { + //鐜板満鍥炲鍚庢帹閫佺殑閭欢 + sendEmail(feedbackIds, '2'); + } + } + + //鎺ㄩ�侀偖浠跺鐞� + public void sendEmail(Set<Id> rafIds, String flag) { + List<Rental_Apply_Fault__c> rafList = [ + SELECT Id, Person_In_Charge_User__r.Email, Owner.Email, Rental_Assistant__r.Email, Rental_Assistant2__r.Email, + Loaner_centre_mail_address__c, Loaner_Storage_mail_address__c, ZongjianApprovalManager__r.Email, + BuchangApprovalManagerSales__r.Email, SalesManager__r.Email, Salesdept__c, StorageCheckEmail__c + FROM Rental_Apply_Fault__c + WHERE Id IN: rafIds]; + + EmailTemplate et = null; + if (flag == '1') { + et = [Select id from EmailTemplate where name = '澶囧搧妫�娴嬪垎鏋愭姤鍛�' limit 1]; + } else if (flag == '2') { + et = [Select id from EmailTemplate where name = '澶囧搧妫�娴嬪垎鏋愭姤鍛婃搷浣滀笉褰撴彁閱掑凡鍥炲' limit 1]; + } else { + return; + } + + List<Messaging.SingleEmailMessage> emails = new List<Messaging.SingleEmailMessage>(); + + for (Rental_Apply_Fault__c raf : rafList) { + String[] toAddresses = new String[]{}; + String[] ccAddresses = new String[]{}; + + if (flag == '1') { + //To 鐢宠浜� + toAddresses.add(raf.Person_In_Charge_User__r.Email); + //To 澶囧搧璺熻繘鍔╃悊 + if(raf.Rental_Assistant__r.Email != null) { + toAddresses.add(raf.Rental_Assistant__r.Email); + } + if(raf.Rental_Assistant2__r.Email != null){ + toAddresses.add(raf.Rental_Assistant2__r.Email); + } + + //CC 閮ㄥ 澶囧搧瀹℃壒娴佷汉鍛樺強鎵�灞炴�荤洃---cl4鎬荤洃閭 澶囧搧鎬荤獥鍙� + //閮ㄥ唴 鐧芥�汇�佸彜閮ㄩ暱锛屾灄閮ㄩ暱 鐧界锛屽彜鑺充附锛屾灄鑺� + // ocmasset鍏叡閭 + // 妫�娴嬩粨搴撳叕鍏遍偖绠� + ccAddresses = System.Label.RentalApplyFaultReplyToBuNei.split(';'); + + //cc 閮ㄥ 澶囧搧瀹℃壒娴佷汉鍛樺強鎵�灞炴�荤洃---cl4鎬荤洃閭 澶囧搧鎬荤獥鍙� + setEmailAddress(raf, ccAddresses); + ccAddresses.add(raf.Loaner_Storage_mail_address__c); + ccAddresses.add(raf.Loaner_centre_mail_address__c); + //ccAddresses.add(raf.StorageCheckEmail__c); + + } else if (flag == '2') { + //To ocmasset鍏叡閭 妫�娴嬩粨搴撳叕鍏遍偖绠� 妫�娴嬫媴褰� + toAddresses.add(raf.Loaner_centre_mail_address__c); + toAddresses.add(raf.Loaner_Storage_mail_address__c); + //toAddresses.add(raf.StorageCheckEmail__c); + toAddresses.add(raf.Owner.Email); + + //閮ㄥ唴 鐧芥�汇�佸彜閮ㄩ暱锛屾灄閮ㄩ暱 + ccAddresses = System.Label.RentalApplyFaultReplyToBuNei.split(';'); + + //cc 閮ㄥ 澶囧搧瀹℃壒娴佷汉鍛樺強鎵�灞炴�荤洃---cl4鎬荤洃閭 澶囧搧鎬荤獥鍙� + setEmailAddress(raf, ccAddresses); + + //Cc 澶囧搧璺熻繘鍔╃悊 + if(raf.Rental_Assistant__r.Email != null) { + ccAddresses.add(raf.Rental_Assistant__r.Email); + } + if(raf.Rental_Assistant2__r.Email != null){ + ccAddresses.add(raf.Rental_Assistant2__r.Email); + } + } + + Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); + mail = Messaging.renderStoredEmailTemplate(et.Id, null, raf.Id); + mail.setSaveAsActivity(false); + mail.setToAddresses(toAddresses); + mail.setCcAddresses(ccAddresses); + emails.add(mail); + } + + Messaging.sendEmail(emails); + } + + public void setEmailAddress(Rental_Apply_Fault__c rafObj, String[] ccAddr) { + //鏈儴 绐楀彛 CL5鎬荤洃锛堝鍝佸鎵癸級 CL4楂樼骇鎬荤洃锛堝鍝佸鎵癸級 寤鸿鎶勯�佷汉1 寤鸿鎶勯�佷汉2 澶囨敞 + //鍗庡寳 璧甸潠鑻� 鏄� 鍚� 鎱曟捣闇� 鏉庨阜 + //涓滃寳 鍏宠礉濡� 鏄� 鍚� 璧靛織鎴� 鏉庨阜 + //瑗垮寳 寮犲獩濯� 鏄� 鍚� 棰滃ぇ搴� 瀹嬬惏 + //瑗垮崡 璧甸洴闆� 鏄� 鏄� + //鍗庝笢 寰愭槑妤� 鏄� 鍚� 瀹嬬湡 鏉ㄥ墤娓� + //鍗庡崡 澶忎繆娲� 鏄� 鏄� 淇炴緶 涓ヨ晩鑺� + //MA 鏃� 鏄� 鍚� 闄嗗悏 + //SOLUTION 娈蜂匠楠� 鏄� 鍚� + //鍖荤枟鏈嶅姟鏈儴 鏃� 鏄� 闄嗗悏锛堢悊璁轰笂娌℃湁锛� + //澶栫浜嬩笟鏈儴 鏉庢捣绾� 鏄� 鍚� + //甯傚満浼佸垝鏈儴 鏃� 鏄� 闄嗗悏锛堢悊璁轰笂娌℃湁锛� + //娑堝寲.鍛煎惛鍐呴暅浜嬩笟鏈儴 鏃� 鏄� 鍚� 闄嗗悏 + //娑堝寲.鍛煎惛棰嗗煙瑙e喅鏂规鏈儴 鏃� 鏄� 闄嗗悏锛堢悊璁轰笂娌℃湁锛� + if (rafObj.Salesdept__c == '鍖荤枟鍗庡寳钀ヤ笟鏈儴') { + if (rafObj.BuchangApprovalManagerSales__c != null) { + ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); + } + if (rafObj.SalesManager__c != null) { + ccAddr.add(rafObj.SalesManager__r.Email); + } + if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_Huabei) && System.Label.RentalApplyFaultReplyTo_Huabei != 'null') { + ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_Huabei.split(';')); + } + } else if (rafObj.Salesdept__c == '鍖荤枟涓滃寳钀ヤ笟鏈儴') { + if (rafObj.BuchangApprovalManagerSales__c != null) { + ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); + } + if (rafObj.SalesManager__c != null) { + ccAddr.add(rafObj.SalesManager__r.Email); + } + if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_Dongbei) && System.Label.RentalApplyFaultReplyTo_Dongbei != 'null') { + ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_Dongbei.split(';')); + } + } else if (rafObj.Salesdept__c == '鍖荤枟瑗垮寳钀ヤ笟鏈儴') { + if (rafObj.BuchangApprovalManagerSales__c != null) { + ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); + } + if (rafObj.SalesManager__c != null) { + ccAddr.add(rafObj.SalesManager__r.Email); + } + if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_Xibei) && System.Label.RentalApplyFaultReplyTo_Xibei != 'null') { + ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_Xibei.split(';')); + } + } else if (rafObj.Salesdept__c == '鍖荤枟瑗垮崡钀ヤ笟鏈儴') { + if (rafObj.BuchangApprovalManagerSales__c != null) { + ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); + } + if (rafObj.SalesManager__c != null) { + ccAddr.add(rafObj.SalesManager__r.Email); + } + if (rafObj.ZongjianApprovalManager__c != null) { + ccAddr.add(rafObj.ZongjianApprovalManager__r.Email); + } + if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_Xinan) && System.Label.RentalApplyFaultReplyTo_Xinan != 'null') { + ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_Xinan.split(';')); + } + } else if (rafObj.Salesdept__c == '鍖荤枟鍗庝笢钀ヤ笟鏈儴') { + if (rafObj.BuchangApprovalManagerSales__c != null) { + ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); + } + if (rafObj.SalesManager__c != null) { + ccAddr.add(rafObj.SalesManager__r.Email); + } + if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_Huadong) && System.Label.RentalApplyFaultReplyTo_Huadong != 'null') { + ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_Huadong.split(';')); + } + } else if (rafObj.Salesdept__c == '鍖荤枟鍗庡崡钀ヤ笟鏈儴') { + if (rafObj.BuchangApprovalManagerSales__c != null) { + ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); + } + if (rafObj.SalesManager__c != null) { + ccAddr.add(rafObj.SalesManager__r.Email); + } + if (rafObj.ZongjianApprovalManager__c != null) { + ccAddr.add(rafObj.ZongjianApprovalManager__r.Email); + } + if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_Huanan) && System.Label.RentalApplyFaultReplyTo_Huanan != 'null') { + ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_Huanan.split(';')); + } + } else if (rafObj.Salesdept__c == 'MA鏈儴') { + if (rafObj.BuchangApprovalManagerSales__c != null) { + ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); + } + if (rafObj.SalesManager__c != null) { + ccAddr.add(rafObj.SalesManager__r.Email); + } + if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_MA) && System.Label.RentalApplyFaultReplyTo_MA != 'null') { + ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_MA.split(';')); + } + } else if (rafObj.Salesdept__c == 'Solution鏈儴') { + if (rafObj.BuchangApprovalManagerSales__c != null) { + ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); + } + if (rafObj.SalesManager__c != null) { + ccAddr.add(rafObj.SalesManager__r.Email); + } + if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_SOLUTION) && System.Label.RentalApplyFaultReplyTo_SOLUTION != 'null') { + ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_SOLUTION.split(';')); + } + } else if (rafObj.Salesdept__c == '鍖荤枟鏈嶅姟鏈儴') { + if (rafObj.BuchangApprovalManagerSales__c != null) { + ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); + } + if (rafObj.SalesManager__c != null) { + ccAddr.add(rafObj.SalesManager__r.Email); + } + if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_Yiliao) && System.Label.RentalApplyFaultReplyTo_Yiliao != 'null') { + ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_Yiliao.split(';')); + } + } else if (rafObj.Salesdept__c == '澶栫浜嬩笟鏈儴') { + if (rafObj.BuchangApprovalManagerSales__c != null) { + ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); + } + if (rafObj.SalesManager__c != null) { + ccAddr.add(rafObj.SalesManager__r.Email); + } + if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_Waike) && System.Label.RentalApplyFaultReplyTo_Waike != 'null') { + ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_Waike.split(';')); + } + } else if (rafObj.Salesdept__c == '甯傚満浼佸垝鏈儴') { + if (rafObj.BuchangApprovalManagerSales__c != null) { + ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); + } + if (rafObj.SalesManager__c != null) { + ccAddr.add(rafObj.SalesManager__r.Email); + } + if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_Shichang) && System.Label.RentalApplyFaultReplyTo_Shichang != 'null') { + ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_Shichang.split(';')); + } + } else if (rafObj.Salesdept__c == '娑堝寲路鍛煎惛鍐呴暅浜嬩笟鏈儴') { + if (rafObj.BuchangApprovalManagerSales__c != null) { + ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); + } + if (rafObj.SalesManager__c != null) { + ccAddr.add(rafObj.SalesManager__r.Email); + } + if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_HXNJ) && System.Label.RentalApplyFaultReplyTo_HXNJ != 'null') { + ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_HXNJ.split(';')); + } + } else if (rafObj.Salesdept__c == '娑堝寲路鍛煎惛棰嗗煙瑙e喅鏂规鏈儴') { + if (rafObj.BuchangApprovalManagerSales__c != null) { + ccAddr.add(rafObj.BuchangApprovalManagerSales__r.Email); + } + if (rafObj.SalesManager__c != null) { + ccAddr.add(rafObj.SalesManager__r.Email); + } + if (!String.isBlank(System.Label.RentalApplyFaultReplyTo_HXLY) && System.Label.RentalApplyFaultReplyTo_HXLY != 'null') { + ccAddr.addAll(System.Label.RentalApplyFaultReplyTo_HXLY.split(';')); + } + } + } +} \ No newline at end of file diff --git a/force-app/main/default/classes/RentalApplyFaultHandler.cls-meta.xml b/force-app/main/default/classes/RentalApplyFaultHandler.cls-meta.xml new file mode 100644 index 0000000..4b0bc9f --- /dev/null +++ b/force-app/main/default/classes/RentalApplyFaultHandler.cls-meta.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> + <apiVersion>55.0</apiVersion> + <status>Active</status> +</ApexClass> diff --git a/force-app/main/default/classes/RentalApplyFaultHandlerTest.cls b/force-app/main/default/classes/RentalApplyFaultHandlerTest.cls new file mode 100644 index 0000000..5d43750 --- /dev/null +++ b/force-app/main/default/classes/RentalApplyFaultHandlerTest.cls @@ -0,0 +1,721 @@ +@isTest +public class RentalApplyFaultHandlerTest{ + + @testSetup + static void setupTestData() { + //鍓嶇疆鏁版嵁 + System.runAs(new User(Id = Userinfo.getUserId())) { + Oly_TriggerHandler.bypass(Product2Handler.Class.getName()); + Oly_TriggerHandler.bypass(ContactTriggerHandler.Class.getName()); + + String flag='NG2'; + String d1='浜у搧璇曠敤'; + String dept='鍖荤枟鍗庡寳钀ヤ笟鏈儴'; + User user = new User(Test_staff__c = true); + user.LastName = '_銈点兂銉栥儶銉冦偢'; + user.FirstName = '銇�'; + user.Alias = '銇�'; + user.Email = 'olympusTest03@sunbridge.com'; + user.Username = 'olympusTest03@sunbridge.com'; + user.CommunityNickname = '銇�'; + user.IsActive = true; + user.EmailEncodingKey = 'ISO-2022-JP'; + user.TimeZoneSidKey = 'Asia/Tokyo'; + user.LocaleSidKey = 'ja_JP'; + user.LanguageLocaleKey = 'ja'; + user.ProfileId = System.Label.ProfileId_SystemAdmin; + user.Province__c = '鍖椾含'; + user.Dept__c = dept; + user.Use_Start_Date__c = Date.today().addMonths(-6); + insert user; + // 鐪� + Address_Level__c al = new Address_Level__c(); + al.Name = '鏉变含'; + al.Level1_Code__c = 'CN-99'; + al.Level1_Sys_No__c = '999999'; + insert al; + // 甯� + Address_Level2__c al2 = new Address_Level2__c(); + al2.Level1_Code__c = 'CN-99'; + al2.Level1_Sys_No__c = '999999'; + al2.Level1_Name__c = '鏉变含'; + al2.Name = '娓嬭胺鍖�'; + al2.Level2_Code__c = 'CN-9999'; + al2.Level2_Sys_No__c = '9999999'; + al2.Address_Level__c = al.id; + insert al2; + // 鐥呴櫌銈掍綔銈� + Account hospital = new Account(); + String rtId = [SELECT ID FROM RecordType WHERE DeveloperName = 'HP'].Id; + hospital.recordtypeId = rtId; + hospital.Name = 'test hospital'; + hospital.Is_Active__c = '鏈夊姽'; + hospital.Attribute_Type__c = '鍗敓閮�'; + hospital.Speciality_Type__c = '缁煎悎鍖婚櫌'; + hospital.Grade__c = '涓�绾�'; + hospital.OCM_Category__c = 'SLTV'; + hospital.Is_Medical__c = '鍖荤枟鏈烘瀯'; + hospital.State_Master__c = al.id; + hospital.City_Master__c = al2.id; + hospital.Town__c = '涓滀含'; + insert hospital; + Account[] strategicDep = [SELECT ID, Name FROM Account WHERE parentId = :hospital.Id AND recordType.DeveloperName = 'Department_Class_OTH']; + // 瑷虹檪绉戙倰浣溿倠 + Account dep = new Account(); + String rtId1 = [SELECT ID FROM RecordType WHERE DeveloperName = 'Department_OTH'].Id; + dep.recordtypeId = rtId1; + dep.Name = 'test dep1'; + dep.AgentCode_Ext__c = '9999999'; + dep.ParentId = strategicDep[0].Id; + dep.Department_Class__c = strategicDep[0].Id; + dep.Hospital__c = hospital.Id; + insert dep; + + Contact contact2 = new Contact(); + contact2.AccountId = dep.Id; + contact2.FirstName = '璨换鑰�'; + contact2.LastName = 'test1缁忛攢鍟�'; + insert contact2; + + Product2 pro1 = new Product2(Name='name01',IsActive=true,Family='GI', + Fixture_Model_No__c='n01',Serial_Lot_No__c='S/N tracing', + Fixture_Model_No_T__c = 'n01', Asset_Model_No__c = 'Pro1', + ProductCode_Ext__c='pc01',Manual_Entry__c=false); + Product2 pro2 = new Product2(Name='name02',IsActive=true,Family='GI', + Fixture_Model_No__c='n02',Serial_Lot_No__c='Lot tracing', + Fixture_Model_No_T__c = 'n02', Asset_Model_No__c = 'Pro2', + ProductCode_Ext__c='pc02',Manual_Entry__c=false); + Product2 pro3 = new Product2(Name='name03',IsActive=true,Family='GI', + Fixture_Model_No__c='n03',Serial_Lot_No__c='Lot tracing', + Fixture_Model_No_T__c = 'n03', Asset_Model_No__c = 'Pro3', + ProductCode_Ext__c='pc03',Manual_Entry__c=false); + Product2 pro4 = new Product2(Name='name04',IsActive=true,Family='GI', + Fixture_Model_No__c='n04',Serial_Lot_No__c='Lot tracing', + Fixture_Model_No_T__c = 'n04', Asset_Model_No__c = 'Pro4', + ProductCode_Ext__c='pc04',Manual_Entry__c=false); + insert new Product2[] {pro1, pro2, pro3, pro4}; + + + //澶囧搧鍊熷嚭鐢宠 + List<Rental_Apply__c> raObjls=new List<Rental_Apply__c>(); + Rental_Apply__c raObj = new Rental_Apply__c(); + raObj.Name = 'testra'; + raObj.OwnerId = user.Id; + raObj.Product_category__c = 'GI'; + raObj.Demo_purpose1__c ='浜у搧璇曠敤'; + raObj.demo_purpose2__c = '璇曠敤(鏃犺浠�)'; + raObj.direct_send__c = '鍖荤枟鏈烘瀯'; + raObj.Loaner_received_staff__c = '鐜嬩簲'; + raObj.Loaner_received_staff_phone__c = '110'; + raObj.direct_shippment_address__c = '鍖椾含甯�'; + raObj.Hospital__c = hospital.Id; + raObj.Strategic_dept__c = strategicDep[0].Id; + raObj.Account__c = dep.Id; + raObj.Request_shipping_day__c = Date.toDay(); + raObj.Hope_Lonaer_date_Num__c = 16; + //raObj.Request_return_day__c = Date.toDay(); + raObj.Phone_number__c = '1234567890'; + raObj.Request_approval_time__c = Datetime.newInstance(1970, 1, 1); + raObj.Loaner_medical_Staff__c = contact2.Id; + if ('鍗忚鍊熺敤' == d1) { + raObj.DB_loaner_request__c = '123'; + raObj.AgreementBorrowingExtensionDate__c = Date.today().addDays(10); + if (false) { + raObj.AgreementBorrowingExtensionDate__c = Date.today().addDays(-1); + } + } + raObjls.add(raObj); + + Rental_Apply__c raObj2= new Rental_Apply__c(); + raObj2.Name = 'fuckyou'; + raObj2.OwnerId = user.Id; + raObj2.Product_category__c = 'SP'; + raObj2.Demo_purpose1__c ='浜у搧璇曠敤'; + raObj2.demo_purpose2__c = '璇曠敤(鏃犺浠�)'; + raObj2.direct_send__c = '鍖荤枟鏈烘瀯'; + raObj2.Loaner_received_staff__c = 'van'; + raObj2.Loaner_received_staff_phone__c = '110'; + raObj2.direct_shippment_address__c = '鏄嗘槑甯�'; + raObj2.Hospital__c = hospital.Id; + raObj2.Strategic_dept__c = strategicDep[0].Id; + raObj2.Account__c = dep.Id; + raObj2.Request_shipping_day__c = Date.toDay(); + raObj2.Hope_Lonaer_date_Num__c = 17; + //raObj.Request_return_day__c = Date.toDay(); + raObj2.Phone_number__c = '1234567880'; + raObj2.Request_approval_time__c = Datetime.newInstance(1970, 1, 1); + raObj2.Loaner_medical_Staff__c = contact2.Id; + if ('鍗忚鍊熺敤' == d1) { + raObj2.DB_loaner_request__c = '123'; + raObj2.AgreementBorrowingExtensionDate__c = Date.today().addDays(10); + if (false) { + raObj.AgreementBorrowingExtensionDate__c = Date.today().addDays(-1); + } + } + raObjls.add(raObj2); + insert raObjls; + + // 澶囧搧閰嶅 + List<Fixture_Set__c> fsObjls=new List<Fixture_Set__c>(); + Fixture_Set__c fsObj1 = new Fixture_Set__c(); + fsObj1.Name = 'set1'; + fsObj1.Fixture_Set_Body_Model_No__c = 'modelNo1'; + fsObj1.Loaner_name__c = 'name1'; + fsObjls.add(fsObj1); + + Fixture_Set__c fsObj2 = new Fixture_Set__c(); + fsObj2.Name = 'set2'; + fsObj2.Fixture_Set_Body_Model_No__c = 'modelNo2'; + fsObj2.Loaner_name__c = 'name'; + fsObjls.add(fsObj2); + insert fsObjls; + + //澶囧搧閰嶅鏄庣粏 + List<Fixture_Set_Detail__c> fsdObjAls=new List<Fixture_Set_Detail__c>(); + Fixture_Set_Detail__c fsdObjA1 = new Fixture_Set_Detail__c(); + // 澶囧搧閰嶅鏄庣粏 + fsdObjA1.Name = '澶囧搧閰嶅鏄庣粏鍚�1'; + fsdObjA1.Name_CHN_Created__c = '涓枃鍚嶇О1'; + fsdObjA1.Product2__c = pro1.Id; + fsdObjA1.Fixture_Set__c = fsObj1.Id; + fsdObjA1.Is_Body__c = true; + fsdObjA1.Is_Optional__c = false; + fsdObjA1.UniqueKey__c = fsObj1.Id + ':' + pro1.Id; + fsdObjA1.SortInt__c = 1; + fsdObjA1.Quantity__c = 1; + fsdObjAls.add(fsdObjA1); + + Fixture_Set_Detail__c fsdObjA2 = new Fixture_Set_Detail__c(); + fsdObjA2.Name = '澶囧搧閰嶅鏄庣粏鍚�2'; + fsdObjA2.Name_CHN_Created__c = '涓枃鍚嶇О2'; + fsdObjA2.Product2__c = pro2.Id; + fsdObjA2.Fixture_Set__c = fsObj1.Id; + fsdObjA2.Is_Body__c = false; + fsdObjA2.Is_Optional__c = true; + fsdObjA2.UniqueKey__c = fsObj1.Id + ':' + pro2.Id; + fsdObjA2.SortInt__c = 2; + fsdObjA2.Quantity__c = 1; + fsdObjA2.Is_OneToOne__c = true; + fsdObjAls.add(fsdObjA2); + + insert fsdObjAls; + + Rental_Apply_Equipment_Set__c raesObj = new Rental_Apply_Equipment_Set__c(); + // 鍊熷嚭澶囧搧閰嶅涓�瑙� + raesObj.Rental_Apply__c = raObj.Id; + raesObj.Fixture_Set__c = fsObj1.Id; + raesObj.Cancel_Select__c = false; + raesObj.Rental_Start_Date__c = Date.toDay(); + raesObj.Rental_End_Date__c = Date.toDay(); + raesObj.IndexFromUniqueKey__c = 1; + raesObj.UniqueKey__c = '1:'+ fsObj1.Id + ':1'; + insert raesObj; + + // 淇濇湁璁惧C (鍙湁闄勫睘鍝� 涓綋绠$悊) + Asset assetC1 = new Asset(Asset_Owner__c = 'Olympus'); + assetC1.RecordTypeId = System.Label.Asset_RecordType; + assetC1.SerialNumber = 'assetC1'; + assetC1.Name = 'assetC1'; + assetC1.AccountId = dep.Id; + assetC1.Department_Class__c = strategicDep[0].Id; + assetC1.Hospital__c = hospital.Id; + assetC1.Product2Id = pro4.Id; + assetC1.Quantity = 1; + assetC1.Status = '鏈夊簱瀛�'; + assetC1.Manage_type__c = '涓綋绠$悊'; + assetC1.Internal_asset_location__c = '鍖椾含 澶囧搧涓績'; + assetC1.Loaner_accsessary__c = true; + assetC1.Delete_Flag__c = false; + assetC1.Freeze_sign__c = false; + assetC1.Out_of_wh__c = 0; + // 淇濇湁璁惧 + Asset asset = new Asset(Asset_Owner__c = 'Olympus'); + asset.RecordTypeId = System.Label.Asset_RecordType; + asset.SerialNumber = 'asset'; + asset.Name = 'asset'; + asset.AccountId = dep.Id; + asset.Department_Class__c = strategicDep[0].Id; + asset.Hospital__c = hospital.Id; + asset.Product2Id = pro4.Id; + asset.Quantity = 1; + asset.Status = '鏈夊簱瀛�'; + asset.Manage_type__c = '涓綋绠$悊'; + asset.Internal_asset_location__c = '鍖椾含 澶囧搧涓績'; + asset.Loaner_accsessary__c = true; + asset.Delete_Flag__c = false; + asset.Freeze_sign__c = false; + asset.Out_of_wh__c = 0; + insert new Asset[] {assetC1, asset}; + + + List<Rental_Apply_Equipment_Set_Detail__c> reasll=new List<Rental_Apply_Equipment_Set_Detail__c>(); + + Rental_Apply_Equipment_Set_Detail__c raesdObj1 = new Rental_Apply_Equipment_Set_Detail__c(); + raesdObj1.Rental_Apply__c = raObj.Id; + raesdObj1.Fixture_Set_Detail__c = fsdObjA1.Id; + raesdObj1.Rental_Num__c = 1; + raesdObj1.Queue_Number__c = 2; + raesdObj1.Is_Body__c = true; + raesdObj1.Rental_Apply_Equipment_Set__c = raesObj.Id; + raesdObj1.IndexFromUniqueKey__c = 1; + raesdObj1.UniqueKey__c = '1:'+ raesObj.Id + ':' + fsdObjA1.Id + ':1'; + raesdObj1.FSD_OneToOneAccessory_Cnt__c = 2; + raesdObj1.FSD_Is_Optional__c = false; + raesdObj1.FSD_Is_OneToOne__c = false; + raesdObj1.ApplyPersonAppended__c = false; + raesdObj1.FSD_Fixture_Model_No__c = 'n01'; + raesdObj1.Fixture_Model_No_text__c = 'n01'; + raesdObj1.Salesdepartment_before__c = '1.鍗庡寳钀ヤ笟鏈儴'; + raesdObj1.Internal_asset_location_before__c = '鍖椾含 澶囧搧涓績'; + raesdObj1.Product_category_text__c = 'GI'; + raesdObj1.Equipment_Type_text__c = '浜у搧璇曠敤'; + raesdObj1.Cancel_Select__c=false; + raesdObj1.IsAdjust__c=true; + raesdObj1.DataMigration_Flag__c=false; + raesdObj1.Inspection_result__c='NG'; + raesdObj1.Inspection_result_NG__c='缁翠慨'; + raesdObj1.Asset__c=asset.id; + reasll.add(raesdObj1); + + Rental_Apply_Equipment_Set_Detail__c raesdObj2 = new Rental_Apply_Equipment_Set_Detail__c(); + raesdObj2.Rental_Apply__c = raObj.Id; + raesdObj2.Fixture_Set_Detail__c = fsdObjA2.Id; + raesdObj2.Rental_Num__c = 1; + raesdObj2.Queue_Number__c = 3; + raesdObj2.Is_Body__c = true; + raesdObj2.Rental_Apply_Equipment_Set__c = raesObj.Id; + raesdObj2.IndexFromUniqueKey__c = 2; + raesdObj2.UniqueKey__c = '2:'+ raesObj.Id + ':' + fsdObjA2.Id + ':2'; + raesdObj2.FSD_OneToOneAccessory_Cnt__c = 2; + raesdObj2.FSD_Is_Optional__c = false; + raesdObj2.FSD_Is_OneToOne__c = true; + raesdObj2.ApplyPersonAppended__c = false; + raesdObj2.FSD_Fixture_Model_No__c = 'n02'; + raesdObj2.Fixture_Model_No_text__c = 'n02'; + raesdObj2.Salesdepartment_before__c = '1.鍗庡寳钀ヤ笟鏈儴'; + raesdObj2.Internal_asset_location_before__c = '鍖椾含 澶囧搧涓績'; + raesdObj2.Product_category_text__c = 'GI'; + raesdObj2.Equipment_Type_text__c = '瀛︿細灞曚細'; + raesdObj2.Cancel_Select__c = false; + raesdObj2.IsAdjust__c=true; + raesdObj2.DataMigration_Flag__c=false; + raesdObj2.Inspection_result__c='NG'; + raesdObj2.Inspection_result_NG__c='缁翠慨'; + raesdObj2.Asset__c=assetC1.id; + reasll.add(raesdObj2); + + Rental_Apply_Equipment_Set_Detail__c raesdObj3 = new Rental_Apply_Equipment_Set_Detail__c(); + raesdObj3.Rental_Apply__c = raObj2.Id; + raesdObj3.Fixture_Set_Detail__c = fsdObjA2.Id; + raesdObj3.Rental_Num__c = 1; + raesdObj3.Queue_Number__c = 4; + raesdObj3.Is_Body__c = true; + raesdObj3.Rental_Apply_Equipment_Set__c = raesObj.Id; + raesdObj3.IndexFromUniqueKey__c = 3; + raesdObj3.UniqueKey__c = '3:'+ raesObj.Id + ':' + fsdObjA2.Id + ':3'; + raesdObj3.FSD_OneToOneAccessory_Cnt__c = 2; + raesdObj3.FSD_Is_Optional__c = false; + raesdObj3.FSD_Is_OneToOne__c = true; + raesdObj3.ApplyPersonAppended__c = false; + raesdObj3.FSD_Fixture_Model_No__c = 'n02'; + raesdObj3.Fixture_Model_No_text__c = 'n02'; + raesdObj3.Salesdepartment_before__c = '1.鍗庡寳钀ヤ笟鏈儴'; + raesdObj3.Internal_asset_location_before__c = '鍖椾含 澶囧搧涓績'; + raesdObj3.Product_category_text__c = 'GI'; + raesdObj3.Equipment_Type_text__c = '瀛︿細灞曚細'; + raesdObj3.Cancel_Select__c = false; + raesdObj3.IsAdjust__c=true; + raesdObj3.DataMigration_Flag__c=false; + raesdObj3.Inspection_result__c='NG'; + raesdObj3.Inspection_result_NG__c='缁翠慨'; + raesdObj3.Asset__c=assetC1.id; + reasll.add(raesdObj3); + + Rental_Apply_Equipment_Set_Detail__c raesdObj4 = new Rental_Apply_Equipment_Set_Detail__c(); + raesdObj4.Rental_Apply__c = raObj.Id; + raesdObj4.Fixture_Set_Detail__c = fsdObjA2.Id; + raesdObj4.Rental_Num__c = 1; + raesdObj4.Queue_Number__c = 4; + raesdObj4.Is_Body__c = true; + raesdObj4.Rental_Apply_Equipment_Set__c = raesObj.Id; + raesdObj4.IndexFromUniqueKey__c = 4; + raesdObj4.UniqueKey__c = '4:'+ raesObj.Id + ':' + fsdObjA2.Id + ':4'; + raesdObj4.FSD_OneToOneAccessory_Cnt__c = 2; + raesdObj4.FSD_Is_Optional__c = false; + raesdObj4.FSD_Is_OneToOne__c = true; + raesdObj4.ApplyPersonAppended__c = false; + raesdObj4.FSD_Fixture_Model_No__c = 'n02'; + raesdObj4.Fixture_Model_No_text__c = 'n02'; + raesdObj4.Salesdepartment_before__c = '1.鍗庡寳钀ヤ笟鏈儴'; + raesdObj4.Internal_asset_location_before__c = '鍖椾含 澶囧搧涓績'; + raesdObj4.Product_category_text__c = 'GI'; + raesdObj4.Equipment_Type_text__c = '瀛︿細灞曚細'; + raesdObj4.Cancel_Select__c = false; + raesdObj4.IsAdjust__c=false; + raesdObj4.DataMigration_Flag__c=false; + raesdObj4.Inspection_result__c='SP'; + raesdObj4.Inspection_result_NG__c='缁翠慨'; + raesdObj4.Asset__c=assetC1.id; + reasll.add(raesdObj4); + + Rental_Apply_Equipment_Set_Detail__c raesdObj5 = new Rental_Apply_Equipment_Set_Detail__c(); + raesdObj5.Rental_Apply__c = raObj.Id; + raesdObj5.Fixture_Set_Detail__c = fsdObjA2.Id; + raesdObj5.Rental_Num__c = 1; + raesdObj5.Queue_Number__c = 4; + raesdObj5.Is_Body__c = true; + raesdObj5.Rental_Apply_Equipment_Set__c = raesObj.Id; + raesdObj5.IndexFromUniqueKey__c = 5; + raesdObj5.UniqueKey__c = '5:'+ raesObj.Id + ':' + fsdObjA2.Id + ':5'; + raesdObj5.FSD_OneToOneAccessory_Cnt__c = 2; + raesdObj5.FSD_Is_Optional__c = false; + raesdObj5.FSD_Is_OneToOne__c = true; + raesdObj5.ApplyPersonAppended__c = false; + raesdObj5.FSD_Fixture_Model_No__c = 'n02'; + raesdObj5.Fixture_Model_No_text__c = 'n02'; + raesdObj5.Salesdepartment_before__c = '1.鍗庡寳钀ヤ笟鏈儴'; + raesdObj5.Internal_asset_location_before__c = '鍖椾含 澶囧搧涓績'; + raesdObj5.Product_category_text__c = 'SP'; + raesdObj5.Equipment_Type_text__c = '瀛︿細灞曚細'; + raesdObj5.Cancel_Select__c = false; + raesdObj5.IsAdjust__c=false; + raesdObj5.DataMigration_Flag__c=false; + raesdObj5.Inspection_result__c='SP'; + raesdObj5.Inspection_result_NG__c='缁翠慨'; + raesdObj5.Asset__c=assetC1.id; + reasll.add(raesdObj5); + + insert reasll; + } + } + + + static List<User> setQueueData() { + StaticParameter.EscapeNFM001AgencyContractTrigger = true; + StaticParameter.EscapeNFM001Trigger = true; + Oly_TriggerHandler.bypass(ContactTriggerHandler.class.getName()); + Oly_TriggerHandler.bypass(AgencyHospitalHandler.class.getName()); + Rental_Apply__c raObj; + List<Fixture_Set__c> fsObjs; + List<Fixture_Set_Detail__c> fsdObjs; + Rental_Apply_Equipment_Set__c raesObj; + Test.startTest(); + List<User> us = getUser(); + //绯荤粺绠$悊鍛樺垱寤烘暟鎹� + system.runAs(us[0]) { + //鍒涘缓鏁版嵁 + // setupTestData(us[0], us[1]); + //澶囧搧閰嶅鏄庣粏check + fsdObjs = [select Id FROM Fixture_Set_Detail__c]; + System.assertEquals(fsdObjs.size(), 2); + //澶囧搧閰嶅check + fsObjs = [select Id FROM Fixture_Set__c]; + System.assertEquals(fsObjs.size(), 1); + //澶囧搧鍊熷嚭鐢宠check + List<Rental_Apply__c> raObjs = [SELECT Id, + Status__c, + RA_Status__c, + RA_Status_Text__c, + Name, + Phone_number__c, + Loaner_medical_Staff__c + FROM Rental_Apply__c]; + System.assertEquals(raObjs.size(), 1); + raObj = raObjs[0]; + //澶囧搧鍊熷嚭涓�瑙坈heck + List<Rental_Apply_Equipment_Set__c> raesObjs = [select Id, First_RAESD__c, Fixture_Set__c FROM Rental_Apply_Equipment_Set__c]; + System.assertEquals(raesObjs.size(), 1); + System.assertNotEquals(raesObjs[0].First_RAESD__c, null); + raesObj = raesObjs[0]; + + + //鐢宠鐘舵�乧heck + System.assertEquals(raObj.Status__c, '鑽夋涓�'); + System.assertEquals(raObj.RA_Status__c, '鑽夋涓�'); + System.assertEquals(raObj.RA_Status__c, raObj.RA_Status_Text__c); + //鐢宠鐘舵�佹洿鏂� + raObj.Status__c = '宸叉壒鍑�'; + raObj.Add_Approval_Status__c = '鑽夋涓�'; + Datetime d1 = Datetime.now().AddDays(-2); + Datetime d2 = Datetime.now().AddDays(-1); + //璁剧疆鐢宠瀹℃壒鏃堕棿 + raObj.Request_demo_time__c = d1; + raObj.Request_approval_time__c = d2; + update raObj; + raObjs = [SELECT Id, + Request_approval_time__c, + Request_demo_time__c, + Status__c, + RA_Status__c, + RA_Status_Text__c, + Name, + Product_category__c, + Demo_purpose1__c, + demo_purpose2__c, + direct_send__c, + Loaner_received_staff__c, + Loaner_received_staff_phone__c, + direct_shippment_address__c, + Hospital__c, + Strategic_dept__c, + Account__c, + Request_shipping_day__c, + Request_return_day__c, + Phone_number__c, + Loaner_medical_Staff__c + FROM Rental_Apply__c]; + System.assertEquals(raObjs.size(), 1); + raObj = raObjs[0]; + System.assertEquals(raObj.RA_Status__c, raObj.RA_Status_Text__c); + System.assertEquals(raObj.Request_demo_time__c, d1); + System.assertEquals(raObj.Request_approval_time__c, d2); + + List<Rental_Apply_Equipment_Set_Detail__c> raesds = [Select Id, Is_Body__c, Fixture_Model_No_F__c, Is_First_RAESD_F__c, Fixture_Set_Detail__c + From Rental_Apply_Equipment_Set_Detail__c + Order By Is_Body__c DESC]; + System.assertEquals(raesds.size(), 2); + List<Asset> ass = [Select Id, Fixture_Model_No_F__c + From Asset + order by Loaner_accsessary__c DESC]; + System.assertEquals(ass.size(), 2); + //鍒嗛厤 + for (Rental_Apply_Equipment_Set_Detail__c raesd : raesds) { + for (Asset asse : ass) { + if (raesd.Fixture_Model_No_F__c == asse.Fixture_Model_No_F__c) { + raesd.Asset__c = asse.Id; + raesd.Select_Time__c = Datetime.now(); + } + } + } + update raesds; + + ass = [Select Id, Last_Reserve_RAES_Detail__c, Fixture_Model_No_F__c From Asset order by Loaner_accsessary__c]; + System.assertEquals(ass.size(), 2); + System.assertEquals(ass[0].Last_Reserve_RAES_Detail__c, raesds[0].Id); + System.assertEquals(ass[1].Last_Reserve_RAES_Detail__c, null); + + Rental_Apply__c ra = raObj.clone(false); + Rental_Apply__c ra1 = raObj.clone(false); + ra.Status__c = '鑽夋涓�'; + ra1.Status__c = '鑽夋涓�'; + ra.Hope_Lonaer_date_Num__c = 1; + ra1.Hope_Lonaer_date_Num__c = 1; + insert new Rental_Apply__c[]{ra, ra1}; + + Map<Id, Rental_Apply__c> raMap = new Map<Id, Rental_Apply__c>([select Id, Status__c, RA_Status__c, RequestNoJoinStr2__c FROM Rental_Apply__c]); + + Rental_Apply_Equipment_Set__c raes = raesObj.clone(false); + raes.Rental_Apply__c = ra.Id; + raes.Rental_End_Date__c = Date.today().AddDays(4); + raes.Rental_Start_Date__c = Date.today(); + raes.Rental_Start_Date__c = Date.today(); + raes.IndexFromUniqueKey__c = 2; + // raes.UniqueKey__c = raMap.get(ra.Id).RequestNoJoinStr2__c + ':'+ raes.Fixture_Set__c + ':'+ 1; + + Rental_Apply_Equipment_Set__c raes1 = raesObj.clone(false); + raes1.Rental_Apply__c = ra1.Id; + raes1.Rental_End_Date__c = Date.today().AddDays(4); + raes1.Rental_Start_Date__c = Date.today(); + raes1.IndexFromUniqueKey__c = 3; + insert new Rental_Apply_Equipment_Set__c[]{raes, raes1}; + + Rental_Apply_Equipment_Set_Detail__c raesd1 = raesds[0].clone(false); + raesd1.Rental_Apply__c = ra.Id; + raesd1.Rental_Apply_Equipment_Set__c = raes.Id; + raesd1.Asset__c = null; + raesd1.Select_Time__c = null; + raesd1.IndexFromUniqueKey__c = 1; + // raesd1.Queue_Number__c = 1; + // raesd1.Queue_Day__c = Date.today(); + Rental_Apply_Equipment_Set_Detail__c raesd2 = raesds[1].clone(false); + raesd2.Rental_Apply__c = ra.Id; + raesd2.Rental_Apply_Equipment_Set__c = raes.Id; + raesd2.Asset__c = null; + raesd2.Select_Time__c = null; + raesd2.IndexFromUniqueKey__c = 2; + + Rental_Apply_Equipment_Set_Detail__c raesd11 = raesds[0].clone(false); + raesd11.Rental_Apply__c = ra1.Id; + raesd11.Rental_Apply_Equipment_Set__c = raes1.Id; + raesd11.Asset__c = null; + raesd11.Select_Time__c = null; + raesd11.IndexFromUniqueKey__c = 1; + // raesd1.Queue_Number__c = 2; + // raesd1.Queue_Day__c = Date.today(); + Rental_Apply_Equipment_Set_Detail__c raesd12 = raesds[1].clone(false); + raesd12.Rental_Apply__c = ra1.Id; + raesd12.Asset__c = null; + raesd12.Select_Time__c = null; + raesd12.Rental_Apply_Equipment_Set__c = raes1.Id; + raesd12.IndexFromUniqueKey__c = 2; + insert new Rental_Apply_Equipment_Set_Detail__c[]{raesd1, raesd2, raesd11, raesd12}; + + MainFixtureSelectController.queue(raes.Id, ass[0].Id); + MainFixtureSelectController.queue(raes1.Id, ass[0].Id); + + raes.First_RAESD__c = raesd1.Id; + raes1.First_RAESD__c = raesd11.Id; + update new Rental_Apply_Equipment_Set__c[]{raes, raes1}; + + + + List<Rental_Apply_Equipment_Set_Detail__c> raesds1 = [Select Id, Is_Body__c, Fixture_Model_No_F__c, Is_First_RAESD_F__c, Queue_Number__c + From Rental_Apply_Equipment_Set_Detail__c + Where Queue_Number__c > 0 + Order By Is_Body__c DESC , Queue_Number__c]; + System.assertEquals(raesds1.size(), 2); + + for (Integer i = 0; i < raesds1.size(); i ++) { + Rental_Apply_Equipment_Set_Detail__c raesd = raesds1[i]; + System.assertEquals(raesd.Queue_Number__c, i+1); + if (i == 0) { + System.assertEquals(raesd.Id, raesd1.Id); + } else { + System.assertEquals(raesd.Id, raesd11.Id); + } + } + } + return us; + } + + private static List<User> getUser() { + List<User> us = new List<User>(); + // MIXED_DML_OPERATION, DML operation on setup object is not permitted Error + System.runAs(new User(Id = Userinfo.getUserId())) { + String timenow = Datetime.now().format('yyyyMMddHHmmss'); + User user1 = new User(Test_staff__c = true, LastName = 'TestMao', FirstName = 'TestMaoF', + Alias = 'hp', CommunityNickname = 'TestMao', Email = 'Test@sunbridge.com', + Username = 'Test' + timenow + '@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', + TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', + ProfileId = System.Label.ProfileId_SystemAdmin, + Dept__c = '鍖荤枟鍗庡寳钀ヤ笟鏈儴', Province__c = '鍖椾含'); + + List<Profile> p = [Select Id From Profile Where Name = '2S1_閿�鍞尰闄㈡媴褰�']; + System.assertEquals(p.size(), 1); + User user2 = new User(Test_staff__c = true, LastName = 'TestMao1', FirstName = 'TestMaoF1', + Alias = 'hp', CommunityNickname = 'TestMao1', Email = 'Test1@sunbridge.com', + Username = 'Test1' + timenow + '@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', + TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', + ProfileId = p[0].Id, + Dept__c = '鍖荤枟鍗庡寳钀ヤ笟鏈儴', Province__c = '鍖椾含'); + us.add(user1); + us.add(user2); + insert us; + } + return us; + } + + static Rental_Apply__c raObj { get { + List<Rental_Apply__c> raObjs = [select Id FROM Rental_Apply__c]; + System.assertEquals(raObjs.size(), 1); + Rental_Apply__c raObj = raObjs[0]; + + return raObj; + }} + static String recid { get { return 'pt_recid='+raObj.Id; }} + + + @IsTest + static void testMethoud1(){ + List<Rental_Apply_Equipment_Set_Detail__c> l1 = [SELECT Id FROM Rental_Apply_Equipment_Set_Detail__c WHERE Is_Body__c=true]; + + Test.startTest(); + + Rental_Apply_Fault__c fa1 = new Rental_Apply_Fault__c(); + fa1.FaultDesc__c = '娴嬭瘯鏁呴殰鎻忚堪'; + fa1.Reply_message__c = '鎹熷潖鍘熷洜鍒嗘瀽鍙婇闃插缓璁�'; + fa1.Rental_Apply_Equipment_Set_Detail__c = l1[0].Id; + + Rental_Apply_Fault__c fa2 = new Rental_Apply_Fault__c(); + fa2.FaultDesc__c = '娴嬭瘯鏁呴殰鎻忚堪'; + fa2.Reply_message__c = '鎹熷潖鍘熷洜鍒嗘瀽鍙婇闃插缓璁�'; + fa2.status__c = '宸插彂閫�'; + fa2.Rental_Apply_Equipment_Set_Detail__c = l1[0].Id; + + insert fa1; + insert fa2; + + Test.stopTest(); + } + + @IsTest + static void testMethoud2(){ + List<Rental_Apply_Equipment_Set_Detail__c> l1 = [SELECT Id FROM Rental_Apply_Equipment_Set_Detail__c WHERE Is_Body__c=true]; + + Test.startTest(); + + Rental_Apply_Fault__c fa1 = new Rental_Apply_Fault__c(); + fa1.FaultDesc__c = '娴嬭瘯鏁呴殰鎻忚堪'; + fa1.Reply_message__c = '鎹熷潖鍘熷洜鍒嗘瀽鍙婇闃插缓璁�'; + fa1.Rental_Apply_Equipment_Set_Detail__c = l1[0].Id; + + insert fa1; + + try { + fa1.status__c = '宸插彂閫�'; + update fa1; + } catch(Exception ex){} + + Test.stopTest(); + } + + @IsTest + static void testMethoud3(){ + List<Rental_Apply_Equipment_Set_Detail__c> l1 = [SELECT Id FROM Rental_Apply_Equipment_Set_Detail__c WHERE Is_Body__c=true]; + + Test.startTest(); + + Rental_Apply_Fault__c fa1 = new Rental_Apply_Fault__c(); + fa1.FaultDesc__c = '娴嬭瘯鏁呴殰鎻忚堪'; + fa1.Reply_message__c = '鎹熷潖鍘熷洜鍒嗘瀽鍙婇闃插缓璁�'; + fa1.UseExplain__c = '鎹熷潖鍘熷洜鍒嗘瀽鍙婇闃插缓璁�'; + fa1.Rental_Apply_Equipment_Set_Detail__c = l1[0].Id; + + insert fa1; + + try { + fa1.status__c = '宸插弽棣�'; + update fa1; + } catch(Exception ex){} + + Test.stopTest(); + } + + @IsTest + static void testMethoud4(){ + List<Rental_Apply_Equipment_Set_Detail__c> l1 = [SELECT Id FROM Rental_Apply_Equipment_Set_Detail__c WHERE Is_Body__c=true]; + + Test.startTest(); + + Rental_Apply_Fault__c fa1 = new Rental_Apply_Fault__c(); + fa1.FaultDesc__c = '娴嬭瘯鏁呴殰鎻忚堪'; + fa1.Reply_message__c = '鎹熷潖鍘熷洜鍒嗘瀽鍙婇闃插缓璁�'; + fa1.Rental_Apply_Equipment_Set_Detail__c = l1[0].Id; + insert fa1; + + Attachment att = new Attachment( + Name = 'test', + ParentId = fa1.Id, + Body = EncodingUtil.base64Decode('test') + ); + insert att; + + Attachment att1 = new Attachment( + Name = 'test', + ParentId = fa1.Id, + Body = EncodingUtil.base64Decode('test') + ); + insert att1; + + Attachment att2 = new Attachment( + Name = 'test', + ParentId = fa1.Id, + Body = EncodingUtil.base64Decode('test') + ); + insert att2; + + delete att; + + Test.stopTest(); + } +} \ No newline at end of file diff --git a/force-app/main/default/classes/RentalApplyFaultHandlerTest.cls-meta.xml b/force-app/main/default/classes/RentalApplyFaultHandlerTest.cls-meta.xml new file mode 100644 index 0000000..4b0bc9f --- /dev/null +++ b/force-app/main/default/classes/RentalApplyFaultHandlerTest.cls-meta.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> + <apiVersion>55.0</apiVersion> + <status>Active</status> +</ApexClass> diff --git a/force-app/main/default/classes/RentalApplyFaultReportController.cls b/force-app/main/default/classes/RentalApplyFaultReportController.cls new file mode 100644 index 0000000..f7890ec --- /dev/null +++ b/force-app/main/default/classes/RentalApplyFaultReportController.cls @@ -0,0 +1,83 @@ +public with sharing class RentalApplyFaultReportController{ + + public String raId {get; set;} + public List<Rental_Apply_Equipment_Set_Detail__c> eList { get; set;} + public Rental_Apply__c raObj { get; set;} + public List<RetObject> retObject { get; set; } + + public RentalApplyFaultReportController(){ + raId = ApexPages.currentPage().getParameters().get('ra_id'); + + if (String.isBlank(this.raId)) { + throw new ControllerUtil.myException('鍙傛暟閿欒锛氳鎸囧畾Id銆�'); + } + } + + public Pagereference init() { + + retObject = new List<RetObject>(); + + raObj = [SELECT Id, Name, OCM_dept_category__c, Hospital__c, Hospital__r.Name, Person_In_Charge__c, Person_In_Charge__r.Name, WorkPlace__c, demo_purpose2__c FROM Rental_Apply__c WHERE Id =: raId]; + + //澶囧搧鍊熷嚭鐢宠涓�瑙堟槑缁� + eList = [ + SELECT Id, Name, Rental_Apply__c, Rental_Apply_Equipment_Set__r.Name, Rental_Apply__r.OCM_dept_category__c, Loaner_asset_no__c, AssetName__c, + Fixture_Model_No__c, SerialNumber_F__c, Inspection_result_after__c, Inspection_result_after_NG__c, SerialNumber__c + FROM Rental_Apply_Equipment_Set_Detail__c + WHERE Rental_Apply__c = :raId + AND Inspection_result_after__c = 'NG' + AND Is_Body__c = true + ORDER BY Id]; + + List<Id> eIds = new List<Id>(); + for(Rental_Apply_Equipment_Set_Detail__c e :eList){ + eIds.add(e.Id); + } + + + //鏌ュ綋鍓嶆槑缁嗕笅鏈夊灏戞晠闅滄姤鍛� + // 0 娌℃湁鎶ュ憡 + // Id 鏈� 鏈�鏂颁竴鏉′负鑽夋涓� + // 2 鏈夊緢澶氭潯 + List<Rental_Apply_Fault__c> faultReportsList = [SELECT Id ,status__c ,Rental_Apply_Equipment_Set_Detail__c from Rental_Apply_Fault__c where Rental_Apply_Equipment_Set_Detail__c in :eIds Order By CreatedDate DESC]; + Map<Id, List<Rental_Apply_Fault__c>> radetail_rentalApplyFault_Map = new Map<Id, List<Rental_Apply_Fault__c>>(); + + for(Rental_Apply_Fault__c raf : faultReportsList){ + if(!radetail_rentalApplyFault_Map.containsKey(raf.Rental_Apply_Equipment_Set_Detail__c)){ + List<Rental_Apply_Fault__c> tempList = new List<Rental_Apply_Fault__c>(); + tempList.add(raf); + radetail_rentalApplyFault_Map.put(raf.Rental_Apply_Equipment_Set_Detail__c, tempList); + } + } + + system.debug('radetail_rentalApplyFault_Map==='+radetail_rentalApplyFault_Map); + + for(Rental_Apply_Equipment_Set_Detail__c rae : eList){ + + RetObject temp = new RetObject(); + temp.Id = rae.Id; + temp.Name = rae.Name; + temp.rae = rae; + + if( radetail_rentalApplyFault_Map.containsKey(rae.Id) && radetail_rentalApplyFault_Map.get(rae.Id).size() > 0 ){ + + temp.flag = radetail_rentalApplyFault_Map.get(rae.Id)[0].Id ; + + }else{ + temp.flag = '涓嶅瓨鍦ㄦ晠闅滄姤鍛婂崟'; + } + + retObject.add(temp); + } + + return null; + } + + public class RetObject { + public String Id { get; set; } + public String Name { get; set; } + + public Rental_Apply_Equipment_Set_Detail__c rae { get; set; } + public String flag { get; set; } + } +} \ No newline at end of file diff --git a/force-app/main/default/classes/RentalApplyFaultReportController.cls-meta.xml b/force-app/main/default/classes/RentalApplyFaultReportController.cls-meta.xml new file mode 100644 index 0000000..4b0bc9f --- /dev/null +++ b/force-app/main/default/classes/RentalApplyFaultReportController.cls-meta.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> + <apiVersion>55.0</apiVersion> + <status>Active</status> +</ApexClass> diff --git a/force-app/main/default/classes/RentalApplyFaultReportControllerTest.cls b/force-app/main/default/classes/RentalApplyFaultReportControllerTest.cls new file mode 100644 index 0000000..0892d03 --- /dev/null +++ b/force-app/main/default/classes/RentalApplyFaultReportControllerTest.cls @@ -0,0 +1,590 @@ +@isTest +public class RentalApplyFaultReportControllerTest{ + + // 鍖婚櫌宸茶鏈虹‘璁� 鑺傜偣鐨勬暟鎹� + @testSetup + static void setupTestData() { + StaticParameter.EscapeNFM001AgencyContractTrigger = true; + StaticParameter.EscapeNFM001Trigger = true; + Oly_TriggerHandler.bypass(ContactTriggerHandler.class.getName()); + Oly_TriggerHandler.bypass(AgencyHospitalHandler.class.getName()); + + Rental_Apply__c raObj = new Rental_Apply__c(); + Fixture_Set_Detail__c fsdObjA1 = new Fixture_Set_Detail__c(); + Fixture_Set_Detail__c fsdObjA2 = new Fixture_Set_Detail__c(); + Fixture_Set_Detail__c fsdObjA3 = new Fixture_Set_Detail__c(); + Fixture_Set_Detail__c fsdObjA4 = new Fixture_Set_Detail__c(); + Rental_Apply_Equipment_Set__c raesObj = new Rental_Apply_Equipment_Set__c(); + Asset asset1 = new Asset(Asset_Owner__c = 'Olympus'); + Asset asset2 = new Asset(Asset_Owner__c = 'Olympus'); + Asset asset3 = new Asset(Asset_Owner__c = 'Olympus'); + Asset asset4 = new Asset(Asset_Owner__c = 'Olympus'); + //Fixture_OneToOne_Link__c foLink1 = new Fixture_OneToOne_Link__c(); + //Fixture_OneToOne_Link__c foLink2 = new Fixture_OneToOne_Link__c(); + // MIXED_DML_OPERATION, DML operation on setup object is not permitted Error + System.runAs(new User(Id = Userinfo.getUserId())) { + StaticParameter.EscapeNFM001AgencyContractTrigger = true; + StaticParameter.EscapeNFM001Trigger = true; + Oly_TriggerHandler.bypass(ContactTriggerHandler.class.getName()); + Oly_TriggerHandler.bypass(AgencyHospitalHandler.class.getName()); + // 銈枫偣銉嗐儬绠$悊鑰� + User user = new User(Test_staff__c = true); + user.LastName = '_銈点兂銉栥儶銉冦偢'; + user.FirstName = '銇�'; + user.Alias = '銇�'; + user.Email = 'olympusTest03@sunbridge.com'; + user.Username = 'olympusTest03@sunbridge.com'; + user.CommunityNickname = '銇�'; + user.IsActive = true; + user.EmailEncodingKey = 'ISO-2022-JP'; + user.TimeZoneSidKey = 'Asia/Tokyo'; + user.LocaleSidKey = 'ja_JP'; + user.LanguageLocaleKey = 'ja'; + user.ProfileId = System.Label.ProfileId_SystemAdmin; + user.Province__c = '鍖椾含'; + user.Dept__c = '鍖荤枟鍗庡寳钀ヤ笟鏈儴'; + user.Use_Start_Date__c = Date.today().addMonths(-6); + insert user; + + // 鐪� + Address_Level__c al = new Address_Level__c(); + al.Name = '鏉变含'; + al.Level1_Code__c = 'CN-99'; + al.Level1_Sys_No__c = '999999'; + insert al; + // 甯� + Address_Level2__c al2 = new Address_Level2__c(); + al2.Level1_Code__c = 'CN-99'; + al2.Level1_Sys_No__c = '999999'; + al2.Level1_Name__c = '鏉变含'; + al2.Name = '娓嬭胺鍖�'; + al2.Level2_Code__c = 'CN-9999'; + al2.Level2_Sys_No__c = '9999999'; + al2.Address_Level__c = al.id; + insert al2; + + // 鐥呴櫌銈掍綔銈� + Account hospital = new Account(); + hospital.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP'].id; + hospital.Name = 'test hospital'; + hospital.Is_Active__c = '鏈夊姽'; + hospital.Attribute_Type__c = '鍗敓閮�'; + hospital.Speciality_Type__c = '缁煎悎鍖婚櫌'; + hospital.Grade__c = '涓�绾�'; + hospital.OCM_Category__c = 'SLTV'; + hospital.Is_Medical__c = '鍖荤枟鏈烘瀯'; + hospital.State_Master__c = al.id; + hospital.City_Master__c = al2.id; + hospital.Town__c = '涓滀含'; + insert hospital; + + StaticParameter.EscapeAccountTrigger = true; + // 鎴︾暐绉戝銈掑緱銈� + Account[] strategicDep = [SELECT ID, Name FROM Account WHERE parentId = :hospital.Id AND recordType.DeveloperName = 'Department_Class_OTH']; + // 瑷虹檪绉戙倰浣溿倠 + Account dep = new Account(); + dep.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_OTH'].id; + dep.Name = 'test dep1'; + dep.AgentCode_Ext__c = '9999999'; + dep.ParentId = strategicDep[0].Id; + dep.Department_Class__c = strategicDep[0].Id; + dep.Hospital__c = hospital.Id; + insert dep; + + + Contact contact2 = new Contact(); + contact2.AccountId = dep.Id; + contact2.FirstName = '璨换鑰�'; + contact2.LastName = 'test1缁忛攢鍟�'; + insert contact2; + + // 浜у搧 + Product2 pro1 = new Product2(Name='name01',IsActive=true,Family='GI', + Fixture_Model_No__c='n01',Serial_Lot_No__c='S/N tracing', + Fixture_Model_No_T__c = 'n01', Asset_Model_No__c = 'Pro1', + ProductCode_Ext__c='pc01',Manual_Entry__c=false); + Product2 pro2 = new Product2(Name='name02',IsActive=true,Family='GI', + Fixture_Model_No__c='n02',Serial_Lot_No__c='Lot tracing', + Fixture_Model_No_T__c = 'n02', Asset_Model_No__c = 'Pro2', + ProductCode_Ext__c='pc02',Manual_Entry__c=false); + Product2 pro3 = new Product2(Name='name03',IsActive=true,Family='GI', + Fixture_Model_No__c='n03',Serial_Lot_No__c='Lot tracing', + Fixture_Model_No_T__c = 'n03', Asset_Model_No__c = 'Pro3', + ProductCode_Ext__c='pc03',Manual_Entry__c=false); + Product2 pro4 = new Product2(Name='name04',IsActive=true,Family='GI', + Fixture_Model_No__c='n04',Serial_Lot_No__c='Lot tracing', + Fixture_Model_No_T__c = 'n04', Asset_Model_No__c = 'Pro4', + ProductCode_Ext__c='pc04',Manual_Entry__c=false); + insert new Product2[] {pro1, pro2, pro3, pro4}; + + //澶囧搧鍊熷嚭鐢宠 + raObj.Name = 'testra'; + raObj.OwnerId = user.Id; + raObj.Product_category__c = 'GI'; + raObj.Demo_purpose1__c = '浜у搧璇曠敤'; + raObj.demo_purpose2__c = FixtureUtil.raDemo_purpose2MAP.get('shiyongwuxunjia'); + raObj.direct_send__c = '鍖荤枟鏈烘瀯'; + raObj.Loaner_received_staff__c = '鐜嬩簲'; + raObj.Loaner_received_staff_phone__c = '110'; + raObj.direct_shippment_address__c = '鍖椾含甯�'; + raObj.Hospital__c = hospital.Id; + raObj.Strategic_dept__c = strategicDep[0].Id; + raObj.Account__c = dep.Id; + raObj.Request_shipping_day__c = Date.toDay(); + raObj.Hope_Lonaer_date_Num__c = 1; + //raObj.Request_return_day__c = Date.toDay(); + raObj.Phone_number__c = '1234567890'; + raObj.Loaner_medical_Staff__c = contact2.Id; + insert raObj; + + // 淇濇湁璁惧 + asset1.RecordTypeId = System.Label.Asset_RecordType; + asset1.SerialNumber = 'asset1'; + asset1.Name = 'asset1'; + asset1.AccountId = dep.Id; + asset1.Department_Class__c = strategicDep[0].Id; + asset1.Hospital__c = hospital.Id; + asset1.Product2Id = pro1.Id; + asset1.Quantity = 1; + asset1.Status = '涓嶆槑'; + asset1.Manage_type__c = '涓綋绠$悊'; + asset1.Loaner_accsessary__c = false; + asset1.Out_of_wh__c = 0; + asset1.Salesdepartment__c = '1.鍗庡寳钀ヤ笟鏈儴'; + asset1.Internal_asset_location__c = '鍖椾含 澶囧搧涓績'; + asset1.Product_category__c = 'GI'; + asset1.Equipment_Type__c = '浜у搧璇曠敤'; + asset1.SalesProvince__c = '鍖椾含'; + asset1.CompanyOfEquipment__c = '鍖椾含'; + asset1.Internal_Asset_number__c = '0001'; + asset1.WH_location__c = '璐ф灦鍙�1'; + + asset2.RecordTypeId = System.Label.Asset_RecordType; + asset2.SerialNumber = 'asset2'; + asset2.Name = 'asset2'; + asset2.AccountId = dep.Id; + asset2.Department_Class__c = strategicDep[0].Id; + asset2.Hospital__c = hospital.Id; + asset2.Product2Id = pro2.Id; + asset2.Quantity = 1; + asset2.Status = '涓嶆槑'; + asset2.Manage_type__c = '涓綋绠$悊'; + asset2.Loaner_accsessary__c = true; + asset2.Out_of_wh__c = 0; + asset2.Salesdepartment__c = '1.鍗庡寳钀ヤ笟鏈儴'; + asset2.Internal_asset_location__c = '鍖椾含 澶囧搧涓績'; + asset2.Product_category__c = 'GI'; + asset2.Equipment_Type__c = '浜у搧璇曠敤'; + asset2.SalesProvince__c = '鍖椾含'; + asset2.CompanyOfEquipment__c = '鍖椾含'; + asset2.Internal_Asset_number__c = '0002'; + asset2.WH_location__c = '璐ф灦鍙�2'; + + asset3.RecordTypeId = System.Label.Asset_RecordType; + asset3.SerialNumber = 'asset3'; + asset3.Name = 'asset3'; + asset3.AccountId = dep.Id; + asset3.Department_Class__c = strategicDep[0].Id; + asset3.Hospital__c = hospital.Id; + asset3.Product2Id = pro3.Id; + asset3.Quantity = 5; + asset3.Status = '涓嶆槑'; + asset3.Manage_type__c = '鏁伴噺绠$悊'; + asset3.Loaner_accsessary__c = true; + asset3.Out_of_wh__c = 0; + asset3.Salesdepartment__c = '1.鍗庡寳钀ヤ笟鏈儴'; + asset3.Internal_asset_location__c = '鍖椾含 澶囧搧涓績'; + asset3.Product_category__c = 'GI'; + asset3.Equipment_Type__c = '浜у搧璇曠敤'; + asset3.SalesProvince__c = '鍖椾含'; + asset3.CompanyOfEquipment__c = '鍖椾含'; + asset3.Internal_Asset_number__c = '0003'; + asset3.WH_location__c = '璐ф灦鍙�3'; + + asset4.RecordTypeId = System.Label.Asset_RecordType; + asset4.SerialNumber = 'asset4'; + asset4.Name = 'asset4'; + asset4.AccountId = dep.Id; + asset4.Department_Class__c = strategicDep[0].Id; + asset4.Hospital__c = hospital.Id; + asset4.Product2Id = pro4.Id; + asset4.Quantity = 10; + asset4.Status = '涓嶆槑'; + asset4.Manage_type__c = '鏁伴噺绠$悊'; + asset4.Loaner_accsessary__c = true; + asset4.Out_of_wh__c = 0; + asset4.Salesdepartment__c = '1.鍗庡寳钀ヤ笟鏈儴'; + asset4.Internal_asset_location__c = '鍖椾含 澶囧搧涓績'; + asset4.Product_category__c = 'GI'; + asset4.Equipment_Type__c = '浜у搧璇曠敤'; + asset4.SalesProvince__c = '鍖椾含'; + asset4.CompanyOfEquipment__c = '鍖椾含'; + asset4.Internal_Asset_number__c = '0004'; + asset4.WH_location__c = '璐ф灦鍙�4'; + insert new Asset[] {asset1, asset2, asset3, asset4}; + + // 澶囧搧涓�瀵逛竴Link琛� + //foLink1.Main_Asset__c = asset1.Id; + //foLink1.Accessory_Asset__c = asset2.Id; + //foLink1.Quantity__c = 1; + + //foLink2.Main_Asset__c = asset1.Id; + //foLink2.Accessory_Asset__c = asset3.Id; + //foLink2.Quantity__c = 1; + //insert new Fixture_OneToOne_Link__c[] {foLink1, foLink2}; + + // 澶囧搧閰嶅 + Fixture_Set__c fsObj1 = new Fixture_Set__c(); + fsObj1.Name = 'set1'; + fsObj1.Fixture_Set_Body_Model_No__c = 'modelNo1'; + fsObj1.Loaner_name__c = 'name1'; + insert fsObj1; + + // 澶囧搧閰嶅鏄庣粏 + fsdObjA1.Name = '澶囧搧閰嶅鏄庣粏鍚�1'; + fsdObjA1.Name_CHN_Created__c = '涓枃鍚嶇О1'; + fsdObjA1.Product2__c = pro1.Id; + fsdObjA1.Fixture_Set__c = fsObj1.Id; + fsdObjA1.Is_Body__c = true; + fsdObjA1.Is_Optional__c = false; + fsdObjA1.UniqueKey__c = fsObj1.Id + ':' + pro1.Id; + fsdObjA1.SortInt__c = 1; + fsdObjA1.Quantity__c = 1; + + fsdObjA2.Name = '澶囧搧閰嶅鏄庣粏鍚�2'; + fsdObjA2.Name_CHN_Created__c = '涓枃鍚嶇О2'; + fsdObjA2.Product2__c = pro2.Id; + fsdObjA2.Fixture_Set__c = fsObj1.Id; + fsdObjA2.Is_Body__c = false; + fsdObjA2.Is_Optional__c = true; + fsdObjA2.UniqueKey__c = fsObj1.Id + ':' + pro2.Id; + fsdObjA2.SortInt__c = 2; + fsdObjA2.Quantity__c = 1; + fsdObjA2.Is_OneToOne__c = true; + + fsdObjA3.Name = '澶囧搧閰嶅鏄庣粏鍚�3'; + fsdObjA3.Name_CHN_Created__c = '涓枃鍚嶇О3'; + fsdObjA3.Product2__c = pro3.Id; + fsdObjA3.Fixture_Set__c = fsObj1.Id; + fsdObjA3.Is_Body__c = false; + fsdObjA3.Is_Optional__c = true; + fsdObjA3.UniqueKey__c = fsObj1.Id + ':' + pro3.Id; + fsdObjA3.SortInt__c = 3; + fsdObjA3.Quantity__c = 2; + fsdObjA3.Is_OneToOne__c = true; + + fsdObjA4.Name = '澶囧搧閰嶅鏄庣粏鍚�4'; + fsdObjA4.Name_CHN_Created__c = '涓枃鍚嶇О4'; + fsdObjA4.Product2__c = pro4.Id; + fsdObjA4.Fixture_Set__c = fsObj1.Id; + fsdObjA4.Is_Body__c = false; + fsdObjA4.Is_Optional__c = true; + fsdObjA4.UniqueKey__c = fsObj1.Id + ':' + pro4.Id; + fsdObjA4.SortInt__c = 4; + fsdObjA4.Quantity__c = 2; + fsdObjA4.Is_OneToOne__c = false; + fsdObjA4.Is_Optional__c = true; + insert new Fixture_Set_Detail__c[] {fsdObjA1, fsdObjA2, fsdObjA3, fsdObjA4}; + + // 鍊熷嚭澶囧搧閰嶅涓�瑙� + raesObj.Rental_Apply__c = raObj.Id; + raesObj.Fixture_Set__c = fsObj1.Id; + raesObj.Cancel_Select__c = false; + raesObj.Rental_Start_Date__c = Date.toDay(); + raesObj.Rental_End_Date__c = Date.toDay(); + raesObj.IndexFromUniqueKey__c = 1; + raesObj.UniqueKey__c = '1:'+ fsObj1.Id + ':1'; + insert raesObj; + } + Rental_Apply_Equipment_Set_Detail__c raesdObj1 = new Rental_Apply_Equipment_Set_Detail__c(); + Rental_Apply_Equipment_Set_Detail__c raesdObj2 = new Rental_Apply_Equipment_Set_Detail__c(); + Rental_Apply_Equipment_Set_Detail__c raesdObj3 = new Rental_Apply_Equipment_Set_Detail__c(); + Rental_Apply_Equipment_Set_Detail__c raesdObj4 = new Rental_Apply_Equipment_Set_Detail__c(); + Rental_Apply_Equipment_Set_Detail__c raesdObj5 = new Rental_Apply_Equipment_Set_Detail__c(); + Rental_Apply_Equipment_Set_Detail__c raesdObj6 = new Rental_Apply_Equipment_Set_Detail__c(); + System.runAs(new User(Id = Userinfo.getUserId())) { + // 鍊熷嚭澶囧搧閰嶅涓�瑙堟槑缁� + raesdObj1.Rental_Apply__c = raObj.Id; + raesdObj1.Fixture_Set_Detail__c = fsdObjA1.Id; + raesdObj1.Rental_Num__c = 1; + raesdObj1.Queue_Number__c = null; + raesdObj1.Is_Body__c = true; + raesdObj1.Rental_Apply_Equipment_Set__c = raesObj.Id; + raesdObj1.IndexFromUniqueKey__c = 1; + raesdObj1.UniqueKey__c = '1:'+ raesObj.Id + ':' + fsdObjA1.Id + ':1'; + raesdObj1.FSD_OneToOneAccessory_Cnt__c = 2; + raesdObj1.FSD_Is_Optional__c = false; + raesdObj1.FSD_Is_OneToOne__c = false; + raesdObj1.ApplyPersonAppended__c = false; + raesdObj1.FSD_Fixture_Model_No__c = 'n01'; + raesdObj1.Fixture_Model_No_text__c = 'n01'; + raesdObj1.Salesdepartment_before__c = '1.鍗庡寳钀ヤ笟鏈儴'; + raesdObj1.Internal_asset_location_before__c = '鍖椾含 澶囧搧涓績'; + raesdObj1.Product_category_text__c = 'GI'; + raesdObj1.Equipment_Type_text__c = '浜у搧璇曠敤'; + raesdObj1.Inspection_result_after__c = 'NG'; + raesdObj1.Inspection_result_after_NG__c = '搴熷純'; + + raesdObj2.Rental_Apply__c = raObj.Id; + raesdObj2.Fixture_Set_Detail__c = fsdObjA2.Id; + raesdObj2.Rental_Num__c = 1; + raesdObj2.Queue_Number__c = null; + raesdObj2.Is_Body__c = false; + raesdObj2.Rental_Apply_Equipment_Set__c = raesObj.Id; + raesdObj2.IndexFromUniqueKey__c = 2; + raesdObj2.UniqueKey__c = '1:'+ raesObj.Id + ':' + fsdObjA2.Id + ':2'; + raesdObj2.FSD_OneToOneAccessory_Cnt__c = 2; + raesdObj2.FSD_Is_Optional__c = false; + raesdObj2.FSD_Is_OneToOne__c = true; + raesdObj2.ApplyPersonAppended__c = false; + raesdObj2.FSD_Fixture_Model_No__c = 'n02'; + raesdObj2.Fixture_Model_No_text__c = 'n02'; + raesdObj2.Salesdepartment_before__c = '1.鍗庡寳钀ヤ笟鏈儴'; + raesdObj2.Internal_asset_location_before__c = '鍖椾含 澶囧搧涓績'; + raesdObj2.Product_category_text__c = 'GI'; + raesdObj2.Equipment_Type_text__c = '浜у搧璇曠敤'; + + raesdObj3.Rental_Apply__c = raObj.Id; + raesdObj3.Fixture_Set_Detail__c = fsdObjA3.Id; + raesdObj3.Rental_Num__c = 2; + raesdObj3.Queue_Number__c = null; + raesdObj3.Is_Body__c = false; + raesdObj3.Rental_Apply_Equipment_Set__c = raesObj.Id; + raesdObj3.IndexFromUniqueKey__c = 3; + raesdObj3.UniqueKey__c = '1:'+ raesObj.Id + ':' + fsdObjA3.Id + ':3'; + raesdObj3.FSD_OneToOneAccessory_Cnt__c = 2; + raesdObj3.FSD_Is_Optional__c = false; + raesdObj3.FSD_Is_OneToOne__c = true; + raesdObj3.ApplyPersonAppended__c = false; + raesdObj3.FSD_Fixture_Model_No__c = 'n03'; + raesdObj3.Fixture_Model_No_text__c = 'n03'; + raesdObj3.Salesdepartment_before__c = '1.鍗庡寳钀ヤ笟鏈儴'; + raesdObj3.Internal_asset_location_before__c = '鍖椾含 澶囧搧涓績'; + raesdObj3.Product_category_text__c = 'GI'; + raesdObj3.Equipment_Type_text__c = '浜у搧璇曠敤'; + + raesdObj4.Rental_Apply__c = raObj.Id; + raesdObj4.Fixture_Set_Detail__c = fsdObjA3.Id; + raesdObj4.Rental_Num__c = 2; + raesdObj4.Queue_Number__c = null; + raesdObj4.Is_Body__c = false; + raesdObj4.Rental_Apply_Equipment_Set__c = raesObj.Id; + raesdObj4.IndexFromUniqueKey__c = 4; + raesdObj4.UniqueKey__c = '1:'+ raesObj.Id + ':' + fsdObjA3.Id + ':4'; + raesdObj4.FSD_OneToOneAccessory_Cnt__c = 2; + raesdObj4.FSD_Is_Optional__c = false; + raesdObj4.FSD_Is_OneToOne__c = true; + raesdObj4.ApplyPersonAppended__c = false; + raesdObj4.FSD_Fixture_Model_No__c = 'n03'; + raesdObj4.Fixture_Model_No_text__c = 'n03'; + raesdObj4.Salesdepartment_before__c = '1.鍗庡寳钀ヤ笟鏈儴'; + raesdObj4.Internal_asset_location_before__c = '鍖椾含 澶囧搧涓績'; + raesdObj4.Product_category_text__c = 'GI'; + raesdObj4.Equipment_Type_text__c = '浜у搧璇曠敤'; + + raesdObj5.Rental_Apply__c = raObj.Id; + raesdObj5.Fixture_Set_Detail__c = fsdObjA4.Id; + raesdObj5.Rental_Num__c = 2; + raesdObj5.Queue_Number__c = null; + raesdObj5.Is_Body__c = false; + raesdObj5.Rental_Apply_Equipment_Set__c = raesObj.Id; + raesdObj5.IndexFromUniqueKey__c = 5; + raesdObj5.UniqueKey__c = '1:'+ raesObj.Id + ':' + fsdObjA4.Id + ':5'; + raesdObj5.FSD_OneToOneAccessory_Cnt__c = 2; + raesdObj5.FSD_Is_Optional__c = true; + raesdObj5.FSD_Is_OneToOne__c = false; + raesdObj5.ApplyPersonAppended__c = false; + raesdObj5.FSD_Fixture_Model_No__c = 'n04'; + raesdObj5.Fixture_Model_No_text__c = 'n04'; + raesdObj5.Salesdepartment_before__c = '1.鍗庡寳钀ヤ笟鏈儴'; + raesdObj5.Internal_asset_location_before__c = '鍖椾含 澶囧搧涓績'; + raesdObj5.Product_category_text__c = 'GI'; + raesdObj5.Equipment_Type_text__c = '浜у搧璇曠敤'; + + raesdObj6.Rental_Apply__c = raObj.Id; + raesdObj6.Fixture_Set_Detail__c = fsdObjA4.Id; + raesdObj6.Rental_Num__c = 2; + raesdObj6.Queue_Number__c = null; + raesdObj6.Is_Body__c = false; + raesdObj6.Rental_Apply_Equipment_Set__c = raesObj.Id; + raesdObj6.IndexFromUniqueKey__c = 6; + raesdObj6.UniqueKey__c = '1:'+ raesObj.Id + ':' + fsdObjA4.Id + ':6'; + raesdObj6.FSD_OneToOneAccessory_Cnt__c = 2; + raesdObj6.FSD_Is_Optional__c = true; + raesdObj6.FSD_Is_OneToOne__c = false; + raesdObj6.ApplyPersonAppended__c = false; + raesdObj6.FSD_Fixture_Model_No__c = 'n04'; + raesdObj6.Fixture_Model_No_text__c = 'n04'; + raesdObj6.Salesdepartment_before__c = '1.鍗庡寳钀ヤ笟鏈儴'; + raesdObj6.Internal_asset_location_before__c = '鍖椾含 澶囧搧涓績'; + raesdObj6.Product_category_text__c = 'GI'; + raesdObj6.Equipment_Type_text__c = '浜у搧璇曠敤'; + insert new Rental_Apply_Equipment_Set_Detail__c[] {raesdObj1,raesdObj2,raesdObj3,raesdObj4,raesdObj5,raesdObj6}; + + } + System.runAs(new User(Id = Userinfo.getUserId())) { + // 鐢宠鍗� + raObj.Status__c = FixtureUtil.raStatusMap.get(FixtureUtil.RaStatus.Yi_Pi_Zhun.ordinal()); + raObj.Status_Text__c = FixtureUtil.raStatusMap.get(FixtureUtil.RaStatus.Yi_Pi_Zhun.ordinal()); + raObj.NotWatch_RA_Status__c = true; + raObj.HP_received_sign_day__c = Date.toDay(); + raObj.HP_received_sign_rich__c = 'OK'; + raObj.AssetManageConfirm__c = true; + update raObj; + + // 鐢宠鑰呮敹璐ф搷浣� + raesObj.Received_Confirm__c = 'OK'; + raesObj.Loaner_received_time__c = Datetime.now(); + update raesObj; + + FixtureDeliverySlip__c fdsObj = new FixtureDeliverySlip__c(); + fdsObj.Name = '00001'; + fdsObj.DeliveryCompany__c = '鍒╄'; + fdsObj.Distributor_method__c = '闄嗚繍'; + fdsObj.DeliveryType__c = '鍙戣揣'; + fdsObj.Shippment_loaner_time__c = System.now(); + insert fdsObj; + + // 鍑哄簱鍓嶇偣妫�鎿嶄綔 + raesdObj1.Select_Time__c = Date.toDay(); + raesdObj1.Asset__c = asset1.Id; + raesdObj1.Loaner_accsessary__c = false; + raesdObj1.FSD_Name_CHN__c = 'name01'; + raesdObj1.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Fen_Pei.ordinal()); + raesdObj2.Select_Time__c = Date.toDay(); + raesdObj2.Asset__c = asset2.Id; + raesdObj2.Loaner_accsessary__c = true; + //raesdObj2.Fixture_OneToOne_Link_Id__c = foLink1.Id; + raesdObj2.FSD_Name_CHN__c = 'name02'; + raesdObj2.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Fen_Pei.ordinal()); + raesdObj3.Select_Time__c = Date.toDay(); + raesdObj3.Asset__c = asset3.Id; + raesdObj3.Loaner_accsessary__c = true; + //raesdObj3.Fixture_OneToOne_Link_Id__c = foLink2.Id; + raesdObj3.FSD_Name_CHN__c = 'name03'; + raesdObj3.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Fen_Pei.ordinal()); + raesdObj4.Select_Time__c = Date.toDay(); + raesdObj4.Asset__c = asset3.Id; + raesdObj4.Loaner_accsessary__c = true; + raesdObj4.FSD_Name_CHN__c = 'name03'; + raesdObj4.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Fen_Pei.ordinal()); + raesdObj5.Select_Time__c = Date.toDay(); + raesdObj5.Asset__c = asset4.Id; + raesdObj5.Loaner_accsessary__c = true; + raesdObj5.FSD_Name_CHN__c = 'name04'; + raesdObj5.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Fen_Pei.ordinal()); + raesdObj6.Select_Time__c = Date.toDay(); + raesdObj6.Asset__c = asset4.Id; + raesdObj6.Loaner_accsessary__c = true; + raesdObj6.FSD_Name_CHN__c = 'name04'; + raesdObj6.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Fen_Pei.ordinal()); + raesdObj1.Shipment_request_time2__c = Date.toDay(); + raesdObj1.Shipment_request__c = true; + raesdObj1.StockDown__c = true; + raesdObj1.StockDown_time__c = Date.toDay(); + raesdObj1.StockDown_staff__c = Userinfo.getUserId(); + raesdObj1.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Xia_Jia.ordinal()); + raesdObj2.Shipment_request_time2__c = Date.toDay(); + raesdObj2.Shipment_request__c = true; + raesdObj2.StockDown__c = true; + raesdObj2.StockDown_time__c = Date.toDay(); + raesdObj2.StockDown_staff__c = Userinfo.getUserId(); + raesdObj2.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Xia_Jia.ordinal()); + raesdObj3.Shipment_request_time2__c = Date.toDay(); + raesdObj3.Shipment_request__c = true; + raesdObj3.StockDown__c = true; + raesdObj3.StockDown_time__c = Date.toDay(); + raesdObj3.StockDown_staff__c = Userinfo.getUserId(); + raesdObj3.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Xia_Jia.ordinal()); + raesdObj4.Shipment_request_time2__c = Date.toDay(); + raesdObj4.Shipment_request__c = true; + raesdObj4.StockDown__c = true; + raesdObj4.StockDown_time__c = Date.toDay(); + raesdObj4.StockDown_staff__c = Userinfo.getUserId(); + raesdObj4.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Xia_Jia.ordinal()); + raesdObj5.Shipment_request_time2__c = Date.toDay(); + raesdObj5.Shipment_request__c = true; + raesdObj5.StockDown__c = true; + raesdObj5.StockDown_time__c = Date.toDay(); + raesdObj5.StockDown_staff__c = Userinfo.getUserId(); + raesdObj5.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Xia_Jia.ordinal()); + raesdObj6.Shipment_request_time2__c = Date.toDay(); + raesdObj6.Shipment_request__c = true; + raesdObj6.StockDown__c = true; + raesdObj6.StockDown_time__c = Date.toDay(); + raesdObj6.StockDown_staff__c = Userinfo.getUserId(); + raesdObj6.Shipment_Status_Text__c = FixtureUtil.raesdStatusMap.get(FixtureUtil.HistoryStatus.Yi_Xia_Jia.ordinal()); + + raesdObj1.Inspection_result__c = 'OK'; + raesdObj1.Pre_inspection_time__c = System.now(); + raesdObj1.Inspection_staff__c = Userinfo.getUserId(); + raesdObj2.Inspection_result__c = 'OK'; + raesdObj2.Pre_inspection_time__c = System.now(); + raesdObj2.Inspection_staff__c = Userinfo.getUserId(); + raesdObj3.Inspection_result__c = 'OK'; + raesdObj3.Pre_inspection_time__c = System.now(); + raesdObj3.Inspection_staff__c = Userinfo.getUserId(); + raesdObj4.Inspection_result__c = 'OK'; + raesdObj4.Pre_inspection_time__c = System.now(); + raesdObj4.Inspection_staff__c = Userinfo.getUserId(); + raesdObj5.Inspection_result__c = 'OK'; + raesdObj5.Pre_inspection_time__c = System.now(); + raesdObj5.Inspection_staff__c = Userinfo.getUserId(); + raesdObj6.Inspection_result__c = 'OK'; + raesdObj6.Pre_inspection_time__c = System.now(); + raesdObj6.Inspection_staff__c = Userinfo.getUserId(); + // 鍙戣揣鎿嶄綔 + raesdObj1.DeliverySlip__c = fdsObj.Id; + raesdObj2.DeliverySlip__c = fdsObj.Id; + raesdObj3.DeliverySlip__c = fdsObj.Id; + raesdObj4.DeliverySlip__c = fdsObj.Id; + raesdObj5.DeliverySlip__c = fdsObj.Id; + raesdObj6.DeliverySlip__c = fdsObj.Id; + update new Rental_Apply_Equipment_Set_Detail__c[] {raesdObj1,raesdObj2,raesdObj3,raesdObj4,raesdObj5,raesdObj6}; + + + // 鍒嗛厤鍚庝慨鏀筧sset閲岄潰鐨勬暟鎹� + asset1.Last_Reserve_RAES_Detail__c = raesdObj1.Id; + asset1.Out_of_wh__c = 1; + asset1.Lei_Ji_Jie_Chu_Shu_Jia__c = 1; + asset2.Last_Reserve_RAES_Detail__c = raesdObj2.Id; + asset2.Out_of_wh__c = 1; + asset2.Lei_Ji_Jie_Chu_Shu_Jia__c = 1; + asset3.Last_Reserve_RAES_Detail__c = null; + asset3.Out_of_wh__c = 2; + asset3.Lei_Ji_Jie_Chu_Shu_Jia__c = 2; + asset4.Last_Reserve_RAES_Detail__c = null; + asset4.Out_of_wh__c = 2; + asset4.Lei_Ji_Jie_Chu_Shu_Jia__c = 2; + update new Asset[] {asset1,asset2,asset3,asset4}; + + } + // Rental_Apply_Fault__c raf1 = new Rental_Apply_Fault__c(); + // raf1.Rental_Apply_Equipment_Set_Detail__c = raesdObj1.Id; + // raf1.status__c = '鑽夋涓�'; + // insert raf1; + } + + static testMethod void testMethod1() { + System.runAs(new User(Id = Userinfo.getUserId())) { + CreateRelationListPagingCmpCtrl cmp; + PageReference ref; + List<Rental_Apply__c> raObjs; + Rental_Apply__c raObj; + List<Rental_Apply_Equipment_Set__c> raesObjs; + Rental_Apply_Equipment_Set__c raesObj; + List<Rental_Apply_Equipment_Set_Detail__c> raesdObjs; + + raObjs = [select Id, Name, RA_Status__c FROM Rental_Apply__c]; + + Test.startTest(); + // 鍥炲瘎鎿嶄綔 + ref = new PageReference('/apex/RentalApplyFaultReportController?ra_id=' + raObjs[0].Id); + Test.setCurrentPage(ref); + RentalApplyFaultReportController rafController = new RentalApplyFaultReportController(); + rafController.init(); + + Test.stopTest(); + } + } +} \ No newline at end of file diff --git a/force-app/main/default/classes/RentalApplyFaultReportControllerTest.cls-meta.xml b/force-app/main/default/classes/RentalApplyFaultReportControllerTest.cls-meta.xml new file mode 100644 index 0000000..4b0bc9f --- /dev/null +++ b/force-app/main/default/classes/RentalApplyFaultReportControllerTest.cls-meta.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> + <apiVersion>55.0</apiVersion> + <status>Active</status> +</ApexClass> -- Gitblit v1.9.1