@isTest private class OpportunityTriggerTest { @isTest static void test_method_one() { 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.Job_Category__c = '销售推广'; user.Province__c = '上海市'; user.Use_Start_Date__c = Date.today().addMonths(-6); user.SalesManager__c = UserInfo.getUserId(); user.BuchangApprovalManagerSales__c = UserInfo.getUserId(); user.JingliApprovalManager__c = UserInfo.getUserId(); user.BuchangApprovalManager__c = UserInfo.getUserId(); user.ZongjianApprovalManager__c = UserInfo.getUserId(); List rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院']; if (rectCo.size() == 0) { return; } List rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科']; if (rectSct.size() == 0) { return; } List rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科']; if (rectDpt.size() == 0) { return; } StaticParameter.EscapeOpportunityBefUpdTrigger = true; StaticParameter.EscapeSyncOpportunityTrigger = true; StaticParameter.EscapeNFM007Trigger = true; StaticParameter.EscapeOpportunityHpDeptUpdTrigger = true; StaticParameter.EscapeSyncOpportunityTrigger = true; System.runAs(new User(Id = Userinfo.getUserId())) { insert user; // テストデータ Account company = new Account(); company.RecordTypeId = rectCo[0].Id; company.Name = 'NFM007TestCompany'; upsert company; Account section = new Account(); section.RecordTypeId = rectSct[0].Id; section.Name = '*'; section.Department_Class_Label__c = '消化科'; section.ParentId = company.Id; section.Hospital_Department_Class__c = company.Id; upsert section; Account section1 = new Account(); section1.RecordTypeId = rectSct[0].Id; section1.Name = '*'; section1.Department_Class_Label__c = '消化科'; section1.ParentId = company.Id; section1.Hospital_Department_Class__c = company.Id; upsert section1; Account depart = new Account(); depart.RecordTypeId = rectDpt[0].Id; depart.Name = '*'; depart.Department_Name__c = 'NFM007TestDepart'; depart.ParentId = section.Id; depart.Department_Class__c = section.Id; depart.Hospital__c = company.Id; upsert depart; Opportunity opp = new Opportunity(); opp.AccountId = depart.Id; opp.Department_Class__c = section.Id; opp.Hospital__c = company.Id; opp.SAP_Send_OK__c = false; opp.Name = 'GZ-SP-NFM007_1'; opp.Trade__c = '内貿'; opp.StageName = '引合'; opp.CloseDate = date.newinstance(2025, 11, 30); opp.Stock_apply_status__c = '申请中'; insert opp; System.Test.startTest(); Opportunity_File__c ofile = new Opportunity_File__c(); ofile.Name = 'test file'; ofile.Opportunity__c = opp.Id; insert ofile; Attachment att = new Attachment( Name = 'ORDER-123456.pdf', parentId = ofile.Id, Body = EncodingUtil.base64Decode('test') ); insert att; Opportunity_File__c ofile2 = new Opportunity_File__c(); ofile2.Name = 'test file2'; ofile2.Opportunity__c = opp.Id; insert ofile2; Attachment att2 = new Attachment( Name = 'ORDER-123456.pdf', parentId = ofile2.Id, Body = EncodingUtil.base64Decode('test') ); insert att2; delete ofile2; delete att; OpportunityTrigger.isFirst =true; opp.Stock_apply_status__c = '批准'; opp.Department_Class__c = section1.Id; opp.OwnerId = Userinfo.getUserId(); update opp; List checkList = [select id, Is_Locked__c from Opportunity_File__c where id = :ofile.Id]; System.assertEquals(true, checkList[0].Is_Locked__c); Attachment att3 = new Attachment( Name = 'ORDER-123456.pdf', parentId = company.Id, Body = EncodingUtil.base64Decode('test') ); insert att3; //delete att3; //Rental_Apply__c rentalApply = new Rental_Apply__c(); //// '引当完了' -> 已批准 //rentalApply.Status__c = FixtureUtil.raStatusMap.get(FixtureUtil.RaStatus.Yi_Pi_Zhun.ordinal()); //// rentalApply.applyUser__c = UserInfo.getUserId(); //rentalApply.applyUser__c = user.Id; //rentalApply.direct_send__c = '直送'; //rentalApply.direct_shippment_address__c = 'test'; //rentalApply.Request_return_day__c = Date.today() + 30; //rentalApply.demo_purpose1__c = '其他'; //rentalApply.demo_purpose2__c = '其他'; ///* 这个用户没权限 用它赋值会造成报错 暂时注释掉 精琢技术 wql 2021/05/26 */ ////rentalApply.Person_In_Charge__c = user.Id; //rentalApply.Hope_Lonaer_date_Num__c = 6; //insert rentalApply; // Attachment att4 = new Attachment( // Name = 'ORDER-123456.pdf', // parentId = rentalApply.Id, // Body = EncodingUtil.base64Decode('test') // ); // insert att4; // delete att4; // Consumable_order__c co = new Consumable_order__c(); // insert co; // Attachment att5 = new Attachment( // Name = 'ORDER-123456.pdf', // parentId = co.Id, // Body = EncodingUtil.base64Decode('test') // ); // insert att5; //delete att5; System.Test.stopTest(); // OpportunityTrigger.intI(); } } @isTest static void test_Change_Quote() { List rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院']; if (rectCo.size() == 0) { return; } List rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科']; if (rectSct.size() == 0) { return; } List rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科']; if (rectDpt.size() == 0) { return; } // テストデータ Account company = new Account(); company.RecordTypeId = rectCo[0].Id; company.Name = 'NFM007TestCompany'; upsert company; Account section = new Account(); section.RecordTypeId = rectSct[0].Id; section.Name = '*'; section.Department_Class_Label__c = '消化科'; section.ParentId = company.Id; section.Hospital_Department_Class__c = company.Id; upsert section; Account depart = new Account(); depart.RecordTypeId = rectDpt[0].Id; depart.Name = '*'; depart.Department_Name__c = 'NFM007TestDepart'; depart.ParentId = section.Id; depart.Department_Class__c = section.Id; depart.Hospital__c = company.Id; upsert depart; RecordType recByoin = [select id from RecordType where IsActive = true and SobjectType= 'Account' and Name=:'病院' limit 1]; Account hospital = new Account(Name = 'テスト病院'); hospital.RecordTypeId = recByoin.id; hospital.Site = 'テスト病院部門'; hospital.Alias_Name2__c = 'テスト病院別名'; insert hospital; //販売店 RecordType recHanbaiten = [select id from RecordType where IsActive = true and SobjectType= 'Account' and Name=:'販売店' limit 1]; Account sellerA = new Account(Name = '販売店'); sellerA.RecordTypeId = recHanbaiten.id; sellerA.Hospital__c = hospital.id; sellerA.Tax_Practice_No__c = '001'; sellerA.Sales_Shop_Class__c = '特約販売店(区域)'; sellerA.Business_Authorization_No__c = '001'; sellerA.Tax_Practice_Expiration_Date__c = Date.today().addDays(20); sellerA.Business_Paper_Expiration_Date__c = Date.today().addDays(20); sellerA.Medical_Equipment_Expiration_Date__c = Date.today().addDays(20); sellerA.Medical_Equipment_Num__c = '有证'; sellerA.Business_Authorization_No__c = '0001'; sellerA.Business_Paper_Expiration_Date__c = Date.today().addDays(20); sellerA.Delete_Flag__c = false; insert sellerA; Account sellerB = new Account(Name = '販売店B'); sellerB.RecordTypeId = recHanbaiten.id; sellerB.Delete_Flag__c = false; insert sellerB; Oly_TriggerHandler.bypass('PowerBIBaseHandler'); StaticParameter.EscapeSyncOpportunityTrigger = true; StaticParameter.EscapeNFM007Trigger = true; StaticParameter.EscapeOpportunityHpDeptUpdTrigger = true; Oly_TriggerHandler.bypass('AgencyOppUpdHandler'); StaticParameter.EscapeSyncOpportunityTrigger = true; System.Test.startTest(); Opportunity opp = new Opportunity(); opp.AccountId = depart.Id; opp.Department_Class__c = section.Id; opp.Hospital__c = company.Id; opp.SAP_Send_OK__c = false; opp.Name = 'GZ-SP-NFM007_1'; opp.Trade__c = '内貿'; opp.StageName = '引合'; opp.CloseDate = date.newinstance(2025, 11, 30); opp.Stock_apply_status__c = '申请中'; insert opp; Quote q = new Quote( Name = 'quote', OpportunityId = opp.Id, Agency1__c = sellerA.Id, Quote_No__c = 'Quote_No_1' ); insert q; opp.Agency1__c = sellerA.Id; opp.Estimation_No__c = q.Quote_No__c; update opp; // opp.Agency1__c = sellerB.Id; // update opp; System.Test.stopTest(); } //2021-05-13 mzy QLM @isTest static void test_Change_Opp() { List rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院']; if (rectCo.size() == 0) { return; } List rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科']; if (rectSct.size() == 0) { return; } List rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科']; if (rectDpt.size() == 0) { return; } // テストデータ Account company = new Account(); company.RecordTypeId = rectCo[0].Id; company.Name = 'NFM007TestCompany'; upsert company; Account section = new Account(); section.RecordTypeId = rectSct[0].Id; section.Name = '*'; section.Department_Class_Label__c = '消化科'; section.ParentId = company.Id; section.Hospital_Department_Class__c = company.Id; upsert section; Account depart = new Account(); depart.RecordTypeId = rectDpt[0].Id; depart.Name = '*'; depart.Department_Name__c = 'NFM007TestDepart'; depart.ParentId = section.Id; depart.Department_Class__c = section.Id; depart.Hospital__c = company.Id; upsert depart; //販売店 RecordType recHanbaiten = [select id from RecordType where IsActive = true and SobjectType= 'Account' and Name='販売店' limit 1]; Account sellerA = new Account(Name = '販売店A'); sellerA.RecordTypeId = recHanbaiten.id; sellerA.Delete_Flag__c = false; insert sellerA; Account sellerB = new Account(Name = '販売店B'); sellerB.RecordTypeId = recHanbaiten.id; sellerB.Delete_Flag__c = false; insert sellerB; Oly_TriggerHandler.bypass('PowerBIBaseHandler'); StaticParameter.EscapeSyncOpportunityTrigger = true; StaticParameter.EscapeNFM007Trigger = true; StaticParameter.EscapeOpportunityHpDeptUpdTrigger = true; Oly_TriggerHandler.bypass('AgencyOppUpdHandler'); StaticParameter.EscapeSyncOpportunityTrigger = true; System.Test.startTest(); //win Opportunity opp1 = new Opportunity( Name = 'test opp1', StageName = '完了', CurrencyIsoCode = 'USD', CloseDate = Date.today(), AccountId = depart.Id, Closing_Bid_Date__c = Date.today().addDays(-5), Hospital__c = company.Id, Competitor__c = 'A', ConfirmationofAward__c ='OLY中标', OlyNumberHosts__c =1 ); insert opp1; LastbuyProduct__c wqe = new LastbuyProduct__c(); wqe.InquiryCode__c=opp1.Id; wqe.LastbuyQuantity__c=1; wqe.ActualQuantity__c=1; insert wqe; opp1.SAP_Send_OK__c = true; opp1.Authorized_DB_No__c = '123'; opp1.Contract_DB_SalesDept_complite_day__c = Date.today(); opp1.NotesApprovedNo__c = '123'; opp1.OlyNumberHosts__c =2; update opp1; opp1.SAP_Send_OK__c = false; opp1.Reason_Cancel_WIN__c = '1.终止合同'; opp1.OlyNumberHosts__c =3; update opp1; //lt 注释掉 te1 // //招标项目 // Tender_information__c te1 = new Tender_information__c(); // te1.Name = 'TestZhaoBiao'; // insert te1; // opp1.Bidding_Project_Name_Bid__c = te1.Id; // update opp1; //失单 opp1.StageName = '敗戦'; update opp1; //新建询价时,赋值招投标项目,打上标识 // Opportunity opp2 = new Opportunity( // Name = 'test opp1', // StageName = '引合', // CurrencyIsoCode = 'USD', // CloseDate = Date.today(), // AccountId = depart.Id, // Closing_Bid_Date__c = Date.today().addDays(-5), // Hospital__c = company.Id // // ,Competitor__c = 'A' // //,Bidding_Project_Name_Bid__c = te1.Id //lt 20220316 // ); // insert opp2; System.Test.stopTest(); } //2021-05-13 mzy QLM //LastBuy 预留产品 lt 20220315 start @isTest static void TestMethod1() { //Tender_information__c info1 = new Tender_information__c(); // info1.Name = 'TEST001'; // info1.AreaProvince__c = '北京'; // info1.InfoType__c= '3:结果'; // info1.subInfoType__c = '3-5:中标通知'; // info1.OpportunityNum__c = 0; // info1.relativeTime__c =System.now(); // info1.IsReactionOpp__c = false; // insert info1; Opportunity opp = new Opportunity(); opp.Name = 'GZ-SP-NFM007_1'; opp.StageName = '引合'; opp.CloseDate = date.newinstance(2025, 11, 30); //opp.Bidding_Project_Name_Bid__c =info1.id; opp.ConfirmationofAward__c ='竞争对手中标'; opp.Task_createTime__c = date.newinstance(2025, 11, 30); insert opp; Product2 pro = new Product2(); pro.Name = 'Testname0316'; pro.LastbuyProductFLG__c = false; insert pro; LastbuyProduct__c lbp = new LastbuyProduct__c(); lbp.Name = 'Test0215'; lbp.ProductName__c = pro.Id; lbp.InquiryCode__c = opp.Id; lbp.effectiveFLG__c = true; insert lbp; List oppList = [Select SAP_Send_OK__c,Id, StageName,StageName__c,ConfirmationofAward__c,DirectLossFLG__c,OwnerId FROM Opportunity Where id =:opp.id]; oppList[0].ConfirmationofAward__c='OLY中标'; update oppList; opp.StageName = '敗戦'; update opp; } //LastBuy 预留产品 lt 20220315 end //add start 20220623 @isTest static void test_createTaskByOppConfirmationofAward() { StaticParameter.EscapeContactInsUpdUser = true; StaticParameter.EscapeContactToUser = true; StaticParameter.EscapeAccountTrigger = true; // StaticParameter.EscapeOpportunityownerUpdate = true; // StaticParameter.EventOpportunityPileUpExeFlg = true; // StaticParameter.EscapeOpportunityBefUpdTrigger = true; // StaticParameter.EscapeOpportunityHpDeptUpdTrigger = true; // StaticParameter.EscapeSyncOpportunityTrigger = true; // StaticParameter.EscapeAgencyOpportunityTrigger = true; // StaticParameter.EscapeOppandStaTrigger = true; // StaticParameter.EscapeTenderInformationUpdate = true; // StaticParameter.EscapeZCUpdateTender = true; 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.Job_Category__c = '销售推广'; user.Province__c = '上海市'; user.Use_Start_Date__c = Date.today().addMonths(-6); user.SalesManager__c = UserInfo.getUserId(); user.BuchangApprovalManagerSales__c = UserInfo.getUserId(); user.JingliApprovalManager__c = UserInfo.getUserId(); user.BuchangApprovalManager__c = UserInfo.getUserId(); user.ZongjianApprovalManager__c = UserInfo.getUserId(); Profile p = [select id from Profile where id =:System.Label.ProfileId_SystemAdmin]; String loginId = UserInfo.getUserId(); User sys = [select id from User where Id = :loginId]; User u1 = new User(Test_staff__c = true); u1.LastName = '123'; // u1.FirstName = '2'; u1.Batch_User__c = true; u1.Alias = '2'; u1.Email = 'youchang@prec-tech.com'; u1.Username = 'test_user1@olympus.com.cn.tenopplink'; u1.CommunityNickname = 'あ1'; u1.IsActive = true; u1.EmailEncodingKey = 'ISO-2022-JP'; u1.TimeZoneSidKey = 'Asia/Tokyo'; u1.LocaleSidKey = 'ja_JP'; u1.LanguageLocaleKey = 'ja'; u1.ProfileId = p.id; u1.Job_Category__c = '销售服务'; u1.Province__c = '東京'; u1.IsActive = true; User u2 = new User(Test_staff__c = true); u2.LastName = '_サンブリッジ'; // u2.FirstName = 'い'; u2.Batch_User__c = true; u2.Alias = 'い'; u2.Email = 'youchang1@prec-tech.com'; u2.Username = 'test_user2@olympus.com.cn.tenopplink1'; u2.CommunityNickname = 'い'; u2.IsActive = true; u2.EmailEncodingKey = 'ISO-2022-JP'; u2.TimeZoneSidKey = 'Asia/Tokyo'; u2.LocaleSidKey = 'ja_JP'; u2.LanguageLocaleKey = 'ja'; u2.ProfileId = p.id; u2.Job_Category__c = '销售推广'; u2.Province__c = '東京'; u2.IsActive = true; insert u2; List rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院']; if (rectCo.size() == 0) { return; } List rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科']; if (rectSct.size() == 0) { return; } List rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科']; if (rectDpt.size() == 0) { return; } StaticParameter.EscapeOpportunityBefUpdTrigger = true; StaticParameter.EscapeSyncOpportunityTrigger = true; StaticParameter.EscapeNFM007Trigger = true; StaticParameter.EscapeOpportunityHpDeptUpdTrigger = true; StaticParameter.EscapeOpportunityownerUpdate = true; System.runAs(new User(Id = Userinfo.getUserId())) { insert user; insert u1; // テストデータ Account company = new Account(); company.RecordTypeId = rectCo[0].Id; company.Name = '测试医院'; insert company; Account section = new Account(); section.RecordTypeId = rectSct[0].Id; section.Name = '测试医院 消化科'; section.Department_Class_Label__c = '消化科'; section.ParentId = company.Id; section.Hospital_Department_Class__c = company.Id; insert section; Account section1 = new Account(); section1.RecordTypeId = rectSct[0].Id; section1.Name = '测试医院 消化科 消化科'; section1.Department_Class_Label__c = '消化科'; section1.ParentId = company.Id; section1.Hospital_Department_Class__c = company.Id; insert section1; Account depart = new Account(); depart.RecordTypeId = rectDpt[0].Id; depart.Name = '*'; depart.Department_Name__c = 'NFM007TestDepart'; depart.ParentId = section.Id; depart.Department_Class__c = section.Id; depart.Hospital__c = company.Id; insert depart; // 插入招标项目1 Tender_information__c info1 = new Tender_information__c(); info1.Name = 'TEST001'; info1.AreaProvince__c = '北京'; info1.InfoType__c= '3:结果'; info1.subInfoType__c = '3-5:中标通知'; info1.OpportunityNum__c = 0; info1.OwnerId = u1.Id; info1.InfoOwner__c = u2.Id; info1.relativeTime__c =System.now(); info1.IsReactionOpp__c = false; insert info1; Opportunity opp = new Opportunity(); opp.AccountId = depart.Id; opp.Department_Class__c = section.Id; opp.Hospital__c = company.Id; opp.SAP_Send_OK__c = false; opp.Name = 'GZ-SP-NFM007_1'; opp.Trade__c = '内貿'; opp.StageName = '引合'; opp.ConfirmationofAward__c='OLY中标'; opp.CloseDate = date.newinstance(2025, 11, 30); opp.DirectLossFLG__c = false; opp.OwnerId = u1.id; opp.Bidding_Project_Name_Bid__c =info1.id; insert opp; //Tender_Opportunity_Link__c BlinksList = new Tender_Opportunity_Link__c(); // BlinksList.Opportunity__c = opp.Id; // BlinksList.CurrencyIsoCode = 'CNY'; // BlinksList.IsRelated__c = false; // BlinksList.Tender_information__c = info1.Id; // insert BlinksList; //Lost_cancel_report__c lcr =new Lost_cancel_report__c(); //lcr.Opportunity__c = opp.id; //lcr.Report_Status__c = '提交'; //insert lcr; // 中标任务 String winBiddingTask_TaskId = Schema.SObjectType.task__c.getRecordTypeInfosByDeveloperName().get('winBiddingTask').getRecordTypeId(); Task__c tempTask = new Task__c(); tempTask.RecordTypeId = winBiddingTask_TaskId; tempTask.taskDifferent__c = '被动任务'; tempTask.taskStatus__c = '02 接受'; //任务状态2 tempTask.assignee__c = opp.OwnerId; //被分配者 tempTask.account__c = opp.AccountId; tempTask.Name = '中标结果确认:' ;//+ info1.TenderManageCode__c; //招标项目.SFDC编码 tempTask.OwnerId = opp.OwnerId; //所有人 tempTask.OpportunityId__c = opp.Id; //tempTask.Tender_information_Task__c = info1.Id; //招标项目 tempTask.ConfirmDate__c = Date.today(); insert tempTask; System.Test.startTest(); // List oppList = [Select SAP_Send_OK__c,Bidding_Project_Name_Bid__c,Id, StageName,StageName__c,ConfirmationofAward__c,DirectLossFLG__c,OwnerId FROM Opportunity Where id =:opp.id]; // OpportunityTrigger.isFirst =true; // oppList[0].ConfirmationofAward__c='竞争对手中标'; // update oppList; opp.Department_Class__c = section1.id; opp.ConfirmationofAward__c ='竞争对手中标'; OpportunityTrigger.isFirst =true; //opp.OwnerId = Userinfo.getUserId(); update opp; //List oppList1 = [Select SAP_Send_OK__c,Bidding_Project_Name_Bid__c,Id, StageName,StageName__c,ConfirmationofAward__c,DirectLossFLG__c,OwnerId FROM Opportunity Where id =:oppList[0].id]; //OpportunityTrigger.isFirst =true; //oppList1[0].ConfirmationofAward__c='竞争对手中标'; //oppList1[0].OwnerId = u2.id; //update oppList1; System.Test.stopTest(); } } //end start 20220623 }