Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method GetDateOfNextOccurrence ( 
 | 
  output Date dateOfRecurrence_o, 
 | 
  Date date_i 
 | 
) as Date id:Method_LibCal_dlgEvent_GetDateOfNextOccurrence 
 | 
{ 
 | 
  #keys: '[131092.1.1290601]' 
 | 
  Body: 
 | 
  [* 
 | 
    date        := date_i; 
 | 
    patternType := this.GetPatternType(); 
 | 
    timezone    := this.GetCalendarTimeZone(); 
 | 
     
 | 
    //info( ">>> GetDateOfNextOccurence", dateOfRecurrence_o, date_i, btnWeekly.IsPressed() ); 
 | 
     
 | 
    if( patternType = LibCal_RecurrencePattern::TYPE_DAILY() ) 
 | 
    { 
 | 
      date := LibCal_RecurrencePatternDaily::GetDateOfNextOccurrence( dateOfRecurrence_o, date_i, 
 | 
                                                                      [Number]edtEveryNrOfDays.Text(), 
 | 
                                                                      ckbEveryWeekday.Checked() ); 
 | 
    } 
 | 
     
 | 
    else if( patternType = LibCal_RecurrencePattern::TYPE_WEEKLY() ) 
 | 
    { 
 | 
      earliestStart := date_i; 
 | 
      date := LibCal_RecurrencePatternWeekly::GetDateOfNextOccurrence( timezone, dateOfRecurrence_o, date_i,  
 | 
                                                                       durStartTimeOfDay.Duration(), durEndTimeOfDay.Duration(), dhDuration.Data(), earliestStart, 
 | 
                                                                       [Number]edtEveryNrOfWeeks.Text(), 
 | 
                                                                       btnMonday   .IsPressed(), 
 | 
                                                                       btnTuesday  .IsPressed(), 
 | 
                                                                       btnWednesday.IsPressed(), 
 | 
                                                                       btnThursday .IsPressed(), 
 | 
                                                                       btnFriday   .IsPressed(), 
 | 
                                                                       btnSaturday .IsPressed(), 
 | 
                                                                       btnSunday   .IsPressed() ); 
 | 
    } 
 | 
     
 | 
    else if( patternType = LibCal_RecurrencePattern::TYPE_MONTHLY() ) 
 | 
    { 
 | 
      // Make sure that the entered day of the month is valid. 
 | 
      day := guard( [Number]edtMonthlyDay.Text(), 0 ); 
 | 
       
 | 
      if( day > 0 ) 
 | 
      { 
 | 
        everyNrOfMonths := ifexpr( ckbMonthlyDay.Checked(), edtMonthlyDayEveryNrOfMonths.Text(), 
 | 
                                                            edtMonthlyPatternEveryNrOfMonths.Text() ); 
 | 
     
 | 
        /* BUG: referencing the DropDownStringLists results in an error in the TCE !!! 
 | 
        // As a WORKAROUND, the values are also set in a hidden label, which càn be used here. 
 | 
        weekOfMonth := ssMonthlyPatternWeekOfMonth.Text(); 
 | 
        dayOfWeek   := ssMonthlyPatternDayOfWeek.Text(); 
 | 
        */ 
 | 
     
 | 
        weekOfMonth := lblMonthlyPatternWeekOfMonth.Text(); 
 | 
        dayOfWeek   := lblMonthlyPatternDayOfWeek.Text(); 
 | 
     
 | 
        date := LibCal_RecurrencePatternMonthly::GetDateOfNextOccurrence( dateOfRecurrence_o, date_i, [Number]everyNrOfMonths, 
 | 
                                                                          ckbMonthlyDay.Checked(), day, weekOfMonth, dayOfWeek ); 
 | 
      }                                                                     
 | 
    } 
 | 
     
 | 
    else if( patternType = LibCal_RecurrencePattern::TYPE_YEARLY() ) 
 | 
    { 
 | 
      /* BUG: referencing the DropDownStringLists results in an error in the TCE !!! 
 | 
      // As a WORKAROUND, the values are also set in a hidden label, which càn be used here. 
 | 
      dayOfMonth  := ssYearlyDayOfMonth.Text(); 
 | 
      weekOfMonth := ssYearlyPatternWeekOfMonth.Text(); 
 | 
      dayOfWeek   := ssYearlyPatternDayOfWeek.Text(); 
 | 
      */ 
 | 
     
 | 
      dayOfMonth  := [Number]lblYearlyDayOfMonth.Text(); 
 | 
      weekOfMonth := lblYearlyPatternWeekOfMonth.Text(); 
 | 
      dayOfWeek   := lblYearlyPatternDayOfWeek.Text(); 
 | 
     
 | 
      date := LibCal_RecurrencePatternYearly::GetDateOfNextOccurrence( dateOfRecurrence_o, date_i, [Number]edtEveryNrOfYears.Text(), 
 | 
                                                                       ckbYearlyDay.Checked(), dayOfMonth, weekOfMonth, dayOfWeek ); 
 | 
    } 
 | 
     
 | 
    return date; 
 | 
  *] 
 | 
} 
 |