@isTest
|
private class RollupToMaintenanceContractBatchTest {
|
|
static testMethod void testExecuteSAP() {
|
ControllerUtil.EscapeNFM001Trigger = true;
|
// 病院を作る
|
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.FSE_SP_Main_Leader__c = UserInfo.getUserId();
|
hospital.FSE_GI_Main_Leader__c = UserInfo.getUserId();
|
insert hospital;
|
|
// 戦略科室を得る
|
List<Account> strategicDep = [SELECT ID, Name FROM Account WHERE parentId = :hospital.Id AND recordType.DeveloperName = 'Department_Class_GI'];
|
|
// 診療科を作る
|
Account dep = new Account();
|
dep.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_GI'].id;
|
dep.Name = 'test dep';
|
dep.ParentId = strategicDep[0].Id;
|
dep.Department_Class__c = strategicDep[0].Id;
|
dep.Hospital__c = hospital.Id;
|
insert dep;
|
|
// 维修合同を作成する
|
Maintenance_Contract__c contract = new Maintenance_Contract__c();
|
contract.Name = 'tect contract';
|
contract.status__c ='契約';
|
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(-3);
|
contract.Contract_End_Date__c = Date.today();
|
contract.SalesOfficeCode_selection__c = '北京RC';
|
|
Maintenance_Contract__c contract2 = new Maintenance_Contract__c();
|
contract2.Name = 'tect contract2';
|
contract2.status__c ='契約';
|
contract2.Maintenance_Contract_No__c = 'Kami_Contract_No_2';
|
contract2.Contract_Conclusion_Date__c = Date.today();
|
contract2.Hospital__c = hospital.Id;
|
contract2.Department_Class__c = strategicDep[0].Id;
|
contract2.Department__c = dep.Id;
|
contract2.Contract_Start_Date__c = Date.today().addDays(-3);
|
contract2.Contract_End_Date__c = Date.today();
|
contract2.SalesOfficeCode_selection__c = '北京RC';
|
insert new Maintenance_Contract__c[] {contract,contract2};
|
contract = [Select Id, Status__c from Maintenance_Contract__c where Id = :contract.Id];
|
System.assertEquals('契約', contract.Status__c);
|
|
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;
|
insert prd1;
|
|
Asset ast1 = new Asset();
|
ast1.Name = '保有設備1';
|
ast1.Hospital__c = hospital.Id;
|
ast1.Department_Class__c = strategicDep[0].Id;
|
ast1.AccountId = dep.Id;
|
ast1.Product2Id = prd1.Id;
|
ast1.SerialNumber = 'SerialNumber1';
|
ast1.Guarantee_period_for_products__c = Date.today();
|
ast1.InstallDate = Date.today();
|
|
Asset ast2 = new Asset();
|
ast2.Name = '保有設備2';
|
ast2.Hospital__c = hospital.Id;
|
ast2.Department_Class__c = strategicDep[0].Id;
|
ast2.AccountId = dep.Id;
|
ast2.Product2Id = prd1.Id;
|
ast2.SerialNumber = 'SerialNumber2';
|
ast2.Guarantee_period_for_products__c = Date.today();
|
ast2.InstallDate = Date.today();
|
|
insert new Asset[] {ast1,ast2};
|
|
Maintenance_Contract_Asset__c mca = new Maintenance_Contract_Asset__c();
|
mca.Asset__c = ast1.Id;
|
mca.Maintenance_Contract__c = contract.id;
|
|
Maintenance_Contract_Asset__c mca2 = new Maintenance_Contract_Asset__c();
|
mca2.Asset__c = ast2.Id;
|
mca2.Maintenance_Contract__c = contract2.id;
|
|
insert new Maintenance_Contract_Asset__c[] {mca, mca2};
|
System.Test.StartTest();
|
Repair__c repair1 = new Repair__c();
|
repair1.Service_Repair_No__c = 'repair1';
|
repair1.Hospital__c = hospital.Id;
|
repair1.Department_Class__c = strategicDep[0].Id;
|
repair1.Account__c = dep.Id;
|
repair1.Delivered_Product__c = ast1.Id;
|
repair1.Repair_List_Price__c = 100;
|
repair1.Failure_Occurrence_Date__c = Date.today().addDays(-2);
|
repair1.Maintenance_Contract__c = contract.Id;
|
repair1.Service_contract_judege_day__c = Date.today().addDays(-2);
|
repair1.Final_complete_day__c = Date.today().addDays(-1);
|
|
Repair__c repair2 = new Repair__c();
|
repair2.Service_Repair_No__c = 'repair2';
|
repair2.Hospital__c = hospital.Id;
|
repair2.Department_Class__c = strategicDep[0].Id;
|
repair2.Account__c = dep.Id;
|
repair2.Delivered_Product__c = ast1.Id;
|
repair2.Repair_List_Price__c = 200;
|
repair2.Failure_Occurrence_Date__c = Date.today().addDays(-3);
|
repair2.Maintenance_Contract__c = contract.Id;
|
repair2.Service_contract_judege_day__c = Date.today().addDays(-2);
|
repair2.Final_complete_day__c = Date.today().addDays(-1);
|
|
Repair__c repair3 = new Repair__c();
|
repair3.Service_Repair_No__c = 'repair3';
|
repair3.Hospital__c = hospital.Id;
|
repair3.Department_Class__c = strategicDep[0].Id;
|
repair3.Account__c = dep.Id;
|
repair3.Delivered_Product__c = ast1.Id;
|
repair3.Repair_List_Price__c = 300;
|
repair3.Failure_Occurrence_Date__c = Date.today().addDays(-1);
|
repair3.Maintenance_Contract__c = contract.Id;
|
repair3.Service_contract_judege_day__c = Date.today().addDays(-2);
|
repair3.Final_complete_day__c = Date.today().addDays(-1);
|
|
Repair__c repair4 = new Repair__c();
|
repair4.Service_Repair_No__c = 'repair4';
|
repair4.Hospital__c = hospital.Id;
|
repair4.Department_Class__c = strategicDep[0].Id;
|
repair4.Account__c = dep.Id;
|
repair4.Delivered_Product__c = ast1.Id;
|
repair4.Repair_List_Price__c = 400;
|
repair4.Failure_Occurrence_Date__c = Date.today().addDays( 1);
|
repair4.Maintenance_Contract__c = contract.Id;
|
repair4.Service_contract_judege_day__c = Date.today().addDays(-2);
|
repair4.Final_complete_day__c = Date.today().addDays(-1);
|
|
Repair__c repair5 = new Repair__c();
|
repair5.Service_Repair_No__c = 'repair5';
|
repair5.Hospital__c = hospital.Id;
|
repair5.Department_Class__c = strategicDep[0].Id;
|
repair5.Account__c = dep.Id;
|
repair5.Delivered_Product__c = ast1.Id;
|
repair5.Repair_List_Price__c = 500;
|
repair5.Failure_Occurrence_Date__c = Date.today().addDays(-4);
|
repair5.Maintenance_Contract__c = contract.Id;
|
repair5.Service_contract_judege_day__c = Date.today().addDays(-2);
|
repair5.Final_complete_day__c = Date.today().addDays(-1);
|
|
Repair__c repair6 = new Repair__c();
|
repair6.Service_Repair_No__c = 'repair6';
|
repair6.Hospital__c = hospital.Id;
|
repair6.Department_Class__c = strategicDep[0].Id;
|
repair6.Account__c = dep.Id;
|
repair6.Delivered_Product__c = ast2.Id;
|
repair6.Repair_List_Price__c = 111;
|
repair6.Failure_Occurrence_Date__c = Date.today().addDays(-2);
|
repair6.Maintenance_Contract__c = contract2.Id;
|
repair6.Service_contract_judege_day__c = Date.today().addDays(-2);
|
repair6.Final_complete_day__c = Date.today().addDays(-1);
|
|
insert new Repair__c[] {repair1,repair2,repair3,repair4,repair5, repair6};
|
|
|
Repair_Quotation__c rq1 = new Repair_Quotation__c();
|
rq1.Name = 'testBatch1';
|
rq1.Repair__c = repair1.Id;
|
rq1.Servince_contract_discount_amount__c = 12345;
|
insert rq1;
|
|
Repair_Quotation__c rq2 = new Repair_Quotation__c();
|
rq2.Name = 'testBatch2';
|
rq2.Repair__c = repair2.Id;
|
rq2.Servince_contract_discount_amount__c = 12345;
|
rq2.Set_discount__c = 23456;
|
insert rq2;
|
|
Repair_Quotation__c rq3 = new Repair_Quotation__c();
|
rq3.Name = 'testBatch3';
|
rq3.Repair__c = repair3.Id;
|
rq3.Servince_contract_discount_amount__c = 12345;
|
rq3.sales_discount__c = 34567;
|
insert rq3;
|
|
Repair_Quotation__c rq4 = new Repair_Quotation__c();
|
rq4.Name = 'testBatch4';
|
rq4.Repair__c = repair4.Id;
|
rq4.Servince_contract_discount_amount__c = 12345;
|
insert rq4;
|
|
Repair_Quotation__c rq5 = new Repair_Quotation__c();
|
rq5.Name = 'testBatch5';
|
rq5.Repair__c = repair5.Id;
|
rq5.Servince_contract_discount_amount__c = 12345;
|
insert rq5;
|
|
Repair_Quotation__c rq6 = new Repair_Quotation__c();
|
rq6.Name = 'testBatch6';
|
rq6.Repair__c = repair6.Id;
|
rq6.Servince_contract_discount_amount__c = 12345;
|
insert rq6;
|
|
repair1.Repair_Quotation_Id__c = rq1.Id;
|
repair2.Repair_Quotation_Id__c = rq2.Id;
|
repair3.Repair_Quotation_Id__c = rq3.Id;
|
repair4.Repair_Quotation_Id__c = rq4.Id;
|
repair5.Repair_Quotation_Id__c = rq5.Id;
|
repair6.Repair_Quotation_Id__c = rq6.Id;
|
update new Repair__c[] {repair1,repair2,repair3,repair4,repair5, repair6};
|
|
Maintenance_Contract__c[] mc1 = [select id,Sum_repair_price__c from Maintenance_Contract__c where Id = : contract.Id];
|
System.assertEquals(null, mc1[0].Sum_repair_price__c);
|
|
Maintenance_Contract__c[] mc2 = [select id,Sum_repair_price__c from Maintenance_Contract__c where Id = : contract2.Id];
|
System.assertEquals(null, mc2[0].Sum_repair_price__c);
|
|
|
Id execBTId = Database.executeBatch(new RollupToMaintenanceContractBatch(), 5);
|
System.Test.StopTest();
|
|
Maintenance_Contract__c[] mc3 = [select id,Sum_repair_price__c from Maintenance_Contract__c where Id = : contract.Id];
|
//System.assertEquals(119748, mc3[0].Sum_repair_price__c);
|
|
Maintenance_Contract__c[] mc4 = [select id,Sum_repair_price__c from Maintenance_Contract__c where Id = : contract2.Id];
|
//System.assertEquals(12345, mc4[0].Sum_repair_price__c);
|
}
|
|
static testMethod void testExecuteNoSAP() {
|
// 病院を作る
|
ControllerUtil.EscapeNFM001Trigger = true;
|
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.FSE_SP_Main_Leader__c = UserInfo.getUserId();
|
hospital.FSE_GI_Main_Leader__c = UserInfo.getUserId();
|
insert hospital;
|
|
// 戦略科室を得る
|
List<Account> strategicDep = [SELECT ID, Name FROM Account WHERE parentId = :hospital.Id AND recordType.DeveloperName = 'Department_Class_GI'];
|
|
// 診療科を作る
|
Account dep = new Account();
|
dep.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_GI'].id;
|
dep.Name = 'test dep';
|
dep.ParentId = strategicDep[0].Id;
|
dep.Department_Class__c = strategicDep[0].Id;
|
dep.Hospital__c = hospital.Id;
|
insert dep;
|
|
// 维修合同を作成する
|
Maintenance_Contract__c contract = new Maintenance_Contract__c();
|
contract.Name = 'tect contract';
|
contract.status__c ='契約';
|
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(-3);
|
contract.Contract_End_Date__c = Date.today();
|
contract.SalesOfficeCode_selection__c = '北京RC';
|
|
Maintenance_Contract__c contract2 = new Maintenance_Contract__c();
|
contract2.Name = 'tect contract2';
|
contract2.status__c ='契約';
|
contract2.Maintenance_Contract_No__c = 'Kami_Contract_No_2';
|
contract2.Contract_Conclusion_Date__c = Date.today();
|
contract2.Hospital__c = hospital.Id;
|
contract2.Department_Class__c = strategicDep[0].Id;
|
contract2.Department__c = dep.Id;
|
contract2.Contract_Start_Date__c = Date.today().addDays(-3);
|
contract2.Contract_End_Date__c = Date.today();
|
contract2.SalesOfficeCode_selection__c = '北京RC';
|
insert new Maintenance_Contract__c[] {contract,contract2};
|
contract = [Select Id, Status__c from Maintenance_Contract__c where Id = :contract.Id];
|
System.assertEquals('契約', contract.Status__c);
|
|
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;
|
insert prd1;
|
|
Asset ast1 = new Asset();
|
ast1.Name = '保有設備1';
|
ast1.Hospital__c = hospital.Id;
|
ast1.Department_Class__c = strategicDep[0].Id;
|
ast1.AccountId = dep.Id;
|
ast1.Product2Id = prd1.Id;
|
ast1.SerialNumber = 'SerialNumber1';
|
ast1.Guarantee_period_for_products__c = Date.today();
|
ast1.InstallDate = Date.today();
|
|
Asset ast2 = new Asset();
|
ast2.Name = '保有設備2';
|
ast2.Hospital__c = hospital.Id;
|
ast2.Department_Class__c = strategicDep[0].Id;
|
ast2.AccountId = dep.Id;
|
ast2.Product2Id = prd1.Id;
|
ast2.SerialNumber = 'SerialNumber2';
|
ast2.Guarantee_period_for_products__c = Date.today();
|
ast2.InstallDate = Date.today();
|
|
insert new Asset[] {ast1,ast2};
|
|
Maintenance_Contract_Asset__c mca = new Maintenance_Contract_Asset__c();
|
mca.Asset__c = ast1.Id;
|
mca.Maintenance_Contract__c = contract.id;
|
|
Maintenance_Contract_Asset__c mca2 = new Maintenance_Contract_Asset__c();
|
mca2.Asset__c = ast2.Id;
|
mca2.Maintenance_Contract__c = contract2.id;
|
|
insert new Maintenance_Contract_Asset__c[] {mca, mca2};
|
|
Repair__c repair1 = new Repair__c();
|
repair1.Service_Repair_No__c = 'repair1';
|
repair1.Hospital__c = hospital.Id;
|
repair1.Department_Class__c = strategicDep[0].Id;
|
repair1.Account__c = dep.Id;
|
repair1.Delivered_Product__c = ast1.Id;
|
repair1.Repair_List_Price__c = 100;
|
repair1.Failure_Occurrence_Date__c = Date.today().addDays(-2);
|
repair1.Maintenance_Contract__c = contract.Id;
|
repair1.Service_contract_judege_day__c = Date.today().addDays(-2);
|
repair1.Final_complete_day__c = Date.today().addDays(-1);
|
|
Repair__c repair2 = new Repair__c();
|
repair2.Service_Repair_No__c = 'repair2';
|
repair2.Hospital__c = hospital.Id;
|
repair2.Department_Class__c = strategicDep[0].Id;
|
repair2.Account__c = dep.Id;
|
repair2.Delivered_Product__c = ast1.Id;
|
repair2.Repair_List_Price__c = 200;
|
repair2.Failure_Occurrence_Date__c = Date.today().addDays(-3);
|
repair2.Maintenance_Contract__c = contract.Id;
|
repair2.Service_contract_judege_day__c = Date.today().addDays(-2);
|
repair2.Final_complete_day__c = Date.today().addDays(-1);
|
|
Repair__c repair3 = new Repair__c();
|
repair3.Service_Repair_No__c = 'repair3';
|
repair3.Hospital__c = hospital.Id;
|
repair3.Department_Class__c = strategicDep[0].Id;
|
repair3.Account__c = dep.Id;
|
repair3.Delivered_Product__c = ast1.Id;
|
repair3.Repair_List_Price__c = 300;
|
repair3.Failure_Occurrence_Date__c = Date.today().addDays(-1);
|
repair3.Maintenance_Contract__c = contract.Id;
|
repair3.Service_contract_judege_day__c = Date.today().addDays(-2);
|
repair3.Final_complete_day__c = Date.today().addDays(-1);
|
|
Repair__c repair4 = new Repair__c();
|
repair4.Service_Repair_No__c = 'repair4';
|
repair4.Hospital__c = hospital.Id;
|
repair4.Department_Class__c = strategicDep[0].Id;
|
repair4.Account__c = dep.Id;
|
repair4.Delivered_Product__c = ast1.Id;
|
repair4.Repair_List_Price__c = 400;
|
repair4.Failure_Occurrence_Date__c = Date.today().addDays( 1);
|
repair4.Maintenance_Contract__c = contract.Id;
|
repair4.Service_contract_judege_day__c = Date.today().addDays(-2);
|
repair4.Final_complete_day__c = Date.today().addDays(-1);
|
|
Repair__c repair5 = new Repair__c();
|
repair5.Service_Repair_No__c = 'repair5';
|
repair5.Hospital__c = hospital.Id;
|
repair5.Department_Class__c = strategicDep[0].Id;
|
repair5.Account__c = dep.Id;
|
repair5.Delivered_Product__c = ast1.Id;
|
repair5.Repair_List_Price__c = 500;
|
repair5.Failure_Occurrence_Date__c = Date.today().addDays(-4);
|
repair5.Maintenance_Contract__c = contract.Id;
|
repair5.Service_contract_judege_day__c = Date.today().addDays(-2);
|
repair5.Final_complete_day__c = Date.today().addDays(-1);
|
|
Repair__c repair6 = new Repair__c();
|
repair6.Service_Repair_No__c = 'repair6';
|
repair6.Hospital__c = hospital.Id;
|
repair6.Department_Class__c = strategicDep[0].Id;
|
repair6.Account__c = dep.Id;
|
repair6.Delivered_Product__c = ast2.Id;
|
repair6.Repair_List_Price__c = 111;
|
repair6.Failure_Occurrence_Date__c = Date.today().addDays(-2);
|
repair6.Maintenance_Contract__c = contract2.Id;
|
repair6.Service_contract_judege_day__c = Date.today().addDays(-2);
|
repair6.Final_complete_day__c = Date.today().addDays(-1);
|
|
insert new Repair__c[] {repair1,repair2,repair3,repair4,repair5, repair6};
|
|
Maintenance_Contract__c[] mc1 = [select id,Sum_repair_price__c from Maintenance_Contract__c where Id = : contract.Id];
|
System.assertEquals(null, mc1[0].Sum_repair_price__c);
|
|
Maintenance_Contract__c[] mc2 = [select id,Sum_repair_price__c from Maintenance_Contract__c where Id = : contract2.Id];
|
System.assertEquals(null, mc2[0].Sum_repair_price__c);
|
|
System.Test.StartTest();
|
Id execBTId = Database.executeBatch(new RollupToMaintenanceContractBatch(), 5);
|
System.Test.StopTest();
|
|
Maintenance_Contract__c[] mc3 = [select id,Sum_repair_price__c from Maintenance_Contract__c where Id = : contract.Id];
|
System.assertEquals(600, mc3[0].Sum_repair_price__c);
|
|
Maintenance_Contract__c[] mc4 = [select id,Sum_repair_price__c from Maintenance_Contract__c where Id = : contract2.Id];
|
System.assertEquals(111, mc4[0].Sum_repair_price__c);
|
}
|
}
|