From 9a0ef802a678ffc421fc1d416f7f867e89e5536a Mon Sep 17 00:00:00 2001 From: D C <chenbangcai@prec-tech.com> Date: 星期五, 26 五月 2023 10:32:04 +0800 Subject: [PATCH] 维修合同 多年保修消费率逻辑更改 --- force-app/main/default/classes/SummaryConsumptionRateBatchTest.cls | 360 +++++++++++++++++++++++++++++++++++++++++++++ force-app/main/default/classes/ConsumAutoSelectBatchScheduleTest.cls | 22 ++ force-app/main/default/classes/SummaryConsumptionRateBatch.cls | 62 +++++++ force-app/main/default/classes/SummaryConsumptionRateBatchTest.cls-meta.xml | 5 force-app/main/default/classes/SummaryConsumptionRateBatch.cls-meta.xml | 5 force-app/main/default/classes/ConsumAutoSelectBatchSchedule.cls | 4 force-app/main/default/classes/ConsumAutoSelectBatchScheduleTest.cls-meta.xml | 5 7 files changed, 463 insertions(+), 0 deletions(-) diff --git a/force-app/main/default/classes/ConsumAutoSelectBatchSchedule.cls b/force-app/main/default/classes/ConsumAutoSelectBatchSchedule.cls index d1f5dae..835c77d 100644 --- a/force-app/main/default/classes/ConsumAutoSelectBatchSchedule.cls +++ b/force-app/main/default/classes/ConsumAutoSelectBatchSchedule.cls @@ -1,5 +1,9 @@ global class ConsumAutoSelectBatchSchedule implements Schedulable { global void execute(SchedulableContext sc) { ConsumAutoSelectBatch.run(); + // 2023/04/19 add SummaryContractFMBatch + Id execBTId = Database.executeBatch(new SummaryContractFMBatch(),100); + //2023/05/11 add SummaryConsumptionRateBatch + Id execConsumptionRateId = Database.executeBatch(new SummaryConsumptionRateBatch(),100); } } \ No newline at end of file diff --git a/force-app/main/default/classes/ConsumAutoSelectBatchScheduleTest.cls b/force-app/main/default/classes/ConsumAutoSelectBatchScheduleTest.cls new file mode 100644 index 0000000..0dc0dfe --- /dev/null +++ b/force-app/main/default/classes/ConsumAutoSelectBatchScheduleTest.cls @@ -0,0 +1,22 @@ +@isTest +private class ConsumAutoSelectBatchScheduleTest { + + @isTest static void test_method() { + // Implement test code + String CRON_EXP = '0 0 0 3 9 ? 2024'; + System.Test.startTest(); + // Schedule the test job + String jobId = system.schedule('ConsumAutoSelectBatchScheduleTest', CRON_EXP, new ConsumAutoSelectBatchSchedule()); + // Get the information from the CronTrigger API object + CronTrigger ct = [SELECT Id, CronExpression, TimesTriggered, NextFireTime FROM CronTrigger WHERE id = :jobId]; + // Verify the expressions are the same + System.assertEquals(CRON_EXP, ct.CronExpression); + // Verify the job has not run + // System.assertEquals(0, ct.TimesTriggered); + // Verify the next time the job will run + System.assertEquals('2024-09-03 00:00:00', String.valueOf(ct.NextFireTime)); + + System.Test.StopTest(); + } + +} \ No newline at end of file diff --git a/force-app/main/default/classes/ConsumAutoSelectBatchScheduleTest.cls-meta.xml b/force-app/main/default/classes/ConsumAutoSelectBatchScheduleTest.cls-meta.xml new file mode 100644 index 0000000..45aa0a0 --- /dev/null +++ b/force-app/main/default/classes/ConsumAutoSelectBatchScheduleTest.cls-meta.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> + <apiVersion>44.0</apiVersion> + <status>Active</status> +</ApexClass> diff --git a/force-app/main/default/classes/SummaryConsumptionRateBatch.cls b/force-app/main/default/classes/SummaryConsumptionRateBatch.cls new file mode 100644 index 0000000..ec9dced --- /dev/null +++ b/force-app/main/default/classes/SummaryConsumptionRateBatch.cls @@ -0,0 +1,62 @@ +/************************************************************************************************** +@Author: Denny闄堝府鎵� +@Name: SummaryConsumptionRateBatch +@CreateDate: 2023/05/08 +@Description: 澶氬勾淇濅慨鍚堝悓 鍚堝悓娑堣垂鐜囧垎瀛愬垎姣嶈祴鍊� +@Version 1.0 +*****************************************************************************************************/ +global class SummaryConsumptionRateBatch implements Database.Batchable<sObject>,Database.Stateful { + + global SummaryConsumptionRateBatch() { + } + + global List<Maintenance_Contract__c> start(Database.BatchableContext bc) { + List<Maintenance_Contract__c> mcUpdateList = [SELECT Id,VM_Consumption_Rate_Molecular__c,VM_Consumption_Rate_Denominator__c FROM + Maintenance_Contract__c WHERE RecordType_Name__c = '澶氬勾淇濅慨鍚堝悓' AND RecordType_DeveloperName__c = 'VM_Contract' AND (Status__c = '濂戠磩' OR Status__c = '濂戠磩婧�浜�')]; + return mcUpdateList; + } + + global void execute(Database.BatchableContext BC, list<Maintenance_Contract__c> mcUpdateList) { + + List<String> mcIds = new List<String>(); + for (Maintenance_Contract__c mcObj : mcUpdateList) { + mcIds.add(mcObj.Id); + } + List<Maintenance_Contract_Asset__c> scope = [SELECT Id,Summary_FZ__c,Summary_FM_Year__c,Maintenance_Contract__c FROM Maintenance_Contract_Asset__c WHERE Maintenance_Contract__c IN :mcIds + AND Maintenance_Contract__r.RecordType_DeveloperName__c ='VM_Contract' AND Asset__r.RecordType.Name!='澶囧搧' AND + (Maintenance_Contract__r.Status__c='濂戠磩' OR Maintenance_Contract__r.Status__c='濂戠磩婧�浜�')]; + //2023/05/08 澶氬勾淇濅慨鍚堝悓 鍚堝悓娑堣垂鐜囧垎瀛愬垎姣嶈祴鍊� start + List<String> mcIdList= new List<String>(); + Map<Id,Decimal> vmMolecularMap = new Map<Id,Decimal>(); + Map<Id,Decimal> vmDenominatorMap = new Map<Id,Decimal>(); + for ( Maintenance_Contract_Asset__c mc : scope) { + Decimal vmMolecular = 0; + Decimal vmDenominator = 0; + if (vmMolecularMap.containsKey(mc.Maintenance_Contract__c)) { + vmMolecular = vmMolecularMap.get(mc.Maintenance_Contract__c); + vmDenominator = vmDenominatorMap.get(mc.Maintenance_Contract__c); + } + //Summary_FM_Year__c 鍒嗘瘝 Summary_FZ__c 鍒嗗瓙 + vmMolecular += (mc.Summary_FZ__c == null ? 0 : mc.Summary_FZ__c); + vmDenominator += (mc.Summary_FM_Year__c == null ? 0 : mc.Summary_FM_Year__c); + + mcIdList.add(mc.Maintenance_Contract__c); + + vmMolecularMap.put(mc.Maintenance_Contract__c,vmMolecular); + vmDenominatorMap.put(mc.Maintenance_Contract__c,vmDenominator); + } + + for (Maintenance_Contract__c mcObj : mcUpdateList) { + if (vmMolecularMap.containsKey(mcObj.Id)) { + mcObj.VM_Consumption_Rate_Molecular__c = vmMolecularMap.get(mcObj.Id); + mcObj.VM_Consumption_Rate_Denominator__c = vmDenominatorMap.get(mcObj.Id)*3; + } + } + update mcUpdateList; + //2023/05/08 澶氬勾淇濅慨鍚堝悓 鍚堝悓娑堣垂鐜囧垎瀛愬垎姣嶈祴鍊� end + + } + + global void finish(Database.BatchableContext BC) { + } +} \ No newline at end of file diff --git a/force-app/main/default/classes/SummaryConsumptionRateBatch.cls-meta.xml b/force-app/main/default/classes/SummaryConsumptionRateBatch.cls-meta.xml new file mode 100644 index 0000000..fbbad0a --- /dev/null +++ b/force-app/main/default/classes/SummaryConsumptionRateBatch.cls-meta.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> + <apiVersion>56.0</apiVersion> + <status>Active</status> +</ApexClass> diff --git a/force-app/main/default/classes/SummaryConsumptionRateBatchTest.cls b/force-app/main/default/classes/SummaryConsumptionRateBatchTest.cls new file mode 100644 index 0000000..48aef1f --- /dev/null +++ b/force-app/main/default/classes/SummaryConsumptionRateBatchTest.cls @@ -0,0 +1,360 @@ +// 2023/05/11 澶氬勾淇濅慨鍚堝悓 鍚堝悓娑堣垂鐜囧垎瀛愬垎姣嶈祴鍊� Batch娴嬭瘯绫� +@isTest +private class SummaryConsumptionRateBatchTest { + static testMethod void testBatch() { + System.Test.startTest(); + database.executeBatch(new SummaryConsumptionRateBatch(),200); + List<Maintenance_Contract__c> mcUpdateList = [SELECT Id,Name,VM_Consumption_Rate_Molecular__c,VM_Consumption_Rate_Denominator__c FROM + Maintenance_Contract__c WHERE RecordType_Name__c = '澶氬勾淇濅慨鍚堝悓' AND RecordType_DeveloperName__c = 'VM_Contract' + AND (Status__c = '濂戠磩' OR Status__c = '濂戠磩婧�浜�') And Name = '::tect contract' + ]; + System.assert(mcUpdateList.size() > 0); + System.Test.stopTest(); + } + @testSetup + private static void setUpDate(){ + //2023/03/30 璺宠繃RepairAgainAnTrigger + // StaticParameter.RepairAgainAnStaTrigger = false; + // 鐥呴櫌銈掍綔銈� + Date toDayTime = Date.today(); + Account hospital = new Account(); + hospital.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP'].id; + hospital.Name = 'hospitalabc'; + hospital.Is_Active__c = '鏈夊姽'; + hospital.Attribute_Type__c = '鍗敓閮�'; + hospital.Speciality_Type__c = '缁煎悎鍖婚櫌'; + hospital.Grade__c = '涓�绾�'; + hospital.IF_Coverage_Target_HP__c = '1'; + hospital.OCM_Category__c = 'SLTV'; + hospital.Is_Medical__c = '鍖荤枟鏈烘瀯'; + hospital.Town__c = '涓滀含'; + Oly_TriggerHandler.bypass('NFM701ControllerHandler'); + Oly_TriggerHandler.bypass('UpdateContractAimAmountHandler'); + insert hospital; + + // 鎴︾暐绉戝銈掑緱銈� + Account[] strategicDep = [SELECT ID, Name FROM Account WHERE parentId = :hospital.Id AND recordType.DeveloperName = 'Department_Class_OTH']; + // 瑷虹檪绉戙倰浣溿倠 + 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 = System.Label.Account_Asset_FJZ; + dep.ParentId = strategicDep[0].Id; + dep.Department_Class__c = strategicDep[0].Id; + dep.Hospital__c = hospital.Id; + Oly_TriggerHandler.bypass('NFM701ControllerHandler'); + Oly_TriggerHandler.bypass('UpdateContractAimAmountHandler'); + insert dep; + + + + // 浜у搧 + Product2 pro1 = new Product2(Name='name01',IsActive=true,Family='GI', + Category5__c = '11', + Service_Category3__c ='杞�ч暅', + Fixture_Model_No__c='n01',Serial_Lot_No__c='S/N tracing', + Fixture_Model_No_T__c = 'n01', + Maintenance_Price_Year__c = 999, + Extend_Gurantee_Start_MD__c = Date.newInstance(toDayTime.year(),3,2), + Extend_Gurantee_End_MD__c = Date.newInstance(3999,12,31), + Extend_new_product_gurantee_MD__c = true, + PartSupplyFinishDate__c = Date.newInstance(toDayTime.year()+2,3,2), + ProductCode_Ext__c='pc01',Manual_Entry__c=false,Brand_Name__c='濂ユ灄宸存柉', + Category2__c='鏈綋', + Category3__c='鐢靛瓙闀�'); + Product2 pro2 = new Product2(Name='name02',IsActive=true,Family='GI', + Service_Category3__c ='杞�ч暅', + Fixture_Model_No__c='n02',Serial_Lot_No__c='Lot tracing', + ProductCode_Ext__c='pc02',Manual_Entry__c=false,Brand_Name__c='濂ユ灄宸存柉', + Category2__c='鏈綋', + Extend_Gurantee_Start_MD__c = Date.newInstance(toDayTime.year(),3,2), + Extend_Gurantee_End_MD__c = Date.newInstance(3999,12,31), + Extend_new_product_gurantee_MD__c = true, + PartSupplyFinishDate__c = Date.newInstance(toDayTime.year()+2,3,2), + Maintenance_Price_Year__c = 999, + Category3__c='绾ょ淮闀�'); + Product2 pro3 = new Product2(Name='name03',IsActive=true,Family='GI', + Service_Category3__c ='杞�ч暅', + Fixture_Model_No__c='n03',Serial_Lot_No__c='Lot tracing', + PartSupplyFinishDate__c = Date.newInstance(toDayTime.year()+2,3,2), + ProductCode_Ext__c='pc03',Manual_Entry__c=false,Brand_Name__c='濂ユ灄宸存柉', + Category2__c='鏈綋', + Extend_Gurantee_Start_MD__c = Date.newInstance(toDayTime.year(),3,2), + Extend_Gurantee_End_MD__c = Date.newInstance(3999,12,31), + Extend_new_product_gurantee_MD__c = true, + Maintenance_Price_Year__c = 999, + Category3__c='鐢靛瓙闀�'); + Product2 pro4 = new Product2(Name='name04',IsActive=true,Family='GI', + Service_Category3__c ='杞�ч暅', + Fixture_Model_No__c='n04',Serial_Lot_No__c='Lot tracing', + ProductCode_Ext__c='pc04',Manual_Entry__c=false,Brand_Name__c='濂ユ灄宸存柉', + Category4__c='SD EndoEYE', + Extend_Gurantee_Start_MD__c = Date.newInstance(toDayTime.year(),3,2), + Extend_Gurantee_End_MD__c = Date.newInstance(3999,12,31), + Extend_new_product_gurantee_MD__c = true, + PartSupplyFinishDate__c = Date.newInstance(toDayTime.year()+2,3,2), + Maintenance_Price_Year__c = 999); + + Product2 pro5 = new Product2(Name='name05',IsActive=true,Family='GI', + Service_Category3__c ='杞�ч暅', + Fixture_Model_No__c='n05',Serial_Lot_No__c='Lot tracing',Brand_Name__c='濂ユ灄宸存柉', + // Category2__c='鏈綋', + Extend_Gurantee_Start_MD__c = Date.newInstance(toDayTime.year(),3,2), + Extend_Gurantee_End_MD__c = Date.newInstance(3999,12,31), + Extend_new_product_gurantee_MD__c = true, + Maintenance_Price_Year__c = 999, + PartSupplyFinishDate__c = Date.newInstance(toDayTime.year()+2,3,2), + ProductCode_Ext__c='pc05',Manual_Entry__c=false, + Category3__c = 'EUS涓绘満'); + insert new Product2[] {pro1, pro2, pro3,pro4,pro5}; + + + + 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.newInstance(toDayTime.year()-2,5,2); + contract.Contract_End_Date__c = Date.newInstance(toDayTime.year(),5,20); + contract.SalesOfficeCode_selection__c = '鍖椾含RC'; + contract.RecordTypeId = Schema.SObjectType.Maintenance_Contract__c.getRecordTypeInfosByDeveloperName().get('VM_Contract').getRecordTypeId(); + insert contract; + System.assert(contract.Id != null); + + List<Maintenance_Contract__c> MaintenanceContract=[select id,Name from Maintenance_Contract__c]; + //---------------------------涓讳綋 涓や釜闄勫睘鍝�(涓綋绠$悊 鏁伴噺绠$悊) + // 淇濇湁璁惧A (涓讳綋) + Asset assetA1 = new Asset(Asset_Owner__c = 'Olympus'); + // assetA1.RecordTypeId = System.Label.Asset_RecordType; + // 2023/03/30 鍖婚櫌淇濇湁璁惧 + assetA1.RecordTypeId = Schema.SObjectType.Asset.getRecordTypeInfosByDeveloperName().get('HPAsset').getRecordTypeId(); + assetA1.SerialNumber = 'ass01'; + assetA1.Name = 'ass01'; + assetA1.AccountId = dep.Id; + assetA1.Guarantee_period_for_products__c = toDayTime.addMonths(6); + assetA1.Department_Class__c = strategicDep[0].Id; + assetA1.Hospital__c = hospital.Id; + assetA1.Product2Id = pro1.Id; + assetA1.Quantity = 1; + // assetA1.Asset_Year__c = Date.today().addYears(-1); + + assetA1.Status = '浣跨敤涓�'; + assetA1.Manage_type__c = '涓綋绠$悊'; + assetA1.Loaner_accsessary__c = false; + assetA1.Product_category__c = 'GI'; + assetA1.Delete_Flag__c = false; + assetA1.Freeze_sign__c = false; + assetA1.Out_of_wh__c = 0; + assetA1.Salesdepartment__c = '1.鍗庡寳钀ヤ笟鏈儴'; + assetA1.Internal_asset_location__c = '鍖椾含 澶囧搧涓績'; + assetA1.Product_category__c = 'GI'; + assetA1.Equipment_Type__c = '浜у搧璇曠敤'; + assetA1.SalesProvince__c = '鍖椾含'; + assetA1.WH_location__c = '璐ф灦鍙�1'; + assetA1.Asset_loaner_category__c = '鍥哄畾璧勪骇'; + assetA1.CompanyOfEquipment__c = '123'; + assetA1.Internal_Asset_number__c = '123'; + assetA1.CurrentContract__c=MaintenanceContract[0].Id; + assetA1.InstallDate =Date.newInstance(2021, 5, 1); + + // assetA1.AssetManageConfirm__c = true; + // 淇濇湁璁惧A (闄勫睘鍝� 鏁伴噺绠$悊) + Asset assetA2 = new Asset(Asset_Owner__c = 'Olympus'); + assetA2.RecordTypeId = System.Label.Asset_RecordType; + assetA2.SerialNumber = 'ass02'; + assetA2.Name = 'ass02'; + assetA2.AccountId = dep.Id; + assetA2.Department_Class__c = strategicDep[0].Id; + assetA2.Hospital__c = hospital.Id; + assetA2.Product2Id = pro2.Id; + assetA2.Quantity = 10; + assetA2.Status = '浣跨敤涓�'; + // assetA1.Asset_Year__c = Date.today().addYears(-1); + assetA2.Manage_type__c = '鏁伴噺绠$悊'; + assetA2.Loaner_accsessary__c = true; + assetA2.Product_category__c = 'GI'; + assetA2.Delete_Flag__c = false; + assetA2.Guarantee_period_for_products__c = toDayTime; + assetA2.Freeze_sign__c = false; + assetA2.Out_of_wh__c = 3; + + assetA2.Frozen_Quantity__c = 2; + assetA2.Salesdepartment__c = '1.鍗庡寳钀ヤ笟鏈儴'; + assetA2.Internal_asset_location__c = '鍖椾含 澶囧搧涓績'; + assetA2.Product_category__c = 'GI'; + assetA2.Equipment_Type__c = '浜у搧璇曠敤'; + assetA2.SalesProvince__c = '鍖椾含'; + assetA2.WH_location__c = '璐ф灦鍙�2'; + assetA2.Asset_loaner_category__c = '鍥哄畾璧勪骇'; + assetA2.CompanyOfEquipment__c = '123'; + assetA2.Internal_Asset_number__c = '123'; + assetA2.CurrentContract__c=MaintenanceContract[0].Id; + assetA2.InstallDate =Date.newInstance(2016, 5, 1); + + // assetA2.AssetManageConfirm__c = true; + // 淇濇湁璁惧A (闄勫睘鍝� 涓綋绠$悊) + Asset assetA3 = new Asset(Asset_Owner__c = 'Olympus'); + assetA3.RecordTypeId = System.Label.Asset_RecordType; + assetA3.SerialNumber = 'ass03'; + assetA3.Name = 'ass03'; + assetA3.AccountId = dep.Id; + assetA3.Department_Class__c = strategicDep[0].Id; + assetA3.Hospital__c = hospital.Id; + assetA3.Product2Id = pro3.Id; + assetA3.Quantity = 10; + assetA3.Status = '浣跨敤涓�'; + assetA3.Manage_type__c = '鏁伴噺绠$悊'; + assetA3.Loaner_accsessary__c = true; + assetA3.Product_category__c = 'GI'; + assetA3.Delete_Flag__c = false; + assetA3.Guarantee_period_for_products__c = toDayTime; + + assetA3.Freeze_sign__c = false; + assetA3.Out_of_wh__c = 3; + assetA3.Salesdepartment__c = '1.鍗庡寳钀ヤ笟鏈儴'; + assetA3.Internal_asset_location__c = '鍖椾含 澶囧搧涓績'; + assetA3.Product_category__c = 'GI'; + assetA3.Equipment_Type__c = '浜у搧璇曠敤'; + assetA3.SalesProvince__c = '鍖椾含'; + assetA3.WH_location__c = '璐ф灦鍙�3'; + assetA3.Abandoned_Inventory__c = 1; + assetA3.Asset_loaner_category__c = '鍥哄畾璧勪骇'; + assetA3.CompanyOfEquipment__c = '123'; + assetA3.Internal_Asset_number__c = '123'; + assetA3.CurrentContract__c=MaintenanceContract[0].Id; + + // 淇濇湁璁惧A (闄勫睘鍝� 鏁伴噺绠$悊) + Asset assetA4 = new Asset(Asset_Owner__c = 'Olympus'); + assetA4.RecordTypeId = System.Label.Asset_RecordType; + assetA4.SerialNumber = 'ass04'; + assetA4.Name = 'ass04'; + assetA4.AccountId = dep.Id; + assetA4.Department_Class__c = strategicDep[0].Id; + assetA4.Hospital__c = hospital.Id; + assetA4.Product2Id = pro4.Id; + assetA4.Quantity = 10; + assetA4.Guarantee_period_for_products__c = toDayTime; + assetA4.Status = '浣跨敤涓�'; + + assetA4.Manage_type__c = '鏁伴噺绠$悊'; + assetA4.Loaner_accsessary__c = true; + assetA4.Product_category__c = 'GI'; + assetA4.Delete_Flag__c = false; + assetA4.Freeze_sign__c = false; + assetA4.Out_of_wh__c = 3; + assetA4.Frozen_Quantity__c = 2; + assetA4.Salesdepartment__c = '1.鍗庡寳钀ヤ笟鏈儴'; + assetA4.Internal_asset_location__c = '鍖椾含 澶囧搧涓績'; + assetA4.Product_category__c = 'GI'; + assetA4.Equipment_Type__c = '浜у搧璇曠敤'; + assetA4.SalesProvince__c = '鍖椾含'; + assetA4.WH_location__c = '璐ф灦鍙�2'; + assetA4.Asset_loaner_category__c = '鍥哄畾璧勪骇'; + assetA4.CompanyOfEquipment__c = '123'; + assetA4.Internal_Asset_number__c = '123'; + assetA4.CurrentContract__c=MaintenanceContract[0].Id; + // assetA2.AssetManageConfirm__c = true; + + // 淇濇湁璁惧A (闄勫睘鍝� 鏁伴噺绠$悊) + Asset assetA5 = new Asset(Asset_Owner__c = 'Olympus'); + assetA5.RecordTypeId = System.Label.Asset_RecordType; + assetA5.SerialNumber = 'ass05'; + assetA5.Name = 'ass05'; + assetA5.AccountId = dep.Id; + assetA5.Department_Class__c = strategicDep[0].Id; + assetA5.Hospital__c = hospital.Id; + assetA5.Product2Id = pro5.Id; + assetA5.Quantity = 10; + assetA5.Status = '浣跨敤涓�'; + assetA5.Manage_type__c = '鏁伴噺绠$悊'; + assetA5.Loaner_accsessary__c = true; + assetA5.Product_category__c = 'GI'; + assetA5.Delete_Flag__c = false; + assetA5.Guarantee_period_for_products__c = toDayTime; + + assetA5.Freeze_sign__c = false; + assetA5.Out_of_wh__c = 3; + assetA5.Frozen_Quantity__c = 2; + assetA5.Salesdepartment__c = '1.鍗庡寳钀ヤ笟鏈儴'; + assetA5.Internal_asset_location__c = '鍖椾含 澶囧搧涓績'; + assetA5.Product_category__c = 'GI'; + assetA5.Equipment_Type__c = '浜у搧璇曠敤'; + assetA5.SalesProvince__c = '鍖椾含'; + assetA5.WH_location__c = '璐ф灦鍙�2'; + assetA5.Asset_loaner_category__c = '鍥哄畾璧勪骇'; + assetA5.CompanyOfEquipment__c = '123'; + assetA5.Internal_Asset_number__c = '123'; + assetA5.CurrentContract__c=MaintenanceContract[0].Id; + // assetA2.AssetManageConfirm__c = true; + Oly_TriggerHandler.bypass('AssetHandlerCheck'); + insert new Asset[] {assetA1, assetA2, assetA3,assetA4,assetA5}; + List<Asset> Assetss = new Asset[] {assetA1, assetA2, assetA3,assetA4,assetA5}; + + Maintenance_Contract_Asset__c mca = new Maintenance_Contract_Asset__c(); + // mca.Asset__c = Assetss[0].Id; + mca.Asset__c = assetA1.Id; + + mca.Maintenance_Contract__c = MaintenanceContract[0].Id; + mca.endDateGurantee_Text__c = Date.today().addDays(1); + mca.Summary_FZ__c = 200; + insert mca; + + System.assert(mca.Id != null); + + //缁翠慨琛ㄥ垱寤猴紙鍖呭惈鍦ㄧ淮淇〃鐨勪繚鏈夎澶囷級 + Repair__c repairObj1 = new Repair__c(); + repairObj1.Delivered_Product__c = Assetss[0].Id; + repairObj1.Discount_Price__c = 1000; + repairObj1.Hospital__c = hospital.Id; + repairObj1.Department_Class__c = strategicDep[0].Id; + repairObj1.Account__c = hospital.Id; + repairObj1.SalesOfficeCode_selection__c = '鍖椾含鐭虫櫙灞�'; + repairObj1.On_site_repair__c = 'RC淇悊'; + repairObj1.Failure_Occurrence_Date__c = Date.today(); + repairObj1.Agreed_Date__c = Date.today().addYears(-1); + repairObj1.Repair_List_Price__c = 2000; + + + // insert repairObj1; + + Repair__c repairObj2 = new Repair__c(); + repairObj2.Discount_Price__c = 2000; + repairObj2.Delivered_Product__c = Assetss[1].Id; + repairObj2.Hospital__c = hospital.Id; + repairObj2.Department_Class__c = strategicDep[0].Id; + repairObj2.Account__c = hospital.Id; + repairObj2.SalesOfficeCode_selection__c = '鍖椾含鐭虫櫙灞�'; + repairObj2.On_site_repair__c = 'RC淇悊'; + repairObj2.Failure_Occurrence_Date__c = Date.today(); + repairObj2.Agreed_Date__c = Date.today().addYears(-1); + repairObj2.Repair_List_Price__c = 1000; + + + Repair__c repairObj3 = new Repair__c(); + repairObj3.Discount_Price__c = 2000; + repairObj3.Delivered_Product__c = Assetss[2].Id; + repairObj3.Hospital__c = hospital.Id; + repairObj3.Department_Class__c = strategicDep[0].Id; + repairObj3.Account__c = hospital.Id; + repairObj3.SalesOfficeCode_selection__c = '鍖椾含鐭虫櫙灞�'; + repairObj3.On_site_repair__c = 'RC淇悊'; + repairObj3.Failure_Occurrence_Date__c = Date.today(); + repairObj3.Agreed_Date__c = Date.today().addYears(-1); + repairObj3.Repair_List_Price__c = 2000; + + + insert new Repair__c[] {repairObj1, repairObj2, repairObj3}; + + Repair_Quotation__c rq = new Repair_Quotation__c(); + rq.Name = 'testNFM104'; + rq.Repair__c = repairObj1.Id; + rq.MessageGroupNumber__c = '1'; + rq.ListPrice__c =2000; + insert rq; + // StaticParameter.RepairAgainAnStaTrigger = true; + } +} \ No newline at end of file diff --git a/force-app/main/default/classes/SummaryConsumptionRateBatchTest.cls-meta.xml b/force-app/main/default/classes/SummaryConsumptionRateBatchTest.cls-meta.xml new file mode 100644 index 0000000..91b23b8 --- /dev/null +++ b/force-app/main/default/classes/SummaryConsumptionRateBatchTest.cls-meta.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata"> + <apiVersion>46.0</apiVersion> + <status>Active</status> +</ApexClass> -- Gitblit v1.9.1