@isTest private class CurrentPeriodPaymentAmountBatchTest { @isTest static void test_method_one() { ControllerUtil.EscapeNFM001Trigger = true; Profile p = [select Id from Profile where id =: System.Label.ProfileId_SystemAdmin]; User u1 = new User(Test_staff__c = true); u1.LastName = '_サンブリッジ'; u1.FirstName = 'あ'; u1.Alias = 'あ'; u1.Email = 'olympusTest01@sunbridge.com'; u1.Username = 'olympusTest01@sunbridge.com'; u1.CommunityNickname = 'あ'; u1.IsActive = true; u1.EmailEncodingKey = 'ISO-2022-JP'; u1.TimeZoneSidKey = 'Asia/Tokyo'; u1.LocaleSidKey = 'ja_JP'; u1.LanguageLocaleKey = 'ja'; u1.ProfileId = p.Id; u1.Job_Category__c = '销售服务'; u1.Province__c = '東京'; insert u1; User u2 = new User(Test_staff__c = true); u2.LastName = '_サンブリッジ'; u2.FirstName = 'い'; u2.Alias = 'い'; u2.Email = 'olympusTest02@sunbridge.com'; u2.Username = 'olympusTest02@sunbridge.com'; u2.CommunityNickname = 'い'; u2.IsActive = true; u2.EmailEncodingKey = 'ISO-2022-JP'; u2.TimeZoneSidKey = 'Asia/Tokyo'; u2.LocaleSidKey = 'ja_JP'; u2.LanguageLocaleKey = 'ja'; u2.ProfileId = p.Id; u2.Job_Category__c = '销售推广'; u2.Province__c = '東京'; insert u2; system.runAs(u1) { List rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院']; if (rectCo.size() == 0) { throw new ControllerUtil.myException('not found 病院 recodetype'); } List rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 消化科']; if (rectSct.size() == 0) { throw new ControllerUtil.myException('not found 戦略科室分類 消化科 recodetype'); } List rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科']; if (rectDpt.size() == 0) { throw new ControllerUtil.myException('not found 診療科 消化科 recodetype'); } // テストデータ Account company = new Account(); company.RecordTypeId = rectCo[0].Id; company.Name = 'NFM108TestCompany'; company.FSE_SP_Main_Leader__c = u1.Id; company.FSE_GI_Main_Leader__c = u1.Id; upsert company; Account section = [Select Id, Name, Department_Class_Label__c, ParentId from Account where ParentId = :company.Id and RecordTypeId = :rectSct[0].Id]; Account depart = new Account(); depart.RecordTypeId = rectDpt[0].Id; depart.Name = '*'; depart.Department_Name__c = 'NFM108TestDepart'; depart.ParentId = section.Id; depart.Department_Class__c = section.Id; depart.Hospital__c = company.Id; upsert depart; // 再取得 List accList = new List(); company = [select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where Id = :company.Id]; accList.add(company); section = [select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where Id = :section.Id]; accList.add(section); depart = [select Management_Code__c, Management_Code_Auto__c, Name, Id from Account where Id = :depart.Id]; accList.add(depart); List prdList = new List(); Product2 prd1 = new Product2(); prd1.ProductCode_Ext__c = 'NFM108Prd1'; prd1.ProductCode = 'NFM108Prd1'; prd1.Repair_Product_Code__c = 'NFM108Prd1_RP'; prd1.Name = 'NFM108Prd1'; prd1.Manual_Entry__c = false; prdList.add(prd1); Product2 prd2 = new Product2(); prd2.ProductCode_Ext__c = 'NFM108Prd2'; prd2.ProductCode = 'NFM108Prd2'; prd2.Repair_Product_Code__c = 'NFM108Prd2_RP'; prd2.Name = 'NFM108Prd2'; prd2.Manual_Entry__c = false; prdList.add(prd2); insert prdList; Asset ast = new Asset(); ast.Name = 'NFM108Ast1'; ast.AccountId = depart.Id; ast.Department_Class__c = section.Id; ast.Hospital__c = company.Id; ast.Product2Id = prd1.Id; ast.SerialNumber = 'NFM108SerialNumber'; ast.Guarantee_period_for_products__c = Date.today(); ast.InstallDate = Date.today(); insert ast; ast = [select Id, Name, Product_Serial_No__c, AccountId, Department_Class__c, Department_Class__r.Management_Code_Auto__c, Hospital__c, Product2Id, Product2.ProductCode, Product2.Repair_Product_Code__c, SerialNumber from Asset where Id = :ast.Id]; Repair__c rpr = new Repair__c(); rpr.SAPRepairNo__c = 'NFM108SAP'; rpr.Account__c = depart.Id; rpr.Department_Class__c = section.Id; rpr.Hospital__c = company.Id; rpr.Delivered_Product__c = ast.Id; rpr.SalesOfficeCode_selection__c = '北京'; rpr.LastIssueCumulativePaybackAmount__c = 0; insert rpr; rpr = [select Id, Name, Delivered_Product__c, SAPRepairNo__c from Repair__c where Id = :rpr.Id]; String strSFDCRepairNo = rpr.Name + ':123'; Maintenance_Contract__c mc1 = new Maintenance_Contract__c(); mc1.Name = 'mc1'; mc1.Past_update_contract__c = true; mc1.RecordTypeId = '01210000000QjeFAAS'; mc1.CurrencyIsoCode = 'CNY'; mc1.Status__c = '契約'; mc1.Hospital__c = company.Id; mc1.Department_Class__c = section.Id; mc1.Department__c = depart.Id; mc1.Maintenance_Contract_No__c = 'mc1'; mc1.Contract_Conclusion_Date__c = Date.today(); mc1.Contract_End_Date__c = Date.today().addDays(1); mc1.SalesOfficeCode_selection__c = '北京RC'; mc1.LastIssueCumulativePaybackAmount__c = 0; mc1.Service_Contract_Staff__c = u1.Id; insert mc1; Date toDate = Date.today(); Date expirationDate = Date.newInstance(toDate.year(), 3, 31); Repair_receipt__c rr = new Repair_receipt__c(); rr.Name = '123456'; rr.UniqueKey__c = '1234567'; rr.Repair__c = rpr.Id; rr.Maintenance_Contract__c = mc1.Id; rr.PaymentAmount__c = Decimal.valueOf('1235'); rr.PaymentDate__c = expirationDate; rr.DeadlineLastMonthPeriodPaymentAmountFigu__c = 2; insert rr; System.Test.StartTest(); Id execBTId = Database.executeBatch(new CurrentPeriodPaymentAmountBatch(),100); List idList = new List(); idList.add(rr.id); execBTId = Database.executeBatch(new CurrentPeriodPaymentAmountBatch(idList),100); System.Test.StopTest(); List repairList = [select Id,Name, LastIssueCumulativePaybackAmount__c, LastIssueCumulativePayback__c from Repair__c]; //若此处通不过,请修改修理字段"上期止累计回款(后台用)"的过滤条件,改为当前财年的4月1日 System.assertEquals(1235,repairList[0].LastIssueCumulativePayback__c); System.assertEquals(1235,repairList[0].LastIssueCumulativePaybackAmount__c); List mcList = [select Id,Name, LastIssueCumulativePayback__c, LastIssueCumulativePaybackAmount__c from Maintenance_Contract__c]; //若此处通不过,请修改维修合同字段"上期止累计回款(后台用)"的过滤条件,改为当前财年的4月1日 System.assertEquals(1235,mcList[0].LastIssueCumulativePaybackAmount__c); } } }