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' } 
 | 
} 
 |