POS Self Order

pos_self_order
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/pos_self_order
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales/Point Of Sale
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Xavier ALT, David Monjoie, Aaron Bohy, qsm-odoo, Pierre Masereel, Laurent Smet, Alexandre Kühn, Julien Castiaux, Andrea Grazioso (agr-odoo), Sébastien Theys, Julien Mougenot, Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, William Braeckman, Romain Estievenart, Arnaud Baes, roen-odoo, Mathieu Walravens, Habib (ayh), Loan (LSE), David Monnom (moda), alsh-odoo, Pedram (PEBR), tsm-odoo, Adrien Widart (awt), Dylan Kiss (dyki), Sarah Bellefroid, Louis Travaux, Pedram (pebr), Adrien Guilliams (adgu), shag-odoo, Walid (wasa), sesn-odoo, Maryam Kia, Junqi Wu, Joseph (jcb), Max Whale, yaso, parp-odoo, Parth Solanki[PASO], Loukas Wets (lowe), manv-afk, Xavier Luyckx (xlu), gteboul, Pierre Pulinckx (PIPU), Jitendra Prajapat, paan-odoo, David Monnom, Nesma Harraz, Arthur Nanson, Pierre Pulinckx, Bastien PIERRE, Anton Romanova (roan), Corentin Heinix (cohe), lse-odoo, Krzysztof Magusiak (krma), Omar (OSAH), Ajit Singh, Shubham Agarwal [SHAG], Hadi El Yakhni, dhruv, Guillaume V, vlst-odoo, Radu Macocian (admac), Meet Jivani [MEJI], vpan-odoo, bhra-odoo, sjai-odoo, Ali Hassan (alhy), Eve Lin (evlin), Léopold Cantraine, Youssef (yoma), abhk-odoo, rpka-odoo, Stephane Vanmeerhaeghe (stva), Traina Ludo, Nikita Desai, ELCO, adgu-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:42
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - pos_restaurant
    - point_of_sale
    - resource
    - base
    - web
    - stock_account
    - stock
    - product
    - mail
    - base_setup
    - bus
    - web_tour
    - html_editor
    - uom
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - http_routing
    - auth_signup
    - account
    - onboarding
    - analytic
    - phone_validation
    - partner_autocomplete
    - iap_mail
    - iap
    - iot_base
    - google_address_autocomplete
    - link_tracker
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
custom_link_tree custom.link.list pos_self_order.custom_link list New
pos_self_order.index POS Self Order ir.ui.view qweb New
pos_self_order_menu_item pos.config.kanban.view.inherit.self_order pos.config xpath Inherits point_of_sale.view_pos_config_kanban
pos_self_order_product_pos_category_form_view pos.self.pos.category.form.view pos.category xpath Inherits point_of_sale.product_pos_category_form_view
pos_self_order_search_view pos.self.order.search.view pos.config xpath Inherits point_of_sale.view_pos_config_search
pos_self_order_table_form_view Restaurant Table restaurant.table xpath Inherits pos_restaurant.view_restaurant_table_form
pos_self_view_pos_config_tree pos.self.pos.config.list.view pos.config xpath Inherits point_of_sale.view_pos_config_tree
pos_self_view_pos_session_form pos.self.session.form.view pos.session xpath Inherits point_of_sale.view_pos_session_form
product_template_form_view product.template.form.inherit product.template group Inherits product.product_template_form_view
product_template_search_view_pos product.template.search.pos.form product.template filter Inherits point_of_sale.product_template_search_view_pos
product_template_tree_view product.template.product.list.inherit product.template field Inherits point_of_sale.product_template_tree_view
qr_codes_page qr_codes_page ir.ui.view qweb New
res_config_settings_view_form_menu res.config.settings.view.form.inherit.pos_self_order.view res.config.settings block Inherits point_of_sale.res_config_settings_view_form
view_pos_preset_form pos.preset.form pos.preset xpath Inherits point_of_sale.view_pos_preset_form
Models touched (19)

New fields (0)

No new fields.

Public methods (1)
  • get_nearest_lang(self, lang_code: str) -> str
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • pos_config_ids Many2many → pos.config
    string='Linked PoS Configurations' args: 'pos.config'
Public methods (0)

No public methods.

New fields (13)
  • has_paper Boolean
    default=True args: 'Has paper'
  • self_ordering_available_language_ids Many2many → res.lang
    default=_self_order_kiosk_default_languages help='Languages available for the kiosk mode' string='Available Languages' args: 'res.lang'
  • self_ordering_default_language_id Many2one → res.lang
    default=<expr> help='Default language for the kiosk mode' string='Default Language' args: 'res.lang'
  • self_ordering_default_user_id Many2one → res.users
    default=_self_order_default_user help='Access rights of this user will be used when visiting self order website when no session is open.' string='Default User' args: 'res.users'
  • self_ordering_image_background_ids Many2many → ir.attachment
    bypass_search_access=True help='Image to be displayed in the background' relation='pos_self_order_background_rels' string='Set background image' args: 'ir.attachment'
  • self_ordering_image_brand Image
    help='Image to display on the self order screen' max_height=250 max_width=1200 string='Self Order Kiosk Image Brand'
  • self_ordering_image_brand_name Char
    help='Name of the image to display on the self order screen' string='Self Order Kiosk Image Brand Name'
  • self_ordering_image_home_ids Many2many → ir.attachment
    bypass_search_access=True help='Image to display on the self order screen' string='Add images' args: 'ir.attachment'
  • self_ordering_mode Selection
    default='nothing' help='Choose the self ordering mode' required=True string='Self Ordering Mode' args: [('nothing', 'Disable'), ('consultation', 'QR menu'), ('mobile', 'QR menu + Ordering'), ('kiosk', 'Kiosk')]
  • self_ordering_pay_after Selection
    default='meal' help='Choose when the customer will pay' required=True selection=<expr> string='Pay After:'
  • self_ordering_service_mode Selection
    default='counter' help='Choose the kiosk mode' required=True string='Self Ordering Service Mode' args: [('counter', 'Pickup zone'), ('table', 'Table')]
  • self_ordering_url Char
    compute='_compute_self_ordering_url'
  • status Selection
    compute='_compute_status' store=False string='Status' args: [('inactive', 'Inactive'), ('active', 'Active')]
Public methods (12)
  • action_close_kiosk_session(self)
  • action_open_wizard(self)
  • close_ui(self)
  • create(self, vals_list)
    @api.model_create_multi
  • get_kiosk_url(self)
  • get_pos_qr_order_data(self)
  • has_valid_self_payment_method(self)
    Checks if the POS config has a valid payment method (terminal or online).
  • load_data_params(self)
  • load_onboarding_kiosk_scenario(self)
    @api.model
  • load_self_data(self)
  • preview_self_order_app(self)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • self_ordering_table_id Many2one → restaurant.table
    readonly=True string='Table reference' args: 'restaurant.table'
  • source Selection
    selection_add=[('mobile', 'Self-Order Mobile'), ('kiosk', 'Self-Order Kiosk')]
  • table_stand_number Char
    string='Table Stand Number'
Public methods (6)
  • action_pos_order_cancel(self)
  • action_send_self_order_receipt(self, email, mail_template_id, ticket_image, basic_image)
  • recompute_prices(self)
  • remove_from_ui(self, server_ids)
    @api.model
  • sync_from_ui(self, orders)
    @api.model
  • write(self, vals)

New fields (1)
  • combo_id Many2one → product.combo
    string='Combo reference' args: 'product.combo'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • available_in_self Boolean
    default=False string='Available in self'
  • mail_template_id Many2one → mail.template
    comodel_name='mail.template' domain="[('model', '=', 'pos.order')]" string='Email Confirmation'
  • service_at Selection
    default='counter' required=True string='Service at' args: [('counter', 'Pickup zone'), ('table', 'Table'), ('delivery', 'Delivery')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (6)
  • link_html Html
    compute='_compute_link_html' readonly=True store=True args: 'Preview'
  • name Char
    required=True string='Label' translate=True
  • pos_config_ids Many2many → pos.config
    domain="[('self_ordering_mode', '!=', 'nothing')]" help="Select for which points of sale you want to display this link. Leave empty to display it for all points of sale. You have to select among the points of sale that have the 'QR Code Menu' feature enabled." string='Points of Sale' args: 'pos.config'
  • sequence Integer
    default=1 args: 'Sequence'
  • style Selection
    default='primary' required=True string='Style' args: [('primary', 'Primary'), ('secondary', 'Secondary'), ('success', 'Success'), ('warning', 'Warning'), ('danger', 'Danger'), ('info', 'Info'), ('light', 'Light'), ('dark', 'Dark')]
  • url Char
    required=True string='URL'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • self_order_available Boolean
    default=True help='If this product is available in the Self Order screens' string='Available in Self Order'
  • self_order_visible Boolean
    compute='_compute_self_order_visible'
Public methods (1)
  • write(self, vals)

New fields (10)
  • pos_self_ordering_available_language_ids Many2many
    readonly=False related='pos_config_id.self_ordering_available_language_ids'
  • pos_self_ordering_default_language_id Many2one
    readonly=False related='pos_config_id.self_ordering_default_language_id'
  • pos_self_ordering_default_user_id Many2one
    readonly=False related='pos_config_id.self_ordering_default_user_id'
  • pos_self_ordering_image_background_ids Many2many
    readonly=False related='pos_config_id.self_ordering_image_background_ids'
  • pos_self_ordering_image_brand Image
    readonly=False related='pos_config_id.self_ordering_image_brand'
  • pos_self_ordering_image_brand_name Char
    readonly=False related='pos_config_id.self_ordering_image_brand_name'
  • pos_self_ordering_image_home_ids Many2many
    readonly=False related='pos_config_id.self_ordering_image_home_ids'
  • pos_self_ordering_mode Selection
    readonly=False related='pos_config_id.self_ordering_mode' required=True
  • pos_self_ordering_pay_after Selection
    readonly=False related='pos_config_id.self_ordering_pay_after' required=True
  • pos_self_ordering_service_mode Selection
    readonly=False related='pos_config_id.self_ordering_service_mode' required=True
Public methods (7)
  • custom_link_action(self)
  • generate_qr_codes_page(self)
    Generate the data needed to print the QR codes page
  • generate_qr_codes_zip(self)
  • get_pos_qr_stands(self)
    Redirect to the get the free stands with the data of QR codes for the current POS config
  • pos_close_ui(self)
  • preview_self_order_app(self)
  • update_access_tokens(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • identifier Char
    copy=False default=<expr> required=True args: 'Security Token'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/pos_self_order
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales/Point Of Sale
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Aaron Bohy, Yannick Tivisse, Odoo Online, Pierre Masereel, Laurent Smet, Jorge Pinna Puissant, Arnold Moyaux, Xavier-Do, Victor Feyens, Andrea Grazioso (agr-odoo), Joseph Caburnay, Julien Mougenot, Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, Pierre Paridans, Arnaud Baes, roen-odoo, Stanislas Sobieski, Abdelouahab (abla), Mathieu Walravens, luvi, rhe-odoo, Loan (LSE), David Monnom (moda), Pedram (PEBR), tsm-odoo, Adrien Widart (awt), Dylan Kiss (dyki), Brieuc-brd, Sarah Bellefroid, Louis Travaux, Theo VINCENT (thvi), Pedram (pebr), Mahdi Cheikh Rouhou (macr), Adrien Guilliams (adgu), Zachary Hanham, omra-odoo, shag-odoo, Walid (wasa), sesn-odoo, kdeb@odoo.com, Youssef Bashandy, Ethan Vincent, Louis (loti), axtr, Julien Carion (juca), Chrysanthe (chgo), Louis (wil), Junqi Wu, Joseph (jcb), Max Whale, parp-odoo, aamo-odoo, Parth Solanki[PASO], Loukas Wets (lowe), manv-afk, gteboul, vlst, Pierre Pulinckx (PIPU), Jitendra Prajapat, paan-odoo, David Monnom, Nesma Harraz, Pierre Pulinckx, Bastien PIERRE, Anton Romanova (roan), kusi-odoo, Krzysztof Magusiak (krma), Omar (OSAH), Ajit Singh, Shubham Agarwal [SHAG], Hadi El Yakhni, dhruv, vlst-odoo, Meet Jivani [MEJI], vpan-odoo, rare-odoo, temo-odoo, sjai-odoo, meji-odoo, David (davg), Eve Lin (evlin), Ali (alhy), Stephane Vanmeerhaeghe (stva), Traina Ludo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:55
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - pos_restaurant
    - point_of_sale
    - stock_account
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - uom
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - account
    - onboarding
    - analytic
    - phone_validation
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (13)
XML IDNameModelTypeStatus
custom_link_tree custom.link.list pos_self_order.custom_link list New
pos_self_order.index POS Self Order ir.ui.view qweb New
pos_self_order_menu_item pos.config.kanban.view.inherit.self_order pos.config xpath Inherits point_of_sale.view_pos_config_kanban
pos_self_order_product_pos_category_form_view pos.self.pos.category.form.view pos.category xpath Inherits point_of_sale.product_pos_category_form_view
pos_self_order_search_view pos.self.order.search.view pos.config xpath Inherits point_of_sale.view_pos_config_search
pos_self_order_table_form_view Restaurant Table restaurant.table xpath Inherits pos_restaurant.view_restaurant_table_form
pos_self_view_pos_config_tree pos.self.pos.config.list.view pos.config xpath Inherits point_of_sale.view_pos_config_tree
pos_self_view_pos_session_form pos.self.session.form.view pos.session xpath Inherits point_of_sale.view_pos_session_form
product_template_form_view product.template.form.inherit product.template group Inherits product.product_template_form_view
product_template_search_view_pos product.template.search.pos.form product.template filter Inherits point_of_sale.product_template_search_view_pos
product_template_tree_view product.template.product.list.inherit product.template field Inherits point_of_sale.product_template_tree_view
qr_codes_page qr_codes_page ir.ui.view qweb New
res_config_settings_view_form_menu res.config.settings.view.form.inherit.pos_self_order.view res.config.settings block Inherits point_of_sale.res_config_settings_view_form
Models touched (16)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_nearest_lang(self, lang_code: str) -> str
    @api.model

New fields (2)
  • hour_after Float
    default=0.0 help='The product will be available after this hour.' string='Availability After'
  • hour_until Float
    default=24.0 help='The product will be available until this hour.' string='Availability Until'
Public methods (0)

No public methods.

New fields (13)
  • has_paper Boolean
    default=True args: 'Has paper'
  • self_ordering_available_language_ids Many2many → res.lang
    default=_self_order_kiosk_default_languages help='Languages available for the kiosk mode' string='Available Languages' args: 'res.lang'
  • self_ordering_default_language_id Many2one → res.lang
    default=<expr> help='Default language for the kiosk mode' string='Default Language' args: 'res.lang'
  • self_ordering_default_user_id Many2one → res.users
    default=_self_order_default_user help='Access rights of this user will be used when visiting self order website when no session is open.' string='Default User' args: 'res.users'
  • self_ordering_image_brand Image
    help='Image to display on the self order screen' max_height=250 max_width=1200 string='Self Order Kiosk Image Brand'
  • self_ordering_image_brand_name Char
    help='Name of the image to display on the self order screen' string='Self Order Kiosk Image Brand Name'
  • self_ordering_image_home_ids Many2many → ir.attachment
    help='Image to display on the self order screen' string='Add images' args: 'ir.attachment'
  • self_ordering_mode Selection
    default='nothing' help='Choose the self ordering mode' required=True string='Self Ordering Mode' args: [('nothing', 'Disable'), ('consultation', 'QR menu'), ('mobile', 'QR menu + Ordering'), ('kiosk', 'Kiosk')]
  • self_ordering_pay_after Selection
    default='meal' help='Choose when the customer will pay' required=True selection=<expr> string='Pay After:'
  • self_ordering_service_mode Selection
    default='counter' help='Choose the kiosk mode' required=True string='Self Ordering Service Mode' args: [('counter', 'Pickup zone'), ('table', 'Table')]
  • self_ordering_takeaway Boolean
    args: 'Self Takeaway'
  • self_ordering_url Char
    compute='_compute_self_ordering_url'
  • status Selection
    compute='_compute_status' store=False string='Status' args: [('inactive', 'Inactive'), ('active', 'Active')]
Public methods (9)
  • action_close_kiosk_session(self)
  • action_open_wizard(self)
  • create(self, vals_list)
    @api.model_create_multi
  • get_kiosk_url(self)
  • get_pos_qr_order_data(self)
  • load_onboarding_kiosk_scenario(self)
    @api.model
  • load_self_data(self)
  • preview_self_order_app(self)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • table_stand_number Char
    string='Table Stand Number'
Public methods (3)
  • recompute_prices(self)
  • remove_from_ui(self, server_ids)
    @api.model
  • sync_from_ui(self, orders)
    @api.model

New fields (1)
  • combo_id Many2one → product.combo
    string='Combo reference' args: 'product.combo'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (6)
  • link_html Html
    compute='_compute_link_html' readonly=True store=True args: 'Preview'
  • name Char
    required=True string='Label' translate=True
  • pos_config_ids Many2many → pos.config
    domain="[('self_ordering_mode', '!=', 'nothing')]" help="Select for which points of sale you want to display this link. Leave empty to display it for all points of sale. You have to select among the points of sale that have the 'QR Code Menu' feature enabled." string='Points of Sale' args: 'pos.config'
  • sequence Integer
    default=1 args: 'Sequence'
  • style Selection
    default='primary' required=True string='Style' args: [('primary', 'Primary'), ('secondary', 'Secondary'), ('success', 'Success'), ('warning', 'Warning'), ('danger', 'Danger'), ('info', 'Info'), ('light', 'Light'), ('dark', 'Dark')]
  • url Char
    required=True string='URL'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • write(self, vals_list)

New fields (1)
  • self_order_available Boolean
    default=True help='If this product is available in the Self Order screens' string='Available in Self Order'
Public methods (1)
  • write(self, vals_list)

New fields (10)
  • pos_self_ordering_available_language_ids Many2many
    readonly=False related='pos_config_id.self_ordering_available_language_ids'
  • pos_self_ordering_default_language_id Many2one
    readonly=False related='pos_config_id.self_ordering_default_language_id'
  • pos_self_ordering_default_user_id Many2one
    readonly=False related='pos_config_id.self_ordering_default_user_id'
  • pos_self_ordering_image_brand Image
    readonly=False related='pos_config_id.self_ordering_image_brand'
  • pos_self_ordering_image_brand_name Char
    readonly=False related='pos_config_id.self_ordering_image_brand_name'
  • pos_self_ordering_image_home_ids Many2many
    readonly=False related='pos_config_id.self_ordering_image_home_ids'
  • pos_self_ordering_mode Selection
    readonly=False related='pos_config_id.self_ordering_mode' required=True
  • pos_self_ordering_pay_after Selection
    readonly=False related='pos_config_id.self_ordering_pay_after' required=True
  • pos_self_ordering_service_mode Selection
    readonly=False related='pos_config_id.self_ordering_service_mode' required=True
  • pos_self_ordering_takeaway Boolean
    readonly=False related='pos_config_id.self_ordering_takeaway'
Public methods (6)
  • custom_link_action(self)
  • generate_qr_codes_page(self)
    Generate the data needed to print the QR codes page
  • generate_qr_codes_zip(self)
  • get_pos_qr_stands(self)
    Redirect to the get the free stands with the data of QR codes for the current POS config
  • preview_self_order_app(self)
  • update_access_tokens(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • identifier Char
    copy=False default=<expr> required=True args: 'Security Token'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/pos_self_order
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales/Point Of Sale
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Aaron Bohy, Yannick Tivisse, qsm-odoo, Odoo Online, Romain Derie, Jorge Pinna Puissant, Joseph Caburnay, Samuel Degueldre, Tiffany Chang (tic), Pierre Rousseau, Gorash, Pierre Paridans, William Braeckman, roen-odoo, Stanislas Sobieski, niyasraphy, Loan (LSE), David Monnom (moda), Mahamadasif Ansari, Dylan Kiss (dyki), Chong Wang (cwg), Brieuc-brd, Sarah Bellefroid, “moda”, Theo VINCENT (thvi), Pedram (pebr), Mahdi Cheikh Rouhou (macr), Adrien Guilliams (adgu), Zachary Hanham, kdeb@odoo.com, stefanorigano (SRI), Youssef Bashandy, Ethan Vincent, axtr, shsa-odoo, Louis (wil), Junqi Wu, Max Whale, Parth Solanki[PASO], Loukas Wets (lowe), Xavier Luyckx (xlu), gteboul, vlst, Jitendra Prajapat, David Monnom, Arthur Nanson, Pierre Pulinckx (pipu), Anton Romanova (roan), Ajit Singh, vlst-odoo, meji-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:06
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - pos_restaurant
    - point_of_sale
    - stock_account
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - account
    - onboarding
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (13)
XML IDNameModelTypeStatus
custom_link_tree custom.link.tree pos_self_order.custom_link tree New
pos_self_order.index POS Self Order ir.ui.view qweb New
pos_self_order_kiosk_read_only_form_dialog pos.self.order.kiosk.read.only.form.dialog pos.config form New
pos_self_order_menu_item pos.config.kanban.view.inherit.self_order pos.config xpath Inherits point_of_sale.view_pos_config_kanban
pos_self_order_search_view pos.self.order.search.view pos.config xpath Inherits point_of_sale.view_pos_config_search
pos_self_order_table_form_view Restaurant Table restaurant.table xpath Inherits pos_restaurant.view_restaurant_table_form
pos_self_view_pos_config_tree pos.self.pos.config.tree.view pos.config xpath Inherits point_of_sale.view_pos_config_tree
pos_self_view_pos_session_form pos.self.session.form.view pos.session xpath Inherits point_of_sale.view_pos_session_form
product_template_form_view product.template.form.inherit product.template xpath Inherits point_of_sale.product_template_form_view
product_template_search_view_pos product.template.search.pos.form product.template filter Inherits point_of_sale.product_template_search_view_pos
product_template_tree_view product.template.product.tree.inherit product.template field Inherits point_of_sale.product_template_tree_view
qr_codes_page qr_codes_page ir.ui.view qweb New
res_config_settings_view_form_menu res.config.settings.view.form.inherit.pos_self_order.view res.config.settings xpath Inherits point_of_sale.res_config_settings_view_form
Models touched (11)

New fields (0)

No new fields.

Public methods (1)
  • get_nearest_lang(cls, lang_code: str) -> str
    @classmethod

New fields (14)
  • access_token Char
    copy=False default=<expr> readonly=True required=True args: 'Security Token'
  • self_ordering_alternative_fp_id Many2one → account.fiscal.position
    help='This is useful for restaurants with onsite and take-away services that imply specific tax rates.' string='Alternative Fiscal Position' args: 'account.fiscal.position'
  • self_ordering_available_language_ids Many2many → res.lang
    default=_self_order_kiosk_default_languages help='Languages available for the kiosk mode' string='Available Languages' args: 'res.lang'
  • self_ordering_default_language_id Many2one → res.lang
    default=<expr> help='Default language for the kiosk mode' string='Default Language' args: 'res.lang'
  • self_ordering_default_user_id Many2one → res.users
    default=_self_order_default_user help='Access rights of this user will be used when visiting self order website when no session is open.' string='Default User' args: 'res.users'
  • self_ordering_image_brand Image
    help='Image to display on the self order screen' max_height=250 max_width=1200 string='Self Order Kiosk Image Brand'
  • self_ordering_image_brand_name Char
    help='Name of the image to display on the self order screen' string='Self Order Kiosk Image Brand Name'
  • self_ordering_image_home_ids Many2many → ir.attachment
    help='Image to display on the self order screen' string='Add images' args: 'ir.attachment'
  • self_ordering_mode Selection
    default='nothing' help='Choose the self ordering mode' required=True string='Self Ordering Mode' args: [('nothing', 'Disable'), ('consultation', 'QR menu'), ('mobile', 'QR menu + Ordering'), ('kiosk', 'Kiosk')]
  • self_ordering_pay_after Selection
    default='meal' help='Choose when the customer will pay' required=True selection=<expr> string='Pay After:'
  • self_ordering_service_mode Selection
    default='counter' help='Choose the kiosk mode' required=True string='Service' args: [('counter', 'Pickup zone'), ('table', 'Table')]
  • self_ordering_takeaway Boolean
    args: 'Takeaway'
  • self_ordering_url Char
    compute='_compute_self_ordering_url'
  • status Selection
    compute='_compute_status' store=False string='Status' args: [('inactive', 'Inactive'), ('active', 'Active')]
Public methods (6)
  • action_close_kiosk_session(self)
  • action_open_kiosk(self)
  • action_open_wizard(self)
  • create(self, vals_list)
    @api.model_create_multi
  • preview_self_order_app(self)
  • write(self, vals)

New fields (2)
  • table_stand_number Char
    string='Table Stand Number'
  • take_away Boolean
    default=False string='Take Away'
Public methods (4)
  • create_from_ui(self, orders, draft=False)
    @api.model
  • export_for_ui_table_draft(self, table_ids)
    @api.model
  • get_standalone_self_order(self)
  • remove_from_ui(self, server_ids)
    @api.model

New fields (3)
  • combo_id Many2one → pos.combo
    string='Combo line reference' args: 'pos.combo'
  • combo_line_ids One2many → pos.order.line
    string='Combo Lines' args: 'pos.order.line', 'combo_parent_id'
  • combo_parent_id Many2one → pos.order.line
    string='Combo Parent' args: 'pos.order.line'
Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (6)
  • link_html Html
    compute='_compute_link_html' readonly=True store=True args: 'Preview'
  • name Char
    required=True string='Label' translate=True
  • pos_config_ids Many2many → pos.config
    domain="[('self_ordering_mode', '!=', 'nothing')]" help="Select for which points of sale you want to display this link. Leave empty to display it for all points of sale. You have to select among the points of sale that have the 'QR Code Menu' feature enabled." string='Points of Sale' args: 'pos.config'
  • sequence Integer
    default=1 args: 'Sequence'
  • style Selection
    default='primary' required=True string='Style' args: [('primary', 'Primary'), ('secondary', 'Secondary'), ('success', 'Success'), ('warning', 'Warning'), ('danger', 'Danger'), ('info', 'Info'), ('light', 'Light'), ('dark', 'Dark')]
  • url Char
    required=True string='URL'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • write(self, vals_list)

New fields (2)
  • description_self_order Html
    string='Product Description for Self Order'
  • self_order_available Boolean
    default=True help='If this product is available in the Self Order screens' string='Available in Self Order'
Public methods (1)
  • write(self, vals_list)

New fields (11)
  • pos_self_ordering_alternative_fp_id Many2one
    readonly=False related='pos_config_id.self_ordering_alternative_fp_id'
  • pos_self_ordering_available_language_ids Many2many
    readonly=False related='pos_config_id.self_ordering_available_language_ids'
  • pos_self_ordering_default_language_id Many2one
    readonly=False related='pos_config_id.self_ordering_default_language_id'
  • pos_self_ordering_default_user_id Many2one
    readonly=False related='pos_config_id.self_ordering_default_user_id'
  • pos_self_ordering_image_brand Image
    readonly=False related='pos_config_id.self_ordering_image_brand'
  • pos_self_ordering_image_brand_name Char
    readonly=False related='pos_config_id.self_ordering_image_brand_name'
  • pos_self_ordering_image_home_ids Many2many
    readonly=False related='pos_config_id.self_ordering_image_home_ids'
  • pos_self_ordering_mode Selection
    readonly=False related='pos_config_id.self_ordering_mode' required=True
  • pos_self_ordering_pay_after Selection
    readonly=False related='pos_config_id.self_ordering_pay_after' required=True
  • pos_self_ordering_service_mode Selection
    readonly=False related='pos_config_id.self_ordering_service_mode' required=True
  • pos_self_ordering_takeaway Boolean
    readonly=False related='pos_config_id.self_ordering_takeaway'
Public methods (5)
  • custom_link_action(self)
  • generate_qr_codes_page(self)
    Generate the data needed to print the QR codes page
  • generate_qr_codes_zip(self)
  • preview_self_order_app(self)
  • update_access_tokens(self)

New fields (1)
  • identifier Char
    copy=False default=<expr> required=True args: 'Security Token'
Public methods (0)

No public methods.