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
Quintiq file version 2.0
#parent: #root
Method GetBlendingViolation (
  Real relativefiltering
) const declarative remote as Real
{
  TextBody:
  [*
    outputrecipe := select( this, NewSupply.ProductInStockingPointInPeriodPlanningLeaf.RecipeWithEffectiveDate.Recipe, recipe, true ); // get recipe of period task output 
    
    blendingmaxviolation := 0.0; 
    blendingminviolation := 0.0; 
    traverse( outputrecipe, BaseRecipeIngredient, recipeingredient )
    {
      blendedvalue := this.GetBlendedValue( recipeingredient );
      overmaxrel := maxvalue(  0.0, blendedvalue - recipeingredient.Maximum() ); 
      belowminrel := maxvalue(  0.0, recipeingredient.Minimum() - blendedvalue );
       
      increasemax :=  ifexpr(  overmaxrel > relativefiltering, overmaxrel * this.Quantity(), 0.0 );
      increasemin := ifexpr(  belowminrel > relativefiltering, belowminrel * this.Quantity(), 0.0 ); 
      blendingmaxviolation := maxvalue(  blendingmaxviolation , increasemax ); 
      blendingminviolation := maxvalue(  blendingminviolation,  increasemin );
    }
    return blendingmaxviolation + blendingminviolation;
  *]
}