From effd34c53a685574de99d8dbf0b8caec67e6a9dc Mon Sep 17 00:00:00 2001 From: emmi-odoo Date: Fri, 5 Sep 2025 16:50:27 +0200 Subject: [PATCH] [IMP] pos/restaurant: Update Restaurant features 18.4 task-3604855 --- .../sales/point_of_sale/restaurant.rst | 277 ++++++++++++++---- .../sales/point_of_sale/self_order.rst | 5 +- 2 files changed, 217 insertions(+), 65 deletions(-) diff --git a/content/applications/sales/point_of_sale/restaurant.rst b/content/applications/sales/point_of_sale/restaurant.rst index 11f0ec8554..b5d773339c 100644 --- a/content/applications/sales/point_of_sale/restaurant.rst +++ b/content/applications/sales/point_of_sale/restaurant.rst @@ -5,43 +5,66 @@ Restaurant features Odoo Point of Sale provides various features to manage a restaurant or a bar: - :ref:`Organizing the floors and tables `; -- :ref:`Taking orders `; -- :ref:`Communicating with the kitchen or bar through the POS `; +- :ref:`Managing orders `; +- :ref:`Notifying the kitchen or bar through the POS `; - :ref:`Printing and splitting bills `; - :ref:`Collecting tips `; -- :doc:`Setting different taxes for takeaway food `. +- :doc:`Setting different taxes for takeout orders `. -Three main buttons in the POS register allow for navigating between the :ref:`Floor plan -` view, tables, and :ref:`orders `: +Three main buttons in the POS interface allow for navigating between tables, the register, and +orders: -- :guilabel:`Plan`: Access the :ref:`Floor plan ` view. -- :guilabel:`Table`: Enter a table or order number, then click :guilabel:`Jump` to access them. The - button's label updates to display the selected number. When applicable, click :guilabel:`Book - table` to confirm the table's occupancy. -- :icon:`fa-plus-circle` (:guilabel:`order`): :ref:`Create a direct sales order ` - 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 ` view. - -.. note:: - - When :guilabel:`Table Booking` is enabled in the :ref:`POS 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. +- :guilabel:`Tables`: Access the :ref:`Floor plan ` view to manage table + occupancy. +- :guilabel:`Register`: Access the :ref:`POS register ` to process orders. +- :guilabel:`Orders`: Access the overview of all orders. .. important:: 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 `. +.. note:: + When :guilabel:`Booking` is enabled in the :ref:`POS settings `, a + :ref:`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 +`, scroll down to the :guilabel:`PoS Interface` section, and set the +:guilabel:`Default Screen` setting to :guilabel:`Tables` (i.e., :ref:`Floor plan +` view) or :ref:`Register `. + .. _pos/restaurant/floors: Floors and tables ================= -The :guilabel:`Floor plan` view is the first screen displayed when :ref:`accessing the POS register -`. It enables managing restaurant floors and tables, and monitoring -table status in real time (occupancy, reservations, and kitchen orders). +The :guilabel:`Floor plan` view allows for managing restaurant floors and tables and monitoring +table status in real time (occupancy, reservations, kitchen orders) using the following action +buttons: + +- :icon:`fa-plus` :guilabel:`New Order`: :ref:`Create a direct sales order + ` 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 ` + (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 + ` setting, then click :icon:`fa-qrcode` + :guilabel:`Get QR Codes` in the :guilabel:`Floor plan` view. This `offer + `_ is available worldwide and for + all subscription types. .. example:: .. image:: restaurant/plan-understand.png @@ -57,7 +80,7 @@ table status in real time (occupancy, reservations, and kitchen orders). 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/floors/backend: @@ -86,12 +109,12 @@ plan`: #. Save. .. note:: - - Enable the :guilabel:`Table Booking` setting to assign an :guilabel:`Appointment resource` and - make a table bookable. + - Enable the :guilabel:`Booking` setting to assign an :guilabel:`Appointment resource` and make + a table bookable. - Click the :icon:`fa-trash-o` (:guilabel:`trash`) icon to delete a table. .. 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 `. Under :guilabel:`Floors & Tables Map`, type the floor name in the :guilabel:`Floors` field, and press `Enter`. @@ -128,27 +151,100 @@ follow the next steps: .. warning:: 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 + ` app. + +.. _pos/restaurant/floors/booking/configuration: + +Booking configuration +~~~~~~~~~~~~~~~~~~~~~ + +To enable and configure the bookings, follow these steps: + +#. Go to the :ref:`POS 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 ` 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 `, 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 ` view, click the + booking notification on the booked table. + .. _pos/restaurant/orders: Order management ================ -To take an order, :ref:`open the POS register ` and follow these steps: +The POS register allows for :ref:`processing ` and :ref:`transferring +` orders, defining :ref:`presets `, +and managing :ref:`courses `. + +.. _pos/restaurant/orders/process: + +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: -#. Select a :ref:`floor plan ` and click a table or click the - :icon:`fa-plus-circle` (:guilabel:`order`) button at the top to create a direct sales order. -#. Add products to the order. + - 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. When ready, :ref:`process the order payment `. +.. note:: + Clicking :guilabel:`Order` redirects to the :ref:`Floor plan ` view if + :guilabel:`Tables` is selected as the :ref:`default start screen `. + .. tip:: - - To cancel a processed order, click :guilabel:`Actions`, then :guilabel:`Cancel Order`. If an - :ref:`order printer is configured `, a cancellation ticket is - automatically printed. - - To switch to another table order, click the button with the table number at the top of the POS - interface, enter a table number, and click :guilabel:`Jump`. - - Click :guilabel:`Release table` to cancel a table's occupancy. + - To cancel an order, click the :icon:`fa-ellipsis-v` (:guilabel:`Actions`) icon, then + :guilabel:`Cancel Order`. If an :ref:`order printer is configured + `, a cancellation ticket is automatically printed for an + order sent to the kitchen. + - After selecting a table in the :ref:`Floor plan ` view, click + :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 ` to send an order to the kitchen printer when clicking :guilabel:`Order`. @@ -157,21 +253,70 @@ When ready, :ref:`process the order payment `. Order transfer -------------- -To transfer an order to another table from the :ref:`POS interface `, click -:guilabel:`Actions`, then :guilabel:`Transfer/Merge`, and choose the target table in the -:ref:`Floor plan ` view: +To transfer an order to another table from the :ref:`POS register `, click +the :icon:`fa-ellipsis-v` (:guilabel:`Actions`) icon, then :guilabel:`Transfer/Merge`, and choose +the target table in the :ref:`Floor plan ` view: - Select an available table to transfer 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 ` 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 `, select the relevant preset, and :ref:`process the order +`: + +- :guilabel:`Dine In`: Assign a :ref:`table or open a tab `. +- :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 `, 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 +` 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: Order printing ============== -Configuration -------------- - To enable sending orders to a kitchen or a bar printer, :doc:`connect a printer ` to Odoo, go to the :ref:`POS settings `, and 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 :guilabel:`Printed Product Categories` field and selecting the preferred category from the popover. -#. Click :guilabel:`Save & Close`. +#. Click :guilabel:`Save`. #. In the :ref:`POS settings `, click :guilabel:`Save`. 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`. .. tip:: - To access all preparation printers from the :ref:`POS settings `, scroll - down to the :guilabel:`Preparation` section, and click :icon:`oi-arrow-right` - :guilabel:`Printers`. Alternatively, go to :menuselection:`Point of Sale --> Orders --> - Preparations Printers`. + - To access all preparation printers from the :ref:`POS settings `, + scroll down to the :guilabel:`Preparation` section and click :icon:`oi-arrow-right` + :guilabel:`Printers`. Alternatively, go to :menuselection:`Point of Sale --> Orders --> + Preparations Printers`. + - After :ref:`processing an order `, click the :icon:`fa-cutlery` + (:guilabel:`order`) icon in the :ref:`POS register ` next to + :guilabel:`Payment` to reprint a duplicate of the last kitchen order. .. seealso:: - :doc:`Connect an IoT system to a POS ` @@ -226,26 +374,29 @@ Bill splitting -------------- 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 register `, follow these steps: -To split a bill from the :ref:`POS interface `, follow these steps: +#. Click the :icon:`fa-ellipsis-v` (:guilabel:`Actions`) icon, then :guilabel:`Split`. +#. Select at least one product and perform one of the following actions: -#. Click :guilabel:`Actions`, then :guilabel:`Split`. -#. Select at least one product and click :guilabel:`Split Order`. -#. Proceed with the :ref:`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 `. #. Click :icon:`fa-chevron-right` :guilabel:`Continue` and repeat the process for each guest. .. note:: - - Splitting a bill requires ordering at least two products and creates a sub-order, which must - be paid before returning to the main order. - - Clicking :guilabel:`Split Order` without selecting any product creates an empty sub-order. + Splitting a bill requires ordering at least two products and creates a sub-order, which must + be paid before returning to the main order. .. _pos/restaurant/bills/payment: Order payment ------------- -To proceed with the order payment from the :ref:`POS interface `, follow +To proceed with the order payment from the :ref:`POS register `, follow these steps: #. Click :guilabel:`Payment`. @@ -263,7 +414,7 @@ Receipt printing ---------------- 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 `, click :icon:`fa-print` :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 `, 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:: - 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 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 - longer available on the :ref:`POS interface `. + longer available on the :ref:`POS register `. - Choose only one tip product per POS. .. _pos/restaurant/tips/add-tips: @@ -313,9 +464,9 @@ To process a tip during :ref:`payment `, follow th .. tip:: If the order and the tip are paid using different payment methods, select a :doc:`payment method - ` for the order, click :icon:`fa-heart` :guilabel:`Tip`, add the tip amount, and - click :guilabel:`Ok`. Then, select a payment method for the tip and :guilabel:`Validate` the - payment. + ` for the order first. Then, select a payment method for the tip, click + :icon:`fa-heart` :guilabel:`Tip`, add the tip amount, and click :guilabel:`Ok`. + Finally, :guilabel:`Validate` the payment. Tip after payment (US only) --------------------------- diff --git a/content/applications/sales/point_of_sale/self_order.rst b/content/applications/sales/point_of_sale/self_order.rst index 6eb138a4eb..4a3d1b1f94 100644 --- a/content/applications/sales/point_of_sale/self_order.rst +++ b/content/applications/sales/point_of_sale/self_order.rst @@ -34,8 +34,9 @@ You can choose from: with the generated QR codes. .. note:: - In **restaurants**, printing or downloading QR codes generates as many QR codes as the - number of available tables. In **shops**, it generates only one generic QR code. + In :ref:`restaurants `, printing or downloading QR codes generates + as many QR codes as the number of available tables. In **shops**, it generates only one + generic QR code. .. tip:: To customize QR codes,