[ADD] ecommerce/b2b-b2c: create B2B/B2C page

task-3339294

closes odoo/documentation#15269

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Larissa Manderfeld (lman) <lman@odoo.com>
This commit is contained in:
lman-odoo
2025-10-14 09:07:21 +02:00
parent c9e0e90dad
commit 5df8dc7e73
7 changed files with 152 additions and 20 deletions

View File

@@ -27,6 +27,7 @@ products and increase your average cart sizes.
ecommerce/checkout ecommerce/checkout
ecommerce/shipping ecommerce/shipping
ecommerce/order_handling ecommerce/order_handling
ecommerce/b2b_b2c
ecommerce/customer_accounts ecommerce/customer_accounts
ecommerce/performance ecommerce/performance
ecommerce/google_merchant_center ecommerce/google_merchant_center

View File

@@ -0,0 +1,125 @@
===========
B2B and B2C
===========
Odoo eCommerce is designed to fulfill the needs of both B2B and B2C companies. It allows you to
configure :doc:`prices <products/prices>`, manage :doc:`access <customer_accounts>` for specific
customers, and :ref:`customize the website <ecommerce/b2b_b2c/multiple-websites>` to support B2B,
B2C, or both business models.
.. _ecommerce/b2b_b2c/prices:
Prices
======
While B2C businesses sell directly to the end consumer with a :ref:`tax-included
<ecommerce-price-management-tax-display>` price, B2B businesses usually :ref:`exclude taxes
<ecommerce-price-management-tax-display>` and may even prefer to hide prices altogether, showcasing
only their products instead.
To configure a B2B-specific ecommerce shop, make sure the :ref:`Tax-Excluded
<ecommerce/prices/taxes>` option is enabled, and complete the configuration to :ref:`hide the
pricing <ecommerce/prices/hide-prices>`.
.. tip::
To make sure that only customers with an :ref:`account and granted access
<ecommerce/customer_accounts/account-creation>` can see the prices, go to
:menuselection:`Website --> eCommerce --> Customers`, click the :icon:`fa-caret-down`
:guilabel:`(dropdown)` icon from the search bar, and select the :guilabel:`Archived` filter.
Then click the :guilabel:`Public user` card, go to the :guilabel:`Sales & Purchase` tab, and
add the zero-priced pricelist configured to :ref:`cover all countries
<ecommerce/prices/country-groups>`. Keep the :guilabel:`Public User` contact :guilabel:`Archived`
at all times. Website visitors now see the products without prices, while only customers with an
:ref:`account invitation <ecommerce/customer_accounts/account-creation>` and an assigned
:ref:`pricelist <ecommerce/prices/pricelists>` can view the pricing in the customer portal.
.. seealso::
- :doc:`/applications/finance/accounting/taxes/B2B_B2C`
- :ref:`Discounts <ecommerce/prices/discounts>`
Access request
==============
When running a B2B business, you usually :ref:`hide the pricing <ecommerce/b2b_b2c/prices>` on the
web shop and make it available for :ref:`logged-in users <ecommerce/customer_accounts/shop-access>`
only. To prevent anyone from signing up freely, set the :ref:`Customer Account
<ecommerce/customer_accounts/account-creation>` setting option to :guilabel:`On invitation`.
To create a page where customers request access, open the :doc:`website editor
<../website/web_design>`, :ref:`create a form <website/building_blocks/form>`, customize it, and in
the :guilabel:`Action` field, select :guilabel:`Create a customer`.
.. tip::
You can assign tags created on a contact form under :menuselection:`Website --> Configuration
--> Customers` to identify what kind of customers have submitted the form. To do so, select
a field in the form while in :guilabel:`Edit` mode, click the :guilabel:`+ Field` button under
the :guilabel:`Customize` tab, and set the field's :guilabel:`Type` to :guilabel:`Tags`.
Toggle the tags that should be automatically assigned when a customer fills in the form and set
the field's :guilabel:`Visibility` to :guilabel:`Hidden`.
When a customer submits the form, a new contact is automatically created in the database. The
contact is assigned the first pricelist from the list of available pricelists, and, if applicable,
the specified tags.
Submitted requests can be found under the :menuselection:`Website --> eCommerce --> Customers`.
Select the customer you want to :ref:`grant portal access
<ecommerce/customer_accounts/grant-access>` to. Once done, the selected customer is able to
view the B2B prices and products. Make sure the correct pricelist is assigned to their
contact form.
.. tip::
- It is also possible to hide the entire shop from the public using the :ref:`Ecommerce Access
<ecommerce/customer_accounts/shop-access>` setting and only make it available for logged-in
customers.
- Configure the :ref:`checkout policy <ecommerce/customer_accounts/checkout-access>` to
allow/disallow guest checkout for B2C businesses.
- Enable the :ref:`Shared Customer Accounts <ecommerce/customer_accounts/multiple-websites>`
feature to allow customers to use the same account on :ref:`all
<ecommerce/b2b_b2c/multiple-websites>` your websites.
.. seealso::
:doc:`customer_accounts`
.. _ecommerce/b2b_b2c/multiple-websites:
Multiple websites
=================
Settings are website-specific, which means it is possible to configure different behaviors for
each website. For example, you can set up a B2C website that allows :ref:`guest checkout
<ecommerce/customer_accounts/checkout-access>` and displays :ref:`tax-included prices
<ecommerce-price-management-tax-display>`, and a B2B website that requires :ref:`sign-in
<ecommerce/customer_accounts/checkout-access>` and shows :ref:`tax-excluded prices
<ecommerce-price-management-tax-display>`. However, each :ref:`pricelist
<ecommerce/prices/pricelists>` can only be assigned to one website at a time. If you want to use
the same pricelist on several websites, duplicate the pricelist and assign each copy to its
corresponding website.
.. tip::
If you are running a B2B and B2C business, we *strongly* recommend to create two :doc:`separate
websites <../website/configuration/multi_website>` and assign a :ref:`zero-priced pricelist
<ecommerce/b2b_b2c/prices>` to the B2B website and a regular pricelist to the B2C website.
In case, you prefer using a single website, configure it using :ref:`country groups
<ecommerce/prices/country-groups>` and assigning :ref:`pricelists <ecommerce/prices/pricelists>`
to customers, and deactivate the :ref:`Selectable <ecommerce/prices/selectable-pricelists>`
option.
Additional features
===================
Invoice
-------
Depending on the type of business (B2B or B2C), you might want to issue an invoice. An invoice can
either be generated automatically (for B2B) or on demand of the customer (for B2C). This process
can be automated if (and when) the online payment is :ref:`confirmed <handling/sales>`.
To automate invoicing, enable the :ref:`Automatic Invoice <handling/legal>` setting. If this
feature has not been enabled, the customer only receives an order confirmation.
.. _ecommerce/b2b_b2c/b2b-fields:
B2B fields at checkout
----------------------
On the :guilabel:`Order summary` page, open the :doc:`website editor <../website/web_design>`, go to
the :guilabel:`Style` tab, and toggle the :guilabel:`Show B2B Fields` switch to display B2B-specific
additional fields like :guilabel:`VAT` or :guilabel:`Company Name` during the :ref:`delivery
<ecommerce/checkout/delivery>` step.

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@@ -144,8 +144,8 @@ checkout options.
.. tip:: .. tip::
Restrict access to the :ref:`shop <ecommerce/customer_accounts/shop-access>` and :ref:`checkout Restrict access to the :ref:`shop <ecommerce/customer_accounts/shop-access>` and :ref:`checkout
<ecommerce/customer_accounts/checkout-access>` for specific customers, e.g., in a B2B business <ecommerce/customer_accounts/checkout-access>` for specific customers, e.g., in a :doc:`B2B
setup. <b2b_b2c>` business setup.
.. _ecommerce/checkout/review_order: .. _ecommerce/checkout/review_order:
@@ -194,8 +194,7 @@ addresses are identical), and click :guilabel:`Confirm` to proceed to the next s
.. tip:: .. tip::
- For B2B customers, you can also :ref:`enable <ecommerce/checkout/customize_steps>` optional - For B2B customers, you can also :ref:`enable <ecommerce/checkout/customize_steps>` optional
:guilabel:`VAT` and :guilabel:`Company name` fields by toggling the :guilabel:`Show B2B Fields` :ref:`B2B fields <ecommerce/b2b_b2c/b2b-fields>` in the website editor.
option in the website editor.
- You can add a checkbox for users without an account to sign up for a newsletter. To do so, go - You can add a checkbox for users without an account to sign up for a newsletter. To do so, go
to :menuselection:`Website --> Configuration --> Settings`, scroll down to the to :menuselection:`Website --> Configuration --> Settings`, scroll down to the
:guilabel:`eCommerce` section, enable the :guilabel:`Newsletter` feature, and select a :guilabel:`eCommerce` section, enable the :guilabel:`Newsletter` feature, and select a

View File

@@ -6,7 +6,7 @@ Using customer accounts for an ecommerce shop enables you to :ref:`manage custom
<ecommerce/customer_accounts/account-creation>`, control access to the :ref:`shop <ecommerce/customer_accounts/account-creation>`, control access to the :ref:`shop
<ecommerce/customer_accounts/shop-access>`, the :ref:`checkout <ecommerce/customer_accounts/shop-access>`, the :ref:`checkout
<ecommerce/customer_accounts/checkout-access>`, or the :ref:`customer portal <portal/access>`, <ecommerce/customer_accounts/checkout-access>`, or the :ref:`customer portal <portal/access>`,
and support both B2B and B2C operations. and support both :doc:`B2B and B2C operations <b2b_b2c>`.
After logging in, customers can access their :doc:`customer portal <../../general/users/portal>` After logging in, customers can access their :doc:`customer portal <../../general/users/portal>`
by clicking their username in the top-right corner of the screen and selecting :guilabel:`My by clicking their username in the top-right corner of the screen and selecting :guilabel:`My
@@ -35,6 +35,8 @@ of the following options:
- :guilabel:`Free sign up`: Every website visitor can create an account and sign in. They will - :guilabel:`Free sign up`: Every website visitor can create an account and sign in. They will
get access to the :doc:`portal <../../general/users/portal>` by default. get access to the :doc:`portal <../../general/users/portal>` by default.
.. _ecommerce/customer_accounts/grant-access:
To send an email invitation to a customer: To send an email invitation to a customer:
- Go to :menuselection:`Website --> eCommerce --> Customers`. - Go to :menuselection:`Website --> eCommerce --> Customers`.
@@ -56,9 +58,9 @@ instructions on setting a password and activating their account.
.. note:: .. note::
- When selecting the :guilabel:`Free sign up`, a clickable :guilabel:`Don't have an account?` - When selecting the :guilabel:`Free sign up`, a clickable :guilabel:`Don't have an account?`
link appears under the login form on the website. link appears under the login form on the website.
- The :guilabel:`On invitation` option is especially useful for B2B businesses that prefer - The :guilabel:`On invitation` option is especially useful for :ref:`B2B
to keep :ref:`prices hidden <ecommerce/prices/hide-prices>` on the website and grant access <ecommerce/b2b_b2c/prices>` businesses that prefer to keep :ref:`prices hidden
only to invited customers. <ecommerce/prices/hide-prices>` on the website and grant access only to invited customers.
.. tip:: .. tip::
It is possible to configure a website form with a :guilabel:`Create a Customer` :ref:`action It is possible to configure a website form with a :guilabel:`Create a Customer` :ref:`action
@@ -119,6 +121,8 @@ available:
- To use the :ref:`wishlist <ecommerce/products/wishlists>` feature, customers must - To use the :ref:`wishlist <ecommerce/products/wishlists>` feature, customers must
create an account to save their favorite items for later. create an account to save their favorite items for later.
.. _ecommerce/customer_accounts/multiple-websites:
Multi-website account Multi-website account
===================== =====================
@@ -128,5 +132,5 @@ websites, allowing each customer to use a single account. To do so, go to :menus
Customer Accounts` option. Customer Accounts` option.
.. note:: .. note::
When operating both B2B and B2C online shops, it's recommended to use separate websites for each When operating both :ref:`B2B and B2C online shops <ecommerce/b2b_b2c/multiple-websites>`, it is
business model. recommended to use separate websites for each business model.

View File

@@ -104,9 +104,9 @@ Invoice and legal requirements
============================== ==============================
The final step of an ecommerce order is to generate the invoice and send it to the customer. The final step of an ecommerce order is to generate the invoice and send it to the customer.
Depending on the type of business (B2B or B2C), an invoice can either be generated automatically Depending on your needs, an invoice can either be generated automatically or on demand of the
(B2B) or on demand of the customer (B2C). This process can be automated if (and when) the online customer. This process can be automated if (and when) the online payment is :ref:`confirmed
payment is :ref:`confirmed <handling/sales>`. <handling/sales>`.
To automate invoicing, go to :menuselection:`Website --> Configuration --> Settings` and in the To automate invoicing, go to :menuselection:`Website --> Configuration --> Settings` and in the
:guilabel:`Invoicing` section, enable :guilabel:`Automatic Invoice`. :guilabel:`Invoicing` section, enable :guilabel:`Automatic Invoice`.

View File

@@ -22,8 +22,8 @@ product form or use :doc:`fiscal positions
.. _ecommerce-price-management-tax-display: .. _ecommerce-price-management-tax-display:
Choosing the displayed price tax usually depends on a country's regulations or the type of customers 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 --> (:doc:`B2B vs. B2C <../b2b_b2c>`). To select the type of price displayed, go to
Configuration --> Settings`, select the website, scroll down to the :menuselection:`Website --> Configuration --> Settings`, select the website, scroll down to the
:guilabel:`eCommerce` 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 - :guilabel:`Tax Excluded`: the price displayed on the website is tax-excluded, and the tax is
@@ -35,9 +35,12 @@ Configuration --> Settings`, select the website, scroll down to the
website in the database. website in the database.
.. tip:: .. tip::
Switch the :ref:`Tax indication <ecommerce/products/product-presentation>` toggle on in the - Switch the :ref:`Tax indication <ecommerce/products/product-presentation>` toggle on in the
website editor to explicitly indicate if the price is `Tax excluded` or `Tax included` on the website editor to explicitly indicate if the price is `Tax excluded` or `Tax included` on the
product page. product page.
- Enable specific :ref:`B2B fields <ecommerce/b2b_b2c/b2b-fields>` in the :ref:`delivery step
<ecommerce/checkout/delivery>` during the checkout using the :doc:`website editor
</applications/websites/website/web_design>`.
.. _ecommerce/prices/price-per-unit: .. _ecommerce/prices/price-per-unit:
@@ -306,8 +309,8 @@ Price` configuration.
Hide prices Hide prices
=========== ===========
Some businesses, such as B2B shops or companies that sell luxury or custom items, often prefer to Some businesses, such as :ref:`B2B shops <ecommerce/b2b_b2c/prices>` or companies that sell luxury
showcase their products online without displaying their prices. 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 --> To hide product prices on the ecommerce, go to :menuselection:`Website --> Configuration -->
Settings`, enable :guilabel:`Prevent Sale of Zero Priced Product` in the :guilabel:`eCommerce` Settings`, enable :guilabel:`Prevent Sale of Zero Priced Product` in the :guilabel:`eCommerce`