Runtime/Behavior Changes

Changed: final private DsPart getPartsInternal(DsPDataProxyEnv dsEnv, PartsEnv env) {}

The internal getPartsInternal method now conditionally supports the new part pricing system. It can construct parts using either the legacy list-price–based approach or the new base-price–plus-options approach depending on useNewPartPricing().

Old → New behavior

Old:

  • Always retrieved a list price via:
    • double price = dsEnv.data.price(options);
  • SpecOption[] options were always passed into price() to calculate the full part cost.
  • Single pricing flow, no differentiation between base vs option pricing.

New:

  • Determines pricing strategy based on dsEnv.data.useNewPartPricing():
    • If true (new system):
      • Uses basePrice directly.
      • Passes null for optionPriceSum when calling createPart().
    • If false (legacy system):
      • Still calculates price from price(options) as before.

Impact

  • Introduces dual pricing support inside getPartsInternal()
  • Ensures compatibility during migration:
    • Legacy parts behave the same with no changes required.
    • New pricing model (≥16.5) leverages basePrice + option pricing separation.
  • Developers migrating to the new model should update workflows to split final list price into base price and option price sum

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.