@isTest private class LostCancelReportOppBatchTest { @isTest static void test_method_one() { // recode type を取得 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, Name from RecordType where IsActive = true and SobjectType = 'Account' and Name IN ('診療科 消化科', '診療科 呼吸科') order by Name desc]; if (rectDpt.size() == 0) { throw new ControllerUtil.myException('not found 診療科 recodetype'); } List rectLost = [select Id, Name from RecordType where IsActive = true and SobjectType = 'Lost_cancel_report__c' and DeveloperName IN ('PCL_Lost_report', 'PCL_Cancel_report') order by DeveloperName desc]; if (rectLost.size() == 0) { throw new ControllerUtil.myException('not found Lost_cancel_report recodetype'); } // insert Account company1 = new Account(); company1.RecordTypeId = rectCo[0].Id; company1.Name = '病院テスト1'; insert company1; List dc1s = [Select Id, Name, Department_Class_Label__c, Sys_Dept_Name_Change_Chk__c from Account where Parent.Id = : company1.Id order by Department_Class_Label__c]; Account depart1 = new Account(); depart1.RecordTypeId = rectDpt[0].Id; depart1.Name = '*'; depart1.Department_Name__c = '診療科1'; depart1.ParentId= dc1s[0].Id; depart1.Department_Class__c = dc1s[0].Id; depart1.Hospital__c= company1.Id; insert depart1; Account depart2 = new Account(); depart2.RecordTypeId = rectDpt[0].Id; depart2.Name = '*111'; depart2.Department_Name__c = '診療科2'; depart2.ParentId= dc1s[0].Id; depart2.Department_Class__c = dc1s[0].Id; depart2.Hospital__c= company1.Id; insert depart2; // 询价 Opportunity opp1 = new Opportunity(Name='opp1', StageName='oppName', CloseDate=Date.today(),Hospital__c = company1.Id,Department_Class__c = dc1s[0].Id,AccountId = depart1.Id); insert opp1; // 失单 Lost_cancel_report__c lcr1 = new Lost_cancel_report__c(Opportunity__c = opp1.Id,RecordTypeId = rectLost[0].Id); insert lcr1; //失单品牌1 PCLLostBrand__c pcllb1=new PCLLostBrand__c(); pcllb1.LostPrice__c=1332; pcllb1.Lost_Reason_Sub__c='价格'; //原因次 pcllb1.Lost_reason_main__c='价格'; //原因主 pcllb1.Lost_By_Company__c='蛇牌'; //品牌(主) pcllb1.Agency__c=depart1.Id; //经销商 pcllb1.Lost_cancel_report__c=lcr1.Id; //失单品牌2 PCLLostBrand__c pcllb2=pcllb1.clone(); pcllb2.Lost_By_Company__c='其他'; //品牌(主) pcllb2.Lost_By_Company_Mannual__c='失单品牌'; //手动品牌 pcllb2.Agency__c=depart2.Id; //经销商 pcllb2.AgencyMannual__c='手动经销商'; insert new List {pcllb1,pcllb2}; // 产品 Product2 pro1 = new Product2(Name='name01',Brand_Name__c='蛇牌',Category5__c='竞争对手',IsActive=true,Family='SP',Fixture_Model_No__c='n01',Serial_Lot_No__c='S/N tracing',Fixture_Model_No_T__c = 'n01',ProductCode_Ext__c='pc01',Manual_Entry__c=false); Product2 pro2 = new Product2(Name='name02',Brand_Name__c='蛇牌',Category5__c='竞争对手',IsActive=true,Family='SP2',Fixture_Model_No__c='n02',Serial_Lot_No__c='S/N tracing',Fixture_Model_No_T__c = 'n02',ProductCode_Ext__c='pc02',Manual_Entry__c=false); insert new List {pro1,pro2}; //失单型号 PCLLostProduct__c pcllp1=new PCLLostProduct__c(); pcllp1.Quantity__c=2; pcllp1.LostBrandName__c='蛇牌'; pcllp1.ProductClass__c='主机'; pcllp1.ProductCategory__c='4K'; pcllp1.LostProduct__c=pro1.Id; //产品Id pcllp1.LostProductMannual__c='失单对手型号(手动)'; //失单对手型号(手动) pcllp1.PCLLostBrand__c=pcllb1.Id; //询价失单品牌 PCLLostProduct__c pcllp2=pcllp1.clone(); pcllp2.LostBrandName__c='蛇牌'; pcllp2.LostProduct__c=pro2.Id; //产品Id pcllp2.PCLLostBrand__c=pcllb2.Id; //询价失单品牌 insert new List {pcllp1,pcllp2}; lcr1.Report_Status__c = '批准'; lcr1.LostType__c= '失单'; lcr1.Submit_Day__c = Date.today(); update lcr1; List IdList=new List {opp1.Id}; Database.executeBatch(new LostCancelReportOppBatch(IdList)); Database.executeBatch(new LostCancelReportOppBatch('2021/12/31', '2022/12/31', true)); } }