From 3cf4ce0c94be1a8928ffe280429d6297583b3b8d Mon Sep 17 00:00:00 2001
From: rislai <risheng.lai@capgemini.com>
Date: 星期三, 07 八月 2024 17:23:30 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev

---
 _Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl |   75 ++++++++++++++++++++++++++-----------
 1 files changed, 53 insertions(+), 22 deletions(-)

diff --git a/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl b/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
index bf09a16..5776315 100644
--- a/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
@@ -20,30 +20,61 @@
     products                  := construct( Product_MPs );
     //鍒濆鍖栧垪
     table.GenerateColumn( owner, 'All', search.StartDate(), search.EndDate() );
+    endperiod                 := maxobject( owner, Period_MP, period, not period.IsHistorical() and period.TimeUnit() = Translations::MP_GlobalParameters_Day(), period.StartDate() );
     
     //鐢熸垚瑁呴厤銆佺敓浜у拰搴撳瓨鏁版嵁
-    traverse( owner, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() ){
-      unit := pisp.StockingPoint_MP().UnitID();
-      //鍒濆鍖栬
-      row := table.GetRow( pisp.ProductID() );
-      
-      traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical()
-                and ( pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day() 
-                      or pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Week() ) ){
-        periodtime := pispip.Period_MP().StartDate();
-        periodname := periodtime.Format( "M2/D2/Y" );
-        column := selectobject( table, Column, column, column.Name() = periodname and column.Period() = periodtime and column.TimeUnit() = pispip.Period_MP().TimeUnit() );
-    
-        //瑁呴厤绾�
-        if( unit = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() or unit = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() ){
-          row.SetCellAssemblyValue( column, unit, pispip.NewSupplyProductionQuantity() );
-        }
-        //鏈哄姞绾�
-        if( unit = MachiningPipelineReport::GetDefaultCCProductionUnit() or unit = MachiningPipelineReport::GetDefaultDLProductionUnit() ){
-          row.SetCellProductionValue( column, unit, pispip.NewSupplyProductionQuantity() );
-        }
-        if( unit = ccunit or unit = dlunit ){
-          row.SetCellInventoryValue( column, unit, pispip.PlannedInventoryLevelEnd() );
+    traverse( owner, StockingPoint_MP, stockingpoint ){
+      unit                    := stockingpoint.Unit();
+      parentunits             := unit.GetAllParent();
+      //鏄惁灞炰簬闀挎槬宸ュ巶
+      iscc                    := unit.ID() = ccunit or exists( parentunits, Elements, punit, punit.ID() = ccunit );
+      //鏄惁灞炰簬澶ц繛宸ュ巶
+      isdl                    := unit.ID() = dlunit or exists( parentunits, Elements, punit, punit.ID() = dlunit );
+      //鏄惁灞炰簬闀挎槬瑁呴厤绾�
+      isccassemnly            := unit.ID() = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() );
+      //鏄惁灞炰簬澶ц繛瑁呴厤绾�
+      isdlassemnly            := unit.ID() = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() );
+      //鏄惁灞炰簬闀挎槬鏈哄姞浜х嚎
+      isccproduction          := unit.ID() = MachiningPipelineReport::GetDefaultCCProductionUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultCCProductionUnit() );
+      //鏄惁灞炰簬澶ц繛鏈哄姞浜х嚎
+      isdlproduction          := unit.ID() = MachiningPipelineReport::GetDefaultDLProductionUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultDLProductionUnit() );
+      if( iscc or isdl ){
+        traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() and not pisp.IsSystem() ){
+          row := table.GetRow( pisp.ProductID() );
+          
+          weekstart             := owner.StartOfPlanning().Date();
+          pispips               := selectsortedset( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() 
+                                                  and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day(), pispip.Start() );
+          
+          traverse( pispips, Elements, pispip ){
+            //澶�
+            daycolumn           := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), pispip.Start().Date() );
+            //鍛�
+            weekcolumn          := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), weekstart );
+            
+            supplyquantity      := [Real]ceil( pispip.NewSupplyQuantity() );//鍚戜笂鍙栨暣
+            inventoryquantity   := [Real]ceil( pispip.PlannedInventoryLevelEnd() );//鍚戜笂鍙栨暣
+            
+            //瑁呴厤绾�
+            if( isccassemnly or isdlassemnly ){
+              row.SetCellAssemblyValue( daycolumn, isccassemnly, supplyquantity );
+              row.SetCellAssemblyValue( weekcolumn, isccassemnly, supplyquantity );
+            }
+            
+            //鏈哄姞绾�
+            if( isccproduction or isdlproduction ){
+              row.SetCellProductionValue( daycolumn, isccproduction, supplyquantity );
+              row.SetCellProductionValue( weekcolumn, isccproduction, supplyquantity );
+            }
+            //搴撳瓨
+            if( iscc or isdl ){
+              row.SetCellInventoryValue( daycolumn, iscc, inventoryquantity );
+              if( pispip.Start() = weekstart + Duration::Days( 6 ) or pispip.Period_MP() = endperiod ){
+                weekstart         := ( weekstart + Duration::Days( 7 ) ).Date();
+                row.SetCellInventoryValue( weekcolumn, iscc, inventoryquantity );
+              }
+            }
+          }
         }
       }
     }

--
Gitblit v1.9.3