| Quintiq file version 2.0 | 
| #parent: #root | 
| Method GetLastMonth ( | 
|   DateTime timestamp | 
| ) as DateTime id:Method_Kpi_GlobalState_GetLastMonth | 
| { | 
|   #keys: '[136398.1.809533354]' | 
|   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, the Feb do not have those dates, then just get Feb 28 | 
|       out:= timestamp.StartOfMonth( timezone ).AddAsPeriod( timezone, -Duration::Days( 1 ) ); | 
|     } | 
|                            | 
|     return out; | 
|   *] | 
| } |