| Quintiq file version 2.0 | 
| #parent: #root | 
| StaticMethod ValidateInput ( | 
|   output String feedback_o, | 
|   ScenarioManager owner, | 
|   Boolean hasparent, | 
|   Account parent, | 
|   String name, | 
|   Real budget, | 
|   String costdriver, | 
|   String timeunit, | 
|   Number lengthoftime, | 
|   Real cost, | 
|   Account account | 
| ) remote as Boolean | 
| { | 
|   Description: 'Validate input, called from designer' | 
|   TextBody: | 
|   [* | 
|     // Precondition used to validate the input for creating/editing an Account | 
|     feedback_o := ''; | 
|      | 
|     // If name is empty | 
|     if( name = '' ) | 
|     { | 
|       feedback_o := Translations::MP_Account_ValidateInput_IsNullName(); | 
|     } | 
|     // If name is not unique | 
|     else if( exists( owner, KPI, a, | 
|                      account <> a, | 
|                      a.Name() = name ) ) | 
|     { | 
|       feedback_o := Translations::MP_Account_ValidateInput_IsNotUnique( name ); | 
|     } | 
|     // If budget is infinite/not entered | 
|     else if( budget.IsMinInfinity() or budget.IsMaxInfinity() or budget.IsInfinite() or budget.IsNaN() ) | 
|     { | 
|       feedback_o := Translations::MP_Account_ValidateInput_InvalidBudget(); | 
|     } | 
|     // To check if this account is assigning to its own child. | 
|     else if( hasparent  | 
|              and not isnull( parent ) | 
|              and exists( parent.GetAllParent(), Elements, parentaccount, | 
|                          parentaccount = account ) ) | 
|     { | 
|       feedback_o := Translations::MP_Account_ValidateInput_InvalidParent(); | 
|     } | 
|     // If cost is infinite/not entered | 
|     else if( cost.IsMinInfinity() or cost.IsMaxInfinity() or cost.IsInfinite() or cost.IsNaN() ) | 
|     { | 
|       feedback_o := Translations::MP_Account_ValidateInput_InvalidCost(); | 
|     } | 
|     // If the cost driver matches the logic in AccountAssignment::GetTimeUnitVisibility. Currently, it's Time, Fixed, or Number of units | 
|     else if( AccountAssignment::GetTimeUnitVisibility( costdriver ) ) | 
|     { | 
|       // If time unit is not entered | 
|       if( timeunit.Length() = 0 ) | 
|       { | 
|         feedback_o := Translations::MP_Account_ValidateInput_IsNullTimeUnit(); | 
|       } | 
|       // If the entered time unit is less than or equals to zero | 
|       else if( lengthoftime <= 0 ) | 
|       { | 
|         feedback_o := Translations::MP_Account_ValidateInput_InvalidLengthOfTime(); | 
|       } | 
|     } | 
|     return feedback_o = ''; | 
|   *] | 
| } |