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