| Quintiq file version 2.0 | 
| #parent: #root | 
| MethodOverride AddTermsForDelayedSalesDemandsForward ( | 
|   CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm program, | 
|   MPConstraint constr, | 
|   Real coefficient, | 
|   const LibOpt_Scope scope, | 
|   const CapacityPlanningSuboptimizer subopt, | 
|   Number optminpostponementperiod | 
| ) const | 
| { | 
|   TextBody: | 
|   [* | 
|     scalefactor_delayedSDQty_constr := subopt.ScaleConstraintTerm( typeof( MPDelayedSalesDemandQtyVariable ), typeofexpression( constr ) ); | 
|     pispip := this.AsPlanningBaseSalesDemandInPeriod(); | 
|      | 
|     if( this.CanBePostponed() and this.NeedsToBePlanned() ) | 
|     { | 
|       nextpispip := pispip.NextPlanningPISPIP(); | 
|        | 
|       for( i := 2; | 
|            i <= optminpostponementperiod | 
|            and not isnull( nextpispip ); | 
|            i++ | 
|          ) | 
|       { | 
|         nextpispip := nextpispip.NextPlanningPISPIP(); | 
|       } | 
|        | 
|       for( i := optminpostponementperiod; | 
|            i <= this.MaxPostponementPeriod()      // within the maximum number of postponement periods | 
|            and not isnull( nextpispip );           // the next pispip exists | 
|            i++ ) | 
|       { | 
|         if( scope.Contains( nextpispip.PISPIPInOptimizerRun() ) ) | 
|         { | 
|           var := program.DelayedSalesDemandQtyVariables().Get( this, nextpispip.Period_MP() );      | 
|           constr.NewTerm( coefficient * scalefactor_delayedSDQty_constr , var ); | 
|         } | 
|         nextpispip := nextpispip.NextPlanningPISPIP(); | 
|       } | 
|     } | 
|   *] | 
| } |