Quintiq file version 2.0
|
#parent: #root
|
FunctionOverride CalcQuantity
|
{
|
TextBody:
|
[*
|
value := 0.0;
|
|
if( this.IsDependentDemandOfTrip() )
|
{
|
value := this.ProductInTrip().QuantityInProcessUOM()
|
* this.ProcessInput().Factor()
|
* this.ProcessInput().PISPConversionFactor();
|
|
}
|
else //Period task operation
|
{
|
pto := this.PeriodTask_MP().astype( PeriodTaskOperation );
|
|
//dd manual plan, use user qty
|
if( pto.HasDependentDemandUserQuantity() )
|
{
|
value := this.UserQuantity();
|
}
|
else if( guard( this.DependentDemandInputGroup().IsLockedByUser() , false ) )
|
{
|
value := this.GetRelativeDDGroupOptimizerFulfilledQuantity();
|
}
|
else if( this.ProcessInput().IsElementOfInputGroup() )
|
{
|
// Optimizer fulfilled quantity of DD of group in a pispip is reset if user change the new supply of the pispip.
|
// If this is the case, all the DD belongs to the group will be reset to 0 and the groupfulfilledqty will be = 0 and we have to take default factor instead.
|
groupfulfilledqty := sum( this, DependentDemandInputGroup.PeriodTaskOperation.DependentDemandInputGroup, group,
|
group.OperationInput().OperationInputGroup() = this.DependentDemandInputGroup().OperationInput().OperationInputGroup(),
|
group.OptimizerFulfilledQuantity() );
|
|
if( groupfulfilledqty > 0 )
|
{
|
value := this.GetRelativeDDGroupOptimizerFulfilledQuantity();
|
}
|
}
|
else //dd no manual plan, derive qty
|
{
|
relativeduration := this.RelativeDuration();
|
value := PeriodTaskOperation::GetDependentDemandQuantity( this.PeriodTask_MP().Quantity(), this.ProcessInput(), relativeduration );
|
}
|
}
|
this.Quantity( value );
|
*]
|
}
|