From 5e5e6dea172b0b92ae397eeb0d9824ee9bda8b0c Mon Sep 17 00:00:00 2001 From: admin <admin@admin.com> Date: 星期四, 17 十月 2024 11:14:25 +0800 Subject: [PATCH] 包装计划优化 --- _Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl | 174 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 87 insertions(+), 87 deletions(-) diff --git a/_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl b/_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl index 0629582..78add67 100644 --- a/_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl +++ b/_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl @@ -6,93 +6,93 @@ { 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 ); -- Gitblit v1.9.3