Quintiq file version 2.0
|
#parent: #root
|
Method GetRoundedMinimumShiftPatternDuration (
|
Real minimumduration
|
) const as Real
|
{
|
Description:
|
[*
|
Rounds up the given minimum duration in order to ensure that shift patterns are used until the end of the unit period that ends after 'minimumduration' is elapsed.
|
For example: if the shift pattern starts in January, and the minimum duration is 61 days: round up the RHS to 31+28+31=90 days, to make sure that all 3 months are using the shift pattern.
|
Otherwise, January+March would be a valid solution because 31+31=62 (>61).
|
*]
|
TextBody:
|
[*
|
result := 0.0;
|
nextperiod := this;
|
|
while( result < minimumduration and not isnull( nextperiod ) )
|
{
|
result := result + nextperiod.Duration().HoursAsReal();
|
nextperiod := guard( nextperiod.NextPlanningUnitPeriod().astype( UnitPeriodTime ), null( UnitPeriodTime ) );
|
}
|
|
// If the period is too close to the end of the horizon, we can't round up.
|
result := maxvalue( result, minimumduration );
|
|
return result;
|
*]
|
}
|