yanweiyuan3
2023-08-09 588bc7829387dfc761cc25f06f77d4c81818bd10
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
Quintiq file version 2.0
#parent: #root
Method GenerateOccurrence
{
  Description: 'Generate a TimeInterval for the single occurrence of the Event.'
  TextBody:
  [*
    this.Event().CalcCapacity();
    
    // Simply delete and re-create the TimeInterval.
    onlySoftDeleted := false;
    this.DeleteTimeIntervals( onlySoftDeleted );
    
    // Only re-create if the TimeInterval is still inside the calendar window.
    if( this.EndTime()   > this.Calendar().Start() and
        this.StartTime() < this.Calendar().End() )
    {
      leadingETI := this.CreateTimeInterval( this.StartTime(), this.EndTime(), this.Event().Capacity() );
      this.IsChanged( false );
    
      // Also (re)create the TimeIntervals of the subscriptions, if they are inside the calendar window.
      traverse( this, Subscription, subscription )
      {
        if( this.EndTime()   > subscription.Calendar().Start() and
            this.StartTime() < subscription.Calendar().End() )
        {
          subscribingETI := subscription.CreateTimeInterval( this.StartTime(), this.EndTime(), this.Event().Capacity() );
    
          // Register the occurrence (i.e. the ExplicitTimeInterval) as SubscribingETI of the LeadingETI.
          subscribingETI.LeadingETI( relset, leadingETI );
          
          subscription.IsChanged( false );
        }
      }
    }
  *]
  InterfaceProperties { Accessibility: 'Module' }
}