From d060843d402641d8cdeadad086ed5c867de7f2ea Mon Sep 17 00:00:00 2001
From: admin <admin@admin.com>
Date: 星期四, 17 十月 2024 09:20:07 +0800
Subject: [PATCH] 包装计划最小最大容量优化
---
_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl | 175 +++++++++++++++++++++++++++++-----------------------------
1 files changed, 88 insertions(+), 87 deletions(-)
diff --git a/_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl b/_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl
index 8a41f88..0629582 100644
--- a/_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl
+++ b/_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl
@@ -6,95 +6,96 @@
{
TextBody:
[*
- macroPlan.PackagingPlanRow( relflush );
- macroPlan.PackagingPlanColumn( relflush );
-
- // 鍒涘缓璁″垝鍓嶄竴澶╁垪
- planPre := macroPlan.PackagingPlanColumn( relnew, StartDate := macroPlan.StartOfPlanning().Date() - 1 );
-
- // 鐢熸垚鎶ヨ〃
- traverse ( macroPlan, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() and
- ( pisp.StockingPointID().Regex( "CC" ) or pisp.StockingPointID().Regex( "DL" ) or pisp.StockingPointID().Regex( "澶ц繛" ) or pisp.StockingPointID().Regex( "闀挎槬" ) ) ) {
- // 褰撳墠pisp鎵�澶勫湴鐐�
- factory := ifexpr( pisp.StockingPointID().Regex( "CC" ) or pisp.StockingPointID().Regex( "闀挎槬" ), "闀挎槬宸ュ巶", "澶ц繛宸ュ巶" );
- factoryAbbreviation := ifexpr( pisp.StockingPointID().Regex( "CC" ) or pisp.StockingPointID().Regex( "闀挎槬" ), "CC", "DL" );
-
- // 鍒涘缓琛�
- ppr := select( macroPlan, PackagingPlanRow, tempPPR, tempPPR.ProductID() = pisp.ProductID() and tempPPR.Factory() = factory );
- if ( isnull( ppr ) ) {
- ppr := macroPlan.PackagingPlanRow( relnew, ProductID := pisp.ProductID(), Factory := factory, Category := guard( pisp.Product_MP().ParentID(), "" ) );
- }
-
- // 寰幆pispippl
- traverse ( pisp, ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ), pispipl, not pispipl.IsPeriodFrozen() ) {
- // 鍒涘缓鍒�
- ppc := select( macroPlan, PackagingPlanColumn, tempPPC, tempPPC.StartDate() = pispipl.Start().Date() );
- if ( isnull( ppc ) ) {
- ppc := macroPlan.PackagingPlanColumn( relnew, StartDate := pispipl.Start().Date() );
- }
-
- // 鍒涘缓鍗曞厓鏍�
- cell := select( ppr, PackagingPlanCell, tempPPCell, tempPPCell.PackagingPlanColumn() = ppc );
- if ( isnull( cell ) ) {
- cell := ppr.PackagingPlanCell( relnew );
- cell.NetDemand( pispipl.InventoryLevelEnd() + pispipl.NewSupplyQuantity() - pispipl.DependentDemandAndSalesDemandQuantity() );
- cell.EndingInventory( pispipl.InventoryLevelEnd() );
- cell.PackagingPlanColumn( relset, ppc );
- } else {
- cell.NetDemand( cell.NetDemand() + ( pispipl.InventoryLevelEnd() + pispipl.NewSupplyQuantity() - pispipl.DependentDemandAndSalesDemandQuantity() ) );
- cell.EndingInventory( cell.EndingInventory() + pispipl.InventoryLevelEnd() );
- }
-
- // 璁剧疆璋冨嚭
- traverse ( pispipl, AsDeparturePISPIP, pit,
- pit.Quantity() > 0 and
- pit.Trip().LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP().ID().Regex( factoryAbbreviation ) and
- TransferPlanRow::IdentifyTheFactory( pit.Trip().LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP() ) <> TransferPlanRow::IdentifyTheFactory( pit.Trip().LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP() )
- )
- {
- cell.Out( cell.Out() + pit.Quantity() );
- }
-
- // 璁剧疆璋冭繘
- traverse ( pispipl, AsArrivalPISPIP, pit,
- pit.Quantity() > 0 and
- pit.Trip().LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP().ID().Regex( factoryAbbreviation ) and
- TransferPlanRow::IdentifyTheFactory( pit.Trip().LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP() ) <> TransferPlanRow::IdentifyTheFactory( pit.Trip().LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP() )
- )
- {
- cell.TransferIn( cell.TransferIn() + pit.Quantity() );
- }
-
- // 闀挎槬宸ュ巶鐗规畩鎯呭喌璁剧疆鍖呰搴撳瓨鍜岄潪鍖呰搴撳瓨
- if ( factory = "闀挎槬宸ュ巶" ) {
- if ( pisp.StockingPointID().Regex( "澶栫搴�" ) ) {
- cell.CC_PackagingInventory( pispipl.InventoryLevelEnd() );
- } else if ( pisp.StockingPointID().Regex( "绾胯竟搴�" ) ) {
- cell.CC_UnpackagedInventory( pispipl.InventoryLevelEnd() );
- }
- }
-
- // 璁剧疆鍓嶄竴澶╁簱瀛�
- if ( pispipl.Start().Date() = macroPlan.StartOfPlanning().Date() ) {
- prePISPIPL := pispipl.PreviousPlanningPISPIP().astype( ProductInStockingPointInPeriodPlanningLeaf ); // 鍓嶄竴涓猵ispippl
- // 鍒涘缓璁″垝鍓嶄竴澶╂牸瀛�
- preCell := select( ppr, PackagingPlanCell, tempPPCell, tempPPCell.PackagingPlanColumn() = planPre );
- if ( isnull( preCell ) ) {
- preCell := ppr.PackagingPlanCell( relnew );
- preCell.EndingInventory( prePISPIPL.InventoryLevelEnd() );
- preCell.PackagingPlanColumn( relset, planPre );
- } else {
- preCell.EndingInventory( preCell.EndingInventory() + prePISPIPL.InventoryLevelEnd() );
- }
- }
- }
- }
-
- Transaction::Transaction().Propagate( attribute( PackagingPlanRow, FactoryAbbreviation ) );
- PackagingPlanCell::CalculationPackagingPlanProperties();
- Transaction::Transaction().Propagate( relation( PackagingPlanCell, Next ) );
+ //macroPlan.PackagingPlanRow( relflush );
+ //macroPlan.PackagingPlanColumn( relflush );
+ //
+ //// 鍒涘缓璁″垝鍓嶄竴澶╁垪
+ //planPre := macroPlan.PackagingPlanColumn( relnew, StartDate := macroPlan.StartOfPlanning().Date() - 1 );
+ //
+ //// 鐢熸垚鎶ヨ〃
+ //traverse ( macroPlan, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() and
+ // ( pisp.StockingPointID().Regex( "CC" ) or pisp.StockingPointID().Regex( "DL" ) or pisp.StockingPointID().Regex( "澶ц繛" ) or pisp.StockingPointID().Regex( "闀挎槬" ) ) ) {
+ // // 褰撳墠pisp鎵�澶勫湴鐐�
+ // factory := ifexpr( pisp.StockingPointID().Regex( "CC" ) or pisp.StockingPointID().Regex( "闀挎槬" ), "闀挎槬宸ュ巶", "澶ц繛宸ュ巶" );
+ // factoryAbbreviation := ifexpr( pisp.StockingPointID().Regex( "CC" ) or pisp.StockingPointID().Regex( "闀挎槬" ), "CC", "DL" );
+ //
+ // // 鍒涘缓琛�
+ // ppr := select( macroPlan, PackagingPlanRow, tempPPR, tempPPR.ProductID() = pisp.ProductID() and tempPPR.Factory() = factory );
+ // if ( isnull( ppr ) ) {
+ // ppr := macroPlan.PackagingPlanRow( relnew, ProductID := pisp.ProductID(), Factory := factory, Category := guard( pisp.Product_MP().ParentID(), "" ) );
+ // }
+ //
+ // // 寰幆pispippl
+ // traverse ( pisp, ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ), pispipl, not pispipl.IsPeriodFrozen() ) {
+ // // 鍒涘缓鍒�
+ // ppc := select( macroPlan, PackagingPlanColumn, tempPPC, tempPPC.StartDate() = pispipl.Start().Date() );
+ // if ( isnull( ppc ) ) {
+ // ppc := macroPlan.PackagingPlanColumn( relnew, StartDate := pispipl.Start().Date() );
+ // }
+ //
+ // // 鍒涘缓鍗曞厓鏍�
+ // cell := select( ppr, PackagingPlanCell, tempPPCell, tempPPCell.PackagingPlanColumn() = ppc );
+ // if ( isnull( cell ) ) {
+ // cell := ppr.PackagingPlanCell( relnew );
+ // cell.NetDemand( pispipl.InventoryLevelEnd() + pispipl.NewSupplyQuantity() - pispipl.DependentDemandAndSalesDemandQuantity() );
+ // cell.EndingInventory( pispipl.InventoryLevelEnd() );
+ // cell.PackagingPlanColumn( relset, ppc );
+ // } else {
+ // cell.NetDemand( cell.NetDemand() + ( pispipl.InventoryLevelEnd() + pispipl.NewSupplyQuantity() - pispipl.DependentDemandAndSalesDemandQuantity() ) );
+ // cell.EndingInventory( cell.EndingInventory() + pispipl.InventoryLevelEnd() );
+ // }
+ //
+ // // 璁剧疆璋冨嚭
+ // traverse ( pispipl, AsDeparturePISPIP, pit,
+ // pit.Quantity() > 0 and
+ // pit.Trip().LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP().ID().Regex( factoryAbbreviation ) and
+ // TransferPlanRow::IdentifyTheFactory( pit.Trip().LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP() ) <> TransferPlanRow::IdentifyTheFactory( pit.Trip().LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP() )
+ // )
+ // {
+ // cell.Out( cell.Out() + pit.Quantity() );
+ // }
+ //
+ // // 璁剧疆璋冭繘
+ // traverse ( pispipl, AsArrivalPISPIP, pit,
+ // pit.Quantity() > 0 and
+ // pit.Trip().LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP().ID().Regex( factoryAbbreviation ) and
+ // TransferPlanRow::IdentifyTheFactory( pit.Trip().LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP() ) <> TransferPlanRow::IdentifyTheFactory( pit.Trip().LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP() )
+ // )
+ // {
+ // cell.TransferIn( cell.TransferIn() + pit.Quantity() );
+ // }
+ //
+ // // 闀挎槬宸ュ巶鐗规畩鎯呭喌璁剧疆鍖呰搴撳瓨鍜岄潪鍖呰搴撳瓨
+ // if ( factory = "闀挎槬宸ュ巶" ) {
+ // if ( pisp.StockingPointID().Regex( "澶栫搴�" ) ) {
+ // cell.CC_PackagingInventory( pispipl.InventoryLevelEnd() );
+ // } else if ( pisp.StockingPointID().Regex( "绾胯竟搴�" ) ) {
+ // cell.CC_UnpackagedInventory( pispipl.InventoryLevelEnd() );
+ // }
+ // }
+ //
+ // // 璁剧疆鍓嶄竴澶╁簱瀛�
+ // if ( pispipl.Start().Date() = macroPlan.StartOfPlanning().Date() ) {
+ // prePISPIPL := pispipl.PreviousPlanningPISPIP().astype( ProductInStockingPointInPeriodPlanningLeaf ); // 鍓嶄竴涓猵ispippl
+ // // 鍒涘缓璁″垝鍓嶄竴澶╂牸瀛�
+ // preCell := select( ppr, PackagingPlanCell, tempPPCell, tempPPCell.PackagingPlanColumn() = planPre );
+ // if ( isnull( preCell ) ) {
+ // preCell := ppr.PackagingPlanCell( relnew );
+ // preCell.EndingInventory( prePISPIPL.InventoryLevelEnd() );
+ // preCell.PackagingPlanColumn( relset, planPre );
+ // } else {
+ // preCell.EndingInventory( preCell.EndingInventory() + prePISPIPL.InventoryLevelEnd() );
+ // }
+ // }
+ // }
+ //}
+ //
+ //Transaction::Transaction().Propagate( attribute( PackagingPlanRow, FactoryAbbreviation ) );
+ //PackagingPlanCell::CalculationPackagingPlanProperties();
+ //Transaction::Transaction().Propagate( relation( PackagingPlanCell, Next ) );
// 璁剧疆鍖呰&鎷嗗寘-鏁伴噺
+ PackagingPlanCell::SetPackagingAndUnpackingValues( macroPlan );
//traverse ( macroPlan, PackagingPlanRow, ppr, ( ppr.ProductID() = "Windshield" and ppr.StockingPointID() = "Bosch" ) or ( ppr.ProductID() = "Windshield" and ppr.StockingPointID() = "Components (Spain)" ) ) {
// traverse ( ppr, PackagingPlanCell, ppc/*, ppc.StartDate() = Date::Construct( 2020, 4, 1 )*/ ) {
// // 璁剧疆鍖呰鏁伴噺
--
Gitblit v1.9.3