Quintiq file version 2.0
|
#parent: #root
|
Method UpdateRecurrencePeriod (
|
Boolean isRecurring_i,
|
String periodType_i,
|
Date startOfPeriod_i,
|
Number nrOfOccurrences_i,
|
Date endOfPeriod_i
|
)
|
{
|
TextBody:
|
[*
|
if( not isRecurring_i )
|
{
|
// Remove the RecurrencePeriod
|
this.RemoveRecurrencePeriod();
|
}
|
else
|
{
|
// First validate the recurrence period.
|
// If something is wrong the validation results in an error so that the actual update below will not be executed.
|
hasSpecificPeriod := guard( not this.astype( LibCal_Subscription ).UseLeadingPeriod(), true );
|
feedback := LibCal_Validate::Participation_RecurrencePeriod( this.ParticipationID(), isRecurring_i, this.IsLeading(), hasSpecificPeriod,
|
this.StartDate(), periodType_i, startOfPeriod_i, nrOfOccurrences_i, endOfPeriod_i,
|
this.Event().GetEventInfo().Erase( 0, 8 ) );
|
// Process the feedback that has been registered by the validation (if any).
|
LibCal_Util::ProcessFeedbackObject( feedback );
|
|
// The below is only executed when no validation errors were encountered.
|
// Set a RecurrencePeriod of the applicable type.
|
if( periodType_i = LibCal_RecurrencePeriod::TYPE_WITHOUTEND() )
|
{
|
this.SetPeriodWithoutEnd( startOfPeriod_i );
|
}
|
|
else if( periodType_i = LibCal_RecurrencePeriod::TYPE_NROFOCCURRENCES() )
|
{
|
this.SetPeriodWithNrOfOccurrences( startOfPeriod_i, nrOfOccurrences_i );
|
}
|
|
else if( periodType_i = LibCal_RecurrencePeriod::TYPE_WITHENDDATE() )
|
{
|
this.SetPeriodWithEndDate( startOfPeriod_i, endOfPeriod_i );
|
}
|
}
|
|
// Directly calculate IsRecurring.
|
// This is important when the current Participation is a LeadingParticipation
|
// to which a Subscription might be created in the same transaction.
|
// this.CalcIsRecurring(); is not good enough here, explicit propagation is required.
|
Transaction::Transaction().Propagate( attribute( LibCal_Participation, IsRecurring ) );
|
*]
|
InterfaceProperties { Accessibility: 'Extensible' }
|
}
|