| | |
| | | source := owner.FinancialProductionSource( relnew, IsImport := false, Name := FinancialProductionReport::GetDefaultName() ); |
| | | table := source.FinancialProductionReport( relnew, ID := source.Name(), Name := source.Name(), IsImport := false ); |
| | | showtable := source.FinancialProductionReport( relnew, ID := source.Name() + 'Show', Name := source.Name(), IsImport := false, IsShow := true ); |
| | | startofplanning := owner.StartOfPlanning(); |
| | | startofnextmonth := owner.StartOfPlanning().StartOfNextMonth(); |
| | | startofyear := startofplanning.StartOfYear(); |
| | | startofplanning := owner.StartOfPlanning().Date(); |
| | | //startofnextmonth := startofplanning.StartOfNextMonth(); |
| | | startofnextyear := startofplanning.StartOfNextYear(); |
| | | |
| | | search := source.FinancialProductionSearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit ); |
| | | |
| | | products := construct( Product_MPs ); |
| | | |
| | | //éè¦çæ¥æåºé´ï¼ å¨å天çåªéè¦å½åæ |
| | | //periods := selectset( owner, Period_MP, period, not period.IsHistorical() |
| | | // and period.StartDate() < startofnextmonth |
| | | // and period.TimeUnit() <> Translations::MP_GlobalParameters_Quarter() |
| | | // ); |
| | | //è·åå½åæéè¦çPeriod |
| | | //currentperiods := table.GetCurrentPeriod( startofplanning, periods ); |
| | | table.GenerateColumn( owner ); |
| | | |
| | | traverse( owner, Product_MP.ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() and not isnull( pisp.StockingPoint_MP() ) and ( pisp.StockingPoint_MP().UnitID() = ccunit or pisp.StockingPoint_MP().UnitID() = dlunit ) ){ |
| | | unit := pisp.StockingPoint_MP().UnitID(); |
| | | info( unit, pisp.ProductID() ); |
| | | ccrow := null( FinancialProductionRow ); |
| | | dlrow := null( FinancialProductionRow ); |
| | | allrow := selectobject( table, FinancialProductionRow, row, row.Name() = pisp.ProductID() and row.Unit() = allunit ); |
| | | if( unit = ccunit ){ |
| | | ccrow := table.FinancialProductionRow( relnew, Name := pisp.ProductID(), Unit := unit ); |
| | | }else{ |
| | | dlrow := table.FinancialProductionRow( relnew, Name := pisp.ProductID(), Unit := unit ); |
| | | } |
| | | if( isnull( allrow ) ){ |
| | | products.Add( pisp.Product_MP() ); |
| | | allrow := table.FinancialProductionRow( relnew, Name := pisp.ProductID(), Unit := allunit ); |
| | | } |
| | | |
| | | for( start := startofyear; start < startofnextyear; start := start.StartOfNextMonth() ){ |
| | | periodtime := start.Date(); |
| | | periodname := periodtime.Format( "M2/D2/Y" ); |
| | | column := selectobject( table, FinancialProductionColumn, column, column.Name() = periodname and column.Period() = periodtime ); |
| | | |
| | | if( not isnull( ccrow ) ){ |
| | | ccrow.Initialize( column, ccunit ); |
| | | //åå½åçæ¬çproduct planningénew supplyåæ®µï¼å大è¿åé¿æ¥å·¥åç产线ï¼è¿è¡å æ» |
| | | 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 ); |
| | | if( iscc or isdl ){ |
| | | traverse( stockingpoint, ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() ){ |
| | | //è·åå·¥åè¡ |
| | | factoryrow := table.GetRowByUnit( pisp.ProductID(), ifexpr( iscc, ccunit, dlunit ) ); |
| | | //è·ååè®¡è¡ |
| | | allrow := table.GetRowByUnit( pisp.ProductID(), allunit ); |
| | | products.Add( pisp.Product_MP() ); |
| | | //å½product planningçæ¥æåºé´å¨éè¦çæ¥æåºé´å
|
| | | traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear |
| | | // and ( ( pispip.Period_MP().StartDate().StartOfMonth() = startofplanning.StartOfMonth() and currentperiods.Find( pispip.Period_MP() ) >= 0 ) |
| | | // or ( pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Month() and pispip.Period_MP().StartDate() < startofnextyear ) ) |
| | | ){ |
| | | periodtime := pispip.Start().StartOfMonth().Date(); |
| | | periodname := periodtime.Format( "M2/D2/Y" ); |
| | | quantity := ceil( pispip.NewSupplyQuantity() );//åä¸åæ´ |
| | | |
| | | column := selectobject( table, FinancialProductionColumn, column, column.Name() = periodname and column.Period() = periodtime ); |
| | | |
| | | factoryrow.Initialize( column, quantity ); |
| | | allrow.Initialize( column, quantity ); |
| | | } |
| | | } |
| | | if( not isnull( dlrow ) ){ |
| | | dlrow.Initialize( column, dlunit ); |
| | | } |
| | | if( not exists( allrow, FinancialProductionCell, allcell, allcell.FinancialProductionColumn() = column ) ){ |
| | | allrow.Initialize( column, allunit ); |
| | | } |
| | | } |
| | | |
| | | traverse( pisp, ProductInStockingPointInPeriod, pispip, pispip.Start() >= startofplanning |
| | | and ( ( pispip.Start() < startofnextmonth and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day() ) |
| | | or ( pispip.Start() < startofnextyear and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Month() ) ) ){ |
| | | periodtime := pispip.Start().StartOfMonth().Date(); |
| | | periodname := periodtime.Format( "M2/D2/Y" ); |
| | | |
| | | column := selectobject( table, FinancialProductionColumn, column, column.Name() = periodname and column.Period() = periodtime ); |
| | | |
| | | if( not isnull( ccrow ) ){ |
| | | ccrow.Initialize( column, pispip.NewSupplyProductionQuantity() ); |
| | | } |
| | | if( not isnull( dlrow ) ){ |
| | | dlrow.Initialize( column, pispip.NewSupplyProductionQuantity() ); |
| | | } |
| | | allrow.Initialize( column, pispip.NewSupplyProductionQuantity() ); |
| | | } |
| | | } |
| | | |
| | | rows := selectsortedset( table, FinancialProductionRow, row, row.Name() ); |
| | | i := 0; |
| | | traverse( rows, Elements, e ){ |