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