admin
2025-01-22 7e31442f0e9b07764e9c6a9680d3d4aeba5fe1de
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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;
  *]
}