Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod Initialize ( 
 | 
  MacroPlan owner 
 | 
) 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // 甄兰鸽 Jun-24-2024 (created) 
 | 
    owner.EnginePipelineSource( relflush ); 
 | 
    productparent             := EnginePipelineReport::GetDefaultProductParent(); 
 | 
    source                    := owner.EnginePipelineSource( relnew, Name := EnginePipelineReport::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                    := owner.EnginePipelineSearch( relnew, StartDate := Date::MinDate(), EndDate := Date::MaxDate(), TimeUnit := Translations::MP_GlobalParameters_Day() ); 
 | 
     
 | 
    products                  := construct( Product_MPs ); 
 | 
    //初始化列 
 | 
    table.GenerateColumn( owner, Translations::MP_GlobalParameters_Day(), 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                    := stockingpoint.ID().StartsWith( 'CC' ) or unit.ID().StartsWith( 'CC' ) or exists( parentunits, Elements, punit, punit.ID().StartsWith( 'CC' ) ); 
 | 
      //是否属于大连工厂 
 | 
      isdl                    := stockingpoint.ID().StartsWith( 'DL' ) or unit.ID().StartsWith( 'DL' ) or exists( parentunits, Elements, punit, punit.ID().StartsWith( 'DL' ) ); 
 | 
      //是否属于长春产量 
 | 
      isccproduction          := iscc and stockingpoint.ID().EndsWith( '厂内库' ); 
 | 
      //是否属于大连产量 
 | 
      isdlproduction          := isdl and stockingpoint.ID().EndsWith( '厂内库' ) or  stockingpoint.ID() = '大连外租库'; 
 | 
      if( isccproduction or isdlproduction ){ 
 | 
        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 ) ) ){ 
 | 
          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() ); 
 | 
          row := table.GetRow( pisp.ProductID() ); 
 | 
          products.Add( pisp.Product_MP() ); 
 | 
          traverse( pispips, Elements, pispip ){ 
 | 
            //天 
 | 
            daycolumn         := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), pispip.Start().Date() ); 
 | 
            //周 
 | 
    //        weekcolumn        := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(),  pispip.Start().Date() ); 
 | 
            supplyquantity    := pispip.NewSupplyQuantity();//四舍五入 
 | 
            inventoryquantity := pispip.PlannedInventoryLevelEnd(); 
 | 
            //产量是加总 
 | 
            if( isccproduction or isdlproduction ){ 
 | 
              row.SetCellProductionValue( daycolumn, iscc, supplyquantity ); 
 | 
    //          row.SetCellProductionValue( weekcolumn, iscc, supplyquantity ); 
 | 
            } 
 | 
            //库存需要取最后一天 
 | 
            row.SetCellInventoryValue( daycolumn, [Real]inventoryquantity ); 
 | 
         
 | 
    //        if( pispip.Start().Date() = weekcolumn.EndDate() or pispip.Period_MP() = endperiod ){ 
 | 
    //             
 | 
    //          row.SetCellInventoryValue( weekcolumn, [Real]inventoryquantity ); 
 | 
    //        }  
 | 
          } 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
    //生成需求数据 
 | 
    traverse( owner, SalesDemand.astype( Forecast ), forecast, not isnull( forecast.SalesSegment_MP() ) and forecast.StartDate() < endperiod.StartDate() and forecast.Quantity() <> 0  
 | 
              and exists( forecast.Product_MP().GetAllParent(), Elements, e, e.ID() = productparent ) 
 | 
              and exists( forecast, PlanningSalesDemandInPeriod, psdip, psdip.Quantity() <> 0 ) ){ 
 | 
      row                 := table.GetRow( forecast.ProductID() ); 
 | 
      products.Add( forecast.Product_MP() ); 
 | 
    //  weekstart           := owner.StartOfPlanning().Date(); 
 | 
      traverse( forecast, PlanningSalesDemandInPeriod, psdip, psdip.Quantity() <> 0 ){ 
 | 
        //天 
 | 
        daycolumn         := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), psdip.StartDate() ); 
 | 
        //周 
 | 
    //    weekcolumn        := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), psdip.StartDate() ); 
 | 
           
 | 
        if( not isnull( daycolumn ) ){ 
 | 
          row.SetCellDemandValue( daycolumn, forecast.SalesSegmentName(), forecast.Quantity() ); 
 | 
        } 
 | 
    //    if( not isnull( weekcolumn ) ){ 
 | 
    //      row.SetCellDemandValue( weekcolumn, forecast.SalesSegmentName(), forecast.Quantity() ); 
 | 
    //    } 
 | 
    //    if( psdip.StartDate() = ( weekstart + Duration::Days( 6 ) ).Date() or psdip.PeriodStart() = endperiod.StartDate() ){ 
 | 
    //      weekstart       := ( weekstart + Duration::Days( 7 ) ).Date(); 
 | 
    //    }  
 | 
      } 
 | 
    } 
 | 
     
 | 
    //rows := selectsortedset( table, Row, row, row.Name() ); 
 | 
    //i    := 0; 
 | 
    //traverse( rows, Elements, e ){ 
 | 
    //  e.RowNr( i ); 
 | 
    //  i := i + 1; 
 | 
    //} 
 | 
    showtable.Generate( search, products ); 
 | 
  *] 
 | 
} 
 |