| Quintiq file version 2.0 | 
| #parent: #root | 
| Method RoundToNextMultiple ( | 
|   Real quantity | 
| ) declarative remote as Real | 
| { | 
|   Description: "Round the entered supply quantity to next valid multiple of the operation's lot size." | 
|   TextBody: | 
|   [* | 
|     // soh yee Jun-17-2013 (created) | 
|      | 
|     // Given period task.quantity -> convert to a value according to quantity to process -> calculate next multiple -> convert back to period task.quantity | 
|     qtpfactor := this.Process_MP().QuantityToProcessFactor(); | 
|     minquantity := quantity * qtpfactor; | 
|      | 
|     // Only round to next multiple if quantity > 0. | 
|     if( minquantity > 0 ) | 
|     { | 
|       lotsize := this.Process_MP().LotSize(); | 
|       maximumquantity := this.Process_MP().MaximumQuantity(); | 
|      | 
|       minquantity := maxvalue( minquantity, this.Process_MP().MinimumQuantity() ); | 
|      | 
|       // lot size | 
|       if( this.Process_MP().HasLotSize() ) | 
|       { | 
|         minquantity := ceil( minquantity / lotsize ) * lotsize; | 
|         maximumquantity := floor( maximumquantity / lotsize ) * lotsize; | 
|       } | 
|       if( this.Process_MP().HasMaximumQuantity() ) | 
|       { | 
|         minquantity := minvalue( minquantity, maximumquantity ); | 
|       } | 
|     } | 
|      | 
|     minquantity := guard( minquantity / qtpfactor, quantity ); | 
|      | 
|     return minquantity; | 
|   *] | 
| } |