haorenhui
2023-10-30 6d6cc10d9e8e242661da7fd655dec155a09d676c
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 CalcMinDurationCombi
{
  TextBody:
  [*
    mindurationbasedonminduration := Duration::MaxDuration();
    mindurationbasedonminquantity := Duration::MaxDuration();
    value := Duration::Zero();
    if( this.HasMinDuration() )
    {
      mindurationbasedonminduration := this.MinDuration()
    }
    
    if( this.HasMinQuantity() )
    {
      //we estimate min duration based on min quantity and maximum throughout (See OSD, Known Limitations section)
      minqty := this.MinQuantity()
      operations := this.GetOperationsInOptCampaignElementType()
      maxthroughput := max( operations, Elements, op, op.Throughput() )
      mindurationbasedonminquantity := guard( Duration::Hours( minqty / maxthroughput ), Duration::MaxDuration() )
    }
    if( this.HasMinDuration() or this.HasMinQuantity() )
    {
      value := minvalue( mindurationbasedonminduration, mindurationbasedonminquantity );
    }
    
    this.MinDurationCombi( value );
  *]
}