| Quintiq file version 2.0 | 
| #parent: #root | 
| Method GetSuggestedQuantity ( | 
|   ProductInStockingPointInPeriod pispip | 
| ) as Real | 
| { | 
|   Description: 'Get sugested quantity for product in trip' | 
|   TextBody: | 
|   [* | 
|     // desmondt May-18-2015 (created) | 
|      | 
|     upt := this.DepartureUnitPeriod() | 
|      | 
|     // First, get what is the demanded quantity | 
|     suggestedqty := pispip.GetUnfulfilledQuantity(); | 
|      | 
|     if( isnull( upt ) ) | 
|     { | 
|       // Use UnitPeriodTransport instead of "this" because we need suggested quantity in one tracsaction quite often. | 
|       upt := maxselect( this, | 
|                         LaneLeg.Lane.Unit.UnitPeriod.astype( UnitPeriodTransportBase ), | 
|                         unitperiod, | 
|                         unitperiod.Start() <= this.Arrival() - this.LaneLeg().LeadTime(), | 
|                         unitperiod.Period_MP().SequenceNr() ); | 
|     } | 
|      | 
|     //upt can be null when trip departs before the start of planning horizon  | 
|     if( not isnull( upt ) and suggestedqty > 0  ) | 
|     { | 
|       if( upt.MinimumPerLot() > 0 ) // If have minimum per lot | 
|       { | 
|         /* | 
|         The lot devision remainder, eg, lot size 10, demand quantity 512 | 
|         The remainder is 2, which means we have 51 lot with 10 ton/lot. | 
|         The remainder quantity(ton) will be use to check with minimum per lot | 
|         */ | 
|      | 
|         remainedqty := GlobalParameters_MP::GetRemainder( suggestedqty, upt.LotSize() ); // eg. 51.123, number = 51, real = 51.123, real - number = 0.123 (remainder) | 
|      | 
|         // Then check if lot remainder is greater than min per lot, if < min per lot, increase it to fulfill conform minimum per lot. | 
|         if( remainedqty < upt.MinimumPerLot() ) | 
|         { | 
|           suggestedqty := suggestedqty - remainedqty + upt.MinimumPerLot(); | 
|         } | 
|       } | 
|     } | 
|      | 
|     return suggestedqty; | 
|   *] | 
| } |