| Quintiq file version 2.0 | 
| #parent: #root | 
| Function CalcUtilizationRatio | 
| { | 
|   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.TransitionType_MP().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, PlanningTransitionPeriod.PeriodTaskInTransition, pts,pts.UsedCapacity() ).HoursAsReal(), | 
|                                        sum( this, PlanningTransitionPeriod.PeriodTaskInTransition, pts,pts.Quantity() ) ); | 
|                                         | 
|       // Transition 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. | 
|       effectiveTransitionCapacity := sum( this, | 
|                                         PlanningTransitionPeriod,  | 
|                                         ptp,  | 
|                                         ptp.UnitPeriod().GetTotalAvailableCapacity() * ptp.AvailableCapacityRatio() ); // calc using overlapped ratio to find partial capacity if this campaign period has partial overlap | 
|       value := guard( effectiveUsedCapacity / effectiveTransitionCapacity, 0.0 ); | 
|     } | 
|     this.UtilizationRatio( value ); | 
|   *] | 
| } |