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, '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 ){ 
 | 
      //是否属于长春工厂 
 | 
      iscc                    := ( stockingpoint.ID().StartsWith( 'CC' ) or stockingpoint.ID().StartsWith( '长春' ) ) and stockingpoint.ID().EndsWith( '厂内库' ); 
 | 
      //是否属于大连工厂 
 | 
      isdl                    := ( ( stockingpoint.ID().StartsWith( 'DL' ) or stockingpoint.ID().StartsWith( '大连' ) ) and stockingpoint.ID().EndsWith( '厂内库' ) ) or  stockingpoint.ID() = '大连外租库'; 
 | 
       
 | 
      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(), 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    := [Number]pispip.NewSupplyQuantity();//四舍五入 
 | 
          inventoryquantity := [Number]pispip.PlannedInventoryLevelEnd();//四舍五入 
 | 
          //产量是加总 
 | 
          if( iscc or isdl ){ 
 | 
            row.SetCellProductionValue( daycolumn, iscc, [Real]supplyquantity ); 
 | 
            row.SetCellProductionValue( weekcolumn, iscc, [Real]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 ); 
 | 
  *] 
 | 
} 
 |