高章伟
2023-03-03 d8dc84a3d56df839895f1c417a4d9cbee763d262
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
@isTest
private class AmountCalculationFMTest {
    private static Id pricebookId = ControllerUtil.getStandardPricebook().Id;
 
    static testMethod void testMethod1() {
            // 病院を作る
        Account hospital = new Account();
        // RecordTypeId = '01210000000QemG'
        hospital.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP'].id;
        // hospital.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and Id='01210000000QemG'].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;
            
            // 戦略科室を得る
            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;
            
            // 製品を作る
            Product2 productA = new Product2( Name='テスト商品', Maintenance_Price_Year__c = 12000, Manual_Entry__c = false,Intra_Trade_Gurantee_RMB_2__c = 6500.00 ,
                            Intra_Trade_Gurantee_RMB_Date2__c = Date.toDay().addMonths(-1),
                            Intra_Trade_Gurantee_RMB_End_Date2__c = Date.toDay().addMonths(24));
            insert productA;
 
            
            // 価格表エントリを作成する        
            PricebookEntry entry = new PricebookEntry( Pricebook2Id=pricebookId, Product2Id=productA.Id);
            entry.UnitPrice = 0;
            entry.IsActive = true;
            entry.UseStandardPrice = false;
            entry.CurrencyIsoCode = 'CNY';
            entry.Product2Id = productA.Id;
            insert entry;
            
            // 納入機器を作成する
            // Asset asset01 = createAsset('asset01', dep.Id, strategicDep[0].Id, hospital.Id, '00001', productA.Id,'主机');
            Asset asset01 = new Asset(Asset_Owner__c ='病院資産');
                asset01.RecordTypeId = System.Label.Asset_RecordType;
                asset01.SerialNumber = 'ass01';
                asset01.Name = 'ass01';
                asset01.AccountId = dep.Id;
                asset01.Guarantee_period_for_products__c = Date.today();
                asset01.Department_Class__c = strategicDep[0].Id;
                asset01.Hospital__c = hospital.Id;
                asset01.Product2Id = productA.Id;
                asset01.Quantity = 1;
        // asset01.Asset_Year__c = Date.today().addYears(-1);
        
                asset01.Status = '使用中';
                asset01.Manage_type__c = '个体管理';
                asset01.Loaner_accsessary__c = false;
                asset01.Product_category__c = 'GI';
                asset01.Delete_Flag__c = false;
                asset01.Freeze_sign__c = false;
                asset01.Out_of_wh__c = 0;
                asset01.Salesdepartment__c = '1.华北营业本部';
                asset01.Internal_asset_location__c = '北京 备品中心';
                asset01.Product_category__c = 'GI';
                asset01.Equipment_Type__c = '产品试用';
                asset01.SalesProvince__c = '北京';
                asset01.WH_location__c = '货架号1';
                asset01.Asset_loaner_category__c = '固定资产';
                asset01.CompanyOfEquipment__c = '123';
                 asset01.Internal_Asset_number__c = '123';
                asset01.InstallDate =Date.newInstance(2021, 5, 1);
                asset01.Maintenance_Price_Year__c = 999;
            insert asset01;
            // 维修合同を作成する
            Maintenance_Contract__c contract = new Maintenance_Contract__c();
            contract.Name = 'tect contract';
            contract.Hospital__c = hospital.Id;
            contract.Department_Class__c = strategicDep[0].Id;
            contract.Department__c = dep.Id;
            insert contract;
           
            
            // 维修合同报价を作成する
            Maintenance_Contract_Estimate__c contactEsti1 = new Maintenance_Contract_Estimate__c(
                Name = 'contract estimate 1',
                Contract_Esti_Start_Date__c = Date.today(),
                Contract_Range__c = 2,
                Maintenance_Contract__c = contract.Id
            );
            Maintenance_Contract_Estimate__c contactEsti2 = new Maintenance_Contract_Estimate__c(
                Name = 'contract estimate 2',
                Contract_Esti_Start_Date__c = Date.today().addMonths(6),
                Contract_Range__c = 3,
                Maintenance_Contract__c = contract.Id
            );
            
            insert new Maintenance_Contract_Estimate__c[] {contactEsti1, contactEsti2};
 
            Maintenance_Contract_Asset__c mca1 = new Maintenance_Contract_Asset__c();
            mca1.Asset__c = asset01.Id;
            mca1.Estimate_List_Price__c = 100;
            mca1.Maintenance_Contract__c = contract.Id;
            
            Maintenance_Contract_Asset__c mca2 = new Maintenance_Contract_Asset__c();
            mca2.Asset__c = asset01.Id;
            mca2.Estimate_List_Price__c = 100;
            mca2.Maintenance_Contract__c = contract.Id;
            
            insert new Maintenance_Contract_Asset__c[] {mca1, mca2};
 
 
            productA.Intra_Trade_Gurantee_RMB_Date2__c = Date.toDay().addMonths(-2);
            update productA;
                    
    }
 
}