// FIXME 見積もり商品の Asset_Model_No__c ですが、数式になっています。トランザクションデータとして、項目を持つべきかと思います。by katsu 20130216 // 商談商品のId__c を PricebookEntry.Product2Idに変更すべき // 見積もり可否 ですが、保存時みていますが、Sales_Possibilityを見ないですか?いいえ、js側で見ています public with sharing class SI_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 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; } // SI业务系统流程改善和提升项目2019-10-28 by vivek start public Boolean QuoteBusiness { get; set; } public String Configuration_Suggestion { get; set; } public String Configuration_Suggestion_Feedback { get; set; } public Integer Save_button1 { get; set; } // public boolean ConfigurationSuggestionIsNull { get; set; } // public Boolean ConfigurationSuggestions { get; set; } // SI业务系统流程改善和提升项目2019-10-28 by vivek end 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;} //********************Insert [SI询价-产品配套] [20160315] [赵德芳] Start********************// public String oppoidforCSV{Set;get;} public boolean DecideFunc { get; set; } public boolean UnConfirmQuote{Set;get;} public String ProfileIDStr {set;get;} public id quoteOwner {Set;get;} //********************Insert [SI询价-产品配套] [20160315] [赵德芳] End**********************// // 多年保修 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 SI_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; } public SI_NewQuoteEntryController(ApexPages.StandardController controller) { this(); } public PageReference init() { system.debug('============start init=============='); //********************Insert [SI询价-产品配套] [20160315] [赵德芳] Start********************// UnConfirmQuote = false; //********************Insert [SI询价-产品配套] [20160315] [赵德芳] END**********************// boolean quoteflg = true; WinOrDecideAlert = false; errorflg = false; displayFlg = true; //Quote standardPricebook = ControllerUtil.getStandardPricebook(); quo = new Quote(); qb = new QuoteBean(); //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,LineItemCount From Quote Where Id =:quoId]; if (ql.size()>0) { oppId = ql[0].OpportunityId; //添加行 if(ql[0].LineItemCount >quoteEntryMaxLine){ quoteEntryMaxLine = ql[0].LineItemCount; } } } else { quoId = System.currentPageReference().getParameters().get('copyid'); 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; } } } } //--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,Profileid From User Where Id =:userid]; if (us.size()>0) { //********************Insert [SI询价-产品配套] [20160315] [赵德芳] Start********************// ProfileIDStr = us[0].Profileid; //********************Insert [SI询价-产品配套] [20160315] [赵德芳] END**********************// 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,BusinessFileArchived__c,Account.RecordType.DeveloperName,Opportunity_sub_owner__c, 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 // SI业务系统流程改善和提升项目2019-10-28 by vivek start ,Configuration_Suggestion__c , Configuration_Suggestion_Feedback__c // SI业务系统流程改善和提升项目2019-10-28 by vivek end FROM Opportunity Where Id = :oppId]; // 多年保修 start trade = '外貿'; // 多年保修 end if (oppList.size() > 0) { opp = oppList[0]; // 多年保修 start trade = opp.Trade__c; // 多年保修 end // SI业务系统流程改善和提升项目2019-10-28 by vivek start QuoteBusiness = opp.BusinessFileArchived__c; Configuration_Suggestion = opp.Configuration_Suggestion__c; Configuration_Suggestion_Feedback = opp.Configuration_Suggestion_Feedback__c; // SI业务系统流程改善和提升项目2019-10-28 by vivek end QuoteDecision = opp.Estimation_Decision__c; 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, //增加字段,不可取消多年保 精琢技术 wql 2020/09/10 start Qty_Unit__c,Cost__c,UnitPrice,ListPrice__c,Quantity,BSS_Category__c,TotalPrice,PricebookEntry.Product2.VenderName__c,PricebookEntry.Product2.CanNotCancelledGurantee__c, //增加字段,不可取消多年保 精琢技术 wql 2020/09/10 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, warrantyType__c, productServicePrice__c, NoDiscountTotal__c , provistonPeriod__c , PricebookEntry.Product2.Entend_gurantee_period_all__c //, PricebookEntry.Product2.Foreign_Trade_Gurantee_US__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/27 精琢技术 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/27 精琢技术 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(); for (i=0;i(); for (i=0;i 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, CreatedByid,Queto_Confirm_Date__c, 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 // 多年保修 end ,LineItemCount //报价试算 start ,IsQuoteTrial__c //报价试算 end FROM Quote Where Id =:quoId]; List items = [Select Id,Asset_Model_No__c,SFDA_Status__c,Product_Sales_Possibility__c, Name__c,BSS_Category__c,Quote.Quote_Print_Date__c, //不可取消多年保 PricebookEntry.Product2.VenderName__c,PricebookEntry.Product2.CanNotCancelledGurantee__c,ProductSetName__c, 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 , multiYearWarranty__c , If_Cancel_Guarantee__c , GuaranteePeriod__c, 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/27 精琢技术 wql start //维修合同报价(USD) ,PricebookEntry.Product2.Repair_Contract_USD__c //计提金额(不含税,USD) ,PricebookEntry.Product2.Intra_Trade_Foreign_RMB__c //NoDiscount 金额(USD) ,PricebookEntry.Product2.NoDiscount_Foreign__c ,Quote.Opportunity.Trade__c //外贸多年保 2021/01/27 精琢技术 wql end //fy 预留产品标识 ,PricebookEntry.Product2.LastbuyProductFLG__c //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'); CheckItem = items; if (copyQuoId == null) { quo = quoList[0]; quoteOwner = quo.CreatedByid; //SWAG-C5DBAL 【委托】 [紧急]SI询价肖寒无法修改报价单 精琢技术 2021/07/30 start //注释原逻辑 if(quo.Queto_Confirm_Date__c != null || (quo.Queto_Confirm_Date__c == null && (ProfileIDStr == System.Label.SI_2M3_ID||ProfileIDStr == System.Label.ProfileId_SystemAdmin||quo.CreatedByid == UserInfo.getUserId()))){//2M3_SI部门担当,标签设置 //SWAG-C5DBAL 【委托】 [紧急]SI询价肖寒无法修改报价单 精琢技术 2021/07/30 end // if(quo.Queto_Confirm_Date__c != null || // (quo.Queto_Confirm_Date__c == null && (ProfileIDStr == System.Label.ProfileId_SystemAdmin||quo.CreatedByid == UserInfo.getUserId()))){//2M3_SI部门担当,标签设置 quo.QuoteName__c = quo.Name; if(quo.Queto_Confirm_Date__c == null){ UnConfirmQuote = true; }else if(quo.Queto_Confirm_Date__c != null){ }else{ Messageflg = true; Message = '请及时确认报价'; } }else{ quo = new Quote(); //增加对是否确认报价的验证 errorflg =true; UnConfirmQuote = false; errorMessage = '该报价尚未确认,不能查看'; return null; //增加对是否确认报价的验证 } } else { // copyの場合、quoIdをnullに戻す quoId = null; } 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 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 = quoList[0]; //报价名称 quo.QuoteName__c = quo.Name; quo.Cancel_Decide__c =quo.Cancel_Decide__c ; quo.Cancel_Decide__c = false; // quo.QuoteName__c = ''; 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(); for (i=0;i 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.SFDA_Status__c); } } // ここを修正したら、NFM007.triggerも要確認 prd2LatestValMap = new Map(); if(CheckItem.size()>0){ List plo = [Select Id, Estimation_Entry_Possibility__c, SFDA_Status__c,Packing_list_manual__c // 多年保修 start , Intra_Trade_Gurantee_RMB__c, Intra_Trade_Service_RMB__c // 多年保修 end From Product2 Where Id IN :product2Ids]; if(plo.size()>0){ for (Product2 prd2: plo ) { if(prd2.SFDA_Status__c != loopMap.get(prd2.Id)){ WinOrDecideAlert = true; system.debug('WinOrDecideAlert:::::::1'+WinOrDecideAlert ); } } } } system.debug('WinOrDecideAlert:::::::2'+WinOrDecideAlert ); //****************************************************************************************** // 增加检测产品状态是否发生变化==================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; } //vivek --save button1 Save_button1 = 0; if(Configuration_Suggestion == null && Configuration_Suggestion_Feedback == null && QuoteBusiness == false){ Save_button1 = 111; } if(Configuration_Suggestion == '有建议' && Configuration_Suggestion_Feedback == null && QuoteBusiness == false){ Save_button1 = 211; } if(Configuration_Suggestion == '有建议' && Configuration_Suggestion_Feedback != null && QuoteBusiness == false){ Save_button1 = 221; } if(Configuration_Suggestion == null && Configuration_Suggestion_Feedback == null && QuoteBusiness == true){ Save_button1 = 112; } if(Configuration_Suggestion == '有建议' && Configuration_Suggestion_Feedback == null && QuoteBusiness == true){ Save_button1 = 212; } // if(Configuration_Suggestion == null){ // Save_button1 = 2; // } if(Configuration_Suggestion == '无建议' && QuoteBusiness == false){ Save_button1 = 1; } // vivek end system.debug('初始化时的集合:'+activities); //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(); //********************Insert [SI询价-产品配套] [20160315] [赵德芳] Start********************// List productIDLIST = new List(); //********************Insert [SI询价-产品配套] [20160315] [赵德芳] END********************// //既存データ数の確認 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'); List productSetDetails = [SELECT Id, Product__c, Quantity__c, Product_Set__r.Name,Product__r.VenderName__c,Product__r.Estimated_ConsumptionDueDate__c FROM Product_Set_Detail__c Where Product_Set__c in :productIDLIST]; 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, Asset_Model_No__c,Sales_Possibility__c,Estimation_Entry_Possibility__c,VenderName__c, 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 //外贸多年保 2021/01/27 精琢技术 wql start //维修合同报价(USD) ,Repair_Contract_USD__c //计提金额(不含税,USD) ,Intra_Trade_Foreign_RMB__c //NoDiscount 金额(USD) ,NoDiscount_Foreign__c //外贸多年保 2021/01/27 精琢技术 wql end //fy 预留产品标识 ,LastbuyProductFLG__c //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) { c = new QELine(i,prd.CanNotCancelledGurantee__c,prd.VenderName__c, prd.Estimated_ConsumptionDueDate__c, //20211009 lt add nowDetail.Product_Set__r.Name, pbe.Id, prd.Asset_Model_No__c, prd.StorageStatus__c, 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/27 start , prd.Intra_Trade_Foreign_RMB__c , prd.GuranteeType__c , prd.NoDiscount_Foreign__c, prd.Repair_Contract_USD__c //外贸多年保 取产品主数据上的金额及维修合同报价 精琢技术 wql 2021/01/27 end // 多年保修 end // 多年保修 end ); } else { continue; } } else if (opp.Trade__c == '内貿') { if (prd.Intra_Trade_List_RMB__c > 0 && prd.Intra_Trade_Cost_RMB__c > 0) { c = new QELine(i,prd.CanNotCancelledGurantee__c,prd.VenderName__c, prd.Estimated_ConsumptionDueDate__c, //20211009 lt add nowDetail.Product_Set__r.Name,pbe.Id, prd.Asset_Model_No__c, prd.StorageStatus__c, 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; String Message = ''; List Nl = new List(); Map nameMap = new Map(); for(Product_Set_Detail__c Psd : productSetDetails){ nameMap.put(Psd.Product_Set__r.Name, Psd.Product_Set__r.Name); } for(String name : nameMap.keySet()){ Message += name+' '; } errormessage = Message + ' 导入结束,导入 ' + productSetDetails.size() + ' 件,成功' + rightcnt + ' 件'; } system.debug('-----:終了:' + errormessage); return null; } // xudan 20140626 行追加ロジック実装 public void addRow() { List tmpQELine = new List(); 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() { system.debug('11111111111111111===11111111111111'); 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{ system.debug('走到这里了~'); tmpQELine.add(new QELine(i)); } } system.debug('tmpQELine:'+tmpQELine); //如果发生行数变化 则后台最大报价行也更新 if(quoteEntryMaxLine < lineRows){ quoteEntryMaxLine = lineRows; } //重画页面 重画新增行 activities = new List(); activities.addAll(tmpQELine); PageArrange(); } } public void DownloadCsv(){ //操作属性上的公式表达式必填。 ===>>>取消return List QuoteList = [SELECT id from Quote WHERE Opportunityid = :oppId AND id=:quoid]; SYSTEM.DEBUG(QuoteList.size()+'wwwwwww'+oppoidforCSV); if(QuoteList.size()>0){ oppoidforCSV = QuoteList[0].id; SYSTEM.DEBUG(QuoteList.size()+'XXXXXXXX'+oppoidforCSV); }else{ } } //报价确认 public PageReference QuoteConfirm(){ System.debug('报价确认进入======'); List QuoteList = [SELECT id,Queto_Confirm_Date__c,Opportunity.Sales_assistant_ID__c, CreatedBy.SalesManager__c,CreatedBy.ZongjianApprovalManager__c, CreatedBy.BuchangApprovalManagerSales__c,OpportunityId,Opportunity.Quote_Update_Sum__c from Quote WHERE id=:quoid]; Map oppMap = new Map(); for(Quote Qu : QuoteList){ Qu.Queto_Confirm_Date__c = Date.today(); Qu.OpporsAssistance__c = Qu.Opportunity.Sales_assistant_ID__c; Qu.Manager_Sell__c = Qu.CreatedBy.SalesManager__c; Qu.Minister_Sell__c = Qu.CreatedBy.BuchangApprovalManagerSales__c; Qu.Majordomo_Sell__c =Qu.CreatedBy.ZongjianApprovalManager__c; if (String.isBlank(Qu.OpportunityId) == false) { Opportunity opp = new Opportunity(); opp.Id = Qu.OpportunityId; if (Qu.Opportunity.Quote_Update_Sum__c == null) { opp.Quote_Update_Sum__c = 1; } else { opp.Quote_Update_Sum__c = Qu.Opportunity.Quote_Update_Sum__c + 1; } oppMap.put(Qu.id, opp); } } Savepoint Sp = Database.setSavepoint(); try{ Update QuoteList; Update oppMap.values(); }catch (Exception o){ Database.rollback(Sp); ApexPages.addmessages(o); return null; } return null; } //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です。 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, Asset_Model_No__c,Sales_Possibility__c,Estimation_Entry_Possibility__c,VenderName__c, 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 //外贸多年保 2021/01/27 精琢技术 wql start //维修合同报价(USD) ,Repair_Contract_USD__c //计提金额(不含税,USD) ,Intra_Trade_Foreign_RMB__c //NoDiscount 金额(USD) ,NoDiscount_Foreign__c //外贸多年保 2021/01/27 精琢技术 wql end //fy 预留产品标识 ,LastbuyProductFLG__c //SFDC停止预警 lt 20211009 start ,Estimated_ConsumptionDueDate__c //SFDC停止预警 lt 20211009 end FROM Product2 Where ProductCode In :codelist 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 0 && prd.Foreign_Trade_Cost_US__c > 0) { c = new QELine(i,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, 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) { c = new QELine(i,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, 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!='')) { // 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.productServicePrice__c = a.latestInfo.Intra_Trade_Service; 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 } } } pageArrange(); } /** 新增提交待审批 激活询价审批:备货确认申请 */ public void submitOppoApplyStock(){ id oppIDs = null; if(oppid == null){ Quote qupSet = [SELECT Opportunityid from Quote WHERE id =:quoId]; oppIDs = qupSet.Opportunityid; }else{ oppIDs = oppid; } Opportunity ops = [SELECT id,Stock_Submit_Date__c,Stock_Confrim_Date__c,Sales_assistant_ID__c, Stock_Check_Leader__c,Quote_Update_Sum__c, is_CheckTarget_TF__c from Opportunity WHERE id =:oppIDs]; User ThisAssisUser = [select id,SI_Stock_Checker__c,Salesdepartment__c,Profileid from user where id = :UserInfo.getUserId()]; if(ops.Sales_assistant_ID__c!=UserInfo.getUserId().substring(0,15) && ThisAssisUser.Profileid!=System.Label.ProfileId_SystemAdmin && ThisAssisUser.Profileid!='00e10000000xo1DAAQ'){ errorflg = true;//005p0000000nNrHAAU //00510000001O6Hx errormessage = '申请备货确认,须由询价助理提出申请 (From Apex 1043)'; }else{ if(ThisAssisUser.SI_Stock_Checker__c == null){ // SI询价调整 修改备货审批人逻辑,update by vivek 20200102 srart // if(ThisAssisUser.Salesdepartment__c == '2.东北' || ThisAssisUser.Salesdepartment__c == '1.华北'){ // ThisAssisUser.SI_Stock_Checker__c = System.label.SI_Stock_DBHB; // }else if(ThisAssisUser.Salesdepartment__c == '3.西北' || ThisAssisUser.Salesdepartment__c == '4.西南'){ // ThisAssisUser.SI_Stock_Checker__c = System.label.SI_Stock_XBXN; // }else if(ThisAssisUser.Salesdepartment__c == '5.华东' || ThisAssisUser.Salesdepartment__c == '6.华南'){ // ThisAssisUser.SI_Stock_Checker__c = System.label.SI_Stock_HDHN; // }1.华北2.东北3.西北4.西南5.华东6.华南 if(ThisAssisUser.Salesdepartment__c == '5.华东'){ ThisAssisUser.SI_Stock_Checker__c = System.label.SI_Stock_HD; }else if(ThisAssisUser.Salesdepartment__c == '2.东北' || ThisAssisUser.Salesdepartment__c == '4.西南'){ ThisAssisUser.SI_Stock_Checker__c = System.label.SI_Stock_HDHN; }else if(ThisAssisUser.Salesdepartment__c == '1.华北' || ThisAssisUser.Salesdepartment__c == '6.华南'){ ThisAssisUser.SI_Stock_Checker__c = System.label.si_stock_dbhb; }else if(ThisAssisUser.Salesdepartment__c == '3.西北'){ ThisAssisUser.SI_Stock_Checker__c = System.label.SI_Stock_XBXN; } // SI询价调整 修改备货审批人逻辑,update by vivek 20200102 end update ThisAssisUser; } ops.Stock_Submit_Date__c = Date.today(); if (ops.Quote_Update_Sum__c == null) { ops.Quote_Update_Sum__c = 1; } else { ops.Quote_Update_Sum__c = ops.Quote_Update_Sum__c + 1; } Savepoint sp = Database.setSavepoint(); // SI询价调整 修改备货审批人逻辑,update by vivek 20200102 srart // if(ops.is_CheckTarget_TF__c ){ // SI询价调整 修改备货审批人逻辑,update by vivek 20200102 end try{ update ops; Approval.ProcessSubmitRequest psr = new Approval.ProcessSubmitRequest(); psr.setObjectId(oppIDs); Approval.ProcessResult submitResult = Approval.process(psr); errorflg = true; errormessage = '备货确认申请已提交 (From Apex 1000)'; }catch (Exception o){ Database.rollback(sp); ApexPages.addmessages(o); } // SI询价调整 修改备货审批人逻辑,update by vivek 20200102 srart // }else{ // errorflg = true; // errormessage = '标书未审批通过,不可以申请备货确认 (From Apex 1007)'; // } // SI询价调整 修改备货审批人逻辑,update by vivek 20200102 end } } //Save button public PageReference Save() { setOppFromOppInfo(); system.debug('WinOrDecideAlert:::::::3'+WinOrDecideAlert ); errorflg = false; errormessage = null; errorMessagechack = null; Savepoint sp = Database.setSavepoint(); try { String lines = ''; system.debug(oppId+'^^^^^^^'+lines); if(oppId != null){ lines = ControllerUtil.setQuote(oppId); } system.debug(oppId+'^^^^^^^'+lines); if(lines!='Fin'){ errorflg = true; errormessage = lines; } //データチェック if (dataCheck() ==false) { return null; } // 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); } } } //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, opp.Agency1__c +'1q---- '+proIdList)); //String chk = OpportunityWebService.checkProRegisterDecide(proMap, opp.Agency1__c, ''); //if (chk != 'OK') { // List errList = new List(); // Integer i = 0; // errList = chk.split('。'); // for (String err : errList) { // i ++; // if (i != errList.size()) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, err)); // } // } //} // if(opp.Agency1__c != null){ // GZW 画面出错误消息 Map chkMap = OpportunityWebService.MapCheckProRegisterDecide(proMap, opp.Agency1__c, ''); //this.haveno_Register 没有注册证 状态红色 //this.wrong_Register 匹配不上 名字红色 System.debug('chkMap +++++' + chkMap); //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'chkMap +++++' + chkMap)); if (chkMap.size() > 0) { errorflg = true; 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 != '') { 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状态红字,不可销售产品;产品名称红字,超过经销商经营范围)。'; } //return null; } } } // LHJ End // SI询价取消报价确认按钮,逻辑迁移 20191209 by vivek start System.debug('======报价页面修改取消确认'); QuoteConfirm(); // SI询价取消报价确认按钮,逻辑迁移 20191209 by vivek end PageReference pageRef = new PageReference('/' + oppid); if (dataEntry()==false) { //msg return null; } else { //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()); } return null; } //OppReflection button public PageReference OppReflection() { //oppに画面の値を設定 setOppFromOppInfo(); Savepoint sp = Database.setSavepoint(); try { errorflg = false; errormessage = 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(); //需求表没通过,没有需求表:报价不能Decide, List ISOstutas = [SELECT id,Approval_Date__c,Func_SOD_Status__c,Opportunity_ID__r.Stock_Confrim_Date__c from IS_Opportunity_Demand__c WHERE Opportunity_ID__c = :oppid]; List oldListCheck = [select Old_Opportunity_ID__c from Opportunity where id =:oppid]; integer PassFlg = 0; Integer StockFlg = 0; for(IS_Opportunity_Demand__c iso : ISOstutas){ if( iso.Approval_Date__c != null ){ PassFlg ++; } if(iso.Opportunity_ID__r.Stock_Confrim_Date__c ==null){ StockFlg++; } } //20220215 fy lastbuy start if(!ReservedProductVerification()){ 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; } } //20220215 fy lastbuy end system.debug('PassFlg:'+PassFlg); system.debug('StockFlg:'+StockFlg); if(PassFlg == 0&&oldListCheck[0].Old_Opportunity_ID__c==null){ errorflg = true; errormessage = '没有批准的需求表,不能Decide (From Apex 1120)'; return null; } if(StockFlg>0){//&&ISOstutas.size()>0 errorflg = true; errormessage = '备货确认日为空,不可以decide 报价 (From Apex 1125)'; return null; } String updateStr = ISO_DemandOperAndDemonsController.SetQuoteDecide(oppid); errorflg = false; errormessage = null; if (enableSales == true) { //販売店状態チェック if (dataCheckDecide() ==false) { return null; } } PageReference pageRef = new PageReference('/' + oppid); if (dataCheck() == false){ return null; } if (dataEntry()==false) { return null; } else { //引合に見積決定をオン 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; ↑↑↑    ↑↑↑*/ ControllerUtil.updOpp(opps[0]); } 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(); } } } 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 { //データチェック if (dataCheck() ==false) { return null; } if (dataEntry()==false) { //msg return null; } } //引合に見積提出日を保存 List opps = New List(); if (oppId==null) { system.debug('Error is Opportunityid null!!!'); } else { opps = [Select Id, Estimation_Decision__c From Opportunity Where Id =: oppId]; if (opps.size()>0) { //見積に見積印刷日を保存 List quos = New List(); if (quoId==null) { //印刷させない? system.debug('▼▼▼見積保存前印刷▼▼▼'); } 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(); ControllerUtil.updOpp(opps[0]); } 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); // 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]; if (accName[0].name != opp.Authorized_Finish_Sales__c) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '请先授权后,再进行报价试算。')); }else{ //报价试算点击时,保存行项目 精琢技术 wql 2021/05/07 start Save(); //报价试算点击时,保存行项目 精琢技术 wql 2021/05/07 end System.debug('报价id2:'+quoId); if(errorMessage == System.Label.Message_002){ return new Pagereference('/apex/QuoteTrial?Id=' + quoId); } return null; } }else{ //报价试算点击时,保存行项目 精琢技术 wql 2021/05/07 start 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) { 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 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; } } 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 dataCheckDecide() { system.debug('○○○○○○○○○○○○Welcome to dataCheckDecide class!!○○○○○○○○○○○○'); 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; 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; List accName = [select name from Account where id =: tmpid]; if (accName[0].name != opp.Authorized_Finish_Sales__c) { error = true; errormessage = '经销商未授权或授权未完成,请先授权。' ; } } //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 from PromotionSalesProducts__c where QuantityId__c=: quoId]; //如果有报价试算数据 说明选择了促销政策 if(promotionSalesProductsList.size()>0){ for(PromotionSalesProducts__c psp :promotionSalesProductsList){ if(psp.PromotionSales__r.IsPolicyEffective__c == '无效'){ IsActivePsp =false; errorPsp = psp.PromotionSales__r.name; break; } } } if(!IsActivePsp){ error = true; errormessage = '报价试算中,选择的促销政策:'+errorPsp+',不在有效期内,请检查!' ; } } //wql 报价试算 检索促销政策是否有效 end 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); } } } // String chk = OpportunityWebService.checkProRegisterDecide(proMap, opp.Agency1__c, ''); //// ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, opp.Agency1__c + chk)); // if (chk != 'OK') { // error = true; // errormessage = chk; // } // // GZW 画面出错误消息 Map chkMap = OpportunityWebService.MapCheckProRegisterDecide(proMap, opp.Agency1__c, ''); //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; } } // 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 // 营业执照有效期限” 或“税务登记证有效期限” 或“医疗器械经营企业许可证有效期限” 其中一个证超过有效期的话 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.Medical_Equipment_Num__c) == false && acc.Medical_Equipment_Expiration_Date__c != null && acc.Medical_Equipment_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; } 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; } public boolean dataEntry() { 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 initPrice = 0; 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.PricebookEntryId==null) { error = true; errormessage = System.Label.Error_Message27; } detail = true; } if(a.PageObject.UnitPrice_Page__c!=null){ initPrice += (a.VenderName=='OSH'?(a.PageObject.UnitPrice_Page__c*0.45):a.PageObject.UnitPrice_Page__c)*(a.PageObject.Quantity__c==null?0:a.PageObject.Quantity__c); } } if (enableSales == true) { // LHJ Start String profileId = UserInfo.getProfileId(); if(!profileId.left(15).equals('00e10000000NakP') && !profileId.left(15).equals('00e10000000NbDH')) { 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_Page__c = initPrice; //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(); if (changedAfterPrint) { quoId = null; } // false伝票から新規作成 if (changedAfterBid) { quoId = null; } //非创建者被人操作,则新建一份新的报价 if ( quoteOwner !=null && quoteOwner != UserInfo.getUserId() ){ quoId = null; } // 多年保修 start //报价试算 增加经销商前后对比 精琢技术 wql 20210508 start 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)) ) { quoId = null; } 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,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(); 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.Agency1_Profit_Rate__c = quo.Agency1_Profit_Rate__c; 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; q.Opportunity_sub_owner__c = opp.Opportunity_sub_owner__c; //----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 = ''; } */ if (quoId==null) { insert q; quo.Quote_No__c = q.Quote_No__c; } else { update q; } 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.ProductSetName__c = s.Product_Set_Name; 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 //不可取消多年保标识 fy 2021.10.15 start ql.CanNotCancelFlag__c = s.CanNotCancelledGurantee; //不可取消多年保标识 fy 2021.10.15 end // 计提金额 ql.GuranteePrice__c = s.GuranteePrice; ql.ProductGuranteePrice__c = s.ProductGuranteePrice; // 维修合同报价 ql.Maintenance_Price_Year__c = s.Maintenance_Price_Year; // 多年保修 end 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++; } } } insert qlist; } 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, Stock_Submit_Date__c,Stock_Confrim_Date__c,Quote_Update_Sum__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 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 = 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 system.debug(UserInfo.getProfileId() +'233333'+ System.Label.ProfileId_2S6); if(quoId==null && UserInfo.getProfileId() != System.Label.ProfileId_2S6){ o.Stock_Submit_Date__c = null; o.Stock_Confrim_Date__c = null; } 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; } ControllerUtil.updOpp(o); system.debug('○○○○○Save3○○○○○'); //OpportunityLineItem-------------------------------------------- //製品型番、品目コード、SFDAステータス、品目名、ListPrice、数量 //価格、単位、小計、OCM売上予測金額(税抜)、価格表 List ols = New List(); OpportunityLineItem ol = New OpportunityLineItem(); ols = [select Id from OpportunityLineItem Where OpportunityId =:oppid]; 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(); ol.OpportunityId = oppid; ol.Id__c = s.PageObject.Id__c; //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 赠送、经销商单价和小计 end // 多年保修 start ol.GuaranteePeriod__c = s.PageObject.GuaranteePeriod__c; //外贸多年保 取消CNY 的判断 && oppInfo.CurrencyIsoCode.equals('CNY') //外贸多年保 精琢技术 wql 2021/01/27 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/27 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; //不可取消多年保标识 fy 2021.10.15 start ol.CanNotCancelFlag__c = s.CanNotCancelledGurantee; //不可取消多年保标识 fy 2021.10.15 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++; } } } ControllerUtil.insOppLine(ols); system.debug('○○○○○Save5○○○○○'); } } else { system.debug('*****SystemError OpportunityId is Null*****'); } //保存時引合Pageに戻らない処理とした為にQuoteIdをここでセット if (quoId==null) { quoId = q.Id; } return true; } //lastbuy 2022/2/15 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/15 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 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 ++; } 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 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 } } //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 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**********************// //********************Insert [SI询价-产品配套] [20160315] [赵德芳] Start********************// public String VenderName { get; set; } public String Product_Set_Name {get;set;} //********************Insert [SI询价-产品配套] [20160315] [赵德芳] End**********************// // PriceStatusUpdate() 用の項目、TODO 初期値の設定 public QELinelatestInfo latestInfo { get; set; } // TODO ほんとうはいらない、使うところのロジックを修正しなければいけない、削除するようにしたいです。 //三方 产品注册证 报错标记用 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 Boolean CanNotCancelledGurantee {get;set;} // 维修合同报价 public decimal Maintenance_Price_Year {get; set;} // 多年保修 end public QELine(Integer i) { pageObject = New QuoteLineItem(); latestInfo = New QELinelatestInfo(); this.lineNo = i; this.haveno_Register = false; this.wrong_Register = false; } // 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.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; //********************Insert [OLY_OCM-228] [赵德芳] 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; } //********************Insert [SI询价-产品配套] [赵德芳] End**********************// 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; PageObject.Present__c = oli.Present__c; //不可取消多年保 this.CanNotCancelledGurantee = oli.PricebookEntry.Product2.CanNotCancelledGurantee__c; // CHAN-B4YAB8 2018/9/28 经销商单价和小计 // 多年保修 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.ProductEntend_gurantee_period_all__c = oli.ProductEntend_gurantee_period_all__c; PageObject.GuranteeType__c = oli.GuranteeType__c; PageObject.warrantyType__c = oli.warrantyType__c; PageObject.NoDiscountTotal__c = oli.NoDiscountTotal__c; PageObject.provistonPeriod__c = oli.provistonPeriod__c; // 计提金额 this.GuranteePrice = oli.GuranteePrice__c; // 维修合同报价 this.Maintenance_Price_Year = oli.Maintenance_Price_Year__c; // 多年保修 end PageObject.SFDA_Status__c = oli.PricebookEntry.Product2.SFDA_Status__c; PageObject.Name__c = oli.PricebookEntry.Product2.Name; Decimal cost; //外贸多年保 精琢技术 wql 2021/01/27 start 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.productServicePrice__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; } //外贸多年保 精琢技术 wql 2021/01/27 end 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 latestInfo.ProductEntend_gurantee_period_all = oli.PricebookEntry.Product2.Entend_gurantee_period_all__c; //外贸多年保 注释源代码 精琢技术 wql 2021/01/27 start // 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.GuranteeType = oli.PricebookEntry.Product2.GuranteeType__c; // 维修合同报价 //latestInfo.Maintenance_Price_Year = oli.PricebookEntry.Product2.Maintenance_Price_Year__c; //外贸多年保 取产品主数据的外贸金额 以及 报价 精琢技术 wql 2021/01/27 start 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/27 end // 多年保修 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; 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; //********************Insert [SI询价-产品配套] [赵德芳] 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; } this.Product_Set_Name = qli.ProductSetName__c; //********************Insert [SI询价-产品配套] [赵德芳] 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; } //************************************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; // latestInfo.Intra_Trade_Gurantee = qli.PricebookEntry.Product2.Intra_Trade_Gurantee_RMB__c; // latestInfo.Intra_Trade_Service = qli.PricebookEntry.Product2.Intra_Trade_Service_RMB__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 } latestInfo.GuranteeType = qli.PricebookEntry.Product2.GuranteeType__c; // 计提金额 this.GuranteePrice = qli.GuranteePrice__c; //不可取消多年保 this.CanNotCancelledGurantee = qli.PricebookEntry.Product2.CanNotCancelledGurantee__c; this.ProductGuranteePrice = qli.ProductGuranteePrice__c; //维修合同报价 //latestInfo.Maintenance_Price_Year = qli.PricebookEntry.Product2.Maintenance_Price_Year__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.haveno_Register = false; this.wrong_Register = false; } // TODO Subtotal__c、以前のロジックを確認 // 多年保修 前 原来的代码 start //public QELine(Integer i,String VenderName,String ProductSetName, // 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.Product_Set_Name = ProductSetName; // //********************Insert [SI询价-产品配套] [赵德芳] Start********************// // system.debug('VenderName=========='+VenderName); // if(VenderName==null||VenderName==''){ // this.VenderName =' 无 '; // }else{ // this.VenderName = VenderName; // } // //********************Insert [SI询价-产品配套] [赵德芳] 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; // //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.haveno_Register = false; // this.wrong_Register = false; //} // 多年保修 前 原来代码 end //20211009 lt add Date Estimated_ConsumptionDueDate, public QELine(Integer i,Boolean CanNotCancelledGurantee,String VenderName,Date Estimated_ConsumptionDueDate,String ProductSetName, 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 , 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; this.Product_Set_Name = ProductSetName; //********************Insert [SI询价-产品配套] [赵德芳] Start********************// system.debug('VenderName=========='+VenderName); if(VenderName==null||VenderName==''){ this.VenderName =' 无 '; }else{ this.VenderName = VenderName; } //********************Insert [SI询价-产品配套] [赵德芳] End**********************// //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; //不可取消多年保 this.CanNotCancelledGurantee = CanNotCancelledGurantee; // 多年保修 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; // 多年保修 end if(Packing_list_manual!=null){ latestInfo.Specifications =integer.valueof(''+Packing_list_manual); } this.haveno_Register = false; this.wrong_Register = false; } } }