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