Quintiq file version 2.0
|
#parent: #root
|
StaticMethod GetStartOfNextMonth (
|
DateTime datetime,
|
Number nrofrecurrent
|
) const declarative remote as DateTime
|
{
|
Description:
|
[*
|
Return the start date of the next month for the given date and number of recurrent in month.
|
This method will return a exact date after a month from the date, e.g Given 15 Jan, this will return 15 Feb.
|
*]
|
TextBody:
|
[*
|
/* Only add the durationfromstart after loop to avoid exceeding the last day of next month:
|
eg. Adding 2 months to 31-Jan using GetStartOfNextMonth will return
|
the same day of targetted month or last day of month ie. 31-Mar
|
*/
|
newstartofmonth := datetime;
|
durationfromstart := datetime - datetime.StartOfMonth();
|
|
// durationinday will retain the time of the day
|
durationinday := datetime - datetime.StartOfDay();
|
|
for( reccurent := 1; reccurent <= nrofrecurrent; reccurent++ )
|
{
|
newstartofmonth := newstartofmonth.StartOfNextMonth();
|
}
|
|
/* Add durationinday to last day of the new month to avoid losing the
|
time of the day */
|
lastdayofnewmonth := newstartofmonth.StartOfNextMonth() - Duration::Days( 1 ) + durationinday;
|
newdate := minvalue( newstartofmonth + durationfromstart, lastdayofnewmonth );
|
|
return newdate
|
*]
|
}
|