Overview

OFDA XML 04.02.00 Export Compatibility

OFDA XML exports now preserve part attribute notes and descriptions in separate elements that can be imported correctly by Spec. Several line-item, option, and specification elements have also been reordered for schema compatibility.

The export format is labeled 04.02.00, but the root Envelope continues to contain SchemaVersion="04.00.00". This is intentional for the 04.02.00 schema and is not the version displayed in the Calculations export menu.

Runtime/Behavior Changes

Generic Codes and Base Part XML Export

OfdaXMLOrderLineProxy.xmlSpecItemDataFromPart() now calls Part.xmlMeasurements() and Part.xmlUserDefined() by default. OfdaXMLOrderLineProdProxy writes product options and then delegates to this base behavior. Custom proxies that override xmlSpecItemDataFromPart() without calling super() will not receive the new common measurement and generic-code output.

DiscountCategory is populated from Part.genericCode(). The UserDefined generic-code value uses the same interface and falls back to the TAG2 label when no generic code is available. Integrations should account for these newly populated elements.

OFDA XML 04.02.00 Export Compatibility

OfdaXMLOrderLineProxy.xmlGeneratePartAttributes() now writes one Comment per part attribute. The previous combined value:

<Comment>
  <Type>LineNote</Type>
  <Value>Note : Description</Value>
</Comment>

is replaced by separate note and description values:

<Comment>
  <Type>OtherType</Type>
  <OtherType>Note</OtherType>
  <Description>Description</Description>
</Comment>

Code that consumes, validates, compares, or transforms exported OFDA XML must account for the new attribute structure. In particular, consumers should no longer expect the note and description to be combined in a Value element.

Element ordering has also changed:

  • Line-item pricing is written before comments and part attributes.
  • Part attributes are written before individual tags and specification-item data.
  • Product options are written before measurements.
  • OmitOnOrder is written before option pricing.

XML consumers and snapshot/reference files that depend on element order must be updated.

getOfdaXMLProxy(Part part) now searches the part's complete class hierarchy for the first registered package proxy. The previous search stopped after 15 inheritance levels. Deeply inherited part classes may therefore resolve a proxy where they previously returned null; extensions should verify that the nearest registered package proxy is appropriate for those classes.