Fluent Commerce Logo
Docs
Sign In

ValidateVariantProduct

Rule

Changed on:

30 Nov 2023

Overview

Validates the incoming variant product payload

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

Validates the incoming variant product event payload

Accepts

  • PRODUCT_CATALOGUE

Actions

  • This rule does not produce any Output Actions. It validates the existence of the standard product if the incoming event has an event attribute called standardProductRef. If the standardProductRef value is not empty and there is no corresponding standard product in the product catalogue an IllegalArgumentException will be thrown.

Rule parameters

This has no Input Parameters.

Event attributes

Main Event Attributes

Parameter

Description

Data Type

Required?

ref

The ref of the product

String

Required

type

The type of the product

String

Required

name

The name of the product

String

Optional

gtin

The gtin of the product

String

Optional

standardProductRef

The ref of the parent Standard Product

String

Optional

categoryRefs

A list of string category references

[String]

Optional

summary

A brief summary of the product

String

Optional

prices

A list of prices. See the below table for its attributes

[Price]

Optional

taxType

Tax type of this product. See the below table for its attributes

Tax

Optional

attributes

Extra attributes that may be used as part of this product. See the table below for the definition

[]

Optional

Price sub-attribute

Parameter

Description

Data Type

Required?

type

The type of the price

String

Required

currency

The currency of the price

String

Required E.g. EUR, AUD

value

The value of the price

Floating Point

Required

Tax type sub-attribute

Parameter

Description

Data Type

Required?

country

The country of this tax type

String

Required

group

The tax group

String

Required

tariff

The tariff of this tax type

String

Required

Attribute type sub-attribute

Parameter

Description

Data Type

Required?

name

The name of the

String

Required

type

The type of the

String

Required E.g. STRING, INTEGER, BOOLEAN, OBJECT

value

The value of the

JSON or scalar

Required

Exceptions

If there is no standard product for the standard product reference, an IllegalArgumentException will be thrown.

Configuration example

1{
2  "name": "{{accountId}}}}.globalinventory.ValidateVariantProduct"
3}

Detailed Technical Description

All the event attributes of the incoming are parsed/deserialized into a "Product" object which has the following structure

1public class Product {
2
3    @NonNull
4    private String ref;
5
6    private String type;
7
8    private String status;
9
10    private String gtin;
11
12    private String name;
13
14    private String summary;
15
16    private List<String> categoryRefs;
17
18    private List<Price> prices;
19
20    private String standardProductRef;
21
22    private TaxType taxType;
23
24    private List<Attribute> attributes;
25}

An example JSON payload that represents the attributes of an incoming

1{
2  "ref": "VP_1_45",
3  "type": "VARIANT",
4  "status": "ACTIVE",
5  "gtin": "VP_1-45",
6  "name": "Blue Jeans Size 8",
7  "summary": "Variant product summary",
8  "standardProductRef": "STD_1_88",
9  "categoryRefs": [],
10  "prices": [{"type": "RRT", "currency": "AUD", "value": 34.56}],
11  "taxType": {"country": "AU", "tariff": "GST", "group": "GSTG1"},
12  "attributes": [{"name": "isDangerous", "value": false, "type": "BOOLEAN"}]
13}

This parses/deserializes all the attributes into a Product object outlined above. If the product type is not `VARIANT`, it skips the validation. It also skips validation if there is no standard product reference value found in the attributes. If there is a standard product reference value and a corresponding standard product exist in the product catalogue, it passes the validation and outputs nothing. If there is no standard product for the specified standard product ref, it throws an IllegalArgumentException.

Version History

2023-08-03

v2.0.0

refers to