From ea1c035b2abbbf99b05eb95ccc5293b8490412cf Mon Sep 17 00:00:00 2001
From: lazhen <17772815105@139.com>
Date: 星期四, 15 八月 2024 16:44:52 +0800
Subject: [PATCH] 涉及到调拨计划的报表调整

---
 _Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl |   48 +++++++++++++++++++++++++++---------------------
 1 files changed, 27 insertions(+), 21 deletions(-)

diff --git a/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl b/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
index c6a9c85..70676a9 100644
--- a/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
@@ -76,8 +76,6 @@
               if( iscc or isdl ){
                 row.SetCellInventoryValue( daycolumn, iscc, [Real]inventoryquantity );
                 if( weekcolumn.EndDate() = pispip.Start().Date() or pispip.Period_MP() = endperiod ){
-    //            if( pispip.Start() = weekstart + Duration::Days( 6 ) or pispip.Period_MP() = endperiod ){
-    //              weekstart      := ( weekstart + Duration::Days( 7 ) ).Date();
                   row.SetCellInventoryValue( weekcolumn, iscc, [Real]inventoryquantity );
                 }
               }
@@ -88,25 +86,33 @@
     }
     
     //鐢熸垚璋冩嫧鏁版嵁
-    traverse( owner, TransferPlanRow, tprow, ( tprow.SourceStockpoingPointID() = 'CC' and tprow.TargetStockpoingPointID() = 'DL' ) or ( tprow.SourceStockpoingPointID() = 'DL' and tprow.TargetStockpoingPointID() = 'CC' ) ){
-      row := selectobject( table, Row, row, row.Name() = tprow.Name() );
-      traverse( table, Column, column ){
-        cell := selectobject( row, Cell, cell, cell.Column() = column );
-        if( column.TimeUnit() = Translations::MP_GlobalParameters_Day() ){
-          tpcell := selectobject( tprow, TransferPlanCell, tpcell, tpcell.TransferPlanColumn().ColumnDate() = column.StartDate() );
-          if( tprow.SourceStockpoingPointID() = 'CC' and tprow.TargetStockpoingPointID() = 'DL' ){
-            cell.CCTransferQty( [Real]tpcell.Value() );
-          }else if( tprow.SourceStockpoingPointID() = 'DL' and tprow.TargetStockpoingPointID() = 'CC' ){
-            cell.DLTransferQty( [Real]tpcell.Value() );
-          }
-        }else if( column.TimeUnit() = Translations::MP_GlobalParameters_Week() ){
-          period := column.StartDate() + Duration::Days( 6 );
-          tpcell := selectobject( tprow, TransferPlanCell, tpcell, tpcell.TransferPlanColumn().ColumnDate() = period.Date() );
-          
-          if( tprow.SourceStockpoingPointID() = 'CC' and tprow.TargetStockpoingPointID() = 'DL' ){
-            cell.CCTransferQty( [Real]tpcell.Value() );
-          }else if( tprow.SourceStockpoingPointID() = 'DL' and tprow.TargetStockpoingPointID() = 'CC' ){
-            cell.DLTransferQty( [Real]tpcell.Value() );
+    traverse( owner, TransferPlanRow, tprow ){
+      product               := selectobject( owner, Product_MP, product, product.ID() = tprow.ProductID() );
+      productparents        := product.GetAllParent();
+      if( exists( productparents, Elements, e, e.ID() = productparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+        //璧峰搴撳瓨鐐规槸鍚︽槸澶ц繛or闀挎槬
+        originsp              := selectobject( owner, StockingPoint_MP, sp, sp.ID() = tprow.SourceStockpoingPointID() );
+        originunit            := originsp.Unit();
+        originparentunits     := originunit.GetAllParent();
+        originiscc            := originsp.ID() = ccunit or originunit.ID() = ccunit or exists( originparentunits, Elements, punit, punit.ID() = ccunit );
+        originisdl            := originsp.ID() = dlunit or originunit.ID() = dlunit or exists( originparentunits, Elements, punit, punit.ID() = dlunit );
+        //鐩殑鍦版槸鍚︽槸闀挎槬澶栫搴�
+        destisp               := selectobject( owner, StockingPoint_MP, sp, sp.ID() = tprow.TargetStockpoingPointID() );
+        destiunit             := originsp.Unit();
+        destiparentunits      := destiunit.GetAllParent();
+        destiiscc             := destisp.ID() = ccunit or destiunit.ID() = ccunit or exists( destiparentunits, Elements, punit, punit.ID() = ccunit );
+        destiisdl             := destisp.ID() = dlunit or destiunit.ID() = dlunit or exists( destiparentunits, Elements, punit, punit.ID() = dlunit );
+        if( ( originiscc and destiisdl ) or ( originisdl and destiiscc ) ){
+          row := selectobject( table, Row, row, row.Name() = tprow.Name() );
+          traverse( tprow, TransferPlanCell, tpcell ){
+            //澶�
+            daycolumn        := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), tpcell.TransferPlanColumn().ColumnDate() );
+            //鍛�
+            weekcolumn       := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), tpcell.TransferPlanColumn().ColumnDate() );
+            quantity         := [Real]tpcell.Value();//鍥涜垗浜斿叆
+            
+            row.SetCellTransferValue( daycolumn, ( originiscc and destiisdl ), quantity );
+            row.SetCellTransferValue( weekcolumn, ( originiscc and destiisdl ), quantity );
           }
         }
       }

--
Gitblit v1.9.3