diff --git a/content/applications/sales/point_of_sale/restaurant.rst b/content/applications/sales/point_of_sale/restaurant.rst index 11f0ec8554..799fefacba 100644 --- a/content/applications/sales/point_of_sale/restaurant.rst +++ b/content/applications/sales/point_of_sale/restaurant.rst @@ -5,43 +5,60 @@ 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 the register `; +- :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 :ref:`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. + - To decide whether to start from the :ref:`Floor plan ` view or the + :ref:`register `, go to the :ref:`POS settings + `, scroll down to the :guilabel:`PoS Interface` section, and select + :guilabel:`Tables` or :guilabel:`Register` under the :guilabel:`Default Screen` setting. + .. _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, monitoring table +status in real time (occupancy, reservations, kitchen orders), and using the following action +buttons to perform these operations: + +- :icon:`fa-plus` :guilabel:`New Order`: :ref:`Create a direct sales order + ` that is not linked to any table. Start adding products, click + :guilabel:`Set Table` to assign the order to an existing table, or click :guilabel:`Set Tab` to + record the customer's name in an open order. +- :guilabel:`Main Floor/Patio`: Navigate between :ref:`configured floors + `. +- :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. + - In the :ref:`POS settings `, under the :guilabel:`Mobile self-order & + Kiosk` section, first select a :guilabel:`QR menu`. Then, click :icon:`fa-qrcode` :guilabel:`Get + QR Codes` in the :guilabel:`Floor plan` view to order free QR codes adapted to the floor + plan. This `offer `_ is + available worldwide and for all subscription types. .. example:: .. image:: restaurant/plan-understand.png @@ -57,7 +74,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 +103,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,26 +145,107 @@ follow the next steps: .. warning:: Removing a table or a floor is permanent. +.. _pos/restaurant/floors/booking: + +Booking +------- + +The :guilabel:`Booking` setting allows for managing table online booking for a designated point of +sale. :ref:`Configure the setting ` from the backend +and :ref:`manage bookings ` from the frontend. + +.. note:: + Enabling the :guilabel:`Booking` setting automatically installs the Appointments app. + +.. _pos/restaurant/floors/booking/configuration: + +Booking configuration +~~~~~~~~~~~~~~~~~~~~~ + +To enable and configure the :guilabel:`Booking` setting, 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`. +#. Click the :icon:`fa-expand` (:guilabel:`expand`) icon on the popover and configure the + :ref:`Appointment type ` form. +#. Click the :icon:`fa-globe` (:guilabel:`Go to Website`) icon and activate the + :guilabel:`Published` toggle to publish the appointment page online. + +Customers can book a table directly from the website. + +.. important:: + In the :guilabel:`Appointment type` form, set the :guilabel:`Book` field to :guilabel:`Resources` + to ensure that only existing resources can be booked. Then, enable :guilabel:`Manage Capacities` + to define the maximum amount each resource can handle. + +.. tip:: + - To access or modify the :guilabel:`Appointment type` form, go to the :ref:`POS settings + `, scroll down to the :guilabel:`PoS Interface` section, select the + :guilabel:`Appointment type` under the :guilabel:`Booking` section, and click the + :icon:`oi-arrow-right` (:guilabel:`Internal link`) icon. + - To accommodate a booking that exceeds the capacity of a single table, click the + :icon:`fa-cubes` (:guilabel:`Resources`) icon on the :guilabel:`Appointment Type` form, select + a table, and add additional tables in the :guilabel:`Linked Resource` field to merge them. + +.. _pos/restaurant/floors/booking/management: + +Booking management +~~~~~~~~~~~~~~~~~~ + +From the POS interface, click :guilabel:`Booking` to access the booking overview. The following +actions are available on the :guilabel:`Booking` screen: + +- :guilabel:`New`: Create a booking from the frontend. Add a name, the date, the number of guests, + the phone number, the duration, and the resources, then click :guilabel:`Save`. +- Click a booking to :guilabel:`Edit` or :guilabel:`Delete` it. Additionally, update the stage from + :guilabel:`Booked` to :guilabel:`Check-In` (when guests arrive) or :guilabel:`No Show` (when + guests are absent). + +.. tip:: + To quickly edit a booking from the :ref:`Floor plan ` view, click the + booked table. Check in or cancel the booking, edit the :guilabel:`Date`, :guilabel:`Number of + guests`, :guilabel:`Phone number`, :guilabel:`Duration`, or :guilabel:`Resources`, then + :guilabel:`Save`. + .. _pos/restaurant/orders: -Order management -================ +Register management +=================== + +The POS register allows for :ref:`processing ` and :ref:`transferring +` orders, defining :ref:`presets `, +and managing :ref:`courses `. To open it, access the Point of Sale +app and click :guilabel:`Open Register`. In the POS interface, click :guilabel:`Register` to manage +transactions. -To take an order, :ref:`open the POS register ` and follow these steps: +.. _pos/restaurant/orders/process: -#. 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. +Order process +------------- + +To process an order from the :ref:`POS register `, follow these steps: + +#. Start adding products. +#. 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 link the order to a customer. Enter the customer'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 :guilabel:`Default 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`. + - 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 a + processed order. - Click :guilabel:`Release table` to cancel a table's occupancy. - :ref:`Configure a printer ` to send an order to the kitchen printer when clicking :guilabel:`Order`. @@ -157,21 +255,162 @@ 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 preconfigured settings that determine whether an order is for :guilabel:`Dine In`, +:guilabel:`Takeout`, and :guilabel:`Delivery`. They also control whether customer contact +information is required and apply capacity limits based on opening hours and order quantity. + +.. seealso:: + - :doc:`/applications/sales/point_of_sale/preparation` + - :doc:`/applications/sales/point_of_sale/online_food_delivery` + +.. _pos/restaurant/orders/preset/backend: + +Preset editing +~~~~~~~~~~~~~~ + +To edit preconfigured presets, follow these steps: + +#. Go to the :ref:`POS settings ` and scroll down to the the + :guilabel:`Take out / Delivery / Members` setting under the :guilabel:`Point of Sale` section. +#. Click :icon:`oi-arrow-right` :guilabel:`Configure Presets` under the :guilabel:`Default` field, + then click the desired preset. +#. Apply or edit the following options on the :guilabel:`Presets` form: + + - :guilabel:`Pricelist`: Select or :doc:`configure a pricelist + ` to adapt prices depending on the + product. + - :guilabel:`Fiscal Position`: Select or :doc:`configure a fiscal position + ` based on the order type. + - :guilabel:`Manage orders by time`: Select a :guilabel:`Working Time` in the :guilabel:`Schedule + based on` field, determine the :guilabel:`Preparation capacity` and the duration of the slots, + and configure the working hours on the :guilabel:`Schedule` tab. + - :guilabel:`Identification`: Specify whether identification details (such as :guilabel:`Name` or + :guilabel:`Address`) are required. + - :guilabel:`Return mode`: Process a return. All items added to the cart are entered as negative + quantities, while the correct pricelist and fiscal position remain applied. + - :guilabel:`Color`: Define the color of the preset button in the :ref:`register + `. +#. Determine which information and options are visible to customers on the website and the + self-order interface: + + - :guilabel:`Schedule`: Configure weekly working hours by selecting the days and corresponding + time slots. + - :guilabel:`Self Ordering`: To make the preset available in the self-order interface, enable + :guilabel:`Available in self`. Select a service type in the :guilabel:`Service at` field and + select or :doc:`configure an email template ` + in the :guilabel:`Email Confirmation` field. + - :guilabel:`Options`: To force guest selection when :ref:`taking an order + `, enable :guilabel:`Guest`. +#. Save. + +.. important:: + To apply a default preset, access the :guilabel:`Take out / Delivery / Members` setting, and + select the preferred preset in the :guilabel:`Default` field. Applying a default preset allows + for saving and using the available presets. + +.. note:: + - The :guilabel:`Schedule` tab only appears when the :guilabel:`Manage orders by time` option is + enabled. + - The :guilabel:`Service at` and :guilabel:`Email Confirmation` fields only appear when the + :guilabel:`Available in self` option is enabled in the :guilabel:`Self Ordering` tab. + +.. tip:: + - To create a preset, go to the :ref:`POS settings ` and scroll down to + the :guilabel:`Take out / Delivery / Members` setting under the :guilabel:`Point of Sale` + section. Enter a name in the :guilabel:`Available` field and click :guilabel:`Create and edit`. + - To access presets quickly, go to :menuselection:`Point of Sale --> Configuration --> Presets`. + +.. _pos/restaurant/orders/preset/use: + +Preset use +~~~~~~~~~~ + +To process preconfigured presets from the :ref:`register `, select the +preferred preset, and :ref:`process the order `: + +- :guilabel:`Dine In`: Set a :ref:`table or a tab `. + +- :guilabel:`Takeout`: Enter the customer's name and click :guilabel:`Apply`, then select a date + and a time slot. + +- :guilabel:`Delivery`: Choose a customer. To create one, click :guilabel:`Create`, enter a name, + phone number, an email, and an address, then click :guilabel:`Save`. + +.. _pos/restaurant/orders/courses: + +Courses +------- + +Odoo Point of Sale allows orders to be split into multiple courses, sending each course to the +kitchen in sequence when using the :guilabel:`Dine In` :ref:`preset +`. + +To split an order into courses from the :ref:`register `, click +:guilabel:`Course` and start adding products. Repeat the action as many times as needed. Set a +:ref:`table or a tab `, 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 :ref:`Orders overview `, and +click :guilabel:`Fire Course 2`. Repeat the action as many times as needed. + +.. tip:: + 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-overview: + +Orders overview +=============== + +The :guilabel:`Orders` overview allows for viewing, searching, retrieving, and loading all orders. + +To view orders specific to a preset, click the relevant preset. + +To search for orders, type the :guilabel:`Reference`, :guilabel:`Receipt Number`, :guilabel:`Date`, +or :guilabel:`Customer` in the search bar. + +To filter orders based on their status, click the dropdown menu and select one of the following +options: + +- :guilabel:`Active`: Orders in progress, either marked as :guilabel:`Ongoing` or in the + :guilabel:`Payment` stage. +- :guilabel:`Receipt`: Orders with the receipt emailed to the customer. +- :guilabel:`Paid`: Paid orders. + +To navigate between pages, click the :icon:`fa-caret-left` :icon:`fa-caret-right` +(:guilabel:`caret`) icons. + +To access an order in the register, click it, then click :guilabel:`Load Order`. + +.. note:: + Paid orders can be :ref:`refunded `. + +.. tip:: + - To define the number of orders visible on a page, click `1-x / x`. Enter a number lower than + the total number of pages, and click :guilabel:`Ok`. + - Click the :icon:`fa-trash` (:guilabel:`trash`) icon next to an :guilabel:`Active` order to + delete it. + - Click the preset again to go back to the main overview. + .. _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 +430,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 +443,12 @@ 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`. + - In case of a printing issue, click the :icon:`fa-cutlery` (:guilabel:`order`) icon in the + :ref:`POS register ` to reprint the last kitchen order. .. seealso:: - :doc:`Connect an IoT system to a POS ` @@ -226,26 +467,30 @@ 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. + - Transferring only one product during the order split implies transferring the sub-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 +508,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 +529,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 +542,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 +558,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) ---------------------------