lazhen
2025-01-09 8afe90b633046db39042aada36b88193062f8cff
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
36
37
38
39
40
Quintiq file version 2.0
#parent: #root
Method SetPeriodTaskOperationUser (
  Boolean isoverridemanualplanning,
  LibOpt_Scope scope,
  Boolean doglobal
)
{
  Description: 'return period task has user quantity'
  TextBody:
  [*
    this.UserPeriodTask( relflush );
    
    ptasks := null( PeriodTaskOperations ); 
    if ( doglobal ) 
    {
      ptasks := selectset( this, FirstPeriod_MP.MacroPlan.Unit.Operation.PeriodTaskOperation, pt, true, pt.HasUserQuantity() ); 
    }
    else
    {
      ptasks := selectset( scope.GetOperationInOptimizerRun(), 
                           Elements.PeriodTaskOperation, 
                           pt,
                           not pt.UnitPeriod().IsPeriodFrozen() and scope.Contains(  pt.UnitPeriod().Period_MP().PeriodInOptimizerRun() ) );
    }
    traverse( ptasks, Elements, pt )
    {
      if( not this.IsSmartPlan()    // All PT within the active horizon are relevant for a regular optimizer run
          or scope.Contains(  pt.PeriodTaskOperationInOptimizerRun() ) )    // For a Smart plan run, the PT must be part of PTOperationForOptimization
      {
        // user quantity
        if( ( pt.HasUserQuantity() or pt.HasDependentDemandUserQuantity() ) and not isoverridemanualplanning )
        {
          this.UserPeriodTask( relinsert, pt ); 
        }
      }
    }
  *]
  InterfaceProperties { Accessibility: 'Module' }
}