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; 
 | 
  *] 
 | 
} 
 |