From 4954aabef4d8474d7fd22ef54eb9859d63c47905 Mon Sep 17 00:00:00 2001 From: lman-odoo Date: Wed, 5 Nov 2025 07:08:32 +0000 Subject: [PATCH] [IMP] website/ecommerce: update prices page task-5081738 X-original-commit: f43889f7f3c96c387fd816ea02e352fc06e1dd57 --- .../websites/ecommerce/products/prices.rst | 37 +++++++++--------- .../products/prices/create-country-group.png | Bin 0 -> 5818 bytes .../prices/pricelist-country-groups.png | Bin 4366 -> 0 bytes 3 files changed, 19 insertions(+), 18 deletions(-) create mode 100644 content/applications/websites/ecommerce/products/prices/create-country-group.png delete mode 100644 content/applications/websites/ecommerce/products/prices/pricelist-country-groups.png diff --git a/content/applications/websites/ecommerce/products/prices.rst b/content/applications/websites/ecommerce/products/prices.rst index e6de404761..8bcdb4542b 100644 --- a/content/applications/websites/ecommerce/products/prices.rst +++ b/content/applications/websites/ecommerce/products/prices.rst @@ -11,8 +11,8 @@ Odoo offers multiple options to configure prices on the ecommerce. For example, 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 +To add a tax on a product, you can either set a tax in the :guilabel:`Sales Taxes` field of the +product form or use :doc:`fiscal positions `. .. seealso:: @@ -24,10 +24,10 @@ To add a tax on a product, you can either set a tax in the :guilabel:`Customer T 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:`eCommerce` 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; + computed at the :ref:`order summary ` step; - :guilabel:`Tax Included`: the price displayed on the website is tax-included. .. note:: @@ -49,9 +49,9 @@ To display a :doc:`price per unit 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`. + :guilabel:`eCommerce` 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`). +#. 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. @@ -82,7 +82,7 @@ Pricelists in Odoo allow to manage flexible pricing rules and to offer different 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 +scroll down to the :guilabel:`eCommerce` section, enable :guilabel:`Pricelists`, and :guilabel:`Save`. Then, click :guilabel:`Pricelists` or go to :menuselection:`Website --> eCommerce --> Pricelists` and :ref:`configure ` the relevant pricelists. @@ -166,9 +166,9 @@ Use :ref:`Custom filters ` if needed. .. 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` + `Country Groups` + `is not equal to` + `European Union` - .. image:: prices/pricelist-country-groups.png + .. image:: prices/create-country-group.png :alt: Filter for country group creation. .. important:: @@ -199,7 +199,8 @@ 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 +used, public users see the pricelist of their country group by default. :ref:`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 @@ -230,7 +231,7 @@ 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 +down to the :guilabel:`eCommerce` section, and enable the :guilabel:`Discounts, Loyalty & Gift Card` feature. :ref:`Configure ` the discount program, make sure the @@ -250,7 +251,7 @@ alongside it. :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 +--> Settings`, scroll down to the :guilabel:`eCommerce`, 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 @@ -288,11 +289,11 @@ 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 +an :guilabel:`E-commerce Promotional Code`, e.g., `SUMMERSALE10%`. Then, go to the :guilabel:`Sales +Price` 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. +`, this discount is granted according to the :guilabel:`Sales +Price` configuration. .. note:: Make sure that the :ref:`Promo Code ` option @@ -309,8 +310,8 @@ Some businesses, such as B2B shops or companies that sell luxury or custom items 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 +Settings`, enable :guilabel:`Prevent Sale of Zero Priced Product` in the :guilabel:`eCommerce` +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. diff --git a/content/applications/websites/ecommerce/products/prices/create-country-group.png b/content/applications/websites/ecommerce/products/prices/create-country-group.png new file mode 100644 index 0000000000000000000000000000000000000000..4258c7bd1290ae0b926605bd43872c11769184fb GIT binary patch literal 5818 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 literal 0 HcmV?d00001 diff --git a/content/applications/websites/ecommerce/products/prices/pricelist-country-groups.png b/content/applications/websites/ecommerce/products/prices/pricelist-country-groups.png deleted file mode 100644 index a589d3dbc37e6a9900a141288f529e1d137e7cff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4366 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