| Quintiq file version 2.0 | 
| #parent: #root | 
| Method InitializeDate ( | 
|   LibCal_SubscriberEventTable table, | 
|   DateTime starttime, | 
|   DateTime endtime, | 
|   String desc | 
| ) | 
| { | 
|   TextBody: | 
|   [* | 
|     // 甄兰鸽 May-29-2024 (created) | 
|     startTime     := starttime; | 
|     nextweektime  := starttime; | 
|     nextmonthtime := starttime; | 
|     while( startTime < endtime ){ | 
|     //for(  startTime := starttime; startTime < endtime; startTime := startTime.StartOfNextDay() ){ | 
|       //天 | 
|       daytime         := this.GetTimeByTimeUnit( starttime, startTime, Translations::MP_GlobalParameters_Day() ); | 
|       daycolumn       := table.GetColumnByTimeUnit( table, daytime, Translations::MP_GlobalParameters_Day() ); | 
|       daycell         := daycolumn.GetCellByTimeUnit( this, desc ); | 
|        | 
|       dayvalue        := [Real]daycell.Value(); | 
|       if( startTime.StartOfNextDay() > endtime ){ | 
|         duration      := endtime - startTime; | 
|         dayvalue      := dayvalue + duration.HoursAsReal(); | 
|         daycell.Period( relnew, Start := startTime.Format( 'M/D/Y H:m' ), End := endtime.Format( 'M/D/Y H:m' ) ); | 
|       }else{ | 
|         duration      := startTime.StartOfNextDay() - startTime; | 
|         dayvalue      := dayvalue + duration.HoursAsReal(); | 
|         daycell.Period( relnew, Start := startTime.Format( 'M/D/Y H:m' ), End := startTime.StartOfNextDay().Format( 'M/D/Y H:m' ) ); | 
|       } | 
|       daycell.Value( [String]dayvalue ); | 
|       //周 | 
|       if( nextweektime = startTime ){ | 
|         weektime      := this.GetTimeByTimeUnit( starttime, startTime, Translations::MP_GlobalParameters_Week() ); | 
|         weekcolumn    := table.GetColumnByTimeUnit( table, weektime, Translations::MP_GlobalParameters_Week() ); | 
|         weekcell      := weekcolumn.GetCellByTimeUnit( this, desc ); | 
|          | 
|         weekvalue     := [Real]weekcell.Value(); | 
|         if( startTime.StartOfNextWeek() > endtime ){ | 
|           duration    := endtime - startTime; | 
|           weekvalue   := weekvalue + duration.HoursAsReal(); | 
|           weekcell.Period( relnew, Start := startTime.Format( 'M/D/Y H:m' ), End := endtime.Format( 'M/D/Y H:m' ) ); | 
|         }else{ | 
|           duration    := startTime.StartOfNextWeek() - startTime; | 
|           weekvalue   := weekvalue + duration.HoursAsReal(); | 
|           weekcell.Period( relnew, Start := startTime.Format( 'M/D/Y H:m' ), End := startTime.StartOfNextWeek().Format( 'M/D/Y H:m' ) ); | 
|         } | 
|         weekcell.Value( [String]weekvalue ); | 
|         nextweektime := startTime.StartOfNextWeek(); | 
|       } | 
|     //  info( '-----------------------------1------------------------', nextmonthtime, startTime, nextweektime ); | 
|       //月 | 
|       if( nextmonthtime = startTime ){ | 
|         monthtime     := this.GetTimeByTimeUnit( starttime, startTime, Translations::MP_GlobalParameters_Month() ); | 
|         monthcolumn   := table.GetColumnByTimeUnit( table, monthtime, Translations::MP_GlobalParameters_Month() ); | 
|         monthcell     := monthcolumn.GetCellByTimeUnit( this, desc ); | 
|         info( nextmonthtime, startTime, monthtime, isnull( monthcolumn ), isnull( monthcell ) ); | 
|         monthvalue    := [Real]monthcell.Value(); | 
|         if( startTime.StartOfNextMonth() > endtime ){ | 
|           duration    := endtime - startTime; | 
|           monthvalue  := monthvalue + duration.HoursAsReal(); | 
|           monthcell.Period( relnew, Start := startTime.Format( 'M/D/Y H:m' ), End := endtime.Format( 'M/D/Y H:m' ) ); | 
|         }else{ | 
|           duration    := startTime.StartOfNextMonth() - startTime; | 
|           monthvalue  := monthvalue + duration.HoursAsReal(); | 
|           monthcell.Period( relnew, Start := startTime.Format( 'M/D/Y H:m' ), End := startTime.StartOfNextMonth().Format( 'M/D/Y H:m' ) ); | 
|         } | 
|         monthcell.Value( [String]monthvalue ); | 
|         nextmonthtime := startTime.StartOfNextMonth(); | 
|       } | 
|       startTime := startTime.StartOfNextDay(); | 
|     } | 
|   *] | 
| } |