ValidateVariantProduct
Changed on:
30 Nov 2023
Overview
Validates the incoming variant product payload
Plugin Name | Inventory 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
v2.0.0
refers to