高章伟
2023-03-02 e3c02c03dd2de442bbced87236f60a13a1cd154e
force-app/main/default/classes/QuoteTrialController.cls
@@ -386,13 +386,22 @@
           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;
@@ -420,6 +429,79 @@
               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;