/** * wangweipeng 2021/07/28 * RepairBeforeInsertHandler 的测试类 * 新增修理时,默认查找到对应的直返收货地址 * 根据修理上选中医院的 OCM_man_province_txt__c 值,去匹配直返地址的省或市 */ @isTest private class RepairBeforeInsertHandlerTest { Static String hospitalId; Static String strategicDepId; Static String depId; @TestSetup static void setup(){ TestDataUtility.CreatePIPolicyConfigurations(new string[]{'Repair__c','Agency_Contact__c','Contact','Agency_Contact__cV2'}); } static testMethod void testMethod1() { // 省 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; hospitalId = hospital.Id; StaticParameter.EscapeAccountTrigger = true; //战略科室 Account[] strategicDep = [SELECT ID, Name FROM Account WHERE parentId = :hospital.Id AND recordType.DeveloperName = 'Department_Class_OTH']; strategicDepId = strategicDep[0].Id; //诊疗科 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; depId = dep.Id; Contact contact2 = new Contact(); contact2.AccountId = dep.Id; contact2.FirstName = '赵'; contact2.LastName = '静'; 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); insert new Product2[] {pro1, pro2, pro3}; // 保有设备 Asset asset1 = new Asset(Asset_Owner__c = 'Olympus'); 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.Rental_Count__c = 0; insert new Asset[] {asset1}; Address__c ascc = new Address__c(); ascc.Address_Classification__c = '办事处'; ascc.Customer__c = dep.Id; ascc.Contacts__c = contact2.id; ascc.Telephone__c = '0591-88011136'; ascc.Province__c = al.id; ascc.City__c = al2.id; ascc.Detailed_Address__c = '福建省福州市鼓楼区五四路137号信和广场1201单元'; insert ascc; Repair__c repairObj1 = new Repair__c(); repairObj1.Delivered_Product__c = asset1.Id; repairObj1.Hospital__c = hospitalId; repairObj1.Department_Class__c = strategicDepId; repairObj1.Account__c = depId; repairObj1.SalesOfficeCode_selection__c = '北京石景山'; repairObj1.On_site_repair__c = 'RC修理'; repairObj1.Failure_Occurrence_Date__c = Date.today(); insert new Repair__c[]{repairObj1}; al.Name = '山东省'; update al; al2.Level1_Name__c = '山东省'; al2.Name = '潍坊市'; update al2; hospital.OCM_man_province_txt__c = '山东'; update hospital; Repair__c repairObj2 = new Repair__c(); repairObj2.Delivered_Product__c = asset1.Id; repairObj2.Hospital__c = hospitalId; repairObj2.Department_Class__c = strategicDepId; repairObj2.Account__c = depId; repairObj2.SalesOfficeCode_selection__c = '北京石景山'; repairObj2.On_site_repair__c = 'RC修理'; repairObj2.Failure_Occurrence_Date__c = Date.today(); insert new Repair__c[]{repairObj2}; } // DB202212270703 20230301 备品地址导入改造 start static testMethod void testMethod2() { // 省 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; hospitalId = hospital.Id; StaticParameter.EscapeAccountTrigger = true; //战略科室 Account[] strategicDep = [SELECT ID, Name FROM Account WHERE parentId = :hospital.Id AND recordType.DeveloperName = 'Department_Class_OTH']; strategicDepId = strategicDep[0].Id; //诊疗科 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; depId = dep.Id; Contact contact2 = new Contact(); contact2.AccountId = dep.Id; contact2.FirstName = '赵'; contact2.LastName = '静'; 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); insert new Product2[] {pro1, pro2, pro3}; // 保有设备 Asset asset1 = new Asset(Asset_Owner__c = 'Olympus'); 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.Rental_Count__c = 0; insert new Asset[] {asset1}; Address__c ascc = new Address__c(); ascc.Address_Classification__c = '备品'; ascc.Beipin_Center__c = '北京备品中心 '; ascc.Customer__c = dep.Id; ascc.Contacts__c = contact2.id; ascc.Telephone__c = '0591-88011136'; ascc.Province__c = al.id; ascc.City__c = al2.id; ascc.Detailed_Address__c = '福建省福州市鼓楼区五四路137号信和广场1201单元'; insert ascc; Profile p = [select Id from Profile where name ='2B2_备品中心检测&仓库管理']; // 用户ー作成 User hpOwner = new User(Test_staff__c = true,Branch__c = '北京', LastName = 'hp', FirstName = 'owner', Alias = 'hp', CommunityNickname = 'hpOwner', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p.id); insert hpOwner; Repair__c repairObj1 = new Repair__c(); repairObj1.Delivered_Product__c = asset1.Id; repairObj1.Hospital__c = hospitalId; repairObj1.Department_Class__c = strategicDepId; repairObj1.Account__c = depId; repairObj1.SalesOfficeCode_selection__c = '北京石景山'; repairObj1.On_site_repair__c = 'RC修理'; repairObj1.Failure_Occurrence_Date__c = Date.today(); repairObj1.Returns_Product_way__c = '备品中心'; repairObj1.Incharge_Staff__c = hpOwner.Id; insert new Repair__c[]{repairObj1}; al.Name = '山东省'; update al; al2.Level1_Name__c = '山东省'; al2.Name = '潍坊市'; update al2; hospital.OCM_man_province_txt__c = '山东'; update hospital; Repair__c repairObj2 = new Repair__c(); repairObj2.Delivered_Product__c = asset1.Id; repairObj2.Hospital__c = hospitalId; repairObj2.Department_Class__c = strategicDepId; repairObj2.Account__c = depId; repairObj2.SalesOfficeCode_selection__c = '北京石景山'; repairObj2.On_site_repair__c = 'RC修理'; repairObj2.Failure_Occurrence_Date__c = Date.today(); repairObj2.Returns_Product_way__c = '备品中心'; repairObj2.Incharge_Staff__c = hpOwner.Id; insert new Repair__c[]{repairObj2}; } }