Runtime/Behavior Changes

The following functions were introduced in OfmlPData to support the transition to the new part pricing system. Find more documentation on the new pricing system in the compile-time section for cm.core.part.Part and runtime section for cm.abstract.dataSymbol.DsPData.

Added: public double basePrice() {}
Added: public void specOption(DsSpecOption[] sOptions, Space space, SFeature f,
								Option o, DsPDataOption pDataOption, int level,
								bool choosableInCalculation) {}
Added: extend public void setOptionPrice(SpecOption option) {}
Added: public DsPart createPart(Snapper snapper, PartsEnv env, double basePrice, Double optionPriceSum) {}

Added: public double basePrice() {}

An override of basePrice has been added to OFMLPData to support the migration path to the new pricing model (≥16.5).

Old → New behavior

Old:

  • Delegated to superclass unless overridden.

New:

  • If useNewPartPricing() → returns only B-level row value from the pricelist.
  • If not → falls back to legacy super(..) implementation.

Impact

  • Returns base price in row (level "B") in the pricelist table.
  • Isolated logic (was previously inside price() method).

Added: public void specOption(DsSpecOption[] sOptions, Space space, SFeature f, Option o, DsPDataOption pDataOption, int level, bool choosableInCalculation) {}

The specOption(..) function has been overridden in OFMLPData to support pricing on an OFMLParts SpecOptions.

Old → New behavior

Old:

  • Delegated to superclass unless overridden.
  • specOption() never adjusted option pricing directly

New:

  • If new pricing is enabled → last option in the list gets priced via setOptionPrice()
  • If old pricing → bypasses new behavior (keeps legacy flow).

Impact

  • Ensures new options get priced correctly when added
  • Supports migration to the new pricing model (≥16.5).

Added: extend public void setOptionPrice(SpecOption option) {}

Added as a helper to the overridden specOption(..) function for setting SpecOption price.

Behavior

  • Looks up option rows (level "X") in the pricelist table.
  • Sets option.price directly.

Added: public DsPart createPart(Snapper snapper, PartsEnv env, double basePrice, Double optionPriceSum) {}

The createPart method was split into two overloads to support the new pricing framework. The new overload takes basePrice and optionPriceSum, while the old single-parameter version (using list price) has been marked for deprecation.

Old:

  • Single method signature:
    • createPart(Snapper snapper, PartsEnv env, double price)
  • Relied on a unified “list price” model.
  • Retained for backward compatibility.
    • Still used when useNewPartPricing is false

New:

  • New primary method:
    • createPart(Snapper snapper, PartsEnv env, double basePrice, Double optionPriceSum)
  • Constructs parts with explicit basePrice and optional optionPriceSum
  • Used when useNewPartPricing is true

Impact

  • Developers should migrate to the new overload using basePrice and optionPriceSum
  • Better alignment with the new pricing system, which separates base price and option prices.

Added: public DsPart createPart(DsPDataProxyEnv dsEnv, PartsEnv env, double basePrice, Double optionPriceSum) {}

The createPart method was split into two overloads to support the new pricing framework. The new overload takes basePrice and optionPriceSum, while the old single-parameter version (using list price) has been marked for deprecation.

Old → New behavior

Old:

  • Single method signature:
    • createPart(DsPDataProxyEnv dsEnv, PartsEnv env, double price)
  • Relied on a unified “list price” model.
  • Retained for backward compatibility.
  • Still used when useNewPartPricing is false

New:

  • New primary method:
    • createPart(DsPDataProxyEnv dsEnv, PartsEnv env, double basePrice, Double optionPriceSum)
  • Constructs Parts under the new pricing model constructor
  • Used when useNewPartPricing is true

Impact

  • Proxy providers may implement this method to customize createPart behavior in the new pricing system.
  • Better alignment with the new pricing system, which separates base price and option prices.