| 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; | 
|   *] | 
| } |