@isTest private class UpdateOppLineItemAgencySubtotalTest { private static Product2 product = null; private static Pricebook2 pricebook = null; private static Opportunity opprtunity = null; static final String RC_HOSPITAL = '病院'; static final String RC_OPP = '引合'; static final String RC_SENRYAKUKASHITSUBUNRUI = '戦略科室分類 消化科'; static final String RC_BYOUIN = '病院'; static final String RC_SHINRYOUKA = '診療科 その他'; static final String RC_HANBAOITEN = '販売店'; static final String RC_KEIYAKU = '契約'; static { product = new Product2( Name = 'テスト商品'); insert product; system.debug('##product.Id=[' + product.Id + ']' ); pricebook = ControllerUtil.getStandardPricebook(); system.debug('##pricebook.Id=[' + pricebook.Id + ']' ); } private static String quoteNo = 'textQutote01'; public static String trade = '内貿'; public static String CurrencyIso = 'CNY'; private static Boolean isUnitPrice = true; private static Boolean isOfferAmount = true; private static Boolean isTotalPrice = true; private static Boolean isDiscountRate = true; private static Boolean isDiscountAmount = true; private static Boolean isTradingPrice = true; private static Boolean isContractDetail = true; private static Date offerExpireDate = Date.today(); private static String clientName = 'test client'; private static String offerComment = 'test comment'; private static Date offerPrintDate = Date.today(); private static String agentName = 'test agent name'; private static PricebookEntry buildPB( String input) { PricebookEntry entry = new PricebookEntry( Pricebook2Id = pricebook.Id, Product2Id = product.Id); entry.UnitPrice = 0; entry.IsActive = true; entry.UseStandardPrice = false; entry.CurrencyIsoCode = input; insert entry; return entry; } private static Opportunity buildOppInstance( String inputTrade, String CurrencyIsoCode) { Opportunity target = new Opportunity( Name = 'aiueo', StageName = 'contact', CloseDate = Date.today()); target.Trade__c = inputTrade; target.owner_not_automatically_update__c = true; target.CurrencyIsoCode = CurrencyIsoCode; target.Wholesale_Price__c = 9000; return target; } private static QuoteLineItem insertQuoteLineItem( Quote input, Pricebookentry entry) { QuoteLineItem target = new QuoteLineItem(); target.Name__c = 'テスト商品'; target.QuoteId = input.Id; target.Quantity = 1; target.Quantity__c = 1; target.Cost_Subtotal__c = 0; target.Cost__c = 200; // target.TotalPrice = 100; target.UnitPrice = 10; target.ListPrice__c = 10; target.PricebookEntryId = entry.Id; insert target; return target; } @isTest static void test_method_one() { String userId = UserInfo.getUserId(); User u1 = [SELECT Id, Quote_Correct__c, Quote_Special_Operation__c, Cost_Referable__c FROM User WHERE Id = :userId]; u1.Quote_Correct__c = false; u1.Quote_Special_Operation__c = true; u1.Cost_Referable__c = true; update u1; // PricebookEntry PricebookEntry entryUSD = buildPB( 'USD'); PricebookEntry entryCNY = buildPB( 'CNY'); // 引合作成 Opportunity opp = buildOppInstance( trade, CurrencyIso); opp.Trade__c = trade; opp.owner_not_automatically_update__c = true; opp.Sales_Root__c = '販売店'; opp.Pricebook2Id = pricebook.id; insert opp; //見積データ作成 Quote quote = new Quote( Name = 'テスト見積'); quote.OpportunityId = opp.Id; quote.Pricebook2Id = pricebook.id; quote.Quote_No__c = quoteNo; quote.Unit_Price__c = isUnitPrice; quote.Offer_Amount__c = isOfferAmount; quote.TOTAL__c = isTotalPrice; quote.Discount__c = isDiscountRate; quote.Pricing__c = isDiscountAmount; quote.Preferential_Trading_Price__c = isTradingPrice; quote.Contract__c = isContractDetail; quote.Quote_Comment__c = offerComment; quote.OCM_Agent1_Price__c = 12345; quote.Estimation_List_Price__c = 23456; insert quote; quote = [SELECT Id, OpportunityId, Quote_no__c, Quote_No_Auto__c, CurrencyIsoCode FROM Quote WHERE Id = :quote.id]; System.assertEquals( CurrencyIso, quote.CurrencyIsoCode); // 見積品目作成 QuoteLineItem item01 = insertQuoteLineItem( quote, entryCNY); QuoteLineItem item02 = insertQuoteLineItem( quote, entryCNY); //見積データ検索 opprtunity = [SElECT Id, Opportunity_no__c, CurrencyIsoCode FROM Opportunity WHERE Id = :opp.id]; OpportunityLineItem oli = new OpportunityLineItem(); oli.Quantity = 1; //oli.Quantity__c = 1; oli.UnitPrice = 0; oli.ListPrice__c = 10; oli.OpportunityId = opp.id; oli.PricebookEntryId = entryCNY.Id; insert oli; System.Test.startTest(); quote.AgencyDiscount__c = null; update quote; } @isTest static void test_method_two() { // Implement test code } }