Compile Time Changes

class AbsTagPartColumn

Made AbsTagPartColumn public for use.

public class AbsTagPartColumn extends BasicPartColumn

SpecOptionInfoTree has had constructors removed and consolidated into one constructor.

Added: public constructor(Part owner, SpecOption specOpt, PartInfoTree parent=null, str key=null, PartColumn[] columns=null) {}

Removed: public constructor(Part owner, SpecOption specOpt) {}
Removed: public constructor(Part owner, SpecOption specOpt, rest: PartColumn[] columns) {}
Removed: public constructor(Part owner, SpecOption specOpt, PartColumn[] columns) {}

Runtime/Behavior Changes

Preserve Ind. Tag customizations

Relavent Merge Request:

  • Added all the methods below related to Item Tag from DsPart have been moved to ProdPart in cm.abstract.part.
	/***********************************************************************
	 * Item Tags
	 ***********************************************************************/

	/**
	 * Create a new item tag
	 */
	extend public str itemTagInfoKey=(str k)


	/**
	 * Item Tag info Key
	 */
	public str itemTagInfoKey()


	/**
	 * Item tag key.
	 */
	public str itemTagKey()


	/**
	 * Item tag info.
	 */
	public ItemTagInfo itemTagInfo()


	/**
	 * Finalize after merge.
	 * Done after dividing parts into groups and merging them, but before the post merge hooks.
	 */
	public void finalizeAfterMerge()


	/**
	 * Re-link any saved ItemTagInfo on the owner that should be shown with this part.
	 */
	extend public void reLinkItemTagInfo()


	/**
	 * Set the item tag info key.
	 */
	extend public void setItemTagInfoKey(str key)


	/**
	 * Reset the ItemTagInfoKey.
	 */
	extend public void resetItemTagInfoKey() { _itemTagInfoKey = null; }


	/**
	 * Set new info to item tag.
	 */
	public ItemTagInfo setItemTagInfo(str text)


	/**
	 * Reset ItemTagInfo.
	 */
	public ItemTagInfo resetItemTagInfo()

Added functions for detecting if setting is on

New:

	public bool ownerHasStickyTag(Snapper owner)

	public bool stickyIndTags()

UPDATE (May 19, 2025):

Due to rising issues with list pricing in 16.0 Major, the following interfaces have been reverted to the 15.5 version:

  • override to customListPrice function in AbsPart
  • override to upcharge function in ProdPart
  • modification to basePrice function in AbsPart
  • modification to basePrice function in DsPart
  • upcharge function accounting for option specials in SpecOption
  • public double price(SpecOption[] specOs=null) in DsPData
  • public double price(SpecOption[] specOs=null) in OfmlPData

These changes were originally added to account for the new core PartSpecials system.

Impact of changes:

  • the new core QueryDialog will not account for special pricing for now (expected 16.0 Patch 1)
  • any modifications made to account for previous changes may need reversion

Those who may be affected include:

  • anyone who had migrated to the new core PartSpecial and/or OptionSpecial system
  • anyone who had migrated to the new core QueryDialog
  • anyone who made changes to pricing for parts extending AbsPart/ProdPart/DsPart

Anyone affected may need to:

  • re-test pricing to ensure accuracy
  • re-approach any changes made to the above interfaces
  • implement their own overrides to handle special pricing
  • wait until the core implementation for special pricing is implemented (expected 16.0 Patch 1).

The new core QueryDialog does still account for special part numbers and descriptions as well as special option codes and descriptions. The fields for special pricing have been removed for the time being.

Link to Merge Request with changes

class AbsTagPartColumn

ItemTag adjustments are now will be set through setItemTagInfo on cm.core.Part .

Removed completeSpecified()

Equivalent functionality moved to Part in cm.core.part . See completedSpec and completeSpecifiedValue().

Preserve Ind. Tag customizations

MR: Preserve Ind. Tag customizations

  • While this new setting in CET is activated, any user modifications to Ind. Tag will make those parts unique to that Ind. Tag.

  • Added all the methods below related to Item Tag from DsPart have been moved to ProdPart in cm.abstract.part.

    /***********************************************************************
     * Item Tags
     ***********************************************************************/

    /**
     * Create a new item tag
     */
    extend public str itemTagInfoKey=(str k)     


    /**
     * Item Tag info Key
     */
    public str itemTagInfoKey()     


    /**
     * Item tag key.
     */
    public str itemTagKey() 


    /**
     * Item tag info.
     */
    public ItemTagInfo itemTagInfo()


    /**
     * Finalize after merge.
     * Done after dividing parts into groups and merging them, but before the post merge hooks.
     */
    public void finalizeAfterMerge() 


    /**
     * Re-link any saved ItemTagInfo on the owner that should be shown with this part. 
     */
    extend public void reLinkItemTagInfo() 


    /**
     * Set the item tag info key. 
     */
    extend public void setItemTagInfoKey(str key) 


    /**
     * Reset the ItemTagInfoKey.
     */
    extend public void resetItemTagInfoKey() { _itemTagInfoKey = null; }


    /**
     * Set new info to item tag.
     */
    public ItemTagInfo setItemTagInfo(str text) 


    /**
     * Reset ItemTagInfo.
     */
    public ItemTagInfo resetItemTagInfo() 

Added field for price

New:     public double price;

Extended SpecOption from PartOptionItem

SpecOption now extends PartOptionItem to allow for a singular class hierarchy for PartOption . This is needed to establish consistent order output via multiple formats.

Add new constructor for setting price

New:        public constructor(str code, str description, str groupDescription=null,
                               int level=1, double price=0.0, bool exportable=true)

Implemented PartOptionItem methods for option output

MR: PartOption Refactor MR

    /**
     * Code
     */
    public str code() { return code; }


    /**
     * Group description. (OPTIONAL)
     */
    public str groupDescription() 


    /**
     * Description string. (OPTIONAL)
     */
    public str description() 


    /**
     * Level Attribute. (OPTIONAL)
     */
    public int level() 


    /**
     * Price string. (OPTIONAL)
     */
    public Double optionPrice() 

class ProdPart

Added _itemTagInfoKey to ProdPart.

New:     /**
         * Cached ItemTagInfo key.
         */
        private str _itemTagInfoKey : public readable;

Added _partSourceID to ProdPart

Added new constructor with optional parameter partSourceId added. This new field is intended for use to identify more generically the part source on the owning Snapper. It should not be set to the Part Number as it will use that by default when not supplied, but something more generic like "leftTableLeg".

 New:     public constructor(PartData data, str partSourceId=null) 

 New:     public constructor(Snapper snapper, str articleCode, str description, double listPrice,
                             double quantity=1, double inPrice=0,
                             bool flattenable=true, bool group=false, partStyle style=psNone,
                             str flattenableKey=null, bool allowOtherParent=true, str partSourceId=null)

Added field _partOptions to ProdPart for holding PartOption items in abstract

Implemented methods on ProdPart as a baseline for PartOption management, as well as options() here for overriding as needed.

    /***********************************************************************
     * Part Option API
     ***********************************************************************/

    /**
     * Options
     */
    public PartOption[] options() 


    /**
     * Spec options
     */
    final public SpecOption[] specOptions()


    /**
     * Append spec option.
     * 
     * Note: Ensure if you are building these that level on the
     * SpecOption is set properly.
     * 
     */
    final public SpecOption[] specOptions=(SpecOption[] newOptions)

Ind. Tag ata included in flattenableKey

User modifications to Ind. Tag are part of the flattenable key.

Miscellaneous

AbsPart, ProdPart, DsPart, SpecOption

UPDATE (May 19, 2025):

Due to rising issues with list pricing in 16.0 Major, the following interfaces have been reverted to the 15.5 version:

  • override to customListPrice function in AbsPart
  • override to upcharge function in ProdPart
  • modification to basePrice function in AbsPart
  • modification to basePrice function in DsPart
  • upcharge function accounting for option specials in SpecOption
  • public double price(SpecOption[] specOs=null) in DsPData
  • public double price(SpecOption[] specOs=null) in OfmlPData

These changes were originally added to account for the new core PartSpecials system.

Impact of changes:

  • the new core QueryDialog will not account for special pricing for now (expected 16.0 Patch 1)
  • any modifications made to account for previous changes may need reversion

Those who may be affected include:

  • anyone who had migrated to the new core PartSpecial and/or OptionSpecial system
  • anyone who had migrated to the new core QueryDialog
  • anyone who made changes to pricing for parts extending AbsPart/ProdPart/DsPart

Anyone affected may need to:

  • re-test pricing to ensure accuracy
  • re-approach any changes made to the above interfaces
  • implement their own overrides to handle special pricing
  • wait until the core implementation for special pricing is implemented (expected 16.0 Patch 1).

The new core QueryDialog does still account for special part numbers and descriptions as well as special option codes and descriptions. The fields for special pricing have been removed for the time being.

Link to Merge Request with changes