[IMP] pos/restaurant: Update Restaurant features 18.4

task-3604855

closes odoo/documentation#14879

X-original-commit: 3a9b1666da
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Emmanuel Minga (EMMI) <emmi@odoo.com>
This commit is contained in:
emmi-odoo
2025-09-05 14:50:27 +00:00
parent 406593f57a
commit da23e8f861
2 changed files with 217 additions and 65 deletions

View File

@@ -5,43 +5,66 @@ Restaurant features
Odoo Point of Sale provides various features to manage a restaurant or a bar: Odoo Point of Sale provides various features to manage a restaurant or a bar:
- :ref:`Organizing the floors and tables <pos/restaurant/floors>`; - :ref:`Organizing the floors and tables <pos/restaurant/floors>`;
- :ref:`Taking orders <pos/restaurant/orders>`; - :ref:`Managing orders <pos/restaurant/orders>`;
- :ref:`Communicating with the kitchen or bar through the POS <pos/restaurant/orders-printing>`; - :ref:`Notifying the kitchen or bar through the POS <pos/restaurant/orders-printing>`;
- :ref:`Printing and splitting bills <pos/restaurant/bills>`; - :ref:`Printing and splitting bills <pos/restaurant/bills>`;
- :ref:`Collecting tips <pos/restaurant/tips>`; - :ref:`Collecting tips <pos/restaurant/tips>`;
- :doc:`Setting different taxes for takeaway food <pricing/fiscal_position>`. - :doc:`Setting different taxes for takeout orders <pricing/fiscal_position>`.
Three main buttons in the POS register allow for navigating between the :ref:`Floor plan Three main buttons in the POS interface allow for navigating between tables, the register, and
<pos/restaurant/floors>` view, tables, and :ref:`orders <pos/restaurant/orders>`: orders:
- :guilabel:`Plan`: Access the :ref:`Floor plan <pos/restaurant/floors>` view. - :guilabel:`Tables`: Access the :ref:`Floor plan <pos/restaurant/floors>` view to manage table
- :guilabel:`Table`: Enter a table or order number, then click :guilabel:`Jump` to access them. The occupancy.
button's label updates to display the selected number. When applicable, click :guilabel:`Book - :guilabel:`Register`: Access the :ref:`POS register <pos/restaurant/orders>` to process orders.
table` to confirm the table's occupancy. - :guilabel:`Orders`: Access the overview of all orders.
- :icon:`fa-plus-circle` (:guilabel:`order`): :ref:`Create a direct sales order <pos/restaurant/orders>`
that is not linked to any table. Each click generates the next order in the sequence. Click
:guilabel:`Release Order` to cancel the order (if no products have been added) and return to the
:ref:`Floor plan <pos/restaurant/floors>` view.
.. note::
- When :guilabel:`Table Booking` is enabled in the :ref:`POS settings <configuration/settings>`,
a :guilabel:`Booking` button appears on the main interface for viewing and managing bookings.
- Entering a number through the :guilabel:`Table` button that does not match an existing table
number creates a direct sales order.
.. important:: .. important::
To configure restaurant-specific settings, the :guilabel:`Is a Bar/Restaurant` setting under the To configure restaurant-specific settings, the :guilabel:`Is a Bar/Restaurant` setting under the
:guilabel:`Restaurant Mode` section must be enabled in the :ref:`POS settings :guilabel:`Point of Sale` section must be enabled in the :ref:`POS settings
<configuration/settings>`. <configuration/settings>`.
.. note::
When :guilabel:`Booking` is enabled in the :ref:`POS settings <configuration/settings>`, a
:ref:`Booking <pos/restaurant/floors/booking>` button appears on the main interface for viewing
and managing bookings.
.. _pos/restaurant/default:
Default start screen
====================
To define the point of sale's default start screen, go to the :ref:`POS settings
<configuration/settings>`, scroll down to the :guilabel:`PoS Interface` section, and set the
:guilabel:`Default Screen` setting to :guilabel:`Tables` (i.e., :ref:`Floor plan
<pos/restaurant/floors>` view) or :ref:`Register <pos/restaurant/orders>`.
.. _pos/restaurant/floors: .. _pos/restaurant/floors:
Floors and tables Floors and tables
================= =================
The :guilabel:`Floor plan` view is the first screen displayed when :ref:`accessing the POS register The :guilabel:`Floor plan` view allows for managing restaurant floors and tables and monitoring
<pos/session-start>`. It enables managing restaurant floors and tables, and monitoring table status in real time (occupancy, reservations, kitchen orders) using the following action
table status in real time (occupancy, reservations, and kitchen orders). buttons:
- :icon:`fa-plus` :guilabel:`New Order`: :ref:`Create a direct sales order
<pos/restaurant/orders/process>` that is not linked to any table. Take the order, click
:guilabel:`Set Table` to assign it to an existing table, or click :guilabel:`Set Tab` to
record the open order's name.
- Buttons for navigating between :ref:`configured floors <pos/restaurant/floors/backend>`
(e.g., :guilabel:`Main Floor/Patio`).
- :icon:`fa-hashtag` (:guilabel:`Table Selector`): Enter an existing table number and click
:guilabel:`Jump` to access it.
.. note::
- Selecting a table on the :guilabel:`Floor plan` view or accessing it through the
:guilabel:`Table Selector` automatically confirms the table's occupancy.
- To order free physical QR codes adapted to the floor plan, activate the :doc:`QR menu
</applications/sales/point_of_sale/self_order>` setting, then click :icon:`fa-qrcode`
:guilabel:`Get QR Codes` in the :guilabel:`Floor plan` view. This `offer
<https://www.odoo.com/app/point-of-sale-restaurant-qr-code>`_ is available worldwide and for
all subscription types.
.. example:: .. example::
.. image:: restaurant/plan-understand.png .. image:: restaurant/plan-understand.png
@@ -57,7 +80,7 @@ table status in real time (occupancy, reservations, and kitchen orders).
Configuration Configuration
------------- -------------
Creating floors and tables allows managing table selection and :ref:`orders Creating floors and tables allows for managing table selection and :ref:`orders
<pos/restaurant/orders>`. <pos/restaurant/orders>`.
.. _pos/restaurant/floors/backend: .. _pos/restaurant/floors/backend:
@@ -86,12 +109,12 @@ plan`:
#. Save. #. Save.
.. note:: .. note::
- Enable the :guilabel:`Table Booking` setting to assign an :guilabel:`Appointment resource` and - Enable the :ref:`Booking <pos/restaurant/floors/booking>` setting to assign an
make a table bookable. :guilabel:`Appointment resource` and make a table bookable.
- Click the :icon:`fa-trash-o` (:guilabel:`trash`) icon to delete a table. - Click the :icon:`fa-trash-o` (:guilabel:`trash`) icon to delete a table.
.. tip:: .. tip::
To create a :guilabel:`Floor plan` quickly, go to the :guilabel:`Restaurant Mode` section of the To create a :guilabel:`Floor plan` quickly, go to the :guilabel:`Point of Sale` section of the
:ref:`POS settings <configuration/settings>`. Under :guilabel:`Floors & Tables Map`, type the :ref:`POS settings <configuration/settings>`. Under :guilabel:`Floors & Tables Map`, type the
floor name in the :guilabel:`Floors` field, and press `Enter`. floor name in the :guilabel:`Floors` field, and press `Enter`.
@@ -128,27 +151,100 @@ follow the next steps:
.. warning:: .. warning::
Removing a table or a floor is permanent. Removing a table or a floor is permanent.
.. _pos/restaurant/floors/booking:
Booking
-------
The :guilabel:`Booking` setting allows for creating and managing reservations for a designated
point of sale directly from the POS interface.
.. note::
Enabling the :guilabel:`Booking` setting automatically installs the :doc:`Appointments
</applications/productivity/appointments>` app.
.. _pos/restaurant/floors/booking/configuration:
Booking configuration
~~~~~~~~~~~~~~~~~~~~~
To enable and configure the bookings, follow these steps:
#. Go to the :ref:`POS settings <configuration/settings>`, scroll down to the :guilabel:`PoS
Interface` section, and enable :guilabel:`Booking`.
#. Enter a name in the :guilabel:`Appointment type` field and click :guilabel:`Create and edit`.
#. Configure the :ref:`Appointment type <appointments/configure>` form and click :guilabel:`Save`.
#. Click :guilabel:`Save` in the POS settings.
.. important::
To ensure that only existing resources can be booked for a specific point of sale, set the
:guilabel:`Book` field to :guilabel:`Resources` in the :guilabel:`Appointment type` form and
select tables. Then, enable :guilabel:`Manage Capacities` to define the maximum amount each
resource can handle.
.. tip::
To accommodate a booking that exceeds the capacity of a single table, click the
:icon:`fa-cubes` (:guilabel:`Resources`) icon in the :guilabel:`Appointment Type` form, select
a table, and add additional tables in the :guilabel:`Linked Resource` field to merge them.
.. seealso::
:doc:`/applications/productivity/appointments`
.. _pos/restaurant/floors/booking/management:
Booking management
~~~~~~~~~~~~~~~~~~
To manage table bookings from the POS interface, click :guilabel:`Booking`, then:
- Click :guilabel:`New` to create a booking. Add a name, the date and time, number of guests, phone
number, duration, and :ref:`resources <appointments/resources>`, then click :guilabel:`Save`.
- Click a booking to :guilabel:`Edit` or :guilabel:`Delete` it. Click a stage name (e.g.,
:guilabel:`Booked`, :guilabel:`Checked-In`, or :guilabel:`No Show`) or drag the booking card to
move it to the relevant stage.
.. tip::
To quickly edit a booking from the :ref:`Floor plan <pos/restaurant/floors>` view, click the
booking notification on the booked table.
.. _pos/restaurant/orders: .. _pos/restaurant/orders:
Order management Order management
================ ================
To take an order, :ref:`open the POS register <pos/session-start>` and follow these steps: The POS register allows for :ref:`processing <pos/restaurant/orders/process>` and :ref:`transferring
<pos/restaurant/floors/transfer>` orders, defining :ref:`presets <pos/restaurant/orders/preset>`,
and managing :ref:`courses <pos/restaurant/orders/courses>`.
#. Select a :ref:`floor plan <pos/restaurant/floors>` and click a table or click the .. _pos/restaurant/orders/process:
:icon:`fa-plus-circle` (:guilabel:`order`) button at the top to create a direct sales order.
#. Add products to the order. Order process
-------------
To process an order from the POS register, follow these steps:
#. Click products to add them to the cart.
#. Define how the order is handled:
- Click :guilabel:`Set Table` to link the order to a table. Enter a table number and click
:guilabel:`Assign`.
- Click :guilabel:`Set Tab` to enter the open order's name and click :guilabel:`Apply`.
#. Click :guilabel:`Order` to validate the order. #. Click :guilabel:`Order` to validate the order.
When ready, :ref:`process the order payment <pos/restaurant/bills/payment>`. When ready, :ref:`process the order payment <pos/restaurant/bills/payment>`.
.. note::
Clicking :guilabel:`Order` redirects to the :ref:`Floor plan <pos/restaurant/floors>` view if
:guilabel:`Tables` is selected as the :ref:`default start screen <pos/restaurant/default>`.
.. tip:: .. tip::
- To cancel a processed order, click :guilabel:`Actions`, then :guilabel:`Cancel Order`. If an - To cancel an order, click the :icon:`fa-ellipsis-v` (:guilabel:`Actions`) icon, then
:ref:`order printer is configured <pos/restaurant/orders-printing>`, a cancellation ticket is :guilabel:`Cancel Order`. If an :ref:`order printer is configured
automatically printed. <pos/restaurant/orders-printing>`, a cancellation ticket is automatically printed for an
- To switch to another table order, click the button with the table number at the top of the POS order sent to the kitchen.
interface, enter a table number, and click :guilabel:`Jump`. - After selecting a table in the :ref:`Floor plan <pos/restaurant/floors>` view, click
- Click :guilabel:`Release table` to cancel a table's occupancy. :guilabel:`Release table` in the cart to cancel the table's occupancy. This action is
available when the cart is empty.
- :ref:`Configure a printer <pos/restaurant/orders-printing>` to send an order to the kitchen - :ref:`Configure a printer <pos/restaurant/orders-printing>` to send an order to the kitchen
printer when clicking :guilabel:`Order`. printer when clicking :guilabel:`Order`.
@@ -157,21 +253,70 @@ When ready, :ref:`process the order payment <pos/restaurant/bills/payment>`.
Order transfer Order transfer
-------------- --------------
To transfer an order to another table from the :ref:`POS interface <pos/restaurant/orders>`, click To transfer an order to another table from the :ref:`POS register <pos/restaurant/orders>`, click
:guilabel:`Actions`, then :guilabel:`Transfer/Merge`, and choose the target table in the the :icon:`fa-ellipsis-v` (:guilabel:`Actions`) icon, then :guilabel:`Transfer/Merge`, and choose
:ref:`Floor plan <pos/restaurant/floors>` view: the target table in the :ref:`Floor plan <pos/restaurant/floors>` view:
- Select an available table to transfer customers and their orders. - Select an available table to transfer customers and their orders.
- Select an occupied table to merge customers and their orders. - Select an occupied table to merge customers and their orders.
.. _pos/restaurant/orders/preset:
Presets
-------
Presets are used to apply preconfigured settings to orders and determine whether an order is for
:guilabel:`Dine In`, :guilabel:`Takeout`, or :guilabel:`Delivery`. They also control whether
customer contact information is required and apply capacity limits based on opening hours and order
quantity.
To use preconfigured presets, go to the :ref:`POS settings <configuration/settings>` and
enable the :guilabel:`Take out / Delivery / Members` setting under the :guilabel:`Point of Sale`
section. Set the :guilabel:`Default` field to the preferred preset, then save. From the
:ref:`register <pos/restaurant/orders>`, select the relevant preset, and :ref:`process the order
<pos/restaurant/orders/process>`:
- :guilabel:`Dine In`: Assign a :ref:`table or open a tab <pos/restaurant/orders/process>`.
- :guilabel:`Takeout`: Enter the order's name and click :guilabel:`Apply`, then select a date
and a time slot.
- :guilabel:`Delivery`: Select an existing customer, or click :guilabel:`Create` to add one. Then,
select a time slot.
.. tip::
Click the preset button to switch to another one.
.. seealso::
- :doc:`/applications/sales/point_of_sale/preparation`
- :doc:`/applications/sales/point_of_sale/online_food_delivery`
.. _pos/restaurant/orders/courses:
Courses
-------
The :guilabel:`Course` button allows for splitting orders into multiple courses, sending each course
to the kitchen sequentially.
To split an order into courses from the :ref:`register <pos/restaurant/orders>`, click
:guilabel:`Course` and add products. Repeat the action as many times as needed, then click
:guilabel:`Order` to send the order to the kitchen, which also fires the first course.
When ready for the second course, retrieve the order from the :ref:`Floor plan
<pos/restaurant/floors>` view or the :guilabel:`Orders` overview, and click :guilabel:`Fire Course
2`. Repeat the action as many times as needed.
.. tip::
- Alternatively, click :guilabel:`Course` as often as needed to display the desired number of
courses in the cart. Then, click each course, add products, and click :guilabel:`Order`.
- To transfer a product or an entire course into another course, select it in the cart, click
the :icon:`fa-ellipsis-v` (:guilabel:`Actions`) icon, then :icon:`fa-arrow-down`
:guilabel:`Transfer course`, and select the preferred course.
.. _pos/restaurant/orders-printing: .. _pos/restaurant/orders-printing:
Order printing Order printing
============== ==============
Configuration
-------------
To enable sending orders to a kitchen or a bar printer, :doc:`connect a printer To enable sending orders to a kitchen or a bar printer, :doc:`connect a printer
<configuration/epos_printers>` to Odoo, go to the :ref:`POS settings <configuration/settings>`, and <configuration/epos_printers>` to Odoo, go to the :ref:`POS settings <configuration/settings>`, and
follow these steps: follow these steps:
@@ -191,7 +336,7 @@ follow these steps:
#. Define the product categories to be printed by clicking :guilabel:`Add a line` in the #. Define the product categories to be printed by clicking :guilabel:`Add a line` in the
:guilabel:`Printed Product Categories` field and selecting the preferred category from the :guilabel:`Printed Product Categories` field and selecting the preferred category from the
popover. popover.
#. Click :guilabel:`Save & Close`. #. Click :guilabel:`Save`.
#. In the :ref:`POS settings <configuration/settings>`, click :guilabel:`Save`. #. In the :ref:`POS settings <configuration/settings>`, click :guilabel:`Save`.
The printer is then connected to the point of sale and can print kitchen orders and order receipts. The printer is then connected to the point of sale and can print kitchen orders and order receipts.
@@ -204,10 +349,13 @@ The printer is then connected to the point of sale and can print kitchen orders
image, determine the product availability, then click :guilabel:`Save & Close`. image, determine the product availability, then click :guilabel:`Save & Close`.
.. tip:: .. tip::
To access all preparation printers from the :ref:`POS settings <configuration/settings>`, scroll - To access all preparation printers from the :ref:`POS settings <configuration/settings>`,
down to the :guilabel:`Preparation` section, and click :icon:`oi-arrow-right` scroll down to the :guilabel:`Preparation` section and click :icon:`oi-arrow-right`
:guilabel:`Printers`. Alternatively, go to :menuselection:`Point of Sale --> Orders --> :guilabel:`Printers`. Alternatively, go to :menuselection:`Point of Sale --> Orders -->
Preparations Printers`. Preparations Printers`.
- After :ref:`processing an order <pos/restaurant/orders/process>`, click the :icon:`fa-cutlery`
(:guilabel:`order`) icon in the :ref:`POS register <pos/restaurant/orders>` next to
:guilabel:`Payment` to reprint a duplicate of the last kitchen order.
.. seealso:: .. seealso::
- :doc:`Connect an IoT system to a POS <configuration/pos_iot>` - :doc:`Connect an IoT system to a POS <configuration/pos_iot>`
@@ -226,26 +374,29 @@ Bill splitting
-------------- --------------
To allow bill splitting, go to :menuselection:`Point of Sale --> Configuration --> Settings`, and To allow bill splitting, go to :menuselection:`Point of Sale --> Configuration --> Settings`, and
enable :guilabel:`Allow Bill Splitting` under the :guilabel:`Restaurant Mode` section. enable :guilabel:`Allow Bill Splitting` under the :guilabel:`Point of Sale` section.
To split a bill from the :ref:`POS interface <pos/restaurant/orders>`, follow these steps: To split a bill from the :ref:`POS register <pos/restaurant/orders>`, follow these steps:
#. Click :guilabel:`Actions`, then :guilabel:`Split`. #. Click the :icon:`fa-ellipsis-v` (:guilabel:`Actions`) icon, then :guilabel:`Split`.
#. Select at least one product and click :guilabel:`Split Order`. #. Select at least one product and perform one of the following actions:
#. Proceed with the :ref:`payment <pos/restaurant/bills/payment>`.
- :guilabel:`Payment`: Process the direct payment for the selected product(s).
- :guilabel:`Split Order`: Create a sub-order.
- :guilabel:`Transfer`: Transfer one or all products to another table.
#. Process the :ref:`payment <pos/restaurant/bills/payment>`.
#. Click :icon:`fa-chevron-right` :guilabel:`Continue` and repeat the process for each guest. #. Click :icon:`fa-chevron-right` :guilabel:`Continue` and repeat the process for each guest.
.. note:: .. note::
- Splitting a bill requires ordering at least two products and creates a sub-order, which must Splitting a bill requires ordering at least two products and creates a sub-order, which must
be paid before returning to the main order. be paid before returning to the main order.
- Clicking :guilabel:`Split Order` without selecting any product creates an empty sub-order.
.. _pos/restaurant/bills/payment: .. _pos/restaurant/bills/payment:
Order payment Order payment
------------- -------------
To proceed with the order payment from the :ref:`POS interface <pos/restaurant/orders>`, follow To proceed with the order payment from the :ref:`POS register <pos/restaurant/orders>`, follow
these steps: these steps:
#. Click :guilabel:`Payment`. #. Click :guilabel:`Payment`.
@@ -263,7 +414,7 @@ Receipt printing
---------------- ----------------
To allow receipt printing, go to :menuselection:`Point of Sale --> Configuration --> Settings`, and To allow receipt printing, go to :menuselection:`Point of Sale --> Configuration --> Settings`, and
enable :guilabel:`Early Receipt Printing` under the :guilabel:`Restaurant Mode` section. enable :guilabel:`Early Receipt Printing` under the :guilabel:`Point of Sale` section.
After a successful :ref:`order payment <pos/restaurant/bills/payment>`, click :icon:`fa-print` After a successful :ref:`order payment <pos/restaurant/bills/payment>`, click :icon:`fa-print`
:guilabel:`Print Full Receipt` to generate and print a bill. :guilabel:`Print Full Receipt` to generate and print a bill.
@@ -284,7 +435,7 @@ Configuration
------------- -------------
To allow tipping in a POS, go to the :ref:`POS settings <configuration/settings>`, scroll down to To allow tipping in a POS, go to the :ref:`POS settings <configuration/settings>`, scroll down to
the :guilabel:`Payment` section, enable :guilabel:`Tips`, and click :guilabel:`Save`. the :guilabel:`Payment` section, enable :guilabel:`Tips`, and click :guilabel:`Save`.
.. important:: .. important::
- The :guilabel:`Add tip after payment` setting only works for a POS in the United States - The :guilabel:`Add tip after payment` setting only works for a POS in the United States
@@ -297,7 +448,7 @@ the :guilabel:`Payment` section, enable :guilabel:`Tips`, and click :guilabel:`
- Saving the :guilabel:`Tips` setting automatically fills the :guilabel:`Tip product` field - Saving the :guilabel:`Tips` setting automatically fills the :guilabel:`Tip product` field
with the preconfigured :guilabel:`[TIPS] Tips` product, which is only used for tips. When with the preconfigured :guilabel:`[TIPS] Tips` product, which is only used for tips. When
selecting another product in the :guilabel:`Tip product` field, the chosen product is no selecting another product in the :guilabel:`Tip product` field, the chosen product is no
longer available on the :ref:`POS interface <pos/restaurant/orders>`. longer available on the :ref:`POS register <pos/restaurant/orders>`.
- Choose only one tip product per POS. - Choose only one tip product per POS.
.. _pos/restaurant/tips/add-tips: .. _pos/restaurant/tips/add-tips:
@@ -313,9 +464,9 @@ To process a tip during :ref:`payment <pos/restaurant/bills/payment>`, follow th
.. tip:: .. tip::
If the order and the tip are paid using different payment methods, select a :doc:`payment method If the order and the tip are paid using different payment methods, select a :doc:`payment method
<payment_methods>` for the order, click :icon:`fa-heart` :guilabel:`Tip`, add the tip amount, and <payment_methods>` for the order first. Then, select a payment method for the tip, click
click :guilabel:`Ok`. Then, select a payment method for the tip and :guilabel:`Validate` the :icon:`fa-heart` :guilabel:`Tip`, add the tip amount, and click :guilabel:`Ok`.
payment. Finally, :guilabel:`Validate` the payment.
Tip after payment (US only) Tip after payment (US only)
--------------------------- ---------------------------

View File

@@ -34,8 +34,9 @@ You can choose from:
with the generated QR codes. with the generated QR codes.
.. note:: .. note::
In **restaurants**, printing or downloading QR codes generates as many QR codes as the In :ref:`restaurants <pos/restaurant/floors>`, printing or downloading QR codes generates
number of available tables. In **shops**, it generates only one generic QR code. as many QR codes as the number of available tables. In **shops**, it generates only one
generic QR code.
.. tip:: .. tip::
To customize QR codes, To customize QR codes,