Configurable products
Think of configurable products as made-to-order products that are dynamically configured by the customer. This configuration (or grouping) of products is based on the customer's requirements and is sold as a single unit. In WebSphere Commerce, this type of configuration is called a dynamic kit and is one of the available catalog entries. The components of a dynamic kit are composed by an external product configurator through a set of predefined rules and user interaction. There are several product configurators available that can be used to configure dynamic kits. While WebSphere Commerce does not supply a product configurator, support and integration is provided for an external product configurator.
Adding a dynamic kit to an order is similar to adding a package. Like a package, the individual components of a dynamic kit cannot be modified and the entire configuration must be fulfilled as a whole. However, you may change the dynamic kit components by re-configuring it using an external product configurator.
For a better idea on how a product configurator works within WebSphere Commerce, imagine the following shopping scenario:
- A customer navigates through an electronics online catalog until finding a personal computer that she is interested in.
- Since the chosen computer is a dynamic kit, it needs to be configured through an external configurator.
- The customer selects the Configure this product link (or a similar link) to interact with the configurator. This interaction may be as simple as answering a series of questions or as complex as manually selecting detailed configuration options for the computer.
- When the customer has completed the interaction, the configurator returns a bill of materials that represents the grouping of items (also known as SKUs) that make up the fully configured computer dynamic kit. The customer can then decide to add this configured computer into the shopping cart.
- If the customer wants to change the configuration options for this computer, WebSphere Commerce will redirect her to the external configurator where a modified grouping of items can be selected.
Optionally, you can assign a predefined configuration to a dynamic kit. This predefined configuration may be a complete dynamic kit which can be added directly to the shopping cart without further configuration. Conversely, it may define an incomplete dynamic kit, specifying only one or two options among many necessary to complete the dynamic kit. As an example of an incomplete dynamic kit, consider the previous computer sales example, but in this case, a predefined configuration may define an external case and power supply, but leaves the other components undefined, such that a customer's input using a configurator is required to complete the dynamic kit. This predefined configuration can be considered a collection of items used to populate a configurator, if necessary.
A predefined configuration has an assigned price. Once inside the configurator, customers are free to change the items included in the kit within the boundaries set within the configurator. These changes result in a corresponding price delta, which updates the price of the dynamic kit. By default, WebSphere Commerce supports a simple delta pricing model, in which the price delta between two options in a dynamic kit is equal to the difference between the prices of the two options. If you require a more complex delta pricing model, such as one which defines delta prices that are greater or less than the simple difference between two products, you can customize the WebSphere Commerce pricing APIs to accomplish this.
Dynamic kits
Dynamic kits facilitate component pricing within a kit. This means that you can set price adjustments which are only available or applicable to items purchased within a dynamic kit. That is, you can assign a price markdown, or markup, or even a completely different price if a particular item is included within a kit. Similarly, you can assign different prices to a single item depending on the kit in which it is included. For example, you might charge more for a hard drive in a dynamic kit for a server than you do for the same hard drive in a dynamic kit for a personal computer. However, because WebSphere Commerce defers the business logic governing which combinations of components are valid within a particular dynamic kit, the component pricing user interface has no way by which to enforce the same rules. This means that you may assign pricing adjustments to components which are not constituents of the selected dynamic kit, which has no effect when a customer purchases that kit. The responsibility for ensuring that the components for which adjustments are specified actually belong to the dynamic kit is the responsibility of the user assigning the adjustments.
The following APIs and URLs are useful when working with dynamic kits:
- com.ibm.commerce.catalog.beans.DynamicKitDataBean
- com.ibm.commerce.catalog.objects.DynamicKitAccessBean
- OrderItemAdd
- OrderItemUpdate
For example, you can calculate the sum of all the prices of all the items in the dynamic kit by using the DynamicKitDataBean's method, getComponentItems, then adding up the item's prices using getItem().getCalculatedContractPrice() for each item.