Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions content/applications/websites/ecommerce.rst
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,6 @@ products and increase your average cart sizes.
ecommerce/payments
ecommerce/shipping
ecommerce/order_handling
ecommerce/b2b_b2c
ecommerce/customer_accounts
ecommerce/performance
124 changes: 124 additions & 0 deletions content/applications/websites/ecommerce/b2b_b2c.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
===========
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
----------------------

Use the :guilabel:`Show B2B fields` toggle in the :doc:`website editor <../website/web_design>`
to display B2B-specific additional fields like :guilabel:`VAT` or
:guilabel:`Company Name` during the :ref:`delivery <ecommerce/checkout/delivery>` step.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 3 additions & 4 deletions content/applications/websites/ecommerce/checkout.rst
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,8 @@ checkout options.

.. tip::
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
setup.
<ecommerce/customer_accounts/checkout-access>` for specific customers, e.g., in a :doc:`B2B
<b2b_b2c>` business setup.

.. _ecommerce/checkout/review_order:

Expand Down Expand Up @@ -195,8 +195,7 @@ addresses are identical), and click :guilabel:`Confirm` to proceed to the next s

.. tip::
- 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`
option in the website editor.
:ref:`B2B fields <ecommerce/b2b_b2c/b2b-fields>` in the website editor.
- 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`. Under the :guilabel:`Shop -
Checkout Process` section, enable the :guilabel:`Newsletter` feature and select a
Expand Down
18 changes: 11 additions & 7 deletions content/applications/websites/ecommerce/customer_accounts.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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/shop-access>`, the :ref:`checkout
<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>`
by clicking their username in the top-right corner of the screen and selecting :guilabel:`My
Expand Down Expand Up @@ -35,6 +35,8 @@ of the following options:
- :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.

.. _ecommerce/customer_accounts/grant-access:

To send an email invitation to a customer:

- Go to :menuselection:`Website --> eCommerce --> Customers`.
Expand All @@ -56,9 +58,9 @@ instructions on setting a password and activating their account.
.. note::
- When selecting the :guilabel:`Free sign up`, a clickable :guilabel:`Don't have an account?`
link appears under the login form on the website.
- The :guilabel:`On invitation` option is especially useful for B2B businesses that prefer
to keep :ref:`prices hidden <ecommerce/prices/hide-prices>` on the website and grant access
only to invited customers.
- The :guilabel:`On invitation` option is especially useful for :ref:`B2B
<ecommerce/b2b_b2c/prices>` businesses that prefer to keep :ref:`prices hidden
<ecommerce/prices/hide-prices>` on the website and grant access only to invited customers.

.. tip::
It is possible to configure a website form with a :guilabel:`Create a Customer` :ref:`action
Expand Down Expand Up @@ -119,14 +121,16 @@ following options are available:
- To use the :ref:`wishlist <ecommerce/products/wishlists>` feature, customers must
create an account to save their favorite items for later.

.. _ecommerce/customer_accounts/multiple-websites:

Multi-website account
=====================

When managing multiple websites, it is possible to make customer accounts available across *all*
websites, allowing each customer to use a single account. To do so, go to :menuselection:`Website
--> Configuration --> Settings`, in the :guilabel:`Privacy` section, enable :guilabel:`Shared
--> Configuration --> Settings`, in the :guilabel:`Privacy` section, enable the :guilabel:`Shared
Customer Accounts` option.

.. note::
When operating both B2B and B2C online shops, it's recommended to use separate websites for each
business model.
When operating both :ref:`B2B and B2C online shops <ecommerce/b2b_b2c/multiple-websites>`, it is
recommended to use separate websites for each business model.
6 changes: 3 additions & 3 deletions content/applications/websites/ecommerce/order_handling.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Depending on the type of business (B2B or B2C), an invoice can either be generated automatically
(B2B) or on demand of the customer (B2C). This process can be automated if (and when) the online
payment is :ref:`confirmed <handling/sales>`.
Depending on your needs, an invoice can either be generated automatically or on demand of the
customer. This process can be automated if (and when) the online payment is :ref:`confirmed
<handling/sales>`.

To automate invoicing, go to :menuselection:`Website --> Configuration --> Settings` and in the
:guilabel:`Invoicing` section, enable :guilabel:`Automatic Invoice`.
17 changes: 10 additions & 7 deletions content/applications/websites/ecommerce/products/prices.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ To add a tax on a product, you can either set a tax in the :guilabel:`Customer T
.. _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
(:doc:`B2B vs. B2C <../b2b_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
Expand All @@ -35,9 +35,12 @@ Configuration --> Settings`, select the website, scroll down to the
website in the database.

.. tip::
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
product page.
- 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
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:

Expand Down Expand Up @@ -305,8 +308,8 @@ Rules` configuration.
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.
Some businesses, such as :ref:`B2B shops <ecommerce/b2b_b2c/prices>` 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 -
Expand Down