| Quintiq file version 2.0 | 
| #parent: #root | 
| Method GetIsInputQuantityMatchesOutputQuantity ( | 
|   output Strings feedback_o, | 
|   output Strings sanitycheckfeedbacks_o | 
| ) declarative remote as Boolean | 
| { | 
|   Description: 'Returns true if total demand matches total supply out period task supply' | 
|   TextBody: | 
|   [* | 
|     isvalid := true; | 
|     requiredinput := 0.0; | 
|     ttlinput := 0.0; | 
|      | 
|     //only check for manual planning | 
|     if( this.HasUserQuantity() or this.HasDependentDemandUserQuantity() ) | 
|     { | 
|       output := this.Quantity(); | 
|       ttlinput := sum( this, DependentDemand, dd, true, dd.Quantity() ); | 
|       if( ttlinput > 0 and output > 0 ) | 
|       {                                                  | 
|         isvalid := ttlinput / output = this.Operation().QuantityInFactorWithWIP(); | 
|         requiredinput := output * this.Operation().QuantityInFactor(); | 
|       } | 
|     } | 
|      | 
|     if( not isnull( feedback_o ) and not isvalid ) | 
|     { | 
|       gp := this.MacroPlan().GlobalParameters_MP(); | 
|       instance := PeriodTaskOperation::GetInstanceText( this ); | 
|        | 
|       message := Translations::MP_PeriodTaskOperation_ViolateIsInputQuantityMatchesOutputQuantity( ttlinput.Round( gp.NumberOfDecimals() ), requiredinput.Round( gp.NumberOfDecimals() ) ); | 
|       feedback_o.Add( SanityCheckMessage::GetFormattedMessage( instance, message ) ); | 
|       sanitycheckfeedbacks_o.Add( SanityCheckCategoryLevel::GetSanityCheckCategoryPlanningIssue() ); | 
|     } | 
|         | 
|     return isvalid | 
|   *] | 
| } |