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