diff --git a/content/applications/essentials/contacts.rst b/content/applications/essentials/contacts.rst index d9c7bcced9..0877299bd5 100644 --- a/content/applications/essentials/contacts.rst +++ b/content/applications/essentials/contacts.rst @@ -118,6 +118,8 @@ Next, is the :guilabel:`Sales & Purchases` tab, which only appears when the *Sal The :guilabel:`Fiscal Position` can be set on the :guilabel:`Sales & Purchases` tab. Select a :guilabel:`Fiscal Position` from the drop-down menu. +.. _essentials/contacts/sales-section: + Sales section ~~~~~~~~~~~~~ diff --git a/content/applications/finance/accounting/taxes/B2B_B2C.rst b/content/applications/finance/accounting/taxes/B2B_B2C.rst index 000e41a691..8236b8ec9c 100644 --- a/content/applications/finance/accounting/taxes/B2B_B2C.rst +++ b/content/applications/finance/accounting/taxes/B2B_B2C.rst @@ -79,22 +79,6 @@ For the purpose of this documentation, we will use the above use case: - but we want to sell it at 10€, tax included, in our shops or eCommerce website -.. _b2b_b2c/ecommerce: - -eCommerce ---------- - -If you only use B2C or B2B prices on your website, simply select the appropriate setting in the -**Website** app settings. - -If you have both B2B and B2C prices on a single website, please follow these instructions: - -#. Activate the :ref:`developer mode ` and go to :menuselection:`General Settings - --> Users & Companies --> Groups`. -#. Open either `Technical / Tax display B2B` or `Technical / Tax display B2C`. -#. Under the :guilabel:`Users` tab, add the users requiring access to the price type. Add B2C users - in the B2C group and B2B users in the B2B group. - Setting your products --------------------- diff --git a/content/applications/sales/point_of_sale/pricing/pricelists.rst b/content/applications/sales/point_of_sale/pricing/pricelists.rst index 04ac10b97d..7833d95d6d 100644 --- a/content/applications/sales/point_of_sale/pricing/pricelists.rst +++ b/content/applications/sales/point_of_sale/pricing/pricelists.rst @@ -24,7 +24,7 @@ dynamically using percentage discounts or more complex formulas in addition to s .. note:: The selected pricelist type applies to the entire database, including the :doc:`Sales - <../../sales/products_prices/prices/pricing>` and :ref:`eCommerce ` + <../../sales/products_prices/prices/pricing>` and :ref:`eCommerce ` apps. .. _pricelists/create: @@ -128,4 +128,4 @@ the desired pricelist from the list. .. seealso:: - :doc:`../../sales/products_prices/prices/pricing` - - :ref:`How to use pricelists in an ecommerce environment ` + - :ref:`How to use pricelists in an ecommerce environment ` diff --git a/content/applications/sales/sales/products_prices/loyalty_discount.rst b/content/applications/sales/sales/products_prices/loyalty_discount.rst index 74198a62a0..b84ff17916 100644 --- a/content/applications/sales/sales/products_prices/loyalty_discount.rst +++ b/content/applications/sales/sales/products_prices/loyalty_discount.rst @@ -15,6 +15,8 @@ To begin using discount and loyalty programs, navigate to :menuselection:`Sales Gift Card` setting by checking the box next to the feature. Finally, click :guilabel:`Save` to save the changes. +.. _sales/products/loyalty-programs: + Configure discount and loyalty programs ======================================= diff --git a/content/applications/sales/sales/products_prices/prices/currencies.rst b/content/applications/sales/sales/products_prices/prices/currencies.rst index 2e21aaf0db..5c13a35011 100644 --- a/content/applications/sales/sales/products_prices/prices/currencies.rst +++ b/content/applications/sales/sales/products_prices/prices/currencies.rst @@ -159,6 +159,8 @@ and :guilabel:`...per Unit` fields to ensure all the auto-populated information example, if the main currency is set to `USD`, the columns are titled :guilabel:`Unit per USD` and :guilabel:`USD per Unit`. +.. _sales/products/currencies/currency-specific-pricelists: + Currency-specific pricelists ============================ diff --git a/content/applications/sales/sales/products_prices/prices/pricing.rst b/content/applications/sales/sales/products_prices/prices/pricing.rst index c02d5186e3..7cbf2a2cb3 100644 --- a/content/applications/sales/sales/products_prices/prices/pricing.rst +++ b/content/applications/sales/sales/products_prices/prices/pricing.rst @@ -9,6 +9,8 @@ time periods, etc., and is useful for creating pricing strategies and optimizing Odoo **Sales** has a useful pricelist feature that can be tailored to fit any unique pricing strategy. Pricelists suggest certain prices, but they can always be overridden on the sales order. +.. _sales/products/pricelist-configuration: + Configuration ============= @@ -199,26 +201,10 @@ Lastly, configure a :guilabel:`Price` for the rental rule in the respective colu .. image:: pricing/sales-pricelist-rental.png :alt: The rental tab in a pricelist configuration form. -Ecommerce Tab -------------- - -Under the :guilabel:`Ecommerce` tab, price rules can be configured for products sold on an -:doc:`Ecommerce website <../../../../websites/ecommerce/products>`. - -To enable the pricelist to be visible, select the target website in the :guilabel:`Website` field. - -The :guilabel:`Selectable` can be enabled to allow the customer to choose this pricelist. - -Finally, promotional and loyalty codes can be added to the :guilabel:`E-commerce Promotional Code` -field. - -Tick the :guilabel:`Selectable` checkbox to have this pricelist as a selectable option for customers -to choose as they shop. If the :guilabel:`Selectable` box is left unticked, customers **cannot** -select this pricelist for themselves. +.. seealso:: + :doc:`Ecommerce price configuration ` -Lastly, there is the option to add an :guilabel:`E-commerce Promotional Code`. To add a code, type -in the desired promo code that, when entered during the checkout process, applies the pricelist to -the customer, even if the customer does not fall into the previously-specified criteria. +.. _sales/products/customer-pricelist-application: Customer pricelist application ============================== @@ -285,4 +271,4 @@ rule on a fresh form. .. seealso:: - :doc:`/applications/sales/sales/products_prices/prices/currencies` - - :doc:`/applications/websites/ecommerce/products/price_management` + - :doc:`/applications/websites/ecommerce/products/prices` diff --git a/content/applications/sales/sales/products_prices/products/variants.rst b/content/applications/sales/sales/products_prices/products/variants.rst index 6561ead55e..89ae27b4c0 100644 --- a/content/applications/sales/sales/products_prices/products/variants.rst +++ b/content/applications/sales/sales/products_prices/products/variants.rst @@ -224,6 +224,8 @@ column. Similar product variant creation processes are accessible through the Purchase, Inventory, and eCommerce applications. +.. _products/variants/configure-variants: + Configure variants ------------------ diff --git a/content/applications/websites/ecommerce/checkout.rst b/content/applications/websites/ecommerce/checkout.rst index fbbcb7fca4..9ce8953c0c 100644 --- a/content/applications/websites/ecommerce/checkout.rst +++ b/content/applications/websites/ecommerce/checkout.rst @@ -53,12 +53,8 @@ redirects users to the default contact form. Removing the ability to add products to the cart is often used by businesses that want to display an online catalog but cannot share prices publicly (e.g., to offer custom or variable pricing). -To do so, go to :menuselection:`Website --> Configuration --> Settings`. Under the :guilabel:`Shop - -Products` section, tick :guilabel:`Prevent Sale of Zero Priced Product`. A new :guilabel:`Button -url` field appears to enter a redirect URL. - -Then, for all products that should display the :guilabel:`Contact Us` button, set their price to -`0` using the product form or a :doc:`pricelist <../../sales/sales/products_prices/prices/pricing>`. +To display the :guilabel:`Contact Us` button and a note saying `Not Available For Sale` , you need +to :ref:`hide your prices ` on your product page. .. image:: checkout/cart-contact-us.png :alt: Contact us button on product page diff --git a/content/applications/websites/ecommerce/products.rst b/content/applications/websites/ecommerce/products.rst index 1ad9492c08..59fadd71bc 100644 --- a/content/applications/websites/ecommerce/products.rst +++ b/content/applications/websites/ecommerce/products.rst @@ -86,6 +86,8 @@ tab, scroll down to the :guilabel:`Ecommerce description` section, and add a des .. tip:: Click the :guilabel:`Go to Website` smart button to return to the frontend product's page. +.. _ecommerce/products/product-presentation: + Product presentation -------------------- @@ -120,7 +122,7 @@ Use the :guilabel:`Customize` tab to modify the page layout or add features: they want to purchase. - :guilabel:`Tax Indication`: Toggle the switch to indicate if the price is - :ref:`VAT included or excluded `. + :ref:`VAT included or excluded `. - :guilabel:`Variants`: Show all possible product :ref:`variants ` vertically as a :guilabel:`Products List` @@ -392,5 +394,5 @@ Configuration --> Settings`, scroll down to the :guilabel:`Shop - Products` sect :titlesonly: products/catalog - products/price_management + products/prices products/cross_upselling diff --git a/content/applications/websites/ecommerce/products/price_management.rst b/content/applications/websites/ecommerce/products/price_management.rst deleted file mode 100644 index 345636ab9a..0000000000 --- a/content/applications/websites/ecommerce/products/price_management.rst +++ /dev/null @@ -1,201 +0,0 @@ -================ -Price management -================ - -Odoo offers multiple options to select the prices displayed on a website, as well as -condition-specific prices based on set criteria. - -Taxes -===== - -Tax configuration ------------------ - -To add a tax on a product, you can either set a tax in the :guilabel:`Customer Taxes` field of the -**product template** or use :doc:`fiscal positions -`. - -.. seealso:: - - :doc:`/applications/finance/accounting/taxes` - - :doc:`/applications/finance/accounting/taxes/avatax` - - :doc:`/applications/finance/accounting/taxes/fiscal_positions` - -.. _ecommerce-price-management-tax-display: - -Tax display ------------ - -Choosing the displayed price tax usually depends on a country's regulations or the type of customers -**(B2B vs. B2C)**. To select the type of price displayed, go to :menuselection:`Website --> -Configuration --> Settings`, scroll down to the :guilabel:`Shop - Products` category, and select -:guilabel:`Tax Excluded` or :guilabel:`Tax Included`. - -- :guilabel:`Tax Excluded`: the price displayed on the website is **tax-excluded**, and the tax is - computed at the cart-review step; -- :guilabel:`Tax Included`: the price displayed on the website is **tax-included**. - -.. note:: - This setting is website specific, and therefore can be altered for each website within a - database. - -To display the type of pricing next to the product price, navigate to :menuselection:`Website --> -Site --> Homepage --> Shop`, select a product, then click :guilabel:`Edit` and, in the -:guilabel:`Customize` tab, enable :guilabel:`Tax Indication`. - -.. image:: price_management/price-tax-display-type.png - :alt: Tax type displayed on the product page. - -.. seealso:: - :doc:`/applications/finance/accounting/taxes/B2B_B2C` - -Price per unit -============== - -It is possible to display a :doc:`price per unit -<../../../inventory_and_mrp/inventory/product_management/configure/uom>` on the product page. To do -that, go to :menuselection:`Website --> Configuration --> Settings` and enable :guilabel:`Product -Reference Price` under the :guilabel:`Shop - Products` section. When enabled, ensure an amount is -set in the :guilabel:`Base Unit Count` field of the product template, and in the :guilabel:`Sales -Price` field. - -.. image:: price_management/price-cost-per-unit.png - :alt: Cost per unit pricing on the product template. - -The price per unit of measure can be found above the :guilabel:`Add to Cart` button on the product -page. - -.. image:: price_management/price-cost-per-unit-page.png - :alt: Cost per unit pricing on the product page. - -.. note:: - Pay attention that having the price per unit may be **mandatory** in some countries. - -.. seealso:: - :doc:`../../../inventory_and_mrp/inventory/product_management/configure/uom` - -.. _ecommerce/pricelists: - -Pricelists -========== - -Pricelists are the primary tool to manage prices on an eCommerce website. They make it possible to -define website-specific prices - different from the price on the product template - based on the -country group, currency, minimum quantity, period, or variant. - -.. seealso:: - :doc:`/applications/sales/sales/products_prices/prices/pricing` - -Understanding default pricelists --------------------------------- - -The concept of a default pricelist in Odoo depends on the application being used. In the **Sales** -app, a customer's default pricelist is determined by their contact profile. If a pricelist is -manually assigned to a contact, the pricelist becomes their default. If no pricelist is assigned, -the default is the first pricelist listed. - -In the **eCommerce** app,the default pricelist is assigned at the website level. However, it is -influenced by the user's login status and country group settings. - -How pricelists are applied in eCommerce ---------------------------------------- - -If a portal user has a specific pricelist assigned to their contact profile, that pricelist is -applied to their purchase. However, if that pricelist is **not** assigned to the website they are -visiting, the user sees the website's default pricelist. - -.. note:: - The default website pricelist is the first available pricelist assigned to a website, without the - country group setting configured. - -Public, non-logged in users, see the website's default pricelist. - -If a pricelist includes a country group, Odoo checks the visitor's IP address and applies the -corresponding pricelist. If a visitor has a pricelist assigned in their contact profile, that -pricelist takes precedence over the country-based pricelist, unless the assigned pricelist has a -different country group. - -.. example:: - A customer from the United States visits the website. They do not have a portal account. The - :guilabel:`United States` pricelist is applied. - - A different visitor, also from the United States, has the :guilabel:`Loyal Customer Discount` - pricelist assigned in their contact record. This assignment takes precedence over the country - group assignation, so the :guilabel:`Loyal Customer Discount` is applied. - - .. image:: price_management/pricelists-example.png - :alt: An example of various pricelists assigned to a website. - -Pricelist configuration ------------------------ - -To activate pricelists, navigate to :menuselection:`Website --> Configuration --> Settings`, scroll -down to the :guilabel:`Shop - Products` section, enable the :guilabel:`Pricelist` feature, then -click :guilabel:`Save`. Once pricelists have been activated, go to :menuselection:`Website --> -eCommerce --> Pricelists` to configure them. - -Preventing sales if price is zero -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The :guilabel:`Prevent Sale of Zero Priced Product` feature prevents customers from purchasing a -product if the sales price is listed as `0`. When this feature is enabled, instead of seeing -:guilabel:`Add to Cart` when attempting to purchase a product, they see :guilabel:`Contact Us`. This -feature is useful for companies that want to hide the prices of their products. - -To utilize this feature, first navigate to :menuselection:`Website --> Configuration --> Settings` -and tick the :guilabel:`Prevent Sale of Zero Priced Product` checkbox, then click :guilabel:`Save`. - -Next, create a pricelist that sets all product prices to `0`. Ensure the pricelist is assigned to -the correct website and is listed first among the website's pricelists. - -Selectable pricelists -~~~~~~~~~~~~~~~~~~~~~ - -*Selectable pricelists* appear in the shop page's pricelist drop-down menu. When a pricelist is -designated as :guilabel:`Selectable`, it allows the customer to choose between available pricelists. - -.. important:: - If a pricelist is designated as :guilabel:`Selectable`, and is not assigned to a specific - website, then the pricelist is selectable on **all** websites. - -If a pricelist is designated as :guilabel:`Selectable`, it appears in the drop-down menu next to the -search bar. However, if a pricelist does *not* appear in the drop-down menu, it may be for one of -the following reasons: - -- If there is only one selectable pricelist, and the contact is assigned a pricelist, the drop-down - may not appear. -- If multiple selectable pricelists exist and match a visitor's country group, only those pricelists - are shown in the drop-down. - -Foreign currency ----------------- - -If you are selling in **multiple currencies** and have pricelists in foreign currencies, customers -can select their corresponding pricelist anywhere on the :guilabel:`Shop` page from the drop-down -menu next to the search bar. - -.. image:: price_management/price-pricelists.png - :alt: Pricelists selection. - -.. seealso:: - - :doc:`/applications/sales/sales/products_prices/prices/pricing` - - :doc:`/applications/sales/sales/products_prices/prices/currencies` - -Permanent discount -================== - -If you have permanently reduced the price of a product, a popular means to attract customers is the -**strikethrough** strategy. The strategy consists in displaying the previous price crossed out and -the **new discounted price** next to it. - -.. image:: price_management/price-strikethrough.png - :alt: Price strikethrough. - -To display a 'striked' price, enable the :guilabel:`Comparison Price` option under -:menuselection:`Website --> Configuration --> Settings --> Shop - Products category`. Then, head to -the product's template (:menuselection:`Website --> eCommerce --> Products`), and in the -:guilabel:`Compare to Price` field, enter the **new** price. - -.. note:: - If a pricelist contains a :ref:`Discount ` price type, the striked - price is visible to applicable customers. This is true even if the :guilabel:`Comparison Price` - feature has not been enabled. diff --git a/content/applications/websites/ecommerce/products/price_management/price-cost-per-unit.png b/content/applications/websites/ecommerce/products/price_management/price-cost-per-unit.png deleted file mode 100644 index 9c6e5fe2b9..0000000000 Binary files a/content/applications/websites/ecommerce/products/price_management/price-cost-per-unit.png and /dev/null differ diff --git a/content/applications/websites/ecommerce/products/price_management/price-pricelists.png b/content/applications/websites/ecommerce/products/price_management/price-pricelists.png deleted file mode 100644 index 3f72887807..0000000000 Binary files a/content/applications/websites/ecommerce/products/price_management/price-pricelists.png and /dev/null differ diff --git a/content/applications/websites/ecommerce/products/prices.rst b/content/applications/websites/ecommerce/products/prices.rst new file mode 100644 index 0000000000..e6de404761 --- /dev/null +++ b/content/applications/websites/ecommerce/products/prices.rst @@ -0,0 +1,330 @@ +====== +Prices +====== + +Odoo offers multiple options to configure prices on the ecommerce. For example, you can apply +:ref:`prices per unit `, offer :ref:`discounts +`, and set up :ref:`pricelists `. + +.. _ecommerce/prices/taxes: + +Taxes +===== + +To add a tax on a product, you can either set a tax in the :guilabel:`Customer Taxes` field of the +**product template** or use :doc:`fiscal positions +`. + +.. seealso:: + - :doc:`/applications/finance/accounting/taxes` + - :doc:`/applications/finance/accounting/taxes/avatax` + +.. _ecommerce-price-management-tax-display: + +Choosing the displayed price tax usually depends on a country's regulations or the type of customers +(B2B vs. B2C). To select the type of price displayed, go to :menuselection:`Website --> +Configuration --> Settings`, select the website, scroll down to the +:guilabel:`Shop - Products` section, and under :guilabel:`Display Product Prices` select between: + +- :guilabel:`Tax Excluded`: the price displayed on the website is tax-excluded, and the tax is + computed at the :ref:`order review ` step; +- :guilabel:`Tax Included`: the price displayed on the website is tax-included. + +.. note:: + This setting is website-specific and can therefore be configured independently for every + website in the database. + +.. tip:: + Switch the :ref:`Tax indication ` toggle on in the + website editor to explicitly indicate if the price is `Tax excluded` or `Tax included` on the + product page. + +.. _ecommerce/prices/price-per-unit: + +Price per unit +============== + +To display a :doc:`price per unit +` alongside the sales +price on the product page, follow these steps: + +#. Go to :menuselection:`Website --> Configuration --> Settings`, scroll to the + :guilabel:`Shop - Products` section, and enable :guilabel:`Product Reference Price`. +#. :ref:`Navigate to the product form `. +#. Set the product's :guilabel:`Sales price` and select the unit (e.g., :guilabel:`Units`). +#. In the :guilabel:`Base Unit Count` field, enter the number of units in the product, then + select the relevant unit from the dropdown list. + +.. example:: + Imagine you want to sell a 2-liter bucket of paint for $60, i.e., $30 per liter. + + .. image:: prices/prices-per-unit.png + :alt: Cost per unit pricing on the product form. + + The price per units, in this case per liter, is shown next to the sales price on the + product page. + + .. image:: prices/price-cost-per-unit-page.png + :alt: Unit pricing on the product page. + +.. note:: + The price per unit may be mandatory in some countries. + +.. seealso:: + :doc:`/applications/inventory_and_mrp/inventory/product_management/configure/uom` + +.. _ecommerce/prices/pricelists: + +Pricelists +========== + +Pricelists in Odoo allow to manage flexible pricing rules and to offer different prices and +discounts based on currencies, time periods, purchase volumes, :ref:`customers' location +`, and/or customer type. +To enable pricelists for eCommerce, go to :menuselection:`Website --> Configuration --> Settings`, +scroll down to the :guilabel:`Shop - Products` section, enable :guilabel:`Pricelists`, and +:guilabel:`Save`. Then, click :guilabel:`Pricelists` or go to :menuselection:`Website --> eCommerce +--> Pricelists` and :ref:`configure ` the relevant +pricelists. + +In the :guilabel:`Ecommerce` tab, configure options specific to online sales, such as assigning a +:guilabel:`Website` to a pricelist, allowing customers to :ref:`select it +`, and/or adding an :ref:`E-commerce Promotional Code +`. + +.. tip:: + - If you are using several websites and you want to use the same pricelist on several of them, + you need to duplicate the pricelist for each website. If you do not assign any + website, the pricelist will not be used, unless it is :ref:`selectable + `. + - Pricelists can also be :ref:`assigned to a specific customer + `. + +.. note:: + - When pricelists are enabled in the Sales app, they are automatically enabled in the eCommerce + app, and vice versa. + - In the list of pricelists, order the pricelists by priority: the first takes + precedence over the second, the second over the third, and so on. + - It is also possible to create specific pricelists for :ref:`variants + `. + +.. seealso:: + :doc:`/applications/sales/sales/products_prices/prices/pricing` + +.. _ecommerce/prices/selectable-pricelists: + +Selectable pricelists +--------------------- + +Selectable pricelists are useful, for example, when selling products in :doc:`multiple currencies +` and allow customers to +choose a pricelist using the catalog's pricelist selector located next to the :ref:`search bar +`. + +.. image:: prices/pricelist-selector.png + :alt: Pricelist selector on the ecommerce. + +To make a pricelist selectable, enable :guilabel:`Selectable`. + +.. note:: + - If a pricelist is designated as :guilabel:`Selectable`, and is not assigned to a specific + website, then the pricelist is selectable on **all** websites. + - If a pricelist does *not* appear in the selector, it may be due to the following situations: + + - Only one pricelist is defined as :guilabel:`Selectable` and the :ref:`contact has a + pricelist assigned `. + - Multiple selectable pricelists exist, but only those matching the customer's :ref:`country + group ` are shown. It is strongly recommended to disable + the :guilabel:`Selectable` option when using pricelists with country groups on the + ecommerce. + +.. seealso:: + :ref:`sales/products/currencies/currency-specific-pricelists` + +.. _ecommerce/prices/geoip: + +GeoIP & country groups +---------------------- + +It is possible to display a specific pricelist based on the visitor's location and IP address by +assigning :ref:`country groups ` to pricelists. + +.. _ecommerce/prices/country-groups: + +To do so, :ref:`navigate to the relevant pricelist form ` and select +the appropriate :guilabel:`Country Groups`. Create or edit as many pricelists for specific regions +as needed. For instance, select :guilabel:`European Union` to apply the pricelist to all EU member +states. + +To create a new country group, click :guilabel:`Search more` in the dropdown list, then +:guilabel:`New`. Add a :guilabel:`Group Name` and select the relevant :guilabel:`Countries`. +Use :ref:`Custom filters ` if needed. + +.. note:: + Each country group must contain at least one country. + +.. example:: + Use the following filter if you want to add all non-EU countries to the country group. + + `Country Group` + `is not in` + `European Union` + + .. image:: prices/pricelist-country-groups.png + :alt: Filter for country group creation. + +.. important:: + - When using GeoIP to determine the appropriate pricelist, **all** pricelists used on the + ecommerce must have a country group assigned. + - It is strongly recommended to disable the :guilabel:`Selectable` option when using pricelists + with country groups. Indeed, all pricelists with the relevant country group are automatically + applied to the catalog but if one of them is marked as :ref:`Selectable + `, the others will disappear as soon as customers + select the selectable pricelist. + + .. example:: + Imagine you create three pricelists: + + - `EU regular prices` with the `EU` country group assigned + - `EU prices with discounts` with the `EU` country group assigned + - `US prices` with the `US` country group assigned + + If the :guilabel:`Selectable` option is enabled for `EU regular prices` and + `US prices`, and the customer is from the European Union, only the pricelists + `EU regular prices` and `EU prices with discounts` will be available. However, since the + `EU prices with discount` list is not selectable, it will disappear once the customer selects + the `EU regular prices` list and prices will be displayed based on the `EU regular prices` + pricelist on the catalog. + +Pricelist application +--------------------- + +On the ecommerce, the *default* pricelist is automatically selected for public, non-logged in users +when no country group is assigned. If :ref:`GeoIP and country groups ` are +used, public users see the pricelist of their country group by default. Logged-in users with +:ref:`assigned pricelists ` see the assigned +pricelist by default **if it is assigned to the website** they are visiting. If not, the website's +default pricelist is applied (i.e., the first available pricelist assigned to the website and +without a country group, following the sequence order). + +Assigned pricelists take precedence over country-based pricelists, when applicable, unless the +assigned pricelist is linked to a different country group. + +.. example:: + A customer from the United States visits the website. They do not have a portal account. The + :guilabel:`United States` pricelist is applied. + + A different visitor, also from the United States, has the :guilabel:`Loyal Customer Discount` + pricelist assigned in their contact form. This assignment takes precedence over the country + group assignation, so the :guilabel:`Loyal Customer Discount` is applied. + + .. image:: prices/pricelists-example.png + :alt: An example of various pricelists assigned to a website. + + +.. _ecommerce/prices/discounts: + +Discounts +========= + +Discounts programs +------------------ + +To enable :doc:`discount programs ` +for your ecommerce, go to :menuselection:`Website --> Configuration --> Settings`, scroll +down to the :guilabel:`Shop - Products` section, and enable the :guilabel:`Discounts, Loyalty & Gift +Card` feature. + +:ref:`Configure ` the discount program, make sure the +:guilabel:`Website` option is enabled, and add the relevant :ref:`Pricelist +` and :guilabel:`Website` on the program form, if needed. + +.. _ecommerce/prices/permanent-discounts: + +Permanent product discount +-------------------------- + +If the price of a specific product has been permanently reduced, the strikethrough strategy is +commonly used. This involves showing the new discounted price, with the original price crossed out +alongside it. + +.. image:: prices/price-strikethrough.png + :alt: Price strikethrough. + +To display a permanently discounted price, navigate to :menuselection:`Website --> Configuration +--> Settings`, scroll down to the :guilabel:`Shop - Products`, enable the :guilabel:`Comparison +Price` option, and :guilabel:`Save`. Then, :ref:`go to the product form +`, enter the new (discounted) price in the +:guilabel:`Sales Price` field and the original one (strikethrough) in the +:guilabel:`Compare to Price` field. + +.. note:: + The :guilabel:`Compare to Price` field must contain a price that is higher than the + :guilabel:`Sales Price` for the original price to appear with a strikethrough. + +.. important:: + The :guilabel:`Compare to Price` is not displayed if discounted pricelists apply. If you want to + use the :guilabel:`Compare to price` with another discount, configure a pricelist with a + :ref:`promotional code `. + +Discounted pricelists +--------------------- + +It is also possible to create :ref:`pricelists with discounts `. +To do so, :ref:`create a pricelist ` and +:ref:`configure the discount `. + +If a :ref:`pricelist ` contains a :ref:`Discount +` price type, the price is striked through for applicable customers, +even if the :ref:`Comparison Price ` feature has not been +enabled. + +.. note:: + If using pricelists with :ref:`country groups `, the discounted pricelist + must be assigned the same country group as the one used for the non-discounted pricelist. + +.. _ecommerce/prices/promotional-code: + +E-commerce promotional code +--------------------------- + +To offer a discounted pricelist for customers with a specific discount code, access the relevant +:ref:`pricelist form `, go to the :guilabel:`Ecommerce` tab, and add +an :guilabel:`E-commerce Promotional Code`, e.g., `SUMMERSALE10%`. Then, go to the :guilabel:`Price +Rules` tab, click :guilabel:`Add a line`, and :ref:`configure the discount +`. When a customer inserts the code during the :ref:`checkout process +`, this discount is granted according to the :guilabel:`Price +Rules` configuration. + +.. note:: + Make sure that the :ref:`Promo Code ` option + in the website editor is enabled and, if using :ref:`country groups + `, that the discounted pricelist has the same country group + assigned as the non-discounted pricelist. + +.. _ecommerce/prices/hide-prices: + +Hide prices +=========== + +Some businesses, such as B2B shops or companies that sell luxury or custom items, often prefer to +showcase their products online without displaying their prices. + +To hide product prices on the ecommerce, go to :menuselection:`Website --> Configuration --> +Settings`, enable :guilabel:`Prevent Sale of Zero Priced Product` in the :guilabel:`Shop - +Products` section, and enter a redirect URL in the :guilabel:`Button URL` field. The +:guilabel:`Add to Cart` button on the product page is then replaced by a :guilabel:`Contact us` +button, which can be :ref:`customized ` if needed. + +After enabling this feature, either set the price to `0` for all desired products or create a +:ref:`pricelist ` with all product prices set to `0`. Ensure the +pricelist is assigned to the correct website and is listed first among the website's pricelists. + +.. tip:: + - Ensure no pricelist used on the ecommerce has been marked as :guilabel:`Selectable` to prevent + accidentally displaying the zero-priced pricelist. + - To hide prices from public visitors while keeping them visible to logged-in customers, create a + zero-priced pricelist to be used for non-logged-in customers and :ref:`assign + ` a regular pricelist (with actual prices) to + customers with :ref:`portal access `. + +.. seealso:: + :doc:`../customer_accounts` diff --git a/content/applications/websites/ecommerce/products/price_management/price-cost-per-unit-page.png b/content/applications/websites/ecommerce/products/prices/price-cost-per-unit-page.png similarity index 100% rename from content/applications/websites/ecommerce/products/price_management/price-cost-per-unit-page.png rename to content/applications/websites/ecommerce/products/prices/price-cost-per-unit-page.png diff --git a/content/applications/websites/ecommerce/products/price_management/price-strikethrough.png b/content/applications/websites/ecommerce/products/prices/price-strikethrough.png similarity index 100% rename from content/applications/websites/ecommerce/products/price_management/price-strikethrough.png rename to content/applications/websites/ecommerce/products/prices/price-strikethrough.png diff --git a/content/applications/websites/ecommerce/products/price_management/price-tax-display-type.png b/content/applications/websites/ecommerce/products/prices/price-tax-display-type.png similarity index 100% rename from content/applications/websites/ecommerce/products/price_management/price-tax-display-type.png rename to content/applications/websites/ecommerce/products/prices/price-tax-display-type.png diff --git a/content/applications/websites/ecommerce/products/prices/pricelist-country-groups.png b/content/applications/websites/ecommerce/products/prices/pricelist-country-groups.png new file mode 100644 index 0000000000..a589d3dbc3 Binary files /dev/null and b/content/applications/websites/ecommerce/products/prices/pricelist-country-groups.png differ diff --git a/content/applications/websites/ecommerce/products/prices/pricelist-selector.png b/content/applications/websites/ecommerce/products/prices/pricelist-selector.png new file mode 100644 index 0000000000..466bc178d3 Binary files /dev/null and b/content/applications/websites/ecommerce/products/prices/pricelist-selector.png differ diff --git a/content/applications/websites/ecommerce/products/price_management/pricelists-example.png b/content/applications/websites/ecommerce/products/prices/pricelists-example.png similarity index 100% rename from content/applications/websites/ecommerce/products/price_management/pricelists-example.png rename to content/applications/websites/ecommerce/products/prices/pricelists-example.png diff --git a/content/applications/websites/ecommerce/products/prices/prices-per-unit.png b/content/applications/websites/ecommerce/products/prices/prices-per-unit.png new file mode 100644 index 0000000000..1ab23fc5ea Binary files /dev/null and b/content/applications/websites/ecommerce/products/prices/prices-per-unit.png differ diff --git a/content/applications/websites/website/configuration/multi_website.rst b/content/applications/websites/website/configuration/multi_website.rst index 1189b1e05c..0f65e91d35 100644 --- a/content/applications/websites/website/configuration/multi_website.rst +++ b/content/applications/websites/website/configuration/multi_website.rst @@ -131,7 +131,7 @@ Pricing ------- Products can be priced differently based on the website using :ref:`pricelists -`. The following configuration is required: +`. The following configuration is required: #. Go to :menuselection:`Website --> Configuration --> Settings`. #. Scroll down to the :guilabel:`Shop - Products` section and select the :guilabel:`Pricelists` diff --git a/redirects/18.0.txt b/redirects/18.0.txt index 84a760f696..99b95d79a3 100644 --- a/redirects/18.0.txt +++ b/redirects/18.0.txt @@ -43,13 +43,13 @@ applications/productivity/voip/transfer_forward.rst applications/productivity/vo # applications/websites -applications/websites/ecommerce/cart.rst applications/websites/ecommerce/checkout.rst applications/websites/website/pages/menus.rst applications/websites/website/pages/header_footer.rst applications/websites/website/building_blocks/dynamic_content.rst applications/websites/website/building_blocks.rst applications/websites/website/building_blocks/features.rst applications/websites/website/building_blocks.rst applications/websites/website/building_blocks/inner_content.rst applications/websites/website/building_blocks.rst applications/websites/website/building_blocks/structure.rst applications/websites/website/building_blocks.rst -applications/websites/website/pages/menus.rst applications/websites/website/pages/header_footer.rst applications/websites/website/pages/header_footer.rst applications/websites/website/structure/header_footer.rst applications/websites/website/pages.rst applications/websites/website/structure/pages.rst applications/websites/website/pages/seo.rst applications/websites/website/structure/seo.rst +applications/websites/ecommerce/products/price_management.rst applications/websites/ecommerce/products/prices.rst +applications/websites/ecommerce/cart.rst applications/websites/ecommerce/checkout.rst