From 964b4387b4b3ba025c996b1f04fa75f72ae5da09 Mon Sep 17 00:00:00 2001
From: renhao <renhui.hao@capgemini.com>
Date: 星期五, 22 九月 2023 14:28:48 +0800
Subject: [PATCH] Merge remote-tracking branch 'refs/remotes/origin/dev'

---
 _Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart.qbl |  116 +++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 70 insertions(+), 46 deletions(-)

diff --git a/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart.qbl b/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart.qbl
index 43f414f..2f62201 100644
--- a/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart.qbl
+++ b/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart.qbl
@@ -13,7 +13,11 @@
   MacroPlan mappingParent
 )
 {
-  Description: '鎸夊叆鍙傚鐞嗘暟鎹紝浜х敓闇�瑕佺殑CapacityAndSaleBudgeChartElement'
+  Description:
+  [*
+    鎸夊叆鍙傚鐞嗘暟鎹紝浜х敓闇�瑕佺殑CapacityAndSaleBudgeChartElement
+    锛侊紒锛侊紒搴熷純锛侊紒锛侊紒
+  *]
   TextBody:
   [*
     // yypsybs Sep-19-2023 (created)
@@ -32,19 +36,21 @@
     this.CapacityAndSaleBudgeChartElement( relflush );
     
     // ====鎸夐潰鏉垮熀鍦板拰浜嬩笟閮ㄥ浜у搧杩涜绛涢�夊垎缁�====
-    historyData := selectset( otdTable, CapacityAndSaleBudge, item, true );
+    historyData := selectset( mpSync, MappingCapacityAndSaleBudge, item, true );
     if( placeOfProductionOfArrayChosen <> "" ) {
       historyData := selectset( historyData, Elements, item, item.PlaceOfProductionOfArray() = placeOfProductionOfArrayChosen );
     }
     if( businessTypeChosen <> "" ) {
       historyData := selectset( historyData, Elements, item, item.BusinessType() = businessTypeChosen );
     }
+    //info( "historyData : " + [String]historyData.Size() );
     traverse( historyData, Elements, item ) {
       row := CapacityAndSaleBudgeChartRow::CreateIfNotExist( this, item.BusinessType(), item.PlaceOfProductionOfArray() );
       // 璁板綍姣忚鍖呭惈鍝簺product
       CapacityAndSaleBudgeChartRowProduct::CreateIfNotExist( row, item.ProductCode() );
     }
     rows := selectset( this, CapacityAndSaleBudgeChartRow, item, true );
+    //info( "rows : " + [String]rows.Size() );
     placeOfProductionOfArrayList := selectuniquevalues( historyData, Elements, item, item.PlaceOfProductionOfArray() );
     businessTypeList := selectuniquevalues( historyData, Elements, item, item.BusinessType() );
     // 鐢熸垚鍥捐〃鍏冪礌
@@ -54,18 +60,20 @@
         productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray );
         this.CapacityAndSaleBudgeChartElement( relnew, 
                                                TimeStringAndScenarioName := [String]year + "骞�-鐩爣",
-                                               BusinessTypeOrOrgCode := placeOfProductionOfArray, 
+                                               BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray, 
                                                Quantity := ifexpr( isCapacity,
-                                                                   CapacityAndSaleBudge::GetSheetByYear( productCodeList, otdTable, [Number]year ),
-                                                                   MappingForecast::GetQuantityByYear( productCodeList, mappingParent, [Number]year ) )
+                                                                   MappingCapacityAndSaleBudge::GetSheetByYear( productCodeList, mpSync, [Number]year ),
+                                                                   // todo QID 23
+                                                                   MappingAnnualBudget::GetSheetByYear( productCodeList, mpSync, [Number]year ) )
                                                );  
-          // S&OP
+        // S&OP
         traverse( macroPlans, Elements, macroPlan ) {
           this.CapacityAndSaleBudgeChartElement( relnew, 
                                                  TimeStringAndScenarioName := [String]year + "骞�-" + macroPlan.ScenarioName(),
-                                                 BusinessTypeOrOrgCode := placeOfProductionOfArray, 
+                                                 BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray, 
                                                  Quantity := ifexpr( isCapacity,
                                                                      Product_MP::GetNewSupplyByYear( productCodeList, macroPlan, [Number]year ),
+                                                                     // todo
                                                                      0.0 )
                                                  ); 
         }                    
@@ -77,16 +85,16 @@
           productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray );
           this.CapacityAndSaleBudgeChartElement( relnew, 
                                                  TimeStringAndScenarioName := [String]year + "骞�-" + ifexpr( halfNo = 1, "涓�", "涓�" ) + "鍗婂勾-鐩爣",
-                                                 BusinessTypeOrOrgCode := placeOfProductionOfArray, 
+                                                 BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray, 
                                                  Quantity := ifexpr( isCapacity,
-                                                                     CapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, otdTable, [Number]year, halfNo ),
-                                                                     MappingForecast::GetQuantityByHalfYear( productCodeList, mappingParent, [Number]year, halfNo ) )
+                                                                     MappingCapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ),
+                                                                     MappingAnnualBudget::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ) )
                                                  );  
-            // S&OP
+          // S&OP
           traverse( macroPlans, Elements, macroPlan ) {
             this.CapacityAndSaleBudgeChartElement( relnew, 
                                                    TimeStringAndScenarioName := [String]year + "骞�-" + ifexpr( halfNo = 1, "涓�", "涓�" ) + "鍗婂勾-" + macroPlan.ScenarioName(),
-                                                   BusinessTypeOrOrgCode := placeOfProductionOfArray, 
+                                                   BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray, 
                                                    Quantity := ifexpr( isCapacity,
                                                                        Product_MP::GetNewSupplyByHalfYear( productCodeList, macroPlan, [Number]year, halfNo ),
                                                                        0.0 )
@@ -99,18 +107,22 @@
       for( seasonNo := 1; seasonNo <= 4; seasonNo := seasonNo + 1 ) {
         traverse( placeOfProductionOfArrayList, Elements, placeOfProductionOfArray ) {
           productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray );
+    //      info( "productCodeList : " + [String]productCodeList.Size() );
+    //      info( "MappingCapacityAndSaleBudge::GetSheetBySeason : " + [String]MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ) );
+    //      info( "seasonNo : " + [String]seasonNo );
           this.CapacityAndSaleBudgeChartElement( relnew, 
                                                  TimeStringAndScenarioName := [String]year + "骞�-绗�" + [String]seasonNo + "瀛e害-鐩爣",
-                                                 BusinessTypeOrOrgCode := placeOfProductionOfArray, 
+                                                 BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray, 
                                                  Quantity := ifexpr( isCapacity,
-                                                                     CapacityAndSaleBudge::GetSheetBySeason( productCodeList, otdTable, [Number]year, seasonNo ),
-                                                                     MappingForecast::GetQuantityBySeason( productCodeList, mappingParent, [Number]year, seasonNo ) )
+                                                                     MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ),
+                                                                     MappingAnnualBudget::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ) )
                                                  );  
-            // S&OP
+    //      info( "productCodeList : " + [String]productCodeList.Size() );
+          // S&OP
           traverse( macroPlans, Elements, macroPlan ) {
             this.CapacityAndSaleBudgeChartElement( relnew, 
                                                    TimeStringAndScenarioName := [String]year + "骞�-绗�" + [String]seasonNo + "瀛e害-" + macroPlan.ScenarioName(),
-                                                   BusinessTypeOrOrgCode := placeOfProductionOfArray, 
+                                                   BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray, 
                                                    Quantity := ifexpr( isCapacity,
                                                                        Product_MP::GetNewSupplyBySeason( productCodeList, macroPlan, [Number]year, seasonNo ),
                                                                        0.0 )
@@ -121,20 +133,21 @@
     }
     if ( byBusinessTypeOrByOrgCode = "闈㈡澘鍩哄湴" and groupBy = "鏈�" ) {
       for( monthNo := 1; monthNo <= 12; monthNo := monthNo + 1 ) {
+        monthNoString := ifexpr( monthNo <= 9, "0" + [String]monthNo, [String]monthNo );
         traverse( placeOfProductionOfArrayList, Elements, placeOfProductionOfArray ) {
           productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray );
           this.CapacityAndSaleBudgeChartElement( relnew, 
-                                                 TimeStringAndScenarioName := [String]year + "骞�-绗�" + [String]monthNo + "鏈�-鐩爣",
-                                                 BusinessTypeOrOrgCode := placeOfProductionOfArray, 
+                                                 TimeStringAndScenarioName := [String]year + "骞�-绗�" + monthNoString + "鏈�-鐩爣",
+                                                 BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray, 
                                                  Quantity := ifexpr( isCapacity,
-                                                                     CapacityAndSaleBudge::GetSheetByMonth( productCodeList, otdTable, [Number]year, monthNo ),
-                                                                     MappingForecast::GetQuantityByMonth( productCodeList, mappingParent, [Number]year, monthNo ) )
+                                                                     MappingCapacityAndSaleBudge::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ),
+                                                                     MappingAnnualBudget::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ) )
                                                  );  
-            // S&OP
+          // S&OP
           traverse( macroPlans, Elements, macroPlan ) {
             this.CapacityAndSaleBudgeChartElement( relnew, 
-                                                   TimeStringAndScenarioName := [String]year + "骞�-绗�" + [String]monthNo + "鏈�-" + macroPlan.ScenarioName(),
-                                                   BusinessTypeOrOrgCode := placeOfProductionOfArray, 
+                                                   TimeStringAndScenarioName := [String]year + "骞�-绗�" + monthNoString + "鏈�-" + macroPlan.ScenarioName(),
+                                                   BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray, 
                                                    Quantity := ifexpr( isCapacity,
                                                                        Product_MP::GetNewSupplyByMonth( productCodeList, macroPlan, [Number]year, monthNo ),
                                                                        0.0 )
@@ -149,16 +162,16 @@
         productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType );
         this.CapacityAndSaleBudgeChartElement( relnew, 
                                                TimeStringAndScenarioName := [String]year + "骞�-鐩爣",
-                                               BusinessTypeOrOrgCode := businessType, 
+                                               BusinessTypeOrPlaceOfProductionOfArray := businessType, 
                                                Quantity := ifexpr( isCapacity,
-                                                                   CapacityAndSaleBudge::GetSheetByYear( productCodeList, otdTable, [Number]year ),
-                                                                   MappingForecast::GetQuantityByYear( productCodeList, mappingParent, [Number]year ) )
+                                                                   MappingCapacityAndSaleBudge::GetSheetByYear( productCodeList, mpSync, [Number]year ),
+                                                                   MappingAnnualBudget::GetSheetByYear( productCodeList, mpSync, [Number]year ) )
                                                );  
-          // S&OP
+        // S&OP
         traverse( macroPlans, Elements, macroPlan ) {
           this.CapacityAndSaleBudgeChartElement( relnew, 
                                                  TimeStringAndScenarioName := [String]year + "骞�-" + macroPlan.ScenarioName(),
-                                                 BusinessTypeOrOrgCode := businessType, 
+                                                 BusinessTypeOrPlaceOfProductionOfArray := businessType, 
                                                  Quantity := ifexpr( isCapacity,
                                                                      Product_MP::GetNewSupplyByYear( productCodeList, macroPlan, [Number]year ),
                                                                      0.0 )
@@ -172,16 +185,16 @@
           productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType );
           this.CapacityAndSaleBudgeChartElement( relnew, 
                                                  TimeStringAndScenarioName := [String]year + "骞�-" + ifexpr( halfNo = 1, "涓�", "涓�" ) + "鍗婂勾-鐩爣",
-                                                 BusinessTypeOrOrgCode := businessType, 
+                                                 BusinessTypeOrPlaceOfProductionOfArray := businessType, 
                                                  Quantity := ifexpr( isCapacity,
-                                                                     CapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, otdTable, [Number]year, halfNo ),
-                                                                     MappingForecast::GetQuantityByHalfYear( productCodeList, mappingParent, [Number]year, halfNo ) )
+                                                                     MappingCapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ),
+                                                                     MappingAnnualBudget::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ) )
                                                  );  
-            // S&OP
+          // S&OP
           traverse( macroPlans, Elements, macroPlan ) {
             this.CapacityAndSaleBudgeChartElement( relnew, 
                                                    TimeStringAndScenarioName := [String]year + "骞�-" + ifexpr( halfNo = 1, "涓�", "涓�" ) + "鍗婂勾-" + macroPlan.ScenarioName(),
-                                                   BusinessTypeOrOrgCode := businessType, 
+                                                   BusinessTypeOrPlaceOfProductionOfArray := businessType, 
                                                    Quantity := ifexpr( isCapacity,
                                                                        Product_MP::GetNewSupplyByHalfYear( productCodeList, macroPlan, [Number]year, halfNo ),
                                                                        0.0 )
@@ -196,16 +209,16 @@
           productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType );
           this.CapacityAndSaleBudgeChartElement( relnew, 
                                                  TimeStringAndScenarioName := [String]year + "骞�-绗�" + [String]seasonNo + "瀛e害-鐩爣",
-                                                 BusinessTypeOrOrgCode := businessType, 
+                                                 BusinessTypeOrPlaceOfProductionOfArray := businessType, 
                                                  Quantity := ifexpr( isCapacity,
-                                                                     CapacityAndSaleBudge::GetSheetBySeason( productCodeList, otdTable, [Number]year, seasonNo ),
-                                                                     MappingForecast::GetQuantityBySeason( productCodeList, mappingParent, [Number]year, seasonNo ) )
+                                                                     MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ),
+                                                                     MappingAnnualBudget::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ) )
                                                  );  
-            // S&OP
+          // S&OP
           traverse( macroPlans, Elements, macroPlan ) {
             this.CapacityAndSaleBudgeChartElement( relnew, 
                                                    TimeStringAndScenarioName := [String]year + "骞�-绗�" + [String]seasonNo + "瀛e害-" + macroPlan.ScenarioName(),
-                                                   BusinessTypeOrOrgCode := businessType, 
+                                                   BusinessTypeOrPlaceOfProductionOfArray := businessType, 
                                                    Quantity := ifexpr( isCapacity,
                                                                        Product_MP::GetNewSupplyBySeason( productCodeList, macroPlan, [Number]year, seasonNo ),
                                                                        0.0 )
@@ -216,20 +229,21 @@
     }
     if ( byBusinessTypeOrByOrgCode = "浜嬩笟閮�" and groupBy = "鏈�" ) {
       for( monthNo := 1; monthNo <= 12; monthNo := monthNo + 1 ) {
+        monthNoString := ifexpr( monthNo <= 9, "0" + [String]monthNo, [String]monthNo );
         traverse( businessTypeList, Elements, businessType ) {
           productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType );
           this.CapacityAndSaleBudgeChartElement( relnew, 
-                                                 TimeStringAndScenarioName := [String]year + "骞�-绗�" + [String]monthNo + "鏈�-鐩爣",
-                                                 BusinessTypeOrOrgCode := businessType, 
+                                                 TimeStringAndScenarioName := [String]year + "骞�-绗�" + monthNoString + "鏈�-鐩爣",
+                                                 BusinessTypeOrPlaceOfProductionOfArray := businessType, 
                                                  Quantity := ifexpr( isCapacity,
-                                                                     CapacityAndSaleBudge::GetSheetByMonth( productCodeList, otdTable, [Number]year, monthNo ),
-                                                                     MappingForecast::GetQuantityByMonth( productCodeList, mappingParent, [Number]year, monthNo ) )
+                                                                     MappingCapacityAndSaleBudge::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ),
+                                                                     MappingAnnualBudget::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ) )
                                                  );  
-            // S&OP
+          // S&OP
           traverse( macroPlans, Elements, macroPlan ) {
             this.CapacityAndSaleBudgeChartElement( relnew, 
-                                                   TimeStringAndScenarioName := [String]year + "骞�-绗�" + [String]monthNo + "鏈�-" + macroPlan.ScenarioName(),
-                                                   BusinessTypeOrOrgCode := businessType, 
+                                                   TimeStringAndScenarioName := [String]year + "骞�-绗�" + monthNoString + "鏈�-" + macroPlan.ScenarioName(),
+                                                   BusinessTypeOrPlaceOfProductionOfArray := businessType, 
                                                    Quantity := ifexpr( isCapacity,
                                                                        Product_MP::GetNewSupplyByMonth( productCodeList, macroPlan, [Number]year, monthNo ),
                                                                        0.0 )
@@ -238,5 +252,15 @@
         }
       }
     }
+    //info( "CapacityAndSaleBudgeChartElement : " + [String]selectset( this, CapacityAndSaleBudgeChartElement, item, true ).Size() );
+    //traverse( this, CapacityAndSaleBudgeChartRow, row ) {
+    //  info( "==鈫�==" );
+    //  info( row.BusinessType() );
+    //  info( row.PlaceOfProductionOfArray() );
+    //  elements := selectset( row, CapacityAndSaleBudgeChartRowProduct, cell, true );
+    //  info( elements.Size() );
+    //  info( row.GetProductCodes().Concatenate( " | " ) );
+    //  info( "==鈫�==" );
+    //}
   *]
 }

--
Gitblit v1.9.3