Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod Initialize ( 
 | 
  MacroPlan owner 
 | 
) 
 | 
{ 
 | 
  Description: '初始化' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // 甄兰鸽 Jun-24-2024 (created) 
 | 
    owner.FinancialSalesSource( relflush ); 
 | 
    products                  := construct( Product_MPs ); 
 | 
    allsalessegment           := FinancialSalesReport::GetSalesSegmentAll(); 
 | 
    ccsalessegment            := FinancialSalesReport::GetSalesSegmentCC(); 
 | 
    dlsalessegment            := FinancialSalesReport::GetSalesSegmentDL(); 
 | 
    tjsalessegment            := FinancialSalesReport::GetSalesSegmentTJ(); 
 | 
    fssalessegment            := FinancialSalesReport::GetSalesSegmentFS(); 
 | 
    ccspline                  := FinancialSalesReport::GetStockingPointCCLine(); 
 | 
    dlspline                  := FinancialSalesReport::GetStockingPointDLLine(); 
 | 
    ccrent                    := FinancialSalesReport::GetStockingPointCCRent(); 
 | 
     
 | 
    source                    := owner.FinancialSalesSource( relnew, IsImport := false, Name := FinancialSalesReport::GetDefaultName() ); 
 | 
    table                     := source.FinancialSalesReport( relnew, ID := source.Name(), Name := source.Name(), IsImport := false ); 
 | 
    showtable                 := source.FinancialSalesReport( relnew, ID := source.Name() + 'Show', Name := source.Name(), IsImport := false, IsShow := true ); 
 | 
    startofplanning           := owner.StartOfPlanning(); 
 | 
    //startofyear               := startofplanning.StartOfYear(); 
 | 
    startofnextyear           := startofplanning.StartOfNextYear(); 
 | 
     
 | 
    search                    := source.FinancialSalesSearch( relnew, Unit := allsalessegment, Generation := allsalessegment, MqbMlb := allsalessegment, Power := allsalessegment ); 
 | 
     
 | 
    table.GenerateColumn( owner ); 
 | 
     
 | 
    //从Forecast查询 
 | 
    traverse( owner, SalesDemand.astype( Forecast ), forecast, forecast.StartDate() < startofnextyear.Date() and ( ( forecast.SalesSegmentName() = ccsalessegment and forecast.Product_MP().MQBMLB() = 'MLB' )  
 | 
              or forecast.SalesSegmentName() = tjsalessegment or forecast.SalesSegmentName() = fssalessegment ) ){ 
 | 
      product    := forecast.Product_MP(); 
 | 
      allrow     := table.GetRow( allsalessegment, product.ID() ); 
 | 
      periodtime := forecast.StartDate().StartOfMonth(); 
 | 
      periodname := periodtime.Format( "M2/D2/Y" ); 
 | 
       
 | 
      if( products.Find( product ) < 0 ){ 
 | 
        products.Add( product ); 
 | 
      } 
 | 
    //  info( '------------------------', periodname, periodtime ); 
 | 
      column    := selectobject( table, FinancialSalesColumn, column, column.Name() = periodname and column.Period() = periodtime ); 
 | 
    //  info( '------------------------', column.Name() ); 
 | 
      //Forecast的Sales Segment为长春,识别出MLB的所有产品汇总 
 | 
      if( forecast.SalesSegmentName() = ccsalessegment and product.MQBMLB() = 'MLB' ){ 
 | 
    //    info( '------------------------', column.Name() ); 
 | 
        ccrow := table.GetRow( ccsalessegment, product.ID() ); 
 | 
    //    info( '------------------------', ccrow.FinancialSalesCell( relsize ), column.FinancialSalesCell( relsize ) ); 
 | 
        ccrow.Initialize( column, forecast.Quantity() ); 
 | 
      }else if( forecast.SalesSegmentName() = tjsalessegment or forecast.SalesSegmentName() = fssalessegment ){ 
 | 
        //大连财务销量:首先在forecast界面查找Sales Segment是天津和佛山的所有需求,每个产品按月汇总需求数量 
 | 
    //    info( '------------------------', column.Name() ); 
 | 
        dlrow := table.GetRow( dlsalessegment, product.ID() ); 
 | 
    //    info( '------------------------', dlrow.FinancialSalesCell( relsize ), column.FinancialSalesCell( relsize ) ); 
 | 
        dlrow.Initialize( column, forecast.Quantity() ); 
 | 
      } 
 | 
      allrow.Initialize( column, forecast.Quantity() ); 
 | 
    } 
 | 
    //从Product planning查找库存点为长春装配线边库的所有MQB产品,取Total Demand字段按月汇总需求数量 
 | 
    traverse( owner, Product_MP, product, product.IsLeaf() and product.MQBMLB() = 'MQB' ){//产品为MQB 
 | 
      traverse( product, ProductInStockingPoint_MP, pisp, pisp.StockingPointID() = ccspline ){//库存点为长春装配线边库 
 | 
        traverse( pisp, ProductInStockingPointInPeriod, pispip, pispip.Start() >= startofplanning 
 | 
                and 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, FinancialSalesColumn, column, column.Name() = periodname and column.Period() = periodtime ); 
 | 
          ccrow := table.GetRow( ccsalessegment, product.ID() ); 
 | 
          ccrow.Initialize( column, pispip.DependentDemandAndSalesDemandQuantity() );//取Total Demand字段按月汇总需求数量 
 | 
           
 | 
          allrow     := table.GetRow( allsalessegment, product.ID() ); 
 | 
          allrow.Initialize( column, pispip.DependentDemandAndSalesDemandQuantity() ); 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
    startofnextyearlead       := startofplanning.StartOfNextYear() + FinancialSalesReport::GetDefaultTripLeadingTime(); 
 | 
    //大连财务销量:长春的需求需要在trip plan里面找到起始库存点为大连装配线边库,目的地为长春外租库的产品,由于需要考虑产品运输lead time,每个月的汇总数据需要推迟两天进行计算 
 | 
    traverse( owner, Unit.Lane.LaneLeg, laneleg, laneleg.OriginStockingPointID() = dlspline and laneleg.DestinationStockingPointID() = ccrent ){ 
 | 
      traverse( laneleg, Trip, trip, trip.Arrival() < startofnextyearlead ){ 
 | 
        periodtime := ( trip.Arrival() - FinancialSalesReport::GetDefaultTripLeadingTime() ).StartOfMonth().Date(); 
 | 
        periodname := periodtime.Format( "M2/D2/Y" ); 
 | 
         
 | 
        column    := selectobject( table, FinancialSalesColumn, column, column.Name() = periodname and column.Period() = periodtime ); 
 | 
        traverse( trip, ProductInTrip, pit ){ 
 | 
          dlrow      := table.GetRow( dlsalessegment, pit.ProductID() ); 
 | 
          dlrow.Initialize( column, pit.Quantity() );//取Total Demand字段按月汇总需求数量 
 | 
           
 | 
          allrow     := table.GetRow( allsalessegment, pit.ProductID() ); 
 | 
          allrow.Initialize( column, pit.Quantity() ); 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
     
 | 
    rows := selectsortedset( table, FinancialSalesRow, row, row.Name() ); 
 | 
    i    := 0; 
 | 
    traverse( rows, Elements, e ){ 
 | 
      e.RowNr( i ); 
 | 
      i := i + 1; 
 | 
    } 
 | 
    showtable.Generate( search, products ); 
 | 
  *] 
 | 
} 
 |