Product relations
Product relations can be used to link products to each other. By using these links, you can enable your front ends to either show replacement products, or products that complement each other.
The Product relations overview shows you all currently active sets of relations between products.
This chapter requires you to have the ProductRelationTypes
permission. These are managed from the Roles and rights chapter's functionalities card of a user's role.
Create product relation
Click the '+' icon to start creating a new product relation. This process consists of:
The general information consists of information about the relation and lets you specify its relation direction and relation type. The Product relation type is where you can specify if this is a one to one or a one to set relation.
The available options thereafter will depend on your selected Product relation type. We'll go into each relation direction and type below:
Parent-Child
This parent-to-child (or uni-directional) direction entails a relation between one and another product(s) which works as a one-way street.
This allows you to add any number of replacement products for a single product.
So you have the Parent and the Child. The child replaces the parent, but the parent doesn't replace the child.
Bear in mind that once a product is linked as a parent to a child product, the reverse can not be configured, So if product B is linked as a child product to a parent A, then product B cannot be linked as parent to product A. However, using the 'Reverse' icon, you can reverse the parent/child relation. The reverse button will not apply if the relation type selected is One-product to set relation.
Equal relation
This equal (or bi-directional) relation is similar to the parent-child one, but works both ways: the two products specified here act as each others replacements.
For example: Product 1 is a hook. If it were to be sold out, you can advise product 2 which is a fork and vice versa.
Group
This is a grouping of products and doesn't do anything with the 'RelatedProductID'. It only accepts 'PrimaryProductID's' to form a bond between multiple products. Products that go well with each other.
For example: a blue shirt, a blue set of shoes, a blue hat, etc.
Adding Products
The method for adding products varies by the Product relation type:
One-to-One Product Relation
For selecting a single product under a One-to-One Product Relation, utilize either:
- Query search
- Search Property
Use the drag-and-drop feature to organize product order in both unidirectional and bidirectional instances involving multiple products. This ordering affects how relationships are displayed on the frontend, such as prioritizing one product relationship over another.
One Product to Set Relation
For specifying multiple products under a One Product to Set Relation, utilize either:
- Add products in bulk: Add multiple products by pasting property values.
- Add Product Filter: Choose products by selecting from Values, Range, or Prefill (using an existing template).
Stock replacing switch
For all orders that run through Order Orchestration, the Is stock replacing checkbox can be used to make EVA treat all replacement products as if it's the same stock. This means that if product A is out of stock, EVA will check the stock of the related product(s) to see if an order is deliverable or not.
This is mostly used for products which are functionally identical, but are still treated by EVA as being different products. For example the same product with a different barcode.
Keep in mind that that's all EVA does - a stock check. It's up to employees to properly replace a product in that case.
In practice the available stock of each product would show in the GetProductAvailability
of the linked product.
A switch On in the case of Parent-Child relation direction would mean that the child product will replace the parent product in instances where the parent product is out of stock.
A switch On in case of Equal relation direction would mean that product 1 will replace product 2 in instances where product 2 is out of stock and vice versa.
A switch On in case of Group is not applicable.
Aside from specifying the relations here as being stock replacing, you need to configure this in your order orchestration sheet's options as well. See 4. Using replacement products in out-of-stock situations.
Invoiceable product relations
It's possible to create a product relation type for the purpose of restitutions. This is best explained by means of an example:
Say you create a discount where only part of the invoice is paid by the customer, while the other part is to be paid by the manufacturer. In order for the manufacturer to receive that invoice, the manufacturer will be marked in EVA as a restitution OU which is in turn listed in the discount.
The discount itself is applied to various types and variations of shoes. Because we don't want the manufacturer to receive 100s of invoices for all those different shoes, we want to replace all those items with a single invoiceable product. That's where product relations come in.
Broadly speaking, there's three steps to setting this up.
Step 1: the invoiceable product
First off, create the product that will serve as the catch-all product in the product relation type, say Brand shoes.
Step 2: the product relation type
Secondly, create the product relation type itself, bearing in mind:
- Not to toggle Is stock replacing;
- To set it as a Parent-Child relation, since it's a one way link;
- To specify a BackendID
Now add all the products to be included and set the catch-all product as Product 2.
Step 3: fill the setting
Thirdly, and lastly, we have to take the BackendID from step 2 and specify it in the following setting: Orders:Restitution:ProductRelationTypeBackendID
. This setting must be set on either the RestititutionOrganizationUnit itself or on a higher level.
With all of that in place, for each product that will be in the RestitutionOrder, the given product relation is checked and when there is a product available (Product 2), the product will be replaced on the order. If there is no product relation available however, the original product will be in the restitution order.
Hide related products on front ends
In some instances you do not want to display the created product relation on specific organization units. For that, a setting called App:Product:HideRelations
can be used to hide a specific product relation from showing on the front-end apps of an organization unit.
The setting expects the ProductRelationTypeBackendID as a value. This ID is the one used at time of product creation as BackendID. If you didn't specify it at first, you can still do so in the relation at a later moment.