Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method CalculateDependentDemandSystemFulfilledQuantity ( 
 | 
  output Real totalremaining 
 | 
) declarative 
 | 
{ 
 | 
  Description: 'Greedy fufill the dependent demands' 
 | 
  TextBody: 
 | 
  [* 
 | 
    dependentdemands := selectsortedset( this, DependentDemand, d, 
 | 
                                         true, 
 | 
                                         d.Quantity() ); 
 | 
     
 | 
    hasshelflifeormaturation :=( this.ProductInStockingPoint_MP().IsOptShelfLife() or this.ProductInStockingPoint_MP().IsOptMaturation() ); 
 | 
     
 | 
    if( hasshelflifeormaturation ) 
 | 
    { 
 | 
      dependentdemands := ProductInStockingPointInPeriod::GetSortedDependentDemands( this ); 
 | 
    } 
 | 
     
 | 
    traverse( dependentdemands, Elements, dd ) 
 | 
    { 
 | 
      unallocatedqty := dd.Quantity() - dd.OptimizerFulfilledQuantity(); 
 | 
      unallocated := minvalue( totalremaining, unallocatedqty ); 
 | 
       
 | 
      // If the product has shelf-life or maturation, use the ShelfLifeFulfilledQuantity instead 
 | 
      if( hasshelflifeormaturation ) 
 | 
      { 
 | 
        unallocated := maxvalue( dd.ShelfLifeFulfilledQuantity() - dd.OptimizerFulfilledQuantity(), 0.0 ); 
 | 
      } 
 | 
       
 | 
      dd.SystemFulfilledQuantity( unallocated ); 
 | 
      totalremaining := totalremaining - unallocated; 
 | 
    } 
 | 
  *] 
 | 
} 
 |