From f3dec8f5b480474c9a3b2ea0fabb0f6b9fdc0423 Mon Sep 17 00:00:00 2001
From: renhao <renhui.hao@capgemini.com>
Date: 星期五, 13 十月 2023 17:11:34 +0800
Subject: [PATCH] Merge branch 'dev'

---
 _Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting#576.qbl |   90 ++++++++++++++++++++++++--------------------
 1 files changed, 49 insertions(+), 41 deletions(-)

diff --git "a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl" "b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl"
index 237e007..c661b69 100644
--- "a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl"
+++ "b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl"
@@ -2,9 +2,8 @@
 #parent: #root
 Method MappingOperationBOMDataRouting (
   Routing routing,
-  MappingBOMs routingRows,
-  StockingPoint_MP stockingPoint,
-  Strings keyProductIds
+  GlobalOTDTable globalOTDTable,
+  Global_MappingOperationBOMs routingRows
 )
 {
   TextBody:
@@ -17,7 +16,7 @@
         rows := selectset( routingRows, Elements, row, row.ProcessSection() = processSection );
         firstRow := rows.Element( 0 );
         // 鎵緊rgCode/productId/processSection鍖归厤涓攕equence鏈�灏忕殑涓�缁勬暟鎹�
-        minSeq := MappingOperation::FindMinSeq( this, firstRow.OrganCode(), firstRow.ProductCode(), processSection );
+        minSeq := Global_MappingOperation::FindMinSeq( globalOTDTable, firstRow.OrganCode(), firstRow.ProductCode(), processSection );
         routingStepId := processSection + "_" + [String]minSeq;
         // 鎵惧搴攔outingStep
         routingStep := RoutingStep::FindByName( routing, routingStepId );
@@ -32,6 +31,9 @@
                   if( not isnull( component ) ) {
     //                  error( "component : " + noAlterRow.ComponentCode() + " not found" );
                   // 杩炴帴浜у搧涓巓peration
+    //              inputStockingPointId := noAlterRow.OrganCode()  + "_" + noAlterRow.ComponentType() + "_Stock";
+                  inputStockingPointId := noAlterRow.OrganCode() + "_Stock";
+                  stockingPoint := StockingPoint_MP::FindStockingPointTypeIndex( inputStockingPointId);
                   pisp := ProductInStockingPoint_MP::CreateIfNotFound( component, stockingPoint );
                   trash := construct( OperationBOMs );
                   operationBOM := toLink.LinkProduct( component, true, BaseOperationLink::GetGroupID( toLink, true, false ), pisp, 
@@ -49,43 +51,49 @@
               firstAlterRow := alterRows.Element( 0 );
               // 妫�鏌ヤ富鏂�
               component := Product_MP::FindById( this, firstAlterRow.ComponentCode() );
-              if( isnull( component ) ) {
-                  error( "component : " + firstAlterRow.ComponentCode() + " not found" );
-              }
-              traverse( routingStep, Operation, toLink ) {
-                  // 杩炴帴浜у搧涓巓peration
-                  pisp := ProductInStockingPoint_MP::CreateIfNotFound( component, stockingPoint );
-                  trash := construct( OperationBOMs );
-                  mainBOM := toLink.LinkProduct( component, true, BaseOperationLink::GetGroupID( toLink, true, false ), pisp, 
-                                                      true, trash );
-                  mainBOM.Quantity( firstAlterRow.UnitUsageOfComponents() / firstAlterRow.ComponentOutputRate() );
-                  mainBOM.MaxQuantityInGroup( firstAlterRow.UnitUsageOfComponents() / firstAlterRow.ComponentOutputRate() );
-                  mainQty := mainBOM.Quantity();
-                  Transaction::Transaction().Propagate();
-                  // 娣诲姞杈呮枡
-                  traverse( alterRows, Elements, alterRow ) {
-                      alterProd := Product_MP::FindById( this, alterRow.AlternativeMaterialCode() );
-                      if( not isnull( alterProd ) ) {
-      //                    error( "alterProd : " + alterRow.AlternativeMaterialCode() + " not found" );
-                        stockingPointIdAlter := alterRow.OrganCode()  + "_" + alterRow.ProductType() + "_STOCK";
-                        stockingPointAlter := StockingPoint_MP::FindById( this, stockingPointIdAlter );
-                        if( isnull( stockingPointAlter ) ) {
-                            error( "stockingPoint : " + stockingPointIdAlter + " not found" );
-                        }
-                        pispAlter := ProductInStockingPoint_MP::CreateIfNotFound( alterProd, stockingPointAlter );
-                        mainInput := toLink.LastOperationInput();
-                        trash := construct( OperationBOMs );
-                        if( not isnull( mainInput ) ) {
-                            alterBom := mainInput.Operation().LinkPISP( pispAlter, true, mainInput.OperationLinkGroupID(), trash );
-                            alterBom.Quantity( mainBOM.MaxQuantityInGroup() * alterRow.AlternativeRate() );
-                            alterBom.MaxQuantityInGroup( mainBOM.MaxQuantityInGroup() );
-                            info( "Quantity" + [String]alterBom.Quantity() )
-                            info( "MaxQuantityInGroup" + [String]alterBom.MaxQuantityInGroup() )
-                            mainQty := mainQty - alterBom.Quantity();
-                        }
-                    }
-                    mainBOM.Quantity( mainQty );
-                 }
+              if( not isnull( component ) ) {
+    //              error( "component : " + firstAlterRow.ComponentCode() + " not found" );
+    //          }
+                traverse( routingStep, Operation, toLink ) {
+                    // 杩炴帴浜у搧涓巓peration
+    //                inputStockingPointId := firstAlterRow.OrganCode()  + "_" + firstAlterRow.ComponentType() + "_Stock";
+                    inputStockingPointId := firstAlterRow.OrganCode() + "_Stock";
+                    stockingPoint := StockingPoint_MP::FindStockingPointTypeIndex( inputStockingPointId);
+                    pisp := ProductInStockingPoint_MP::CreateIfNotFound( component, stockingPoint );
+                    trash := construct( OperationBOMs );
+                    mainBOM := toLink.LinkProduct( component, true, BaseOperationLink::GetGroupID( toLink, true, false ), pisp, 
+                                                        true, trash );
+                    mainBOM.Quantity( firstAlterRow.UnitUsageOfComponents() / firstAlterRow.ComponentOutputRate() );
+                    mainBOM.MaxQuantityInGroup( firstAlterRow.UnitUsageOfComponents() / firstAlterRow.ComponentOutputRate() );
+                    mainQty := mainBOM.Quantity();
+                    Transaction::Transaction().Propagate();
+                    // 娣诲姞杈呮枡
+                    traverse( alterRows, Elements, alterRow ) {
+                        alterProd := Product_MP::FindById( this, alterRow.AlternativeMaterialCode() );
+                        if( not isnull( alterProd ) ) {
+        //                    error( "alterProd : " + alterRow.AlternativeMaterialCode() + " not found" );
+    //                      stockingPointIdAlter := alterRow.OrganCode()  + "_" + alterRow.ComponentType() + "_Stock";
+                          stockingPointIdAlter := alterRow.OrganCode() + "_Stock";
+                          stockingPointAlter := StockingPoint_MP::FindById( this, stockingPointIdAlter );
+                          if( isnull( stockingPointAlter ) ) {
+                              error( "stockingPoint : " + stockingPointIdAlter + " not found" );
+                          }
+                          pispAlter := ProductInStockingPoint_MP::CreateIfNotFound( alterProd, stockingPointAlter );
+                          //mainInput := toLink.LastOperationInput(); 
+                          mainInput := select( toLink,OperationInput,operationInut,operationInut.ProductID()=alterRow.ComponentCode());
+                          trash := construct( OperationBOMs );
+                          if( not isnull( mainInput ) ) {
+                              alterBom := mainInput.Operation().LinkPISP( pispAlter, true, mainInput.OperationLinkGroupID(), trash );
+                              alterBom.Quantity( mainBOM.MaxQuantityInGroup() * alterRow.AlternativeRate() );
+                              alterBom.MaxQuantityInGroup( mainBOM.MaxQuantityInGroup() );
+    //                          info( "Quantity" + [String]alterBom.Quantity() )
+    //                          info( "MaxQuantityInGroup" + [String]alterBom.MaxQuantityInGroup() )
+                              mainQty := mainQty - alterBom.Quantity();
+                          }
+                      }
+                      mainBOM.Quantity( mainQty );
+                   }
+                }
               }
           }
        }

--
Gitblit v1.9.3