View source | View content page | Page history | Printable version   

Projects:Product Variants and Characteristics/Functional Specification


Product Variants and Characteristics - Functional Specifications


The purpose of this project is to enable the ability to create and easily manage Product Variants and to define additional characteristics to products.


Product Characteristics are attributes that can be added to the product definition that extend the description of each product. Examples of Characteristics are Size, Color, Quality, Shape or Weight. These characteristics can be used later to filter or search products.

Products can be related to a parent Generic Product. This is a generic product where common attributes like tax or prices are defined. By default products inherit all the attributes of the Model. They can be overridden on each product. Generic products cannot be purchased or sold or used in any document.

Product Variants are products with a common generic product with mandatory characteristics that define the product. For example the Generic product Shirts Summer Season 2013 by My Provider implements the Characteristics Size and Color as variants. This Generic Product will have as Product Variant each combination of Color and Size.


The scope of the project is to implement Product Characteristics and Variants. It will also have to deliver tools to manage the Variants in an easy manner.

Design Considerations



It is necessary to be able to add additional Properties to the Product DAL object to be able to easily query for them. It should also be possible to add extra fields and columns in the Product main tab with the characteristics defined for the products. In Grid mode they should be filterable and sortable.


Performance is a key feature to measure within this project as it is expected to have high volume of data.


Generic Product
It is a product that is not directly sold or purchased. Each one has child products based on the categories defined in the Generic Product. Each of this products is called variant. The models are used to define common attributes for all its children as tax information.
Each product child of a Generic Product fulfilling its mandatory characteristics. It inherits the definition of the Generic Product and can override it. For example a Generic Product sets a default price and specific variants might change it.
Attribute added to a product, if it is variant it can be used to define the product (Color). Non variant characteristics are used to extend the description with valuable information that do not complete the definition of the product.

Functional Requirements

User roles & profiles

Business process definition

  1. User defined Characteristics
    1. Characteristics might have lists of possible values.
      1. List of values can be arranged in a tree, summary level values can only be assigned to Generic Products. For example summary level Green and children each provider's code for green color.
      2. Values of characteristics can be grouped in subsets.
  2. Product has a list of characteristics to apply and their corresponding values.
    1. Some characteristics can be Variants
    2. Characteristics and theirs values must be edited and viewed as Product attributes and not as children values.
    3. Some characteristics might allow multiple values and optionally a percentage.
  3. When a new Generic Product is created with variant characteristics it can be exploded to create all the variants.
  4. Products inherits properties and characteristics from the model.
  5. When adding a Generic Product to a Purchasing Document it should be possible to select the quantity required for each of its variants.
  6. Reporting available filtering and grouping by characteristics.

User stories

Functional requirements based on business processes

Product Characteristics window

The Characteristics are defined in their own window. A characteristic is defined by a name and whether is variant or not. If it is variant then there will be an explosion, that is, from the generic product that contains all the values it will be created as many products (variants) as values

In the child tab you define the values for each characteristic. The available values can be grouped in subsets. For example the color characteristic might have a subset of values for each provider. Each value can have a code to be used to generate the variant Search Key. If subsets are used this code can be overwritten in the subset values tab.

Product Characteristics window window
Id Requirement Importance Status
1.1 Header tab including Name Must have Done
1.2 Child tab Values including Name and Summary. Must have Done
1.3 Check Is Variant in the header. This value will be populated in the Product window when selecting the Characteristic Nice to have Done
1.4 Ability to group values in subsets. Should have Done
1.5 Button Add products that allows to add products to nodes that are not summary and belong to a characteristic that is marked as not variant Should have Done
Product window

The characteristics and its values are shown in a new column in the grid view as a concatenation. In form view the characteristics assigned to the product are included as read only fields in the main tab. Characteristics assigned can be variants or not. Characteristics are edited using a Manage Characteristics button. In this process it is possible to assign or remove characteristics to a product and edit their values.

Generic products with variant characteristics have a new tab with all the available values. This list can be filtered by subset or by summary values. It is possible to deactivate some values to avoid using them during the automatic variant generation process. It is also possible to define a variant characteristic as Defines Price. In this case it is possible to set a unit price in the desired values to overwrite the generic's price when a variant using that value is created.

Alternative to grid view: If it is not possible to add the columns it should be possible to implement advanced filters by the characteristics.

Processes related to generic products:

Product window
Id Requirement Importance Status
2.1 Header tab in grid view must include a columns with a concatenation of all defined characteristics with their value. It has to include an advanced filter for characteristics. Must have Done
2.2 Header tab in form view must include as fields all characteristics assigned to the product. Must have Done
2.3 Generic Product field. Must have Done
2.4 Variants tab. New tab displayed when a generic product is selected showing all the variant products. Only Name, Search Key and Characteristics. Nice to have Not started
2.5 Generic Product flag to identify a generic product. Add display logics based on this field. Must have Done
2.6 New tab for characteristics assigned to the product with a variant flag. In case the product is generic include a tab with all the possible values of the characteristic with the ability to deactivate them. In this tab it is also possible to set the code for the values, this code is inherited from the subset value or from the characteristic value. Must have Done
2.7 New process to automatically generate Variants from the Generic Product. This process must take in the account if the generic product has a subset or a value already assigned to the characteristic. When the Search Key is generated it has to check if all the values of a characteristic has a code to be used. Must have Done
2.8 New process to manually manage variants of a generic product: P&E that allows to filter by the values of the characteristics (combinations). This P&E shows all the variants with a column that says whether the variant is already created or not. The ones that are already created can be edited to change their Name or Search Key. See user cases that will cover this point Must have Done
2.9 Ability to assign multiple values to a single characteristic with percentages. Nice to have Not started
2.10 New process to edit characteristic values that are not variants Nice to have Done
2.11 Ability to add an image to a specific value of the characteristic Should have Done
2.12 IDL for variants: Three variants by default and ability to add as many as required Must have Done

Purchase Order window

When selecting a Generic product a new button appears to select the variants to order. This opens a popup with a list with all the variants to include in the order and a box to set the quantity. When the popup is closed new order lines are generated based on the user selection.

Purchase order window
Id Requirement Importance Status
3.1 Process to select non generic products. Available properties to define are Quantity, and Price. This process can be launched as a P&E from the Purchase Order header. This P&E shows all the purchased products and can be filtered by the desired generic product or variant values. Must have Done
POS Hierarchical Product Characteristics

In the POS it should be possible to browse through categories considering that they can be organized in a tree. Clicking on a parent category should display its children categories. Generic products are considered as special categories and clicking on them would show all their variants.

POS Hierarchical Product Categories
Id Requirement Importance Status
3.1 Modify POS Product browse to enable hierarchical categories. Must have Done
3.2 Add Generic products as extra categories. Must have Done
Not allow to select generic products all over the ERP

Products defined as Generic Product cannot be sold and purchased either. What can be sold or purchased are the variants related to the generic product. To ensure this rule many selectors, combos, processes and forms need to be changed

Things that need to be reviewed and changed
Id Requirement Importance Status
4.1 Review and change Product selectors (in transactional windows and reports) Must have Done
4.2 Review combo boxes Must have Done
4.3 Processes that perform transactions with products: Not allow to do it with generic products Must have Done
4.4 Review triggers Must have Done
4.5 Add generic product field and char description in product selector (both selectors) Must have Done

User Interface Mockups

Technical Requirements

Product generated entity class should include methods to handle characteristics.

Non-Functional Requirements

Open Discussion Items

Closed Discussion Items

Retrieved from ""

This page has been accessed 11,163 times. This page was last modified on 2 September 2013, at 11:41. Content is available under Creative Commons Attribution-ShareAlike 2.5 Spain License.