From c75cd6f6eb1e06a27e28c26ca9df0324b7ed675f Mon Sep 17 00:00:00 2001
From: lazhen <17772815105@139.com>
Date: 星期二, 08 十月 2024 16:59:51 +0800
Subject: [PATCH] 库存汇总报表数据问题bug

---
 _Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl   |    2 +-
 _Main/BL/Type_InventorySummaryReport/Method_Generate.qbl         |    2 +-
 _Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl |   45 ++++++++++++++++++++++-----------------------
 3 files changed, 24 insertions(+), 25 deletions(-)

diff --git a/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl b/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl
index a7c66eb..56611da 100644
--- a/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl
+++ b/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl
@@ -9,7 +9,7 @@
   [*
     // 鐢勫叞楦� Jun-25-2024 (created)
     startofplanning           := search.MacroPlan().StartOfPlanning();
-    startofyear               := startofplanning.StartOfYear();
+    startofyear               := startofplanning.StartOfYear() - Duration::Days( 1 );
     startofendyear            := startofplanning.StartOfNextYear() - Duration::Days( 1 );
     //鏌ヨ鏃ユ湡杩斿洖闇�瑕佸湪璁″垝鏃ユ湡涔嬪唴
     if( search.StartDate().DateTime() < startofendyear and search.EndDate().DateTime() > startofyear ){
diff --git a/_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl b/_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl
index 8bdba43..4484691 100644
--- a/_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl
+++ b/_Main/BL/Type_InventorySummaryReport/Method_GenerateColumn.qbl
@@ -11,7 +11,7 @@
   [*
     // 鐢勫叞楦� Jun-25-2024 (created)
     startofplanning           := owner.StartOfPlanning();
-    startofyear               := startofplanning.StartOfYear();
+    startofyear               := startofplanning.StartOfYear() - Duration::Days( 1 );
     startofendyear            := startofplanning.StartOfNextYear() - Duration::Days( 1 );
     //鏌ヨ鏃ユ湡杩斿洖闇�瑕佸湪璁″垝鏃ユ湡涔嬪唴
     if( starttime < startofendyear and endtime > startofyear ){
diff --git a/_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl b/_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl
index ec32de3..cc7d847 100644
--- a/_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl
@@ -23,8 +23,8 @@
     table                     := source.InventorySummaryReport( relnew, ID := source.Name(), Name := source.Name() );
     showtable                 := source.InventorySummaryReport( relnew, ID := source.Name() + 'Show', Name := source.Name(), IsShow := true );
     startofplanning           := owner.StartOfPlanning();
-    startofyear               := startofplanning.StartOfYear();
-    startofnextyear           := startofplanning.StartOfNextYear();
+    startofyear               := startofplanning.StartOfYear() - Duration::Days( 1 );
+    startofnextyear           := startofplanning.StartOfNextYear() - Duration::Days( 1 );
     
     search                    := owner.InventorySummarySearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit, Category := Translations::MP_GlobalParameters_Day(), StartDate := Date::MinDate(), EndDate := Date::MaxDate() );
     
@@ -33,14 +33,14 @@
     //搴撳瓨鏁伴噺涓篈ctual inventories閲岄潰鐨勭偣Planned inventories瀛楁搴撳瓨閲忓姞鎬�
     traverse( owner, StockingPoint_MP, stockingpoint ){
     //traverse( owner, StockingPoint_MP, stockingpoint, stockingpoint.ID().EndsWith( '鍘傚唴搴�' ) ){
-    //  unit                    := stockingpoint.Unit();
-    //  parentunits             := unit.GetAllParent();
+      unit                    := stockingpoint.Unit();
+      parentunits             := unit.GetAllParent();
       //鏄惁灞炰簬闀挎槬宸ュ巶
-      iscc                    := stockingpoint.ID().StartsWith( 'CC' ) or stockingpoint.ID() = '闀挎槬' ;//unit.ID() = ccalineunit or unit.ID() = ccmplineunit or exists( parentunits, Elements, punit, punit.ID() = ccalineunit or punit.ID() = ccmplineunit );
-    //  iscc                    := stockingpoint.ID().StartsWith( 'CC' ) or unit.ID().StartsWith( 'CC' ) or exists( parentunits, Elements, punit, punit.ID().StartsWith( 'CC' ) );
+    //  iscc                    := stockingpoint.ID().StartsWith( 'CC' ) or stockingpoint.ID() = '闀挎槬' ;//unit.ID() = ccalineunit or unit.ID() = ccmplineunit or exists( parentunits, Elements, punit, punit.ID() = ccalineunit or punit.ID() = ccmplineunit );
+      iscc                    := exists( parentunits, Elements, punit, punit.ID().StartsWith( 'VWED CC' ) );
       //鏄惁灞炰簬澶ц繛宸ュ巶
-      isdl                    := stockingpoint.ID().StartsWith( '澶ц繛' );//unit.ID() = dlalienunit or unit.ID() = dlmplineunit  or exists( parentunits, Elements, punit, punit.ID() = dlalienunit or punit.ID() = dlmplineunit );
-    //  isdl                    := stockingpoint.ID().StartsWith( 'DL' ) or unit.ID().StartsWith( 'DL' ) or exists( parentunits, Elements, punit, punit.ID().StartsWith( 'DL' ) );
+    //  isdl                    := stockingpoint.ID().StartsWith( '澶ц繛' );//unit.ID() = dlalienunit or unit.ID() = dlmplineunit  or exists( parentunits, Elements, punit, punit.ID() = dlalienunit or punit.ID() = dlmplineunit );
+      isdl                    := exists( parentunits, Elements, punit, punit.ID().StartsWith( 'VWED DL' ) );
       if( iscc or isdl ){
         traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() ){
           //鑾峰彇宸ュ巶琛�
@@ -54,8 +54,7 @@
           nextweek            := startofplanning.StartOfNextWeek();
           nextmonth           := startofplanning.StartOfNextMonth();
           
-          pispips             := selectsortedset( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() 
-                                                  and pispip.Start() < startofnextyear 
+          pispips             := selectsortedset( pisp, ProductInStockingPointInPeriod, pispip, pispip.Start() < startofnextyear 
                                                   and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day(), pispip.Start() );
     
           traverse( pispips, Elements, pispip ){
@@ -66,9 +65,9 @@
             
             //澶╋紝閫夋嫨鏃ラ绮掑害鏃讹紝鏈熸湯搴撳瓨锛屾渶灏忓簱瀛橈紝鏈�澶у簱瀛樺拰骞冲潎搴撳瓨鐨勬暟鍊间繚鎸佷竴鑷�
             daycolumn         := selectobject( table, InventorySummaryColumn, column, column.Name() = periodname, column.Period() = periodtime, column.TimeUnit() = Translations::MP_GlobalParameters_Day() );
-            info( daycolumn.Name(), daycolumn.Period(), daycolumn.TimeUnit() );
-            factoryrow.SetCellValue( daycolumn, [Number]pispip.PlannedInventoryLevelEnd() );
-            allrow.SetCellValue( daycolumn, [Number]pispip.PlannedInventoryLevelEnd() );
+            quantity          := ifexpr( pispip.Period_MP().IsHistorical(), [Number]pispip.ActualInventoryLevelEnd(), [Number]pispip.PlannedInventoryLevelEnd() );
+            factoryrow.SetCellValue( daycolumn, quantity );
+            allrow.SetCellValue( daycolumn, quantity );
             
             //鍛紝閫夋嫨鍛ㄦ椂锛屾湡鏈簱瀛樹负姣忎竴鍛ㄦ渶鍚庝竴澶╃殑姹囨�诲簱瀛樹俊鎭紝鏈�灏忓簱瀛樹负杩欎竴鍛ㄥ簱瀛橀噺鏈�灏忕殑涓�澶╃殑鏁板�硷紝鏈�澶у簱瀛樹负杩欎竴鍛ㄥ簱瀛橀噺鏈�澶х殑涓�澶╃殑鏁板�硷紝骞冲潎搴撳瓨涓鸿鍛ㄧ殑骞冲潎鍊�
             if( period.Start() < nextweek ){
@@ -78,11 +77,11 @@
               if( period.Start() = weekend ){
                 weekcolumn    := selectobject( table, InventorySummaryColumn, column, column.Name() = periodname, column.Period() = periodtime, column.TimeUnit() = Translations::MP_GlobalParameters_Week() );
                 
-                maxinventory  := max( weekpispips, Elements, e, [Number]e.PlannedInventoryLevelEnd() );
-                mininventory  := min( weekpispips, Elements, e, [Number]e.PlannedInventoryLevelEnd() );
-                aveinventory  := average( weekpispips, Elements, e, [Number]e.PlannedInventoryLevelEnd() );
-                factoryrow.SetCellValue( weekcolumn, [Number]pispip.PlannedInventoryLevelEnd(), mininventory, maxinventory, [Number]aveinventory );
-                allrow.SetCellValue( weekcolumn, [Number]pispip.PlannedInventoryLevelEnd(), mininventory, maxinventory, [Number]aveinventory );
+                maxinventory  := max( weekpispips, Elements, e, ifexpr( pispip.Period_MP().IsHistorical(), [Number]e.ActualInventoryLevelEnd(), [Number]e.PlannedInventoryLevelEnd() ) );
+                mininventory  := min( weekpispips, Elements, e, ifexpr( pispip.Period_MP().IsHistorical(), [Number]e.ActualInventoryLevelEnd(), [Number]e.PlannedInventoryLevelEnd() ) );
+                aveinventory  := average( weekpispips, Elements, e, ifexpr( pispip.Period_MP().IsHistorical(), [Number]e.ActualInventoryLevelEnd(), [Number]e.PlannedInventoryLevelEnd() ) );
+                factoryrow.SetCellValue( weekcolumn, quantity, mininventory, maxinventory, [Number]aveinventory );
+                allrow.SetCellValue( weekcolumn, quantity, mininventory, maxinventory, [Number]aveinventory );
               }
             }else{
               weekpispips.Flush();
@@ -98,11 +97,11 @@
               if( period.Start() = monthend ){
                 monthcolumn  := selectobject( table, InventorySummaryColumn, column, column.Name() = periodname, column.Period() = periodtime, column.TimeUnit() = Translations::MP_GlobalParameters_Month() );
                 
-                maxinventory := max( monthpispips, Elements, e, [Number]e.PlannedInventoryLevelEnd() );
-                mininventory := min( monthpispips, Elements, e, [Number]e.PlannedInventoryLevelEnd() );
-                aveinventory := average( monthpispips, Elements, e, [Number]e.PlannedInventoryLevelEnd() );
-                factoryrow.SetCellValue( monthcolumn, [Number]pispip.PlannedInventoryLevelEnd(), mininventory, maxinventory, [Number]aveinventory );
-                allrow.SetCellValue( monthcolumn, [Number]pispip.PlannedInventoryLevelEnd(), mininventory, maxinventory, [Number]aveinventory );
+                maxinventory := max( monthpispips, Elements, e, ifexpr( pispip.Period_MP().IsHistorical(), [Number]e.ActualInventoryLevelEnd(), [Number]e.PlannedInventoryLevelEnd() ) );
+                mininventory := min( monthpispips, Elements, e, ifexpr( pispip.Period_MP().IsHistorical(), [Number]e.ActualInventoryLevelEnd(), [Number]e.PlannedInventoryLevelEnd() ) );
+                aveinventory := average( monthpispips, Elements, e, ifexpr( pispip.Period_MP().IsHistorical(), [Number]e.ActualInventoryLevelEnd(), [Number]e.PlannedInventoryLevelEnd() ) );
+                factoryrow.SetCellValue( monthcolumn, quantity, mininventory, maxinventory, [Number]aveinventory );
+                allrow.SetCellValue( monthcolumn, quantity, mininventory, maxinventory, [Number]aveinventory );
               }
             }else{
               monthpispips.Flush();

--
Gitblit v1.9.3