From d8dc84a3d56df839895f1c417a4d9cbee763d262 Mon Sep 17 00:00:00 2001
From: 高章伟 <gaozhangwei@prec-tech.com>
Date: 星期五, 03 三月 2023 14:50:59 +0800
Subject: [PATCH] gzw 测试环境代码更新

---
 force-app/main/default/classes/RepairTriggerTester.cls |  379 ++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 323 insertions(+), 56 deletions(-)

diff --git a/force-app/main/default/classes/RepairTriggerTester.cls b/force-app/main/default/classes/RepairTriggerTester.cls
index 426e847..79123f7 100644
--- a/force-app/main/default/classes/RepairTriggerTester.cls
+++ b/force-app/main/default/classes/RepairTriggerTester.cls
@@ -7,7 +7,7 @@
         StaticParameter.EscapeNFM001Trigger = true;
         // 鐥呴櫌銈掍綔銈�
         Account hospital = new Account();
-        hospital.recordtypeId = [Select Id FROM RecordType WHERE DeveloperName = 'HP'].id;
+        hospital.recordtypeId = [Select Id FROM RecordType WHERE DeveloperName = :'HP'].id;
         hospital.Name = hospitalName;
         insert hospital;
         StaticParameter.EscapeAccountTrigger = true;
@@ -23,7 +23,7 @@
     static Account createDep( Account hospital, Account strategicDep) {
         // 瑷虹檪绉戙倰浣溿倠
         Account dep = new Account();
-        dep.recordtypeId = [Select Id FROM RecordType WHERE DeveloperName = 'Department_GI'].id;
+        dep.recordtypeId = [Select Id FROM RecordType WHERE DeveloperName = :'Department_GI'].id;
         dep.Name = 'test dep';
         dep.ParentId = strategicDep.Id;
         dep.Department_Class__c = strategicDep.Id;
@@ -111,7 +111,9 @@
         contract.Contract_Start_Date__c = Date.today().addDays( -10);   // 10鏃ュ墠
         contract.Contract_End_Date__c = Date.today().addDays( 5);       // 5鏃ュ緦
         contract.SalesOfficeCode_selection__c = '鍖椾含RC';
-        contract.RecordTypeId='01210000000gTYv';
+        ID RecordTypeId = Schema.SObjectType.Maintenance_Contract__c.getRecordTypeInfosByName().get('澶氬勾淇濆悎鍚�').getRecordTypeId();
+        // contract.RecordTypeId='01210000000gTYv';
+        contract.RecordTypeId=RecordTypeId;
 
         insert contract;
         return contract;
@@ -146,14 +148,84 @@
     }
     //闄愭鍚堝悓浜у搧淇℃伅缁存姢鐩稿叧娴嬭瘯   FXK  2021/3/8  Start
      static testMethod void test03(){
+        Oly_TriggerHandler.bypass('AccountTrigger');
+        Oly_TriggerHandler.bypass('RepairHandler');
+        Oly_TriggerHandler.bypass('RepairBeforeInsertHandler');
+        Oly_TriggerHandler.bypass('UpdateContractAimAmountHandler');
+        Oly_TriggerHandler.bypass('PaymentMaintenanceContractTriggerHandler');
+        Oly_TriggerHandler.bypass('SetContractEstimatePriceHandler');
+        Oly_TriggerHandler.bypass('SyncRepairFromMCAETrigger');
+        Oly_TriggerHandler.bypass('ContactTriggerHandler');
+        StaticParameter.EscapeMaintenanceContractAfterUpdateTrigger = true;
+        StaticParameter.EscapeNFM001Trigger = true;
+        StaticParameter.EscapeNFM001AgencyContractTrigger = true;
+        StaticParameter.EscapeNFM001AgencyContractTrigger2 = true;
+        StaticParameter.EscapeSyncProduct2Trigger = true;
+        StaticParameter.EscapeContactInsUpdUser = true;
+        StaticParameter.EscapeContactToUser = true;
+        StaticParameter.EscapeNFM010UpsertStatuAchievementsTrigger = true;
+        StaticParameter.EscapeAccountTrigger = true;
+        StaticParameter.EscapeNFM106Trigger = true;
         //瀹㈡埛
-        Account hospital = createHospital( 'test hospital');
-        Account[] strategicDep = selectStrategicDep( hospital);
-        Account dep = createDep( hospital, strategicDep[0]);
+        // Account hospital = createHospital( 'test hospital');
+        // Account[] strategicDep = selectStrategicDep( hospital);
+        // Account dep = createDep( hospital, strategicDep[0]);
         // 淇濇湁璁惧
-        Asset asset = createAsset( hospital, strategicDep[0], dep);
+        // Asset asset = createAsset( hospital, strategicDep[0], strategicDep[0]);
+        // 鐥呴櫌銈掍綔銈�
+        // 鐪�
+        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;
+
+        // 鎴︾暐绉戝銈掑緱銈�
+        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 dep';
+        dep.AgentCode_Ext__c = '9999998';
+        dep.ParentId = strategicDep[0].Id;
+        dep.Department_Class__c = strategicDep[0].Id;
+        dep.Hospital__c = hospital.Id;
+        insert dep;
+        Asset asset = new Asset();
+        asset.Name = '銉嗐偣銉堟鍣�';
+        asset.AccountId = dep.Id;
+        asset.Department_Class__c = strategicDep[0].Id;
+        asset.Hospital__c = hospital.Id;
+        asset.SerialNumber = 'testserial';
+        insert asset;
+        
         // 鍒涘缓缁翠慨鍚堝悓
         Maintenance_Contract__c contract = new Maintenance_Contract__c();
+        // ID RecordTypeId1 = Schema.SObjectType.Maintenance_Contract__c.getRecordTypeInfosByName().get('鏈嶅姟鍚堝悓').getRecordTypeId();
+        // ID RecordTypeId2 = Schema.SObjectType.Maintenance_Contract_Estimate__c.getRecordTypeInfosByName().get('鏈嶅姟鍚堝悓鎶ヤ环').getRecordTypeId();
         contract.Name = 'tect contract';
         contract.status__c = '濂戠磩';
         contract.URF_Contract__c=true;
@@ -166,6 +238,7 @@
         contract.Contract_End_Date__c = Date.today().addDays( 5);       // 5鏃ュ緦
         contract.SalesOfficeCode_selection__c = '鍖椾含RC';
         contract.RecordTypeId='01210000000gTYq';
+        // contract.RecordTypeId=RecordTypeId1;
         contract.URF_Contract__c = true;
         contract.agree_Upper_limit__c = true;
         insert contract;
@@ -173,6 +246,7 @@
         Maintenance_Contract_Estimate__c Estimate = new Maintenance_Contract_Estimate__c();
         Estimate.Maintenance_Contract__c = contract.Id;
         Estimate.recordtypeId = '01210000000gTZA';
+        // Estimate.recordtypeId = RecordTypeId2;
         Estimate.Name = '鎶ヤ环1';
         insert Estimate;
         //鍒涘缓缁翠慨鍚堝悓鎶ヤ环/淇濇湁璁惧
@@ -192,9 +266,10 @@
         middleTable.Maintenance_Contract_Asset_Estimate__c = Asset_Estimate.Id;
         insert middleTable;
         // 淇悊銈掍綔鎴愩仚銈�01
+        Test.startTest();
         Repair__c repair01 = new Repair__c();
-        repair01.Account__c = dep.Id;
-        repair01.Department_Class__c = strategicDep[0].Id;
+        repair01.Account__c = strategicDep[0].Id;
+        repair01.Department_Class__c = dep.Id;
         repair01.Hospital__c = hospital.Id;
         repair01.SERVICE_CONTRACT_JUDEGE_DAY__C = Date.today(); // 缁翠慨鍚堝悓鍒ゆ柇鏃ュ湪鍚堝悓寮�濮嬫棩涓庡悎鍚岀粨鏉熸棩涔嬮棿
         repair01.Failure_Occurrence_Date__c  =Date.today();
@@ -202,14 +277,14 @@
         repair01.Status__c = '鑽夋涓�';
         repair01.SalesOfficeCode_selection__c = '瑗垮畨RC';
         insert repair01;
-
+        
         Repair__c checkRepair = null;
         checkRepair = [SELECT Id, Name , Maintenance_Contract__c,MaintenanceContractType__c FROM Repair__c WHERE ID = :repair01.id];
         System.assertEquals( contract.Id, checkRepair.Maintenance_Contract__c);
 
         // 淇悊銈掍綔鎴愩仚銈�01
         Repair__c repair02 = new Repair__c();
-        repair02.Account__c = dep.Id;
+        repair02.Account__c = strategicDep[0].Id;
         repair02.Department_Class__c = strategicDep[0].Id;
         repair02.Hospital__c = hospital.Id;
         repair02.SERVICE_CONTRACT_JUDEGE_DAY__C = Date.today(); // 缁翠慨鍚堝悓鍒ゆ柇鏃ュ湪鍚堝悓寮�濮嬫棩涓庡悎鍚岀粨鏉熸棩涔嬮棿
@@ -217,30 +292,25 @@
         repair02.Delivered_Product__c = asset.Id;
         insert repair02;
         delete repair02;
-
         checkRepair.NewProductGuarante_Txt__c = '2: 鏈嶅姟澶氬勾淇濅慨';
         update checkRepair;
-
         checkRepair.NewProductGuarante_Txt__c = '8: 甯傚満澶氬勾淇濅慨';
         checkRepair.On_site_repair__c = 'RC淇悊';
         checkRepair.Maintenance_Contract__c = contract.Id;
         checkRepair.SalesOfficeCode_selection__c = '鏉窞RC';
         update checkRepair;
-        
         contract.SalesOfficeCode_selection__c = '涓婃捣RC';
         update contract;
         checkRepair.SalesOfficeCode_selection__c = '鏉窞RC';
         update checkRepair;
-
         checkRepair.SalesOfficeCode_selection__c = '鏉窞RC';
         checkRepair.NewProductGuarante_Txt__c = '2: 鏈嶅姟澶氬勾淇濅慨';
         update checkRepair;
-
+        Test.stopTest();
         asset.Order_No__c = '涓婃捣鍒嗗叕鍙�';
         update asset;
         checkRepair.SalesOfficeCode_selection__c = '鏉窞';
         update checkRepair;
-
         asset.Order_No__c = '骞垮窞鍒嗗叕鍙�';
         update asset;
         checkRepair.On_site_repair__c = '鍔炰簨澶勪慨鐞�';
@@ -250,6 +320,7 @@
 
         contract.SalesOfficeCode_selection__c = '骞垮窞RC';
         update contract;
+        
      }
     //闄愭鍚堝悓浜у搧淇℃伅缁存姢鐩稿叧娴嬭瘯   FXK  2021/3/8  End
 
@@ -1294,50 +1365,50 @@
     }
 
     //闄愭鍚堝悓浜у搧淇℃伅缁存姢鐩稿叧娴嬭瘯   FXK  2021/3/8  Start
-     static testMethod void test04(){
-        // 鐥呴櫌銆佹垿鐣ョ瀹ゃ�佽ê鐧傜銇儏鍫便倰浣滄垚銇椼伨銇�
-        Account hospital = createHospital( 'test hospital');
-        Account[] strategicDep = selectStrategicDep( hospital);
-        Account dep = createDep( hospital, strategicDep[0]);
+     // static testMethod void test04(){
+     //    // 鐥呴櫌銆佹垿鐣ョ瀹ゃ�佽ê鐧傜銇儏鍫便倰浣滄垚銇椼伨銇�
+     //    Account hospital = createHospital( 'test hospital');
+     //    Account[] strategicDep = selectStrategicDep( hospital);
+     //    Account dep = createDep( hospital, strategicDep[0]);
 
-        // 绱嶅叆姗熷櫒銈掍綔銈�
-        Asset asset = createAsset( hospital, strategicDep[0], dep);
-        // 缁翠慨鍚堝悓銈掍綔鎴愩仚銈�
-        Maintenance_Contract__c contract = createMaintenanceContract( hospital, strategicDep[0], dep);
-        // 涓枔銉嗐兗銉栥儷銈掕ō銇戙倠
-        Maintenance_Contract_Asset__c middleTable = createMiddleTable( asset, contract);
+     //    // 绱嶅叆姗熷櫒銈掍綔銈�
+     //    Asset asset = createAsset( hospital, strategicDep[0], dep);
+     //    // 缁翠慨鍚堝悓銈掍綔鎴愩仚銈�
+     //    Maintenance_Contract__c contract = createMaintenanceContract( hospital, strategicDep[0], dep);
+     //    // 涓枔銉嗐兗銉栥儷銈掕ō銇戙倠
+     //    Maintenance_Contract_Asset__c middleTable = createMiddleTable( asset, contract);
 
 
-        // 淇悊銈掍綔鎴愩仚銈�01
-        Repair__c repair01 = new Repair__c();
-        repair01.Account__c = dep.Id;
-        repair01.Department_Class__c = strategicDep[0].Id;
-        repair01.Hospital__c = hospital.Id;
-        repair01.Delivered_Product__c = asset.Id;
-        repair01.SERVICE_CONTRACT_JUDEGE_DAY__C = Date.today().addDays( -1000); // 缁翠慨鍚堝悓鍒ゆ柇鏃ャ亴銈点兗銉撱偣濂戠磩銇仩銇勩伓鍓�
-        repair01.Failure_Occurrence_Date__c  =Date.today();
-        repair01.SalesOfficeCode_selection__c = '鏉窞';
-        repair01.On_site_repair__c = 'RC淇悊';
-        insert repair01;
+     //    // 淇悊銈掍綔鎴愩仚銈�01
+     //    Repair__c repair01 = new Repair__c();
+     //    repair01.Account__c = dep.Id;
+     //    repair01.Department_Class__c = strategicDep[0].Id;
+     //    repair01.Hospital__c = hospital.Id;
+     //    repair01.Delivered_Product__c = asset.Id;
+     //    repair01.SERVICE_CONTRACT_JUDEGE_DAY__C = Date.today().addDays( -1000); // 缁翠慨鍚堝悓鍒ゆ柇鏃ャ亴銈点兗銉撱偣濂戠磩銇仩銇勩伓鍓�
+     //    repair01.Failure_Occurrence_Date__c  =Date.today();
+     //    repair01.SalesOfficeCode_selection__c = '鏉窞';
+     //    repair01.On_site_repair__c = 'RC淇悊';
+     //    insert repair01;
 
-        repair01.SalesOfficeCode_selection__c = '鍖椾含';
-        update repair01;
-        repair01.SalesOfficeCode_selection__c = '鍝堝皵婊�';
-        update repair01;
-        repair01.SalesOfficeCode_selection__c = '涓婃捣';
-        update repair01;
-        repair01.SalesOfficeCode_selection__c = '骞垮窞';
-        update repair01;
-        repair01.SalesOfficeCode_selection__c = '澶師';
-        update repair01;
-        repair01.SalesOfficeCode_selection__c = '鎴愰兘';
-        update repair01;
-        repair01.SalesOfficeCode_selection__c = '鏉窞';
-        update repair01;
+     //    repair01.SalesOfficeCode_selection__c = '鍖椾含';
+     //    update repair01;
+     //    repair01.SalesOfficeCode_selection__c = '鍝堝皵婊�';
+     //    update repair01;
+     //    repair01.SalesOfficeCode_selection__c = '涓婃捣';
+     //    update repair01;
+     //    repair01.SalesOfficeCode_selection__c = '骞垮窞';
+     //    update repair01;
+     //    repair01.SalesOfficeCode_selection__c = '澶師';
+     //    update repair01;
+     //    repair01.SalesOfficeCode_selection__c = '鎴愰兘';
+     //    update repair01;
+     //    repair01.SalesOfficeCode_selection__c = '鏉窞';
+     //    update repair01;
 
-        repair01.On_site_repair__c = '鏈嶅姟鏂瑰紡';
-        update repair01;
-     }
+     //    repair01.On_site_repair__c = '鏈嶅姟鏂瑰紡';
+     //    update repair01;
+     // }
 
      static testMethod void test05(){
         //瀹㈡埛
@@ -1348,6 +1419,8 @@
         Asset asset = createAsset( hospital, strategicDep[0], dep);
         // 鍒涘缓缁翠慨鍚堝悓
         Maintenance_Contract__c contract = new Maintenance_Contract__c();
+        // ID RecordTypeId1 = Schema.SObjectType.Maintenance_Contract__c.getRecordTypeInfosByName().get('鏈嶅姟鍚堝悓').getRecordTypeId();
+        // ID RecordTypeId2 = Schema.SObjectType.Maintenance_Contract_Estimate__c.getRecordTypeInfosByName().get('鏈嶅姟鍚堝悓鎶ヤ环').getRecordTypeId();
         contract.Name = 'tect contract';
         contract.status__c = '濂戠磩';
         contract.URF_Contract__c=true;
@@ -1360,6 +1433,7 @@
         contract.Contract_End_Date__c = Date.today().addDays( 5);       // 5鏃ュ緦
         contract.SalesOfficeCode_selection__c = '鍖椾含RC';
         contract.RecordTypeId='01210000000gTYq';
+        // contract.RecordTypeId=RecordTypeId1;
         contract.URF_Contract__c = true;
         contract.agree_Upper_limit__c = true;
         insert contract;
@@ -1367,6 +1441,7 @@
         Maintenance_Contract_Estimate__c Estimate = new Maintenance_Contract_Estimate__c();
         Estimate.Maintenance_Contract__c = contract.Id;
         Estimate.recordtypeId = '01210000000gTZA';
+        // Estimate.recordtypeId = RecordTypeId2;
         Estimate.Name = '鎶ヤ环1';
         insert Estimate;
         //鍒涘缓缁翠慨鍚堝悓鎶ヤ环/淇濇湁璁惧
@@ -1452,6 +1527,7 @@
 
         // 鍒涘缓缁翠慨鍚堝悓
         Maintenance_Contract__c contract = new Maintenance_Contract__c();
+        // ID RecordTypeId1 = Schema.SObjectType.Maintenance_Contract__c.getRecordTypeInfosByName().get('鏈嶅姟鍚堝悓').getRecordTypeId();
         contract.Name = 'tect contract';
         contract.status__c = '濂戠磩';
         contract.URF_Contract__c=true;
@@ -1463,6 +1539,7 @@
         contract.Contract_Start_Date__c = Date.today().addDays( -10);   // 10鏃ュ墠
         contract.Contract_End_Date__c = Date.today().addDays( 5);       // 5鏃ュ緦
         contract.SalesOfficeCode_selection__c = '鍖椾含RC';
+        // contract.RecordTypeId=RecordTypeId1;
         contract.RecordTypeId='01210000000gTYq';
         contract.URF_Contract__c = true;
         contract.agree_Upper_limit__c = true;
@@ -1508,4 +1585,194 @@
         update repair02;
 
     }
+    static testMethod void test07(){
+        //瀹㈡埛
+        Account hospital = createHospital( 'test hospital');
+        Account[] strategicDep = selectStrategicDep( hospital);
+        Account dep = createDep( hospital, strategicDep[0]);
+        // 淇濇湁璁惧
+        Asset asset = createAsset( hospital, strategicDep[0], dep);
+        // 鍒涘缓缁翠慨鍚堝悓
+        Maintenance_Contract__c contract = new Maintenance_Contract__c();
+        // ID RecordTypeId1 = Schema.SObjectType.Maintenance_Contract__c.getRecordTypeInfosByName().get('鏈嶅姟鍚堝悓').getRecordTypeId();
+        // ID RecordTypeId2 = Schema.SObjectType.Maintenance_Contract_Estimate__c.getRecordTypeInfosByName().get('鏈嶅姟鍚堝悓鎶ヤ环').getRecordTypeId();
+        contract.Name = 'tect contract';
+        contract.status__c = '濂戠磩';
+        contract.URF_Contract__c=true;
+        contract.Maintenance_Contract_No__c = 'Kami_Contract_No';
+        contract.Contract_Conclusion_Date__c = Date.today();
+        contract.Hospital__c = hospital.Id;
+        contract.Department_Class__c = strategicDep[0].Id;
+        contract.Department__c = dep.Id;
+        contract.Contract_Start_Date__c = Date.today().addDays( -10);   // 10鏃ュ墠
+        contract.Contract_End_Date__c = Date.today().addDays( 5);       // 5鏃ュ緦
+        contract.SalesOfficeCode_selection__c = '鍖椾含RC';
+        contract.RecordTypeId='01210000000gTYq';
+        // contract.RecordTypeId=RecordTypeId1;
+        contract.URF_Contract__c = true;
+        contract.agree_Upper_limit__c = true;
+        insert contract;
+        //鍒涘缓缁翠慨鍚堝悓鎶ヤ环
+        Maintenance_Contract_Estimate__c Estimate = new Maintenance_Contract_Estimate__c();
+        Estimate.Maintenance_Contract__c = contract.Id;
+        Estimate.recordtypeId = '01210000000gTZA';
+        // Estimate.recordtypeId = RecordTypeId2;
+        Estimate.Name = '鎶ヤ环1';
+        insert Estimate;
+        //鍒涘缓缁翠慨鍚堝悓鎶ヤ环/淇濇湁璁惧
+        Maintenance_Contract_Asset_Estimate__c  Asset_Estimate = new Maintenance_Contract_Asset_Estimate__c();
+        Asset_Estimate.Maintenance_Contract_Estimate__c = Estimate.Id;
+        Asset_Estimate.CurrencyIsoCode = 'CNY';
+        Asset_Estimate.Series_MaxRepairCount__c = 10;
+        Asset_Estimate.Series_RepairCount__c = 5;
+        insert Asset_Estimate;
+        //鍒涘缓缁翠慨鍚堝悓/淇濇湁璁惧
+        Maintenance_Contract_Asset__c middleTable = new Maintenance_Contract_Asset__c();
+        middleTable.Asset__c = asset.Id;
+        middleTable.Maintenance_Contract__c = contract.Id;
+        middleTable.CurrencyIsoCode= 'CNY';
+        middleTable.startDateGurantee_Text__c =Date.today().addDays( 5);
+        middleTable.endDateGurantee_Text__c =Date.today().addDays( 30);
+        middleTable.Maintenance_Contract_Asset_Estimate__c = Asset_Estimate.Id;
+        insert middleTable;
+        // 淇悊銈掍綔鎴愩仚銈�01
+        Repair__c repair01 = new Repair__c();
+        repair01.Account__c = dep.Id;
+        repair01.Department_Class__c = strategicDep[0].Id;
+        repair01.Hospital__c = hospital.Id;
+        repair01.SERVICE_CONTRACT_JUDEGE_DAY__C = Date.today(); // 缁翠慨鍚堝悓鍒ゆ柇鏃ュ湪鍚堝悓寮�濮嬫棩涓庡悎鍚岀粨鏉熸棩涔嬮棿
+        repair01.Failure_Occurrence_Date__c  =Date.today();
+        repair01.Delivered_Product__c = asset.Id;
+        repair01.Status__c = '鑽夋涓�';
+        repair01.Return_Without_Repair_IF__c =true;
+        repair01.SalesOfficeCode_selection__c = '瑗垮畨RC';
+        repair01.Return_Without_Repair_Reason__c = '1.淇悊浠锋牸澶珮';
+        insert repair01;
+
+        Repair__c checkRepair = null;
+        checkRepair = [SELECT Id, Name , Maintenance_Contract__c,MaintenanceContractType__c FROM Repair__c WHERE ID = :repair01.id];
+        System.assertEquals( contract.Id, checkRepair.Maintenance_Contract__c);
+
+        // 淇悊銈掍綔鎴愩仚銈�01
+        Repair__c repair02 = new Repair__c();
+        repair02.Account__c = dep.Id;
+        repair02.Department_Class__c = strategicDep[0].Id;
+        repair02.Hospital__c = hospital.Id;
+        repair02.SERVICE_CONTRACT_JUDEGE_DAY__C = Date.today(); // 缁翠慨鍚堝悓鍒ゆ柇鏃ュ湪鍚堝悓寮�濮嬫棩涓庡悎鍚岀粨鏉熸棩涔嬮棿
+        repair02.Failure_Occurrence_Date__c  =Date.today();
+        repair02.Delivered_Product__c = asset.Id;
+        repair02.Return_Without_Repair_Reason__c = '4.鍧氭寔缁х画浣跨敤';
+        repair02.Return_Without_Repair_IF__c =true;
+        insert repair02;
+        delete repair02;
+
+        checkRepair.On_site_repair__c = '鍔炰簨澶勪慨鐞�';
+        contract.SalesOfficeCode_selection__c = '骞垮窞RC';
+        update contract;
+        checkRepair.SalesOfficeCode_selection__c = '鎴愰兘';
+        update checkRepair;
+        contract.SalesOfficeCode_selection__c = '鍖椾含RC';
+        update contract;
+        checkRepair.SalesOfficeCode_selection__c = '澶師';
+        update checkRepair;
+        checkRepair.SalesOfficeCode_selection__c = '鏉窞';
+        update checkRepair;
+     }
+     
+     static testMethod void test08(){
+        //瀹㈡埛
+        Account hospital = createHospital( 'test hospital');
+        Account[] strategicDep = selectStrategicDep( hospital);
+        Account dep = createDep( hospital, strategicDep[0]);
+        // 淇濇湁璁惧
+        Asset asset = createAsset( hospital, strategicDep[0], dep);
+        // 鍒涘缓缁翠慨鍚堝悓
+        Maintenance_Contract__c contract = new Maintenance_Contract__c();
+        // ID RecordTypeId1 = Schema.SObjectType.Maintenance_Contract__c.getRecordTypeInfosByName().get('鏈嶅姟鍚堝悓').getRecordTypeId();
+        // ID RecordTypeId2 = Schema.SObjectType.Maintenance_Contract_Estimate__c.getRecordTypeInfosByName().get('鏈嶅姟鍚堝悓鎶ヤ环').getRecordTypeId();
+        contract.Name = 'tect contract';
+        contract.status__c = '濂戠磩';
+        contract.URF_Contract__c=true;
+        contract.Maintenance_Contract_No__c = 'Kami_Contract_No';
+        contract.Contract_Conclusion_Date__c = Date.today();
+        contract.Hospital__c = hospital.Id;
+        contract.Department_Class__c = strategicDep[0].Id;
+        contract.Department__c = dep.Id;
+        contract.Contract_Start_Date__c = Date.today().addDays( -10);   // 10鏃ュ墠
+        contract.Contract_End_Date__c = Date.today().addDays( 5);       // 5鏃ュ緦
+        contract.SalesOfficeCode_selection__c = '鍖椾含RC';
+        contract.RecordTypeId='01210000000gTYq';
+        // contract.RecordTypeId=RecordTypeId1;
+        contract.URF_Contract__c = true;
+        contract.agree_Upper_limit__c = true;
+        insert contract;
+        //鍒涘缓缁翠慨鍚堝悓鎶ヤ环
+        Maintenance_Contract_Estimate__c Estimate = new Maintenance_Contract_Estimate__c();
+        Estimate.Maintenance_Contract__c = contract.Id;
+        Estimate.recordtypeId = '01210000000gTZA';
+        // Estimate.recordtypeId = RecordTypeId2;
+        Estimate.Name = '鎶ヤ环1';
+        insert Estimate;
+        //鍒涘缓缁翠慨鍚堝悓鎶ヤ环/淇濇湁璁惧
+        Maintenance_Contract_Asset_Estimate__c  Asset_Estimate = new Maintenance_Contract_Asset_Estimate__c();
+        Asset_Estimate.Maintenance_Contract_Estimate__c = Estimate.Id;
+        Asset_Estimate.CurrencyIsoCode = 'CNY';
+        Asset_Estimate.Series_MaxRepairCount__c = 10;
+        Asset_Estimate.Series_RepairCount__c = 5;
+        insert Asset_Estimate;
+        //鍒涘缓缁翠慨鍚堝悓/淇濇湁璁惧
+        Maintenance_Contract_Asset__c middleTable = new Maintenance_Contract_Asset__c();
+        middleTable.Asset__c = asset.Id;
+        middleTable.Maintenance_Contract__c = contract.Id;
+        middleTable.CurrencyIsoCode= 'CNY';
+        middleTable.startDateGurantee_Text__c =Date.today().addDays( 5);
+        middleTable.endDateGurantee_Text__c =Date.today().addDays( 30);
+        middleTable.Maintenance_Contract_Asset_Estimate__c = Asset_Estimate.Id;
+        insert middleTable;
+        // 淇悊銈掍綔鎴愩仚銈�01
+        Repair__c repair01 = new Repair__c();
+        repair01.Account__c = dep.Id;
+        repair01.Department_Class__c = strategicDep[0].Id;
+        repair01.Hospital__c = hospital.Id;
+        repair01.SERVICE_CONTRACT_JUDEGE_DAY__C = Date.today(); // 缁翠慨鍚堝悓鍒ゆ柇鏃ュ湪鍚堝悓寮�濮嬫棩涓庡悎鍚岀粨鏉熸棩涔嬮棿
+        repair01.Failure_Occurrence_Date__c  =Date.today();
+        repair01.Delivered_Product__c = asset.Id;
+        repair01.Status__c = '鑽夋涓�';
+        repair01.SalesOfficeCode_selection__c = '瑗垮畨RC';
+        repair01.Return_Without_Repair_Reason__c = 'I/F鐞嗙敱銆佺⒑瑾�';
+        repair01.CancellationReason__c = '淇悊浠锋牸楂�';
+        repair01.Return_Without_Repair_IF__c =true;
+        insert repair01;
+
+        Repair__c checkRepair = null;
+        checkRepair = [SELECT Id, Name , Maintenance_Contract__c,MaintenanceContractType__c FROM Repair__c WHERE ID = :repair01.id];
+        System.assertEquals( contract.Id, checkRepair.Maintenance_Contract__c);
+
+        // 淇悊銈掍綔鎴愩仚銈�01
+        Repair__c repair02 = new Repair__c();
+        repair02.Account__c = dep.Id;
+        repair02.Department_Class__c = strategicDep[0].Id;
+        repair02.Hospital__c = hospital.Id;
+        repair02.SERVICE_CONTRACT_JUDEGE_DAY__C = Date.today(); // 缁翠慨鍚堝悓鍒ゆ柇鏃ュ湪鍚堝悓寮�濮嬫棩涓庡悎鍚岀粨鏉熸棩涔嬮棿
+        repair02.Failure_Occurrence_Date__c  =Date.today();
+        repair02.Delivered_Product__c = asset.Id;
+        repair02.Return_Without_Repair_Reason__c = 'I/F鐞嗙敱銆佺⒑瑾�';
+        repair02.CancellationReason__c = '鏃犳硶淇悊杩斿搧';
+        repair02.Return_Without_Repair_IF__c =true;
+        insert repair02;
+        delete repair02;
+
+        checkRepair.On_site_repair__c = '鍔炰簨澶勪慨鐞�';
+        contract.SalesOfficeCode_selection__c = '骞垮窞RC';
+        update contract;
+        checkRepair.SalesOfficeCode_selection__c = '鎴愰兘';
+        update checkRepair;
+        contract.SalesOfficeCode_selection__c = '鍖椾含RC';
+        update contract;
+        checkRepair.SalesOfficeCode_selection__c = '澶師';
+        update checkRepair;
+        checkRepair.SalesOfficeCode_selection__c = '鏉窞';
+        update checkRepair;
+     }
+
 }
\ No newline at end of file

--
Gitblit v1.9.1