Quintiq file version 2.0
|
#parent: #root
|
Method Update (
|
Real quantity,
|
Boolean hasuser,
|
LibOpt_Scope scope
|
)
|
{
|
Description: 'Update period task quantity and set all corresponding dd to manual'
|
TextBody:
|
[*
|
// This method is used for user actions on UI, not intended to be used by optimizer to update the value
|
|
this.HasUserQuantity( hasuser );
|
|
if( hasuser )
|
{
|
this.UserQuantity( quantity );
|
|
traverse( this, DependentDemand, dd )
|
{
|
qty := 0.0;
|
|
//dd has been set by user, update dd qty base on the pt changes ratio
|
//e.g. old pt qty 20 -> 200, factor = 10.
|
//we increase dd qty by factor of 10
|
if( dd.HasUserQuantity() )
|
{
|
factor := guard( quantity / this.Quantity(), 1.0 );
|
qty := factor * dd.Quantity();
|
}
|
//if dd has been set by optimizer derive the qty based on period quantity to be planned on period task.
|
//similar to DD.CalcQuantity when there is no manaul plan
|
else
|
{
|
qty := PeriodTaskOperation::GetDependentDemandQuantity( quantity, dd.ProcessInput(), dd.RelativeDuration() );
|
}
|
dd.HasUserQuantity( true );
|
dd.UserQuantity( qty );
|
}
|
}
|
else
|
{
|
this.OptimizerQuantity( quantity );
|
}
|
|
this.ResetDependentDemandInputGroupOptimizerFulfillment( scope );
|
|
|
this.SetTimeStamp();
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|