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