| Quintiq file version 2.0 | 
| #parent: #root | 
| Method GetHasValidQuantity ( | 
|   output Strings feedback_o, | 
|   output Strings sanitycheckfeedback_o | 
| ) declarative remote as Boolean | 
| { | 
|   Description: 'Returns true if the operation link has valid quantity.' | 
|   TextBody: | 
|   [* | 
|     message := ''; | 
|     sanitychecktype := ''; | 
|      | 
|     // Check if OperationLink has valid quantities | 
|     hasvalidsourceqty := this.SourceQuantity() > 0; | 
|     hasvaliddestqty := this.DestQuantity() > 0; | 
|     hasvaliddestminqty := this.DestMinQuantity() >= 0; | 
|     hasvaliddestmaxqty := this.DestMaxQuantity() > 0; | 
|     hasvaliddestrange := this.DestMaxQuantity() >= this.DestMinQuantity(); | 
|     hasvaliddestgroupqty := this.DestGroupQuantity() > 0; | 
|      | 
|     isvalid := hasvalidsourceqty | 
|                and hasvaliddestqty | 
|                and hasvaliddestminqty | 
|                and hasvaliddestmaxqty | 
|                and hasvaliddestrange | 
|                and hasvaliddestgroupqty; | 
|      | 
|     // Add feedbacks if the OperationLink has invalid qunatities | 
|     if( not isnull( feedback_o ) and not isvalid ) | 
|     { | 
|       // Add feedback if OperationLink has invalid source quantity | 
|       if( not hasvalidsourceqty ) | 
|       { | 
|         message := Translations::MP_OperationLink_GetHasValidQuantity_InvalidSourceQuantity( this.SourceQuantity() ); | 
|         sanitychecktype :=  SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue(); | 
|       } | 
|       // Add feedback if OperationLink has invalid destination quantity | 
|       else if( not hasvaliddestqty ) | 
|       { | 
|         message := Translations::MP_OperationLink_GetHasValidQuantity_InvalidDestinationQuantity( this.DestQuantity() ); | 
|         sanitychecktype :=  SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue(); | 
|       } | 
|       // Add feedback if OperationLink has invalid destination min quantity | 
|       else if( not hasvaliddestminqty ) | 
|       { | 
|         message := Translations::MP_OperationLink_GetHasValidQuantity_InvalidDestinationMinQuantity( this.DestMinQuantity() ); | 
|         sanitychecktype :=  SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue(); | 
|       } | 
|       // Add feedback if OperationLink has invalid destination max quantity | 
|       else if( not hasvaliddestmaxqty ) | 
|       { | 
|         message := Translations::MP_OperationLink_GetHasValidQuantity_InvalidDestinationMaxQuantity( this.DestMaxQuantity() ); | 
|         sanitychecktype :=  SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue(); | 
|       } | 
|       // Add feedback if OperationLink has invalid range for destination min and max quantity combination | 
|       else if( not hasvaliddestrange ) | 
|       { | 
|         message := Translations::MP_OperationLink_GetHasValidQuantity_InvalidRange( this.DestMaxQuantity(), | 
|                                                                                     this.DestMinQuantity() ); | 
|         sanitychecktype :=  SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue(); | 
|       } | 
|       // Add feedback if OperationLink has invalid destination group quantity | 
|       else if( not hasvaliddestgroupqty ) | 
|       { | 
|         message := Translations::MP_OperationLink_GetHasValidQuantity_InvalidDestinationGroupQuantity( this.DestGroupQuantity() ); | 
|         sanitychecktype :=  SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue(); | 
|       } | 
|      | 
|       // Add feedback text | 
|       instance := OperationLink::GetInstanceText( this ); | 
|       feedback_o.Add( SanityCheckMessage::GetFormattedMessage( instance, message ) ); | 
|       sanitycheckfeedback_o.Add( sanitychecktype ); | 
|     } | 
|      | 
|     return isvalid; | 
|   *] | 
| } |