diff --git a/content/applications/sales/point_of_sale.rst b/content/applications/sales/point_of_sale.rst index 79162e3ad9..c1e95643c8 100644 --- a/content/applications/sales/point_of_sale.rst +++ b/content/applications/sales/point_of_sale.rst @@ -5,118 +5,181 @@ Point of Sale ============= -With **Odoo Point of Sale**, run your shops and restaurants easily. The app works on any device with -a web browser, even if you are temporarily offline. Product moves are automatically registered in -your stock, you get real-time statistics, and your data is consolidated across all shops. +With **Odoo Point of Sale**, run your shops and restaurants easily. The app operates on any device +with a web browser, and keeps running even in the event of temporary network disconnection. + +Point-of-sale systems are commonly used in :doc:`stores ` or :doc:`restaurants +`. Odoo POS can also be set up for :doc:`self-ordering +`, allowing customers to order using their own mobile or a self-ordering +kiosks. + +Like all Odoo applications, :abbr:`POS (Point of Sale)` is fully integrated with the entire Odoo +ecosystem. For instance, product movements are automatically registered in +:doc:`Inventory <../inventory_and_mrp/inventory>` and all POS transactions are recorded in +:doc:`Accounting <../finance/accounting>`. + +Odoo POS integrates with all essential point-of-sale hardware, including :doc:`payment terminals +`, cash drawers, weighing scales, :doc:`barcode scanners +`, :doc:`customer displays `, +:doc:`preparation displays `, and :doc:`electronic shelf labels +`. This hardware can be connected directly or through an +:doc:`IoT system <../general/iot>`, ensuring a comprehensive and connected retail environment. .. seealso:: - - `Odoo Tutorials: Point of Sale Tutorials `_ - - :doc:`IoT Boxes Documentations ` + `Odoo Tutorials: Point of Sale tutorials `_ .. _pos/session-start: Start a session =============== -From the **POS dashboard**, click :guilabel:`New Session`, and at the :guilabel:`Opening Cash -Control` screen, click :guilabel:`Open Session` to start a POS session, or click :guilabel:`Continue -Selling` if the session is already opened. +Once the POS is fully :doc:`configured `, start a session from +:menuselection:`Point of Sale --> Dashboard`: + +#. Click :guilabel:`Open Register`. +#. At the :guilabel:`Opening Control` screen, ensure the :guilabel:`Opening cash` amount is correct. +#. Click :guilabel:`Open Register` again. .. note:: - :doc:`Multiple users ` can be logged into the same session at the - same time. However, the session can only be opened once on the same browser. + - Once the session is open, :guilabel:`Open Register` is replaced by :guilabel:`Continue + Selling`. + - :doc:`Multiple users ` can be logged into the same session at the + same time. However, the session can only be opened once on the same browser. .. _pos/sell: Sell products ============= -Click on products to add them to the cart. To change the **quantity**, click :guilabel:`Qty` and -enter the number of products using the keypad. To add a **discount** or modify the product -**price**, click respectively :guilabel:`% Disc` or :guilabel:`Price` and enter the amounts. +The POS :abbr:`UI (user interface)` can be divided in three distinctive sections: the cart, a pad +to adjust cart items, apply discounts, set customers, etc., and the list of products. To make sales: + +#. Click on products to add them to the cart. -Once an order is completed, proceed to checkout by clicking :guilabel:`Payment`. Select the -**payment method**, enter the received amount, and click :guilabel:`Validate`. Click -:guilabel:`New Order` to move on to the next customer. + #. To change the **quantity**, click :guilabel:`Qty` and enter the number of products using the + keypad. + #. To add a **discount**, click :guilabel:`% Disc` and enter the discount value using the keypad. + #. To modify the product **price**, click :guilabel:`Price` and enter new product price using the + keypad. +#. Once an order is completed, proceed to checkout by clicking :guilabel:`Payment`. + + #. Select the **payment method**. + #. Enter the received amount. + #. Click :guilabel:`Validate`. +#. Finally, click :guilabel:`New Order` to move on to the next customer. .. image:: point_of_sale/pos-interface.png :alt: POS session interface. + :scale: 45 % .. tip:: - - You can use both `,` and `.` on your keyboard as decimal separators. - - **Cash** is selected by default if you enter the amount without choosing a payment method. + - Use both `,` and `.` on the keyboard as decimal separators. + - **Cash** is selected by default if no payment method is manually selected. .. note:: - The system can only load a limited number of products for effective opening. Click - :guilabel:`Search more` if the desired product is not loaded automatically. + Click the :icon:`fa-plus-circle` :guilabel:`(plus)` icon to put an order aside and start a new + one. .. _pos/customers: Set customers ============= -Registering your customer is necessary to :doc:`collect their loyalty points and grant them rewards -`, automatically apply the :doc:`attributed pricelist -`, or :ref:`generate and print an invoice +Registering customers is necessary to :doc:`collect their loyalty points and grant them rewards +`, automatically apply an :doc:`attributed pricelist +`, or :ref:`generate and print invoices `. -You can create customers from an :ref:`open POS session ` by clicking -:menuselection:`Customer --> Create`, and filling in the contact information. You can also create -customers from the backend by going to :menuselection:`Point of Sale --> Orders --> Customers` and -clicking :guilabel:`New`. Then, fill in the information and save. +To create customers from an :ref:`open POS session `: + +#. Click :guilabel:`Customer`. +#. Click :guilabel:`Create`. +#. Then, complete the contact information. -To set a customer during an order, access the list of customers by clicking :guilabel:`Customer` on -the POS interface. You can also set a customer at the payment screen by clicking -:guilabel:`Customer`. +To create customers from the backend: + +#. Go to :menuselection:`Point of Sale --> Orders --> Customers`. +#. Click :guilabel:`New`. +#. Then, fill in the information and save. + +To assign a customer to an order, click :guilabel:`Customer` to access the customer list on the POS +interface or at the payment screen, and select the desired customer. .. _pos/customer-notes: -Customer notes -============== +Notes +===== + +Customer and general notes +-------------------------- -You can add **customer notes** about specific products directly from an open :ref:`POS session -`. For instance, to provide cleaning and maintenance tips. They can also be used -to track a customer's particular request, such as not wanting the product to be assembled for them. +Notes for customers appear on receipts and invoices. These notes come in two forms: customer notes +for specific products and general notes for the entire order. To add a **customer note** during an +:ref:`open POS session `: -To do so, select a product and click :guilabel:`Customer Note` on the pad. Doing so opens a pop-up -window in which you can add or modify content for the note. +#. Select a product from the cart. +#. Click :guilabel:`Actions`. +#. Select :guilabel:`Customer Note`, which opens a modal window to add or modify the note's content. .. note:: Product notes from an :doc:`imported SO ` are displayed identically in the cart. -.. image:: point_of_sale/customer-notes.png - :alt: Customer note button and notes (SO and POS session) on products in the cart +To add a **general note** for the complete order: + +#. Click :guilabel:`Actions` and +#. Click :guilabel:`General Note`, which opens a modal window to add or modify the note's content. + + - Type the note directly into the window, or + - Use a configured note model to save time if the same content is frequently used. Click on the + desired note model to insert its text. + +To set up note models: + +#. Navigate to :menuselection:`Configuration --> Note Models`. +#. Click :guilabel:`New`. +#. Enter the desired text for your note model and save it. -Customer notes appear on customers' receipts and invoices similarly to how they appear in the cart, -under the related product. +Internal notes +-------------- -.. image:: point_of_sale/notes-receipt.png - :alt: Customer receipt with notes from an SO and from the customer note feature +In parallel, Internal Notes attach to items similarly but are destined to other users. For +example, an additional information about an order for a cook, such as `no tomato`. That information, +while useful, shouldn't be printed on the customer receipt. To add an **internal note**: + +#. Select an item from the cart. +#. Click :guilabel:`Internal Note`, which opens a modal window to add or modify the note's content. + +.. image:: point_of_sale/customer-notes.png + :alt: Customer note button and notes (SO and POS session) on products in the cart + :scale: 50 % .. _pos/refund: Return and refund products ========================== -To return and refund a product, +To refund a returned product, follow these steps: -#. :ref:`start a session ` from the **POS dashboard**; -#. click :guilabel:`Refund` and select the corresponding order; -#. select the product and the quantity to refund using the keypad; -#. click :guilabel:`Refund` to go back to the previous screen; -#. once the order is completed, click :guilabel:`Payment` to proceed to the refund; -#. click :guilabel:`Validate` and :guilabel:`New Order` to move on to the next customer. +#. :ref:`Start a session ` from the **POS dashboard**. +#. Click :guilabel:`Actions`, then :icon:`fa-undo` :guilabel:`Refund`, and select the corresponding + order. +#. Select items and use the keypad to set the quantity to refund, then click :guilabel:`Refund`. +#. Click :guilabel:`Payment` and select the appropriate refund payment method. +#. Click :guilabel:`Validate` and print the receipt if needed. +#. Click :guilabel:`New Order` to proceed to the next customer. -.. image:: point_of_sale/refund.png - :alt: refund view from a POS +.. tip:: + - To filter the **orders list** by :guilabel:`Order number`, :guilabel:`Receipt Number`, + :guilabel:`Date`, or :guilabel:`Customer`, enter a value in the search bar and choose the + relevant filter from the dropdown menu. + - When the total amount is negative, adding a gift card to the cart automatically adjusts the + gift card balance to match that amount. .. note:: - - You can filter the **orders list** by :guilabel:`Receipt Number`, :guilabel:`Date` or - :guilabel:`Customer` using the search bar. - - You can also refund a product by selecting the returned product from an open session, and - setting a negative quantity that equals the number of returned products. To do so, click - :guilabel:`Qty` and :guilabel:`+/-`, followed by the quantity of returned products. + Alternatively, a refund can be processed by selecting the returned product(s) from an open + session and setting a negative quantity equal to the number of returned items. To do so, click + :guilabel:`Qty` and :guilabel:`+/-`, and update the quantity accordingly. Once the return payment is validated, Odoo generates the required credit note, referencing the original receipt or invoice and partially or fully canceling the document. @@ -126,84 +189,59 @@ original receipt or invoice and partially or fully canceling the document. Manage the cash register ======================== -To add or take out cash from the register, click the **menu icon** in the upper right corner of your -screen and :guilabel:`Cash In/Out`. +Odoo POS allows you to determine which coins and bills are allowed into a cash drawer. For example, +bills over a specific amount could go directly into a safe; in this case, they couldn't be counted. +To set up the allowed coins and bills: + +#. Navigate to :menuselection:`Configuration --> Coins/Bills`. +#. Click :guilabel:`New` to add a new value. +#. Select the POS where this value is available in the :guilabel:`Point of Sale` column. -.. image:: point_of_sale/menu-button.png - :alt: Dropdown menu to close a POS session, reach the backend, add or take cash out or check - orders +To add or take out cash from the register: -Doing so opens a pop-up window on which you can select :guilabel:`Cash In` or :guilabel:`Cash Out`, -enter the amount and the reason, and click :guilabel:`Confirm`. +#. From an open session, click :icon:`fa-bars` (:guilabel:`hamburger menu`). +#. Click :guilabel:`Cash In/Out`, which opens a modal window. +#. Select :guilabel:`Cash In` or :guilabel:`Cash Out`. +#. Enter the amount. +#. Specify the reason for this addition or removal of cash. +#. Finally, click :guilabel:`Confirm`. + +.. note:: + Some users might not be allowed to do cash in or out actions depending on their :doc:`POS access + rights `. .. _pos/session-close: Close the POS session ===================== -To close your session, click the **menu icon** in the upper right corner of your screen and -:guilabel:`Close Session`. - -Doing so opens the :guilabel:`Closing Control` pop-up screen. From this screen, you can retrieve -various information: +To close a session, click :icon:`fa-bars` (:guilabel:`hamburger menu`) and :guilabel:`Close +Register`. -- the number of orders made and the total amount made during the session; -- the expected amounts grouped by payment method. +Doing so opens the :guilabel:`Closing Register` modal screen. From this screen, you can retrieve: -Before closing this window, count your cash using the calculator icon. Doing so opens a pop-up -window that computes the total amount in the cash drawer depending on the coins and bills counted -and added manually. Then, click :guilabel:`Confirm` or :guilabel:`Discard` to close the window. The -computed amount is set in the :guilabel:`Counted` column, and the :guilabel:`Money Details` are -specified in the **Notes** section. +- The number of orders and the total amount made during the session. +- The expected amounts grouped by payment method. -.. image:: point_of_sale/closing-control.png - :alt: How to close a POS session. +#. Click :icon:`fa-money` (:guilabel:`money`) to specify the number of each coin and bill. +#. Click :guilabel:`Confirm` to return to the previous modal window. The computed amount is set in + the :guilabel:`Cash Count` field, and the :guilabel:`Closing Details` are specified in the + :guilabel:`Closing Note` section. +#. Click :guilabel:`Close Register` to close the register and post accounting entries. -Once you are done controlling the amounts, click :guilabel:`Close Session` to close and go back to -the **POS dashboard**. +.. tip:: + Click :icon:`fa-clone` (:guilabel:`clone`) to automatically fill in the field with the expected + amount. .. note:: - - To reach the backend without closing the session, click :guilabel:`Backend` on the dropdown - menu. - - To abort, click :guilabel:`Discard` on the pop-up window. - - Depending on your setup, you might only be allowed to close a session if the expected cash - revenue equals the counted cash. To close it anyway, click :guilabel:`Ok` on the - :guilabel:`Payments Difference` screen. - -.. tip:: + - To abort, click :guilabel:`Discard` on the modal window. + - When the money counted does **not** match the expected amount, a :guilabel:`Payments + Difference` modal window automatically opens. Click :guilabel:`Proceed Anyway` to log the + difference for the books. + - In restaurant, closing the register when orders are still in draft is not allowed and opens a + modal window. Proceed with the remaining orders by clicking :guilabel:`Review Orders` or click + :guilabel:`Cancel Orders` to cancel all of them. - It is strongly advised to close your POS session at the end of each day. - - To look at all your previous sessions, go to :menuselection:`Point of Sale --> Orders --> - Sessions`. - -.. _pos/analytics: - -Analytics -========= - -Once you :ref:`close and post the POS session `, access the comprehensive report -to review all session activities, including who initiated the session and who handled specific -orders. To access the session's report: - -#. Click :icon:`fa-ellipsis-v` (:guilabel:`vertical ellipsis`) on the POS card. -#. Click :guilabel:`Sessions` under the :guilabel:`View` section. -#. From that list view, you can see all the sessions and who initiated them under the - :guilabel:`Opened By` column. -#. Select a POS session to open a detailed session report. -#. Click the :guilabel:`Orders` smart button to display a list of all orders placed during that - session. -#. From that view, you can retrieve the following information: - - - The :guilabel:`Order Ref` - - The :guilabel:`Date` of the order. - - The :guilabel:`Point of Sale` where that order was made. - - The :guilabel:`Receipt Number`. - - The :guilabel:`Customer`. - - The :guilabel:`Employee` that placed this order. - - The :guilabel:`Total` paid amount. - - The order :guilabel:`Status`. - -To get an overview of all orders, regardless of the session, click the vertical ellipsis button -(:guilabel:`⋮`) on the POS card and select :guilabel:`Orders` from the :guilabel:`View` section. .. toctree:: :titlesonly: diff --git a/content/applications/sales/point_of_sale/closing-control.png b/content/applications/sales/point_of_sale/closing-control.png deleted file mode 100644 index ce8a66a583..0000000000 Binary files a/content/applications/sales/point_of_sale/closing-control.png and /dev/null differ diff --git a/content/applications/sales/point_of_sale/customer-notes.png b/content/applications/sales/point_of_sale/customer-notes.png index f5e6d958a6..2e8fbd7f45 100644 Binary files a/content/applications/sales/point_of_sale/customer-notes.png and b/content/applications/sales/point_of_sale/customer-notes.png differ diff --git a/content/applications/sales/point_of_sale/menu-button.png b/content/applications/sales/point_of_sale/menu-button.png deleted file mode 100644 index 1680737331..0000000000 Binary files a/content/applications/sales/point_of_sale/menu-button.png and /dev/null differ diff --git a/content/applications/sales/point_of_sale/notes-receipt.png b/content/applications/sales/point_of_sale/notes-receipt.png deleted file mode 100644 index 0da784be28..0000000000 Binary files a/content/applications/sales/point_of_sale/notes-receipt.png and /dev/null differ diff --git a/content/applications/sales/point_of_sale/pos-interface.png b/content/applications/sales/point_of_sale/pos-interface.png index 1d31b4dfff..b7ce9b25dc 100644 Binary files a/content/applications/sales/point_of_sale/pos-interface.png and b/content/applications/sales/point_of_sale/pos-interface.png differ diff --git a/content/applications/sales/point_of_sale/refund.png b/content/applications/sales/point_of_sale/refund.png deleted file mode 100644 index c55f5ce203..0000000000 Binary files a/content/applications/sales/point_of_sale/refund.png and /dev/null differ diff --git a/content/applications/sales/point_of_sale/reporting.rst b/content/applications/sales/point_of_sale/reporting.rst index b8b329c7de..c644d2defa 100644 --- a/content/applications/sales/point_of_sale/reporting.rst +++ b/content/applications/sales/point_of_sale/reporting.rst @@ -11,3 +11,33 @@ and :guilabel:`Orders`. These statistics are available in a graph or pivot view that you can filter or group depending on your needs. + +.. _pos/analytics: + +Analytics +========= + +Once you :ref:`close and post the POS session `, access the comprehensive report +to review all session activities, including who initiated the session and who handled specific +orders. To access the session's report: + +#. Click :icon:`fa-ellipsis-v` (:guilabel:`vertical ellipsis`) on the POS card. +#. Click :guilabel:`Sessions` under the :guilabel:`View` section. +#. From that list view, you can see all the sessions and who initiated them under the + :guilabel:`Opened By` column. +#. Select a POS session to open a detailed session report. +#. Click the :guilabel:`Orders` smart button to display a list of all orders placed during that + session. +#. From that view, you can retrieve the following information: + + - The :guilabel:`Order Ref` + - The :guilabel:`Date` of the order. + - The :guilabel:`Point of Sale` where that order was made. + - The :guilabel:`Receipt Number`. + - The :guilabel:`Customer`. + - The :guilabel:`Employee` that placed this order. + - The :guilabel:`Total` paid amount. + - The order :guilabel:`Status`. + +To get an overview of all orders, regardless of the session, click the vertical ellipsis button +(:guilabel:`⋮`) on the POS card and select :guilabel:`Orders` from the :guilabel:`View` section. \ No newline at end of file