Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method GenerateColumn ( 
 | 
  Dates periods, 
 | 
  String timeunit, 
 | 
  Date starttime, 
 | 
  Date endtime 
 | 
) 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // 甄兰鸽 Jun-25-2024 (created)  
 | 
    mindate               := min( periods, Elements, period, period ); 
 | 
    maxdate               := max( periods, Elements, period, period ); 
 | 
    //查询日期返回需要在计划日期之内 
 | 
    if( starttime < mindate and endtime > maxdate ){ 
 | 
      if( starttime < mindate ){ 
 | 
        starttime             := mindate; 
 | 
      } 
 | 
      if( endtime > maxdate ){ 
 | 
        endtime               := maxdate; 
 | 
      } 
 | 
      if( timeunit = Translations::MP_GlobalParameters_Day() ){ 
 | 
        for( start := starttime; start <= endtime; start := start.DateTime().StartOfNextDay().Date() ){ 
 | 
          periodname          := start.Format( "M2/D2/Y" ); 
 | 
          if( not exists( this, Column, column, column.StartDate() = start ) ){ 
 | 
            this.Column( relnew, ColumnName := periodname, StartDate := start, EndDate := start, TimeUnit := Translations::MP_GlobalParameters_Day() ); 
 | 
          } 
 | 
        } 
 | 
      }else if( timeunit = Translations::MP_GlobalParameters_Week() ){ 
 | 
    //    weekstartstr          := ' KW'; 
 | 
        for( start := starttime; start <= endtime; start := start.StartOfNextWeek() ){ 
 | 
          weekend             := ( start.StartOfNextWeek() - Duration::Days( 1 ) ).Date();//.Concat( weekstartstr.Concat( weekend.Week().Format( 'N(LPad0(2))' ) ) ) 
 | 
           
 | 
          this.Column( relnew, ColumnName := weekend.Format( "M2/D2/Y" ), StartDate := start, EndDate := weekend, TimeUnit := Translations::MP_GlobalParameters_Week() ); 
 | 
        } 
 | 
      }else if( timeunit = Translations::MP_GlobalParameters_Month() ){ 
 | 
        for( start := starttime; start <= endtime; start := start.StartOfNextMonth() ){ 
 | 
          monthend            := ( start.StartOfNextMonth() - Duration::Days( 1 ) ).Date();//.Concat( ' ' ).Concat( monthend.Format( "MM", us_locale ).Concat( '/').Concat( [String]monthend.Month() ).Concat( '月' ) ) 
 | 
    //      us_locale := Locale::Construct( 'en_us' ); 
 | 
          this.Column( relnew, ColumnName := monthend.Format( "M2/D2/Y" ), StartDate := start, EndDate := monthend, TimeUnit := Translations::MP_GlobalParameters_Month() ); 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
    //weekstart             := periods.Element( 0 ); 
 | 
    //monthstart            := periods.Element( 0 ); 
 | 
    //traverse( periods, Elements, periodtime ){ 
 | 
    //  periodname          := periodtime.Format( "M2/D2/Y" ); 
 | 
    //   
 | 
    //  this.Column( relnew, Name := periodname, StartDate := periodtime, EndDate := periodtime, TimeUnit := Translations::MP_GlobalParameters_Day() ); 
 | 
    //   
 | 
    //  if( periodtime = weekstart ){ 
 | 
    //    weekperiodname    := weekstart.Format( "M2/D2/Y" ); 
 | 
    //    this.Column( relnew, Name := weekperiodname, StartDate := weekstart, EndDate := ( weekstart + Duration::Days( 6 ) ).Date(), TimeUnit := Translations::MP_GlobalParameters_Week() ); 
 | 
    //    weekstart         := ( weekstart + Duration::Days( 7 ) ).Date(); 
 | 
    //  } 
 | 
    //  if( periodtime = monthstart ){ 
 | 
    //    monthperiodname   := monthstart.Format( "M2/D2/Y" ); 
 | 
    //    enddate           := ( monthstart.StartOfNextMonth() - Duration::Days( 1 ) ).Date(); 
 | 
    //    this.Column( relnew, Name := monthperiodname, StartDate := monthstart, EndDate := enddate, TimeUnit := Translations::MP_GlobalParameters_Month() ); 
 | 
    //    monthstart        := monthstart.StartOfNextMonth(); 
 | 
    //  } 
 | 
    //} 
 | 
  *] 
 | 
} 
 |