@isTest(SeeAllData=false) private class EquipmentRenewBatchTest { private static void initData(){ List rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院']; if (rectCo.size() == 0) { return; } List rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科']; if (rectSct.size() == 0) { return; } List rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科']; if (rectDpt.size() == 0) { return; } Profile p = [select Id from Profile where id =:System.Label.ProfileId_SystemAdmin]; User MacOwner = new User(Test_staff__c = true, LastName = 'hp1', FirstName = 'owner1', Alias = 'hp', CommunityNickname = 'hpOwner1', Email = 'olympus_hpowner@sunbridge.com',Job_Category__c = '销售服务', Username = 'olympus_hpowner@sunbridge.com1', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p.id); insert MacOwner; Account hospital = new Account(); hospital.RecordTypeId = rectCo[0].Id; hospital.Name = 'NFM007Testhospital'; insert hospital; // 戦略科室を得る List strategicDep = [SELECT ID, Name FROM Account WHERE parentId = :hospital.Id AND recordType.DeveloperName = 'Department_Class_GI']; Account section = new Account(); section.RecordTypeId = rectSct[0].Id; section.Name = '*'; section.Department_Class_Label__c = '消化科'; section.ParentId = hospital.Id; section.Hospital_Department_Class__c = hospital.Id; section.AgentCode_Ext__c = '9999900'; insert section; Account depart = new Account(); depart.RecordTypeId = rectDpt[0].Id; depart.Name = '*'; depart.Department_Name__c = 'NFM007TestDepart'; depart.ParentId = strategicDep[0].Id; depart.Department_Class__c = strategicDep[0].Id; depart.Hospital__c = hospital.Id; insert depart; Product2 prd1 = new Product2(); prd1.ProductCode_Ext__c = 'Prd1'; prd1.ProductCode = 'Prd1'; prd1.Repair_Product_Code__c = 'Prd1_RP'; prd1.Name = 'Prd1'; prd1.Manual_Entry__c = false; // prd1.Category2__c = '本体'; // prd1.Category3__c = '纤维镜'; prd1.Category4__c = 'SD EndoEYE'; // prd1.Category5__c = '260SL系列'; prd1.Asset_Model_No__c = '1001'; prd1.Important_product__c = true; prd1.Important_Rroduct_1GI__c = true; insert prd1; Product2 prd2 = new Product2(); prd2.ProductCode_Ext__c = 'Prd2'; prd2.ProductCode = 'Prd2'; prd2.Repair_Product_Code__c = 'Prd2_RP'; prd2.Name = 'Prd2'; prd2.Manual_Entry__c = false; // prd1.Category2__c = '本体'; prd2.Category3__c = '光源'; // prd2.Category4__c = 'SD EndoEYE'; // prd1.Category5__c = '260SL系列'; prd2.Asset_Model_No__c = '1001'; prd2.Important_product__c = true; prd2.Important_Rroduct_1GI__c = true; insert prd2; Consumable_order_details2__c saledet1 = new Consumable_order_details2__c(); saledet1.Name = 'OCM_01_001001'; // saledet1.Consumable_order_minor__c = Order1.Id; saledet1.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery; saledet1.Bar_Code__c = '0114953170032070111804001082K250BBBBB'; // saledet1.Consumable_Product__c = prd1.Id; saledet1.Used_account__c = section.Id; saledet1.Delivery_List_RMB__c = 11; saledet1.Box_Piece__c = '盒'; saledet1.TracingCode__c = 'BBBBB'; saledet1.SerialLotNo__c = '82K'; saledet1.Guarantee_period_for_products__c = Date.today().addDays(5); saledet1.Sterilization_limit__c = Date.today().addDays(5); saledet1.Send_Date__c = null; //saledet1.Dealer_Shipment__c = false; saledet1.Arrive_date__c = null; //saledet1.Dealer_Arrive__c = false; saledet1.Used_date__c = null; //saledet1.Dealer_Saled__c = false; saledet1.Deliver_date__c = Date.today().addDays(-10); insert saledet1; // 维修合同を作成する Maintenance_Contract__c contract = new Maintenance_Contract__c(); contract.Name = 'tect contract'; contract.Hospital__c = hospital.Id; contract.Department_Class__c = strategicDep[0].Id; contract.Department__c = depart.Id; contract.Service_Contract_Staff__c = MacOwner.Id; contract.Payment_Plan_Sum_First__c = 1; contract.Status__c = '契約満了'; contract.Maintenance_Contract_No__c = '11123'; contract.recordtypeId = Schema.SObjectType.Maintenance_Contract__c.getRecordTypeInfosByDeveloperName().get('NewMaintenance_Contract').getRecordTypeId(); contract.Not_Upper_limit_reason__c = ' 1'; contract.Contract_Start_Date__c = Date.newInstance(2021,10,5); contract.Contract_End_Date__c = Date.newInstance(2021,11,1); contract.SalesOfficeCode_selection__c = '北京RC'; contract.New_Contract_TypeF_Text__c = '续签合同'; system.assertEquals(contract.Contract_End_Date__c >= Date.newInstance(2021,10,1) && contract.Contract_End_Date__c <= Date.newInstance(2022,9,30),true); insert contract; Maintenance_Contract__c contract2 = new Maintenance_Contract__c(); contract2.Name = 'tect contract2'; contract2.Hospital__c = hospital.Id; contract2.Department_Class__c = strategicDep[0].Id; contract2.Department__c = depart.Id; contract2.Service_Contract_Staff__c = MacOwner.Id; contract2.Payment_Plan_Sum_First__c = 1; contract2.Status__c = '契約'; contract2.Maintenance_Contract_No__c = '11123111'; contract2.Not_Upper_limit_reason__c = ' 2'; contract2.Contract_Start_Date__c = Date.newInstance(2021,10,5); contract2.Contract_End_Date__c = Date.newInstance(2021,11,1); contract2.SalesOfficeCode_selection__c = '北京RC'; system.assertEquals(contract2.Contract_End_Date__c >= Date.newInstance(2021,10,1) && contract2.Contract_End_Date__c <= Date.newInstance(2022,9,30),true); insert contract2; asset ast = new asset(); ast.Name = prd1.Name; ast.Product2Id = prd1.Id; ast.SerialNumber = saledet1.SerialLotNo__c + '(' + saledet1.TracingCode__c + ')'; ast.SLMark__c = 'Serial Number'; // 固定 dnInfo.SorLMark; ast.Guarantee_period_for_products__c = saledet1.Guarantee_period_for_products__c; ast.TracingCode__c = saledet1.TracingCode__c; ast.Guaranteen_end__c = saledet1.Sterilization_limit__c; ast.Barcode__c = saledet1.Bar_Code__c; ast.Product_Serial_No__c = saledet1.SerialLotNo__c + '(' + saledet1.TracingCode__c + ')'; ast.Asset_Owner__c = '经销商资产'; ast.AccountId = depart.Id; ast.Department_Class__c = section.Id; // ast.Asset_owner_delaer_name__c = hospital.Id; ast.Hospital__c = hospital.Id; ast.CurrentContract__c = contract.Id; ast.CurrentContract_Asset_Price__c = 0; insert ast; asset ast1 = new asset(); ast1.Name = prd2.Name; ast1.Product2Id = prd2.Id; ast1.SerialNumber = saledet1.SerialLotNo__c + '(' + saledet1.TracingCode__c + ')'; ast1.SLMark__c = 'Serial Number'; // 固定 dnInfo.SorLMark; ast1.Guarantee_period_for_products__c = saledet1.Guarantee_period_for_products__c; ast1.TracingCode__c = saledet1.TracingCode__c; ast1.Guaranteen_end__c = saledet1.Sterilization_limit__c; ast1.Barcode__c = saledet1.Bar_Code__c; ast1.Product_Serial_No__c = saledet1.SerialLotNo__c + '(' + saledet1.TracingCode__c + ')'; ast1.Asset_Owner__c = '经销商资产'; ast1.AccountId = depart.Id; ast1.Department_Class__c = section.Id; // ast.Asset_owner_delaer_name__c = hospital.Id; ast1.Hospital__c = hospital.Id; ast1.CurrentContract__c = contract2.Id; ast1.CurrentContract_Asset_Price__c = 0; insert ast1; } static testMethod void testMethod1() { Date toDayTime = Date.today(); Date start_date1 ; Date end_date1 ; Date start_date2 ; Date end_date2 ; Date deadlineTime; if (toDayTime.month() >= 4 && toDayTime.month() <= 9) { start_date1 = Date.newInstance(toDayTime.year()-1,4,1); end_date1 = Date.newInstance(toDayTime.year()-1,12,31); start_date2 = Date.newInstance(toDayTime.year(),1,1); end_date2 = Date.newInstance(toDayTime.year(),6,30); deadlineTime = Date.newInstance(toDayTime.year(),3,31); }else{ start_date1 = Date.newInstance(toDayTime.year()-1,10,1); end_date1 = Date.newInstance(toDayTime.year(),6,30); start_date2 = Date.newInstance(toDayTime.year(),7,1); end_date2 = Date.newInstance(toDayTime.year(),12,31); deadlineTime = Date.newInstance(toDayTime.year(),9,30); } system.Test.startTest(); initData(); String query='select Id,(select Id,CurrentContract__c,CurrentContract__r.Contract_End_Date__c,CurrentContract__r.Contract_Start_Date__c,CurrentContract__r.New_Contract_TypeF_Text__c,Product2.ServiceCategory__c,CurrentContract__r.Status__c' + ' from Asset_Hospital__r where CurrentContract__r.Contract_End_Date__c >= :start_date1 and CurrentContract__r.Contract_End_Date__c <= :end_date2)' + ' from Account'; List accs = database.query(query); for (Account acc: accs) { for (Asset ass : acc.Asset_Hospital__r) { system.debug('acc$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$'+ass); } } system.assertEquals(true,accs == null); database.executeBatch(new EquipmentRenewBatch(),200); system.Test.stopTest(); } }