Inventory Traits

Traits are a way to configure how certain storage locations and stocks should behave. This describes the key concepts and how to work with them.

Introduction

Traits are a way of marking certain storage locations for specific activities or features. Traits are assigned to storage locations, but can affect the handling of both the location and stocks on these locations. Each stock placed on a location (by assigning it a locationRef) will be treated according to the traits of the storage location.

Available traits

By default, each storage location created has the traits PICKABLE and ACCESSIBLE, unless otherwise specified.

TraitDefaultDescription

PICKABLE

Stock on these locations can be picked for fulfilling orders. Only stock marked as PICKABLE can be considered for incoming orders.

ACCESSIBLE

The ACCESSIBLE trait indicates that stock can be removed from and new stock can be put on this location. Removing the ACCESSIBLE trait from a location locks it for picking and triggers a notification during stowing processes. Only stock marked as ACCESSIBLE can be considered for incoming orders.

KEEP_ON_ZERO

Normally stocks are deleted when they reach 0 through operations like picking or stock movements. To change this behaviour, add the KEEP_ON_ZERO trait to the location. See stock entities with amount 0.

Interacting with traits

Each trait has a default value. When nothing else is specified the enabled traits are processed on both the storage location itself and the stocks on it. The default value (whether it is enabled or not) can be overwritten individually for each trait by setting it in the traitsConfig field on the storage location. All unspecified traits keep their defaults. This means that if a trait is enabled via the trait config, PICKABLE and ACCESSIBLE are set by default unless explicitly set to false.

The traitConfig should be used to write to traits. Do NOT use the trait array for that purpose.

Creating a Location

In the following example we create a storage location without the ACCESSIBLE trait. This means that stock on this location will not be considered for incoming orders and cannot be picked.

curl -sSL -X POST 'https://your.api.fulfillmenttools.com/api/facilities/facility id>/storagelocations' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <TOKEN>' \
--data-raw '{
    "tenantLocationId": "qa-location-01",
    "name": "QA on Hold 01",
    "type": "SINGLE_STORAGE",
    "runningSequences": [],
    "scannableCodes": [],
    "traitConfig": [
        {
            "trait": "ACCESSIBLE",
            "enabled": false
        }
    ]
}'

Traits in stock summaries and distribution

Both stock summaries and stock distributions allow fetching a high level overview on stock quantities per location for the respective trait(s).

curl -sSL 'https://your.api.fulfillmenttools.com/api/stocks/summaries' \
  --header 'Authorization: Bearer <TOKEN>' 
{
    "total": 249,
    "stockSummaries": [
        {
            "_id": "...",
            "details": {
                "safetyStock": 0,
                "totalAmount": 665,
                "available": 665,
                "reserved": 0,
                "expectedStocks": [],
                "byTrait": {
                    "PICKABLE": 665,
                    "ACCESSIBLE": 86
                }
            },
            "article": {
                "tenantArticleId": "...",
                "title": "",
                "imageUrl": null
            }
        },
        /* ... */
    ]
}    

Use Cases

Locking Storage Locations

To lock a storage location including the items placed on it, the ACCESSIBLE trait must be removed. As a consequence, the items on the location are not considered for incoming orders (i.e. picking). It is still possible to remove items from the location or put new items on it. Additionally, users are notified about the locked status when moving items from the location via App or Backoffice.

To unlock the storage location, the ACCESSIBLE trait must be set (again).

Traits in Order Routing and Fulfillment

Storage locations and stock with the traits PICKABLE and ACCESSIBLEOR with no traits are considered for fences, ratings, and calculating stock availabilities.

The following storage locations and stocks are ignored in order routing and fulfillment:

  • with an empty array of traits

  • with only the trait PICKABLE

  • with only the trait ACCESSIBLE

Last updated