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; 
 | 
  *] 
 | 
} 
 |