// FIXME 見積もり商品の Asset_Model_No__c ですが、数式になっています。トランザクションデータとして、項目を持つべきかと思います。by katsu 20130216 // 商談商品のId__c を PricebookEntry.Product2Idに変更すべき // 見積もり可否 ですが、保存時みていますが、Sales_Possibilityを見ないですか?いいえ、js側で見ています public class NewQuoteEntryController { public Integer quoteEntryMaxLine { get; private set; } public Id oppId { get; set; } public Id quoId { get; set; } public Boolean productStatusUpdated { get; set; } // 状態更新、{!$Label.Status_Update} を押下したかどうか public Boolean changedAfterPrint { get; set; } // true の場合、画面に confirm メッセージが表示します。quoIdを新しいinsert。判定はjsにて実施 public Boolean changedAfterBid { get; set; } // true の場合、画面に confirm メッセージが表示します。quoIdを新しいinsert。判定はjsにで実施 //public Id qlistId { get; set; } //lastbuy 2022/2/9 fy start public Boolean filg { get; set; } public Integer flglastbuy { get; set; } public String errorProductmodel { get; set; } //lastbuy 2022/2/9 fy end //SWAG-CC6AFQ【委托】又有询价跳过了报价计算 fy start public Boolean SkipQuotefilg { get; set; } //SWAG-CC6AFQ【委托】又有询价跳过了报价计算 fy end public String excel_text { get; set; } public Integer select_index { get; set; } // excelImport専用ですが、jsにて制御することになるので、TODO katsu 削除予定 public String Product_text { get; set; } public String setProduct_text { get; set; } public List activities { get; set; } public List tmpactivities { get; set; } public QELine active_activity { get; set; } public OppInfo oppInfo { get; set; } //用于检查询价报价具体产品状态是否变更 public List CheckItem {get; set;} //値引き public Decimal DisCalculation { get; set; } public Decimal DisAmount { get; set; } //第一販売店 //public String SalesName1 { get; set; } public String SalesShopClass1 { get; set; } //public Decimal SalesAmount1 { get; set; } public Decimal Salesprofit1 { get; set; } public Decimal SalesCalculation1 { get; set; } public String SalesId1 { get; set; } // 2018/09/29 CHAN-B4YAB8 经销商折扣 start public Decimal AgencyDiscount { get; set; } //第二販売店 //public String SalesName2 { get; set; } public String SalesShopClass2 { get; set; } //public Decimal SalesAmount2 { get; set; } public Decimal Salesprofit2 { get; set; } public Decimal SalesCalculation2 { get; set; } public String SalesId2 { get; set; } //病院マスタ選択リスト public String selection_hp { get; set; } public List options_hp { get; set; } //画面制御判定用 public Boolean displayCost { get; set; } //public Boolean enableEntry { get; set; } public Boolean enableSales { get; set; } public Boolean specialAuthority { get; set; } public Boolean verified { get; set; } public Boolean QuoteDecision { get; set; } public boolean QuoteDecide {get; set;} public Boolean QuoteSapSented { get; set; } public Boolean QuoteCorrect { get; set; } //public Boolean salesEntry { get; set; } public Boolean enableContract { get; set; } //ボタン制御用 public Boolean print_button { get; set; } public Boolean sap_button { get; set; } public Boolean Decision_button { get; set; } public Boolean Save_button { get; set; } public Boolean WinOrDecideAlert {get; set;} public Boolean over3month { get; set; } public Boolean newQuoteFlag=false; // 多年保修 start public string trade {get; private set;} public string quoteGurantee_Period; public string quotemultiYearWarranty; // 多年保修 end //报价试算 判断经销商是否变化 start public string agency1Name; public string agency2Name; //报价试算 判断经销商是否变化 end public Boolean getHiddenSaveBtn() { Boolean rtn = quo.Cancel_Decide__c; Schema.DescribeSObjectResult quoteDesc = Quote.SObjectType.getDescribe(); rtn = (rtn == false) ? !quoteDesc.isUpdateable() : rtn; return rtn; } //見積調整金額 //public Decimal QuoAmount { get; set; } //public Decimal QuoCalculation { get; set; } //見積 public Pricebook2 standardPricebook; // 画面上使わないため、get setなし public Quote quo { get; set; } public Decimal quoStocking_Price_c { get; set; } //Get Opportunity Object public Opportunity opp; private Map prd2LatestValMap; public boolean errorflg { get; set; } public String errorMessage { get; set; } public String errorMessagechack { get; set; } public String baseUrl { get; set; } public boolean Messageflg { get; set; } public String Message { get; set; } public Boolean viewSpecialAgencyAmout { get; set; } public Boolean displayFlg { get; set; } public QuoteBean qb { get; set; } public Integer rowIdx { get; set; } public NewQuoteEntryController() { quoteEntryMaxLine = Integer.valueOf(System.Label.QuoteEntryMaxLine2); //Apexpages.currentPage().getHeaders().put('X-UA-Compatible', 'IE=8'); baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); changedAfterPrint = false; changedAfterBid = false; productStatusUpdated = false; // CHAN-AVG3PW 询价报价画面规则变更 over3month = false; newQuoteFlag = false; } public NewQuoteEntryController(ApexPages.StandardController controller) { this(); } public PageReference init() { //SWAG-CC6AFQ【委托】又有询价跳过了报价计算 fy start SkipQuotefilg = false; //SWAG-CC6AFQ【委托】又有询价跳过了报价计算 fy end system.debug('============start init=============='); boolean quoteflg = true; WinOrDecideAlert = false; errorflg = false; displayFlg = true; //Quote standardPricebook = ControllerUtil.getStandardPricebook(); quo = new Quote(); qb = new QuoteBean(); String DeveloperName = ''; //Opportunityid if (oppId == null) { oppId = System.currentPageReference().getParameters().get('oppid'); if (oppId == Null) { quoId = System.currentPageReference().getParameters().get('id'); List ql = New List(); //添加行 ql = [select Id, OpportunityId, Opportunity.RecordType.DeveloperName,LineItemCount From Quote Where Id = :quoId]; if (ql.size() > 0) { oppId = ql[0].OpportunityId; //添加行 if(ql[0].LineItemCount >quoteEntryMaxLine){ quoteEntryMaxLine = ql[0].LineItemCount; } DeveloperName = ql[0].Opportunity.RecordType.DeveloperName; } } else { quoId = System.currentPageReference().getParameters().get('copyid'); system.debug('copyid++++++++++++'+quoId); if (quoId != null) { // コピーのデータが後で作成する } else { List ql = New List(); //添加行 ql = [select Id, OpportunityId,LineItemCount From Quote Where OpportunityId = :oppId]; if (ql.size() > 0) { //添加行 if(ql[0].LineItemCount >quoteEntryMaxLine){ quoteEntryMaxLine = ql[0].LineItemCount; } quoteflg = true; } else { quoteflg = false; } } } } if (DeveloperName == 'SI_Oppor') { PageReference pageRef = new PageReference('/apex/SI_NewQuoteEntry?id=' + quoId); return pageRef; } system.debug('DeveloperName============' + DeveloperName); //--User List us = New List(); String userid = UserInfo.getUserId(); if (userid != null) { us = [Select Quote_Correct__c, Quote_Special_Operation__c, Cost_Referable__c, ViewSpecialAgencyAmout__c From User Where Id = :userid]; if (us.size() > 0) { verified = us[0].Quote_Correct__c; specialAuthority = us[0].Quote_Special_Operation__c; displayCost = us[0].Cost_Referable__c; viewSpecialAgencyAmout = us[0].ViewSpecialAgencyAmout__c; } } //--Opportunity List oppList = New List(); String accountid; oppList = [SELECT Account.Name, Account.RecordType.DeveloperName, CLBIC_Category__c, HP_Name__c, Name, CurrencyIsoCode, Wholesale_Price__c, Department_Name__c, Direct_Separate__c, Trade__c, AccountId, New_Opportunity__c, Estimation_Decision__c, SAP_Send_OK__c, Sales_Root__c, Agency1__c, Agency2__c, Stocking_Price__c, Purchasing_Cost__c, Opportunity_No__c, StageName, Agency1__r.Special__c, Agency2__r.Special__c, Account.Parent.Special__c // LHJ Start , Authorized_DB_No__c, Authorized_Finish_Sales__c, If_Need_Authorize__c // LHJ End // 多年保修 start , Gurantee_Period__c , multiYearWarranty__c, MultiYearWarrantyTotalPrice__c // 多年保修 end // CHAN-BEN5UC start , Hospital__c, Department_Class__c ,Is_Corrosion__c, // CHAN-BEN5UC end //【是否需要价格申请】 thh start If_Need_PriceApply__c //【是否需要价格申请】 thh end // Celon询价修改 2022-04-24 ssm start ,CelonOpportunity__c // Celon询价修改 2022-04-24 ssm end // lastbuy判断变更用户询价 start , If_Account_Change__c // lastbuy判断变更用户询价 end FROM Opportunity Where Id = :oppId]; // 多年保修 start trade = '外貿'; // 多年保修 end if (oppList.size() > 0) { opp = oppList[0]; // 多年保修 start trade = opp.Trade__c; // 多年保修 end QuoteDecision = opp.Estimation_Decision__c; QuoteDecide = QuoteDecision; QuoteSapSented = opp.SAP_Send_OK__c; QuoteCorrect = opp.New_Opportunity__c; enableSales = false; if (opp.Sales_Root__c != null) { if (opp.Sales_Root__c == '販売店') { enableSales = true; opp.Sales_Root__c = System.Label.Sales_Outlet; } else { enableSales = false; opp.Sales_Root__c = System.Label.OCM_Direct; } } accountid = opp.AccountId; if (QuoteDecision == true) { enableContract = true; } else { enableContract = false; } oppInfo = new OppInfo(opp); if (opp.SAP_Send_OK__c == false) { displayFlg = true; } else { if (opp.Agency1__r.Special__c || opp.Agency1__r.Special__c || opp.Account.Parent.Special__c) { // 特別販売店の引合い if (viewSpecialAgencyAmout) { displayFlg = true; } else { displayFlg = false; } } else { displayFlg = true; } } } //Quote Integer i; if (quoId == null) { quoId = System.currentPageReference().getParameters().get('id'); } if (quoId == null) { if (quoteflg == false) { //商談商品が存在、見積が存在しないデータの対応 List items = New List(); if (oppId == null) { oppId = System.currentPageReference().getParameters().get('oppid'); } items = [Select Id, Asset_Model_No__c, SFDA_Status__c, Name__c, ProductCode__c, PricebookEntry.Product2.StorageStatus__c, //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 Start 增加字段,不可取消多年保&& 增加检索阿西赛多 2020/09/10start Qty_Unit__c, Cost__c, UnitPrice, ListPrice__c, Quantity, BSS_Category__c, TotalPrice,PricebookEntry.Product2.VenderName__c,PricebookEntry.Product2.CanNotCancelledGurantee__c,PricebookEntry.Product2.Is_DangerousChemicals__c, //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 end 增加字段 PricebookEntry.Product2.SFDA_Status__c, Product_Cost__c, Product_ListPrice__c, PricebookEntry.Product2.Sales_Possibility__c, PricebookEntry.Product2.Name, PricebookEntryId, PricebookEntry.Product2Id, Opportunity.Trade__c, PricebookEntry.Product2.Intra_Trade_List_RMB__c, PricebookEntry.Product2.Intra_Trade_Cost_RMB__c, PricebookEntry.Product2.Foreign_Trade_List_US__c, PricebookEntry.Product2.Packing_list_manual__c, PricebookEntry.Product2.Foreign_Trade_Cost_US__c, UnitPrice__c, TotalPrice__c , AgencyUnitPrice__c, AgencySubtotal__c, Present__c // CHAN-B4YAB8 2018/09/29 业务机会产品的赠送、经销商小计、单价 //多年保修 start , multiYearWarranty__c , If_Cancel_Guarantee__c , GuaranteePeriod__c, ServicePrice__c , GuranteePrice__c, ProductEntend_gurantee_period_all__c, ProductGuranteePrice__c, GuranteeType__c, //ProductIfConsumable__c, warrantyType__c, productServicePrice__c, NoDiscountTotal__c , provistonPeriod__c , PricebookEntry.Product2.Entend_gurantee_period_all__c , PricebookEntry.Product2.Intra_Trade_Gurantee_RMB__c , PricebookEntry.Product2.Intra_Trade_Service_RMB__c , PricebookEntry.Product2.GuranteeType__c // 维修合同报价 , PricebookEntry.Product2.Maintenance_Price_Year__c , Maintenance_Price_Year__c //多年保修 end //外贸多年保 2021/01/04 精琢技术 wql start //维修合同报价(USD) ,PricebookEntry.Product2.Repair_Contract_USD__c //计提金额(不含税,USD) ,PricebookEntry.Product2.Intra_Trade_Foreign_RMB__c //NoDiscount 金额(USD) ,PricebookEntry.Product2.NoDiscount_Foreign__c //外贸多年保 2021/01/04 精琢技术 wql end //SFDC停止预警 lt 20211009 start ,PricebookEntry.Product2.Estimated_ConsumptionDueDate__c //SFDC停止预警 lt 20211009 end From OpportunityLineItem Where OpportunityId = :oppId Order by Item_Order__c, Id]; if (items.size() > 0) { activities = new List(); i = 0; for (OpportunityLineItem o : items) { QELine c = new QELine(o, i); activities.add(c); i++; } for (integer j = i; j < quoteEntryMaxLine; j++) { QELine c = new QELine(j); activities.add(c); } productStatusUpdated = true; } else { //新規リストコントローラの取得 if (activities == null) { activities = new List(); for (i = 0; i < quoteEntryMaxLine; i++) { QELine active_activity = new QELine(i); activities.add(active_activity); } } } } else { //新規リストコントローラの取得 if (activities == null) { activities = new List(); for (i = 0; i < quoteEntryMaxLine; i++) { QELine active_activity = new QELine(i); activities.add(active_activity); } } } } else { //添加行 List quoList =//SWAG-CKDATG 【委托】【OBSAP-报价委托】报价委托项目改善1 fy start QuotationChange__c,MainEngineWithoutMonitor__c,Interdepartmental__c, [ SELECT Id, Name, Cancel_Decide__c, CreatedDate, PriceRefreshDate__c, Quote_Print_Date__c,QuotationChange__c,MainEngineWithoutMonitor__c,Interdepartmental__c, Dealer_Final_Price__c, TotalPrice__c, Estimation_List_Price__c, QuoteNumber, QuoteToName, Quote_Expiration_Date__c, Quote_Comment__c, Stocking_Price__c, Unit_Price__c, Offer_Amount__c, TOTAL__c, Discount__c, Pricing__c, Preferential_Trading_Price__c, Contract__c, Agency1__c, OCM_Agent1_Price__c, Agency1_Profit__c, Agency1_Profit_Rate__c, Print_HP_Name__c, Agency2__c, Agent1_Agent2_Price__c, Agency2_Profit__c, Agency2_Profit_Rate__c, Quote_No__c, Quote_Adjust_Amount__c, Quote_Adjust_Calculate__c, Discount_Amount__c, Discount_Amount_Calculate__c, Installation_location__c, QuoteTotal_Page__c, Dealer_Final_Price_Page__c, Quote_Adjust_Amount_Page__c, OCM_Agent1_Price_Page__c, Agent1_Agent2_Price_Page__c , AgencyDiscount__c // 2018/09/28 CHAN-B4YAB8 经销商折扣 // 多年保修 start , Gurantee_Period__c , multiYearWarranty__c, MultiYearWarrantyTotalPrice__c, Preferential_Gurantee_Period__c,LineItemCount // 多年保修 end //报价试算 start ,IsQuoteTrial__c //报价试算 end FROM Quote Where Id = :quoId]; List items = [Select Id, Asset_Model_No__c, SFDA_Status__c, Product_Sales_Possibility__c, //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 Start 增加字段 不可取消多年保&&增加检索阿西赛多 2020/09/10 Name__c, BSS_Category__c, Quote.Quote_Print_Date__c,PricebookEntry.Product2.VenderName__c,PricebookEntry.Product2.CanNotCancelledGurantee__c,PricebookEntry.Product2.Is_DangerousChemicals__c, //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 end 增加字段 Qty_Unit__c, Cost__c, UnitPrice__c, ListPrice__c, Quantity, TotalPrice__c, PricebookEntry.Product2.SFDA_Status__c, ProductCode__c, Product_Cost__c, Product_ListPrice__c, PricebookEntry.Product2.Sales_Possibility__c, PricebookEntry.Product2.Name, PricebookEntryId, PricebookEntry.Product2Id, UnitPrice_Page__c, PricebookEntry.Product2.Packing_list_manual__c, PricebookEntry.Product2.StorageStatus__c , AgencyUnitPrice__c, AgencySubtotal__c, Present__c // CHAN-B4YAB8 2018/9/29 赠送、经销商单价和小计 // 多年保修 start //ET促销标记 start , multiYearWarranty__c , If_Cancel_Guarantee__c , GuaranteePeriod__c, //ET促销标记 end ServicePrice__c , GuranteePrice__c, ProductEntend_gurantee_period_all__c, ProductGuranteePrice__c, GuranteeType__c, warrantyType__c, productServicePrice__c, NoDiscountTotal__c , provistonPeriod__c , PricebookEntry.Product2.Entend_gurantee_period_all__c , PricebookEntry.Product2.Intra_Trade_Gurantee_RMB__c , PricebookEntry.Product2.Intra_Trade_Service_RMB__c , PricebookEntry.Product2.GuranteeType__c // 维修合同报价 , PricebookEntry.Product2.Maintenance_Price_Year__c , Maintenance_Price_Year__c // 多年保修 end //外贸多年保 2021/01/04 精琢技术 wql start //维修合同报价(USD) ,PricebookEntry.Product2.Repair_Contract_USD__c //计提金额(不含税,USD) ,PricebookEntry.Product2.Intra_Trade_Foreign_RMB__c //NoDiscount 金额(USD) ,PricebookEntry.Product2.NoDiscount_Foreign__c //fy 预留产品标识 ,PricebookEntry.Product2.LastbuyProductFLG__c ,Quote.Opportunity.Trade__c //外贸多年保 2021/01/04 精琢技术 wql end //SFDC停止预警 lt 20211009 start ,PricebookEntry.Product2.Estimated_ConsumptionDueDate__c //SFDC停止预警 lt 20211009 end From QuoteLineItem where Quoteid = :quoId Order by Item_Order__c, Id]; String copyQuoId = System.currentPageReference().getParameters().get('copyid'); system.debug('copyid2++++++++++++'+copyQuoId); CheckItem = items; if (copyQuoId == null) { } else { // copyの場合、quoIdをnullに戻す system.debug('id空6:'); quoId = null; //SWAG-CC6AFQ【委托】又有询价跳过了报价计算 fy start SkipQuotefilg = true; //SWAG-CC6AFQ【委托】又有询价跳过了报价计算 fy end } if (quoList.size() > 0) { //添加行 if(quoList[0].LineItemCount >quoteEntryMaxLine){ quoteEntryMaxLine = quoList[0].LineItemCount; } if (copyQuoId == null) { quo = quoList[0]; quo.QuoteName__c = quo.Name; // 多年保修 start quoteGurantee_Period = quo.Gurantee_Period__c; quotemultiYearWarranty = '' + quo.multiYearWarranty__c; // 多年保修 end //报价试算 增加经销商前后对比 wql 20210508 start agency1Name = quo.Agency1__c; agency2Name = quo.Agency2__c; //报价试算 增加经销商前后对比 wql 20210508 end // 多年保修 start //HWAG-BLDE6J 带出字段 2020/02/10 Start quo.Gurantee_Period__c = quoList[0].Gurantee_Period__c; quo.multiYearWarranty__c = quoList[0].multiYearWarranty__c; quo.MultiYearWarrantyTotalPrice__c = quoList[0].MultiYearWarrantyTotalPrice__c; // 多年保修 end qb.setPriceRefreshPeriodByDate(quo.PriceRefreshDate__c == null ? quo.CreatedDate.Date() : quo.PriceRefreshDate__c); qb.Estimation_List_Price = quo.Estimation_List_Price__c; quo.QuoteTotal_Page__c = quo.TotalPrice__c; quo.Dealer_Final_Price_Page__c = quo.Dealer_Final_Price__c; qb.Quote_Adjust_Calculate = quo.Quote_Adjust_Calculate__c; quo.Quote_Adjust_Amount_Page__c = quo.Quote_Adjust_Amount__c; DisCalculation = quo.Discount_Amount_Calculate__c; DisAmount = quo.Discount_Amount__c; quo.Agency1__c = quo.Agency1__c; AgencyDiscount = quo.AgencyDiscount__c; //2018/09/28 CHAN-B4YAB8 经销商折扣 quo.OCM_Agent1_Price_Page__c = quo.OCM_Agent1_Price__c; Salesprofit1 = quo.Agency1_Profit__c; qb.SalesCalculation1 = quo.Agency1_Profit_Rate__c; // quo.Agency1_Profit_Rate__c = quo.Agency1_Profit_Rate__c; quo.Agency2__c = quo.Agency2__c; quo.Agent1_Agent2_Price_Page__c = quo.Agent1_Agent2_Price__c; Salesprofit2 = quo.Agency2_Profit__c; qb.SalesCalculation2 = quo.Agency2_Profit_Rate__c; //HWAG-BLDE6J 带出字段 2020/02/10 end } else { //HWAG-BLDE6J 带出字段 2020/02/11 Start // quo.QuoteName__c = ''; quo = quoList[0]; //再报价新出来的报价名称,把“已取消”三个字去掉 精琢技术 thh 2021-09-30 start Integer QX = quo.Name.indexof('已取消:'); System.debug('Name is ' + quo.Name + ', QX is ' + QX); if (QX >= 0) { quo.Name = quo.Name.subString(QX + 4); } //再报价新出来的报价名称,把“已取消”三个字去掉 精琢技术 thh 2021-09-30 end //报价名称 quo.QuoteName__c = quo.Name; //再报价时是否进行过报价计算设为未进行过报价计算 fy 2021-11-23 start quo.IsQuoteTrial__c = false; //再报价时是否进行过报价计算设为未进行过报价计算 fy 2021-11-23 end quo.Cancel_Decide__c = quo.Cancel_Decide__c; quo.Cancel_Decide__c = false; quo.PriceRefreshDate__c = Date.today(); quo.Quote_Date__c = null; quo.Quote_Print_Date__c = null; //报价总额 quo.QuoteTotal_Page__c = quo.TotalPrice__c; //第一经销商 quo.OCM_Agent1_Price_Page__c = quo.OCM_Agent1_Price__c; //第二经销商 quo.Agent1_Agent2_Price_Page__c = quo.Agent1_Agent2_Price__c; //医院的合同金额 quo.Dealer_Final_Price_Page__c = quo.Dealer_Final_Price__c; //HWAG-BLDE6J 带出字段 2020/02/11 end } // 多年保修 start // quo.Gurantee_Period__c = quoList[0].Gurantee_Period__c; // quo.multiYearWarranty__c = quoList[0].multiYearWarranty__c; // quo.MultiYearWarrantyTotalPrice__c = quoList[0].MultiYearWarrantyTotalPrice__c; // // 多年保修 end // qb.setPriceRefreshPeriodByDate(quo.PriceRefreshDate__c == null ? quo.CreatedDate.Date() : quo.PriceRefreshDate__c); // qb.Estimation_List_Price = quo.Estimation_List_Price__c; // quo.QuoteTotal_Page__c = quo.TotalPrice__c; // quo.Dealer_Final_Price_Page__c = quo.Dealer_Final_Price__c; // qb.Quote_Adjust_Calculate = quo.Quote_Adjust_Calculate__c; // quo.Quote_Adjust_Amount_Page__c = quo.Quote_Adjust_Amount__c; // DisCalculation = quo.Discount_Amount_Calculate__c; // DisAmount = quo.Discount_Amount__c; // quo.Agency1__c = quo.Agency1__c; // AgencyDiscount = quo.AgencyDiscount__c; //2018/09/28 CHAN-B4YAB8 经销商折扣 // quo.OCM_Agent1_Price_Page__c = quo.OCM_Agent1_Price__c; // Salesprofit1 = quo.Agency1_Profit__c; // qb.SalesCalculation1 = quo.Agency1_Profit_Rate__c; // // quo.Agency1_Profit_Rate__c = quo.Agency1_Profit_Rate__c; // quo.Agency2__c = quo.Agency2__c; // quo.Agent1_Agent2_Price_Page__c = quo.Agent1_Agent2_Price__c; // Salesprofit2 = quo.Agency2_Profit__c; // qb.SalesCalculation2 = quo.Agency2_Profit_Rate__c; // quo.Agency2_Profit_Rate__c = quo.Agency2_Profit_Rate__c; } activities = new List(); i = 0; QELine c = new QELine(i); if (items.size() > 0) { for (QuoteLineItem o : items) { c = new QELine(o, i, copyQuoId); activities.add(c); i++; } for (integer j = i; j < quoteEntryMaxLine; j++) { c = new QELine(j); activities.add(c); } } else { activities = new List(); for (i = 0; i < quoteEntryMaxLine; i++) { QELine active_activity = new QELine(i); activities.add(active_activity); } } //****************************************************************************************** // 增加检测产品状态是否发生变化 //****************************************************************************************** // CHAN-BHN7P5 start //全件洗い替えします。 if (activities.size() > 0 && !QuoteDecision) { productStatusUpdated = false; for (QELine a : activities) { if (string.isNotEmpty(a.Asset_Model)) { // CHAN-AVG3PW 询价报价画面规则变更 // 只要更新,就生成新报价编码 if (a.PageObject.SFDA_Status__c != a.latestInfo.SFDA_Status || a.PageObject.Name__c != a.latestInfo.ProductName || a.ListPrice_Page != a.latestInfo.ListPrice || a.PageObject.Cost__c != a.latestInfo.Cost || a.Cost_c != a.latestInfo.Cost // 多年保修 start //计提金额 || a.ProductGuranteePrice != a.latestInfo.Intra_Trade_Gurantee || a.PageObject.productServicePrice__c != a.latestInfo.Intra_Trade_Service // 维修合同报价 || a.Maintenance_Price_Year != a.latestInfo.Maintenance_Price_Year || a.PageObject.GuranteeType__c != a.latestInfo.GuranteeType || a.PageObject.ProductEntend_gurantee_period_all__c != a.latestInfo.ProductEntend_gurantee_period_all //不可取消多年保 询价根据勾不同 自动更新价格 精琢技术 wql 20200924 || a.PageObject.PricebookEntry.Product2.CanNotCancelledGurantee__c != a.latestInfo.CanNotCancelledGurantee //不可取消多年保 询价根据勾不同 自动更新价格 精琢技术 wql 20200924 // 多年保修 end ) { system.debug('qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq:'); system.debug('上次SFDA状态:'+a.PageObject.SFDA_Status__c); system.debug('最新的SFDA状态:'+a.latestInfo.SFDA_Status); system.debug('上次Name__c:'+a.PageObject.Name__c); system.debug('最新的ProductName:'+a.latestInfo.ProductName); system.debug('上次ListPrice:'+a.ListPrice_Page); system.debug('最新的上次ListPrice:'+a.latestInfo.ListPrice); system.debug('上次Cost__c:'+a.Cost_c); system.debug('最新的Cost:'+a.latestInfo.Cost); system.debug('上次Cost__c:'+a.Cost_c); system.debug('最新的Cost:'+a.latestInfo.Cost); system.debug('上次计提金额:'+a.ProductGuranteePrice); system.debug('最新的计提金额:'+a.latestInfo.Intra_Trade_Gurantee); system.debug('上次nodis:'+a.PageObject.productServicePrice__c); system.debug('最新的nodis:'+a.latestInfo.Intra_Trade_Service); system.debug('上次维修合同报价:'+a.Maintenance_Price_Year); system.debug('最新的维修合同报价:'+a.latestInfo.Maintenance_Price_Year); system.debug('上次GuranteeType__c:'+a.PageObject.GuranteeType__c); system.debug('最新的GuranteeType__c:'+a.latestInfo.GuranteeType); system.debug('上次ProductEntend_gurantee_period_all__c:'+a.PageObject.ProductEntend_gurantee_period_all__c); system.debug('最新的ProductEntend_gurantee_period_all__c:'+a.latestInfo.ProductEntend_gurantee_period_all); system.debug('上次CanNotCancelledGurantee__c:'+a.PageObject.PricebookEntry.Product2.CanNotCancelledGurantee__c); system.debug('最新的CanNotCancelledGurantee__c:'+a.latestInfo.CanNotCancelledGurantee); system.debug('newQuoteFlag11:'+newQuoteFlag); newQuoteFlag = true; productStatusUpdated = true; } if (a.pageObject.Name__c != a.latestInfo.ProductName) { a.changed_name = true; productStatusUpdated = true; } if (a.pageObject.SFDA_Status__c != a.latestInfo.SFDA_Status) { a.changed_sfda = true; productStatusUpdated = true; } if (a.ListPrice_Page != a.latestInfo.ListPrice) { a.changed_list = true; productStatusUpdated = true; } if (a.pageObject.Cost__c != a.latestInfo.Cost) { a.changed_cost = true; productStatusUpdated = true; } // TODO katsu SFDAステータスの確認などいらないですか(最新商品XXXの項目も) a.PageObject.SFDA_Status__c = a.latestInfo.SFDA_Status; a.PageObject.Name__c = a.latestInfo.ProductName; a.ListPrice_Page = a.latestInfo.ListPrice; a.PageObject.Cost__c = a.latestInfo.Cost; a.Cost_c = a.latestInfo.Cost; //多年保修 start a.ProductGuranteePrice = a.latestInfo.Intra_Trade_Gurantee; // 计提金额 a.PageObject.productServicePrice__c = a.latestInfo.Intra_Trade_Service; // 维修合同报价 a.Maintenance_Price_Year = a.latestInfo.Maintenance_Price_Year; // 多年保修年限 a.PageObject.ProductEntend_gurantee_period_all__c = a.latestInfo.ProductEntend_gurantee_period_all; a.PageObject.GuranteeType__c = a.latestInfo.GuranteeType; //多年保修 end } } } pageArrange(); // CHAN-BHN7P5 end // CHAN-BHN7P5 原逻辑 start // else { // List product2Ids = New List(); // if (activities.size() > 0) { // for (QELine a : activities) { // if (String.isBlank(a.PageObject.Id__c) == false) { // product2Ids.add(a.PageObject.Id__c); // } // } // } // Map loopMap = new Map(); // if (CheckItem.size() > 0) { // for (QuoteLineItem qli : CheckItem) { // loopMap.put(qli.PricebookEntry.Product2Id, qli); // } // } // // ここを修正したら、NFM007.triggerも要確認 // prd2LatestValMap = new Map(); // if (CheckItem.size() > 0) { // List plo = [Select Id, Name, Estimation_Entry_Possibility__c, SFDA_Status__c, Packing_list_manual__c, // Intra_Trade_List_RMB__c, Foreign_Trade_List_US__c, // Intra_Trade_Cost_RMB__c, Foreign_Trade_Cost_US__c // // 多年保修 start // , Intra_Trade_Gurantee_RMB__c // , Intra_Trade_Service_RMB__c // , Maintenance_Price_Year__c // // 多年保修 end // From Product2 Where Id IN :product2Ids]; // if (plo.size() > 0) { // for (Product2 prd2 : plo) { // Decimal listPrice = 0; // Decimal costPrice = 0; // //多年保修 start // decimal ProductGuranteePrice = 0; // decimal productService = 0; // decimal productMaintenance_Price_Year = 0; // //多年保修 end // if (opp.Trade__c == '内貿') { // listPrice = prd2.Intra_Trade_List_RMB__c; // costPrice = prd2.Intra_Trade_Cost_RMB__c; // //多年保修 start // ProductGuranteePrice = prd2.Intra_Trade_Gurantee_RMB__c; // productService = prd2.Intra_Trade_Service_RMB__c; // productMaintenance_Price_Year = prd2.Maintenance_Price_Year__c == null ? 0 : prd2.Maintenance_Price_Year__c; // //多年保修 end // } else if (opp.Trade__c == '外貿') { // listPrice = prd2.Foreign_Trade_List_US__c; // costPrice = prd2.Foreign_Trade_Cost_US__c; // } // if ( prd2.Name.replaceAll('\\s+', '') != loopMap.get(prd2.Id).Name__c.replaceAll('\\s+', '') || // prd2.SFDA_Status__c != loopMap.get(prd2.Id).SFDA_Status__c || // listPrice != loopMap.get(prd2.Id).ListPrice__c || // costPrice != loopMap.get(prd2.Id).Cost__c // // 多年保修 start // || ( opp.Trade__c == '内貿' && // (ProductGuranteePrice != loopMap.get(prd2.Id).ProductGuranteePrice__c // || productService != loopMap.get(prd2.Id).productServicePrice__c // || productMaintenance_Price_Year != // loopMap.get(prd2.Id).Maintenance_Price_Year__c // )) // // 多年保修 end // ) { // WinOrDecideAlert = true; // } // } // } // } // system.debug('WinOrDecideAlert:::::::2' + WinOrDecideAlert ); // }// CHAN-BHN7P5 原逻辑 end //****************************************************************************************** // 增加检测产品状态是否发生变化==================End 20161115 by ZDF //****************************************************************************************** } // 多年保修 start if (quo.Gurantee_Period__c == null) { quo.Gurantee_Period__c = '1'; } // 多年保修 end //初期値設定 if (accountid != null) { List accs2 = [Select Id, RecordType.DeveloperName, Hospital__c, Agent_Ref__c From Account Where Id = :accountid]; if (accs2.size() > 0) { List accs = new List(); if (accs2[0].RecordType.DeveloperName != 'AgencyContract') { accs = [Select Id, Name, Site, Alias_Name2__c From Account Where Id = :accs2[0].Hospital__c]; } else { accs = [Select Id, Name, Site, Alias_Name2__c From Account Where Id = :accs2[0].Agent_Ref__c]; } if (accs.size() > 0) { options_hp = new List(); if (accs[0].Name != null) { options_hp.add(new SelectOption(accs[0].Name, accs[0].Name)); } if (accs[0].Site != null) { options_hp.add(new SelectOption(accs[0].Site, accs[0].Site)); } if (accs[0].Alias_Name2__c != null) { options_hp.add(new SelectOption(accs[0].Alias_Name2__c, accs[0].Alias_Name2__c)); } //初期値設定 if (quo.Print_HP_Name__c == null) { selection_hp = accs[0].Name; } else { selection_hp = quo.Print_HP_Name__c; } } } } if (quo.Quote_Expiration_Date__c == null) { quo.Quote_Expiration_Date__c = Date.today() + 30; } //--Printbutton if (QuoteCorrect == false) { print_button = true; } else if (verified == false) { print_button = true; } else { print_button = false; } //--SAPButton if (QuoteDecision == false) { sap_button = true; } else if (specialAuthority == false) { sap_button = true; } else { sap_button = false; } //--Decisionbutton if (verified == true) { Decision_button = false; } else if (QuoteCorrect == false) { Decision_button = true; } else if (QuoteDecision == true) { Decision_button = true; } else { Decision_button = false; } // もし、すでに決定ずみの場合、決定ボタンをつかえないようにする if (QuoteSapSented == true || QuoteDecision == true) { Decision_button = true; } //--Savebutton if (QuoteDecision == true) { Save_button = true; } else { Save_button = false; } // CHAN-AVG3PW 询价报价画面规则变更 Datetime cDate = quo.CreatedDate; over3month = cDate != null && cDate.date().addMonths(3) < Date.today(); //SWAG-CKDATG 【委托】【OBSAP-报价委托】报价委托项目改善1 fy start quo.Offer_Amount__c = true; quo.TOTAL__c = true; quo.Preferential_Gurantee_Period__c = true; //SWAG-CKDATG 【委托】【OBSAP-报价委托】报价委托项目改善1 fy end return null; } //Search Events============================================================ // TODO ManualEntryと同様、jsにて解決できる、ここでwebserviceだけを実装、今後 by katsu public PageReference setProductEntry() { system.debug('-----:start'); system.debug('○○○○○○○○○○○○○○○Welcome to setProductEntry!!'); system.debug('▼▼▼▼▼setProduct_text:' + setProduct_text); setOppFromOppInfo(); List productIDLIST = new List(); //既存データ数の確認 Integer currentDetailNumber = 0; for (QELine s : activities) { //データ判定にAsset_Model_Noを使用 if ((s.Asset_Model == null) || (s.Asset_Model == '')) { break; } currentDetailNumber++; } //既存データ数が150以上? if (currentDetailNumber >= quoteEntryMaxLine) { //添加行 errorflg = true; errormessage = System.Label.Error_Message32; PageArrange(); system.debug('-----:強制終了:00'); return null; } // SearchSetProductから、セット品コードは渡ってきたか? if (setProduct_text == null) { // セット品コードが渡ってこなかった場合 // 終了 PageArrange(); system.debug('-----:強制終了:01'); return null; } else { productIDLIST = setProduct_text.split(','); } // セット品明細の ProductId一覧を格納する // pricebookEntry + product2へのクエリのWhere句で使用する List productIds = null; // ---------------------------------------------------------------------------------------- // 該当するセット品明細のレコードを取得 // ---------------------------------------------------------------------------------------- system.debug('-----:Product_Set_Detail__c select start'); //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 Start 增加字段&&增加检索阿西赛多 start List productSetDetails = [SELECT Id, Product__c, Quantity__c, Product_Set__r.Name,Product__r.VenderName__c,Product__r.CanNotCancelledGurantee__c,Product__r.Is_DangerousChemicals__c FROM Product_Set_Detail__c Where Product_Set__c in :productIDLIST]; //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 end 增加字段 system.debug('-----:Product_Set_Detail__c select end'); if (productSetDetails.size() == 0) { PageArrange(); return null; } else { productIds = new List(); for (Product_Set_Detail__c local : productSetDetails) { productIds.add(local.Product__c); } } //=======Temporary===== tmpactivities = activities; //=======Initialize========= activities = new List(); boolean lineflg = false; // ---------------------------------------------------------------------------------------- // Product2へのクエリを実行 // 一度Listで結果を受けた後に、Product2Idの Mapにする // ---------------------------------------------------------------------------------------- system.debug('-----:Product2 select start'); Map items = new Map(); List products = [select Id, Name, ProductCode, Foreign_Trade_Cost_US__c, Foreign_Trade_List_US__c, Intra_Trade_Cost_RMB__c, Intra_Trade_List_RMB__c, //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 Start 增加字段 Asset_Model_No__c, Sales_Possibility__c, Estimation_Entry_Possibility__c,VenderName__c, //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 end 增加字段 SFDA_Status__c, Qty_Unit__c, BSSCategory__c, Packing_list_manual__c, StorageStatus__c // 多年保修 start , Entend_gurantee_period_all__c , Intra_Trade_Gurantee_RMB__c , Intra_Trade_Service_RMB__c , GuranteeType__c // 维修合同价格 , Maintenance_Price_Year__c // 多年保修 end //增加检索 不可取消多年保 2020/08/27 ,CanNotCancelledGurantee__c //增加检索 阿西赛多 2020/09/10 start ,Is_DangerousChemicals__c //外贸多年保 2021/01/04 精琢技术 wql start //维修合同报价(USD) ,Repair_Contract_USD__c //fy 预留产品标识 ,LastbuyProductFLG__c //计提金额(不含税,USD) ,Intra_Trade_Foreign_RMB__c //NoDiscount 金额(USD) ,NoDiscount_Foreign__c //外贸多年保 2021/01/04 精琢技术 wql end //SFDC停止预警 lt 20211009 start ,Estimated_ConsumptionDueDate__c //SFDC停止预警 lt 20211009 end FROM Product2 Where Id IN :productIds And Manual_Entry__c = false]; for (Product2 product : products) { items.put(product.Id, product); } system.debug('-----:Product2 select end'); system.debug('-----:PricebookEntry select start'); Map entries = new Map(); List workEntries = [ SELECT Id, Product2Id FROM PricebookEntry Where Product2Id IN :productIds AND CurrencyIsoCode = :(opp.Trade__c == '外貿' ? 'USD' : 'CNY') AND IsActive = true ]; for (PricebookEntry workEntry : workEntries) { entries.put(workEntry.Product2Id, workEntry); } system.debug('-----:PricebookEntry select end'); // ---------------------------------------------------------------------------------------- // 画面の明細行のループ // ---------------------------------------------------------------------------------------- Integer i = 0; Integer rightcnt = 0; // 成功した数をカウント for (QELine t : tmpactivities) { QELine a = New QELine(i); system.debug('-----:i=' + i + ', currentDetailNumber=' + currentDetailNumber); if (i == currentDetailNumber) { // ---------------------------------------------------------------------------------------- // 一回だけ実行されるコード // ---------------------------------------------------------------------------------------- system.debug('-----:items.size()=' + items.size()); if (items.size() > 0) { // ---------------------------------------------------------------------------------------- // セット品明細のループ // ---------------------------------------------------------------------------------------- system.debug('-----:セット品明細のループスタート'); for (Integer l = 0; l < productSetDetails.size(); l++) { Product_Set_Detail__c nowDetail = productSetDetails[l]; Product2 prd = items.get(nowDetail.product__c); PricebookEntry pbe = entries.get(nowDetail.product__c); if (pbe == null) { system.debug('This Productid(' + nowDetail.product__c + ') is not exist PricebookEntry'); // ---------------------------------------------------------------------------------------- // 取得済みの Product2のリストの中に、セット品明細の情報がみつからない場合 // なにもしないでスルーする // ---------------------------------------------------------------------------------------- } else { // ---------------------------------------------------------------------------------------- // 取得済みの Product2のリストの中に、セット品明細の情報がみつかった // 明細のその Product2の情報をセットする? // ---------------------------------------------------------------------------------------- QELine c = null; Integer Quantity_c = nowDetail.Quantity__c > 0 ? Integer.valueOf(nowDetail.Quantity__c) : 1; if (opp.Trade__c == '外貿') { if (prd.Foreign_Trade_List_US__c > 0 && prd.Foreign_Trade_Cost_US__c > 0) { //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 Start 增加字段&& 增加检索阿西赛多 c = new QELine(i, prd.Is_DangerousChemicals__c,prd.CanNotCancelledGurantee__c,prd.VenderName__c, prd.Estimated_ConsumptionDueDate__c, //20211009 lt add ('',) pbe.Id, prd.Asset_Model_No__c, prd.StorageStatus__c, //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 end 增加字段 prd.ProductCode, nowDetail.product__c, prd.SFDA_Status__c, prd.Sales_Possibility__c, prd.Name, prd.BSSCategory__c, Quantity_c, prd.Foreign_Trade_List_US__c, prd.Foreign_Trade_List_US__c, prd.Foreign_Trade_Cost_US__c, prd.Packing_list_manual__c // 多年保修 start , prd.Entend_gurantee_period_all__c //外贸多年保 取产品主数据上的金额及维修合同报价 精琢技术 wql 2021/01/04 start , prd.Intra_Trade_Foreign_RMB__c , prd.GuranteeType__c , prd.NoDiscount_Foreign__c, prd.Repair_Contract_USD__c //外贸多年保 取产品主数据上的金额及维修合同报价 精琢技术 wql 2021/01/04 end // 多年保修 end ); } else { continue; } } else if (opp.Trade__c == '内貿') { if (prd.Intra_Trade_List_RMB__c > 0 && prd.Intra_Trade_Cost_RMB__c > 0) { //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 Start 增加字段&&增加检索阿西赛多 c = new QELine(i,prd.Is_DangerousChemicals__c,prd.CanNotCancelledGurantee__c,prd.VenderName__c, prd.Estimated_ConsumptionDueDate__c, //20211009 lt add pbe.Id, prd.Asset_Model_No__c, prd.StorageStatus__c, //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 end 增加字段 prd.ProductCode, nowDetail.product__c, prd.SFDA_Status__c, prd.Sales_Possibility__c, prd.Name, prd.BSSCategory__c, Quantity_c, prd.Intra_Trade_List_RMB__c, prd.Intra_Trade_List_RMB__c, prd.Intra_Trade_Cost_RMB__c, prd.Packing_list_manual__c // 多年保修 start , prd.Entend_gurantee_period_all__c , prd.Intra_Trade_Gurantee_RMB__c , prd.GuranteeType__c , prd.Intra_Trade_Service_RMB__c //维修合同报价 , prd.Maintenance_Price_Year__c // 多年保修 end ); } else { continue; } } else { continue; // c = new QELine(i, pbe.Id, prd.Asset_Model_No__c, prd.ProductCode, nowDetail.product__c, prd.SFDA_Status__c, prd.Sales_Possibility__c, prd.Name, prd.BSSCategory__c, // Quantity_c, 0, 0, 0); } activities.add(c); if (i == 149) { // 明細行の最大値に達したら、処理を終了する PageArrange(); system.debug('-----:強制終了:98'); return null; } i++; rightcnt++; lineflg = true; } } system.debug('-----:セット品明細のループ終了'); if (lineflg == true) { i--; } } else { // ---------------------------------------------------------------------------------------- // Product2へのクエリが結果を返さなかった時に実行されるコード // ---------------------------------------------------------------------------------------- a = t; a.lineNo = i; activities.add(a); } } else { // ---------------------------------------------------------------------------------------- // Product2へクエリを投げない時に実行されるコード // ---------------------------------------------------------------------------------------- a = t; a.lineNo = i; activities.add(a); } i++; if (i > 149) { break; } } PageArrange(); if (productSetDetails.size() > 0) { errorflg = true; errormessage = productSetDetails[0].Product_Set__r.Name + ' 导入结束,导入 ' + productSetDetails.size() + ' 件,成功' + rightcnt + ' 件'; } system.debug('-----:終了:' + errormessage); return null; } // xudan 20140626 行追加ロジック実装 public void addRow() { List tmpQELine = new List(); system.debug('添加行size:'+activities.size()); system.debug('需要添加行:'+rowIdx); for (Integer i = 0; i < activities.size(); i++) { if (i < rowIdx) { tmpQELine.add(activities[i]); } else if ( i == rowIdx) { tmpQELine.add(new QELine(i)); } else { tmpQELine.add(activities[i - 1]); tmpQELine[tmpQELine.size() - 1].lineNo = i; } } activities = new List(); activities.addAll(tmpQELine); PageArrange(); } //添加行 public void addMultipleRow() { List tmpQELine = new List(); //页面上的输入框追加 (只能在末尾追加) Integer lineRows = activities.size() + rowIdx; if(lineRows>0 && lineRows>activities.size()&&activities.size()>0){ //页面输入0或负数都不应该继续执行 for (Integer i = 0; i < lineRows; i++) { if (i < activities.size()) { tmpQELine.add(activities[i]); } else{ tmpQELine.add(new QELine(i)); } } system.debug('tmpQELine:'+tmpQELine); //如果发生行数变化 则后台最大报价行也更新 if(quoteEntryMaxLine < lineRows){ quoteEntryMaxLine = lineRows; } //重画页面 重画新增行 activities = new List(); activities.addAll(tmpQELine); PageArrange(); } } //excelImport public PageReference excelImport() { system.debug('○○○○○○○○○○○○○○○Welcome to excelImport!!'); system.debug('▼▼▼▼▼excel_text:' + excel_text); //oppに画面の値を設定 setOppFromOppInfo(); errorflg = false; errormessage = null; //既存データ数の確認 Integer j = 0; for (QELine s : activities) { //データ判定にAsset_Model_Noを使用 if ((s.Asset_Model == null) || (s.Asset_Model == '')) { break; } j++; } //=======Temporary===== tmpactivities = activities; //=======Initialize========= activities = new List(); //List items = New List(); Integer i = 0; Integer xlscnt = 0; Integer rightcnt = 0; // 成功した数をカウント string[] xlslists = excel_text.split('\n', -1); List xlslist = New list(); List codelist = New List(); List Quantitylist = New List(); //String str ; Map mp = new Map(); string xlscode; Integer xlsQuantity; try { for (string xls : xlslists) { if (xls == null || xls == '') { //null } else { xlscode = null; xlsQuantity = null; xlslist = xls.split('\t', -1); for (String s : xlslist) { //odd number or even number if (math.mod(i, 2) != 0) { //odd number if (s == '' || s == null) { errorflg = true; errormessage = System.Label.Error_Message31; activities = tmpactivities; pageArrange(); return null; } else { s = s.trim(); xlsQuantity = Integer.valueOf(s); Quantitylist.add(xlsQuantity); } } else { //even number if (s == '' || s == null) { errorflg = true; errormessage = System.Label.Error_Message31; activities = tmpactivities; pageArrange(); return null; } else { s = s.trim(); codelist.add(s); xlscode = s; } } i++; } //mp.put(xlscode, xlsQuantity); xlscnt++; } } } catch (Exception ex) { activities = tmpactivities; errorflg = true; errormessage = System.Label.Error_Message31; pageArrange(); return null; } system.debug(j); system.debug('xlscnt:::::' + xlscnt); if (codelist.size() == 0 || Quantitylist.size() == 0) { activities = tmpactivities; errorflg = true; errormessage = System.Label.Error_Message31; pageArrange(); return null; } xlscnt = j + xlscnt; if (xlscnt > quoteEntryMaxLine) { activities = tmpactivities; errorflg = true; errormessage = System.Label.Error_Message32; pageArrange(); return null; } i = 0; boolean lineflg = false; for (QELine t : tmpactivities) { if (i == j) { Map mpProduct2 = new Map(); // keyがProductCodeです。 // Celon询价修改 20220513 ssm start String celon_type = String.isNotBlank(oppInfo.CelonOpportunity) ? oppInfo.CelonOpportunity : null; List items = [select Id, Name, ProductCode, Foreign_Trade_Cost_US__c, Foreign_Trade_List_US__c, Intra_Trade_Cost_RMB__c, Intra_Trade_List_RMB__c, //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 Start 增加字段 Asset_Model_No__c, Sales_Possibility__c, Estimation_Entry_Possibility__c,VenderName__c, //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 end 增加字段 SFDA_Status__c, Qty_Unit__c, BSSCategory__c, Packing_list_manual__c, StorageStatus__c // 多年保修 start , Entend_gurantee_period_all__c , Intra_Trade_Gurantee_RMB__c , Intra_Trade_Service_RMB__c , GuranteeType__c // 维修合同报价 , Maintenance_Price_Year__c // 多年保修 end //增加检索 不可取消多年保 2020/08/27 ,CanNotCancelledGurantee__c //增加检索 阿西赛多 2020/09/10 ,Is_DangerousChemicals__c //外贸多年保 2021/01/04 精琢技术 wql start //维修合同报价(USD) ,Repair_Contract_USD__c //计提金额(不含税,USD) ,Intra_Trade_Foreign_RMB__c //NoDiscount 金额(USD) ,NoDiscount_Foreign__c //外贸多年保 2021/01/04 精琢技术 wql end //SFDC停止预警 lt 20211009 start ,Estimated_ConsumptionDueDate__c //SFDC停止预警 lt 20211009 end FROM Product2 Where ProductCode In :codelist // Celon询价 And Celon_Product__c = :celon_type // Celon询价 And Manual_Entry__c = false]; for (Product2 prd : items) { system.debug('prd.ProductCode:::::' + prd.ProductCode); mpProduct2.put(prd.ProductCode, prd); } Map entries = new Map(); // keyがProductCodeです。 List pbes = [ select Id, PricebookEntry.Product2.ProductCode FROM PricebookEntry Where PricebookEntry.Product2.ProductCode IN :codelist AND CurrencyIsoCode = :(opp.Trade__c == '外貿' ? 'USD' : 'CNY') AND IsActive = true]; for (PricebookEntry pbe : pbes) { system.debug('pbe.Product2.ProductCode:::::' + pbe.Product2.ProductCode); entries.put(pbe.Product2.ProductCode, pbe); } for (Integer l = 0; l < codelist.size(); l++) { system.debug('codelist[l]:::::' + codelist[l]); Product2 prd = mpProduct2.get(codelist[l]); if (prd != null) { PricebookEntry pbe = entries.get(codelist[l]); QELine c = null; if (pbe != null && (opp.Trade__c == '外貿' || opp.Trade__c == '内貿')) { if (opp.Trade__c == '外貿') { if (prd.Foreign_Trade_List_US__c > 0 && prd.Foreign_Trade_Cost_US__c > 0) { //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 Start 增加字段&&增加阿西赛多 c = new QELine(i,prd.Is_DangerousChemicals__c,prd.CanNotCancelledGurantee__c, prd.VenderName__c, prd.Estimated_ConsumptionDueDate__c,//20211009 lt add ('',) pbe.Id, prd.Asset_Model_No__c, prd.StorageStatus__c, prd.ProductCode, prd.Id, prd.SFDA_Status__c, prd.Sales_Possibility__c, prd.Name, prd.BSSCategory__c, //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 end 增加字段 Quantitylist[l], prd.Foreign_Trade_List_US__c, prd.Foreign_Trade_List_US__c, prd.Foreign_Trade_Cost_US__c, prd.Packing_list_manual__c // 多年保修 start //外贸多年保 取产品主数据上的金额及维修合同报价 精琢技术 wql 2021/01/04 start , prd.Entend_gurantee_period_all__c , prd.Intra_Trade_Foreign_RMB__c , prd.GuranteeType__c , prd.NoDiscount_Foreign__c, prd.Repair_Contract_USD__c //外贸多年保 取产品主数据上的金额及维修合同报价 精琢技术 wql 2021/01/04 end // 多年保修 end ); } else { continue; } } else { if (prd.Intra_Trade_List_RMB__c > 0 && prd.Intra_Trade_Cost_RMB__c > 0) { //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 Start 增加字段&&增加检索阿西赛多 c = new QELine(i,prd.Is_DangerousChemicals__c,prd.CanNotCancelledGurantee__c,prd.VenderName__c, prd.Estimated_ConsumptionDueDate__c,//20211009 lt add pbe.Id, prd.Asset_Model_No__c, prd.StorageStatus__c, prd.ProductCode, prd.Id, prd.SFDA_Status__c, prd.Sales_Possibility__c, prd.Name, prd.BSSCategory__c, //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 end 增加字段 Quantitylist[l], prd.Intra_Trade_List_RMB__c, prd.Intra_Trade_List_RMB__c, prd.Intra_Trade_Cost_RMB__c, prd.Packing_list_manual__c // 多年保修 start , prd.Entend_gurantee_period_all__c , prd.Intra_Trade_Gurantee_RMB__c , prd.GuranteeType__c , prd.Intra_Trade_Service_RMB__c , prd.Maintenance_Price_Year__c // 多年保修 end ); } else { continue; } } } else { continue; // c = new QELine(i, pbe.Id, prd.Asset_Model_No__c, prd.ProductCode, prd.Id, prd.SFDA_Status__c, prd.Sales_Possibility__c, prd.Name, prd.BSSCategory__c, // Quantitylist[l], 0, 0, 0); // pbe ない時も追加する、setProductEntry() のロジックと違います。 } activities.add(c); i++; rightcnt++; lineflg = true; } } if (lineflg == true) { i--; } else { // 20140507,LW修改。 // 当导入的所有商品都不成功时,当前明细行什么都没有做,并且i加一。导致下面循环New QELine(t, i)中i错误。 // 修改为:当导入的所有商品都不成功时,当前明细行插入一个空行,之后i加一。 QELine a = New QELine(t, i); activities.add(a); } } else { QELine a = New QELine(t, i); activities.add(a); } i++; if (i > 149) { break; } } // messageを出す errorflg = true; errormessage = '数据导入结束,导入 ' + codelist.size() + ' 件,成功' + rightcnt + ' 件'; pageArrange(); return null; } //販売店1 public void getSalesId1() { system.debug('○○○○○○○○○○○○○○○Welcome to getSalesId1!!'); system.debug('▼▼▼▼▼SalesId1:' + SalesId1); //oppに画面の値を設定 setOppFromOppInfo(); errorflg = false; errormessage = null; List accs = New List(); accs = [select Id, Name, Sales_Shop_Class__c From Account Where Id = :SalesId1]; If (accs.size() > 0) { SalesShopClass1 = accs[0].Sales_Shop_Class__c; opp.Agency1__c = accs[0].Id; } pageArrange(); } //販売店2 public void getSalesId2() { system.debug('○○○○○○○○○○○○○○○Welcome to getSalesId2!!'); system.debug('▼▼▼▼▼SalesId2:' + SalesId2); //oppに画面の値を設定 setOppFromOppInfo(); errorflg = false; errormessage = null; List accs = New List(); accs = [select Id, Name, Sales_Shop_Class__c From Account Where Id = :SalesId2]; If (accs.size() > 0) { SalesShopClass2 = accs[0].Sales_Shop_Class__c; opp.Agency2__c = accs[0].Id; } pageArrange(); } //Button Ivents============================================================ //cancel button public void cancel() { system.debug('○○○○○○○○○○○○○○○Welcome to CancelButton!!'); system.debug('selection_hp' + selection_hp); } //PriceStatusUpdate button、TODO productCompare(jsのところ)1件ずつ検索していますが、今後、webserviceを使って一括か高速かできます。 public void PriceStatusUpdate() { system.debug('○○○○○○○○○○○○○○○Welcome to PriceStatusUpdate!!'); //oppに画面の値を設定 setOppFromOppInfo(); errorflg = false; errormessage = null; //全件洗い替えします。 if (activities.size() > 0) { for (QELine a : activities) { if ((a.Asset_Model != null) && (a.Asset_Model != '')) { // CHAN-AVG3PW 询价报价画面规则变更 // 只要更新,就生成新报价编码 if (a.PageObject.SFDA_Status__c != a.latestInfo.SFDA_Status || a.PageObject.Name__c != a.latestInfo.ProductName || a.ListPrice_Page != a.latestInfo.ListPrice || a.PageObject.Cost__c != a.latestInfo.Cost || a.Cost_c != a.latestInfo.Cost // 多年保修 start //计提金额 || a.ProductGuranteePrice != a.latestInfo.Intra_Trade_Gurantee || a.PageObject.productServicePrice__c != a.latestInfo.Intra_Trade_Service // 维修合同报价 || a.Maintenance_Price_Year != a.latestInfo.Maintenance_Price_Year // 多年保修 end ) { system.debug('qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq:'); system.debug('上次SFDA状态:'+a.PageObject.SFDA_Status__c); system.debug('最新的SFDA状态:'+a.latestInfo.SFDA_Status); system.debug('上次Name__c:'+a.PageObject.Name__c); system.debug('最新的ProductName:'+a.latestInfo.ProductName); system.debug('上次ListPrice:'+a.ListPrice_Page); system.debug('最新的上次ListPrice:'+a.latestInfo.ListPrice); system.debug('上次Cost__c:'+a.Cost_c); system.debug('最新的Cost:'+a.latestInfo.Cost); system.debug('上次Cost__c:'+a.Cost_c); system.debug('最新的Cost:'+a.latestInfo.Cost); system.debug('上次计提金额:'+a.ProductGuranteePrice); system.debug('最新的计提金额:'+a.latestInfo.Intra_Trade_Gurantee); system.debug('上次nodis:'+a.PageObject.productServicePrice__c); system.debug('最新的nodis:'+a.latestInfo.Intra_Trade_Service); system.debug('上次维修合同报价:'+a.Maintenance_Price_Year); system.debug('最新的维修合同报价:'+a.latestInfo.Maintenance_Price_Year); system.debug('newQuoteFlag6:'+newQuoteFlag); newQuoteFlag = true; } if (a.pageObject.Name__c != a.latestInfo.ProductName) { a.changed_name = true; } if (a.pageObject.SFDA_Status__c != a.latestInfo.SFDA_Status) { a.changed_sfda = true; } if (a.ListPrice_Page != a.latestInfo.ListPrice) { a.changed_list = true; } if (a.pageObject.Cost__c != a.latestInfo.Cost) { a.changed_cost = true; } // TODO katsu SFDAステータスの確認などいらないですか(最新商品XXXの項目も) a.PageObject.SFDA_Status__c = a.latestInfo.SFDA_Status; a.PageObject.Name__c = a.latestInfo.ProductName; a.ListPrice_Page = a.latestInfo.ListPrice; a.PageObject.Cost__c = a.latestInfo.Cost; a.Cost_c = a.latestInfo.Cost; //多年保修 start a.PageObject.ProductGuranteePrice__c = a.latestInfo.Intra_Trade_Gurantee; a.PageObject.GuranteeType__c = a.latestInfo.GuranteeType; // 计提金额 a.PageObject.productServicePrice__c = a.latestInfo.Intra_Trade_Service; // 多年保修年限 a.PageObject.ProductEntend_gurantee_period_all__c = a.latestInfo.ProductEntend_gurantee_period_all; // 维修合同报价 a.Maintenance_Price_Year = a.latestInfo.Maintenance_Price_Year; //多年保修 end } } productStatusUpdated = true; } pageArrange(); } //Save button public PageReference Save() { // Boolean ifdecide=false; // List oppsde = [Select Id, Estimation_Decision__c From Opportunity Where Id = : oppId]; // if (oppsde.size() > 0) { // if(oppsde[0].Estimation_Decision__c){ // ifdecide=true; // }else{ // ifdecide=false; // } // } // system.debug('oppsde:::::::1' + oppsde ); // if(!ifdecide){ setOppFromOppInfo(); System.debug('Save() start at: ' + System.currentTimeMillis()); system.debug('WinOrDecideAlert:::::::3' + WinOrDecideAlert ); errorflg = false; errormessage = null; errorMessagechack = null; Savepoint sp = Database.setSavepoint(); try { // 2022-04-19 营业部门需求 没有行项目不能保存 ssm start if (activities != null && activities.size() > 0) { QELine line1 = activities[0]; // System.debug('Save() line1: ' + line1); // System.debug('line1 != null: ' + (line1 != null)); // System.debug('line1.pageObject.PricebookEntryId != null: ' + (line1.pageObject.PricebookEntryId != null)); // System.debug('isNotBlank(line1.pageObject.PricebookEntryId): ' + (String.isNotBlank(line1.pageObject.PricebookEntryId))); // System.debug('Save() line1 flag: ' + (!(line1 != null && String.isNotBlank(line1.pageObject.PricebookEntryId)))); if (!(line1 != null && String.isNotBlank(line1.pageObject.PricebookEntryId))) { errorflg = true; errorMessage = '不允许保存空的报价单,请选择产品'; return null; } } // 2022-04-19 ssm end // CHAN-AVG3PW 询价报价画面规则变更 // 报价创建日超过三个月时,点保存时强制更新 // CHAN-AZG864 不管在不在报价有效期内,CFDA不可销售的时候,都是报错的,其中不可销售产品显示红字,不应该保存。 if (WinOrDecideAlert && (!productStatusUpdated)) { errorflg = true; errorMessage = '产品状态发生变化,请更新'; return null; } if (checkSFDAStatus1(false) == false) { errorflg = true; errormessage = '请更新不可销售的产品。'; return null; } System.debug('checkSFDAStatus1 finished at: ' + System.currentTimeMillis()); //データチェック if (dataCheck() == false) { return null; } System.debug('dataCheck finished at: ' + System.currentTimeMillis()); // LHJ 授权check Start if (enableSales == true && opp.Trade__c == '内貿') { //经销商产品注册证匹配 Map proMap = new Map(); if (activities.size() > 0) { for (QELine qli : activities) { if (qli.Asset_Model != null && qli.Asset_Model != '') { proMap.put(qli.pageObject.Id__c, qli.PageObject.Name__c); } } } // GZW 画面出错误消息 Map chkMap = OpportunityWebService.MapCheckProRegisterDecide(proMap, opp.Agency1__c, ''); //this.haveno_Register 没有注册证 状态红色 //this.wrong_Register 匹配不上 名字红色 if (chkMap.size() > 0) { errorflg = true; //阿西塞多 取消该检查 if (chkMap.containsKey('agency')&&!opp.Is_Corrosion__c) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '第一经销商没有有效的医疗器械经营许可证。')); } Integer inerr = 0; if (activities.size() > 0) { for (QELine s : activities) { if (s.Asset_Model != null && s.Asset_Model != '') { s.haveno_Register = false; s.wrong_Register = false; if (chkMap.containsKey(s.PageObject.Id__c)) { if (chkMap.get(s.PageObject.Id__c) == '1') { s.haveno_Register = true; inerr ++; } else if (chkMap.get(s.PageObject.Id__c) == '2') { s.wrong_Register = true; inerr ++; } } } } } if (inerr > 0) { errorMessagechack = '请检查红字内容(NMPA状态红字,不可销售产品;产品名称红字,超过经销商经营范围)。'; } } //阿西赛多 是否危险化学品经营许可证 保存提示可以保存 decide提示不可decide 精琢技术 wql 2020/12/30 start //询价是阿西赛多 判断标识 Boolean isDangerError = false; //询价不是阿西赛多 判断标识 Boolean isNotDangerError = false; //条件是 内贸 && 经销商 && 是否是阿西赛多 为true //没有合并在上面的for循环的原因是,怕有冲突将标识置为false if (activities.size() > 0) { for (QELine qli : activities) { if (qli.Asset_Model != null && qli.Asset_Model != '') { //阿西赛多 页面提示报错信息 2020/12/30 start //如果询价是阿西赛多 则选择一般产品的标红 system.debug('是否阿西赛多询价'); system.debug(opp.Is_Corrosion__c); if (opp.Is_Corrosion__c) { //不是危化品 if(!qli.Is_DangerousChemicals){ //提示报错 isNotDangerError =true; //名称报红 qli.wrong_Register = true; } }else{ //如果询价不是阿西赛多,则选择危化品的标红 if(qli.Is_DangerousChemicals){ //提示报错 isDangerError =true; //名称报红 qli.wrong_Register = true; } } //阿西赛多 页面提示报错信息 wql 2020/12/30 end } } } if (opp.Is_Corrosion__c) { String str = OpportunityWebService.checkDangerItem(opp.agency1__c); if (str != 'OK') { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, str)); } system.debug('不是危化品标识:'+isNotDangerError); //代表行项目有不是危化品的 if(isNotDangerError){ //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '当阿西塞多时,行项目的产品必须全选择危化品。')); errorflg = true; errormessage = '当阿西塞多时,行项目的产品必须全选择危化品。'; return null; } }else{ system.debug('危化品标识:'+isDangerError); //代表行项目有危化品 if(isDangerError){ //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '当询价不是阿西塞多时,行项目的产品不能选择危化品。')); errorflg = true; errormessage = '当询价不是阿西塞多时,行项目的产品不能选择危化品。'; return null; } } system.debug('阿西赛多~~~~~end'); //阿西赛多 是否危险化学品经营许可证 保存提示可以保存 decide提示不可decide 精琢技术 wql 2020/12/30 end } // LHJ End System.debug('pageCheck finished at: ' + System.currentTimeMillis()); PageReference pageRef = new PageReference('/' + oppid); if (dataEntry() == false) { //msg return null; } else { System.debug('data save finished at: ' + System.currentTimeMillis()); //msg errorflg = true; errorMessage = System.Label.Message_002; return null; } } catch (DmlException de) { Database.rollback(sp); errorflg = true; errormessage = de.getDmlMessage(0); // 1件目のエラーのみ表示 system.debug(Logginglevel.ERROR, de.getMessage()); system.debug(Logginglevel.ERROR, de.getStackTraceString()); } catch (Exception e) { Database.rollback(sp); errorflg = true; errormessage = e.getMessage(); system.debug(Logginglevel.ERROR, e.getMessage()); system.debug(Logginglevel.ERROR, e.getStackTraceString()); } // } // else{ // errorflg = true; // errormessage = '该询价已经decide,不可再修改'; // return null; // } return null; } //OppReflection button public PageReference OppReflection() { //oppに画面の値を設定 setOppFromOppInfo(); Savepoint sp = Database.setSavepoint(); try { errorflg = false; errormessage = null; // CHAN-AVG3PW 询价报价画面规则变更 // 报价创建日超过三个月时,点保存时强制更新 // CHAN-AZG864 不管在不在报价有效期内,CFDA不可销售的时候,都是报错的,其中不可销售产品显示红字,不应该保存。 // 2022-04-19 XYOU-CDLCMM 没有行项目不能保存 ssm start if (activities != null && activities.size() > 0) { QELine line1 = activities[0]; // System.debug('Save() line1: ' + line1); // System.debug('line1 != null: ' + (line1 != null)); // System.debug('line1.pageObject.PricebookEntryId != null: ' + (line1.pageObject.PricebookEntryId != null)); // System.debug('isNotBlank(line1.pageObject.PricebookEntryId): ' + (String.isNotBlank(line1.pageObject.PricebookEntryId))); // System.debug('Save() line1 flag: ' + (!(line1 != null && String.isNotBlank(line1.pageObject.PricebookEntryId)))); if (!(line1 != null && String.isNotBlank(line1.pageObject.PricebookEntryId))) { errorflg = true; errorMessage = '不允许保存空的报价单,请选择产品'; return null; } } // 2022-04-19 ssm end if (WinOrDecideAlert && (!productStatusUpdated)) { errorflg = true; errorMessage = '产品状态发生变化,请更新'; return null; } if (checkSFDAStatus1(false) == false) { errorflg = true; errormessage = '请更新不可销售的产品。'; return null; } //データチェック if (dataCheck() == false) { return null; } PageReference pageRef = new PageReference('/' + oppid); if (dataEntry() == false) { //msg return null; } else { //msg return pageRef; } } catch (DmlException de) { Database.rollback(sp); errorflg = true; errormessage = de.getDmlMessage(0); // 1件目のエラーのみ表示 system.debug(Logginglevel.ERROR, de.getMessage()); system.debug(Logginglevel.ERROR, de.getStackTraceString()); } catch (Exception e) { Database.rollback(sp); errorflg = true; errormessage = e.getMessage(); system.debug(Logginglevel.ERROR, e.getMessage()); system.debug(Logginglevel.ERROR, e.getStackTraceString()); } return null; } //QuoteDecisionButton public PageReference QuoteDecision() { system.debug('○○○○○○○○○○○○○○○Welcome to QuoteDecision!!'); Savepoint sp = Database.setSavepoint(); try { //oppに画面の値を設定 setOppFromOppInfo(); if (WinOrDecideAlert && (!productStatusUpdated)) { errorflg = true; errorMessage = '产品状态发生变化,请更新'; return null; } errorflg = false; errormessage = null; //20220214 fy lastbuy start if (!oppInfo.is_changed_opp) { if(!ReservedProductVerification()){ system.debug('flglastbuy++++'+flglastbuy); if(flglastbuy==1){ errorflg = true; errormessage = '预留产品表中没有该询价,请通过本部窗口联系营业管理课' ; return null; }else if(flglastbuy==2){ errorflg = true; errormessage = errorProductmodel+'产品数量不可超过产品预留数量' ; return null; }else if(flglastbuy==3){ errorflg = true; errormessage = '预留产品'+errorProductmodel+'未录入预留产品表'; return null; } } } //20220214 fy lastbuy end // 2022-01-12 ssm 报价计算check if (checkIsQuoteTrial()) { errorflg = true; return null; } if (enableSales == true) { //販売店状態チェック if (dataCheckDecide() == false) { return null; } } system.debug('zzzzzzzz2:'); // CHAN-AVG3PW 询价报价画面规则变更 if (checkSFDAStatus2(true) == false) { errorflg = true; errormessage = '请更新不可销售的产品。'; return null; } PageReference pageRef = new PageReference('/' + oppid); if (dataCheck() == false) { return null; } // 2022-04-06 SWAG-CC6AFQ【委托】又有询价跳过了报价计算 ssm start // 判断条件修改 // 1.如果保存方法返回false,return // 2.如果保存通过但创建了新报价,return // 3.继续做decide if (dataEntry() == false) { return null; } //SWAG-CC6AFQ【委托】又有询价跳过了报价计算 fy start if(SkipQuotefilg){ errorflg = true; errormessage = '产品配置或者经销商信息发生变化,已经生成新的报价单,请重新操作报价计算'; quo.IsQuoteTrial__c = false; return null; } //SWAG-CC6AFQ【委托】又有询价跳过了报价计算 fy end //引合に見積決定をオン if (oppId == null) { system.debug('Error is Opportunityid null!!!'); } else { List opps = [Select Id, Estimation_Decision__c From Opportunity Where Id = : oppId]; if (opps.size() > 0) { opps[0].Estimation_Decision__c = true; /*↓↓↓見積同期↓↓↓2012/11/28 未使用 opps[0].SyncedQuoteId = quoId; ↑↑↑    ↑↑↑*/ // SWAG-CER5R4 优化保存速度 start // ControllerUtil.updOpp(opps[0]); StaticParameter.EscapeOppandStaTrigger = true; update opps[0]; StaticParameter.EscapeOppandStaTrigger = false; // SWAG-CER5R4 优化保存速度 end } errorflg = true; errorMessage = System.Label.Message_002; // cic 134906 start Quote q = [select Id from Quote where Id = :quoId]; q.Quote_Decision_Date__c = date.Today(); update q; // cic 134906 end QuoteDecision = true; enableContract = true; //--Savebutton Save_button = true; //--Decisionbutton判定 if (verified == true) { Decision_button = false; } else if (QuoteCorrect == false) { Decision_button = true; } else if (QuoteDecision == true) { Decision_button = true; } else { Decision_button = false; } //--SAPButton if (QuoteDecision == false) { sap_button = true; } else if (specialAuthority == false) { sap_button = true; } else { sap_button = false; } //--決定ボタン使えないようにする Decision_button = true; pageArrange(); } // 2022-04-06 SWAG-CC6AFQ【委托】又有询价跳过了报价计算 ssm end } catch (DmlException de) { Database.rollback(sp); errorflg = true; errormessage = de.getDmlMessage(0); // 1件目のエラーのみ表示 system.debug(Logginglevel.ERROR, de.getMessage()); system.debug(Logginglevel.ERROR, de.getStackTraceString()); } catch (Exception e) { Database.rollback(sp); errorflg = true; errormessage = e.getMessage(); system.debug(Logginglevel.ERROR, e.getMessage()); system.debug(Logginglevel.ERROR, e.getStackTraceString()); } //return pageRef; return null; } //PrintButton public PageReference Print() { Savepoint sp = Database.setSavepoint(); try { //oppに画面の値を設定 setOppFromOppInfo(); errorflg = false; errormessage = null; system.debug('○○○○○○○○○○○○○○○Welcome to Print!!'); PageReference pageRef; //Decide前or後 if (QuoteDecision == true) { //NoSave } else { // CHAN-AVG3PW 询价报价画面规则变更 // 报价创建日超过三个月时,点保存时强制更新 // CHAN-AZG864 不管在不在报价有效期内,CFDA不可销售的时候,都是报错的,其中不可销售产品显示红字,不应该保存。 if (WinOrDecideAlert && (!productStatusUpdated)) { errorflg = true; errorMessage = '产品状态发生变化,请更新'; return null; } //データチェック if (dataCheck() == false ) { return null; } if (dataEntry() == false) { //msg return null; } } //引合に見積提出日を保存 List opps = New List(); if (oppId == null) { } else { // 打印时,不再更新决定报价 opps = [Select Id //, Estimation_Decision__c From Opportunity Where Id = : oppId]; if (opps.size() > 0) { //見積に見積印刷日を保存 List quos = New List(); if (quoId == null) { //印刷させない? } else { // 打印时,不再更新决定报价 quos = [Select Id, //Quote_Decision__c, Quote_Print_Date__c, Quote_Date__c From Quote Where Id = : quoId]; if (quos.size() > 0) { //优惠成交价 quos[0].Preferential_Trading_Price__c = quo.Preferential_Trading_Price__c; //优惠折扣 quos[0].Discount__c = quo.Discount__c; //优惠价格 quos[0].Pricing__c = quo.Pricing__c; //单价 quos[0].Unit_Price__c = quo.Unit_Price__c; //报价金额 quos[0].Offer_Amount__c = quo.Offer_Amount__c; //Total quos[0].TOTAL__c = quo.TOTAL__c; //契約内容 quos[0].Contract__c = quo.Contract__c; //多年保修 start quos[0].Preferential_Gurantee_Period__c = quo.Preferential_Gurantee_Period__c; //多年保修 end if (quos[0].Quote_Date__c == null) { quos[0].Quote_Date__c = date.Today(); opps[0].Estimation_Proposal_Date__c = date.Today(); // SWAG-CER5R4 优化保存速度 start // ControllerUtil.updOpp(opps[0]); StaticParameter.EscapeOppandStaTrigger = true; update opps[0]; StaticParameter.EscapeOppandStaTrigger = false; // SWAG-CER5R4 优化保存速度 end } quos[0].Quote_Print_Date__c = date.Today(); ControllerUtil.updQuote(quos[0]); } } } } pageArrange(); } catch (DmlException de) { Database.rollback(sp); errorflg = true; errormessage = de.getDmlMessage(0); // 1件目のエラーのみ表示 system.debug(Logginglevel.ERROR, de.getMessage()); system.debug(Logginglevel.ERROR, de.getStackTraceString()); } catch (Exception e) { Database.rollback(sp); errorflg = true; errormessage = e.getMessage(); system.debug(Logginglevel.ERROR, e.getMessage()); system.debug(Logginglevel.ERROR, e.getStackTraceString()); } return null; } //BackButton public PageReference Back() { return new Pagereference('/' + oppid); } public PageReference Jump() { System.debug('报价id1:'+quoId); //SWAG-C9JCS8 【委托】【紧急】询价GZ-SP-GD0757135报价单问题 fy start Boolean isDecide = checkIsDecide(); System.debug('询价:' + oppid + '|是否decide: ' + isDecide); //SWAG-C9JCS8 【委托】【紧急】询价GZ-SP-GD0757135报价单问题 fy end // LHJ 授权check Start if (opp.If_Need_Authorize__c == true) { ID tmpid = opp.Agency2__c == null ? opp.Agency1__c : opp.Agency2__c; List accName = [select name from Account where id = : tmpid]; //授权前允许进行报价试算 精琢技术 thh 2021-09-30 // if (accName[0].name != opp.Authorized_Finish_Sales__c) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '请先授权后,再进行报价试算。')); // }else{ //报价试算点击时,保存行项目 精琢技术 wql 2021/05/07 start if (!isDecide) { Save(); } else { errorflg = true; errorMessage = System.Label.Message_002; } //报价试算点击时,保存行项目 精琢技术 wql 2021/05/07 end //报价试算点击时,如果保存了会生成新的报价,进入新报价的报价试算页面 精琢技术 thh 2021-09-30 start Quote jump = [select id from Quote where Quote_No__c = :quo.Quote_No__c]; System.debug('报价id2:'+jump.Id); if(errorMessage == System.Label.Message_002){ return new Pagereference('/apex/QuoteTrial?Id=' + jump.Id); } return null; //报价试算点击时,如果保存了会生成新的报价,进入新报价的报价试算页面 精琢技术 thh 2021-09-30 end // } }else{ //报价试算点击时,保存行项目 精琢技术 wql 2021/05/07 start if (!isDecide) { Save(); } //报价试算点击时,保存行项目 精琢技术 wql 2021/05/07 end System.debug('报价id2:'+quoId); return new Pagereference('/apex/QuoteTrial?Id=' + quoId); } return null; } // 0表示 対策 private void pageArrange() { if (activities.size() > 0) { for (QELine a : activities) { if ((a.Asset_Model == null) || (a.Asset_Model == '')) { system.debug('○○○○○○○○○○○○Welcome to pageArrange Asset_Model is △'); a.pageobject.subtotal__c = null; a.ListPrice_Page = null; } else { system.debug('○○○○○○○○○○○○Welcome to pageArrange Asset_Model=[' + a.Asset_Model + ']'); } } } if (quo.OCM_Agent1_Price_Page__c == null) { Salesprofit1 = null; qb.SalesCalculation1 = null; } if (quo.Agent1_Agent2_Price_Page__c == null) { Salesprofit2 = null; qb.SalesCalculation2 = null; } } public boolean dataCheck() { //WinOrDecideAlert = false; system.debug('○○○○○○○○○○○○Welcome to dataCheck class!!○○○○○○○○○○○○'); errorflg = false; errormessage = null; Boolean error = false; integer Gcnt = 0; List product2Ids = New List(); if (activities.size() > 0) { system.debug('save:::'+activities); for (QELine a : activities) { if (String.isBlank(a.PageObject.Id__c) == false) { product2Ids.add(a.PageObject.Id__c); } } Map loopMap = new Map(); if (CheckItem != null) { Gcnt = CheckItem.size(); if (CheckItem.size() > 0) { for (QuoteLineItem qli : CheckItem) { loopMap.put(qli.PricebookEntry.Product2Id, qli.SFDA_Status__c); } } } // // ここを修正したら、NFM007.triggerも要確認 prd2LatestValMap = new Map(); integer cntPrd2 = 0; for (Product2 prd2 : [Select Id, Estimation_Entry_Possibility__c, SFDA_Status__c, Packing_list_manual__c, //fy 预留产品标识 LastbuyProductFLG__c From Product2 Where Id IN :product2Ids]) { cntPrd2 = cntPrd2 + 1; if (prd2.Estimation_Entry_Possibility__c != '○') { error = true; } if (prd2.Estimation_Entry_Possibility__c == 'M') { error = false; } if (prd2.SFDA_Status__c != loopMap.get(prd2.Id)) { // WinOrDecideAlert = true; } prd2LatestValMap.put(prd2.Id, prd2); } if (cntPrd2 != Gcnt) { WinOrDecideAlert = false; } } //SWAG-CER5R4 【委托】报价合同金额增加限制 fy start if(ContractAmountLimitJudge()){ return false; } //SWAG-CER5R4 【委托】报价合同金额增加限制 fy end if (error == true && WinOrDecideAlert == false) { PageArrange(); errorflg = true; errorMessage = System.Label.Error_Message37; return false; } if (checkAgentsDeleteFlag() == false) { return false; } PageArrange(); errorflg = false; errorMessage = null; return true; } private boolean checkIsQuoteTrial() { Boolean error = false; errorflg = false; errormessage = null; //询价上的【是否需要价格申请】为是的场合,才要检查做没做过报价试算 thh 2021-11-03 start if(opp.If_Need_PriceApply__c){ //wql 报价试算 判断是否进行过报价试算 start if(!quo.IsQuoteTrial__c){ //没有报价试算过进入 error = true; errormessage = 'decide报价还没进行报价试算,请先报价试算!' ; } //wql 报价试算 判断是否进行过报价试算 end //wql 报价试算 检索促销政策是否有效 start //1.获取报价id //2.根据报价id 检索出所有报价试算行,并带出每一行,选择的政策的有效期 3个表 //3.循环遍历 是否所有选择的政策有效期都为true 只有有一个为false 就返回true 直接跳出循环 //如果报价id不为空的话 if(quoId !=null){ boolean IsActivePsp = true; String errorPsp =''; //根据id 检索 所有的试算行上面选择政策的有效期 List promotionSalesProductsList =[select id,PromotionSales__c,QuantityId__c,PromotionSales__r.name,PromotionSales__r.IsPolicyEffective__c,recordTypeName__c from PromotionSalesProducts__c where QuantityId__c=: quoId]; //如果有报价试算数据 说明选择了促销政策 if(promotionSalesProductsList.size()>0){ for(PromotionSalesProducts__c psp :promotionSalesProductsList){ if(psp.PromotionSales__r.IsPolicyEffective__c == '无效'&&psp.recordTypeName__c!='NormalProduct'){ IsActivePsp =false; errorPsp = psp.PromotionSales__r.name; break; } } } if(!IsActivePsp){ error = true; errormessage = '报价试算中,选择的促销政策:'+errorPsp+',不在有效期内,请检查!' ; } } //wql 报价试算 检索促销政策是否有效 end } //询价上的【是否需要价格申请】为是的场合,才要检查做没做过报价试算 thh 2021-11-03 end return error; } private boolean dataCheckDecide() { Boolean error = false; errorflg = false; errormessage = null; //obsap 最终用户合同金额验证 fy start if (quo.Dealer_Final_Price_Page__c == null) { quo.Dealer_Final_Price__c.addError(System.Label.Error_Message3); error = true; errormessage = System.Label.Error_Message3; } //obsap 最终用户合同金额验证 fy end if (checkAgentsDeleteFlag() == false) { return false; } if (WinOrDecideAlert && (!productStatusUpdated)) { // error = true; // // CHAN-AVG3PW 询价报价画面规则变更 // //errorMessage = '产品状态发生变化,请更新'; PriceStatusUpdate(); // errorMessage = '产品状态发生变化,已经更新,请确认后再次点击决定。'; } if (opp.Agency1__c == null) { opp.Agency1__c.addError(System.Label.Error_Message3); error = true; errormessage = System.Label.Error_Message3; } if (quo.OCM_Agent1_Price_Page__c == null || quo.OCM_Agent1_Price_Page__c == 0) { quo.OCM_Agent1_Price__c.addError(System.Label.Error_Message3); error = true; errormessage = System.Label.Error_Message3; } if (opp.Agency2__c == null && quo.Agent1_Agent2_Price_Page__c != null) { opp.Agency2__c.addError(System.Label.Error_Message3); error = true; errormessage = System.Label.Error_Message3; } if (opp.Agency2__c != null && quo.Agent1_Agent2_Price_Page__c == null) { quo.Agent1_Agent2_Price__c.addError(System.Label.Error_Message3); error = true; errormessage = System.Label.Error_Message3; } // LHJ 授权check Start if (opp.If_Need_Authorize__c == true) { ID tmpid = opp.Agency2__c == null ? opp.Agency1__c : opp.Agency2__c; System.debug('tmpid==='+tmpid); List accName = [select name from Account where id = : tmpid]; System.debug('accName==='+accName); System.debug('Authorized_Finish_Sales__c==='+opp.Authorized_Finish_Sales__c); if (accName[0].name != opp.Authorized_Finish_Sales__c) { error = true; errormessage = '经销商未授权或授权未完成,请先授权。' ; } } if (opp.Trade__c == '内貿') { // //经销商产品注册证匹配 Map proMap = new Map(); if (activities.size() > 0) { for (QELine qli : activities) { if (qli.Asset_Model != null && qli.Asset_Model != '') { proMap.put(qli.pageObject.Id__c, qli.PageObject.Name__c); } } } //阿西赛多 取消查询医疗器械经营许可证 精琢技术 wql 2021/01/14 start Map chkMap = new Map(); if(!opp.Is_Corrosion__c){ // GZW 画面出错误消息 chkMap = OpportunityWebService.MapCheckProRegisterDecide(proMap, opp.Agency1__c, ''); } //阿西赛多 取消查询医疗器械经营许可证 精琢技术 wql 2021/01/14 end //this.haveno_Register 没有注册证 状态红色 //this.wrong_Register 匹配不上 名字红色 if (chkMap.size() > 0) { errorflg = true; error = true; //errormessage = '请检查红字内容(NMPA状态红字,不可销售产品;产品名称红字,超过经销商经营范围)。'; if (chkMap.containsKey('agency')) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '第一经销商没有有效的医疗器械经营许可证。')); } Integer inerr = 0; if (activities.size() > 0) { for (QELine s : activities) { if (s.Asset_Model != null && s.Asset_Model != '') { if (chkMap.containsKey(s.PageObject.Id__c)) { if (chkMap.get(s.PageObject.Id__c) == '1') { s.haveno_Register = true; inerr ++; } else if (chkMap.get(s.PageObject.Id__c) == '2') { s.wrong_Register = true; inerr ++; } } } } } if (inerr > 0) { errormessage = '请检查红字内容(NMPA状态红字,不可销售产品;产品名称红字,超过经销商经营范围)。'; } return false; } //阿西赛多 是否危险化学品经营许可证 保存提示可以保存 decide提示不可decide 精琢技术 wql 2020/12/30 start //询价是阿西赛多 判断标识 Boolean isDangerError = false; //询价不是阿西赛多 判断标识 Boolean isNotDangerError = false; //条件是 内贸 && 经销商 && 是否是阿西赛多 为true //没有合并在上面的for循环的原因是,怕有冲突将标识置为false if (activities.size() > 0) { for (QELine qli : activities) { if (qli.Asset_Model != null && qli.Asset_Model != '') { //阿西赛多 页面提示报错信息 2020/12/30 start //如果询价是阿西赛多 则选择一般产品的标红 system.debug('是否阿西赛多询价'); system.debug(opp.Is_Corrosion__c); if (opp.Is_Corrosion__c) { //不是危化品 if(!qli.Is_DangerousChemicals){ //提示报错 isNotDangerError =true; //名称报红 qli.wrong_Register = true; } }else{ //如果询价不是阿西赛多,则选择危化品的标红 if(qli.Is_DangerousChemicals){ //提示报错 isDangerError =true; //名称报红 qli.wrong_Register = true; } } //阿西赛多 页面提示报错信息 wql 2020/12/30 end } } } //阿西赛多 是否危险化学品经营许可证 保存提示可以保存 decide提示不可decide 精琢技术 wql 2020/09/10 start if (enableSales == true&&opp.Is_Corrosion__c&&opp.Trade__c == '内貿') { //条件是 内贸 && 经销商 && 是否是阿西赛多 为true String str = OpportunityWebService.checkDangerItem(opp.agency1__c); if (str != 'OK') { error = true; errormessage = str; } //代表行项目有不是危化品的 if(isNotDangerError){ error = true; errormessage = '当阿西塞多时,行项目的产品必须全选择危化品。'; } }else if(!opp.Is_Corrosion__c){ //代表行项目有危化品 if(isDangerError){ error = true; errormessage = '当询价不是阿西塞多时,行项目的产品不能选择危化品。'; } } //阿西赛多 是否危险化学品经营许可证 保存提示可以保存 decide提示不可decide 精琢技术 wql 2020/09/10 end } // LHJ End if (error == true) { PageArrange(); errorflg = true; return false; } else { return true; } } private Boolean checkAgentsDeleteFlag() { // Check Agents List accIds = new List(); if (opp.Agency1__c != null) { accIds.add(opp.Agency1__c); } if (opp.Agency2__c != null) { accIds.add(opp.Agency2__c); } if (accIds.size() > 0) { List agentAccs = [SELECT Id, Delete_Flag__c, Is_Active_Formula__c, Sales_Shop_Class__c FROM Account WHERE Id IN :accIds]; //Boolean deleteFlag1 = false, deleteFlag2 = false; String activeFormula1 = null, activeFormula2 = null; for (Account local : agentAccs) { if (local.Sales_Shop_Class__c == '医疗修理经销商') { PageArrange(); errorflg = true; //-------CHAN-B9TBG4; 20190301----------UpdateStart---------------------------------------- if (local.Id == opp.Agency1__c) { errorMessage = '请确认第一经销商的经销商资质'; return false; } //else { // errorMessage = '请确认第二经销商的经销商资质'; //} //return false; //-------CHAN-B9TBG4; 20190301----------UpdateStop---------------------------------------- } if (local.Id == opp.Agency1__c) { activeFormula1 = local.Is_Active_Formula__c; } } for (Account local : agentAccs) { if (local.Id == opp.Agency2__c) { activeFormula2 = local.Is_Active_Formula__c; } } if (activeFormula1 == '无效' && activeFormula2 == '无效') { PageArrange(); errorflg = true; errorMessage = System.Label.Agent1_and_Agent2_were_Deleted; return false; } else if (activeFormula1 == '无效') { PageArrange(); errorflg = true; errorMessage = System.Label.Agent1_was_Deleted; return false; } else if (activeFormula2 == '无效') { PageArrange(); errorflg = true; errorMessage = System.Label.Agent2_was_Deleted; return false; } } // 内貿の場合Check Agency1 if (opp.Agency1__c != null && opp.Trade__c == '内貿') { Account acc = [select Sales_Shop_Class__c, Business_Authorization_No__c, Business_Paper_Expiration_Date__c, Tax_Practice_No__c, Tax_Practice_Expiration_Date__c, Medical_Equipment_Num__c, Is_Active_Formula__c, Medical_Equipment_Expiration_Date__c from Account where Id = :opp.Agency1__c]; //经销商分类只有特约、一级或者集中采购才可以进行报价 List salesClazz = new List {'特約販売店(区域)', '特約販売店(製品)', '特約販売店(製品+区域)', '一級販売店', '集采经销商'}; // 有效/无效(公式)!= 有效 if (acc.Is_Active_Formula__c != '有效') { PageArrange(); errorflg = true; errorMessage = '请选择有效的经销商'; return false; } // 经销商分类 是 二级 或 其他 //else if (acc.Sales_Shop_Class__c == '二級販売店' || acc.Sales_Shop_Class__c == 'その他') { //CHAN-BQE6LA 【委托】【重要】询价经销商1判断逻辑 精琢技术 wql 2020/06/10 start //注释原来逻辑 // else if (acc.Sales_Shop_Class__c == '二級販売店') { // PageArrange(); // errorflg = true; // errorMessage = '请确认第一经销商的经销商资质'; // return false; // } else if(!salesClazz.contains(acc.Sales_Shop_Class__c)){ PageArrange(); errorflg = true; errorMessage = '经销商1的经销商分类为:特约,一级,集中采购才可以报价'; return false; } //CHAN-BQE6LA 【委托】【重要】询价经销商1判断逻辑 精琢技术 wql 2020/06/10 end // 营业执照有效期限” 或“税务登记证有效期限” 或“医疗器械经营企业许可证有效期限” 其中一个证超过有效期的话 //去掉营业许可证的检查 因为阿西赛多不用检查 一般产品上面检查过 精琢技术 wql 2021/01/15 start //&& String.isBlank(acc.Medical_Equipment_Num__c) == false // && acc.Medical_Equipment_Expiration_Date__c != null && acc.Medical_Equipment_Expiration_Date__c >= Date.today() else if (! // 满足如下六个字段条件为有效,否则无效 (String.isBlank(acc.Tax_Practice_No__c) == false && (acc.Tax_Practice_Expiration_Date__c == null || acc.Tax_Practice_Expiration_Date__c >= Date.today()) && String.isBlank(acc.Business_Authorization_No__c) == false && acc.Business_Paper_Expiration_Date__c != null && acc.Business_Paper_Expiration_Date__c >= Date.today()) ) { PageArrange(); errorflg = true; errorMessage = '请确认第一经销商的经销商资质'; return false; } //去掉营业许可证的检查 因为阿西赛多不用检查 一般产品上面检查过 精琢技术 wql 2021/01/15 end else {} /* if (acc.Sales_Shop_Class__c == '二級販売店' || acc.Sales_Shop_Class__c == 'その他') { if (! (!String.isBlank(acc.Tax_Practice_No__c) && (acc.Tax_Practice_Expiration_Date__c == null || acc.Tax_Practice_Expiration_Date__c >= Date.today()) && !String.isBlank(acc.Medical_Equipment_Num__c) && (acc.Medical_Equipment_Expiration_Date__c != null && acc.Medical_Equipment_Expiration_Date__c >= Date.today()) && !String.isBlank(acc.Business_Authorization_No__c) && (acc.Business_Paper_Expiration_Date__c != null && acc.Business_Paper_Expiration_Date__c >= Date.today()))) { PageArrange(); errorflg = true; errorMessage = '请确认第一经销商的经销商资质'; return false; } } */ } return true; } // CHAN-AVG3PW 询价报价画面规则变更 // 报价创建日超过三个月时,如产品停产或CFDA失效,不可以保存,提示“请更新停止销售的产品” // 做DECIDE时,如产品停产或CFDA失效,不可以保存,提示“请更新停止销售的产品” private boolean checkSFDAStatus2(boolean dodecide) { // CHAN-AZG864 不管在不在报价有效期内,CFDA不可销售的时候,都是报错的,其中不可销售产品显示红字,不应该保存。 //if (over3month == false && dodecide == false) { // return true; //} for (QELine a : activities) { if ((a.Asset_Model != null) && (a.Asset_Model != '')) { system.debug('zzzzzzzz1:'+a.PageObject.SFDA_Status__c); if (a.PageObject.SFDA_Status__c != '有効' && a.PageObject.SFDA_Status__c != '有効(再申請中)' && a.PageObject.SFDA_Status__c != '不要' && // LHJ 20181221 CBPR Start a.PageObject.SFDA_Status__c != '暂停出库(短期)' && // LHJ 20181221 CBPR End a.PageObject.SFDA_Status__c != '失効(期限内生産済在庫対応)' /*&& (a.PageObject.SFDA_Status__c != '失効(再申請中)' || dodecide != false)*/ ) { return false; } } } return true; } private boolean checkSFDAStatus1(boolean dodecide) { // CHAN-AZG864 不管在不在报价有效期内,CFDA不可销售的时候,都是报错的,其中不可销售产品显示红字,不应该保存。 //if (over3month == false && dodecide == false) { // return true; //} for (QELine a : activities) { if ((a.Asset_Model != null) && (a.Asset_Model != '')) { if (a.PageObject.SFDA_Status__c != '有効' && a.PageObject.SFDA_Status__c != '有効(再申請中)' && a.PageObject.SFDA_Status__c != '不要' && a.PageObject.SFDA_Status__c != '失効(期限内生産済在庫対応)' && // LHJ CBPR 20181221 Start (a.PageObject.SFDA_Status__c != '暂停出库(长期)') && (a.PageObject.SFDA_Status__c != '暂停出库(短期)') && // LHJ CBPR 20181221 End (a.PageObject.SFDA_Status__c != '失効(再申請中)' || dodecide != false) ) { return false; } } } return true; } //SWAG-C9JCS8 【委托】【紧急】询价GZ-SP-GD0757135报价单问题 fy start private boolean checkIsDecide() { List oppsde = [Select Id, Estimation_Decision__c From Opportunity Where Id = : oppId]; if (oppsde.size() > 0) { if(oppsde[0].Estimation_Decision__c){ return true; } } return false; } //SWAG-C9JCS8 【委托】【紧急】询价GZ-SP-GD0757135报价单问题 fy end //SWAG-CER5R4 【委托】报价合同金额增加限制 fy start private boolean ContractAmountLimitJudge(){ system.debug('oppInfo.Sales_Root+++='+oppInfo.Sales_Root); if(oppInfo.Sales_Root =='OCM直接销售'){ return false; } Boolean error = false; // List act = new List(); // List act2 = new List(); Double AccrualTotal=0; Double sumContractAmount =0; for(QELine aaa :activities){ // 2022-06-14 紧急修复 ssm if (String.isBlank(aaa.Asset_Model)) { continue; } if(aaa.pageObject.PricebookEntry.Product2Id!=null){ if(aaa.GuranteePrice==null){ aaa.GuranteePrice=0; } AccrualTotal += aaa.pageObject.Quantity__c*aaa.GuranteePrice; // act.add(aaa.pageObject); } } // act2=act.deepClone(); // Double AccrualTotal=0; // Double sumContractAmount =0; // for(QuoteLineItem pspsc :act2){ // AccrualTotal += pspsc.Quantity__c*pspsc.GuranteePrice__c; // } if(quo.MultiYearWarrantyTotalPrice__c==null){ quo.MultiYearWarrantyTotalPrice__c=0; } sumContractAmount = AccrualTotal+quo.MultiYearWarrantyTotalPrice__c; if(quo.OCM_Agent1_Price_Page__c<=sumContractAmount){ error = true; errorflg = true; errormessage = '预测金额为负数,请正确填写合同金额。'; } if(quo.multiYearWarranty__c){ if(quo.OCM_Agent1_Price_Page__c<=0){ error = true; errorflg = true; errormessage = '预测金额为负数,请正确填写合同金额。'; } } return error; } //SWAG-CER5R4 【委托】报价合同金额增加限制 fy end public boolean dataEntry() { system.debug('activities++++----****3'+activities); //SWAG-C9JCS8 【委托】【紧急】询价GZ-SP-GD0757135报价单问题 fy start // Boolean ifdecide=false; // List oppsde = [Select Id, Estimation_Decision__c From Opportunity Where Id = : oppId]; // if (oppsde.size() > 0) { // if(oppsde[0].Estimation_Decision__c){ // ifdecide=true; // }else{ // ifdecide=false; // } // } System.debug('start checkIsDecide at: ' + System.currentTimeMillis()); Boolean ifdecide=checkIsDecide(); System.debug('finished checkIsDecide at: ' + System.currentTimeMillis()); if(!ifdecide){ //SWAG-C9JCS8 【委托】【紧急】询价GZ-SP-GD0757135报价单问题 fy end system.debug('○○○○○○○○○○○○Welcome to dataEntry class!!○○○○○○○○○○○○'); Boolean error = false; Boolean detail = false; if ((quo.QuoteName__c == null) || (quo.QuoteName__c == '')) { quo.QuoteName__c.addError(System.Label.Error_Message3); error = true; errormessage = System.Label.Error_Message3; } // if (quo.Dealer_Final_Price_Page__c == null) { // quo.Dealer_Final_Price__c.addError(System.Label.Error_Message3); // error = true; // errormessage = System.Label.Error_Message3; // } if (qb.Quote_Adjust_Calculate == null) { quo.Quote_Adjust_Calculate__c.addError(System.Label.Error_Message3); error = true; errormessage = System.Label.Error_Message3; } if (quo.Quote_Adjust_Amount_Page__c == null) { quo.Quote_Adjust_Amount__c.addError(System.Label.Error_Message3); error = true; errormessage = System.Label.Error_Message3; } if (quo.Quote_Expiration_Date__c == null) { quo.Quote_Expiration_Date__c.addError(System.Label.Error_Message3); error = true; errormessage = System.Label.Error_Message3; } //decimal temSalesAmount1 = 0; // 2018/09/28 CHAN-B4YAB8 经销商小计合计 end system.debug('activities++++----****2'+activities); for (QELine a : activities) { if ((a.Asset_Model != null) && (a.Asset_Model != '')) { if (a.PageObject.Quantity__c == null || a.PageObject.Quantity__c == 0) { a.PageObject.Quantity__c.addError(System.Label.Error_Message3); error = true; errormessage = System.Label.Error_Message3; } if (a.PageObject.UnitPrice_Page__c == null) { a.PageObject.UnitPrice__c.addError(System.Label.Error_Message3); error = true; errormessage = System.Label.Error_Message3; } if (a.PageObject.AgencyUnitPrice__c == null) { a.PageObject.AgencyUnitPrice__c.addError(System.Label.Error_Message3); error = true; errormessage = System.Label.Error_Message3; } //temSalesAmount1 = temSalesAmount1 + a.PageObject.AgencySubtotal__c; // 2018/09/29 CHAN-B4YAB8 经销商小计累加 if (a.PageObject.PricebookEntryId == null) { error = true; errormessage = System.Label.Error_Message27; } detail = true; } } if (enableSales == true) { // LHJ Start if (quo.Agency1__c == null) { quo.Agency1__c.addError(System.Label.Error_Message3); error = true; errormessage = System.Label.Error_Message3; } // LHJ End if (quo.OCM_Agent1_Price_Page__c == null) { quo.OCM_Agent1_Price__c.addError(System.Label.Error_Message3); error = true; errormessage = System.Label.Error_Message3; } else { } } else { if (opp.Agency1__c != null) { opp.Agency1__c.addError(System.Label.Error_Message30); error = true; errormessage = System.Label.Error_Message30; } if (quo.OCM_Agent1_Price_Page__c != null) { quo.OCM_Agent1_Price__c.addError(System.Label.Error_Message30); error = true; errormessage = System.Label.Error_Message30; } if (opp.Agency2__c != null) { opp.Agency2__c.addError(System.Label.Error_Message30); error = true; errormessage = System.Label.Error_Message30; } if (quo.Agent1_Agent2_Price_Page__c != null) { quo.Agent1_Agent2_Price__c.addError(System.Label.Error_Message30); error = true; errormessage = System.Label.Error_Message30; } } // if (DisCalculation >= 1000 || DisCalculation <= -1000) { // error = true; // errormessage = System.Label.Error_Message38; // } if (qb.SalesCalculation1 >= 1000 || qb.SalesCalculation1 <= -1000) { error = true; errormessage = System.Label.Error_Message38; } if (qb.SalesCalculation2 >= 1000 || qb.SalesCalculation2 <= -1000) { error = true; errormessage = System.Label.Error_Message38; } if (error == true) { PageArrange(); errorflg = true; return false; } //Quote------------------------------------------------------------- //商談Id、価格表Id //見積名称、標準定価合計、見積金額合計(積上)、病院の契約金額、原価、 //値引金額計算、値引き金額金額、見積調整金額計算、見積調整金額金額 //第一販売店名称、金額、利益、%、第二販売店名称、金額、利益、% //优惠成交价、优惠折扣、优惠价格、单价、报价金额、Total //契約内訳、印刷病院名称、見積有効期限日、見積表記コメント //引合単位の見積Noが必要 List maxQuote_No = [select Quote_No__c From Quote Where OpportunityId = :oppid and (not Quote_No__c like '%Old') order by Quote_No_last2__c desc NULLS LAST limit 1]; String oppNo; Integer l = 1; if (maxQuote_No.size() > 0) { try { oppNo = maxQuote_No[0].Quote_No__c; l = Integer.valueOf(oppNo.substring(oppNo.length() - 2)) + 1; } catch (System.TypeException e) { system.debug('maxQuote_No Error: quote.id=' + maxQuote_No[0].id); } } else { system.debug('first Quote'); } oppNo = '00' + String.valueof(l); oppNo = oppNo.substring(oppNo.length() - 2); Quote q = New Quote(); System.debug('quoId: ' + quoId); System.debug('changedAfterPrint: ' + changedAfterPrint); if (changedAfterPrint) { system.debug('id空1:'); quoId = null; //SWAG-CC6AFQ【委托】又有询价跳过了报价计算 fy start SkipQuotefilg = true; //SWAG-CC6AFQ【委托】又有询价跳过了报价计算 fy end } // false伝票から新規作成 System.debug('changedAfterBid: ' + changedAfterBid); if (changedAfterBid) { system.debug('id空2:'); quoId = null; //SWAG-CC6AFQ【委托】又有询价跳过了报价计算 fy start SkipQuotefilg = true; //SWAG-CC6AFQ【委托】又有询价跳过了报价计算 fy end } // CHAN-AVG3PW 询价报价画面规则变更 System.debug('newQuoteFlag: ' + newQuoteFlag); if (newQuoteFlag) { system.debug('id空3:'); quoId = null; //SWAG-CC6AFQ【委托】又有询价跳过了报价计算 fy start SkipQuotefilg = true; //SWAG-CC6AFQ【委托】又有询价跳过了报价计算 fy end } // 多年保修 start //报价试算 增加经销商前后对比 精琢技术 wql 20210508 start System.debug('quoteGurantee_Period: ' + quoteGurantee_Period); System.debug('quo.Gurantee_Period__c: ' + quo.Gurantee_Period__c); System.debug('quotemultiYearWarranty: ' + quotemultiYearWarranty); System.debug('quo.multiYearWarranty__c: ' + quo.multiYearWarranty__c); System.debug('agency1Name: ' + agency1Name); System.debug('quo.Agency1__c: ' + quo.Agency1__c); System.debug('agency2Name: ' + agency2Name); System.debug('quo.Agency2__c: ' + quo.Agency2__c); if ((quoteGurantee_Period != null && !quoteGurantee_Period.equals(quo.Gurantee_Period__c)) || (quotemultiYearWarranty != null && !quotemultiYearWarranty.equals('' + quo.multiYearWarranty__c)) || (agency1Name !=null &&!agency1Name.equals(quo.Agency1__c)) || (agency2Name !=null &&!agency2Name.equals(quo.Agency2__c)) ) { system.debug('id空8:'); quoId = null; //SWAG-CC6AFQ【委托】又有询价跳过了报价计算 fy start SkipQuotefilg = true; //SWAG-CC6AFQ【委托】又有询价跳过了报价计算 fy end } agency1Name = quo.Agency1__c; agency2Name = quo.Agency2__c; //报价试算 增加经销商前后对比 精琢技术 wql 20210508 end quoteGurantee_Period = quo.Gurantee_Period__c; quotemultiYearWarranty = '' + quo.multiYearWarranty__c; // 多年保修 end if (quoId == null) { q = New Quote(); q.OpportunityId = oppId; if (detail == true) { if (standardPricebook == null) { errormessage = System.Label.Error_Message27; errorflg = true; return false; } else { q.Pricebook2Id = standardPricebook.Id; } } } else { List qs = New List();//SWAG-CKDATG 【委托】【OBSAP-报价委托】报价委托项目改善1 fy start QuotationChange__c,MainEngineWithoutMonitor__c,Interdepartmental__c, qs = [select Id, OpportunityId, CreatedDate, Pricebook2Id, Name, Estimation_List_Price__c, Dealer_Final_Price__c,QuotationChange__c,MainEngineWithoutMonitor__c,Interdepartmental__c, Stocking_Price__c, Discount_Amount__c, Discount_Amount_Calculate__c, Quote_Adjust_Amount__c, Quote_Adjust_Calculate__c, Agency1__c, OCM_Agent1_Price__c, Agency1_Profit__c, Agency1_Profit_Rate__c, Quote_No__c, Agency2__c, Agent1_Agent2_Price__c, Agency2_Profit__c, Agency2_Profit_Rate__c, Preferential_Trading_Price__c, Discount__c, Pricing__c, Unit_Price__c, Offer_Amount__c, TOTAL__c, Contract__c, Print_HP_Name__c, Quote_Expiration_Date__c, Quote_Comment__c, OCM_Sales_Forecast__c, Installation_location__c, HasType3Machine__c // 多年保修 start , Gurantee_Period__c , multiYearWarranty__c, MultiYearWarrantyTotalPrice__c , Preferential_Gurantee_Period__c // 多年保修 end //报价试算 start ,IsQuoteTrial__c //报价试算 end From Quote Where Id = :quoId]; if (qs.size() > 0) { q = qs[0]; } if (q.Pricebook2Id == null) { if (detail == true) { if (standardPricebook == null) { errormessage = System.Label.Error_Message27; errorflg = true; return false; } else { q.Pricebook2Id = standardPricebook.Id; } } } } if (quoId == null) { q.Quote_No__c = opp.Opportunity_No__c + '-' + oppNo; q.PriceRefreshDate__c = Date.today(); } if (productStatusUpdated) { q.PriceRefreshDate__c = Date.today(); } // 20150302 jo 見積の主机安装地点を設定 List pIds = new List(); system.debug('activities++++----****1'+activities); for (QELine s : activities) { if (String.isBlank(s.PageObject.Id__c) == false) { pIds.add(s.PageObject.Id__c); } } List pList = [select Id from Product2 where Id in :pids and Category3__c = '主机']; if (pList.size() > 0) q.HasType3Machine__c = true; q.Name = quo.QuoteName__c; // TODO katsu 新規じゃない場合セットする必要ですか? q.Estimation_List_Price__c = qb.Estimation_List_Price; //q.TotalPrice = quo.TotalPrice; ===============-Field is not writeable: Quote.TotalPrice q.Dealer_Final_Price__c = quo.Dealer_Final_Price_Page__c; q.OCM_Sales_Forecast__c = opp.Wholesale_Price__c; q.Stocking_Price__c = quoStocking_Price_c; quo.Stocking_Price__c = quoStocking_Price_c; q.Quote_Adjust_Amount__c = quo.Quote_Adjust_Amount_Page__c; q.Quote_Adjust_Calculate__c = qb.Quote_Adjust_Calculate; q.Discount_Amount__c = DisAmount; q.Discount_Amount_Calculate__c = DisCalculation; q.Agency1__c = opp.Agency1__c; q.OCM_Agent1_Price__c = quo.OCM_Agent1_Price_Page__c; q.Agency1_Profit__c = Salesprofit1; q.AgencyDiscount__c = AgencyDiscount; // 2018/09/28 CHAN-B4YAB8 经销商折扣 //多年保修 start q.Gurantee_Period__c = quo.Gurantee_Period__c; q.multiYearWarranty__c = quo.multiYearWarranty__c; q.MultiYearWarrantyTotalPrice__c = quo.MultiYearWarrantyTotalPrice__c; q.quoteSavedDate__c = Date.today(); //多年保修 end q.Agency1_Profit_Rate__c = qb.SalesCalculation1; q.Agency2__c = opp.Agency2__c; q.Agent1_Agent2_Price__c = quo.Agent1_Agent2_Price_Page__c; q.Agency2_Profit__c = Salesprofit2; q.Agency2_Profit_Rate__c = qb.SalesCalculation2; //----checkbox は印刷直前に保存 q.Print_HP_Name__c = selection_hp; q.Quote_Expiration_Date__c = quo.Quote_Expiration_Date__c; q.Quote_Comment__c = quo.Quote_Comment__c; q.Installation_location__c = quo.Installation_location__c; //SWAG-CKDATG 【委托】【OBSAP-报价委托】报价委托项目改善1 fy start q.QuotationChange__c = quo.QuotationChange__c; q.MainEngineWithoutMonitor__c = quo.MainEngineWithoutMonitor__c; q.Interdepartmental__c = quo.Interdepartmental__c; //SWAG-CKDATG 【委托】【OBSAP-报价委托】报价委托项目改善1 fy end /* if (hasType3Machine) { q.Installation_location__c = ''; } */ System.debug('q.QuotationChange__c+++'+q.QuotationChange__c); System.debug('quo.QuotationChange__c++' + quo.QuotationChange__c); System.debug('quo.MainEngineWithoutMonitor__c++' + quo.MainEngineWithoutMonitor__c); if (quoId == null) { insert q; quo.Quote_No__c = q.Quote_No__c; } else { update q; } System.debug('q.QuotationChange__c2+++'+q.QuotationChange__c); System.debug('quo.QuotationChange__c2++' + quo.QuotationChange__c); System.debug('quo.MainEngineWithoutMonitor__c2++' + quo.MainEngineWithoutMonitor__c); System.debug('finished save quote at: ' + System.currentTimeMillis()); system.debug('○○○○○Save1○○○○○'); //QuoteLineItem; List qlist = New List(); qlist = [Select Id From QuoteLineItem Where QuoteId = :quoId]; if (qlist.size() > 0) { //delete delete qlist; } //QuoteLineItem-------------------------------------------- //製品型番、品目コード、SFDAステータス、品目名、ListPrice、数量 //価格、単位、小計、OCM売上予測金額(税抜)、価格表 qlist = New List(); //Sap送信,Printに合わせて1~ Integer i = 1; if (activities.size() > 0) { system.debug('activities++++----****'+activities); for (QELine s : activities) { if (s.Asset_Model != null && s.Asset_Model != '') { if (s.pageObject.PricebookEntryId != null) { // TODO katsu なぜclone()しますか?意味不明。 QuoteLineItem ql = s.pageObject.clone(); ql.Quantity = ql.Quantity__c; ql.UnitPrice = 0; // UnitPriceを使わないけど、必須なので、0を入れる ql.QuoteId = q.Id; ql.Name__c = s.PageObject.Name__c; ql.Cost__c = s.Cost_c; ql.Cost_Subtotal__c = s.Cost_Subtotal_c; s.pageObject.Cost__c = s.Cost_c; s.pageObject.Cost_Subtotal__c = s.Cost_Subtotal_c; ql.UnitPrice__c = ql.UnitPrice_Page__c; ql.UnitPrice_Page__c = 0; ql.ListPrice__c = s.ListPrice_Page; // 多年保修 start // 计提金额 ql.GuranteePrice__c = s.GuranteePrice; ql.ProductGuranteePrice__c = s.ProductGuranteePrice; // 维修合同报价 ql.Maintenance_Price_Year__c = s.Maintenance_Price_Year; // 多年保修 end //CHAN-BWH2WP 精琢技术 wql 2020/12/22 start //如果产品为不可取消多年保 则打上标识 system.debug(s.CanNotCancelledGurantee); ql.CanNotCancelFlag__c = s.CanNotCancelledGurantee; //CHAN-BWH2WP 精琢技术 wql 2020/12/22 end // CHAN-AVG3PW 询价报价画面规则变更 //ql.SFDA_Status__c = prd2LatestValMap.get(s.pageObject.Id__c).SFDA_Status__c; //並び順 ql.Item_Order__c = i; //OCM売上予測金額(税込) = OCM成約予測金額(税込み) * (小計 / 見積合計) if (s.PageObject.Subtotal__c != null && opp.Wholesale_Price__c != null && quo.QuoteTotal_Page__c != null) { if (s.PageObject.Subtotal__c > 0 && quo.QuoteTotal_Page__c > 0) { ql.OCM_Sales_Forecast__c = opp.Wholesale_Price__c * (s.PageObject.Subtotal__c / quo.QuoteTotal_Page__c); } } qlist.add(ql); i++; } } } System.debug('start save quote lines at: ' + System.currentTimeMillis()); system.debug('qlist+++---+++'+qlist); insert qlist; System.debug('finished save quote lines at: ' + System.currentTimeMillis()); } system.debug('○○○○○Save2○○○○○'); //Opportunity-------------------------------------------- //標準定価合計価格、見積金額総合計(税抜き)、病院契約金額、 //1次販売店、1次販売店利益金額、1次販売店利益率、 //2次販売店、2次販売店利益金額、2次販売店利益率 //見積番号、見積名 Opportunity o = New Opportunity(); List os = New List(); os = [select Id, Estimation_List_Price__c, Dealer_Final_Price__c, Estimation_List_Price_Without_Tax__c, Agency1__c, OCM_Agent1_Price__c, Agency1_Profit__c, Agency1_Profit_Rate__c, Stocking_Price__c, Agency2__c, Agent1_Agent2_Price__c, Agency2_Profit__c, Agency2_Profit_Rate__c, Quote_Update_Sum__c , Hospital__c,Is_Corrosion__c // lt 20221008 SWAG-CHL5XA【FY23询价改善】-统计主机台数 start ,StageName ,OlyNumberHosts__c // lt 20221008 SWAG-CHL5XA【FY23询价改善】-统计主机台数 end From Opportunity Where Id = :oppid]; if (os.size() > 0) { o = os[0]; o.Estimation_List_Price__c = qb.Estimation_List_Price; o.Wholesale_Price__c = opp.Wholesale_Price__c; o.Dealer_Final_Price__c = quo.Dealer_Final_Price_Page__c; o.Agency1__c = opp.Agency1__c; o.OCM_Agent1_Price__c = quo.OCM_Agent1_Price_Page__c; o.Agency1_Profit__c = Salesprofit1; o.Agency1_Profit_Rate__c = qb.SalesCalculation1; // o.Agency1_Profit_Rate__c = quo.Agency1_Profit_Rate__c; o.Agency2__c = opp.Agency2__c; o.Agent1_Agent2_Price__c = quo.Agent1_Agent2_Price_Page__c; o.Agency2_Profit__c = Salesprofit2; o.Agency2_Profit_Rate__c = qb.SalesCalculation2; // o.Agency2_Profit_Rate__c = quo.Agency2_Profit_Rate__c; o.Stocking_Price__c = quo.Stocking_Price__c; o.Estimation_No__c = q.Quote_No__c; // quo.Quote_No__c; //o.Estimation_Name__c = quo.Name; o.Estimation_Name__c = q.Name; o.Estimation_Id__c = q.Id; o.Installation_location__c = q.Installation_location__c; o.HasType3Machine__c = q.HasType3Machine__c; // 2018/09/29 CHAN-B4YAB8 经销商折扣 start o.AgencyDiscount__c = AgencyDiscount; // 2018/09/29 CHAN-B4YAB8 经销商折扣 end // 多年保修 start o.Gurantee_Period__c = quo.Gurantee_Period__c ; o.multiYearWarranty__c = quo.multiYearWarranty__c ; o.MultiYearWarrantyTotalPrice__c = quo.MultiYearWarrantyTotalPrice__c ; o.quoteSavedDate__c = Date.today(); // 多年保修 end // lt 20221008 SWAG-CHL5XA【FY23询价改善】-统计主机台数 start System.debug('lt123询价状态(阶段): ' + o.StageName); System.debug('lt123activities: ' + activities); o.OlyNumberHosts__c = 0; System.debug('lt123主机数: ' + o.OlyNumberHosts__c); List oppIds = New List(); List product2Ids = New List(); Map product2IdsMap = new Map(); if (activities.size() > 0) { for (QELine a : activities) { if (String.isBlank(a.PageObject.Id__c) == false) { product2Ids.add(a.PageObject.Id__c); product2IdsMap.put(a.PageObject.Id__c,a.PageObject.Quantity__c); } } for (Product2 prod : [Select Id,ProductClass__c From Product2 Where Id IN :product2Ids]) { System.debug('lt123产品市场类别: ' + prod.ProductClass__c); if(o.StageName == '引合' || o.StageName == '注残' || o.StageName == '出荷' || o.StageName == '完了'){ if(prod.ProductClass__c == '主机'){ if(product2IdsMap.containsKey(prod.Id)){ o.OlyNumberHosts__c += product2IdsMap.get(prod.Id); oppIds.add(o.Id); ControllerUtil.UpdateBiddingFlag(oppIds); } }else{ o.OlyNumberHosts__c += 0; } } } } // lt 20221008 SWAG-CHL5XA【FY23询价改善】-统计主机台数 end if (o.Quote_Update_Sum__c == null) { o.Quote_Update_Sum__c = 1; } else { o.Quote_Update_Sum__c = o.Quote_Update_Sum__c + 1; } System.debug('start 1st save Opportunity at: ' + System.currentTimeMillis()); // SWAG-CER5R4 优化保存速度 start // ControllerUtil.updOpp(o); StaticParameter.EscapeOppandStaTrigger = true; update o; // SWAG-CER5R4 优化保存速度 end System.debug('finished 1st save Opportunity at: ' + System.currentTimeMillis()); system.debug('○○○○○Save3○○○○○'); //OpportunityLineItem-------------------------------------------- //製品型番、品目コード、SFDAステータス、品目名、ListPrice、数量 //価格、単位、小計、OCM売上予測金額(税抜)、価格表 List ols = New List(); OpportunityLineItem ol = New OpportunityLineItem(); // lt 20221008 SWAG-CHL5XA【FY23询价改善】-统计主机台数 end ols = [select Id, Quantity from OpportunityLineItem Where OpportunityId = :oppid]; //update System.debug('lt123询价产品: ' + ols); // lt 20221008 SWAG-CHL5XA【FY23询价改善】-统计主机台数 end if (ols.size() > 0) { //delete ControllerUtil.delOppLine(ols); system.debug('○○○○○Save4○○○○○'); } //Sap送信,Printに合わせて1~ i = 1; ols = New List(); if (activities.size() > 0) { for (QELine s : activities) { if (s.Asset_Model != null && s.Asset_Model != '') { if (s.PageObject.PricebookEntryId != null) { ol = New OpportunityLineItem(); System.debug('lt123询价产品数量: ' + ol.Quantity); //lt CHL5XA【FY23询价改善】 ol.OpportunityId = oppid; ol.Id__c = s.PageObject.Id__c; // CHAN-AVG3PW 询价报价画面规则变更 ol.SFDA_Status__c = s.PageObject.SFDA_Status__c; //ol.SFDA_Status__c = prd2LatestValMap.get(s.pageObject.Id__c).SFDA_Status__c; ol.Name__c = s.PageObject.Name__c; ol.ListPrice__c = s.ListPrice_Page; ol.Quantity = s.PageObject.Quantity__c; ol.UnitPrice = 0; ol.UnitPrice__c = s.PageObject.UnitPrice_Page__c; // 2018-10-31 CHAN-B4YAB8 赠送、经销商单价和小计 start ol.AgencyUnitPrice__c = s.PageObject.AgencyUnitPrice__c; ol.Present__c = s.PageObject.Present__c; ol.AgencySubtotal__c = s.PageObject.AgencySubtotal__c; // 2018-10-31 CHAN-B4YAB8 赠送、经销商单价和小计 start // 多年保修 start ol.GuaranteePeriod__c = s.PageObject.GuaranteePeriod__c; //外贸多年保 取消CNY 的判断 && oppInfo.CurrencyIsoCode.equals('CNY') //外贸多年保 精琢技术 wql 2021/01/18 start if (oppInfo.CurrencyIsoCode != null ) { ol.multiYearWarranty__c = s.PageObject.multiYearWarranty__c; ol.ServicePrice__c = s.PageObject.ServicePrice__c; ol.If_Cancel_Guarantee__c = s.PageObject.If_Cancel_Guarantee__c; ol.ProductEntend_gurantee_period_all__c = s.PageObject.ProductEntend_gurantee_period_all__c; ol.GuranteeType__c = s.PageObject.GuranteeType__c; ol.NoDiscountTotal__c = s.PageObject.NoDiscountTotal__c; ol.warrantyType__c = s.PageObject.warrantyType__c; ol.productServicePrice__c = s.PageObject.productServicePrice__c; // 计提金额 ol.GuranteePrice__c = s.GuranteePrice; ol.ProductGuranteePrice__c = s.ProductGuranteePrice; // 维修合同报价 ol.Maintenance_Price_Year__c = s.Maintenance_Price_Year; ol.provistonPeriod__c = s.PageObject.provistonPeriod__c; } //外贸多年保 精琢技术 wql 2021/01/18 end // 多年保修 end ol.Qty_Unit__c = s.PageObject.Qty_Unit__c; //コストは小計済を登録 ol.Cost__c = s.PageObject.Cost__c; ol.BSS_Category__c = s.PageObject.BSS_Category__c; //CHAN-BWH2WP 精琢技术 wql 2020/12/22 start //如果产品为不可取消多年保 则打上标识 system.debug(s.CanNotCancelledGurantee); ol.CanNotCancelFlag__c = s.CanNotCancelledGurantee; //CHAN-BWH2WP 精琢技术 wql 2020/12/22 end //OCM売上予測金額 * (小計/見積合計) if (s.PageObject.Subtotal__c != null && opp.Wholesale_Price__c != null && quo.QuoteTotal_Page__c != null) { if (s.PageObject.Subtotal__c > 0 && quo.QuoteTotal_Page__c > 0) { ol.OCM_Sales_Forecast__c = opp.Wholesale_Price__c * (s.PageObject.Subtotal__c / quo.QuoteTotal_Page__c); } } //価格表 ol.PricebookEntryId = s.PageObject.PricebookEntryId; //並び順 ol.Item_Order__c = i; ols.add(ol); i++; } } } // CHAN-BEN5UC [委托]询价:创建报价后,判断询价一定期间内,是否出借备品 by vivek start // CHAN-C9Y3HL 【委托】【评估需求】询价里报价画面速度优化 2022-02-09 // 查询出借备品逻辑从保存逻辑中移除,由Batch进行统一操作,以提升保存速度及统计数据准确性。 // Date createdDateStr; // if (quoId != null && quo.CreatedDate != null ) { // // createdDateStr = [select id,CreatedDate from Quote where id = :quoId][0].CreatedDate.date(); // createdDateStr = quo.CreatedDate.date(); // } else { // createdDateStr = Date.today(); // } // // 一年前的日期 // Date createdDateYear = createdDateStr.addYears(-1); // List raesdList = [select id, product__c, Bollow_Date__c, Rental_Apply__r.Hospital__c from Rental_Apply_Equipment_Set_Detail__c where Rental_Apply__r.Strategic_dept__c = : opp.Department_Class__c and Key_product__c != null and Bollow_Date__c >= :createdDateYear order by Bollow_Date__c ]; // Map ProOfDate = new Map(); // for (Rental_Apply_Equipment_Set_Detail__c raesd : raesdList) { // ProOfDate.put(raesd.product__c, raesd.Bollow_Date__c); // } // o.WhetherTrySpareParts_3m__c = false; // o.WhetherTrySpareParts_6m__c = false; // o.WhetherTrySpareParts_1y__c = false; // for (OpportunityLineItem oppitem : ols) { // if (ProOfDate.containsKey(((String)oppitem.Id__c).substring(0, 15))) { // Date bollDate = ProOfDate.get(((String)oppitem.Id__c).substring(0, 15)); // if (bollDate != null && bollDate.addMonths(3) > createdDateStr) { // o.WhetherTrySpareParts_3m__c = true; // } // if (bollDate != null && bollDate.addMonths(6) > createdDateStr && bollDate.addMonths(3) < createdDateStr) { // o.WhetherTrySpareParts_6m__c = true; // } // if (bollDate != null && bollDate.addYears(1) > createdDateStr && bollDate.addMonths(6) < createdDateStr) { // o.WhetherTrySpareParts_1y__c = true; // } // } // } // System.debug('start 2nd save Opportunity at: ' + System.currentTimeMillis()); // ControllerUtil.updOpp(o); // System.debug('finished 2nd save Opportunity at: ' + System.currentTimeMillis()); // CHAN-BEN5UC [委托]询价:创建报价后,判断询价一定期间内,是否出借备品 by vivek end System.debug('start save Opportunity item lines at: ' + System.currentTimeMillis()); ControllerUtil.insOppLine(ols); System.debug('finished save Opportunity item lines at: ' + System.currentTimeMillis()); } } else { system.debug('*****SystemError OpportunityId is Null*****'); } //保存時引合Pageに戻らない処理とした為にQuoteIdをここでセット if (quoId == null) { quoId = q.Id; newQuoteFlag = false; } }else{ errorflg = true; errormessage = '该询价已经decide,不可再修改'; return false; } return true; } //lastbuy 2022/2/9 fy start public boolean ReservedProductVerification() { filg=true; Map quotlinitMap = new Map(); List lastProductFLGListId = new List(); List lastProductFLGList = new List(); List act = new List(); List act2 = new List(); for(QELine aaa :activities){ if(aaa.pageObject.PricebookEntry.Product2Id!=null){ act.add(aaa.pageObject); } } act2=act.deepClone(); Map map1 = new Map(); System.debug('activities1111111111112为所当为多多!!!'+activities); integer i =0; for(QuoteLineItem pspsc :act2){ if(pspsc.PricebookEntry.Product2Id!=null){ if(map1.containsKey(pspsc.PricebookEntry.Product2Id)){ QuoteLineItem quoteLine = map1.get(pspsc.PricebookEntry.Product2Id); quoteLine.Quantity__c =quoteLine.Quantity__c+pspsc.Quantity__c; map1.put(pspsc.PricebookEntry.Product2Id,quoteLine); }else{ map1.put(pspsc.PricebookEntry.Product2Id,pspsc); } System.debug('34499879!!!'+activities); } } System.debug('3434343!!!'+activities); System.debug('5656565!!!'+map1); for (QuoteLineItem value : map1.values()) { if(value.PricebookEntry.Product2.LastbuyProductFLG__c){ lastProductFLGListId.add(value.PricebookEntry.Product2Id); quotlinitMap.put(value.PricebookEntry.Product2Id,value); lastProductFLGList.add(value); } } System.debug('activities++++!!!'+activities); System.debug('activities!!!'+map1.values()); System.debug('oppId!!!'+oppId); System.debug('lastProductFLGList!!!'+lastProductFLGListId); if(lastProductFLGListId!=null&&lastProductFLGListId.size()!=0){ List LastbuyObjList=[select id,LastbuyQuantity__c,InquiryCode__c,ProductName__c,effectiveFLG__c from LastbuyProduct__c where InquiryCode__c= : oppId and ProductName__c in :lastProductFLGListId and effectiveFLG__c = true]; Map LastbuyObjMap = new Map(); System.debug('LastbuyObjList+++++!!!'+LastbuyObjList); if(LastbuyObjList!=null&&LastbuyObjList.size()!=0){ for(LastbuyProduct__c lastbuypr :LastbuyObjList){ LastbuyObjMap.put(lastbuypr.ProductName__c,lastbuypr); } }else{ flglastbuy=1; filg=false; return filg; } System.debug('LastbuyObjMap!!!'+LastbuyObjMap); System.debug('lastProductFLGList+++++++!!!'+lastProductFLGList); if(lastProductFLGList!=null&&lastProductFLGList.size()!=0){ for(QuoteLineItem lastbuypr :lastProductFLGList){ Decimal quoteLItemNum=0; if(LastbuyObjMap.containsKey(lastbuypr.PricebookEntry.Product2Id)){ quoteLItemNum=LastbuyObjMap.get(lastbuypr.PricebookEntry.Product2Id).LastbuyQuantity__c; System.debug('quoteLItemNum!!!'+quoteLItemNum); System.debug('lastbuypr.pageObject.Quantity__c+++!!!'+lastbuypr.Quantity__c); if(lastbuypr.Quantity__c>quoteLItemNum){ errorProductmodel=lastbuypr.Asset_Model_No__c; flglastbuy=2; filg=false; break; } }else{ errorProductmodel=lastbuypr.Asset_Model_No__c; flglastbuy=3; filg=false; break; } } } } system.debug('filg====='+filg); return filg; } //lastbuy 2022/2/9 fy end //oppに画面の値を設定 private void setOppFromOppInfo() { opp.Wholesale_Price__c = oppInfo.Wholesale_Price; opp.Agency1__c = quo.Agency1__c; opp.Agency2__c = quo.Agency2__c; } public class OppInfo { public String Account_RecordType_DeveloperName { get; set; } public String Direct_Separate { get; set; } public String Trade { get; set; } public Decimal Wholesale_Price { get; set; } public String CurrencyIsoCode { get; set; } public String HP_Name { get; set; } public String Department_Name { get; set; } public String Sales_Root { get; set; } // LHJ Start public boolean If_Need_Authorize { get; set; } public String Authorized_DB_No { get; set; } // LHJ End // Celon询价修改 2022-04-24 ssm start public String CelonOpportunity { get; set; } // Celon询价修改 2022-04-24 ssm end // lastbuy判断变更用户询价 start public Boolean is_changed_opp { get; set; } // lastbuy判断变更用户询价 end public OppInfo(Opportunity opp) { Account_RecordType_DeveloperName = opp.Account.RecordType.DeveloperName; Direct_Separate = opp.Direct_Separate__c; Trade = opp.Trade__c; Wholesale_Price = opp.Wholesale_Price__c; CurrencyIsoCode = opp.CurrencyIsoCode; HP_Name = opp.HP_Name__c; Department_Name = opp.Department_Name__c; Sales_Root = opp.Sales_Root__c; // LHJ Start If_Need_Authorize = opp.If_Need_Authorize__c; Authorized_DB_No = opp.Authorized_DB_No__c; // LHJ End // Celon询价修改 2022-04-24 ssm start CelonOpportunity = opp.CelonOpportunity__c; // Celon询价修改 2022-04-24 ssm end // lastbuy判断变更用户询价 start is_changed_opp = opp.If_Account_Change__c != null ? opp.If_Account_Change__c : false; // lastbuy判断变更用户询价 end } } //TODO 1.Quoteオブジェクト追加 //TODO 2.コンストラクタを追加 public class QuoteBean { public Decimal Estimation_List_Price { get; set; } //TODO 999.99以下しか入力できない。 public Decimal Quote_Adjust_Calculate { get; set; } public Decimal SalesCalculation1 { get; set; } public Decimal SalesCalculation2 { get; set; } public Integer PriceRefreshPeriod { get; set; } public void setPriceRefreshPeriodByDate(Date PriceRefreshDate) { this.PriceRefreshPeriod = PriceRefreshDate.daysBetween(Date.today()); } } public class QELinelatestInfo { public String ProductCode { get; set; } public String ProductName { get; set; } public String SFDA_Status { get; set; } public String Sales_Possibility { get; set; } public Decimal ListPrice { get; set; } // 最新 public Decimal Cost { get; set; } // 最新 public Integer Specifications {get; set;} // 多年保修 start public string GuranteeType {get; set;} public Decimal Intra_Trade_Gurantee {get; set;} public Decimal ProductEntend_gurantee_period_all {get; set;} public Decimal Intra_Trade_Service {get; set;} // 维修合同报价 public Decimal Maintenance_Price_Year {get; set;} // 多年保修 end // 维修合同报价 //不可取消多年保 public Boolean CanNotCancelledGurantee {get; set;} // 多年保修 end //阿西赛多 public Boolean Is_DangerousChemicals {get; set;} //阿西赛多 } public class QELine { public Integer lineNo { get; set; } // 画面の順序 public String Asset_Model { get; set; } public String Sales_Possibility { get; set; } // 販売可否○×判断用、使ってないようです。TODO 削除 public QuoteLineItem pageObject { get; set; } // Id__cは空行判断用、SFDA_Status__c など、翻訳される項目表示するため使う必要があります public Decimal Cost_c { get; set; } public Decimal Cost_Subtotal_c { get; set; } public Decimal ListPrice_Page { get; set; } //*******************************liukun******************// public String StorageStatus { get; set; } //********************Insert [OLY_OCM-228] [20160706] [赵德芳] Start********************// public Integer Specifications {get; set;} //********************Insert [OLY_OCM-228] [20160706] [赵德芳] End**********************// //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 Start public String VenderName { get; set; } //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 end //不可取消多年保 public Boolean CanNotCancelledGurantee {get;set;} //阿西赛多 public Boolean Is_DangerousChemicals {get;set;} // PriceStatusUpdate() 用の項目、TODO 初期値の設定 public QELinelatestInfo latestInfo { get; set; } public boolean changed_name { get; set; } public boolean changed_sfda { get; set; } public boolean changed_list { get; set; } public boolean changed_cost { get; set; } public boolean haveno_Register { get; set; } public boolean wrong_Register { get; set; } //SFDC停止预警 lt 20211009 start public String Estimated_ConsumptionDueDate { get; set; } //SFDC停止预警 lt 20211009 end // 多年保修 start //计提金额 public Decimal GuranteePrice { get; set; } public Decimal ProductGuranteePrice { get; set; } // 维修合同报价 public decimal Maintenance_Price_Year {get; set;} // 多年保修 end // TODO ほんとうはいらない、使うところのロジックを修正しなければいけない、削除するようにしたいです。 public QELine(Integer i) { pageObject = New QuoteLineItem(); latestInfo = New QELinelatestInfo(); this.lineNo = i; } // tmp 直接使う場合のパターン public QELine(QELine tmp, Integer i) { pageObject = tmp.pageObject; this.lineNo = i; this.Asset_Model = tmp.Asset_Model; this.Sales_Possibility = tmp.Sales_Possibility; this.latestInfo = tmp.latestInfo; this.Cost_Subtotal_c = tmp.Cost_Subtotal_c; this.Cost_c = tmp.Cost_c; this.ListPrice_Page = tmp.ListPrice_Page; this.StorageStatus = tmp.StorageStatus; // 多年保修 start // 计提金额 this.GuranteePrice = tmp.GuranteePrice; this.ProductGuranteePrice = tmp.ProductGuranteePrice; //维修合同报价 this.Maintenance_Price_Year = tmp.Maintenance_Price_Year; // 多年保修 计提金额 end this.changed_name = tmp.changed_name; this.changed_sfda = tmp.changed_sfda; this.changed_list = tmp.changed_list; this.changed_cost = tmp.changed_cost; this.haveno_Register = false; this.wrong_Register = false; //不可取消多年保 this.CanNotCancelledGurantee = tmp.CanNotCancelledGurantee; //供应商名称 this.VenderName = tmp.VenderName; //SFDC停止预警 lt 20211009 start this.Estimated_ConsumptionDueDate = tmp.Estimated_ConsumptionDueDate; //SFDC停止预警 lt 20211009 end } public QELine(OpportunityLineItem oli, Integer i) { pageObject = New QuoteLineItem(); pageObject.Quantity__c = oli.Quantity; this.lineNo = i; this.Asset_Model = oli.Asset_Model_No__c; this.Sales_Possibility = oli.PricebookEntry.Product2.Sales_Possibility__c; this.StorageStatus = oli.PricebookEntry.Product2.StorageStatus__c; //********************Insert [OLY_OCM-228] [20160706] [赵德芳] Start********************// if (oli.PricebookEntry.Product2.Packing_list_manual__c != null) { this.Specifications = integer.valueof(oli.PricebookEntry.Product2.Packing_list_manual__c + ''); } //********************Insert [OLY_OCM-228] [20160706] [赵德芳] End**********************// PageObject.Id__c = oli.PricebookEntry.Product2Id; PageObject.UnitPrice_Page__c = oli.UnitPrice__c; //CHAN-B4YAB8 2018/9/28 小计经销商单价和小计 PageObject.AgencySubtotal__c = oli.AgencySubtotal__c; PageObject.AgencyUnitPrice__c = oli.AgencyUnitPrice__c; // CHAN-B4YAB8 2018/9/28 经销商单价和小计 //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 Start this.VenderName = oli.PricebookEntry.Product2.VenderName__c; //SFDC停止预警 lt 20211009 ①不能定义date变量 因为前台返回的是String日期 ②将util里的方法转为日期格式 start if(oli.PricebookEntry.Product2.Estimated_ConsumptionDueDate__c != null){ this.Estimated_ConsumptionDueDate = NFMUtil.formatDate2StrSpo(oli.PricebookEntry.Product2.Estimated_ConsumptionDueDate__c).replaceAll('-','/'); }else{ this.Estimated_ConsumptionDueDate = ''; } //SFDC停止预警 lt 20211009 end if(VenderName==null||VenderName==''){ this.VenderName =' 无 '; }else{ this.VenderName = oli.PricebookEntry.Product2.VenderName__c; } //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 end //不可取消多年保 this.CanNotCancelledGurantee = oli.PricebookEntry.Product2.CanNotCancelledGurantee__c; //阿西赛多 this.Is_DangerousChemicals = oli.PricebookEntry.Product2.Is_DangerousChemicals__c; // 多年保修 start PageObject.multiYearWarranty__c = oli.multiYearWarranty__c; PageObject.GuaranteePeriod__c = oli.GuaranteePeriod__c; PageObject.ServicePrice__c = oli.ServicePrice__c; PageObject.If_Cancel_Guarantee__c = oli.If_Cancel_Guarantee__c; PageObject.warrantyType__c = oli.warrantyType__c; PageObject.NoDiscountTotal__c = oli.NoDiscountTotal__c; // 计提金额 this.GuranteePrice = oli.GuranteePrice__c; // 维修合同报价 this.Maintenance_Price_Year = oli.Maintenance_Price_Year__c; PageObject.provistonPeriod__c = oli.provistonPeriod__c; PageObject.ProductEntend_gurantee_period_all__c = oli.PricebookEntry.Product2.Entend_gurantee_period_all__c; PageObject.GuranteeType__c = oli.PricebookEntry.Product2.GuranteeType__c; // 多年保修 end PageObject.SFDA_Status__c = oli.PricebookEntry.Product2.SFDA_Status__c; //不可取消多年保 // PageObject.CanNotCancelledGurantee__c = oli.PricebookEntry.Product2.CanNotCancelledGurantee__c; PageObject.Name__c = oli.PricebookEntry.Product2.Name; Decimal cost; if (oli.Opportunity.Trade__c == '内貿') { this.ListPrice_Page = oli.PricebookEntry.Product2.Intra_Trade_List_RMB__c; cost = oli.PricebookEntry.Product2.Intra_Trade_Cost_RMB__c; this.ProductGuranteePrice = oli.PricebookEntry.Product2.Intra_Trade_Gurantee_RMB__c; PageObject.productServicePrice__c = oli.PricebookEntry.Product2.Intra_Trade_Service_RMB__c; } else if (oli.Opportunity.Trade__c == '外貿') { this.ListPrice_Page = oli.PricebookEntry.Product2.Foreign_Trade_List_US__c; cost = oli.PricebookEntry.Product2.Foreign_Trade_Cost_US__c; this.ProductGuranteePrice = oli.PricebookEntry.Product2.Intra_Trade_Foreign_RMB__c; PageObject.productServicePrice__c = oli.PricebookEntry.Product2.NoDiscount_Foreign__c; } if (cost > 0 && oli.Quantity > 0) { this.Cost_Subtotal_c = cost * oli.Quantity; } this.Cost_c = cost; if (oli.UnitPrice__c > 0 && oli.Quantity > 0) { oli.TotalPrice__c = oli.UnitPrice__c * oli.Quantity; } PageObject.BSS_Category__c = oli.BSS_Category__c; pageObject.Subtotal__c = oli.TotalPrice__c; pageObject.PricebookEntryId = oli.PricebookEntryId; latestInfo = New QELinelatestInfo(); latestInfo.ProductCode = oli.ProductCode__c; latestInfo.ProductName = oli.PricebookEntry.Product2.Name; latestInfo.SFDA_Status = oli.PricebookEntry.Product2.SFDA_Status__c; latestInfo.Sales_Possibility = oli.PricebookEntry.Product2.Sales_Possibility__c; // 多年保修 start //外贸多年保 取产品主数据的外贸金额 以及 报价 精琢技术 wql 2021/01/04 start latestInfo.ProductEntend_gurantee_period_all = oli.PricebookEntry.Product2.Entend_gurantee_period_all__c; if (oli.Opportunity.Trade__c == '内貿') { latestInfo.Intra_Trade_Gurantee = oli.PricebookEntry.Product2.Intra_Trade_Gurantee_RMB__c; latestInfo.Intra_Trade_Service = oli.PricebookEntry.Product2.Intra_Trade_Service_RMB__c; // 维修合同报价 latestInfo.Maintenance_Price_Year = oli.PricebookEntry.Product2.Maintenance_Price_Year__c; } else if (oli.Opportunity.Trade__c == '外貿') { latestInfo.Intra_Trade_Gurantee = oli.PricebookEntry.Product2.Intra_Trade_Foreign_RMB__c; latestInfo.Intra_Trade_Service = oli.PricebookEntry.Product2.NoDiscount_Foreign__c; // 维修合同报价 latestInfo.Maintenance_Price_Year = oli.PricebookEntry.Product2.Repair_Contract_USD__c; } //外贸多年保 取产品主数据的外贸金额 以及 报价 精琢技术 wql 2021/01/04 end latestInfo.GuranteeType = oli.PricebookEntry.Product2.GuranteeType__c; // 多年保修 end if (oli.PricebookEntry.Product2.Packing_list_manual__c != null) { latestInfo.Specifications = integer.valueof(oli.PricebookEntry.Product2.Packing_list_manual__c + ''); } latestInfo.ListPrice = oli.Product_ListPrice__c; latestInfo.Cost = oli.Product_Cost__c; //不可取消多年保 latestInfo.CanNotCancelledGurantee = oli.PricebookEntry.Product2.CanNotCancelledGurantee__c; this.changed_name = false; this.changed_sfda = false; this.changed_list = false; this.changed_cost = false; this.haveno_Register = false; this.wrong_Register = false; } public QELine(QuoteLineItem qli, Integer i, String copyQuoId) { //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, ' qli Id__c=' + qli.PricebookEntry.Product2Id)); pageObject = qli.clone(); pageObject.Id__c = qli.PricebookEntry.Product2Id; pageObject.Quantity__c = qli.Quantity; //ET促销标记 start // pageObject.ETPromotionalFlag__c = qli.ETPromotionalFlag__c; //ET促销标记 end if (copyQuoId != null) { pageObject.SFDA_Status__c = qli.PricebookEntry.Product2.SFDA_Status__c; pageObject.Name__c = qli.PricebookEntry.Product2.Name; //PageObject.PricebookEntry.Product2.Packing_list_manual__c = qli.PricebookEntry.Product2.Packing_list_manual__c; } this.lineNo = i; this.Asset_Model = qli.Asset_Model_No__c; if (qli.Cost__c > 0 && qli.Quantity > 0) { this.Cost_Subtotal_c = qli.Cost__c * qli.Quantity; } //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 Start this.VenderName = qli.PricebookEntry.Product2.VenderName__c; //SFDC停止预警 lt 20211009 ①不能定义date变量 因为前台返回的是String日期 ②将util里的方法转为日期格式 start if(qli.PricebookEntry.Product2.Estimated_ConsumptionDueDate__c != null){ this.Estimated_ConsumptionDueDate = NFMUtil.formatDate2StrSpo(qli.PricebookEntry.Product2.Estimated_ConsumptionDueDate__c).replaceAll('-','/'); }else{ this.Estimated_ConsumptionDueDate = ''; } //SFDC停止预警 lt 20211009 end if(VenderName==null||VenderName==''){ this.VenderName =' 无 '; }else{ //this.VenderName = qli.PricebookEntry.Product2.VenderName__c; } //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 Start //不可取消多年保 this.CanNotCancelledGurantee = qli.PricebookEntry.Product2.CanNotCancelledGurantee__c; //阿西赛多 this.Is_DangerousChemicals = qli.PricebookEntry.Product2.Is_DangerousChemicals__c; //************************************liukun*****************************************************// this.StorageStatus = qli.PricebookEntry.Product2.StorageStatus__c; this.ListPrice_Page = qli.ListPrice__c; this.Cost_c = qli.Cost__c; pageObject.Subtotal__c = qli.TotalPrice__c; pageObject.UnitPrice_Page__c = qli.UnitPrice__c; latestInfo = New QELinelatestInfo(); latestInfo.ProductCode = qli.ProductCode__c; latestInfo.ProductName = qli.PricebookEntry.Product2.Name; latestInfo.SFDA_Status = qli.PricebookEntry.Product2.SFDA_Status__c; // 多年保修 start latestInfo.ProductEntend_gurantee_period_all = qli.PricebookEntry.Product2.Entend_gurantee_period_all__c; //外贸多年保 取产品主数据上的金额及报价 精琢技术 wql start if(qli.Quote.Opportunity.Trade__c == '内貿'){ latestInfo.Intra_Trade_Gurantee = qli.PricebookEntry.Product2.Intra_Trade_Gurantee_RMB__c; latestInfo.Intra_Trade_Service = qli.PricebookEntry.Product2.Intra_Trade_Service_RMB__c; //维修合同报价 //HWAG-BLDE4M decide后成本为空 精琢技术 20200227 start if(qli.PricebookEntry.Product2.Maintenance_Price_Year__c == null){ latestInfo.Maintenance_Price_Year = 0; }else{ latestInfo.Maintenance_Price_Year = qli.PricebookEntry.Product2.Maintenance_Price_Year__c; } //HWAG-BLDE4M decide后成本为空 精琢技术 20200227 end }else if(qli.Quote.Opportunity.Trade__c == '外貿'){ latestInfo.Intra_Trade_Gurantee = qli.PricebookEntry.Product2.Intra_Trade_Foreign_RMB__c; latestInfo.Intra_Trade_Service = qli.PricebookEntry.Product2.NoDiscount_Foreign__c; //维修合同报价 //HWAG-BLDE4M decide后成本为空 精琢技术 20200227 start if(qli.PricebookEntry.Product2.Maintenance_Price_Year__c == null){ latestInfo.Maintenance_Price_Year = 0; }else{ latestInfo.Maintenance_Price_Year = qli.PricebookEntry.Product2.Repair_Contract_USD__c; } //HWAG-BLDE4M decide后成本为空 精琢技术 20200227 end } //外贸多年保 取产品主数据上的金额及报价 精琢技术 wql end latestInfo.GuranteeType = qli.PricebookEntry.Product2.GuranteeType__c; //不可取消多年保 latestInfo.CanNotCancelledGurantee = qli.PricebookEntry.Product2.CanNotCancelledGurantee__c; // 计提金额 this.Maintenance_Price_Year = qli.Maintenance_Price_Year__c; this.GuranteePrice = qli.GuranteePrice__c; this.ProductGuranteePrice = qli.ProductGuranteePrice__c; // 多年保修 end latestInfo.Sales_Possibility = qli.PricebookEntry.Product2.Sales_Possibility__c; if (qli.PricebookEntry.Product2.Packing_list_manual__c != null) { latestInfo.Specifications = integer.valueof(qli.PricebookEntry.Product2.Packing_list_manual__c + ''); } latestInfo.ListPrice = qli.Product_ListPrice__c; latestInfo.Cost = qli.Product_Cost__c; //********************Insert [OLY_OCM-228] [20160706] [赵德芳] Start********************// if (qli.PricebookEntry.Product2.Packing_list_manual__c != null) { this.Specifications = integer.valueof(qli.PricebookEntry.Product2.Packing_list_manual__c + ''); } //********************Insert [OLY_OCM-228] [20160706] [赵德芳] End**********************// this.changed_name = false; this.changed_sfda = false; this.changed_list = false; this.changed_cost = false; this.haveno_Register = false; this.wrong_Register = false; } // TODO Subtotal__c、以前のロジックを確認 /*public QELine(Integer i, String PricebookEntryId, String Asset_Model, String StorageStatus, String ProductCode, String Id_c, String SFDA_Status_c, String Sales_Possibility_c, String Name_c, String BSS_Category_c, Integer Quantity, Decimal ListPrice_c, Decimal UnitPrice_c, Decimal Cost_c, Decimal Packing_list_manual ) { pageObject = New QuoteLineItem(); pageObject.Quantity__c = Quantity; this.lineNo = i; this.Asset_Model = Asset_Model; this.Sales_Possibility = Sales_Possibility_c; this.StorageStatus = StorageStatus; pageObject.Id__c = Id_c; pageObject.SFDA_Status__c = SFDA_Status_c; pageObject.Name__c = Name_c; pageObject.BSS_Category__c = BSS_Category_c; this.ListPrice_Page = ListPrice_c; pageObject.UnitPrice_Page__c = UnitPrice_c; pageObject.Subtotal__c = UnitPrice_c * Quantity; //PageObject.PricebookEntry.Product2.Packing_list_manual__c = Packing_list_manual; this.Cost_c = Cost_c; // TODO katsu なぜここ > 0 の判断はいらない? this.Cost_Subtotal_c = Cost_c * Quantity; pageObject.PricebookEntryId = PricebookEntryId; latestInfo = New QELinelatestInfo(); latestInfo.ProductCode = ProductCode; latestInfo.ProductName = Name_c; latestInfo.SFDA_Status = SFDA_Status_c; latestInfo.Sales_Possibility = Sales_Possibility_c; latestInfo.ListPrice = this.ListPrice_Page; latestInfo.Cost = pageObject.Cost__c; if (Packing_list_manual != null) { latestInfo.Specifications = integer.valueof('' + Packing_list_manual); } this.changed_name = false; this.changed_sfda = false; this.changed_list = false; this.changed_cost = false; this.haveno_Register = false; this.wrong_Register = false; } */ //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 Start 增加字段 // 多年保修 start public QELine(Integer i,Boolean Is_DangerousChemicals,Boolean CanNotCancelledGurantee,String VenderName, Date Estimated_ConsumptionDueDate, //20211009 lt add String PricebookEntryId, //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 end 增加字段 String Asset_Model, String StorageStatus, String ProductCode, String Id_c, String SFDA_Status_c, String Sales_Possibility_c, String Name_c, String BSS_Category_c, Integer Quantity, Decimal ListPrice_c, Decimal UnitPrice_c, Decimal Cost_c, Decimal Packing_list_manual , Decimal Entend_gurantee_period_all , decimal ProductGuranteePrice , string GuranteeType , Decimal productServicePrice , Decimal productMaintenance_Price_Year ) { pageObject = New QuoteLineItem(); pageObject.Quantity__c = Quantity; this.lineNo = i; this.Asset_Model = Asset_Model; this.Sales_Possibility = Sales_Possibility_c; //SFDC停止预警 lt 20211009 ①不能定义date变量 因为前台返回的是String日期 ②将util里的方法转为日期格式 start if(Estimated_ConsumptionDueDate != null){ this.Estimated_ConsumptionDueDate = NFMUtil.formatDate2StrSpo(Estimated_ConsumptionDueDate).replaceAll('-','/'); }else{ this.Estimated_ConsumptionDueDate = ''; } //SFDC停止预警 lt 20211009 end this.StorageStatus = StorageStatus; pageObject.Id__c = Id_c; pageObject.SFDA_Status__c = SFDA_Status_c; pageObject.Name__c = Name_c; pageObject.BSS_Category__c = BSS_Category_c; this.ListPrice_Page = ListPrice_c; pageObject.UnitPrice_Page__c = UnitPrice_c; pageObject.Subtotal__c = UnitPrice_c * Quantity; //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 Start system.debug('VenderName=========='+VenderName); if(VenderName==null||VenderName==''){ this.VenderName =' 无 '; }else{ this.VenderName = VenderName; } //不可取消多年保 this.CanNotCancelledGurantee = CanNotCancelledGurantee; //阿西赛多 this.Is_DangerousChemicals = Is_DangerousChemicals; //CHAN-BKU3XH 检查是否存在不是同一个供销商名称 精琢技术 2020/02/17 end // 多年保修 start pageObject.ProductEntend_gurantee_period_all__c = Entend_gurantee_period_all; pageObject.productServicePrice__c = productServicePrice; pageObject.GuranteeType__c = GuranteeType; // 计提金额 this.ProductGuranteePrice = ProductGuranteePrice; // 维修合同报价 this.Maintenance_Price_Year = productMaintenance_Price_Year; // 多年保修 end //PageObject.PricebookEntry.Product2.Packing_list_manual__c = Packing_list_manual; this.Cost_c = Cost_c; // TODO katsu なぜここ > 0 の判断はいらない? this.Cost_Subtotal_c = Cost_c * Quantity; pageObject.PricebookEntryId = PricebookEntryId; latestInfo = New QELinelatestInfo(); latestInfo.ProductCode = ProductCode; latestInfo.ProductName = Name_c; latestInfo.SFDA_Status = SFDA_Status_c; latestInfo.Sales_Possibility = Sales_Possibility_c; latestInfo.ListPrice = this.ListPrice_Page; latestInfo.Cost = pageObject.Cost__c; // 多年保修 start latestInfo.ProductEntend_gurantee_period_all = Entend_gurantee_period_all; latestInfo.Intra_Trade_Gurantee = ProductGuranteePrice; latestInfo.Intra_Trade_Service = productServicePrice; latestInfo.GuranteeType = GuranteeType; latestInfo.Maintenance_Price_Year = productMaintenance_Price_Year; //不可取消多年保 latestInfo.CanNotCancelledGurantee = CanNotCancelledGurantee; //阿西赛多 latestInfo.Is_DangerousChemicals = Is_DangerousChemicals; // 多年保修 end if (Packing_list_manual != null) { latestInfo.Specifications = integer.valueof('' + Packing_list_manual); } this.changed_name = false; this.changed_sfda = false; this.changed_list = false; this.changed_cost = false; this.haveno_Register = false; this.wrong_Register = false; } // 多年保修 end } @TestVisible private void testI() { integer i = 0; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; } }