| Quintiq file version 2.0 | 
| #parent: #root | 
| Method CapacityPlanningAlgorithmHandleFeasibleDelayedSalesDemand ( | 
|   BaseSalesDemandInPeriod salesdemandinperiod, | 
|   CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm program, | 
|   const RunContextForCapacityPlanning runcontext, | 
|   LibOpt_Scope scope, | 
|   Number optminpostponementperiod | 
| ) | 
| { | 
|   Description: 'Method for obtaining the delayed sales demand variable from the optimizer' | 
|   TextBody: | 
|   [* | 
|     pispip := salesdemandinperiod.AsPlanningBaseSalesDemandInPeriod(); | 
|      | 
|     if( salesdemandinperiod.CanBePostponed() and salesdemandinperiod.NeedsToBePlanned() ) | 
|     { | 
|       nextpispip := pispip.NextPlanningPISPIP(); | 
|        | 
|       for( i := 2; | 
|            i <= optminpostponementperiod | 
|            and not isnull( nextpispip ); | 
|            i++ | 
|          ) | 
|       { | 
|         nextpispip := nextpispip.NextPlanningPISPIP(); | 
|       } | 
|        | 
|       for( i := optminpostponementperiod; | 
|            i <= salesdemandinperiod.MaxPostponementPeriod() // within the maximum number of postponement periods | 
|            and not isnull( nextpispip );                     // the next pispip exists | 
|            i++ ) | 
|       { | 
|         if( scope.Contains( nextpispip.PISPIPInOptimizerRun() ) ) | 
|         { | 
|           var := salesdemandinperiod.GetDelayedSalesDemandQtyVariable( program, nextpispip.Period_MP() ); | 
|            | 
|           if( not isnull( var ) ) | 
|           { | 
|             postponedqty := this.GetOptimalValue( var ); | 
|              | 
|             if( postponedqty > 0.0 ) | 
|             {       | 
|               postponedsd := salesdemandinperiod.Postpone( postponedqty, false, nextpispip.astype( ProductInStockingPointInPeriodPlanningLeaf ) );  | 
|               postponedsd.UpdateOptimizerFulfillment( true, postponedqty ); | 
|             } | 
|           } | 
|         } | 
|         nextpispip := nextpispip.NextPlanningPISPIP(); | 
|       } | 
|     } | 
|   *] | 
|   InterfaceProperties { Accessibility: 'Module' } | 
| } |