chenqinghong
2024-05-07 3ec06a830367465068963156dcc1d8e522571c13
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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 );
          }
        }
      }
    }
  *]
}