Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method DoSanityCheckGroupQuantityInInputGroup ( 
 | 
  output Strings feedback_o, 
 | 
  output Strings sanitycheckfeedback_o 
 | 
) declarative remote as Boolean 
 | 
{ 
 | 
  Description: "Only applicable to period task operation's dependent demand of an input group" 
 | 
  TextBody: 
 | 
  [* 
 | 
    isvalid := true; 
 | 
    minqty := 0.0; 
 | 
    maxqty := 0.0; 
 | 
     
 | 
    if( not isnull( this.ProcessInput() ) and this.ProcessInput().istype( OperationInput ) ) 
 | 
    { 
 | 
      operationinput := this.ProcessInput().astype( OperationInput ); 
 | 
      if( operationinput.IsElementOfInputGroup() ) 
 | 
      { 
 | 
        ptqty := this.PeriodTask_MP().Quantity(); 
 | 
        minqty := operationinput.MinQuantityFactor() * ptqty; 
 | 
        maxqty := operationinput.MaxQuantityFactor() * ptqty; 
 | 
        isvalid := minqty <= this.Quantity() 
 | 
                   and this.Quantity() <= maxqty; 
 | 
      } 
 | 
    } 
 | 
     
 | 
    if( not isnull( feedback_o ) and not isvalid ) 
 | 
    { 
 | 
      gp := this.PeriodTask_MP().MacroPlan().GlobalParameters_MP(); 
 | 
      instance := Translations::MP_Demand_Instance( this, this.GetPISPName(), this.GetPISPIPStart() ); 
 | 
      message := Translations::MP_DependentDemand_ViolatePlannedQuantityInInputGroup( this.Quantity(), minqty, maxqty, gp.NumberOfDecimals() ); 
 | 
      feedback_o.Add( SanityCheckMessage::GetFormattedMessage( instance, message ) ); 
 | 
      sanitycheckfeedback_o.Add( SanityCheckCategoryLevel::GetSanityCheckCategoryPlanningIssue() ); 
 | 
    } 
 | 
     
 | 
    return isvalid 
 | 
  *] 
 | 
} 
 |