Quintiq file version 2.0
|
#parent: #root
|
StaticMethod GetLengthOfTimeAndTimeUnitRatio (
|
String perioddefinationtimeunit,
|
String timeunit,
|
Number nroftimeunit,
|
DateTime start,
|
Duration duration
|
) const declarative remote as Real
|
{
|
Description:
|
[*
|
Return the ratio of the period defination time unit's duration over the time unit's duration, takes length of time into consideration
|
E.g., period defination time unit's duration = 1 days, time unit's duration is 1 week, length of time = 2, return (1 / 7) / 2.
|
Argument time unit is get from unit capacity, unit availabilit or stocking point capacity. Same goes to length of time.
|
Argument period defination time unit is unit period or stocking point period's time unit.
|
*]
|
TextBody:
|
[*
|
// soh yee Aug-26-2012 (created)
|
|
factor := 1.0;
|
|
// The factor will be multiplied to the "bigger" time unit. E.g., month is > week.
|
if( PeriodSpecification_MP::GetTimeUnitLevel( perioddefinationtimeunit ) > PeriodSpecification_MP::GetTimeUnitLevel( timeunit ) )
|
{
|
factor := PeriodSpecification_MP::GetNumberOfPeriodsForDifferentTimeUnits( timeunit, perioddefinationtimeunit, start );
|
}
|
|
else
|
{
|
factor := guard( 1 / PeriodSpecification_MP::GetNumberOfPeriodsForDifferentTimeUnits( perioddefinationtimeunit, timeunit, start ), 0 );
|
}
|
|
// Need to find the ratio as some unit period / stocking point's duration doesn't occupy the whole time unit.
|
// E.g., Apr-1-2015 to Apr-6-2015 with time unit Quarter. The duration is only few days compare to 90+ days.
|
// Changed to Hours as Hours is now the smallest bucket - Nicklaus Oct-14-2016
|
totalhours := PeriodSpecification_MP::GetNumberOfPeriodsForDifferentTimeUnits( Translations::MP_GlobalParameters_Hour(), perioddefinationtimeunit, start );
|
durationratio := guard( duration.HoursAsReal() / totalhours, 0 );
|
|
value := guard( durationratio / nroftimeunit, 0 ) * factor;
|
|
|
return value;
|
*]
|
}
|