Quintiq file version 2.0
#parent: #root
Method SetEndOfPeriod () id:Method_LibCal_dlgEvent_SetEndOfPeriod
{
  #keys: '[131092.1.1284157]'
  Body:
  [*
    // When this method is called from response dsStartOfPeriod.OnChanged() because the value is set during
    // InitializeRecurrencePeriod(), the value of ckbEndOfPeriod.Checked() is *always* 'false', even when it is
    // explicitly set to 'true' during the initialization. This seems to be a bug in the Software.
    // As a workaround, the value of lblWorkaround.Text() is set to "initialized" when the value of ckbEndOfPeriod.Checked() is set.
    // When this method is called during initialization, the value of the label is still "" (which is WRONG, it should have been set!).
    // This can be used to let this method not be executed with a value of ckbEndOfPeriod.Checked() that is not
    // properly initialized.
    if( lblWorkaround.Text() <> "" )
    {
      if( this.ValuesRecurrenceOK() )
      {
        if( btnOnce.IsPressed() )
        {
          dsEndOfPeriod.Date( dsStartOfPeriod.Date() );
        }
        else
        {
          // Set the end of the period based on the start of the period and the #occurrences
          // IFF the end of the period is not manually set.
          if( not ckbEndBy.Checked() )
          {
            endDate := this.DetermineEndDate( dsStartOfPeriod.Date(), [Number]edtNrOfOccurrences.Text() );
            dsEndOfPeriod.Date( endDate );
          }
        }
      }
      
      // else keep the value as it is, setting it to MinDate looks 'strange'.
      
      Form.UpdateTextualInfo();
    }
  *]
}
