Quintiq file version 2.0
|
#parent: #root
|
StaticMethod Initialize (
|
MacroPlan owner
|
)
|
{
|
TextBody:
|
[*
|
// 甄兰鸽 Jun-24-2024 (created)
|
owner.FinancialProductionSource( relflush );
|
productparent := MachiningPipelineReport::GetDefaultProductParent();
|
ccunit := MachiningPipelineReport::GetDefaultCCUnit();
|
dlunit := MachiningPipelineReport::GetDefaultDLUnit();
|
//allunit := EnginePipelineReport::GetDefaultAllUnit();
|
source := owner.MachiningPipelineSource( relnew, Name := MachiningPipelineReport::GetDefaultName() );
|
table := source.Report( relnew, ID := source.Name(), Name := source.Name() );
|
showtable := source.Report( relnew, ID := source.Name() + 'Show', Name := source.Name(), IsShow := true );
|
|
search := source.Search( relnew, StartDate := Date::MinDate(), EndDate := Date::MaxDate(), TimeUnit := Translations::MP_GlobalParameters_Day() );
|
|
products := construct( Product_MPs );
|
//初始化列
|
table.GenerateColumn( owner, 'All', search.StartDate(), search.EndDate() );
|
endperiod := maxobject( owner, Period_MP, period, not period.IsHistorical() and period.TimeUnit() = Translations::MP_GlobalParameters_Day(), period.StartDate() );
|
|
//生成装配、生产和库存数据
|
traverse( owner, StockingPoint_MP, stockingpoint ){
|
unit := stockingpoint.Unit();
|
parentunits := unit.GetAllParent();
|
//是否属于长春工厂
|
iscc := unit.ID() = ccunit or exists( parentunits, Elements, punit, punit.ID() = ccunit );
|
//是否属于大连工厂
|
isdl := unit.ID() = dlunit or exists( parentunits, Elements, punit, punit.ID() = dlunit );
|
//是否属于长春装配线
|
isccassemnly := unit.ID() = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() );
|
//是否属于大连装配线
|
isdlassemnly := unit.ID() = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() );
|
//是否属于长春机加产线
|
isccproduction := unit.ID() = MachiningPipelineReport::GetDefaultCCProductionUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultCCProductionUnit() );
|
//是否属于大连机加产线
|
isdlproduction := unit.ID() = MachiningPipelineReport::GetDefaultDLProductionUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultDLProductionUnit() );
|
if( iscc or isdl ){
|
traverse( stockingpoint, ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() and not pisp.IsSystem()
|
and exists( pisp.Product_MP().GetAllParent(), Elements, e, e.ID() = productparent )
|
and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day() and ( pispip.NewSupplyQuantity() <> 0 or pispip.PlannedInventoryLevelEnd() <> 0 ) ) ){
|
product := pisp.Product_MP();
|
productparents := product.GetAllParent();
|
if( exists( productparents, Elements, e, e.ID() = productparent ) ){//查询产品类型是发动机
|
row := table.GetRow( pisp.ProductID() );
|
products.Add( pisp.Product_MP() );
|
weekstart := owner.StartOfPlanning().Date();
|
pispips := selectsortedset( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical()
|
and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day() and ( pispip.NewSupplyQuantity() <> 0 or pispip.PlannedInventoryLevelEnd() <> 0 ), pispip.Start() );
|
|
traverse( pispips, Elements, pispip ){
|
//天
|
daycolumn := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), pispip.Start().Date() );
|
//周
|
weekcolumn := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), weekstart );
|
|
supplyquantity := [Number]pispip.NewSupplyQuantity();//四舍五入
|
inventoryquantity:= [Number]pispip.PlannedInventoryLevelEnd();//四舍五入
|
|
//装配线
|
if( isccassemnly or isdlassemnly ){
|
row.SetCellAssemblyValue( daycolumn, isccassemnly, [Real]supplyquantity );
|
row.SetCellAssemblyValue( weekcolumn, isccassemnly, [Real]supplyquantity );
|
}
|
|
//机加线
|
if( isccproduction or isdlproduction ){
|
row.SetCellProductionValue( daycolumn, isccproduction, [Real]supplyquantity );
|
row.SetCellProductionValue( weekcolumn, isccproduction, [Real]supplyquantity );
|
}
|
//库存
|
if( iscc or isdl ){
|
row.SetCellInventoryValue( daycolumn, iscc, [Real]inventoryquantity );
|
if( pispip.Start() = weekstart + Duration::Days( 6 ) or pispip.Period_MP() = endperiod ){
|
weekstart := ( weekstart + Duration::Days( 7 ) ).Date();
|
row.SetCellInventoryValue( weekcolumn, iscc, [Real]inventoryquantity );
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|
|
//生成调拨数据
|
traverse( owner, TransferPlanRow, tprow, ( tprow.SourceStockpoingPointID() = 'CC' and tprow.TargetStockpoingPointID() = 'DL' ) or ( tprow.SourceStockpoingPointID() = 'DL' and tprow.TargetStockpoingPointID() = 'CC' ) ){
|
row := selectobject( table, Row, row, row.Name() = tprow.Name() );
|
traverse( table, Column, column ){
|
cell := selectobject( row, Cell, cell, cell.Column() = column );
|
if( column.TimeUnit() = Translations::MP_GlobalParameters_Day() ){
|
tpcell := selectobject( tprow, TransferPlanCell, tpcell, tpcell.TransferPlanColumn().ColumnDate() = column.Period() );
|
if( tprow.SourceStockpoingPointID() = 'CC' and tprow.TargetStockpoingPointID() = 'DL' ){
|
cell.CCTransferQty( [Real]tpcell.Value() );
|
}else if( tprow.SourceStockpoingPointID() = 'DL' and tprow.TargetStockpoingPointID() = 'CC' ){
|
cell.DLTransferQty( [Real]tpcell.Value() );
|
}
|
}else if( column.TimeUnit() = Translations::MP_GlobalParameters_Week() ){
|
period := column.Period() + Duration::Days( 6 );
|
tpcell := selectobject( tprow, TransferPlanCell, tpcell, tpcell.TransferPlanColumn().ColumnDate() = period.Date() );
|
|
if( tprow.SourceStockpoingPointID() = 'CC' and tprow.TargetStockpoingPointID() = 'DL' ){
|
cell.CCTransferQty( [Real]tpcell.Value() );
|
}else if( tprow.SourceStockpoingPointID() = 'DL' and tprow.TargetStockpoingPointID() = 'CC' ){
|
cell.DLTransferQty( [Real]tpcell.Value() );
|
}
|
}
|
}
|
}
|
|
rows := selectsortedset( table, Row, row, row.Name() );
|
i := 0;
|
traverse( rows, Elements, e ){
|
e.RowNr( i );
|
i := i + 1;
|
}
|
showtable.Generate( search, products );
|
*]
|
}
|