@isTest
public class LexLostSubmitApprovalControllerTest {
        private static User setupUser(){
                User u = new User(alias = 'manager', email='manager@acme.com',
                        emailencodingkey='UTF-8', lastname='manager',
                        languagelocalekey='en_US',
                        localesidkey='ja_JP', profileid = System.Label.ProfileId_SystemAdmin,
                        timezonesidkey='Asia/Shanghai',
                        username='manager@acme.com' + Datetime.now().getTime(),
                        ZongjianApprovalManager__c =  UserInfo.getUserId()
                    );
                insert u;
                return u;
            }
        static testMethod void LexLostSubmitApprovalControllerTest() {
        
        User u3 = new User();
                u3.LastName = '_サンブリッジ';
                u3.FirstName = 'う';
                u3.Alias = 'う';
                u3.Email = 'olympusTest03@sunbridge.com';
                u3.Username = 'olympusTest03@sunbridge.com';
                u3.CommunityNickname = 'う';
                u3.IsActive = true;
                u3.EmailEncodingKey = 'ISO-2022-JP';
                u3.TimeZoneSidKey = 'Asia/Tokyo';
                u3.LocaleSidKey = 'ja_JP';
                u3.LanguageLocaleKey = 'ja';
                u3.ProfileId = System.Label.ProfileId_SystemAdmin;
                // u3.Job_Category__c = '销售推广';
                u3.Job_Category__c = '销售服务';
                u3.Province__c = '北京市';
                u3.Use_Start_Date__c = Date.today().addMonths(-6);
                insert u3;

                Profile p = [select Id from Profile where id =:System.Label.ProfileId_SystemAdmin];
                User hpOwner = new User(Test_staff__c = true, LastName = 'hp', FirstName = 'owner', Alias = 'hp', CommunityNickname = 'hpOwner', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p.id);
                insert hpOwner;

                system.runAs(u3) {
                ControllerUtil.EscapeNFM001Trigger = true;
                // 客户
                Account hospital = new Account();
                // 记录类型ID
                // 01210000000QemGAAS
                hospital.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP'].id;
                // 客户名
                hospital.Name = '北京市医院';
                insert hospital;
                
                // 戦略科室を得る
                
                List<Account> strategicDep = [SELECT ID, Name FROM Account WHERE parentId = :hospital.Id AND recordType.DeveloperName = 'Department_Class_GI'];
                
                // 客户
                Account dep = new Account();
                // 01210000000Qfm7AAC
                // 记录类型ID
                dep.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_GI'].id;
                // 客户名
                dep.Name = 'test de/p';
                dep.ParentId = strategicDep[0].Id;
                // 战略科室分类
                dep.Department_Class__c = strategicDep[0].Id;
                // 医院
                dep.Hospital__c = hospital.Id;
                insert dep;

                

                // 产品
                Product2 pro1 = new Product2(Name='name01',IsActive=true,Family='GI',
                        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',IsActive=true,Family='GI',
                        Fixture_Model_No__c='n02',Serial_Lot_No__c='Lot tracing',
                        ProductCode_Ext__c='pc02',Manual_Entry__c=false);
                Product2 pro3 = new Product2(Name='name03',IsActive=true,Family='GI',
                        Fixture_Model_No__c='n03',Serial_Lot_No__c='Lot tracing',
                        ProductCode_Ext__c='pc03',Manual_Entry__c=false);
                insert new Product2[] {pro1, pro2, pro3};

                Product2 pro5 = new Product2(Name='name05',IsActive=true,Family='SP',
                        Fixture_Model_No__c='n05',Serial_Lot_No__c='S/N tracing',
                        Fixture_Model_No_T__c = 'n05',
                        ProductCode_Ext__c='pc05',Manual_Entry__c=false);
                insert pro5;

                // 保有设备A (主体)
                Asset assetA1 = new Asset(Asset_Owner__c = 'Olympus');
                assetA1.RecordTypeId = System.Label.Asset_RecordType;
                assetA1.SerialNumber = 'ass01';
                assetA1.Name = 'ass01';
                assetA1.AccountId = dep.Id;
                assetA1.Department_Class__c = strategicDep[0].Id;
                assetA1.Hospital__c = hospital.Id;
                assetA1.Product2Id = pro1.Id;
                assetA1.Quantity = 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.AssetManageConfirm__c = true;
        
                insert assetA1;

                // 保有设备C (只有附属品 个体管理)
                Asset assetC1 = new Asset(Asset_Owner__c = 'Olympus');
                assetC1.RecordTypeId = System.Label.Asset_RecordType;
                assetC1.SerialNumber = 'assetC1';
                assetC1.Name = 'assetC1';
                assetC1.AccountId = dep.Id;
                assetC1.Department_Class__c = strategicDep[0].Id;
                assetC1.Hospital__c = hospital.Id;
                assetC1.Product2Id = pro5.Id;
                assetC1.Quantity = 1;
                assetC1.Status = '有库存';
                assetC1.Manage_type__c = '个体管理';
                assetC1.Internal_asset_location__c = '北京 备品中心';
                assetC1.Loaner_accsessary__c = true;
                assetC1.Delete_Flag__c = false;
                assetC1.Freeze_sign__c = false;
                assetC1.Out_of_wh__c = 0;
                // 保有设备
                Asset asset = new Asset(Asset_Owner__c = 'Olympus');
                asset.RecordTypeId = System.Label.Asset_RecordType;
                asset.SerialNumber = 'asset';
                asset.Name = 'asset';
                asset.AccountId = dep.Id;
                asset.Department_Class__c = strategicDep[0].Id;
                asset.Hospital__c = hospital.Id;
                asset.Product2Id = pro5.Id;
                asset.Quantity = 1;
                asset.Status = '有库存';
                asset.Manage_type__c = '个体管理';
                asset.Internal_asset_location__c = '北京 备品中心';
                asset.Loaner_accsessary__c = true;
                asset.Delete_Flag__c = false;
                asset.Freeze_sign__c = false;
                asset.Out_of_wh__c = 0;
                insert new Asset[] {assetC1, asset};
                // 备品配套(只有附属品)
                Fixture_Set__c fsObjC1 = new Fixture_Set__c();
                fsObjC1.Name = 'setC1';
                fsObjC1.Fixture_Set_Body_Model_No__c = 'modelNoC1';
                fsObjC1.Loaner_name__c = 'nameC1';
                insert fsObjC1;

                //备品借出申请
                Rental_Apply__c raObj = new Rental_Apply__c();
                raObj.Name = 'testra';
                raObj.Product_category__c = 'GI';
                raObj.Demo_purpose1__c = '其他';
                raObj.demo_purpose2__c = '其他';
                raObj.Person_In_Charge__c = Userinfo.getUserId();
                raObj.applyUser__c = Userinfo.getUserId();
                raObj.Demo_purpose_text__c = '123';
                raObj.Request_shipping_day__c = Date.toDay();
                raObj.Request_return_day__c = Date.toDay();
                raObj.direct_send__c = '上门自提';
                raObj.Loaner_received_staff__c = '王五';
                raObj.Loaner_received_staff_phone__c = '110';
                raObj.pickup_time__c = System.now();
                insert raObj;

                // 借出备品配套一览
                Rental_Apply_Equipment_Set__c raesObjC1 = new Rental_Apply_Equipment_Set__c();
                raesObjC1.Rental_Apply__c = raObj.Id;
                raesObjC1.Fixture_Set__c = fsObjC1.Id;
                raesObjC1.Cancel_Select__c = false;
                raesObjC1.Shipment_request_time__c = Date.toDay();
                raesObjC1.Rental_Start_Date__c = Date.toDay();
                raesObjC1.Rental_End_Date__c = Date.toDay();
                raesObjC1.IndexFromUniqueKey__c = 1;
                raesObjC1.UniqueKey__c = '1:'+ fsObjC1.Id + ':1';
                insert raesObjC1;
                

                // 备品配套明细(只有附属品)
                Fixture_Set_Detail__c fsdObjC1 = new Fixture_Set_Detail__c();
                fsdObjC1.Name = 'detailAccessory';
                fsdObjC1.Name_CHN_Created__c = 'detailAccessoryName';
                fsdObjC1.Product2__c = pro5.Id;
                fsdObjC1.Fixture_Set__c = fsObjC1.Id;
                fsdObjC1.Is_Body__c = false;
                fsdObjC1.Is_Optional__c = true;
                fsdObjC1.UniqueKey__c = fsObjC1.Id + ':' + pro5.Id;
                fsdObjC1.SortInt__c = 1;
                insert fsdObjC1;

                // 借出备品配套一览明细
                Rental_Apply_Equipment_Set_Detail__c raesdObjC1 = new Rental_Apply_Equipment_Set_Detail__c();
                raesdObjC1.Rental_Apply__c = raObj.Id;
                raesdObjC1.Fixture_Set_Detail__c = fsdObjC1.Id;
                raesdObjC1.Rental_Num__c = 1;
                raesdObjC1.Queue_Number__c = null;
                raesdObjC1.Is_Body__c = false;
                raesdObjC1.Rental_Apply_Equipment_Set__c = raesObjC1.Id;
                raesdObjC1.Asset__c = assetC1.Id;
                raesdObjC1.IndexFromUniqueKey__c = 1;
                raesdObjC1.UniqueKey__c = '1:'+ raesObjC1.Id + ':' + fsdObjC1.Id + ':1';
                raesdObjC1.Salesdepartment_before__c = '0.备品中心';
                raesdObjC1.Internal_asset_location_before__c = '北京 备品中心';
                raesdObjC1.Product_category_text__c = 'GI';
                raesdObjC1.Equipment_Type_text__c = '产品试用';
                insert raesdObjC1;

                // 遗失报告
                LostReport__c lr = new LostReport__c();
                lr.Asset__c = assetA1.Id;
                insert lr;
                // 遗失报告明细
                LostReport_Detail__c lrd = new LostReport_Detail__c();
                lrd.LostReport__c = lr.Id;
                lrd.Asset__c = assetA1.Id;
                // 遗失报告明细和借出备品配套一览明细关联
                lrd.Rental_Apply_Equipment_Set_Detail__c=raesdObjC1.Id;
                insert lrd;

                lr.LostReport_approval_time__c = Datetime.now().addDays(-91);
                update lr;

                LexLostSubmitApprovalController.LexLostSubmitApprovalController(lr.Id);
                LexLostSubmitApprovalController.submit(lr.Id);

                }
        }

        static testMethod void LexCancelConsumDetailsCtlTest() {
                User u3 = new User();
                u3.LastName = '_サンブリッジ';
                u3.FirstName = 'う';
                u3.Alias = 'う';
                u3.Email = 'olympusTest03@sunbridge.com';
                u3.Username = 'olympusTest03@sunbridge.com';
                u3.CommunityNickname = 'う';
                u3.IsActive = true;
                u3.EmailEncodingKey = 'ISO-2022-JP';
                u3.TimeZoneSidKey = 'Asia/Tokyo';
                u3.LocaleSidKey = 'ja_JP';
                u3.LanguageLocaleKey = 'ja';
                u3.ProfileId = System.Label.ProfileId_SystemAdmin;
                // u3.Job_Category__c = '销售推广';
                u3.Job_Category__c = '销售服务';
                u3.Province__c = '北京市';
                u3.Use_Start_Date__c = Date.today().addMonths(-6);
                insert u3;

                Profile p = [select Id from Profile where id =:System.Label.ProfileId_SystemAdmin];
                User hpOwner = new User(Test_staff__c = true, LastName = 'hp', FirstName = 'owner', Alias = 'hp', CommunityNickname = 'hpOwner', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p.id);
                insert hpOwner;

                system.runAs(u3) {
                ControllerUtil.EscapeNFM001Trigger = true;
                // 客户
                Account hospital = new Account();
                // 记录类型ID
                // 01210000000QemGAAS
                hospital.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP'].id;
                // 客户名
                hospital.Name = '北京市医院';
                insert hospital;
                
                // 戦略科室を得る
                
                List<Account> strategicDep = [SELECT ID, Name FROM Account WHERE parentId = :hospital.Id AND recordType.DeveloperName = 'Department_Class_GI'];
                
                // 客户
                Account dep = new Account();
                // 01210000000Qfm7AAC
                // 记录类型ID
                dep.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_GI'].id;
                // 客户名
                dep.Name = 'test de/p';
                dep.ParentId = strategicDep[0].Id;
                // 战略科室分类
                dep.Department_Class__c = strategicDep[0].Id;
                // 医院
                dep.Hospital__c = hospital.Id;
                insert dep;

                

                // 产品
                Product2 pro1 = new Product2(Name='name01',IsActive=true,Family='GI',
                        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',IsActive=true,Family='GI',
                        Fixture_Model_No__c='n02',Serial_Lot_No__c='Lot tracing',
                        ProductCode_Ext__c='pc02',Manual_Entry__c=false);
                Product2 pro3 = new Product2(Name='name03',IsActive=true,Family='GI',
                        Fixture_Model_No__c='n03',Serial_Lot_No__c='Lot tracing',
                        ProductCode_Ext__c='pc03',Manual_Entry__c=false);
                insert new Product2[] {pro1, pro2, pro3};

                Product2 pro5 = new Product2(Name='name05',IsActive=true,Family='SP',
                        Fixture_Model_No__c='n05',Serial_Lot_No__c='S/N tracing',
                        Fixture_Model_No_T__c = 'n05',
                        ProductCode_Ext__c='pc05',Manual_Entry__c=false);
                insert pro5;

                // 保有设备A (主体)
                Asset assetA1 = new Asset(Asset_Owner__c = 'Olympus');
                assetA1.RecordTypeId = System.Label.Asset_RecordType;
                assetA1.SerialNumber = 'ass01';
                assetA1.Name = 'ass01';
                assetA1.AccountId = dep.Id;
                assetA1.Department_Class__c = strategicDep[0].Id;
                assetA1.Hospital__c = hospital.Id;
                assetA1.Product2Id = pro1.Id;
                assetA1.Quantity = 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.AssetManageConfirm__c = true;
        
                insert assetA1;

                // 保有设备C (只有附属品 个体管理)
                Asset assetC1 = new Asset(Asset_Owner__c = 'Olympus');
                assetC1.RecordTypeId = System.Label.Asset_RecordType;
                assetC1.SerialNumber = 'assetC1';
                assetC1.Name = 'assetC1';
                assetC1.AccountId = dep.Id;
                assetC1.Department_Class__c = strategicDep[0].Id;
                assetC1.Hospital__c = hospital.Id;
                assetC1.Product2Id = pro5.Id;
                assetC1.Quantity = 1;
                assetC1.Status = '有库存';
                assetC1.Manage_type__c = '个体管理';
                assetC1.Internal_asset_location__c = '北京 备品中心';
                assetC1.Loaner_accsessary__c = true;
                assetC1.Delete_Flag__c = false;
                assetC1.Freeze_sign__c = false;
                assetC1.Out_of_wh__c = 0;
                

                // 耗材备品申请
                Consum_Apply__c ca = new Consum_Apply__c();
                ca.DataMigration_Flag__c = true;
                insert ca;
                // 耗材备品配套一览
                Consum_Apply_Equipment_Set__c caes = new Consum_Apply_Equipment_Set__c();
                caes.Consum_Apply__c = ca.Id;
                caes.Consum_Start_Date__c = Date.today().addDays(20);
                caes.DataMigration_Flag__c = true;
                insert caes;
                LexCancelConsumDetailsCtl.init(ca.Id);
                LexCancelConsumDetailsCtl.splitApplyButton(ca.Id);
                LexCancelConsumDetailsCtl.init('');
                LexCancelConsumDetailsCtl.splitApplyButton('');
                }     
        }


        static testMethod void LexConsumApply_FromCampaignCtlTest(){
                Application_for_Conference_Adjudication__c aca = new Application_for_Conference_Adjudication__c();
                aca.MeetingApprovedNo__c            = 'ME154P03-0012';
                aca.Name                            = 'ME154P03-0012'; // 用决裁编号替代名称
                aca.CampaignTheme__c                = 'obpm发起赞助决裁';
                aca.Num__c                          = 'test1';
                aca.StartDate__c                    = NFMUtil.parseDateTimeStr2Date('2022-04-19');
                aca.EndDate__c                      = NFMUtil.parseDateTimeStr2Date('2022-04-22');
                aca.Implementation_Purpose1__c                   = '其他';
                aca.OfficeCategory__c               = '1.消化科';
                aca.MeetingType__c                  = '主办会';
                aca.StateMaster__c                  = '北京市';
                aca.CityMaster__c                   = '北京市';
                aca.WorkshopPlace__c                = 'CTEC';
                aca.HostName__c                     = '医学会';
                aca.CooperatorCompany__c            = '中华医学会';
                aca.ConveningParticipantsNum__c     = 0;
                aca.IsPaidToSponsor__c              = '否';
                aca.SponsorshipCategory__c          = '资金';
                aca.ExpectedOlympusAttendance__c    = 0;
                aca.ActivityTypeName__c             = '自主主办会';
                aca.ExpectedHcpAttendance__c        = 0;
                aca.ProcessState__c                 = '草稿';
                aca.Type_of_adjudication_meeting__c = '线下';
                aca.Activities_of_a_share__c        = '否';
                aca.IsSupplemental__c = true;

                insert aca;

                Campaign cam = new Campaign();
                Id RtId = Schema.SObjectType.Campaign.getRecordTypeInfosByDeveloperName().get('Society').getRecordTypeId();
                // Id RtId2 = Schema.SObjectType.CampaignMember.getRecordTypeInfosByDeveloperName().get('WorkShop').getRecordTypeId();
                cam.RecordTypeId                     = RtId;
                // cam.CampaignMemberRecordTypeId       = RtId2;

                cam.Name                             = aca.MeetingApprovedNo__c;
                cam.Name2__c                         = aca.MeetingApprovedNo__c;
                cam.MeetingApprovedNo__c             = aca.MeetingApprovedNo__c;
                cam.Meeting_Approved_No__c           = aca.Id;
                cam.StartDate                        = aca.StartDate__c;
                cam.EndDate                          = aca.EndDate__c;
                cam.Implementation_Purpose__c                   = aca.Implementation_Purpose1__c;
                cam.OfficeCategory__c                = aca.OfficeCategory__c;
                cam.Meeting_Type__c                  = aca.MeetingType__c;
                cam.Activity_Type_Name__c            = aca.ActivityTypeName__c;
                
                cam.WorkshopPlace__c                 = aca.WorkshopPlace__c;
                cam.HostName__c                      = aca.HostName__c;
                cam.cooperatorCompany__c             = aca.CooperatorCompany__c;
                cam.Convening_Participants_Num__c    = aca.ConveningParticipantsNum__c;
                cam.IF_Approved__c                   = true;

                // OBPM对接 新增字段
                cam.Expected_Olympus_Attendance__c   = aca.ExpectedOlympusAttendance__c;
                cam.Expected_Hcp_Attendance__c       = aca.ExpectedHcpAttendance__c;
                cam.SponsorshipCategory__c           = aca.SponsorshipCategory__c;
                cam.IsPaidToSponsor__c               = aca.IsPaidToSponsor__c;
                cam.Activity_Type_Name__c            = aca.ActivityTypeName__c;
                cam.Is_LendProduct__c                = '是';
                cam.PlanBackData__c                  = NFMUtil.parseDateTimeStr2Date('2022-04-30');
                cam.LoadNum__c                       = 'CV-290*1; GI-290镜子*1;';
                insert cam;

                User u = setupUser();
                System.runAs(u){
                        LexConsumApply_FromCampaignCtl.init(cam.Id);
                        LexConsumApply_FromCampaignCtl.rentalApp();
                        LexConsumApply_FromCampaignCtl.UserInfo_Owner();
                }
        }

        static testMethod void lexConsumablesLostControllerTest(){
                Consum_Apply__c oObj = new Consum_Apply__c();
                oObj.DataMigration_Flag__c = true;
                insert oObj;
                User u = setupUser();
                System.runAs(u){
                        lexConsumablesLostController.lexConsumablesLostController(oObj.Id);
                }
        }

        static testMethod void lexConsumApply_FromRACtlTest(){
                  //前置数据
                User u = setupUser();
                System.runAs(u){

                        StaticParameter.EscapeNFM001AgencyContractTrigger = true;
                        ControllerUtil.EscapeNFM001Trigger = true;
                        Oly_TriggerHandler.bypass('AssetHandler');
                        Oly_TriggerHandler.bypass('PowerBIBaseHandler');
                        Oly_TriggerHandler.bypass('AgencyOppUpdHandler');
                        Oly_TriggerHandler.bypass('UpdateContractAimAmountHandler');
                        
                        Oly_TriggerHandler.bypass(ContactTriggerHandler.class.getName());
                        Oly_TriggerHandler.bypass(AgencyHospitalHandler.class.getName());
                        String flag='NG2';
                        String d1='产品试用';
                        String dept='医疗华北营业本部';
                        User user = new User(Test_staff__c = true);
                        user.LastName = '_サンブリッジ';
                        user.FirstName = 'う';
                        user.Alias = 'う';
                        user.Email = 'olympusTest03@sunbridge.com';
                        user.Username = 'olympusTest03@sunbridge.com';
                        user.CommunityNickname = 'う';
                        user.IsActive = true;
                        user.EmailEncodingKey = 'ISO-2022-JP';
                        user.TimeZoneSidKey = 'Asia/Tokyo';
                        user.LocaleSidKey = 'ja_JP';
                        user.LanguageLocaleKey = 'ja';
                        user.ProfileId = System.Label.ProfileId_SystemAdmin;
                        user.Province__c = '北京';
                        user.Dept__c = dept;
                        user.Use_Start_Date__c = Date.today().addMonths(-6);
                        insert user;
                        // 省
                        Address_Level__c al = new Address_Level__c();
                        al.Name = '東京';
                        al.Level1_Code__c = 'CN-99';
                        al.Level1_Sys_No__c = '999999';
                        insert al;
                        // 市
                        Address_Level2__c al2 = new Address_Level2__c();
                        al2.Level1_Code__c = 'CN-99';
                        al2.Level1_Sys_No__c = '999999';
                        al2.Level1_Name__c = '東京';
                        al2.Name = '渋谷区';
                        al2.Level2_Code__c = 'CN-9999';
                        al2.Level2_Sys_No__c = '9999999';
                        al2.Address_Level__c = al.id;
                        insert al2;
                        // 病院を作る
                        Account hospital = new Account();
                        hospital.recordtypeId = Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('HP').getRecordTypeId();
                        hospital.Name = 'test hospital';
                        hospital.Is_Active__c = '有効';
                        hospital.Attribute_Type__c = '卫生部';
                        hospital.Speciality_Type__c = '综合医院';
                        hospital.Grade__c = '一级';
                        hospital.OCM_Category__c = 'SLTV';
                        hospital.Is_Medical__c = '医疗机构';
                        hospital.State_Master__c = al.id;
                        hospital.City_Master__c = al2.id;
                        hospital.Town__c = '东京';
                        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 = Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('Department_OTH').getRecordTypeId();
                        dep.Name = 'test dep1';
                        dep.AgentCode_Ext__c = '9999999';
                        dep.ParentId = strategicDep[0].Id;
                        dep.Department_Class__c = strategicDep[0].Id;
                        dep.Hospital__c = hospital.Id;
                        insert dep;
        
                        Contact contact2 = new Contact();
                        contact2.AccountId = dep.Id;
                        contact2.FirstName = '責任者';
                        contact2.LastName = 'test1经销商';
                        insert contact2;
        
                        Product2 pro1 = new Product2(Name='name01',IsActive=true,Family='GI',
                                Fixture_Model_No__c='n01',Serial_Lot_No__c='S/N tracing',
                                Fixture_Model_No_T__c = 'n01', Asset_Model_No__c = 'Pro1',
                                ProductCode_Ext__c='pc01',Manual_Entry__c=false);
                        Product2 pro2 = new Product2(Name='name02',IsActive=true,Family='GI',
                                Fixture_Model_No__c='n02',Serial_Lot_No__c='Lot tracing',
                                Fixture_Model_No_T__c = 'n02', Asset_Model_No__c = 'Pro2',
                                ProductCode_Ext__c='pc02',Manual_Entry__c=false);
                        Product2 pro3 = new Product2(Name='name03',IsActive=true,Family='GI',
                                Fixture_Model_No__c='n03',Serial_Lot_No__c='Lot tracing',
                                Fixture_Model_No_T__c = 'n03', Asset_Model_No__c = 'Pro3',
                                ProductCode_Ext__c='pc03',Manual_Entry__c=false);
                        Product2 pro4 = new Product2(Name='name04',IsActive=true,Family='GI',
                                Fixture_Model_No__c='n04',Serial_Lot_No__c='Lot tracing',
                                Fixture_Model_No_T__c = 'n04', Asset_Model_No__c = 'Pro4',
                                ProductCode_Ext__c='pc04',Manual_Entry__c=false);
                        insert new Product2[] {pro1, pro2, pro3, pro4};
        
        
                        //备品借出申请
                        Rental_Apply__c raObj = new Rental_Apply__c();
                        raObj.Name = 'testra';
                        raObj.OwnerId = user.Id;
                        raObj.Product_category__c = 'GI';
                        raObj.Demo_purpose1__c ='产品试用';
                        raObj.demo_purpose2__c = '试用(无询价)';
                        raObj.direct_send__c = '医疗机构';
                        raObj.Loaner_received_staff__c = '王五';
                        raObj.Loaner_received_staff_phone__c = '110';
                        raObj.direct_shippment_address__c = '北京市';
                        raObj.Hospital__c = hospital.Id;
                        raObj.Strategic_dept__c = strategicDep[0].Id;
                        raObj.Account__c = dep.Id;
                        raObj.Request_shipping_day__c = Date.toDay();
                        raObj.Hope_Lonaer_date_Num__c = 16;
                        //raObj.Request_return_day__c = Date.toDay();
                        raObj.Phone_number__c = '1234567890';
                        raObj.Request_approval_time__c = Datetime.newInstance(1970, 1, 1);
                        raObj.Loaner_medical_Staff__c = contact2.Id;
                        if ('协议借用' == d1) {
                                raObj.DB_loaner_request__c = '123';
                                raObj.AgreementBorrowingExtensionDate__c = Date.today().addDays(10);
                                if (false) {
                                raObj.AgreementBorrowingExtensionDate__c = Date.today().addDays(-1);
                                }
                        }
                        insert raObj;
                        lexConsumApply_FromRACtl.init(raObj.Id);
                //         Asset asset1 = new Asset(Asset_Owner__c = 'Olympus');
                //         // 保有设备
                //         asset1.RecordTypeId = System.Label.Asset_RecordType;
                //         asset1.SerialNumber = 'asset1';
                //         asset1.Name = 'asset1';
                //         asset1.AccountId = dep.Id;
                //         asset1.Department_Class__c = strategicDep[0].Id;
                //         asset1.Hospital__c = hospital.Id;
                //         asset1.Product2Id = pro1.Id;
                //         asset1.Quantity = 1;
                //         asset1.Status = '不明';
                //         asset1.Manage_type__c = '个体管理';
                //         asset1.Loaner_accsessary__c = false;
                //         asset1.Out_of_wh__c = 0;
                //         asset1.Salesdepartment__c = '1.华北营业本部';
                //         asset1.Internal_asset_location__c = '北京 备品中心';
                //         asset1.Product_category__c = 'GI';
                //         asset1.Equipment_Type__c = '产品试用';
                //         asset1.SalesProvince__c = '北京';
                //         asset1.CompanyOfEquipment__c = '北京';
                //         asset1.Internal_Asset_number__c = '0001';
                //         asset1.WH_location__c = '货架号1';
                //         insert new Asset[] {asset1};
                // // 修理を作成する01
                // Repair__c repair01 = new Repair__c();
                // repair01.Account__c = dep.Id;
                // repair01.Department_Class__c = strategicDep[0].Id;
                // repair01.Hospital__c = hospital.Id;
                // repair01.Delivered_Product__c = asset1.Id;
                // repair01.SERVICE_CONTRACT_JUDEGE_DAY__C = Date.today().addDays( -11);   // 维修合同判断日がサービス契約開始日の前日
                // repair01.Repair_Start_Date__c = Date.today().addDays(-9);
                // repair01.Repair_Final_Inspection_Date__c = null;
                // repair01.Repair_Ordered_Date__c = Date.today();
                // repair01.SAP_not_accept_repair_result__c = Date.today();

                // insert repair01;
               

                
                // Date toDate = Date.today();
                // String RecordTypeId = Schema.SObjectType.QIS_Report__c.getRecordTypeInfosByDeveloperName().get('QISRecordType1').getRecordTypeId();
                // System.debug(RecordTypeId);
                // QIS_Report__c qis = new QIS_Report__c();
                // qis.RecordTypeId = RecordTypeId;
                // qis.Name = 'Test';
                // qis.QIS_Status__c='OSH检测中';
                // qis.OwnerId='00510000001R56KAAS';
                // qis.CDS_date__c=Date.today();
                // qis.OCSMAdministrativeReportDate__c=Date.today();
                // qis.Aware_date__c=Date.today();
                // qis.QIS_Submit_day__c=Date.today().addMonths(6);
                // qis.OCSMAdministrativeReportNumber__c='00510000001R56KAAS';
                // qis.OCSMAdministrativeReportStatus__c='无需报告';
                // qis.isAE_Profile__c='YES';
                // qis.isPAE_Profile__c='YES';
                // qis.next_action__c='无偿维修';
                // qis.QIS_SC_Report__c='a3w10000000U6frAAC';
                // qis.nonyushohin__c='02i10000004u0jVAAQ';
                // qis.IsSendQIS__c=false;
                // insert qis;
                
                // //新建备品借出申请-保修用户
                // Rental_Apply__c raObj1 = new Rental_Apply__c();
                // raObj1.Name='*';
                // raObj1.Product_category__c = 'GI';
                // //raObj.Person_In_Charge__c = MyUser_Test.id;
                // //raObj.applyUser__c =  MyUser_Test.id;
                // raObj1.Person_In_Charge__c = user.Id;
                // raObj1.applyUser__c =  user.Id;
                // raObj1.Hospital__c = hospital.Id;//医院
                // raObj1.Strategic_dept__c = strategicDep[0].id;//战略科室
                // raObj1.Demo_purpose1__c = '维修代用';
                // raObj1.demo_purpose2__c ='索赔QIS';
                // raObj1.Demo_purpose_text__c ='测试用的备品借出申请';
                // raObj1.Request_shipping_day__c = Date.today()+5;
                // raObj1.QIS_number__c = qis.Id;
                // raObj1.QISRepair__c = repair01.Id;
                // // raObj.Hope_Lonaer_date_Num__c = 16;
                // //raObj.Request_return_day__c = Date.today() +20;
                // raObj1.Loaner_received_staff__c = '测试用户';
                // raObj1.Loaner_received_staff_phone__c = '13700008';
                // raObj1.direct_send__c = '上门自提';
                // raObj1.Repair__c = repair01.id;
                // // raObj.Statu_Achievements__c = Sac.id;
                // raObj1.Account__c = dep.id;//科室
                // raObj1.pickup_time__c = Datetime.now()+8;
                // raObj1.direct_shippment_address__c = '233333的地址';
                // raObj1.Phone_number__c = '1234567890';
                // raObj1.Loaner_medical_Staff__c = contact2.Id;
                // raObj1.Status__c = '草案中';
                // insert raObj1;
                lexConsumApply_FromRACtl.UserInfo_Owner();
                lexConsumApply_FromRACtl.fieldDefineApp();
                }

        }
        static testMethod void  LexConsumApply_FromQISCtlTest(){
                // 客户
                Account hospital = new Account();
                // 记录类型ID
                // 01210000000QemGAAS
                hospital.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP'].id;
                // 客户名
                hospital.Name = '北京市医院';
                insert hospital;
                
                // 戦略科室を得る
                
                List<Account> strategicDep = [SELECT ID, Name FROM Account WHERE parentId = :hospital.Id AND recordType.DeveloperName = 'Department_Class_GI'];
                
                // 客户
                Account dep = new Account();
                // 01210000000Qfm7AAC
                // 记录类型ID
                dep.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_GI'].id;
                // 客户名
                dep.Name = 'test de/p';
                dep.ParentId = strategicDep[0].Id;
                // 战略科室分类
                dep.Department_Class__c = strategicDep[0].Id;
                // 医院
                dep.Hospital__c = hospital.Id;
                insert dep;

                RecordType rectOpp = [select id from RecordType where IsActive = true and SobjectType = 'Opportunity' and DeveloperName = 'Opportunity' ];
                Opportunity opp = new Opportunity(
                        Name='testOpp1',
                        StageName='引合',
                        CloseDate=Date.today(),
                        AccountId=dep.Id,
                        Sales_Root__c = 'OCM直接販売',
                        Competitor__c ='A',
                        Click_Close_Date__c = null,
                        RecordType = rectOpp
                );
                insert opp;

                Statu_Achievements__c Sac = new Statu_Achievements__c(
                        name = 'zhucan_one',
                        Opportunity__c = opp.id,
                        DeliveryDate__c = Date.today(),
                        ContractNO__c = 'ContractNO1',
                        ContractAmount__c = 1234
                );

                // 设备
                Asset asset = new Asset();
                asset.Name = '测试机器';
                asset.AccountId = dep.Id;
                asset.Department_Class__c = strategicDep[0].Id;
                asset.Hospital__c = hospital.Id;
                asset.SerialNumber = 'testserial';
                asset.Backorder__c = Sac.Id;
                insert asset;

                String RecordTypeId = Schema.SObjectType.QIS_Report__c.getRecordTypeInfosByDeveloperName().get('QISRecordType1').getRecordTypeId();
                System.debug(RecordTypeId);
                //QIS
                QIS_Report__c qis = new QIS_Report__c();
                qis.nonyushohin__c = asset.Id;
                qis.Hospital__c = hospital.Id;
                qis.RC__c = UserInfo.getUserId();
                qis.Department_Class__c = strategicDep[0].Id;
                qis.Hospital_Department__c = dep.Id;
                qis.Damage_For_Doc_Or_Pat__c = '有';
                qis.Relation_With_The_Problem__c = '有可能';
                qis.Report_For_Goz__c = '不知道';
                insert qis;

                // QIS_Report__c qis = new QIS_Report__c();
                // qis.RecordTypeId = RecordTypeId;
                // qis.Name = 'Test';
                // qis.QIS_Status__c='OSH检测中';
                // qis.OwnerId='00510000001R56KAAS';
                // qis.CDS_date__c=Date.today();
                // qis.OCSMAdministrativeReportDate__c=Date.today();
                // qis.Aware_date__c=Date.today();
                // qis.QIS_Submit_day__c=Date.today().addMonths(6);
                // qis.OCSMAdministrativeReportNumber__c='00510000001R56KAAS';
                // qis.OCSMAdministrativeReportStatus__c='无需报告';
                // qis.isAE_Profile__c='YES';
                // qis.isPAE_Profile__c='YES';
                // qis.next_action__c='无偿维修';
                // qis.QIS_SC_Report__c='a3w10000000U6frAAC';
                // qis.nonyushohin__c='02i10000004u0jVAAQ';
                // qis.IsSendQIS__c=false;
                // insert qis;
                User u = setupUser();
                System.runAs(u){
                        LexConsumApply_FromQISCtl.rentalApp(qis.Id);
                        LexConsumApply_FromQISCtl.fieldDefineApp();
                        LexConsumApply_FromQISCtl.UserInfo_Owner();
                        LexConsumApply_FromQISCtl.init(qis.Id);
                }
        }  
        static testMethod void  lexConsumApply_FromOPDPlanCtlTest(){
                User u3 = new User();
                u3.LastName = '_サンブリッジ';
                u3.FirstName = 'う';
                u3.Alias = 'う';
                // u3.Email = 'olympusTest03@sunbridge.com';
                u3.Email = 'buli@deloitte.com.cn';
                u3.Username = 'olympusTest03@sunbridge.com';
                u3.CommunityNickname = 'う';
                u3.IsActive = true;
                u3.EmailEncodingKey = 'ISO-2022-JP';
                u3.TimeZoneSidKey = 'Asia/Tokyo';
                u3.LocaleSidKey = 'ja_JP';
                u3.LanguageLocaleKey = 'ja';
                u3.ProfileId = System.Label.ProfileId_SystemAdmin;
                // u3.Job_Category__c = '销售推广';
                u3.Job_Category__c = '销售服务';
                u3.Province__c = '北京市';
                u3.Use_Start_Date__c = Date.today().addMonths(-6);
                insert u3;
        
                Profile p = [select Id from Profile where id =:System.Label.ProfileId_SystemAdmin];
                User hpOwner = new User(Test_staff__c = true, LastName = 'hp', FirstName = 'owner', Alias = 'hp', CommunityNickname = 'hpOwner', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p.id);
                insert hpOwner;
        
                system.runAs(u3) {
                ControllerUtil.EscapeNFM001Trigger = true;
                // 客户
                Account hospital = new Account();
                // 记录类型ID
                // 01210000000QemGAAS
                hospital.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP'].id;
                // 客户名
                hospital.Name = '北京市医院';
                insert hospital;
                
                // 戦略科室を得る
                
                List<Account> strategicDep = [SELECT ID, Name FROM Account WHERE parentId = :hospital.Id AND recordType.DeveloperName = 'Department_Class_GI'];
                
                // 客户
                Account dep = new Account();
                // 01210000000Qfm7AAC
                // 记录类型ID
                dep.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_GI'].id;
                // 客户名
                dep.Name = 'test de/p';
                dep.ParentId = strategicDep[0].Id;
                // 战略科室分类
                dep.Department_Class__c = strategicDep[0].Id;
                // 医院
                dep.Hospital__c = hospital.Id;
                insert dep;
        
                Application_for_Conference_Adjudication__c aca = new Application_for_Conference_Adjudication__c();
                aca.MeetingApprovedNo__c            = 'ME154P03-0012';
                aca.Name                            = 'ME154P03-0012'; // 用决裁编号替代名称
                aca.CampaignTheme__c                = 'obpm发起赞助决裁';
                aca.Num__c                          = 'test1';
                aca.StartDate__c                    = NFMUtil.parseDateTimeStr2Date('2022-04-19');
                aca.EndDate__c                      = NFMUtil.parseDateTimeStr2Date('2022-04-22');
                aca.Implementation_Purpose1__c                   = '其他';
                aca.OfficeCategory__c               = '1.消化科';
                aca.MeetingType__c                  = '主办会';
                aca.StateMaster__c                  = '北京市';
                aca.CityMaster__c                   = '北京市';
                aca.WorkshopPlace__c                = 'CTEC';
                aca.HostName__c                     = '医学会';
                aca.CooperatorCompany__c            = '中华医学会';
                aca.ConveningParticipantsNum__c     = 0;
                aca.IsPaidToSponsor__c              = '否';
                aca.SponsorshipCategory__c          = '资金';
                aca.ExpectedOlympusAttendance__c    = 0;
                aca.ActivityTypeName__c             = '自主主办会';
                aca.ExpectedHcpAttendance__c        = 0;
                aca.ProcessState__c                 = '草稿';
                aca.Type_of_adjudication_meeting__c = '线下';
                aca.Activities_of_a_share__c        = '否';
                aca.IsSupplemental__c = false;
        
                insert aca;
        
                Campaign cam = new Campaign();
                Id RtId = Schema.SObjectType.Campaign.getRecordTypeInfosByDeveloperName().get('Society').getRecordTypeId();
                // Id RtId2 = Schema.SObjectType.CampaignMember.getRecordTypeInfosByDeveloperName().get('WorkShop').getRecordTypeId();
                cam.RecordTypeId                     = RtId;
                // cam.CampaignMemberRecordTypeId       = RtId2;
        
                cam.Name                             = aca.MeetingApprovedNo__c;
                cam.Name2__c                         = aca.MeetingApprovedNo__c;
                cam.MeetingApprovedNo__c             = aca.MeetingApprovedNo__c;
                cam.Meeting_Approved_No__c           = aca.Id;
                cam.StartDate                        = aca.StartDate__c;
                cam.EndDate                          = aca.EndDate__c;
                cam.Implementation_Purpose__c                   = aca.Implementation_Purpose1__c;
                cam.OfficeCategory__c                = aca.OfficeCategory__c;
                cam.Meeting_Type__c                  = aca.MeetingType__c;
                cam.Activity_Type_Name__c            = aca.ActivityTypeName__c;
                
                cam.WorkshopPlace__c                 = aca.WorkshopPlace__c;
                cam.HostName__c                      = aca.HostName__c;
                cam.cooperatorCompany__c             = aca.CooperatorCompany__c;
                cam.Convening_Participants_Num__c    = aca.ConveningParticipantsNum__c;
                cam.IF_Approved__c                   = true;
        
                // OBPM对接 新增字段
                cam.Expected_Olympus_Attendance__c   = aca.ExpectedOlympusAttendance__c;
                cam.Expected_Hcp_Attendance__c       = aca.ExpectedHcpAttendance__c;
                cam.SponsorshipCategory__c           = aca.SponsorshipCategory__c;
                cam.IsPaidToSponsor__c               = aca.IsPaidToSponsor__c;
                cam.Activity_Type_Name__c            = aca.ActivityTypeName__c;
                cam.Is_LendProduct__c                = '是';
                cam.PlanBackData__c                  = NFMUtil.parseDateTimeStr2Date('2022-04-30');
                cam.LoadNum__c                       = 'CV-290*1; GI-290镜子*1;';
                insert cam;
        
                
           
                //备品借出申请
                Rental_Apply__c raObj = new Rental_Apply__c();
                raObj.Name = 'testra';
                raObj.Product_category__c = 'GI';
                raObj.Demo_purpose1__c = '其他';
                raObj.demo_purpose2__c = '其他';
                raObj.Person_In_Charge__c = Userinfo.getUserId();
                raObj.applyUser__c = Userinfo.getUserId();
                raObj.Demo_purpose_text__c = '123';
                raObj.Request_shipping_day__c = Date.toDay();
                raObj.Request_return_day__c = Date.toDay();
                raObj.direct_send__c = '上门自提';
                raObj.Loaner_received_staff__c = '王五';
                raObj.Loaner_received_staff_phone__c = '110';
                raObj.pickup_time__c = System.now();
                insert raObj;     
                
                OPDPlan__c opd = new OPDPlan__c();
                opd.OPDPlan_ImplementDate_temp__c  =  cam.StartDate ;
                opd.Campaign__c = cam.Id ;
                opd.Status__c = '计划中';
                opd.OwnerId = cam.OwnerId;
                opd.PlanProdDetail__c = cam.LoadNum__c;
                opd.OPDType__c = '学会';
                // opd.Meeting_Cooperate__c = cam.Meeting_Cooperate__c;
                // opd.Meeting_Cooperate2__c = cam.Meeting_Cooperate2__c;
                // opd.Meeting_Cooperate3__c = cam.Meeting_Cooperate3__c;
                // opd.Meeting_Cooperate4__c = cam.Meeting_Cooperate4__c;
                // opd.Open_scope__c = cam.Open_scope__c;
                opd.IF_Approved__c = cam.IF_Approved__c;//是否申请决裁
                opd.Approved_Status__c = cam.Approved_Status__c;//决裁状态
                opd.Approved_No__c = aca.Id;
                opd.OwnerId = u3.Id;
                insert opd;
        
                raObj.OPDPlan__c=opd.Id;
                upsert raObj;
        
                aca.ProcessState__c = '驳回';
                aca.Num__c = cam.Num__c;
                update aca;
                lexConsumApply_FromOPDPlanCtl.fieldDefineApp();
                lexConsumApply_FromOPDPlanCtl.UserInfo_Owner();
                lexConsumApply_FromOPDPlanCtl.init(opd.Id);
                }  
        }
static testMethod void  lexConsumApply_FromAccountCtlTest(){
        List<RecordType> rectHp = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];
        Profile prof = [select Id from Profile where id =:System.Label.ProfileId_SystemAdmin];
        User hpOwner = new User(Test_staff__c = true, LastName = 'hp', FirstName = 'owner', Alias = 'hp', CommunityNickname = 'hpOwner', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = prof.id);
        insert hpOwner;
        Account myAccount1 = new Account(name='testaccount001',RecordTypeId = rectHp[0].Id,OwnerId = hpOwner.Id );
        insert myAccount1;
        User u = setupUser();
        lexConsumApply_FromAccountCtl.fieldDefineApp();
        lexConsumApply_FromAccountCtl.UserInfo_Owner();
        lexConsumApply_FromAccountCtl.init(myAccount1.Id);

}

}