Repository
odoo/odoo · module folder
Module version
1.0
Category
Sales/Point of Sale
Folder size
6.06 MB
License
LGPL-3
Application
Yes
Auto-installable
No
Website
https://www.odoo.com/app/point-of-sale-restaurant
Last tracking update
2026-08-20 10:12:45
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Raphael Collet, odoo, Odoo Translation Bot, Aaron Bohy, Alexandre Kühn, Julien Castiaux, Xavier-Do, Victor Feyens, Julien Mougenot, Achraf (abz), Tiffany Chang (tic), Gorash, Pierre Paridans, roen-odoo, Renaud Thiry, rhe-odoo, David Monnom (moda), Louis Wicket (wil), alsh-odoo, Pedram (PEBR), Victor Piryns (pivi), Mahamadasif Ansari, Claire Bretton (clbr), Levi Siuzdak (sile), Dylan Kiss (dyki), Sarah Bellefroid, Pedram (pebr), Louis Travaux, Adrien Guilliams (adgu), shag-odoo, vava-odoo, kcv-odoo, Chrysanthe (chgo), mano-odoo, manv-afk, aamo-odoo, Joseph (jcb), parp-odoo, Loukas Wets (lowe), Xavier Luyckx (xlu), Stéphane Diez, gteboul, Pierre Pulinckx (PIPU), paan-odoo, Jitendra Prajapat, David Monnom, Nesma Harraz, Smit Patel, Arthur Nanson, Mohammad Abdulmoneim (abdu), Pierre Pulinckx, Bastien PIERRE, plha-odoo, kkuj-odoo, Shubham Agarwal [SHAG], ksku-odoo, Basioni (basm), vpan-odoo, dhruv, vlst-odoo, Guillaume V, Meet Jivani [MEJI], Hadi El Yakhni, bhra-odoo, aksi-odoo, sjai-odoo, Ali Hassan (alhy), path-odoo, suma-odoo, Traina Ludo, rpka-odoo, Stephane Vanmeerhaeghe (stva), Stephane Vanmeerhaeghe, Léopold Cantraine, abhk-odoo, chpa-odoo, adgu-odoo, Shubham Agarwal(shag), Stephane vm, krpat-odoo
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
l10n_be_pos_restaurant, pos_hr_restaurant, pos_restaurant_adyen, pos_restaurant_loyalty, pos_restaurant_stripe, pos_self_order, spreadsheet_dashboard_pos_restaurant
Description

This module adds several features to the Point of Sale that are specific to restaurant management:
- Bill Printing: Allows you to print a receipt before the order is paid
- Bill Splitting: Allows you to split an order into different orders
- Kitchen Order Printing: allows you to print orders updates to kitchen or bar printers

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
res_config_settings_view_form res.config.settings.view.form.inherit.pos_restaurant res.config.settings form Inherits point_of_sale.res_config_settings_view_form
view_pos_pos_form pos.order.form.view.inherit pos.order form Inherits point_of_sale.view_pos_pos_form
view_pos_preset_form_inherit_pos_restaurant pos.preset.form pos.preset form Inherits point_of_sale.view_pos_preset_form
view_restaurant_floor_form Restaurant Floors restaurant.floor form New
view_restaurant_floor_kanban restaurant.floor.kanban restaurant.floor kanban New
view_restaurant_floor_search restaurant.floor.search restaurant.floor search New
view_restaurant_floor_tree Restaurant Floors restaurant.floor list New
view_restaurant_table_form Restaurant Table restaurant.table form New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (10)

New fields (5)
  • default_screen Selection
    default='tables' string='Default Screen' args: [('tables', 'Tables'), ('register', 'Register')]
  • floor_ids Many2many → restaurant.floor
    copy=False help='The restaurant floors served by this point of sale.' string='Restaurant Floors' args: 'restaurant.floor'
  • iface_printbill Boolean
    help='Allows to print the Bill before payment.' string='Bill Printing'
  • iface_splitbill Boolean
    help='Enables Bill Splitting in the Point of Sale.' string='Bill Splitting'
  • set_tip_after_payment Boolean
    help='Adjust the amount authorized by payment terminals to add a tip after the customers left or at the end of the day.' args: 'Set Tip After Payment'
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • load_onboarding_bar_scenario(self, with_demo_data=True)
    @api.model
  • load_onboarding_restaurant_scenario(self, with_demo_data=True)
    @api.model
  • write(self, vals)

New fields (3)
  • course_ids One2many → restaurant.order.course
    string='Courses' args: 'restaurant.order.course', 'order_id'
  • customer_count Integer
    help='The amount of customers that have been served by this order.' readonly=True string='Guests'
  • table_id Many2one → restaurant.table
    help='The table where this order was served' index='btree_not_null' readonly=True string='Table' args: 'restaurant.table'
Public methods (1)
  • read_pos_data(self, data, config)

New fields (1)
  • course_id Many2one → restaurant.order.course
    index='btree_not_null' ondelete='set null' string='Course Ref' args: 'restaurant.order.course'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • use_guest Boolean
    default=False help='Force guest selection when clicking on order button in PoS restaurant' string='Guest'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • pos_default_screen Selection
    readonly=False related='pos_config_id.default_screen'
  • pos_floor_ids Many2many
    readonly=False related='pos_config_id.floor_ids'
  • pos_iface_printbill Boolean
    compute='_compute_pos_module_pos_restaurant' readonly=False store=True
  • pos_iface_splitbill Boolean
    compute='_compute_pos_module_pos_restaurant' readonly=False store=True
  • pos_set_tip_after_payment Boolean
    compute='_compute_pos_set_tip_after_payment' readonly=False store=True
Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True
  • background_color Char
    help='The background color of the floor in a html-compatible format' args: 'Background Color'
  • background_image Binary
    args: 'Background Image'
  • floor_background_image Image
    string='Floor Background Image'
  • name Char
    required=True args: 'Floor Name'
  • pos_config_ids Many2many → pos.config
    domain="[('module_pos_restaurant', '=', True)]" string='Point of Sales' args: 'pos.config'
  • sequence Integer
    default=1 args: 'Sequence'
  • table_ids One2many → restaurant.table
    string='Tables' args: 'restaurant.table', 'floor_id'
Public methods (4)
  • deactivate_floor(self, session_id)
  • rename_floor(self, new_name)
  • sync_from_ui(self, name, background_color, config_id)
    @api.model
  • write(self, vals)

New fields (6)
  • fired Boolean
    default=False string='Fired'
  • fired_date Datetime
    string='Fired Date'
  • index Integer
    default=0 string='Course index'
  • line_ids One2many → pos.order.line
    readonly=True string='Order Lines' args: 'pos.order.line', 'course_id'
  • order_id Many2one → pos.order
    index=True ondelete='cascade' required=True string='Order Ref' args: 'pos.order'
  • uuid Char
    copy=False default=<expr> readonly=True string='Uuid'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (11)
  • active Boolean
    default=True help='If false, the table is deactivated and will not be available in the point of sale' args: 'Active'
  • color Char
    help="The table's color, expressed as a valid 'background' CSS property value" args: 'Color'
  • floor_id Many2one → restaurant.floor
    index='btree_not_null' string='Floor' args: 'restaurant.floor'
  • height Float
    default=50 help="The table's height in pixels" args: 'Height'
  • parent_id Many2one → restaurant.table
    help='The parent table if this table is part of a group of tables' string='Parent Table' args: 'restaurant.table'
  • position_h Float
    default=10 help="The table's horizontal position from the left side to the table's center, in pixels" args: 'Horizontal Position'
  • position_v Float
    default=10 help="The table's vertical position from the top to the table's center, in pixels" args: 'Vertical Position'
  • seats Integer
    default=1 help='The default number of customer served at this table.' args: 'Seats'
  • shape Selection
    default='square' required=True string='Shape' args: [('square', 'Square'), ('round', 'Round')]
  • table_number Integer
    default=0 help='The number of the table as displayed on the floor plan' required=True args: 'Table Number'
  • width Float
    default=50 help="The table's width in pixels" args: 'Width'
Public methods (2)
  • are_orders_still_in_draft(self)
  • set_parent_id(self, parent_id, config_id)

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…