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; 
 | 
  *] 
 | 
} 
 |