From d8dc84a3d56df839895f1c417a4d9cbee763d262 Mon Sep 17 00:00:00 2001
From: 高章伟 <gaozhangwei@prec-tech.com>
Date: 星期五, 03 三月 2023 14:50:59 +0800
Subject: [PATCH] gzw 测试环境代码更新

---
 force-app/main/default/classes/QuoteTrialController.cls |  161 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 151 insertions(+), 10 deletions(-)

diff --git a/force-app/main/default/classes/QuoteTrialController.cls b/force-app/main/default/classes/QuoteTrialController.cls
index 8ede84e..14bd73d 100644
--- a/force-app/main/default/classes/QuoteTrialController.cls
+++ b/force-app/main/default/classes/QuoteTrialController.cls
@@ -20,8 +20,8 @@
           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){
@@ -69,11 +69,63 @@
     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() {
@@ -92,12 +144,19 @@
        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;
     }
@@ -386,13 +445,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 +488,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