Overview

CET 17.0 extracts the reusable PMX runtime surface from cm.abstract.pmx into the new shared package cm.core.pmx. This is now the package that owns the PMX data model (ItemData, OptionData, PartDetails, and related records), the PMX database wrapper (Database), the PMX file constants, and the PMXNetObj/DataDefinition bridge layer.

The move makes PMX functionality available to both exporter code and generic part-import code without forcing those consumers to depend on the abstract exporter package. It also broadens the PMX database/export payload to include project-level metadata such as notes, order info, and sold-to/ship-to records.

Because the package is new, migration work is mostly straightforward namespace replacement: code that previously instantiated PMX data/database types from cm.abstract.pmx should now import cm.core.pmx and use the same type names there.

Compile Time Changes

New package cm.core.pmx

The PMX core/runtime interfaces now live in a new package. Import it anywhere you construct PMX record objects, talk to the PMX database wrapper, or need PMX constants.

Added: package cm.core.pmx : 17.0.100;
Added: use cm.core.pmx;

Public PMX types moved from cm.abstract.pmx

These public types keep the same names but now come from cm.core.pmx.

Old: cm.abstract.pmx.AttributeData
New: cm.core.pmx.AttributeData

Old: cm.abstract.pmx.Database
New: cm.core.pmx.Database

Old: cm.abstract.pmx.ItemData
New: cm.core.pmx.ItemData

Old: cm.abstract.pmx.itemDataStatus
New: cm.core.pmx.itemDataStatus

Old: cm.abstract.pmx.OptionData
New: cm.core.pmx.OptionData

Old: cm.abstract.pmx.PartDetails
New: cm.core.pmx.PartDetails

Old: cm.abstract.pmx.PictureData
New: cm.core.pmx.PictureData

Old: cm.abstract.pmx.ProjectInformation
New: cm.core.pmx.ProjectInformation

The following previously-abstract support types also moved into the new package:

Old: cm.abstract.pmx.DataDefinition
New: cm.core.pmx.DataDefinition

Old: cm.abstract.pmx.PMXNetObj
New: cm.core.pmx.PMXNetObj

New public PMX project metadata types

cm.core.pmx exposes additional PMX record objects that can now be created and inserted explicitly.

Added: public class NotesTable
Added: public class OrderInformation
Added: public class ShipToInformation
Added: public class SoldToInformation

These are the types now used by cm.abstract.pmx.PMXExporter when exporting project-level PMX metadata.

Database has new schema-update and metadata insertion APIs

If you subclass, wrap, or call Database directly, update your code for the broader 17.0 surface.

Added: extend public void makeDatabaseStructureUpdates()
Added: final public bool checkIfColumnExists(str tableName, str columnName)
Added: final public void alterProjectInformationTableAddNewColumns(str oldTblName)

Added: final public int64 insertNotesInfo(NotesTable in_notesInfo)
Added: final public int insertOrderInformation(OrderInformation in_orderInfo)
Added: final public int insertShipToInformation(ShipToInformation in_shipToInfo)
Added: final public int insertSoldToInformation(SoldToInformation in_soldToInfo)

The constructor now also performs structure updates when opening an existing PMX database file.

ProjectInformation constructor now accepts ProjectInfo

ProjectInformation still takes the PMX target path, but it now also accepts the source ProjectInfo object so it can populate the expanded project metadata.

Old: public constructor(Url pmxTargetPath)
New: public constructor(Url pmxTargetPath, ProjectInfo projInfo=null)

PartDetails has a new package-count property

PartDetails now carries package-count data.

Added: final public int packageCount()
Added: final public int packageCount=(int value)

Shared PMX constants now come from cm.core.pmx

cReconfigCategory was moved out of cm.abstract.pmx and is now public in cm.core.pmx. The shared PMX file filter is also now exposed from cm.core.pmx for importer/exporter code.

Old: cm.abstract.pmx.cReconfigCategory
New: cm.core.pmx.cReconfigCategory

Added shared constant in cm.core.pmx: public str[] pmxFileFilter

Any package that only needs PMX constants or the PMX file-extension filter should depend on cm.core.pmx instead of cm.abstract.pmx.