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 );
|
if( table.MaxDayDate().IsInfinite() ){
|
table.MaxDayDate( daytime );
|
}else{
|
table.MaxDayDate( ifexpr( table.MaxDayDate() < daytime, daytime, table.MaxDayDate() ) );
|
}
|
if( table.MinDayDate().IsInfinite() ){
|
table.MinDayDate( daytime );
|
}else{
|
table.MinDayDate( ifexpr( table.MinDayDate() > daytime, daytime, table.MinDayDate() ) );
|
}
|
|
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 );
|
if( table.MaxWeekDate().IsInfinite() ){
|
table.MaxWeekDate( weektime );
|
}else{
|
table.MaxWeekDate( ifexpr( table.MaxWeekDate() < weektime, weektime, table.MaxWeekDate() ) );
|
}
|
if( table.MinWeekDate().IsInfinite() ){
|
table.MinWeekDate( weektime );
|
}else{
|
table.MinWeekDate( ifexpr( table.MinWeekDate() > weektime, weektime, table.MinWeekDate() ) );
|
}
|
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 );
|
if( table.MaxMonthDate().IsInfinite() ){
|
table.MaxMonthDate( monthtime );
|
}else{
|
table.MaxMonthDate( ifexpr( table.MaxMonthDate() < monthtime, monthtime, table.MaxMonthDate() ) );
|
}
|
if( table.MinMonthDate().IsInfinite() ){
|
table.MinMonthDate( monthtime );
|
}else{
|
table.MinMonthDate( ifexpr( table.MinMonthDate() > monthtime, monthtime, table.MinMonthDate() ) );
|
}
|
// 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();
|
}
|
*]
|
}
|