Compare commits

...

4 Commits

Author SHA1 Message Date
Julien Castiaux
720360629f [FIX] deploy: nginx forwarded-host with tcp port
Install nginx using the nginx configuration found in the documentation
and changes the `listen` port to 8080. Start Odoo in `--proxy-mode`.

    listen 8080;
    server_name mycompany.odoo.com;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    location / {
            proxy_pass http://127.0.0.1:8069;
    }

Inside your browser, access "http://mycompany.odoo.com:8080" you are
wrongly redirected to "http://mycompany.odoo.com:80".

Odoo uses the `X-Forwarded-Host` http header value to generate new URls,
in this configuration `$host` only contains the domain (=hostname using
the urllib terminology) instead of the domain+port (=netloc). The
variable that contains both the domain and the port is actually
`$http_host`.

Closes: odoo/odoo#64643
2023-12-08 14:20:10 +01:00
KC (ksc)
27902e3dc8 [IMP] sales: product variants quotation/sales orders
closes odoo/documentation#6819

X-original-commit: 17cc753405
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 18:31:18 +00:00
KC (ksc)
ae745cfa1f [IMP] sales: get paid to validate doc
closes odoo/documentation#6813

X-original-commit: 5541f2132e
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 03:21:54 +00:00
Jess Rogers (jero)
e4aee350b8 [IMP] crm: update plan activities
closes odoo/documentation#5941

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: Timothy Kukulka <91896312+tiku-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2023-12-05 15:42:28 +00:00
28 changed files with 352 additions and 126 deletions

View File

@@ -310,7 +310,7 @@ in ``/etc/nginx/sites-enabled/odoo.conf`` set:
proxy_send_timeout 720s;
# Add Headers for odoo proxy mode
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;

View File

@@ -1,64 +1,249 @@
====================================
Get Organized by Planning Activities
====================================
==========
Activities
==========
When you plan activities you minimize the risk of uncertainties, as you provide clear directions
for the course of your next action. In addition to that, you do not leave space for wasteful
activities and reduce the chance of having overlapping actions between team members.
*Activities* are follow-up tasks tied to a record in an Odoo database. Activities can be scheduled
on any page of the database that contains a chatter thread, kanban view, list view, or activities
view of an application.
Where do I see my schedule activities?
======================================
Schedule activities
===================
Access and manage your activities wherever you are in Odoo by the *Activities* menu.
.. image:: plan_activities/activities_menu.png
:align: center
:height: 300
:alt: View of crm leads page emphasizing the activities menu for Odoo Discuss
Plan activities
===============
Activities can be planned and managed from the chatter by clicking on *Schedule activity*,
or through Kanban views.
.. image:: plan_activities/schedule_activity.png
:align: center
:height: 300
:alt: View of crm leads and the option to schedule an activity for Odoo Discuss
Set your activity types
-----------------------
A number of activities types are available by default in Odoo (call, email, meeting, etc.). However,
you can set new ones going to :menuselection:`Settings --> Activity types`.
.. image:: plan_activities/settings_activities_types.png
:align: center
:height: 300
:alt: View of the settings page emphasizing the menu activity types for Odoo Discuss
One way that activities are created is by clicking the :guilabel:`Schedule Activity` button, located
at the top of the *chatter* on any record. On the pop-up window that appears, select an
:guilabel:`Activity Type` from the drop-down menu.
.. tip::
If you need to create an activity type with an available calendar, make sure to create
it with an *Action to Perform* set as *Meeting*.
Individual applications have a list of *Activity Types* dedicated to that application. For
example, to view and edit the activities available for the *CRM* application, go to
:menuselection:`CRM app --> Configuration --> Activity Types`.
Recommend next activities
-------------------------
Enter a title for the activity in the :guilabel:`Summary` field, located in the :guilabel:`Schedule
Activity` pop-up window.
Odoo helps you to plan a flow of activities by allowing you to set *Recommended Next Activities*.
To assign the activity to a different user, select a name from the :guilabel:`Assigned to` drop-down
menu. Otherwise, the user creating the activity is automatically assigned.
.. image:: plan_activities/recommended_activities.png
Lastly, feel free to add any additional information in the optional :guilabel:`Log a note...` field.
.. note::
The :guilabel:`Due Date` field on the :guilabel:`Schedule Activity` pop-up window auto-populates
based on the configuration settings for the selected :guilabel:`Activity Type`. However, this
date can be changed by selecting a day on the calendar in the :guilabel:`Due Date` field.
Lastly, click one of the following buttons:
- :guilabel:`Schedule`: adds the activity to the chatter under :guilabel:`Planned activities`.
- :guilabel:`Mark as Done`: adds the details of the activity to the chatter under :guilabel:`Today`.
The activity is not scheduled, it is automatically marked as completed.
- :guilabel:`Done \& Schedule Next`: adds the task under :guilabel:`Today` marked as done, and
opens a new activity window.
- :guilabel:`Discard`: discards any changes made on the pop-up window.
.. image:: plan_activities/schedule-pop-up.png
:align: center
:alt: View of an activity type form emphasizing the field recommended next activities for Odoo
Discuss
:alt: View of CRM leads and the option to schedule an activity.
Once the respective activity is completed, select *Done & Schedule Next* and next steps are
suggested to you.
.. note::
Depending on the activity type, the :guilabel:`Schedule` button may be replaced by a
:guilabel:`Save` button, or an :guilabel:`Open Calendar` button.
.. image:: plan_activities/schedule_recommended_activity.png
Scheduled activities are added to the chatter for the record under :guilabel:`Planned activities`.
.. image:: plan_activities/chatter-activities.png
:align: center
:alt: View of an activity being schedule emphasizing the recommended activities field being
shown for Odoo Discuss
:alt: View of CRM leads and the option to schedule an activity.
Activities can also be scheduled from the kanban, list, or activities view of an application.
.. tabs::
.. tab:: Kanban view
Select a record on which to schedule an activity. Click on the :guilabel:`🕘 (clock)` icon,
then :guilabel:`Schedule An Activity`, and proceed to fill out the pop-up form.
.. image:: plan_activities/schedule-kanban-activity.png
:align: center
:alt: Kanban view of the CRM pipeline and the option to schedule an activity.
.. tab:: List view
Select a record on which to schedule an activity. Click on the :guilabel:`🕘 (clock)` icon,
then :guilabel:`Schedule An Activity`. If the record already has an activity scheduled, the
clock icon may be replaced by a :guilabel:`📞 (phone)` or an :guilabel:`✉️ (envelope)` icon.
.. image:: plan_activities/schedule-list-activity.png
:align: center
:alt: List view of the CRM pipeline and the option to schedule an activity.
.. tab:: Activity view
To open the activity view for an application, select the :guilabel:`🕘 (clock)` icon from the
menu bar anywhere in the database. Select any application from the drop-down menu, and click
the :guilabel:`🕘 (clock)` icon for the desired app.
.. image:: plan_activities/schedule-activity-view-menu.png
:align: center
:alt: Activity menu drop down with focus on where to open activity view for CRM.
Select a record on which to schedule an activity. Move across the row to find the desired
activity type, then click the :guilabel:` (plus sign)`.
.. image:: plan_activities/schedule-activity-view.png
:align: center
:alt: Activity view of the CRM pipeline and the option to schedule an activity.
.. note::
Activity colors, and their relation to an activity's due date, is consistent throughout Odoo,
regardless of the activity type, or the view.
- Activities that appear in **green** indicate a due date sometime in the future.
- **Yellow** indicates that the activity's due date is today.
- **Red** indicates that the activity is overdue and the due date has passed.
For example, if an activity is created for a phone call, and the due date passes, the activity
appears with a red phone in list view, and a red clock on the kanban view.
View scheduled activities
=========================
To view scheduled activities, open either the :menuselection:`Sales app` or :menuselection:`CRM app`
and click the :guilabel:`🕘 (clock)` icon, located to the far-right side of the other view options.
Doing so opens the activities menu, showcasing all the scheduled activities for the user, by
default. To show all activities for every user, remove the :guilabel:`My Pipeline` filter from the
:guilabel:`Search...` bar.
To view a consolidated list of activities separated by the application where they were created, and
by deadline, click the :guilabel:`🕘 (clock)` icon on the header menu to see the activities for that
specific application in a drop-down menu.
The possibility to :guilabel:`Add new note` and :guilabel:`Request a Document` appear at the bottom
of this drop-down menu, when the :guilabel:`🕘 (clock)` icon on the header menu is clicked.
.. image:: plan_activities/activities-menu.png
:align: center
:alt: View of CRM leads page emphasizing the activities menu.
Configure activity types
========================
To configure the types of activities in the database, go to :menuselection:`Settings app --> Discuss
--> Activities --> Activity Types`.
.. image:: plan_activities/settings-activities-types.png
:align: center
:alt: View of the settings page emphasizing the menu activity types.
Doing so reveals the :guilabel:`Activity Types` page, where the existing activity types are found.
To edit an existing activity type, select it from the list, then click :guilabel:`Edit`. To create a
new activity type, click :guilabel:`Create`.
At the top of a blank activity type form, start by choosing a :guilabel:`Name` for the new activity
type.
.. image:: plan_activities/new-activity-type.png
:align: center
:alt: New activity type form.
Activity settings
-----------------
Action
~~~~~~
The *Action* field specifies the intent of the activity. Some actions trigger specific behaviors
after an activity is scheduled.
- If :guilabel:`Upload Document` is selected, a link to upload a document is added directly to the
planned activity in the chatter.
- If either :guilabel:`Phonecall` or :guilabel:`Meeting` are selected, users have the option to open
their calendar to schedule a time for this activity.
- If :guilabel:`Request Signature` is selected, a link is added to the planned activity in the
chatter that opens a signature request pop-up window.
.. note::
The actions available to select on an activity type vary, depending on the applications currently
installed in the database.
Default user
~~~~~~~~~~~~
To automatically assign this activity to a specific user when this activity type is scheduled,
choose a name from the :guilabel:`Default User` drop-down menu. If this field is left blank, the
activity is assigned to the user who creates the activity.
Default summary
~~~~~~~~~~~~~~~
To include notes whenever this activity type is created, enter them into the :guilabel:`Default
Summary` field.
.. note::
The information in the :guilabel:`Default User` and :guilabel:`Default Summary` fields are
included when an activity is created. However, they can be altered before the activity is
scheduled or saved.
Next activity
-------------
To automatically suggest, or trigger, a new activity after an activity has been marked complete, the
:guilabel:`Chaining Type` must be set.
Suggest next activity
~~~~~~~~~~~~~~~~~~~~~
In the :guilabel:`Chaining Type` field, select :guilabel:`Suggest Next Activity`. Upon doing so, the
field underneath changes to: :guilabel:`Suggest`. Click the :guilabel:`Suggest` field drop-down menu
to select any activities to recommend as follow-up tasks to this activity type.
In the :guilabel:`Schedule` field, choose a default deadline for these activities. To do so,
configure a desired number of :guilabel:`Days`, :guilabel:`Weeks`, or :guilabel:`Months`. Then,
decide if it should occur :guilabel:`after completion date` or :guilabel:`after previous activity
deadline`.
This :guilabel:`Schedule` field information can be altered before the activity is scheduled.
When all configurations are complete, click :guilabel:`Save`.
.. image:: plan_activities/schedule-recommended-activity.png
:align: center
:alt: Schedule activity popup with emphasis on recommended activities.
.. note::
If an activity has the :guilabel:`Chaining Type` set to :guilabel:`Suggest Next Activity`, and
has activities listed in the :guilabel:`Suggest` field, users are presented with recommendations
for activities as next steps.
Trigger next activity
~~~~~~~~~~~~~~~~~~~~~
Setting the :guilabel:`Chaining Type` to :guilabel:`Trigger Next Activity` immediately launches the
next activity once the previous one is completed.
If :guilabel:`Trigger Next Activity` is selected in the :guilabel:`Chaining Type` field, the field
beneath changes to: :guilabel:`Trigger`. From the :guilabel:`Trigger` field drop-down menu, select
the activity that should be launched once this activity is completed.
In the :guilabel:`Schedule` field, choose a default deadline for these activities. To do so,
configure a desired number of :guilabel:`Days`, :guilabel:`Weeks`, or :guilabel:`Months`. Then,
decide if it should occur :guilabel:`after completion date` or :guilabel:`after previous activity
deadline`.
This :guilabel:`Schedule` field information can be altered before the activity is scheduled.
When all configurations are complete, click :guilabel:`Save`.
.. image:: plan_activities/triggered-activities.png
:align: center
:alt: Schedule new activity popup with emphasis on Done and launch next button.
.. note::
When an activity has the :guilabel:`Chaining Type` set to :guilabel:`Trigger Next Activity`,
marking the activity as `Done` immediately launches the next activity listed in the
:guilabel:`Trigger` field.
.. seealso::
- :doc:`get_started`

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -1,53 +1,57 @@
============================
Get paid to confirm an order
============================
=================================
Online payment order confirmation
=================================
In general, online payments are considered as a fast and secure alternative to traditional payment
methods. It is generally cheaper, easier and faster than other payment methods. It is particularly
useful and efficient for international transactions. With Odoo Sales, you can use online payments
to get automatic orders confirmation. Online payments are made instantly, so it's very convenient
and saves lots of time in a basic sales process.
With Odoo *Sales*, online payments can be used to get automatic confirmation on orders.
Enable online payment
=====================
Go to :menuselection:`Sales --> Configuration --> Settings` and activate the **Online Payment**
feature.
Go to :menuselection:`Sales app --> Configuration --> Settings`, scroll to the :guilabel:`Quotations
\& Orders` heading, and activate the :guilabel:`Online Payment` feature by checking the box next to
it, and clicking :guilabel:`Save`.
.. image:: get_paid_to_validate/get_paid_1.png
.. image:: get_paid_to_validate/online-payment-setting.png
:align: center
:class: img-thumbnail
:alt: How to enable online payment on Odoo Sales?
:alt: How to enable online payment on Odoo Sales.
There, you will have direct access to the **Payment Acquirers** page. It will allow you to select
and configure your acquirers of choice. Before creating or modifying a payment acquirer, be sure to
check out our documentation about how to be paid with payment acquirers such as
:doc:`/applications/finance/payment_acquirers/paypal`,
:doc:`/applications/finance/payment_acquirers/authorize`, and others in the
:doc:`/applications/finance/payment_acquirers` documentation.
After checking the box beside the :guilabel:`Online Payment` feature, a link to the
:guilabel:`Payment Acquirers` appears beneath it. Click that link to reveal the entire
:guilabel:`Payment Acquirers` page.
.. image:: get_paid_to_validate/payment-acquirers.png
:align: center
:alt: Payment acquirers page in the Odoo Sales application.
On the :guilabel:`Payment Acquirers` page, payment acquirers can be selected and configured. Before
creating (or modifying) a payment acquirer, be sure to review the documentation related to the ways
payment acquirers can be used with Odoo, such as:
- :doc:`../../../finance/payment_acquirers/paypal`
- :doc:`../../../finance/payment_acquirers/authorize`
- :doc:`../../../finance/payment_acquirers`
.. note::
If you are familiar with this documentation: :doc:`quote_template`; you
can activate or not the **Online Payment** feature for each template you use, under their
confirmation tab.
On quotation templates, the :guilabel:`Online Payment` feature is located under the
:guilabel:`Confirmation` tab.
On standard quotations, the :guilabel:`Online Payment` feature is located under the
:guilabel:`Other Info` tab.
Register a payment
==================
After opening quotations from their received email, your customers will have different
possibilities to make their online payments. For example:
After opening quotations from the email they receive, customers are presented with different options
to make online payments, in the :guilabel:`Pay with` section.
.. image:: get_paid_to_validate/get_paid_2.png
.. image:: get_paid_to_validate/validate-order.png
:align: center
:class: img-thumbnail
:alt: How to register a payment on Odoo Sales?
:alt: How to register a payment on Odoo Sales.
.. tip::
By clicking on the **Customer Preview** button, you will be able to see what your customers
will have to choose when it comes to payment.
Clicking the :guilabel:`Customer Preview` smart button on the quotation form provides a preview
of the quotation as the customer sees it, along with the various online payment options they can
choose from.
.. seealso::
- :doc:`quote_template`
- :doc:`/applications/finance/payment_acquirers`
- :doc:`/applications/finance/payment_acquirers/paypal`
- :doc:`/applications/finance/payment_acquirers/authorize`
:doc:`quote_template`

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -1,78 +1,115 @@
===================================================
Use product variants on quotations and sales orders
===================================================
===============================================
Product variants on quotations and sales orders
===============================================
Product variants can be added to quotations and sales orders using the Product Configurator,
Variant Grid Entry, or both.
Product variants can be added to quotations and sales orders using the *product configurator*,
*variant grid entry*, or both.
Configuration
=============
To enable product variants on quotations and sales orders, go to :menuselection:`Sales -->
Configuration --> Settings --> Product Catalog` and activate one or both of the
:guilabel:`Product Configurator` and :guilabel:`Variant Grid Entry` settings. Finally, click
:guilabel:`Save` to apply the settings.
To enable product variants on quotations and sales orders, go to :menuselection:`Sales app -->
Configuration --> Settings`, and under the :guilabel:`Product Catalog` heading, activate one (or
both) of the :guilabel:`Product Configurator` and :guilabel:`Variant Grid Entry` settings. Finally,
click :guilabel:`Save` to apply the settings.
.. image:: orders_and_variants/activating-entry-type-settings.png
:align: center
:alt: Activating entry type settings.
After saving the settings, configure the product form. Head over to :menuselection:`Sales -->
Products --> Products` and select any product (or click :guilabel:`Create` to create a new one).
On the product form, click :guilabel:`Edit`, and then click on the :guilabel:`Variants` tab. Under
:guilabel:`Sales Variant Selection`, choose either :guilabel:`Product Configurator` or
After saving the settings, it's time to configure the product form.
To do that, navigate to :menuselection:`Sales app --> Products --> Products`, and select the desired
product to configure (or click :guilabel:`Create` to open a blank product form, and create a new
one).
On the product form, click :guilabel:`Edit`, and select the :guilabel:`Variants` tab. Click
:guilabel:`Add a line` to add an attribute in the :guilabel:`Attribute` column, like `Color` or
`Size`, for example.
Once the attribute is chosen, select the desired values to apply to that attribute in the
:guilabel:`Values` column. To select the desired values, click into the blank field beneath the
:guilabel:`Values` column.
Then, select an option from the drop-down menu that appears. Or, create a new value by typing in the
new value, and click :guilabel:`Create` from the drop-down menu that appears beneath the new value.
When a product has *at least* two variants (one attribute with two values), the :guilabel:`Sales
Variant Selection` option appears at the bottom of the :guilabel:`Variants` tab. That is the
**only** way to make that option appear, so keep that in mind.
Under :guilabel:`Sales Variant Selection`, choose either :guilabel:`Product Configurator` or
:guilabel:`Order Grid Entry`. This selection determines which method is used to add the product to
quotations or sales orders. Finally, click :guilabel:`Save` to apply the setting.
quotations or sales orders.
- :guilabel:`Product Configurator`: choose attribute values to add the matching product variant to
the order.
- :guilabel:`Order Grid Entry`: add several variants at once from the grid of attribute values.
Once a selection is made, click :guilabel:`Save` on the product form to apply the setting.
.. image:: orders_and_variants/sales-variant-selection.png
:align: center
:alt: Sales variant selection.
.. note::
The product must have at least two variants (one attribute with two values) created in order for
the :guilabel:`Sales Variant Selection` option to appear. Click :guilabel:`Add a line` under
:guilabel:`Attribute` to add attributes and values to this product and create product variants.
Product configurator
====================
Use the Product Configurator
============================
The *product configurator* appears on a quotation or sales order when products that have **both**
variants configured are added, and the :guilabel:`Product Configurator` option is selected on the
product form.
The :guilabel:`Product Configurator` appears on a quotation or sales order when products are added
that have both variants configured and the :guilabel:`Product Configurator` option selected.
The product configurator lets salespeople choose exactly which product variant to add to
the quotation or sales order, using a format similar to online shopping. Color options display any
HTML color codes set up in the :guilabel:`Color` attribute.
The :guilabel:`Product Configurator` lets salespeople choose exactly which product variant to add
to the quotation or sales order using a format similar to online shopping. Color options display
any HTML color codes set up in the :guilabel:`Color` attribute. Features with an additional cost
will display the additional cost next to their name. Once the desired product variant attributes
are selected, click :guilabel:`Add` to add the product variant to the quotation or sales order.
Features with an additional cost display the additional cost next to their name. Once the desired
product variant attributes are selected, click :guilabel:`Add` to add the product variant to the
quotation or sales order.
.. image:: orders_and_variants/configurator-price-extras.png
:align: center
:alt: Product Configurator and Price Extras.
By default, the product variant attributes are displayed on the quotation or sales order in the
:guilabel:`Description` column, but the :guilabel:`Product Variant` column can be added through the
additional options menu (3 vertical dots icon).
:guilabel:`Description` column, but a dedicated :guilabel:`Product Variant` column can be added, via
the additional options menu (represented by the :guilabel:`⋮ (3 vertical dots)` icon, on the
far-right side of the columns, in the :guilabel:`Order Lines` tab).
Use Variant Grid Entries
========================
.. image:: orders_and_variants/product-variant-column-option.png
:align: center
:alt: Product variant column option in order lines tab of quotation.
:guilabel:`Variant Grid Entries` appear on a quotation or sales order when products are added that
have both variants configured and the :guilabel:`Order Grid Entry` option selected. Grid entry can
streamline the process of creating large, varied quotations by letting salespeople enter exact
quantities of each product variant all at once.
Just click the checkbox next to :guilabel:`Product Variant`, and that column appears in the
:guilabel:`Order Lines` tab.
:guilabel:`Variant Grid Entry` displays a grid of every variant available for the selected product.
Choose the exact quantities of each product variant for a quotation or sales order by typing in the
number or using the arrows. :guilabel:`Not Available` is displayed when a particular variant has
been deactivated in the database. Once all the product variants and their quantities have been set,
click :guilabel:`Confirm` to add them to the quotation or sales order.
Variant grid entries
====================
*Variant grid entries* appear on a quotation or sales order when products that have both variants
configured are added, and the :guilabel:`Order Grid Entry` option is selected on the product form.
The grid entry feature streamlines the process of creating large, varied quotations by letting
salespeople enter exact quantities of each product variant all at once.
The :guilabel:`Choose Product Variants` pop-up form that appears, displays a grid of every variant
available for that specific product.
From the :guilabel:`Choose Product Variants` pop-up form, choose the exact quantities of each
product variant for a quotation or sales order by typing in the number or using the arrows in each
column. The :guilabel:`Not Available` warning is displayed when a particular variant has been
deactivated in the database.
Once all the product variants and their quantities have been set in the pop-up form, click
:guilabel:`Confirm` to add them to the quotation or sales order.
.. image:: orders_and_variants/grid-entry-popup-amounts.png
:align: center
:alt: Variant Grid Entry pop-up.
:alt: Variant Grid Entry pop-up form.
Each product variant appears as an individual line item on the quotation or sales order, because
each of these items has its own stock.
Each product variant appears as an individual line item on the quotation or sales order with the
chosen quantity from the :guilabel:`Choose Product Variants` pop-up form, because each of these
items has its own stock.
.. image:: orders_and_variants/grid-variants-line-items.png
:align: center

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 19 KiB