[IMP] subscriptions: update sub product doc
@ -2,136 +2,251 @@
|
|||||||
Subscription products
|
Subscription products
|
||||||
=====================
|
=====================
|
||||||
|
|
||||||
By closely integrating with the Odoo *Sales* app, the *Subscriptions* app enables users to sell
|
By closely integrating with the Odoo **Sales** app, the **Subscriptions** app enables users to sell
|
||||||
subscription products alongside regular sales products. While regular products are sold on a
|
subscription products and services alongside regular sales products. While regular products are sold
|
||||||
one-time basis, subscription products are sold on a renewing basis, generating recurring revenue.
|
on a one-time basis, subscription products and services are sold on a renewing basis, generating
|
||||||
|
recurring revenue.
|
||||||
In Odoo, subscription products are also called *recurring* products.
|
|
||||||
|
|
||||||
Configure recurrence periods
|
Configure recurrence periods
|
||||||
============================
|
============================
|
||||||
|
|
||||||
To get started with subscriptions, the *recurrence periods* must be properly configured, as needed.
|
To get started with subscriptions, the *Recurring Plans* **must** be properly configured, as needed.
|
||||||
|
|
||||||
Recurrence periods are the time periods in which subscriptions renew. They designate how often the
|
*Recurring Plans* represent the time periods in which subscriptions renew. They designate how often
|
||||||
customer pays for (and receives) subscription products.
|
the customer pays for (and receives) subscription products and services.
|
||||||
|
|
||||||
To configure recurrence periods, go to :menuselection:`Subscriptions app --> Configuration -->
|
To configure recurring plans, go to :menuselection:`Subscriptions app --> Configuration -->
|
||||||
Recurrence periods`.
|
Recurring Plans`.
|
||||||
|
|
||||||
.. image:: products/recurrence-periods-page.png
|
.. figure:: products/recurring-plans-page.png
|
||||||
:align: center
|
:align: center
|
||||||
:alt: The recurrence periods page in Odoo Subscriptions application.
|
:alt: The Recurring Plans page in Odoo Subscriptions application.
|
||||||
|
|
||||||
The *Subscriptions* app comes with some basic recurrence periods already configured:
|
The Recurring Plans page, under the Configuration menu, in Odoo Subscriptions application.
|
||||||
|
|
||||||
|
The *Subscriptions* app comes with some basic recurring plans already configured:
|
||||||
|
|
||||||
- :guilabel:`Monthly`
|
- :guilabel:`Monthly`
|
||||||
- :guilabel:`Quarterly`
|
|
||||||
- :guilabel:`Weekly`
|
|
||||||
- :guilabel:`2 Weeks`
|
|
||||||
- :guilabel:`Yearly`
|
- :guilabel:`Yearly`
|
||||||
- :guilabel:`3 Years`
|
- :guilabel:`6 Months`
|
||||||
- :guilabel:`5 Years`
|
|
||||||
|
|
||||||
New recurrence periods can be added and/or edited at any time.
|
New recurring plans can be added and/or edited at any time.
|
||||||
|
|
||||||
To create a new recurrence period, click :guilabel:`New` on the :guilabel:`Recurrence Periods` page.
|
To create a new recurring plans, click :guilabel:`New` on the :guilabel:`Recurring Plans` page.
|
||||||
Doing so reveals a blank recurrence period form.
|
Doing so reveals a blank recurring plan form.
|
||||||
|
|
||||||
.. image:: products/recurrence-period-form.png
|
.. image:: products/recurring-plan-form.png
|
||||||
:align: center
|
:align: center
|
||||||
:alt: A recurrence period form in Odoo Subscriptions application.
|
:alt: A Recurring Plan form in Odoo Subscriptions application.
|
||||||
|
|
||||||
Then, type in the :guilabel:`Name` and :guilabel:`Duration` of the recurrence period, and select the
|
Type in the :guilabel:`Name` of the plan at the top of the form.
|
||||||
:guilabel:`Unit` that defines the duration.
|
|
||||||
|
In the :guilabel:`Details` section, there are four fields to configure:
|
||||||
|
|
||||||
|
- :guilabel:`Billing Period`: designate the time period in which the customer is billed for their
|
||||||
|
subscription purchase. Start by choosing a number in the first field, then choose the unit of time
|
||||||
|
in the drop-down field to the right. The options are: :guilabel:`Weeks`, :guilabel:`Months`, or
|
||||||
|
:guilabel:`Years`.
|
||||||
|
|
||||||
.. important::
|
.. important::
|
||||||
The unit :guilabel:`Days` *cannot* be used as a recurrence period on subscriptions. The daily
|
The unit of *Days* **cannot** be used as a :guilabel:`Billing Period` option on subscriptions.
|
||||||
recurrence is meant for rentals, and **cannot** be added on recurring subscription sales orders.
|
The daily recurrence is meant for rentals. This limitation avoids sales orders that would
|
||||||
|
generate daily invoices.
|
||||||
|
|
||||||
This limitation is there to avoid sales orders that would generate daily invoices.
|
- :guilabel:`Automatic Closing`: designate a period of time after which the subscription is
|
||||||
|
automatically closed, if the subscription is unpaid or the payment method attached to the
|
||||||
|
subscription fails. The amount configured in this field is in :guilabel:`Days`.
|
||||||
|
- :guilabel:`Company`: choose which company in the database should be attached to this plan, if
|
||||||
|
working in a multi-company environment. If no selection is made, the plan applies to all companies
|
||||||
|
in the database.
|
||||||
|
- :guilabel:`Invoice Email Template`: choose to use a preconfigured email template for the automatic
|
||||||
|
invoicing of a subscription. If no selection is made, the invoice email is **not** sent
|
||||||
|
automatically.
|
||||||
|
|
||||||
|
In the :guilabel:`Self-Service` section, there are four optional fields:
|
||||||
|
|
||||||
|
- :guilabel:`Closable`: Tick this checkbox to allow the customer to close their subscription on
|
||||||
|
their own.
|
||||||
|
- :guilabel:`Add Products`: Tick this checkbox to allow customers to create an upsell quote to
|
||||||
|
adjust the quantity of products in their subscription. **Only** products list as *optional
|
||||||
|
products* can be modified.
|
||||||
|
- :guilabel:`Renew`: Tick this checkbox to allow customers to renew their subscription on their own.
|
||||||
|
- :guilabel:`Optional Plans`: Choose to allow customers to switch from this plan to another on their
|
||||||
|
quotation (new subscription or renewal), by selecting other recurring plans in this field.
|
||||||
|
Multiple options can be selected in this field.
|
||||||
|
|
||||||
|
In the :guilabel:`Pricing` tab, click :guilabel:`Add a price rule` to add :guilabel:`Products` to
|
||||||
|
the recurring plan, along with :guilabel:`Product Variants`, custom :guilabel:`Pricelist`, and
|
||||||
|
special :guilabel:`Recurring Price`, if desired.
|
||||||
|
|
||||||
|
At the top of the form, there is a :guilabel:`Subscriptions` smart button that appears when there
|
||||||
|
are subscription sales orders related to that recurring plan.
|
||||||
|
|
||||||
Product form configuration
|
Product form configuration
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
To create a new subscription product, navigate to :menuselection:`Subscriptions app --> Products -->
|
To create a new subscription product, navigate to :menuselection:`Subscriptions app --> Products -->
|
||||||
Products`, and click :guilabel:`New`.
|
Products`, and click :guilabel:`New`. Doing so reveals a blank product form, which can be configured
|
||||||
|
and customized in a number of ways.
|
||||||
Doing so reveals a blank product form, which can be configured and customized in a number of ways.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
By default, the :guilabel:`Recurring` option is already enabled, prompting Odoo to recognize it
|
|
||||||
as a subscription product. Be sure to leave the :guilabel:`Recurring` and :guilabel:`Can be Sold`
|
|
||||||
options enabled.
|
|
||||||
|
|
||||||
The :guilabel:`Product Type` field is set to :guilabel:`Service` by default, as well. However,
|
|
||||||
subscription products *can* be set to other types, if needed.
|
|
||||||
|
|
||||||
.. important::
|
|
||||||
When creating a physical subscription product in the Odoo **Sales** application, the
|
|
||||||
:guilabel:`Invoicing Policy` must be set to :guilabel:`Ordered quantities`.
|
|
||||||
|
|
||||||
Setting it to :guilabel:`Delivered quantities` causes issues with invoice creation, and disrupts
|
|
||||||
the subscription process.
|
|
||||||
|
|
||||||
Similarly, when creating a physical subscription product in the Odoo **Subscriptions**
|
|
||||||
application, the :guilabel:`Invoicing Policy` must **not** be set to :guilabel:`Based on
|
|
||||||
Delivered Quantity (Manual)` for the same reasons.
|
|
||||||
|
|
||||||
.. image:: products/subscription-product-form.png
|
.. image:: products/subscription-product-form.png
|
||||||
:align: center
|
:align: center
|
||||||
:alt: A basic subscription product form in Odoo Subscriptions application.
|
:alt: A subscription product form being filled out in the Odoo Subscriptions application.
|
||||||
|
|
||||||
Time-based pricing
|
.. tip::
|
||||||
------------------
|
Subscription products can also be created in the **Sales** app, by navigating to
|
||||||
|
:menuselection:`Sales app --> Products --> Products`, clicking :guilabel:`New`, and ensure the
|
||||||
|
:guilabel:`Subscriptions` checkbox beneath the :guilabel:`Product` title field is ticked. Then,
|
||||||
|
follow the workflow detailed below.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
There are numerous fields and tabs that appear on product forms, but for this documentation, the
|
||||||
|
focus is mainly on the necessary fields and tabs that are directly related to subscription
|
||||||
|
products.
|
||||||
|
|
||||||
|
Give the subscription product a name in the :guilabel:`Product` field at the top of the form.
|
||||||
|
|
||||||
|
When creating a subscription product, via the **Subscriptions** app, the :guilabel:`Subscriptions`
|
||||||
|
checkbox on product forms is already ticked, prompting Odoo to recognize it as a subscription
|
||||||
|
product. Be sure to leave the :guilabel:`Subscriptions` and :guilabel:`Sales` checkboxes ticked.
|
||||||
|
|
||||||
|
Should an accompanying image of the product be added, hover the cursor over the :guilabel:`(camera
|
||||||
|
plus)` square to the right of the :guilabel:`Product` field, and click the :icon:`fa-pencil`
|
||||||
|
:guilabel:`(pencil)` icon, and upload the desired image.
|
||||||
|
|
||||||
|
General Information tab
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
The :guilabel:`Product Type` field is set to :ref:`Service <products/service>`, by default.
|
||||||
|
However, subscription products can be set to :ref:`Goods <products/goods>` or :ref:`Combo
|
||||||
|
<products/combo>`, if necessary. Depending on the :guilabel:`Product Type` selection, corresponding
|
||||||
|
fields appear on the left-side of the :guilabel:`General Information` tab.
|
||||||
|
|
||||||
|
All other fields on the right-side of the tab remain the same, and should be filled in accordingly.
|
||||||
|
|
||||||
|
.. _products/goods:
|
||||||
|
|
||||||
|
Product type: Goods
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
When creating a storable or consumable subscription product, select the :guilabel:`Goods` option.
|
||||||
|
Then, it is recommended to select the :guilabel:`Invoicing Policy` option: :guilabel:`Ordered
|
||||||
|
quantities`.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
Setting the :guilabel:`Invoicing Policy` to :guilabel:`Delivered quantities` causes issues with
|
||||||
|
the invoice creation, and disrupts the subscription process.
|
||||||
|
|
||||||
|
If creating a storable subscription product, the :guilabel:`Track Inventory` checkbox **must** be
|
||||||
|
ticked, and a selection from the drop-down field that appears **must** be chosen. The options are:
|
||||||
|
:guilabel:`By Unique Serial Number`, :guilabel:`By Lots`, or :guilabel:`By Quantity`.
|
||||||
|
|
||||||
|
If creating a consumable subscription product, do **not** tick the :guilabel:`Track Inventory`
|
||||||
|
checkbox.
|
||||||
|
|
||||||
|
If the **Repairs** application is installed, the option to :guilabel:`Create Repair` appears beneath
|
||||||
|
the :guilabel:`Track Inventory` checkbox. If ticked, the option to link an existing repair order to
|
||||||
|
a confirmed sales order becomes available.
|
||||||
|
|
||||||
|
.. _products/service:
|
||||||
|
|
||||||
|
Product type: Service
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
When creating a subscription service product, select the :guilabel:`Services` option. Then, unless
|
||||||
|
a specific option is needed, leave the :guilabel:`Create on Order` field set to the default
|
||||||
|
:guilabel:`Nothing` option.
|
||||||
|
|
||||||
|
In the :guilabel:`Invoicing Policy` field, it is recommended to set it to :guilabel:`Prepaid/Fixed
|
||||||
|
Price`. This means Odoo invoices ordered quantities as soon as the service is sold. The ability to
|
||||||
|
create projects or tasks later is still available, which can be linked to the sales order to track
|
||||||
|
time, if needed.
|
||||||
|
|
||||||
|
There is also an option to :guilabel:`Warn the salesperson for an upsell when work done exceeeds` a
|
||||||
|
predetermined percentage of hours sold, if desired.
|
||||||
|
|
||||||
|
If needed, tick the checkbox beside the :guilabel:`Plan Services` option, and select an employee
|
||||||
|
from the adjacent drop-down menu to plan shifts related to this order for employees with that
|
||||||
|
selected role. This field is **not** required.
|
||||||
|
|
||||||
|
If the **Repairs** application is installed, the option to :guilabel:`Create Repair` appears beneath
|
||||||
|
the :guilabel:`Track Inventory` checkbox. If ticked, the option to link an existing repair order to
|
||||||
|
a confirmed sales order becomes available.
|
||||||
|
|
||||||
|
.. _products/combo:
|
||||||
|
|
||||||
|
Product type: Combo
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
When creating a combination subscription product, select :guilabel:`Combo` as the :guilabel:`Product
|
||||||
|
Type`.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
When :guilabel:`Combo` is selected as the :guilabel:`Product Type`, some tabs on the form may
|
||||||
|
disappear, depending on what other applications are installed on the database.
|
||||||
|
|
||||||
|
Once the :guilabel:`Combo` option has been selected, the only field that remains on the right-side
|
||||||
|
of the :guilabel:`General Information` tab is the :guilabel:`Combo Choices` field.
|
||||||
|
|
||||||
|
In the :guilabel:`Combo Choices` field, select which pre-existing combo products should be included
|
||||||
|
in this subscription product. Multiple selections can be made.
|
||||||
|
|
||||||
|
To view and/or modify a combo selection in the :guilabel:`Combo Choices` field, click into a
|
||||||
|
selected option from the field to reveal a pop-up window, showing the included products in that
|
||||||
|
combo. Add or delete products from this pop-up window, as desired.
|
||||||
|
|
||||||
|
Or, create a new combo directly from the :guilabel:`Combo Choices` field, by typing in the name of
|
||||||
|
the new combo in the field, and clicking :guilabel:`Create and edit` from the resulting drop-down
|
||||||
|
menu.
|
||||||
|
|
||||||
|
Doing so reveals a pop-up window, wherein products can be added, and their prices can be customized,
|
||||||
|
if desired. Once all modifications are complete, click :guilabel:`Save & Close` to save the combo
|
||||||
|
configurations, and close the pop-up window. Or, click :guilabel:`Save & New` to save the combo, and
|
||||||
|
immediately create a new combo product from a fresh pop-up window.
|
||||||
|
|
||||||
|
Recurring Prices tab
|
||||||
|
--------------------
|
||||||
|
|
||||||
Once the desired fields in the :guilabel:`General Information` tab have been entered, click the
|
Once the desired fields in the :guilabel:`General Information` tab have been entered, click the
|
||||||
:guilabel:`Time-based pricing` tab on the product form.
|
:guilabel:`Recurring Prices` tab on the product form.
|
||||||
|
|
||||||
.. image:: products/time-based-pricing-tab.png
|
.. image:: products/recurring-prices-tab.png
|
||||||
:align: center
|
:align: center
|
||||||
:alt: The time-based pricing tab on a subscription product form in Odoo Subscriptions.
|
:alt: The recurring prices tab on a subscription product form in Odoo Subscriptions.
|
||||||
|
|
||||||
From here, click :guilabel:`Add a price` to begin defining recurring prices.
|
From here, click :guilabel:`Add a price rule` to begin defining recurring plans and prices.
|
||||||
|
|
||||||
In the :guilabel:`Period` column, select a desired recurrence period. In the :guilabel:`Pricelist`
|
In the :guilabel:`Recurring Plan` column, select a desired recurring plan. In the
|
||||||
column, select a pricelist, if needed. Then, in the :guilabel:`Price` column, enter the price for
|
:guilabel:`Pricelist` column, select a pricelist, if needed. Then, in the :guilabel:`Recurring
|
||||||
that recurrence period.
|
Price` column, enter the price for that recurring plan.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
:guilabel:`Daily` and :guilabel:`Hourly` periods **cannot** be used on recurring products.
|
:guilabel:`Daily` and :guilabel:`Hourly` periods **cannot** be used on recurring products.
|
||||||
|
|
||||||
.. image:: products/validation-error-popup.png
|
|
||||||
:align: center
|
|
||||||
:alt: The validation error pop-up window that appears in Odoo Subscriptions.
|
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
There is *no limit* to how many lines can be added to the :guilabel:`Time-based pricing` table.
|
There is *no limit* to how many lines can be added to the :guilabel:`Recurring Prices` tab.
|
||||||
|
|
||||||
.. tip::
|
.. tip::
|
||||||
An existing product can be made into a subscription product, simply by marking it as
|
An existing product can be made into a subscription product, simply by ticking the
|
||||||
:guilabel:`Recurring`, and configuring :guilabel:`Time-based pricing` on the product form.
|
:guilabel:`Subscriptions` checkbox on its product form, and configuring :guilabel:`Recurring
|
||||||
|
Prices` tab.
|
||||||
|
|
||||||
Pricelists
|
Pricelists
|
||||||
~~~~~~~~~~
|
~~~~~~~~~~
|
||||||
|
|
||||||
:doc:`Pricelists <../sales/products_prices/prices/pricing>` can be used with subscription products
|
:doc:`Pricelists <../sales/products_prices/prices/pricing>` can be used with subscription products
|
||||||
to give special pricing to customers included in pricelists.
|
to give special pricing to customers, who are included in pricelists.
|
||||||
|
|
||||||
This can be configured either in the :guilabel:`Time-based pricing` tab of the product form, or on
|
This can be configured either in the :guilabel:`Recurring Prices` tab of the product form, or on
|
||||||
the pricelist form in the *Sales* application.
|
the pricelist form in the *Sales* application.
|
||||||
|
|
||||||
To create recurring price rules for specific pricelists in the :guilabel:`Time-based pricing` tab of
|
To create recurring price rules for specific pricelists in the :guilabel:`Recurring Prices` tab of
|
||||||
the product form, select a pricelist in the :guilabel:`Pricelist` column.
|
the product form, select a pricelist in the :guilabel:`Pricelist` column.
|
||||||
|
|
||||||
.. image:: products/pricelist-time-based-pricing.png
|
When pricelists are added to the :guilabel:`Recurring Prices` tab, the pricelist form in the *Sales*
|
||||||
:align: center
|
app is automatically updated.
|
||||||
:alt: Pricelists in the "Time-based pricing" tab of the product form.
|
|
||||||
|
|
||||||
When pricelists are added to the :guilabel:`Time-based pricing` tab, the pricelist form in the
|
Recurring price rules can also be configured directly on the pricelist form.
|
||||||
*Sales* app is automatically updated.
|
|
||||||
|
|
||||||
Time-based pricing rules can also be configured directly on the pricelist form.
|
|
||||||
|
|
||||||
To do this, go to :menuselection:`Sales app --> Products --> Pricelists`, and select a pricelist (or
|
To do this, go to :menuselection:`Sales app --> Products --> Pricelists`, and select a pricelist (or
|
||||||
click :guilabel:`New` to create a new pricelist).
|
click :guilabel:`New` to create a new pricelist).
|
||||||
@ -140,19 +255,19 @@ click :guilabel:`New` to create a new pricelist).
|
|||||||
Pricelists are also accessible through the Odoo *Subscriptions* app by following the same menu
|
Pricelists are also accessible through the Odoo *Subscriptions* app by following the same menu
|
||||||
steps.
|
steps.
|
||||||
|
|
||||||
Then, on the pricelist form, under the :guilabel:`Time-based rules` tab, click :guilabel:`Add a
|
Then, on the pricelist form, under the :guilabel:`Recurring Prices` tab, click :guilabel:`Add a
|
||||||
line`.
|
price rule`.
|
||||||
|
|
||||||
.. image:: products/pricelist-form-time-based-rules-tab.png
|
.. image:: products/pricelist-form-recurring-prices-tab.png
|
||||||
:align: center
|
:align: center
|
||||||
:alt: The time-based rules tab on a pricelist form in Odoo Sales.
|
:alt: The time-based rules tab on a pricelist form in Odoo Sales.
|
||||||
|
|
||||||
Then, select a subscription product in the :guilabel:`Products` column, and select a recurrence
|
Then, select a subscription product in the :guilabel:`Products` column, along with any desired
|
||||||
period in the :guilabel:`Period` column. Lastly, enter a :guilabel:`Price` for that particular
|
:guilabel:`Product Variants`. Then, select a :guilabel:`Recurring Plan`. Lastly, enter a
|
||||||
product and period. Add as many lines as needed.
|
:guilabel:`Recurring Price` for that particular product and plan. Add as many lines as needed.
|
||||||
|
|
||||||
When :guilabel:`Time-based rules` are added to the pricelist form, the :guilabel:`Time-based
|
When :guilabel:`Recurring Prices` are added to the pricelist form, the :guilabel:`Recurring Prices`
|
||||||
pricing` tab of the product form is automatically updated.
|
tab of the product form is automatically updated.
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
:doc:`ecommerce`
|
:doc:`ecommerce`
|
||||||
|
After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 9.1 KiB |
Before Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 8.0 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 6.4 KiB |