Quintiq file version 2.0
|
#parent: #root
|
Method AlignOccurrences (
|
Date oldStart_i,
|
Date oldEnd_i
|
)
|
{
|
TextBody:
|
[*
|
if( not this.IsRecurring() )
|
{
|
// It the occurrence overlaps with the calendar window,
|
// then copy all (one) occurrences from the LeadingParticipation.
|
if( this.Event().LeadingParticipation().StartTime() < this.Calendar().End() and
|
this.Event().LeadingParticipation().EndTime() > this.Calendar().Start() )
|
{
|
if( this.ExplicitTimeInterval( relsize ) = 0 )
|
{
|
this.CopyOccurrences();
|
}
|
}
|
else // Delete the occurrence if it is outside of the calendar window.
|
{
|
this.DeleteTimeIntervals( false );
|
}
|
}
|
else
|
{
|
// Determine which occurrences should be removed, and which ones copied from the LeadingParticipation.
|
period := this.GetRecurrencePeriod();
|
start := maxvalue( period.StartDate(), this.Calendar().StartDate() );
|
end := minvalue( period.EndDate(), this.Calendar().EndDate() );
|
|
//info( this.Calendar().CalendarID() + "." + this.Event().Subject() );
|
//info( "from :", oldStart_i, "-", oldEnd_i );
|
//info( " to :", start, "-", end );
|
|
if( start <> oldStart_i or
|
end <> oldEnd_i )
|
{
|
if( start < oldStart_i )
|
{
|
// old : |-----|
|
// new : |-----|
|
if( end < oldStart_i )
|
{ //info( ">>> 1a" );
|
this.RemoveOccurrencesAfter( end );
|
this.CopyOccurrences( start, end );
|
}
|
|
// old : |-----|
|
// new : |-----|
|
else if( end <= oldEnd_i )
|
{ //info( ">>> 1b" );
|
this.RemoveOccurrencesAfter( end );
|
this.CopyOccurrences( start, oldStart_i - 1 );
|
}
|
|
// old : |-----|
|
// new : |-----------|
|
else
|
{ //info( ">>> 1c" );
|
this.CopyOccurrences( start, oldStart_i - 1 );
|
this.CopyOccurrences( oldEnd_i + 1, end );
|
}
|
}
|
|
else if( start < oldEnd_i )
|
{
|
// old : |-----|
|
// new : |---|
|
if( end < oldEnd_i )
|
{ //info( ">>> 2a" );
|
this.RemoveOccurrencesBefore( start );
|
this.RemoveOccurrencesAfter( end );
|
}
|
|
// old : |-----|
|
// new : |-----|
|
else
|
{ //info( ">>> 2b" );
|
this.RemoveOccurrencesBefore( start );
|
this.CopyOccurrences( oldEnd_i + 1, end );
|
}
|
}
|
|
else
|
{ //info( ">>> 3" );
|
// old : |-----|
|
// new : |-----|
|
this.RemoveOccurrencesBefore( start );
|
this.CopyOccurrences( start, end );
|
}
|
}
|
}
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|