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