This feature is currently in Beta. Some of the functionality described below may not be fully implemented as of version 0.8.17

(lightbulb) Introduction

Product type is an advanced configuration property in OpenBoxes that allows superusers to design different versions of products that have different coding and attributes. For most implementers, just the default product type will be sufficient for all of your needs. However, if you have a special use case for your product structure, product types can help get you there.

In setting a product type, you can define the following aspects of products:

Code: Product codes can be defined can be defined in several different ways, including random numbers, random alphanumeric code, autoincrement numbers, or any of the previous with a defined prefix. You do not need to use product type to determine the code pattern for a product - that can be done in the external configuration file. However product type allows for multiple different code types in one system.

Supported Activities: Supported activities define what a product can do, or what a users can do to a product. Options for supported activities are:

The default product type has all of these supported activities automatically (it has searchable no stock instead of just searchable).

Required Fields: Certain fields are required for all products regardless of product type; Product Code, Name, and Category. GL Account is also required if accounting is turned on. Using product type, implementers can set additional fields as required.

Displayed Fields: The default product type displays all available fields. Creating a new product type allows implementers to decide which fields will be displayed on the product creation screen. Required fields must be displayed.

(blue star) Use Cases

Set product code prefix by category:

Product types can be used to define a certain code structure for different categories of product. For example, if an organization wants to code all drugs in the format D0001, all lab items as L0001, all IT items as IT0001, and so forth, they can set up a different product type for each category. If the user chooses product type “Drug,” the code auto-generates with a D prefix. This would be a large amount of work to do for a long list of categories, but could be worth it for a few key categories that need to be identifiable within the code.

Create a class of temporary products:

One implementer uses the product type feature to solve a long-standing problem within their system. They have a very large list of products (several thousand), and they want to keep the list as short as possible to avoid user confusion. They also have a wide range of “one-time use” products, which were donated as will never be purchased again. However, they need to be tracked throughout the system until the product is out of inventory. The implementer created a product type called “Miscellaneous item” with the code prefix M. This item type is very easy to create because the user most only fill out the 3 required fields. It only has one supported activity: searchable. The different code prefix allows users to filter out one-time use products for reporting purposes, and the searchable status means that once the product is out of stock, it essentially disappears from view. This allows the organization to maintain a streamlined master product list while still tracking all products within the system.

Streamline product creation by removing unnecessary fields:

For implementers that only need to use a small number of the many available fields on product, product type can be used to remove the other fields from view. This will make the product screen look more streamlined and will reduce user confusion by removing fields you don’t want them to use.

Disable a feature for all products:

Perhaps you want to disable the stock list feature for your implementation. Or perhaps you don't want users to be able to upload documents to products to avoid storage issues. Since it is not possible to disable the entire stocklist feature, or the entire documents feature, you can instead create a product type for which these features are unavailable. This will effectively make the feature inaccessible to users.

(plus) Create a Product Type

You must be a superuser to create or view product types. To access the product type screen, go to Product > Product Type

This will show you a list of the product types that exist in your instance of OpenBoxes. Note, you will NOT see the default type on this list. The default type comes with the system and is not visible or editable.

To create a new product type, press the “Add Product Type” button on the top left

  1. Name: The product type name exists to remind you what the product type is. Choose a name that means something to you, and will help explain to users what type they should select

  2. Product type code: This will be auto-set. Just ignore it.

  3. Product identifier format:

    1. Leave blank to generate a random code with two letters and 3 numbers

    2. AAAA - random mix of letters and numbers. The number of digits you enter determines the number of digits in the code

    3. NNNN - random number. Number of digits will match the number of Ns entered

    4. 10000 - autoincrement number with the number of digits specified. The first number cannot be zero. The number will autoincrement until the first number needs to be updated, then it will add a digit. For example, this number will autoincrement until 19999 and then reset to 110000

    5. C1000 - prefix followed by auto-increment number, ex C1001, C1002

    6. VNNN - Prefix followed by random number series, ex V325, V562

  4. Supported Activities: Add supported activities from the drop-down list. See the intro section for a definition of each supported activity.

  5. Required fields: The system required fields will be visible here and are not removable. Add others as needed

  6. Displayed fields: Choose fields from the drop-down list to display. Ensure that at minimum you are displaying the required fields, or your users will not be able to create products.