| Quintiq file version 2.0 | 
| #parent: #root | 
| Function CalcSecondaryQuantityToProcess | 
| { | 
|   TextBody: | 
|   [* | 
|     value := 0.0; | 
|      | 
|     if( this.IsPlanning() or this.IsBase() ) | 
|     {  | 
|       planningup := ifexpr( this.IsPlanning(),  | 
|                             this,                // Case 1: planning UnitPeriod: aggregate values from associated period tasks  | 
|                             this.PlanningUP().astype( UnitPeriodTransportQuantity ) ); // Case 2: base, non planning UnitPeriod: disaggregate value from planning UnitPeriod | 
|                              | 
|       //planning is only on 1 level therefore only one of these will return value | 
|       planningvalue := guard(  sum( planningup, PeriodTask_MP.astype( PeriodTaskLaneLeg ), task, true, task.SecondaryQuantityToProcess() ) | 
|                              + sum( planningup, ChildOfUnitDimension.astype( UnitPeriodTransportQuantity ), up, true, up.SecondaryQuantityToProcessInParentUOM() ) | 
|                             ,0.0 ); | 
|      | 
|       value := this.PlanningSystemRatio() * planningvalue;                           | 
|     } | 
|     else | 
|     { | 
|        // Case 3: Aggregated UnitPeriod: aggregate value from base | 
|        value := sum( this.GetChildrenOfPeriodDimension(), Elements.astype( UnitPeriodTransportQuantity ), upc, upc.SecondaryQuantityToProcess() ); | 
|     } | 
|      | 
|     this.SecondaryQuantityToProcess( value ); | 
|   *] | 
| } |