Quintiq file version 2.0
|
#parent: #root
|
StaticMethod CreateData (
|
MacroPlan macroPlan
|
)
|
{
|
Description: '创建数据'
|
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.PackagingPlanColumn( relset, ppc );
|
}
|
|
// 设置调出
|
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 = "大连工厂" ) {
|
// 净需求&剩余库存&供应量
|
cell.NetDemand( cell.NetDemand() + pispipl.DependentDemandAndSalesDemandQuantity() );
|
cell.EndingInventory( [Number] ( cell.EndingInventory() + pispipl.InventoryLevelEnd() ) );
|
}
|
|
// 长春工厂设置值
|
if ( factory = "长春工厂" ) {
|
// 剩余库存&供应量
|
cell.EndingInventory( [Number] ( cell.EndingInventory() + pispipl.InventoryLevelEnd() ) );
|
|
// 净需求【只取线边库】&包装库存&非包装库存
|
if ( pisp.StockingPointID().Regex( "外租库" ) ) {
|
cell.CC_PackagingInventory( pispipl.InventoryLevelEnd() );
|
} else if ( pisp.StockingPointID().Regex( "线边库" ) ) {
|
cell.CC_UnpackagedInventory( pispipl.InventoryLevelEnd() );
|
cell.NetDemand( cell.NetDemand() + pispipl.DependentDemandAndSalesDemandQuantity() );
|
}
|
}
|
|
// 设置New Supply,纯生产值
|
traverse ( pispipl, NewSupply, ns, ns.PeriodTask_MP().istype( PeriodTaskOperation ) ) {
|
cell.NewSupply( cell.NewSupply() + ns.Quantity() );
|
}
|
|
// 设置前一天库存
|
if ( pispipl.Start().Date() = macroPlan.StartOfPlanning().Date() ) {
|
prePISPIPL := pispipl.PreviousPlanningPISPIP().astype( ProductInStockingPointInPeriodPlanningLeaf ); // 前一个pispippl
|
// 创建计划前一天格子
|
preCell := select( ppr, PackagingPlanCell, tempPPCell, tempPPCell.PackagingPlanColumn() = planPre );
|
if ( isnull( preCell ) ) {
|
preCell := ppr.PackagingPlanCell( relnew );
|
preCell.EndingInventory( [Number]prePISPIPL.InventoryLevelEnd() );
|
preCell.PackagingPlanColumn( relset, planPre );
|
} else {
|
preCell.EndingInventory( [Number] ( preCell.EndingInventory() + prePISPIPL.InventoryLevelEnd() ) );
|
}
|
}
|
}
|
}
|
|
Transaction::Transaction().Propagate( attribute( PackagingPlanRow, FactoryAbbreviation ) );
|
PackagingPlanCell::CalculationPackagingPlanProperties();
|
Transaction::Transaction().Propagate( relation( PackagingPlanCell, Next ) );
|
*]
|
}
|