Fluent Commerce Logo
Docs
Sign In

UpsertInventoryQuantity

Rule

Changed on:

17 Feb 2025

Overview

Create or Update an Quantity.

Plugin NameInventory Reference Module
Namespace[[account.id]].globalinventory

The is the foundation for related implementations. It provides reference Workflows for inventory ingestion and processing. Extensible by design, use this Module as a base to build a solution to the needs of your customers.

The Module includes the following areas:

  • Product Catalogue workflow
  • Inventory Catalogue workflow
  • Control Group workflow
  • Virtual Catalogue workflow

UI Description

Create or update an Inventory Quantity of Type {" + PROP_DEFAULT_TYPE + "} using Event attributes.

Accepts

  • INVENTORY_POSITION

Actions

  • This Rule produces a MutationAction that will create or update an Inventory Quantity

Rule parameters

Name

Type

Description

`defaultType`

`String`

The Fallback Type for an Quantity to be created/updated

Event attributes

Name

Type

Description

Required

`qty`

`Integer`

The quantity value of the Quantity

Yes

`condition`

`String`

The condition of the Quantity

No

`expectedOn`

`Date (ISO-8601 format)`

The date when the Quantity is expected to be available

No

`storageAreaRef`

`String`

The Reference of the storage area where the Quantity will be located

No

`inventoryPositionRef`

`String`

The associated Position Reference

Yes

`inventoryQuantity`

`InventoryQuantityUpdate`

The Object that contains the Quantity specific data. 

See the Sub-attributes below.

No

InventoryQuantityUpdate Object Sub-attributes

Name

Type

Description

Required

`ref`

`String`

The Reference of the Quantity

No

`qty`

`Integer`

The quantity value of the Quantity

No

`type`

`String`

The Type of the Quantity

No

`status`

`String`

The Status of the Quantity

No

`attributes`

`Map<String, Object>`

The following attributes are supported:

  • `condition`
  • `expectedOn`
  • `storageAreaRef`

No

Exceptions

  • This Rule throws a `PropertyNotFoundException` when the Rule parameter(s) is not provided.
  • This Rule throws an `EventAttributeNotFoundException` when the required Event attribute(s) is not provided.
  • This Rule throws an `InvalidAttributeTypeException` when the provided:
    • `qty` attribute value is not `Integer`
    • `expectedOn` attribute value type can not be identified
  • This Rule throws an `InvalidAttributeValueException` when the provided `expectedOn` attribute value can not be parsed to a valid date (or null).

Configuration example

1{
2  "name": "[[account.id]].globalinventory.UpsertInventoryQuantity",
3  "props": {
4    "defaultType": "LAST_ON_HAND"
5  }
6}

Detailed Technical Description

This execution includes the following steps: 

  • Validate that:
    • The `defaultType` Rule parameter has been provided
    • The mandatory Event attributes have been provided:
      • `qty`
      • `inventoryPositionRef`
    • The `qty` attribute value is an `Integer`
  • Retrieve the Inventory Position and its Inventory Quantity(ies) based on the provided:
    • `inventoryPositionRef`
    • `inventoryQuantity.ref`
      This Sub-attribute is optional, so when it is not provided, the fallback logic will generate the Inventory Quantity Reference based on the following pattern:
      The Inventory Position Reference, a colon, and the Inventory Quantity Type. For example: 
      • If the `inventoryPositionRef` (Event attribute) is `PRDREF:LOCREF:DEFAULT` 
      • And the Inventory Quantity Type is `LAST_ON_HAND`:
        • `inventoryQuantity.type` Sub-attribute (when provided)
        • Otherwise, `defaultType` (Rule parameter)
      • The generated Inventory Quantity Reference will be `PRDREF:LOCREF:DEFAULT:LAST_ON_HAND`
  • Execute a `MutationAction` to:
    • Update the Inventory Quantity with the provided attributes when it exists (i.e., was successfully retrieved by its Reference)
    • Otherwise, create a new Inventory Quantity with the provided attributes 

Version History

2025-02-18

v25.2.18

Refers to the Product Release Version.