From 99b667bdfd8d4fd4d56c2952510169d7f7be794c Mon Sep 17 00:00:00 2001
From: 沙世明 <shashiming@prec-tech.com>
Date: 星期四, 09 三月 2023 17:12:43 +0800
Subject: [PATCH] 产品报价金额自动计算

---
 force-app/main/default/classes/NewQuoteEntryController.cls |   95 +++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 86 insertions(+), 9 deletions(-)

diff --git a/force-app/main/default/classes/NewQuoteEntryController.cls b/force-app/main/default/classes/NewQuoteEntryController.cls
index 3a8261c..356a655 100644
--- a/force-app/main/default/classes/NewQuoteEntryController.cls
+++ b/force-app/main/default/classes/NewQuoteEntryController.cls
@@ -226,6 +226,9 @@
                // lastbuy鍒ゆ柇鍙樻洿鐢ㄦ埛璇环 start
                , If_Account_Change__c 
                // lastbuy鍒ゆ柇鍙樻洿鐢ㄦ埛璇环 end
+               // DB202303051651 浜у搧鎶ヤ环閲戦鑷姩璁$畻 ssm start
+               , Salesdepartment_Owner__c 
+               // DB202303051651 浜у搧鎶ヤ环閲戦鑷姩璁$畻 ssm end
                FROM Opportunity Where Id = :oppId];
     // 澶氬勾淇濅慨 start
     trade = '澶栬部';
@@ -368,8 +371,8 @@
       }
     } else {
       //娣诲姞琛�
-      List<Quote> quoList =
-        [ SELECT Id, Name, Cancel_Decide__c, CreatedDate, PriceRefreshDate__c, Quote_Print_Date__c,
+      List<Quote> quoList =//SWAG-CKDATG 銆愬鎵樸�戙�怬BSAP-鎶ヤ环濮旀墭銆戞姤浠峰鎵橀」鐩敼鍠�1 fy start QuotationChange__c,MainEngineWithoutMonitor__c,Interdepartmental__c,
+        [ SELECT Id, Name, Cancel_Decide__c, CreatedDate, PriceRefreshDate__c, Quote_Print_Date__c,QuotationChange__c,MainEngineWithoutMonitor__c,Interdepartmental__c,
           Dealer_Final_Price__c, TotalPrice__c, Estimation_List_Price__c, QuoteNumber,
           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,
@@ -384,7 +387,7 @@
           // 澶氬勾淇濅慨 end
           //鎶ヤ环璇曠畻 start
             ,IsQuoteTrial__c  
-            //鎶ヤ环璇曠畻 end
+            //鎶ヤ环璇曠畻 end 
           FROM Quote Where Id = :quoId];
       List<QuoteLineItem> items =
         [Select Id, Asset_Model_No__c, SFDA_Status__c, Product_Sales_Possibility__c,
@@ -448,6 +451,7 @@
         }
         if (copyQuoId == null) {
           quo = quoList[0];
+          
           quo.QuoteName__c = quo.Name;
           // 澶氬勾淇濅慨 start
           quoteGurantee_Period = quo.Gurantee_Period__c;
@@ -819,10 +823,13 @@
     // CHAN-AVG3PW 璇环鎶ヤ环鐢婚潰瑙勫垯鍙樻洿
     Datetime cDate = quo.CreatedDate;
     over3month = cDate != null && cDate.date().addMonths(3) < Date.today();
-
+//SWAG-CKDATG 銆愬鎵樸�戙�怬BSAP-鎶ヤ环濮旀墭銆戞姤浠峰鎵橀」鐩敼鍠�1 fy start
+quo.Offer_Amount__c = true;
+quo.TOTAL__c = true;
+quo.Preferential_Gurantee_Period__c = true;
+//SWAG-CKDATG 銆愬鎵樸�戙�怬BSAP-鎶ヤ环濮旀墭銆戞姤浠峰鎵橀」鐩敼鍠�1 fy end
     return null;
   }
-
 
   //Search Events============================================================
   // TODO ManualEntry銇ㄥ悓妲樸�乯s銇仸瑙f焙銇с亶銈嬨�併亾銇撱仹webservice銇犮亼銈掑疅瑁呫�佷粖寰� by katsu
@@ -1192,9 +1199,11 @@
           xlscode = null;
           xlsQuantity = null;
           xlslist = xls.split('\t', -1);
+          system.debug('xlslist+++'+xlslist);
           for (String s : xlslist) {
             //odd number or even number
             if (math.mod(i, 2) != 0) {
+              system.debug('xlslist1+++'+s);
               //odd number
               if (s == '' || s == null) {
                 errorflg = true;
@@ -1208,6 +1217,7 @@
                 Quantitylist.add(xlsQuantity);
               }
             } else {
+              system.debug('xlslist2+++'+s);
               //even number
               if (s == '' || s == null) {
                 errorflg = true;
@@ -1228,6 +1238,7 @@
         }
       }
     } catch (Exception ex) {
+      system.debug('xlslist3+++'+xlscnt);
       activities = tmpactivities;
       errorflg = true;
       errormessage = System.Label.Error_Message31;
@@ -1241,6 +1252,8 @@
     if (codelist.size() == 0 || Quantitylist.size() == 0) {
       activities = tmpactivities;
       errorflg = true;
+      system.debug('codelist+++'+codelist);
+      system.debug('Quantitylist+++'+Quantitylist);
       errormessage = System.Label.Error_Message31;
       pageArrange();
       return null;
@@ -2921,8 +2934,8 @@
         }
 
       } else {
-        List<Quote> qs = New List<Quote>();
-        qs = [select Id, OpportunityId, CreatedDate, Pricebook2Id, Name, Estimation_List_Price__c, Dealer_Final_Price__c,
+        List<Quote> qs = New List<Quote>();//SWAG-CKDATG 銆愬鎵樸�戙�怬BSAP-鎶ヤ环濮旀墭銆戞姤浠峰鎵橀」鐩敼鍠�1 fy start QuotationChange__c,MainEngineWithoutMonitor__c,Interdepartmental__c,
+        qs = [select Id, OpportunityId, CreatedDate, Pricebook2Id, Name, Estimation_List_Price__c, Dealer_Final_Price__c,QuotationChange__c,MainEngineWithoutMonitor__c,Interdepartmental__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,
@@ -3008,18 +3021,29 @@
       q.Quote_Comment__c = quo.Quote_Comment__c;
 
       q.Installation_location__c = quo.Installation_location__c;
+
+      //SWAG-CKDATG 銆愬鎵樸�戙�怬BSAP-鎶ヤ环濮旀墭銆戞姤浠峰鎵橀」鐩敼鍠�1 fy start
+      q.QuotationChange__c = quo.QuotationChange__c;
+      q.MainEngineWithoutMonitor__c = quo.MainEngineWithoutMonitor__c;
+      q.Interdepartmental__c = quo.Interdepartmental__c;
+      //SWAG-CKDATG 銆愬鎵樸�戙�怬BSAP-鎶ヤ环濮旀墭銆戞姤浠峰鎵橀」鐩敼鍠�1 fy end
       /*
       if (hasType3Machine) {
           q.Installation_location__c = '';
       }
       */
-      System.debug('start save quote at: ' + System.currentTimeMillis());
+      System.debug('q.QuotationChange__c+++'+q.QuotationChange__c);
+      System.debug('quo.QuotationChange__c++' + quo.QuotationChange__c);
+      System.debug('quo.MainEngineWithoutMonitor__c++' + quo.MainEngineWithoutMonitor__c);
       if (quoId == null) {
         insert q;
         quo.Quote_No__c = q.Quote_No__c;
       } else {
         update q;
       }
+      System.debug('q.QuotationChange__c2+++'+q.QuotationChange__c);
+      System.debug('quo.QuotationChange__c2++' + quo.QuotationChange__c);
+      System.debug('quo.MainEngineWithoutMonitor__c2++' + quo.MainEngineWithoutMonitor__c);
       System.debug('finished save quote at: ' + System.currentTimeMillis());
 
       system.debug('鈼嬧棆鈼嬧棆鈼婼ave1鈼嬧棆鈼嬧棆鈼�');
@@ -3103,6 +3127,9 @@
       os = [select Id, Estimation_List_Price__c, Dealer_Final_Price__c, Estimation_List_Price_Without_Tax__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, Quote_Update_Sum__c , Hospital__c,Is_Corrosion__c 
+            // lt 20221008 SWAG-CHL5XA銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 start
+            ,StageName ,OlyNumberHosts__c
+            // lt 20221008 SWAG-CHL5XA銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 end
             From Opportunity Where Id = :oppid];
       if (os.size() > 0) {
         o = os[0];
@@ -3138,6 +3165,40 @@
         o.quoteSavedDate__c = Date.today();
         // 澶氬勾淇濅慨 end
 
+        // lt 20221008 SWAG-CHL5XA銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 start
+        System.debug('lt123璇环鐘舵��(闃舵): ' + o.StageName);
+        System.debug('lt123activities: ' + activities);
+        o.OlyNumberHosts__c = 0;
+        System.debug('lt123涓绘満鏁�: ' + o.OlyNumberHosts__c);
+        List<String> oppIds = New List<String>();
+        List<String> product2Ids = New List<String>();
+        Map<String,Decimal> product2IdsMap = new Map<String,Decimal>();
+        if (activities.size() > 0) {
+          for (QELine a : activities) {
+            if (String.isBlank(a.PageObject.Id__c) == false) {
+              product2Ids.add(a.PageObject.Id__c);
+              product2IdsMap.put(a.PageObject.Id__c,a.PageObject.Quantity__c);
+            }
+          }
+
+          for (Product2 prod : [Select Id,ProductClass__c
+                                From Product2 Where Id IN :product2Ids]) {
+            System.debug('lt123浜у搧甯傚満绫诲埆: ' + prod.ProductClass__c);
+
+                if(o.StageName == '寮曞悎' || o.StageName == '娉ㄦ畫' || o.StageName == '鍑鸿嵎' || o.StageName == '瀹屼簡'){
+                  if(prod.ProductClass__c == '涓绘満'){
+                    if(product2IdsMap.containsKey(prod.Id)){
+                      o.OlyNumberHosts__c += product2IdsMap.get(prod.Id);
+                      oppIds.add(o.Id);
+                      ControllerUtil.UpdateBiddingFlag(oppIds);
+                    }
+                  }else{
+                    o.OlyNumberHosts__c += 0;
+                  }
+                }
+          }
+        }
+        // lt 20221008 SWAG-CHL5XA銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 end
 
         if (o.Quote_Update_Sum__c == null) {
           o.Quote_Update_Sum__c = 1;
@@ -3159,7 +3220,10 @@
         //渚℃牸銆佸崢浣嶃�佸皬瑷堛�丱CM澹蹭笂浜堟脯閲戦锛堢◣鎶滐級銆佷尽鏍艰〃
         List<OpportunityLineItem> ols = New List<OpportunityLineItem>();
         OpportunityLineItem ol = New OpportunityLineItem();
-        ols = [select Id from OpportunityLineItem Where OpportunityId = :oppid];
+        // lt 20221008 SWAG-CHL5XA銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 end
+        ols = [select Id, Quantity from OpportunityLineItem Where OpportunityId = :oppid];  //update
+        System.debug('lt123璇环浜у搧: ' + ols);
+        // lt 20221008 SWAG-CHL5XA銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 end
         if (ols.size() > 0) {
           //delete
           ControllerUtil.delOppLine(ols);
@@ -3173,6 +3237,7 @@
             if (s.Asset_Model != null && s.Asset_Model != '') {
               if (s.PageObject.PricebookEntryId != null) {
                 ol = New OpportunityLineItem();
+                System.debug('lt123璇环浜у搧鏁伴噺: ' + ol.Quantity);   //lt CHL5XA銆怓Y23璇环鏀瑰杽銆�
                 ol.OpportunityId = oppid;
                 ol.Id__c = s.PageObject.Id__c;
                 // CHAN-AVG3PW 璇环鎶ヤ环鐢婚潰瑙勫垯鍙樻洿
@@ -3411,6 +3476,12 @@
     // lastbuy鍒ゆ柇鍙樻洿鐢ㄦ埛璇环 start
     public Boolean is_changed_opp { get; set; }
     // lastbuy鍒ゆ柇鍙樻洿鐢ㄦ埛璇环 end
+    // DB202303051651 浜у搧鎶ヤ环閲戦鑷姩璁$畻 ssm start
+    // 鍖婚櫌鍚堝悓閲戦姣斾緥
+    public Decimal rate_hospital { get; set; }
+    // 缁忛攢鍟�1鍚堝悓閲戦姣斾緥
+    public Decimal rate_agency1 { get; set; }
+    // DB202303051651 浜у搧鎶ヤ环閲戦鑷姩璁$畻 ssm end
 
     public OppInfo(Opportunity opp) {
       Account_RecordType_DeveloperName = opp.Account.RecordType.DeveloperName;
@@ -3431,6 +3502,12 @@
       // lastbuy鍒ゆ柇鍙樻洿鐢ㄦ埛璇环 start
       is_changed_opp = opp.If_Account_Change__c != null ? opp.If_Account_Change__c : false;
       // lastbuy鍒ゆ柇鍙樻洿鐢ㄦ埛璇环 end
+      // DB202303051651 浜у搧鎶ヤ环閲戦鑷姩璁$畻 ssm start
+      String str_rate_hospital = ControllerUtil.getValueFromJSONString(System.Label.Quote_HospitalAmount_Rate, opp.Salesdepartment_Owner__c);
+      String str_rate_agency1 = ControllerUtil.getValueFromJSONString(System.Label.Quote_Agency1Amount_Rate, opp.Salesdepartment_Owner__c);
+      rate_hospital = String.isNotBlank(str_rate_hospital) ? Decimal.valueOf(str_rate_hospital) : 1.0;
+      rate_agency1 = String.isNotBlank(str_rate_agency1) ? Decimal.valueOf(str_rate_agency1) : 1.0;
+      // DB202303051651 浜у搧鎶ヤ环閲戦鑷姩璁$畻 ssm end
     }
   }
   //TODO 1.Quote銈儢銈搞偋銈儓杩藉姞

--
Gitblit v1.9.1