| | |
| | | [* |
| | | // 甄兰鸽 Jun-24-2024 (created) |
| | | owner.FinancialProductionSource( relflush ); |
| | | ccunit := EnginePipelineReport::GetDefaultCCUnit(); |
| | | dlunit := EnginePipelineReport::GetDefaultDLUnit(); |
| | | ccunit := MachiningPipelineReport::GetDefaultCCUnit(); |
| | | dlunit := MachiningPipelineReport::GetDefaultDLUnit(); |
| | | //allunit := EnginePipelineReport::GetDefaultAllUnit(); |
| | | source := owner.EnginePipelineSource( relnew, Name := FinancialProductionReport::GetDefaultName() ); |
| | | 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 ); |
| | | |
| | |
| | | //初始化列 |
| | | table.GenerateColumn( owner, 'All', search.StartDate(), search.EndDate() ); |
| | | |
| | | //生成生产和库存数据 |
| | | //生成装配、生产和库存数据 |
| | | traverse( owner, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() ){ |
| | | unit := pisp.StockingPoint_MP().UnitID(); |
| | | // info( unit, pisp.ProductID() ); |
| | | //初始化行 |
| | | row := table.GetRow( pisp.ProductID() ); |
| | | |
| | |
| | | or pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Week() ) ){ |
| | | periodtime := pispip.Period_MP().StartDate(); |
| | | periodname := periodtime.Format( "M2/D2/Y" ); |
| | | // info( '---------------------------------', periodtime, table.Column( relsize ), pispip.Period_MP().TimeUnit() ); |
| | | column := selectobject( table, Column, column, column.Name() = periodname and column.Period() = periodtime and column.TimeUnit() = pispip.Period_MP().TimeUnit() ); |
| | | // info( '---------------------------------', isnull( column ), isnull( row ) ); |
| | | // info( '---------------------------------', column.Name(), row.Name() ); |
| | | if( unit = ccunit or unit = dlunit ){ |
| | | |
| | | //装配线 |
| | | if( unit = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() or unit = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() ){ |
| | | row.SetCellAssemblyValue( column, unit, pispip.NewSupplyProductionQuantity() ); |
| | | } |
| | | //机加线 |
| | | if( unit = MachiningPipelineReport::GetDefaultCCProductionUnit() or unit = MachiningPipelineReport::GetDefaultDLProductionUnit() ){ |
| | | row.SetCellProductionValue( column, unit, pispip.NewSupplyProductionQuantity() ); |
| | | } |
| | | row.SetCellInventoryValue( column, pispip.PlannedInventoryLevelEnd() ); |
| | | if( unit = ccunit or unit = dlunit ){ |
| | | row.SetCellInventoryValue( column, unit, pispip.PlannedInventoryLevelEnd() ); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //生成需求数据 |
| | | traverse( owner, SalesDemand.astype( Forecast ), forecast, ( forecast.EndDate() - forecast.StartDate() ) < 8){ |
| | | row := table.GetRow( forecast.ProductID() ); |
| | | weekdate := ( forecast.StartDate() - Duration::Days( 7 ) ).Date(); |
| | | periodtime := forecast.StartDate(); |
| | | periodname := periodtime.Format( "M2/D2/Y" ); |
| | | |
| | | column := selectobject( table, Column, column, column.Name() = periodname and column.Period() = periodtime and column.TimeUnit() = Translations::MP_GlobalParameters_Day() ); |
| | | weekcolumn := minobject( table, Column, wcolumn, wcolumn.Period() <= weekdate and wcolumn.TimeUnit() = Translations::MP_GlobalParameters_Week(), wcolumn.Period() ); |
| | | |
| | | if( not isnull( column ) ){ |
| | | row.SetCellDemandValue( column, forecast.SalesSegmentName(), forecast.Quantity() ); |
| | | } |
| | | |
| | | if( not isnull( weekcolumn ) ){ |
| | | row.SetCellDemandValue( weekcolumn, forecast.SalesSegmentName(), forecast.Quantity() ); |
| | | //生成调拨数据 |
| | | 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 ){ |