[IMP] subscriptions: update sub product doc

This commit is contained in:
KC (ksc) 2024-09-03 11:01:06 -07:00
parent 669a62c625
commit a4ff8f4cf7
12 changed files with 201 additions and 86 deletions

View File

@ -2,136 +2,251 @@
Subscription products
=====================
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
one-time basis, subscription products are sold on a renewing basis, generating recurring revenue.
In Odoo, subscription products are also called *recurring* products.
By closely integrating with the Odoo **Sales** app, the **Subscriptions** app enables users to sell
subscription products and services alongside regular sales products. While regular products are sold
on a one-time basis, subscription products and services are sold on a renewing basis, generating
recurring revenue.
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
customer pays for (and receives) subscription products.
*Recurring Plans* represent the time periods in which subscriptions renew. They designate how often
the customer pays for (and receives) subscription products and services.
To configure recurrence periods, go to :menuselection:`Subscriptions app --> Configuration -->
Recurrence periods`.
To configure recurring plans, go to :menuselection:`Subscriptions app --> Configuration -->
Recurring Plans`.
.. image:: products/recurrence-periods-page.png
.. figure:: products/recurring-plans-page.png
: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:`Quarterly`
- :guilabel:`Weekly`
- :guilabel:`2 Weeks`
- :guilabel:`Yearly`
- :guilabel:`3 Years`
- :guilabel:`5 Years`
- :guilabel:`6 Months`
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.
Doing so reveals a blank recurrence period form.
To create a new recurring plans, click :guilabel:`New` on the :guilabel:`Recurring Plans` page.
Doing so reveals a blank recurring plan form.
.. image:: products/recurrence-period-form.png
.. image:: products/recurring-plan-form.png
: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
:guilabel:`Unit` that defines the duration.
Type in the :guilabel:`Name` of the plan at the top of the form.
.. important::
The unit :guilabel:`Days` *cannot* be used as a recurrence period on subscriptions. The daily
recurrence is meant for rentals, and **cannot** be added on recurring subscription sales orders.
In the :guilabel:`Details` section, there are four fields to configure:
This limitation is there to avoid sales orders that would generate daily invoices.
- :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::
The unit of *Days* **cannot** be used as a :guilabel:`Billing Period` option on subscriptions.
The daily recurrence is meant for rentals. This limitation avoids 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
==========================
To create a new subscription product, navigate to :menuselection:`Subscriptions app --> Products -->
Products`, and click :guilabel:`New`.
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.
Products`, and click :guilabel:`New`. Doing so reveals a blank product form, which can be configured
and customized in a number of ways.
.. image:: products/subscription-product-form.png
: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
: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
: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`
column, select a pricelist, if needed. Then, in the :guilabel:`Price` column, enter the price for
that recurrence period.
In the :guilabel:`Recurring Plan` column, select a desired recurring plan. In the
:guilabel:`Pricelist` column, select a pricelist, if needed. Then, in the :guilabel:`Recurring
Price` column, enter the price for that recurring plan.
.. note::
: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::
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::
An existing product can be made into a subscription product, simply by marking it as
:guilabel:`Recurring`, and configuring :guilabel:`Time-based pricing` on the product form.
An existing product can be made into a subscription product, simply by ticking the
:guilabel:`Subscriptions` checkbox on its product form, and configuring :guilabel:`Recurring
Prices` tab.
Pricelists
~~~~~~~~~~
: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.
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.
.. image:: products/pricelist-time-based-pricing.png
:align: center
:alt: Pricelists in the "Time-based pricing" tab of the product form.
When pricelists are added to the :guilabel:`Recurring Prices` tab, the pricelist form in the *Sales*
app is automatically updated.
When pricelists are added to the :guilabel:`Time-based pricing` tab, the pricelist form in the
*Sales* app is automatically updated.
Time-based pricing rules can also be configured directly on the pricelist form.
Recurring price 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
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
steps.
Then, on the pricelist form, under the :guilabel:`Time-based rules` tab, click :guilabel:`Add a
line`.
Then, on the pricelist form, under the :guilabel:`Recurring Prices` tab, click :guilabel:`Add a
price rule`.
.. image:: products/pricelist-form-time-based-rules-tab.png
.. image:: products/pricelist-form-recurring-prices-tab.png
:align: center
: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
period in the :guilabel:`Period` column. Lastly, enter a :guilabel:`Price` for that particular
product and period. Add as many lines as needed.
Then, select a subscription product in the :guilabel:`Products` column, along with any desired
:guilabel:`Product Variants`. Then, select a :guilabel:`Recurring Plan`. Lastly, enter a
: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
pricing` tab of the product form is automatically updated.
When :guilabel:`Recurring Prices` are added to the pricelist form, the :guilabel:`Recurring Prices`
tab of the product form is automatically updated.
.. seealso::
:doc:`ecommerce`

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB