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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Quintiq file version 2.0
#parent: #root
Method SetPeriodWithoutEnd (
  Date startDate_i
)
{
  Description: 'Set a non-ending recurrence period that starts at a specific date.'
  TextBody:
  [*
    // Check if a new RecurrencePeriod must be created.
    period       := guard( this.RecurrencePeriod().astype( LibCal_RecurrencePeriodWithoutEnd ), null( LibCal_RecurrencePeriodWithoutEnd ) );
    changeOfType := isnull( period );
    
    isChanged := changeOfType  // There was no period yet, or it was not a PeriodWithoutEnd
              or period.StartDate() <> startDate_i;
    
    if( isChanged )
    {
      // If applicable, get the EndDate of the RecurrencePeriod that will be replaced.
      prevPeriod    := this.GetRecurrencePeriod(); // Can be the one from the LeadingParticipation.
      prevStartDate := guard( prevPeriod.StartDate(), Date::MinDate() );
      prevEndDate   := guard( prevPeriod.EndDate(),   Date::MaxDate() );
      
      if( changeOfType )
      {
        // Create a new RecurrencePeriod.
        period := LibCal_RecurrencePeriodWithoutEnd::Create( this, startDate_i );
      }
      else
      {
        period.StartDate( startDate_i );
      }
    
      // Register the previous startdate and enddate.
      // They are used to determine which occurrences must be created / deleted for the changed period.
      period.PreviousStartDate( prevStartDate );
      period.PreviousEndDate(   prevEndDate   );
    
      this.HasChangedRecurrencePeriod( true );  
    }
  *]
  InterfaceProperties { Accessibility: 'Module' }
}