Quintiq file version 2.0
|
#parent: #root
|
MethodOverride GetBaseCostPerQuantity () declarative remote as Real
|
{
|
TextBody:
|
[*
|
// For performance purpose, we derived this formula.
|
// NewSupply.BaseCostPerQuantity = PeriodTask.BaseCost / Sum of NewSupply.Quantity
|
// = PeriodTask.QuantityToProcess * PeriodTask.BaseCostPerQuantity / PeriodTask.Quantity ( Sum of NewSupply.Quantity = PeriodTask.Quantity )
|
// = PeriodTask.Process.QuantityToProcessFactor * PeriodTask.QuantityOut * PeriodTask.BaseCostPerQuantity / PeriodTask.Quantity
|
// = PeriodTask.Process.QuantityToProcessFactor * PeriodTask.BaseCostPerQuantity
|
|
value := 0.0;
|
periodtask := this.PeriodTask_MP();
|
|
quantitytoprocessfactor := periodtask.Process_MP().QuantityToProcessFactor();
|
|
traverse( periodtask, Process_MP.AsProcess_MP.UnitAccount, aa )
|
{
|
costperqty := 0.0;
|
|
if( aa.CostDriver() = Translations::MP_AccountAssignmentCostDriverVolume() )
|
{
|
costperqty := periodtask.Process_MP().GetBaseCostPerQuantityForVolume( aa, periodtask.UnitPeriod() ) * quantitytoprocessfactor;
|
}
|
else if( aa.CostDriver() = Translations::MP_AccountAssignmentCostDriverTime() )
|
{
|
costperqty := periodtask.Process_MP().GetBaseCostPerQuantityForHour( aa, periodtask.UnitPeriod(), periodtask.RequiredCapacity() ) * quantitytoprocessfactor;
|
}
|
|
value := value + costperqty;
|
}
|
|
return value;
|
*]
|
}
|