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.

OFDA XML part ordering and group traversal

OFDA XML order-line generation now follows the calculated part sequence directly. It no longer re-splits each calculated row by category before writing individual parts, and structural PartGroupNodes are traversed without producing an empty order line for the group itself.

Compile Time Changes

OFDA XML part ordering and group traversal

No public interface changed. If a custom exporter overrides the same traversal to reproduce the former category grouping, review that override against the new ordering behavior.

Runtime/Behavior Changes

OFDA XML file extension filter

OfdaXMLPurchaseOrderExport.getFileExtensionFilter() now returns separate "*.xml" and "*.XML" entries instead of one "*.xml; *.XML" entry. Extensions that consume the filter array should handle both patterns separately.

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.
  • Option pricing is written before OmitOnOrder.

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.

OFDA XML part ordering and group traversal

When sorting by description is enabled, parts are still merged and finalized before export. Otherwise, the exporter writes tree.parts without the former merge/category-split pass. Only tree nodes with parts are considered; PartGroupNode children are traversed recursively and leaf nodes generate order lines.

Consumers that compare XML by line order, or expect category-based regrouping independent of Calculations order, should update their expectations and regression files.