lazhen
2025-01-09 8afe90b633046db39042aada36b88193062f8cff
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
26
27
28
29
30
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 );
  *]
}