Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Function CalcMaxDurationCombi 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    maxdurationbasedonminduration := Duration::MinDuration(); 
 | 
    maxdurationbasedonminquantity := Duration::MinDuration(); 
 | 
    value := Duration::Zero(); 
 | 
    if( this.HasMaxDuration() ) 
 | 
    { 
 | 
      maxdurationbasedonminduration := this.MaxDuration() 
 | 
    } 
 | 
     
 | 
    if( this.HasMaxQuantity() ) 
 | 
    { 
 | 
      //we estimate min duration based on min quantity and maximum throughout (See OSD, Known Limitations section) 
 | 
      maxqty := this.MaxQuantity() 
 | 
      operations := this.GetOperationsInOptCampaignElementType() 
 | 
      minthroughput := min( operations, Elements, op, op.Throughput() ) 
 | 
      maxdurationbasedonminquantity := guard( Duration::Hours( maxqty / minthroughput ), Duration::MaxDuration() ) 
 | 
    } 
 | 
    if( this.HasMaxDuration() or this.HasMaxQuantity() ) 
 | 
    { 
 | 
      value := maxvalue( maxdurationbasedonminduration, maxdurationbasedonminquantity ); 
 | 
    } 
 | 
     
 | 
    this.MaxDurationCombi( value ); 
 | 
  *] 
 | 
} 
 |