Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method AutoAdjustPeriodTaskInTransitionQuantities 
 | 
{ 
 | 
  Description: 'Adjust period task in transition quantity base on ratio in unit period time' 
 | 
  TextBody: 
 | 
  [* 
 | 
    traverse( this, TransitionPeriod_MP, transitionperiod, 
 | 
              transitionperiod.UnitPeriod().IsPlanning()  
 | 
              and not transitionperiod.UnitPeriod().IsPeriodFrozen() ) 
 | 
    { 
 | 
      if( transitionperiod.UnitPeriod().istype( UnitPeriodTime ) ) 
 | 
      { 
 | 
        unitperiodcapacity := transitionperiod.UnitPeriod().astype( UnitPeriodTime ).TotalAvailableCapacity(); 
 | 
        transitionperiodcapacity := transitionperiod.AvailableCapacityRatio() * unitperiodcapacity; 
 | 
     
 | 
        periodtasks := selectset( transitionperiod, PeriodTaskInTransition, ptit, true ); 
 | 
     
 | 
        if( periodtasks.Size() > 0 ) 
 | 
        { 
 | 
          // TMP (todo oceaned) - For now capacity will be equally split among operations on the period 
 | 
          pttransitioncapacity := transitionperiodcapacity / periodtasks.Size(); 
 | 
          traverse( periodtasks, Elements, periodtask ) 
 | 
          { 
 | 
            operation := periodtask.PeriodTaskOperation().Operation(); 
 | 
            requiredcapacity := operation.Throughput(); 
 | 
            quantity := pttransitioncapacity.HoursAsReal() * requiredcapacity; 
 | 
     
 | 
            periodtask.Update( quantity, false, true ); 
 | 
          } 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  *] 
 | 
} 
 |