Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod GetMinimumManufacturedDate ( 
 | 
  Product_MP product, 
 | 
  MacroPlan macroplan, 
 | 
  Date date 
 | 
) declarative remote as Date 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // This is the same logic with InventorySupply.CalcProductInStockingPointInPeriodPlanningLeaf relation 
 | 
    period := select( macroplan, Period_MP, p, 
 | 
                      p.IsPlanning(), 
 | 
                      ifexpr( p.IsInHour(), 
 | 
                              p.IsFirstPeriodOfDay() // If period is in hours, choose the one that is the first period of the same day 
 | 
                              and p.StartDate() = date, 
 | 
                              p.StartDate() <= date 
 | 
                              and p.EndDate() > date ) ); 
 | 
         
 | 
    value := Date::MinDate(); 
 | 
    // Check if product has shelf-life 
 | 
    if( not isnull( period ) 
 | 
        and product.HasShelfLifeOrMaturation() ) 
 | 
    { 
 | 
      periodstartdate := period.StartDate(); 
 | 
     
 | 
      shelflife := ifexpr( product.HasShelfLife(), round( product.ShelfLife() ), 0 ); 
 | 
      value := periodstartdate - shelflife 
 | 
       
 | 
      if( not macroplan.GlobalParameters_MP().IsUsableIfExpiredWithinPeriod()  
 | 
          and product.HasShelfLife() ) 
 | 
      { 
 | 
        value := value + 1; 
 | 
      } 
 | 
     
 | 
    } 
 | 
     
 | 
    return value; 
 | 
  *] 
 | 
} 
 |