yanweiyuan3
2023-08-09 588bc7829387dfc761cc25f06f77d4c81818bd10
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
Quintiq file version 2.0
#parent: #root
Method GetPISPIPInputsToUnitPeriodBottleNeck (
  LibOpt_Scope out_scope,
  RunContextForCapacityPlanning runcontext,
  Number maxperiodtasks
) as owning ProductInStockingPointInPeriodPlanningLeafs
{
  TextBody:
  [*
    detectunitperiodbottleneck := this.MustDetectUnitPeriodCapacityBottleneck( runcontext ); 
    pispips_inputs_to_bottleneck := construct( ProductInStockingPointInPeriodPlanningLeafs ); 
    if ( detectunitperiodbottleneck ) 
    {
      // collect bottleneck points unit capacity 
      unitperiodsbottleneck := selectset( out_scope.GetPeriodTaskOperationInOptimizerRun(), Elements.UnitPeriod, up, true, up.HasBottleNeckUtilization() );  
      ptos_nonzero := selectsortedset(  unitperiodsbottleneck, Elements.PeriodTaskOperation, pto, not pto.Quantity() = 0.0, Real::Random() );
      if ( maxperiodtasks.IsFinite() ) 
      {
        ptos_nonzero := ptos_nonzero.SelectFirst( maxperiodtasks );  
      }
      pispips_inputs_to_bottleneck := selectset(  ptos_nonzero, Elements.DependentDemand.ProductInStockingPointInPeriodPlanningLeaf, p, true, true ); 
    }
    return &pispips_inputs_to_bottleneck;
  *]
  InterfaceProperties { Accessibility: 'Module' }
}