// 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; }
|
|
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<QELine> activities { get; set; }
|
public List<QELine> tmpactivities { get; set; }
|
public QELine active_activity { get; set; }
|
public OppInfo oppInfo { get; set; }
|
//用于检查询价报价具体产品状态是否变更
|
public List<QuoteLineItem> 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<SelectOption> 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<Id, Product2> 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<Quote> ql = New List<Quote>();
|
//添加行
|
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<Quote> ql = New List<Quote>();
|
//添加行
|
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<User> us = New List<User>();
|
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<Opportunity> oppList = New List<Opportunity>();
|
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<OpportunityLineItem> items = New List<OpportunityLineItem>();
|
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<QELine>();
|
i=0;
|
|
for (OpportunityLineItem o:items) {
|
QELine c = new QELine(o,i);
|
activities.add(c);
|
i++;
|
}
|
for (integer j=i;j<quoteEntryMaxLine;j++) {
|
QELine c = new QELine(j);
|
activities.add(c);
|
}
|
|
} else {
|
//新規リストコントローラの取得
|
if (activities==null) {
|
activities = new List<QELine>();
|
for (i=0;i<quoteEntryMaxLine;i++) {
|
QELine active_activity = new QELine(i);
|
activities.add(active_activity);
|
}
|
}
|
}
|
} else {
|
//新規リストコントローラの取得
|
if (activities==null) {
|
activities = new List<QELine>();
|
for (i=0;i<quoteEntryMaxLine;i++) {
|
QELine active_activity = new QELine(i);
|
activities.add(active_activity);
|
}
|
}
|
}
|
} else {
|
//添加行
|
List<Quote> quoList =
|
[ SELECT Id,Name,Cancel_Decide__c,CreatedDate, PriceRefreshDate__c,Quote_Print_Date__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<QuoteLineItem> 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
|
|
//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<QELine>();
|
i=0;
|
QELine c = new QELine(i);
|
if (items.size()>0) {
|
for (QuoteLineItem o:items) {
|
c = new QELine(o,i,copyQuoId);
|
activities.add(c);
|
i++;
|
}
|
|
for (integer j=i;j<quoteEntryMaxLine;j++) {
|
c = new QELine(j);
|
activities.add(c);
|
}
|
|
} else {
|
activities = new List<QELine>();
|
for (i=0;i<quoteEntryMaxLine;i++) {
|
QELine active_activity = new QELine(i);
|
activities.add(active_activity);
|
}
|
}
|
//******************************************************************************************
|
// 增加检测产品状态是否发生变化
|
//******************************************************************************************
|
List<String> product2Ids = New List<String>();
|
if (activities.size()>0) {
|
for (QELine a:activities){
|
if (String.isBlank(a.PageObject.Id__c) == false) {
|
product2Ids.add(a.PageObject.Id__c);
|
}
|
}
|
}
|
Map<String,String> loopMap = new Map<String,String>();
|
if(CheckItem.size()>0){
|
for(QuoteLineItem qli : CheckItem){
|
loopMap.put(qli.PricebookEntry.Product2Id,qli.SFDA_Status__c);
|
}
|
}
|
// ここを修正したら、NFM007.triggerも要確認
|
prd2LatestValMap = new Map<Id, Product2>();
|
if(CheckItem.size()>0){
|
List<Product2> 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<Account> accs2=[Select Id, RecordType.DeveloperName, Hospital__c, Agent_Ref__c From Account Where Id =:accountid];
|
if (accs2.size()>0) {
|
List<Account> accs = new List<Account>();
|
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<SelectOption>();
|
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);
|
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<String> productIDLIST = new List<String>();
|
//********************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<Id> productIds = null;
|
|
// ----------------------------------------------------------------------------------------
|
// 該当するセット品明細のレコードを取得
|
// ----------------------------------------------------------------------------------------
|
system.debug('-----:Product_Set_Detail__c select start');
|
List<Product_Set_Detail__c> 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<Id>();
|
for (Product_Set_Detail__c local : productSetDetails) {
|
productIds.add(local.Product__c);
|
}
|
}
|
|
//=======Temporary=====
|
tmpactivities = activities;
|
|
//=======Initialize=========
|
activities = new List<QELine>();
|
|
boolean lineflg = false;
|
|
// ----------------------------------------------------------------------------------------
|
// Product2へのクエリを実行
|
// 一度Listで結果を受けた後に、Product2Idの Mapにする
|
// ----------------------------------------------------------------------------------------
|
system.debug('-----:Product2 select start');
|
Map<Id, Product2> items = new Map<Id, Product2>();
|
List<Product2> 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
|
|
//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<Id, PricebookEntry> entries = new Map<Id, PricebookEntry>();
|
List<PricebookEntry> 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<String> Nl = new List<String>();
|
Map<String,String> nameMap = new Map<String,String>();
|
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<QELine> tmpQELine = new List<QELine>();
|
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<QELine>();
|
activities.addAll(tmpQELine);
|
PageArrange();
|
}
|
//添加行
|
public void addMultipleRow() {
|
List<QELine> tmpQELine = new List<QELine>();
|
//页面上的输入框追加 (只能在末尾追加)
|
|
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<QELine>();
|
activities.addAll(tmpQELine);
|
PageArrange();
|
}
|
|
}
|
public void DownloadCsv(){
|
//操作属性上的公式表达式必填。 ===>>>取消return
|
List<Quote> 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<Quote> 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<Id,Opportunity> oppMap = new Map<Id,Opportunity>();
|
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<QELine>();
|
//List<OpportunityLineItem> items = New List<OpportunityLineItem>();
|
Integer i = 0;
|
Integer xlscnt = 0;
|
Integer rightcnt = 0; // 成功した数をカウント
|
|
string[] xlslists = excel_text.split('\n',-1);
|
List<string> xlslist = New list<string>();
|
List<string> codelist = New List<string>();
|
List<Integer> Quantitylist = New List<Integer>();
|
//String str ;
|
|
Map<String, Integer> mp = new Map<String, Integer>();
|
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<String, Product2> mpProduct2 = new Map<String, Product2>(); // keyがProductCodeです。
|
List<Product2> 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
|
|
//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<String, PricebookEntry> entries = new Map<String, PricebookEntry>(); // keyがProductCodeです。
|
List<PricebookEntry> pbes = [
|
select Id, PricebookEntry.Product2.ProductCode
|
FROM PricebookEntry Where PricebookEntry.Product2.ProductCode IN :codelist
|
AND CurrencyIsoCode = :(opp.Trade__c == '外貿' ? 'USD' : 'CNY')
|
AND IsActive = true];
|
for (PricebookEntry pbe:pbes) {
|
system.debug('pbe.Product2.ProductCode:::::' + pbe.Product2.ProductCode);
|
entries.put(pbe.Product2.ProductCode, pbe);
|
}
|
|
for (Integer l=0;l<codelist.size();l++) {
|
system.debug('codelist[l]:::::' + codelist[l]);
|
Product2 prd = mpProduct2.get(codelist[l]);
|
if (prd != null) {
|
PricebookEntry pbe = entries.get(codelist[l]);
|
QELine c = null;
|
if (pbe != null && (opp.Trade__c=='外貿' || opp.Trade__c=='内貿')) {
|
if (opp.Trade__c=='外貿') {
|
if (prd.Foreign_Trade_List_US__c > 0 && prd.Foreign_Trade_Cost_US__c > 0) {
|
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<Account> accs = New List<Account>();
|
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<Account> accs = New List<Account>();
|
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<Id, String> proMap = new Map<Id, String>();
|
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<String> errList = new List<String>();
|
// 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<String,String> 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<IS_Opportunity_Demand__c> 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<opportunity> 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++;
|
}
|
}
|
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<Opportunity> 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<Opportunity> opps = New List<Opportunity>();
|
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<Quote> quos = New List<Quote>();
|
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<Account> 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<String> product2Ids = New List<String>();
|
|
if (activities.size()>0) {
|
for (QELine a:activities){
|
if (String.isBlank(a.PageObject.Id__c) == false) {
|
product2Ids.add(a.PageObject.Id__c);
|
}
|
}
|
Map<String,String> loopMap = new Map<String,String>();
|
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<Id, Product2>();
|
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;
|
|
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<Account> 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<PromotionSalesProducts__c> 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<Id, String> proMap = new Map<Id, String>();
|
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<String,String> 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<Id> accIds = new List<Id>();
|
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<Account> 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<String> salesClazz = new List<String> {'特約販売店(区域)', '特約販売店(製品)', '特約販売店(製品+区域)', '一級販売店', '集采经销商'};
|
// 有效/无效(公式)!= 有效
|
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<Quote> 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<Quote> qs = New List<Quote>();
|
qs = [select Id,OpportunityId,Pricebook2Id,Name,Estimation_List_Price__c,Dealer_Final_Price__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<String> pIds = new List<String>();
|
for (QELine s:activities) {
|
if (String.isBlank(s.PageObject.Id__c) == false) {
|
pIds.add(s.PageObject.Id__c);
|
}
|
}
|
List<Product2> 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;
|
/*
|
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<QuoteLineItem> qlist = New List<QuoteLineItem>();
|
qlist=[Select Id From QuoteLineItem Where QuoteId =:quoId];
|
if (qlist.size()>0) {
|
//delete
|
delete qlist;
|
}
|
|
//QuoteLineItem--------------------------------------------
|
//製品型番、品目コード、SFDAステータス、品目名、ListPrice、数量
|
//価格、単位、小計、OCM売上予測金額(税抜)、価格表
|
qlist = New List<QuoteLineItem>();
|
//Sap送信,Printに合わせて1~
|
Integer i=1;
|
if (activities.size()>0) {
|
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<Opportunity> os = New List<Opportunity>();
|
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<OpportunityLineItem> ols = New List<OpportunityLineItem>();
|
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<OpportunityLineItem>();
|
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;
|
}
|
|
//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;
|
}
|
}
|
}
|