From e3c02c03dd2de442bbced87236f60a13a1cd154e Mon Sep 17 00:00:00 2001
From: 高章伟 <gaozhangwei@prec-tech.com>
Date: 星期四, 02 三月 2023 17:51:57 +0800
Subject: [PATCH] gzw 正式环境最新代码更新

---
 force-app/main/default/classes/QuoteTrialController.cls |   90 +++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 86 insertions(+), 4 deletions(-)

diff --git a/force-app/main/default/classes/QuoteTrialController.cls b/force-app/main/default/classes/QuoteTrialController.cls
index 8ede84e..9b6f039 100644
--- a/force-app/main/default/classes/QuoteTrialController.cls
+++ b/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('璨╁2搴�')){
                     //璧嬪�肩粰涓嬮潰鐨� 鍚堝悓閲戦 骞剁疆鐏颁笉鍙紪杈�
                     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,  // 鏈�鏂癓istPrice鎬婚(涓嶅惈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;

--
Gitblit v1.9.1