| 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 ); | 
|   *] | 
| } |