Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Function CalcUtilizationDuration 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Utilization based on available capacity and used capacity in time( cater for hasInputDuration / mix combination of hasDuration & hasQty ) 
 | 
    // UtilizationDuration = <used unit capacity (in time) over the campaign duration> / <available unit capacity during campaign duration> 
 | 
    value := 0.0; 
 | 
     
 | 
    if( this.IsPlanned() and this.InputType() = GlobalParameters_MP::GetCampaignTransitionsTypeDuration() ) 
 | 
    { 
 | 
      // Find campaign used capacity, either: 1) time based unit use duration->real 2) qty based unit used real (cater transport & qty). 
 | 
      effectiveUsedCapacity := ifexpr( this.Unit().HasCapacityTypeTimeBase(), 
 | 
                                       sum( this, PlanningCampaignPeriod.PeriodTaskInCampaign, pts,pts.UsedCapacity() ).HoursAsReal(), 
 | 
                                       sum( this, PlanningCampaignPeriod.PeriodTaskInCampaign, pts,pts.Quantity() ) ); 
 | 
                                        
 | 
      // Campaign available capacity is determined via unit-period-available-capacity * overlapped ratio ( 1 for full planning period e.g. 1-full-month ) 
 | 
      // Unit period.GetTotalAvailableCapacity has taken account of: 
 | 
      // 1)used shift pattern 2) the efficiency rate 3) maintenance considering its maintenance factor, allocation, max load percentage and calendar elements. 
 | 
      effectiveCampaignCapacity := sum( this, 
 | 
                                        PlanningCampaignPeriod,  
 | 
                                        pcp,  
 | 
                                        pcp.UnitPeriod().GetTotalAvailableCapacity() * pcp.AvailableCapacityRatio() ); // calc using overlapped ratio to find partial capacity if this campaign period has partial overlap 
 | 
      value := guard( effectiveUsedCapacity / effectiveCampaignCapacity, 0.0 ); 
 | 
    } 
 | 
    this.UtilizationDuration( value ); 
 | 
  *] 
 | 
} 
 |