Specifying whether to merge a cost as basis scalable

Each cost data subclass indicates whether to merge the CostData object as basis scalable.

To specify how to merge the costs, each cost data can implement a property getter function for the property MergeAsBasisScalable. In most cases, this property returns always true or always false for any class, but you can add custom logic if necessary to return true or false accordingly.

The rating engine behaves differently based on the value of the cost data property MergeAsBasisScalable.

  • If false, the rating engine merges this CostData object using the standard method mergeIfCostEqual.
  • If true, the rating engine instead merges this CostData object using the method mergeAsBasisScalableIfCostEqual. This method extends this cost data object to cover the period spanned by the other cost. Additionally, it adds together the Basis, ActualTermAmount, and ActualAmount properties if all the following things are true.
    • The passed-in CostData is effective as of the expiration date of this current cost.
    • The other cost is equal to this current cost as determined by the isBasisScalableCostEqual method.

The rating engine also uses the value of MergeAsBasisScalable to treat costs differently when creating CostData objects based on a set of existing costs and then prorating them.

The root class CostData always returns false. Cost data classes can override it as needed.

override property get MergeAsBasisScalable() : boolean {
  return true
}

An example of when you might use more complex logic in this property get function is general liability exposure costs. The built-in cost data subclasses returns true for costs with class codes that have an auditable basis, and false for any other class codes.