Caution: This documentation is for eZ Publish legacy, from version 3.x to 5.x.
For 5.x documentation covering Platform see eZ Documentation Center, for difference between legacy and Platform see 5.x Architecture overview.

Webshop

This part of the 4.x documentation is for eZ Publish 4.0, only reference section is common for all eZ Publish 4.x versions as well as eZ Publish 5.x "LegacyStack", please select the version you are using for the most up to date documentation!

This section explains the e-commerce capabilities of eZ Publish. The system comes with an integrated shop mechanism that plugs directly into the object / node tree model.

Note: From 4.3 onwards the eZ Webshop tab is disabled by default in the eZ Publish installation. Follow this link to see how you enable the eZ Webshop functionality in eZ Publish.

The webshop functionality is built around the following components:

  • Products
  • Value Added Taxes (VATs)
  • Discount rules
  • Wishlist
  • Basket
  • Orders

The following illustration shows how the different components interconnect and work together.

The integrated e-commerce solution.

The integrated e-commerce solution.

An actual product is represented by a content object (with at least one node assignment) that contains information about the product itself along with a price. The price must be represented by an attribute that makes use of the built-in price or multi-price datatype. These are special datatypes which plug more deeply into the system. The main difference is that the price datatype allows to specify only one price value for each object (simple price product) whereas the multi-price datatype makes it possible to specify several price values in different currencies for each object (multi-price product). A content class can only contain one price attribute or one multi-price attribute. There is no way to have a simple price product and a multi-price one in the shopping basket at the same time and it is not recommended to use both price and multi-price datatype on your site.

The price can be affected by a value added tax and/or a discount rule. A discount rule can be configured to reduce the price of certain products by a percentage. The products can be put into a user's wishlist and/or shopping basket. A user's wishlist and basket can be modified at any time. The contents of the shopping basket can be purchased by initiating the checkout process. Once the checkout process is completed, an order will be created. The system will automatically notify the site administrator and the user who placed the order by sending out E-mails. A list of placed orders and sales statistics can be viewed using the administration interface. An order is assigned a status which may be changed by a user with sufficient permissions. A status log is kept for each order.

Value added taxes

The system allows the site administrator to set up different kinds of value added taxes (VAT types). A VAT type consists of a name and a percentage. The administration interface makes it possible to add, remove and modify VAT types. The VAT types are used by the price and multi-price datatype. There is an additional possibility to create VAT charging rules which instruct the system to charge VATs according to the product category and the buyer's country. (Please refer to the "VAT charging system" section of the "Features" chapter for more information.)

The price datatype

As pointed out above, a product is nothing more than a content object with a price. The price can be represented by an attribute that makes use of the built-in price datatype. Instances of any class containing the price datatype will automatically be treated as simple price products. A class attribute represented by the price datatype makes use of one of the predefined VATs. There are two ways in which the selected VAT can be used. This configuration depends on how the product prices are entered when the objects are created. The first alternative (Price inc. VAT) is to be used if the prices that are entered already include the value added tax. The second alternative (Price ex. VAT) should be used if the prices that are entered do not contain the value added tax. When the first alternative is used and the product is viewed, the price that was entered will be shown. When the second alternative is used and the product is viewed, the price will be the price that was entered plus the VAT. When the object is in the basket and the basket is viewed, it is possible to see the price of the products with and without the VATs (regardless of which approach that was used).

Please note that the price datatype allows to set only one price value for each product (the system will use your locale currency for when displaying this price). This datatype does not work with multiple currencies.

The multi-price datatype

The price can be represented by an attribute that makes use of the built-in multi-price datatype. This datatype allows you to set several prices in different currencies for each product independently of your locale currency. Instances of any class containing the multi-price price datatype are automatically treated as multi-price products. (Please refer to the "Multi-currency" section of the "Features" chapter for more information.) This datatype interacts with VATs in the same way as the price datatype.

Discount rules

The final price of a product can be affected by a discount rule. A discount rule can be configured to reduce the price of certain products by a percentage. The discount rules can be placed in different discount rule groups and are always active (there is no way to turn them on/off). The discount rule groups make it possible to choose which group(s) of customers will be affected. This can be done by assigning a discount rule group to the target user group(s).

By default, a newly created discount rule affects all the products that are in the system. However, a discount rule can be easily limited to a group of products. A discount rule can be limited in two ways, which are mutually exclusive. The first alternative is to use a combination of the "Product type" and the "Section" limitations, which are described in the table below.

Limitation

Description

Product type

The "Product type" limitation makes it possible to limit a policy to products/objects of certain types (only classes that make use of the price datatype will be shown). The default setting is "Any", which means that it will affect all kinds of product objects.

Section

The "Section" limitation makes it possible to limit a policy to products/objects that are assigned to certain sections. The default setting is "Any", which means that the discount rule will affect product objects in all sections.

The second alternative is to add individual products to the discount rule's product list. When the individual product list is used, the "Product type" and "Section" limitations will be omitted and thus only the products that are in the list will be affected.

Shop related datatypes

The following table shows the datatypes that plug in to the e-commerce subsystem of eZ publish.

Datatype

Description

Price

When used as an attribute in a content class, the "Price" datatype connects the instances (objects) of that class to the webshop system. As soon as an object has a price attribute, users can put the object in their baskets and/or wishlists. This datatype allows to set only one price value for each product (the system will use your locale currency for this price).

Multi-price

When used as an attribute in a content class, the "Multi-price" datatype also connects the instances (objects) of that class to the webshop system. As soon as an object has a multi-price attribute, users can view its price in different currencies, put the object in their baskets and/or wishlists. Objects without a price or multi-price attribute can not be put into a user's basket and/or wishlist and thus they are not connected to the e-commerce subsystem. The multi-price datatype allows you to set several prices in different currencies for each product.

Option

The "Option" datatype makes it possible to create a single group of options for each content object. Each option can be assigned a short text and an additional price. For example, it can be used to sell T-shirts in different colors where the price is different for some (or all) colors.

Multi-option

Note that this datatype should no longer be used. It was deprecated in eZ Publish 3.10 and is replaced by the "Multi-option2" datatype (see below).

The "Multi-option" datatype makes it possible to create multiple groups of options for each content object. Each option can be assigned a short text and an additional price. This datatype works in the same way as the "Option" datatype. The only difference is that instead of supporting only one group of options, it allows the creation of multiple groups of options for each content object.

Multi-option2

The "Multi-option2" datatype makes it possible to create multiple and distinctive groups of multi-options for each content object. The multi-options can be nested. For each option, you can specify an additional price, an image, whether the option should be the default selection and if it should be possible to select it (sometimes you wish to force the selection of a set of options without providing a default selection for the user; in that case, the first option can be set to something like "Make a choice"). In addition, this datatype makes it is possible to set up rules for allowing/disallowing certain combinations of options.

Range-option

The "Range-option" datatype makes it possible to create a single group of enumerated options for each content object. For example, it can be used in a scenario where the goal is to sell shoes of different sizes and the size does not affect the price. For each content object, the administrator needs to set up the available range (if any).

Balazs Halasy (10/02/2005 12:01 pm)

Ricardo Correia (17/04/2013 10:27 am)

Svitlana Shatokhina, Balazs Halasy, Geir Arne Waaler, Ricardo Correia


Comments

  • Link to workflow information

    References and links to the Payment Gateway workflow would be useful.