admin
2025-01-22 7e31442f0e9b07764e9c6a9680d3d4aeba5fe1de
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
Quintiq file version 2.0
#parent: #root
Method GetQuantityForOptimizer (
  const LibOpt_Scope scope
) const as Real
{
  TextBody:
  [*
    value := this.Quantity(); 
    assert( not this.IsPostponed() or this.IsManuallyPostponed(), 'we should only be calling this in the optimizer on original sales demand in period, not postponed one' ); 
     
    if ( this.CanBePostponed() and not this.IsManuallyPostponed() ) // add quantity that has been postponed within the scope. This is all the sd that can be replanned. 
    {
      value := value + sum(  this, 
                             PostponedSalesDemand, 
                             postponedsd,
                             not postponedsd.IsManuallyPostponed() // exclude manually postponed quantity as the optimizer does not change it
                             and scope.Contains( postponedsd.ProductInStockingPointInPeriodPlanning().PISPIPInOptimizerRun() ),
                             postponedsd.QuantityToPlan() );  
    }
    
    return value;
  *]
  InterfaceProperties { Accessibility: 'Module' }
}