Quintiq file version 2.0 #parent: #root Method GetLastMonth ( DateTime timestamp ) as DateTime id:Method_GlobalStateKpiTracker_GetLastMonth { #keys: '[136398.1.842173950]' Body: [* // Returns the timestamp with its month reduced by 1. // Takes year-crossing into account. timezone := TimeZone::ObjectTimeZone( KpiTracker ); out := timestamp.StartOfMonth( timezone ) .AddAsPeriod( timezone, -Duration::Days( 1 ) ) .StartOfMonth( timezone ) .AddAsPeriod( timezone, timestamp - timestamp.StartOfMonth( timezone ) ); if( out.StartOfMonth( timezone ) = timestamp.StartOfMonth( timezone ) ) { //When it is 29-31 March, if Feb then get Feb 28. out := timestamp.StartOfMonth( timezone ).AddAsPeriod( timezone, -Duration::Days( 1 ) ); } return out; *] }