One line of a package/bill-of-materials definition: it attaches a component item (and optionally a component SKU) to a parent item, with a quantity, min/max bounds and selection rules. PackageHelper explodes these rows into child document lines when a line is created for a parent item flagged isPackage - on orders, invoices, quotes, opportunities, purchase orders and requisitions - stamping itemComponentId and the package parent-line id on each child. Only components whose featureType is exactly 'Product Configurator' are ever exploded or offered by the configurator, so components carrying the other feature types are configuration-only. Component rows also police their children afterwards: min/max quantity, mandatory-with-zero-quantity, non-editable quantity and deletion of a mandatory component are all rejected.
Fields
| Field | Label | Type | Required | What it does |
ApplicableFor | Applicable For | PickList | | Restricts the component to sales, purchase or service documents - an empty value applies everywhere, and each explosion path filters on its own context. All three seeded picklist values are inactive, so nothing is selectable until a tenant activates them. |
ComponentItemId | Component Item | Lookup → Item | | The item placed on the generated child line - the component being consumed. The item on the row's own item reference is the package parent, not the component. |
ComponentSKUId | Component SKU | Lookup → SKU | | |
CreatedById | Created By | Lookup → UserAccount | Yes | |
CreatedDateTime | Created Date | DateAndTime | Yes | |
ExternalId | External | Text | | |
FeatureType | Feature Type | PickList | | Acts as a hard filter rather than a label: only components whose value is exactly 'Product Configurator' are exploded into document lines or returned by the package-configuration action. Components typed as standard or optional package are stored but never auto-added. Values: Standard Package, Optional Package, Product Configurator. |
Id | Id | Guid | Yes | |
IsBundled | Is Bundled | Boolean | | Copied to the generated child line as its price-bundled flag, meaning the component's value is carried in the package price rather than charged separately on the child line. |
IsMandatory | Is Mandatory | Boolean | | Forces the component into every explosion of the package regardless of selection, requires a quantity greater than zero on the child line, and blocks deletion of that child line. |
IsQuantityEditable | Is Quantity Editable | Boolean | | When not set, any change to the generated child line's quantity is rejected, so the component ships at its configured quantity. |
IsSelected | Is Selected | Boolean | | Marks an optional component as selected by default, which is what gets it included in an automatic explosion; mandatory components are included whether or not this is set. |
ItemFeatureId | Product Packages | Lookup → ItemFeature | | Groups the component under an option group of the parent item; the group's name travels with the component in the configuration payload but imposes no selection limits. |
ItemId | Item | Lookup → Item | | |
ItemLotTypeId | Item Lot Type | Lookup → ItemLotType | | |
MaxQuantity | Max Quantity | Number | | Upper bound enforced on the generated child line's quantity, with the minimum-quantity column enforcing the lower bound the same way; on either field a value of zero or below is treated as no bound at all. |
MinQuantity | Min Quantity | Number | | |
ModifiedById | Modified By | Lookup → UserAccount | Yes | |
Name | Component Name | Text | | |
OwnerId | Owner | Lookup → UserAccount | Yes | |
PackageType | Package Type | PickList | | Decides how the component quantity scales: the exact value 'Multiple Of Package' multiplies the component quantity by the parent line's quantity and keeps it in step when the parent changes, while anything else uses the component quantity as-is. Values: Multiple Of Package, Independent Of Package. |
PartnerAccountGroupId | Partner Account Group | Lookup → AccountGroup | | |
PartnerAccountId | Partner Account | Lookup → Account | | |
Quantity | Quantity | Number | | The component quantity per package, used as the default on the generated child line - multiplied by the parent line quantity when the package type multiplies, otherwise taken literally. |
RecordTypeId | Record Type | Guid, hidden | | |
SKUId | Item SKU | Lookup → SKU | | Narrows the component to one SKU of the PARENT item: when the document line names a SKU, only components matching it or carrying no SKU are exploded. The component's own SKU is a separate field. |
SortOrder | Sort Order | Number | | |
UIProps | UI Props | Text | | |
UpdatedDateTime | Modified Date | DateAndTime | Yes | |
Actions
| Action | Label | Type | What it does |
BulkDelete | Delete | Delete | Delete the selected records. |
Clone | Clone | ServerAction (Clone) | Create a copy of this record |
Delete | Delete | Delete | Delete |
DeleteInList | Delete | Delete | Delete in a list page |
Edit | Edit | Edit | Edit |
EditInLine | Edit | EditInline | Edit in page. |
EditListHeader | Edit | EditInline | EditListHeader |
EditListRow | Edit | Edit | EditListRow |
New | New | New | New |
Validations
| Validation | Applies to | Error message | Notes |
| Quantity Rule Validation | Quantity, Error | Quantity cannot be 0 or negative. | Quantity Rule Validation |
Lookup filters
| Filter | Lookup field | Notes |
| Component SKU | ComponentSKUId | |