Quintiq file version 2.0
|
#parent: #root
|
Method PlanMinimum
|
{
|
Description: 'Plan minimum quantity required by this transition'
|
TextBody:
|
[*
|
this.SynchronizePeriodTaskInTransitions();
|
Transaction::Transaction().Propagate( relation( TransitionPeriod_MP, PeriodTaskInTransition ) );
|
planningperiods := selectsortedset( this, PlanningTransitionPeriod, period, true, period.Start() );
|
minquantity := 0.0;
|
|
if( not this.TransitionType_MP().IsDuration() )
|
{
|
minquantity := this.TransitionType_MP().DefaultMinQuantity();
|
}
|
else
|
{
|
minquantity := this.TransitionType_MP().MinOperationInTransitionType().Throughput() * this.Duration().DaysAsReal() * 24 ;
|
}
|
|
remainingqty := maxvalue( minquantity - this.FulfilledQuantity(), 0.0 );
|
|
traverse( planningperiods, Elements.PeriodTaskInTransition, ptc )
|
{
|
periodtask := ptc.PeriodTaskOperation();
|
transitionperiod := ptc.TransitionPeriod_MP();
|
|
qty := transitionperiod.Duration().DaysAsReal() * 24 * this.TransitionType_MP().MinOperationInTransitionType().Throughput();
|
ptcremaining := abs( ptc.Quantity() - qty )
|
|
ptc.Quantity( ptcremaining + ptc.Quantity() );
|
// if only use UserQuantity when HasUserQuantity is true, when reset only HasUserQuantity is set to false but UserQuantity is not reset
|
periodtask.Update( ifexpr( periodtask.HasUserQuantity(), periodtask.UserQuantity(), periodtask.Quantity() ) + ptcremaining, true );
|
remainingqty := remainingqty - ptcremaining;
|
}
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|