| | |
| | | Map<String,QuoteLineItem> map1 = new Map<String,QuoteLineItem>(); |
| | | string sql = 'select '; |
| | | String props = CommonUtils.GetSqlToPorps(QuoteLineItem.SObjectType); |
| | | sql += props; |
| | | sql +=' ,Product2.Intra_Trade_List_RMB__c,Product2.Intra_Trade_Service_RMB__c,Product2.Foreign_Trade_List_US__c,Product2.NoDiscount_Foreign__c,Product2.MDM_Model_No__c '; |
| | | sql += props;//SWAG-CFZAKE【委托】报价计算二期 fy start Product2.Dealer_Object__c,Product2.ENG_DeaerProFlag__c |
| | | sql +=' ,Product2.Intra_Trade_List_RMB__c,Product2.Intra_Trade_Service_RMB__c,Product2.Foreign_Trade_List_US__c,Product2.NoDiscount_Foreign__c,Product2.MDM_Model_No__c,Product2.Dealer_Object__c,Product2.ENG_DeaerProFlag__c '; |
| | | sql += ' from QuoteLineItem where Quoteid = :IdParam '; |
| | | List<QuoteLineItem> arrays = Database.query(sql); |
| | | for(QuoteLineItem pspsc :arrays){ |
| | |
| | | public static string GetPromotionPromotionSearch(Integer page, Integer pageLimit,String search,String sortOrder,String sortPlus) { |
| | | QuoteTrialService dao = new QuoteTrialService(); |
| | | String[] arrTest = new String[] {'PromotionNo__cEqual','NameLike'}; |
| | | PagePlus pages = dao.GetPromotionPromotionSearchFn(page,pageLimit,search,sortOrder,sortPlus,arrTest); |
| | | PagePlus pages = dao.GetPromotionPromotionSearchFn(page,pageLimit,search,sortOrder,sortPlus,arrTest); |
| | | //SWAG-CFZAKE【委托】报价计算二期 fy start |
| | | List<SObject> pagesRecordsList = pages.getRecords(); |
| | | pagesRecordsList=screenPromotionHeadc(pagesRecordsList); |
| | | pages.setRecords(pagesRecordsList); |
| | | //SWAG-CFZAKE【委托】报价计算二期 fy end |
| | | return JSON.serialize(pages); |
| | | // return DataBasePlus.Mysql; |
| | | } |
| | | |
| | | //SWAG-CFZAKE【委托】报价计算二期 fy start |
| | | //筛选促销方案方法 |
| | | public static List<SObject> screenPromotionHeadc(List<SObject> pagesRecordsList){ |
| | | List<Id> PromotionHeadIdList=new List<Id>(); |
| | | // List<SObject> pagesRecordsList = pages.getRecords(); |
| | | for(SObject item:pagesRecordsList){ |
| | | PromotionHeadIdList.add(item.Id); |
| | | } |
| | | List<PromotionProduct__c> PromotionProductList=[select Id,Asset_Model_No__c,PromotionHead__c from PromotionProduct__c where PromotionHead__c in:PromotionHeadIdList ]; |
| | | system.debug('测试报价计算二期1==='+PromotionProductList); |
| | | List<String> PromotionProductIdList=new List<String>(); |
| | | Map<String,List<Id>> PromotionProductMap = new Map<String,List<Id>>(); |
| | | for(PromotionProduct__c item2:PromotionProductList){ |
| | | PromotionProductIdList.add(item2.Asset_Model_No__c); |
| | | if(PromotionProductMap.containsKey(item2.Asset_Model_No__c)){ |
| | | List<Id> prodh2 = new List<Id>(); |
| | | prodh2 = PromotionProductMap.get(item2.Asset_Model_No__c); |
| | | prodh2.add(item2.PromotionHead__c); |
| | | PromotionProductMap.put(item2.Asset_Model_No__c, prodh2); |
| | | }else{ |
| | | List<Id> prodh = new List<Id>(); |
| | | prodh.add(item2.PromotionHead__c); |
| | | PromotionProductMap.put(item2.Asset_Model_No__c, prodh); |
| | | } |
| | | } |
| | | List<Product2> Product2List=[select Id,MDM_Model_No__c,Dealer_Object__c from Product2 where MDM_Model_No__c in:PromotionProductIdList ]; |
| | | Set<Id> PromotionHeadMatchingSet = new Set<Id>(); |
| | | for(Product2 item3:Product2List){ |
| | | if(item3.Dealer_Object__c){ |
| | | if(PromotionProductMap.containsKey(item3.MDM_Model_No__c)){ |
| | | List<Id> prodh3 = new List<Id>(); |
| | | prodh3 = PromotionProductMap.get(item3.MDM_Model_No__c); |
| | | for(Id PromoID :prodh3){ |
| | | PromotionHeadMatchingSet.add(PromoID); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | List<SObject> pagesRecordsList2 = new List<SObject>(); |
| | | for(SObject item4:pagesRecordsList){ |
| | | if(!PromotionHeadMatchingSet.contains(item4.Id)){ |
| | | pagesRecordsList2.add(item4); |
| | | } |
| | | } |
| | | // pages.setRecords(pagesRecordsList2); |
| | | return pagesRecordsList2; |
| | | } |
| | | //SWAG-CFZAKE【委托】报价计算二期 fy end |
| | | //获取 固定资产 |
| | | // @AuraEnabled |
| | | // public static List<PromotionHead__c> GetPromotionNormalProduct() { |
| | |
| | | String[] arrTest = new String[] {'PromotionNo__cEqual','NameLike'}; |
| | | PagePlus pages = dao.GetNormalProductSearchFn(page,pageLimit,search,sortOrder,sortPlus,arrTest); |
| | | |
| | | |
| | | // pages=screenPromotionHeadc(pages); |
| | | //SWAG-CFZAKE【委托】报价计算二期 fy start |
| | | List<SObject> pagesRecordsList = pages.getRecords(); |
| | | pagesRecordsList=screenPromotionHeadc(pagesRecordsList); |
| | | pages.setRecords(pagesRecordsList); |
| | | //SWAG-CFZAKE【委托】报价计算二期 fy end |
| | | |
| | | QueryWrapper query = new QueryWrapper(PromotionHead__c.SObjectType); |
| | | query.eq('recordtype.developername', 'NormalProduct'); |
| | | List<PromotionHead__c> arrays = DataBasePlus.listPlus(query); |
| | | |
| | | //SWAG-CFZAKE【委托】报价计算二期 fy start |
| | | arrays=screenPromotionHeadc(arrays); |
| | | //SWAG-CFZAKE【委托】报价计算二期 fy end |
| | | return JSON.serialize(pages) + '--' + JSON.serialize(arrays); |
| | | // return DataBasePlus.Mysql; |
| | | } |
| | |
| | | if(psp!=null){ |
| | | insert psp ; |
| | | } |
| | | Quote quote = new Quote(); |
| | | // SWAG-CCY65A 2022-04-19 ssm start |
| | | // 在报价计算保存之后,按照报价上的保存逻辑给报价行和询价产品行重新计算一次预测金额 |
| | | // Quote quote = new Quote(); |
| | | // quote.Id=QuoteId; |
| | | Quote quote = [select Id, |
| | | TotalPrice__c, // 总价 |
| | | Estimation_List_Price__c, // 标准List价格 |
| | | MultiYearWarrantyTotalPrice__c // 多年保合计 |
| | | from Quote where Id = :QuoteId]; |
| | | quote.OCM_Sales_Forecast__c=ContractPrice; |
| | | System.debug('quote:' + quote); |
| | | |
| | | Opportunity opportunity = new Opportunity(); |
| | | opportunity.Id=OpportunityId; |
| | | System.debug('OpportunityId==='+OpportunityId); |
| | | quote.Id=QuoteId; |
| | | quote.OCM_Sales_Forecast__c=ContractPrice; |
| | | opportunity.Wholesale_Price__c=ContractPrice; |
| | | System.debug('opportunity:'+opportunity); |
| | | if(SalesRootc.equals('販売店')){ |
| | | //赋值给下面的 合同金额 并置灰不可编辑 |
| | | quote.OCM_Agent1_Price_Page__c=ContractPrice; |
| | |
| | | if(opportunity!=null){ |
| | | update opportunity; |
| | | } |
| | | // 更新报价行和询价产品行 |
| | | //OCM売上予測金額(税込) = OCM成約予測金額(税込み) * (小計 / 見積合計) |
| | | System.debug('opportunity.Wholesale_Price__c != null: ' + (opportunity.Wholesale_Price__c != null)); |
| | | System.debug('quote.TotalPrice__c != null: ' + (quote.TotalPrice__c != null)); |
| | | System.debug('quote.TotalPrice__c > 0: ' + (quote.TotalPrice__c > 0)); |
| | | System.debug('quote:' + quote); |
| | | System.debug('update flag:' + (opportunity.Wholesale_Price__c != null && quote.TotalPrice__c != null && quote.TotalPrice__c > 0)); |
| | | if (opportunity.Wholesale_Price__c != null && quote.TotalPrice__c != null && quote.TotalPrice__c > 0) { |
| | | System.debug('进入更新行项目操作'); |
| | | // 获取报价行并重新计算报价行的预测金额 |
| | | List<QuoteLineItem> quo_lines = [SELECT |
| | | Id, |
| | | TotalPrice__c, // 总计 ((最新产品定价 + NoDiscount) * 数量) |
| | | OCM_Sales_Forecast__c, // OCSM売上予測金額(税込み) |
| | | AgencySubtotal__c, // 经销商小计 |
| | | AgencyUnitPrice__c, // 经销商单价 |
| | | GuranteePrice__c, // 计提金额 |
| | | Product_ListPrice__c, // 最新产品定价 |
| | | NoDiscountTotal__c, // NoDiscount小计 |
| | | Quantity // 数量 |
| | | FROM |
| | | QuoteLineItem |
| | | WHERE |
| | | QuoteId = :quote.Id |
| | | AND |
| | | TotalPrice__c > 0]; |
| | | System.debug('quo_lines:' + quo_lines); |
| | | if (quo_lines != null && quo_lines.size() > 0) { |
| | | // 更新报价行上的各种值 |
| | | for(QuoteLineItem item : quo_lines) { |
| | | // 预测成交金额 = 合同总金额 * (行总价 / 报价总价) |
| | | item.OCM_Sales_Forecast__c = opportunity.Wholesale_Price__c * (item.TotalPrice__c / quote.TotalPrice__c); |
| | | // 经销商小计 = (合同总金额 - 多年保合计) * (行最新定价总金额 / 标准定价总额) + NoDiscount小计 |
| | | Decimal NoDiscountTotal = item.NoDiscountTotal__c != null ? item.NoDiscountTotal__c : 0; |
| | | item.AgencySubtotal__c = (opportunity.Wholesale_Price__c - quote.MultiYearWarrantyTotalPrice__c) * (item.Product_ListPrice__c * item.Quantity / quote.Estimation_List_Price__c) + NoDiscountTotal; |
| | | // 经销商单价 = 经销商小计 / 数量 |
| | | item.AgencyUnitPrice__c = item.Quantity > 0 ? item.AgencySubtotal__c / item.Quantity : item.AgencyUnitPrice__c; |
| | | } |
| | | update quo_lines; |
| | | } |
| | | // 获取询价产品行并重新计算预测金额 |
| | | List<OpportunityLineItem> opp_lines = [SELECT |
| | | Id, |
| | | TotalPrice__c, // 总计 |
| | | ListPrice_total_price__c, // 最新ListPrice总额(不含NoDiscount的金额) |
| | | OCM_Sales_Forecast__c, // OCSM预测成交金额 |
| | | AgencySubtotal__c, // 经销商小计 |
| | | AgencyUnitPrice__c, // 经销商单价 |
| | | GuranteePriceSum__c, // 计提金额合计 |
| | | NoDiscountTotal__c, // NoDiscount小计 |
| | | Quantity // 数量 |
| | | FROM |
| | | OpportunityLineItem |
| | | WHERE |
| | | OpportunityId = :opportunity.Id |
| | | AND |
| | | TotalPrice__c > 0]; |
| | | System.debug('opp_lines:' + opp_lines); |
| | | if (opp_lines != null && opp_lines.size() > 0) { |
| | | // 再更新询价行上的各种值 |
| | | for (OpportunityLineItem item : opp_lines) { |
| | | // 预测成交金额 = 合同总金额 * (行总价 / 报价总价) |
| | | item.OCM_Sales_Forecast__c = opportunity.Wholesale_Price__c * (item.TotalPrice__c / quote.TotalPrice__c); |
| | | // 经销商小计 = (合同总金额 - 多年保合计) * (行最新定价总金额 / 标准定价总额) + NoDiscount小计 |
| | | Decimal NoDiscountTotal = item.NoDiscountTotal__c != null ? item.NoDiscountTotal__c : 0; |
| | | item.AgencySubtotal__c = (opportunity.Wholesale_Price__c - quote.MultiYearWarrantyTotalPrice__c) * (item.ListPrice_total_price__c / quote.Estimation_List_Price__c) + NoDiscountTotal; |
| | | // 经销商单价 = 经销商小计 / 数量 |
| | | item.AgencyUnitPrice__c = item.Quantity > 0 ? item.AgencySubtotal__c / item.Quantity : item.AgencyUnitPrice__c; |
| | | } |
| | | update opp_lines; |
| | | } |
| | | } |
| | | // SWAG-CCY65A 2022-04-19 ssm end |
| | | System.debug('psp'+psp); |
| | | // String TempStr = Json.serialize(goodsList); |
| | | // return TempStr; |