Point of Sale
point_of_sale · odoo/odoo
Security findings
- Repository
- odoo/odoo · module folder
- Module version
- 1.0.2
- Category
- Sales/Point of Sale
- Folder size
- 32.08 MB
- License
- LGPL-3
- Application
- Yes
- Auto-installable
- No
- Website
- https://www.odoo.com/app/point-of-sale-shop
- Last tracking update
- 2026-10-05 12:14:52
- Authors
- Odoo S.A.
- Maintainers
- Odoo S.A.
- Committers
- Xavier Morel, Raphael Collet, Thibault Delavallée, odoo, Odoo Translation Bot, Christophe Matthieu, Denis Ledoux, Aaron Bohy, Géry Debongnie, Yannick Tivisse, qsm-odoo, Pierre Masereel, Jorge Pinna Puissant, Arnold Moyaux, Julien Castiaux, Xavier-Do, Romeo Fragomeli, Victor Feyens, Andrea Grazioso (agr-odoo), Adrien Dieudonné, William Henrotin, Sébastien Theys, Julien Mougenot, Anh Thao Pham (pta), David Beguin, Brice bib Bartoletti, Tiffany Chang (tic), fja-odoo, Gorash, Mathieu Duckerts-Antoine, Pierre Paridans, Romain Estievenart, Miquel Raïch, william-andre, Nicolas Bayet, luvi, adr, Renaud Thiry, rhe-odoo, jbw-odoo, David Monnom (moda), tsm-odoo, Louis Wicket (wil), Pedram (PEBR), Mylyna Hy, Victor Piryns (pivi), amdi-odoo, Gauthier Wala (gawa), Pierre-Yves Dufays, Andrew Gavgavian, Dylan Kiss (dyki), Chong Wang (cwg), tong-odoo, Xavier Bol (xbo), Brieuc-brd, Paweł Fertyk, Sarah Bellefroid, Louis Travaux, Adrien Guilliams (adgu), Arnaud Sibille, omra-odoo, shag-odoo, sesn-odoo, guva-odoo, Youssef Bashandy, lase@odoo.com, Aurelien MARIE (auma), reka-odoo, Sven Fuehr, kmod-odoo, kcv-odoo, odoostan, Louis Gobert, Agustin Castro Bugallo, Chrysanthe (chgo), sami odoo, asno-odoo, mano-odoo, Harsh Shah, hatr-odoo, Parth Solanki[PASO], Majed Alhanash (malh), manv-afk, Max Whale, parp-odoo, Loukas Wets (lowe), yaso, Patricia Daloze (pda), Xavier Luyckx (xlu), Elisabeth Dickinson, Stéphane Diez, Claire (clbr), Abdo Mongy, unka-odoo, prep-odoo, Léo Gizard, Hesham Saleh, paan-odoo, Jitendra Prajapat, David Monnom, Arthur Nanson, pkgu-odoo, Mohammad Abdulmoneim (abdu), Pierre Lamotte (pila), Pierre Pulinckx, Bastien PIERRE, Michaël Mattiello, Corentin Heinix (cohe), Corentin Lombard, Sherif Gabr, Mahdi Alijani (malj), anko-odoo, chha-odoo, Krzysztof Magusiak (krma), Ajit Singh, dvsh-odoo, joseph, zadh-odoo, Robin Engels (roen), sagu-odoo, vpan-odoo, dhruv, vlst-odoo, Radu Macocian (admac), Guillaume V, Sylvio Poliart (sypol), Maeva De Keyser (MDEK), zorbmax, Harrison Hutton, utma-odoo, Meet Jivani [MEJI], Hadi El Yakhni, Tyler Landivar (tylan), nsirjacobs, Giorgio Tocco (gito), MAGREMENT, romc-odoo, Ze Chen (zeche), mohannedah, Lulu Grimalkin (lugr), rare-odoo, igbe, Lancelot Semal, sjai-odoo, Laurent Smet (LAS), Julien Launois (jula), Laetitia (ldau), adip-odoo, Quentin Colla (qucol), Kai Chang (kacha), Martin Doyen, path-odoo, Waleed Elgamal, h4818, Eliott Loop (oplo-odoo), Amr Elkhatieb, Adnan Sabbir, Uemus, Nisarg (nipl), Louis, YoussefM890, Ravij Parikh, Mazen, srap-odoo, Leonardo Medina, Traina Ludo, rpka-odoo, Stephane Vanmeerhaeghe (stva), Thomas (thsc), Léopold Cantraine, Pierre (pco), Eve Lin (evlin), abhk-odoo, Youssef (abyo), smjo-odoo, mson-odoo, Farah (ahmfa), Julien Carion, ELCO, Moamen(msho), Khaj-odoo, chpa-odoo, adgu-odoo, Shubham Agarwal, Mohamed Ben-Tahri, Oussema Heni, Shubham Agarwal(shag), jipr-odoo, krpat-odoo, Abhishek Khant, FedericoBraidi, Louis Wicket, Vedant Pandey (vpan-odoo), Julien Coppin (jucop), Francois Vasamillet (frva), Mohamed (moaln), jean (jebou), Julien Piron, nby, Jean Schoenlaub, pusu-odoo, Elisabeth Dickinson (edi), Aditi Pawar(adpaw), Lou !, Ahmed Hamila
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- l10n_account_withholding_tax_pos, l10n_ar_pos, l10n_be_pos, l10n_ch_pos, l10n_co_pos, l10n_eg_edi_pos, l10n_es_edi_tbai_pos, l10n_es_edi_verifactu_pos, l10n_es_pos, l10n_fr_pdp_pos, l10n_fr_pos_cert, l10n_gcc_pos, l10n_id_pos, l10n_in_pos, l10n_mt_pos, l10n_my_edi_pos, l10n_pe_pos, l10n_test_pos_qr_payment, l10n_tw_edi_ecpay_pos, l10n_vn_edi_viettel_pos, pos_account_tax_python, pos_adyen, pos_bancontact_pay, pos_cashdro, pos_cashmatic, pos_discount, pos_dpopay, pos_edi_ubl, pos_event, pos_glory_cash, pos_hr, pos_imin, pos_loyalty, pos_mercado_pago, pos_mollie, pos_online_payment, pos_partner_autocomplete, pos_pine_labs, pos_qfpay, pos_razorpay, pos_restaurant, pos_safaricom, pos_sale, pos_sms, pos_stock, pos_stripe, pos_viva_com
- Description
Code Analysis
Views touched (86)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
digest_digest_view_form |
digest.digest.view.form.inherit.point_of_sale | digest.digest | form | Inherits digest.digest_digest_view_form |
point_of_sale.company_info_receipt |
point_of_sale.company_info_receipt | ir.ui.view | qweb | New |
point_of_sale.customer_display_index |
POS Customer Display | ir.ui.view | qweb | New |
point_of_sale.index |
POS Index | ir.ui.view | qweb | New |
point_of_sale.pos_cash_move_receipt |
point_of_sale.pos_cash_move_receipt | ir.ui.view | qweb | New |
point_of_sale.pos_order_change_receipt |
point_of_sale.pos_order_change_receipt | ir.ui.view | qweb | New |
point_of_sale.pos_order_change_receipt_line |
point_of_sale.pos_order_change_receipt_line | ir.ui.view | qweb | New |
point_of_sale.pos_order_change_receipt_zpl |
point_of_sale.pos_order_change_receipt_zpl | ir.ui.view | qweb | New |
point_of_sale.pos_order_receipt |
point_of_sale.pos_order_receipt | ir.ui.view | qweb | New |
point_of_sale.pos_order_receipt_footer |
point_of_sale.pos_order_receipt_footer | ir.ui.view | qweb | New |
point_of_sale.pos_order_receipt_header |
point_of_sale.pos_order_receipt_header | ir.ui.view | qweb | New |
point_of_sale.pos_order_receipt_style |
point_of_sale.pos_order_receipt_style | ir.ui.view | qweb | New |
point_of_sale.pos_orderline_receipt |
point_of_sale.pos_orderline_receipt | ir.ui.view | qweb | New |
point_of_sale.pos_orderline_receipt_information |
point_of_sale.pos_orderline_receipt_information | ir.ui.view | qweb | New |
point_of_sale.pos_sale_details_receipt |
point_of_sale.pos_sale_details_receipt | ir.ui.view | qweb | New |
point_of_sale.pos_sale_details_receipt_product_line |
point_of_sale.pos_sale_details_receipt_product_line | ir.ui.view | qweb | New |
point_of_sale.pos_tip_receipt |
point_of_sale.pos_tip_receipt | ir.ui.view | qweb | New |
point_of_sale.product_combo_view_form |
product.combo.form.inherit.point.of.sale | product.combo | form | Inherits product.product_combo_view_form |
point_of_sale.report_invoice_document |
point_of_sale.report_invoice_document | ir.ui.view | qweb | Inherits account.report_invoice_document |
point_of_sale.view_confirm_action_wizard |
pos.confirmation.wizard.form | pos.confirmation.wizard | form | New |
point_of_sale.view_pos_make_invoice |
Create Invoice(s) | pos.make.invoice | form | New |
pos_config_view_form |
pos.config.form.view | pos.config | form | New |
pos_daily_sales_html_container |
pos_daily_sales_html_container | ir.ui.view | qweb | New |
pos_daily_sales_report_layout |
Daily Sales Report layout | ir.ui.view | qweb | New |
pos_payment_method_view_form |
pos.payment.method.form | pos.payment.method | form | New |
pos_payment_method_view_search |
pos.payment.search.view | pos.payment.method | search | New |
pos_payment_method_view_tree |
pos.payment.method.list | pos.payment.method | list | New |
pos_rounding_form_view_inherited |
pos.cash.rounding.form.inherited | account.cash.rounding | form | Inherits account.rounding_form_view |
pos_session_sales_details |
pos_session_sales_details | ir.ui.view | qweb | New |
product_pos_category_form_view |
pos.category.form | pos.category | form | New |
product_pos_category_tree_view |
pos.category.list | pos.category | list | New |
product_pricelist_view_kanban_pos |
product.pricelist.kanban.pos | product.pricelist | kanban | Inherits product.product_pricelist_view_kanban |
product_tag_form_view_inherit_point_of_sale |
product.tag.form.inherit.point.of.sale | product.tag | form | Inherits product.product_tag_form_view |
product_template_form_view |
product.template.form.inherit | product.template | form | Inherits product.product_template_form_view |
product_template_only_form_view |
product.template.product.form.inherit | product.template | form | Inherits product.product_template_only_form_view |
product_template_search_view_pos |
product.template.search.pos.form | product.template | form | Inherits product.product_template_search_view |
product_template_tree_view_point_of_sale |
product.template.view.list.point_of_sale | product.template | list | Inherits product.product_template_tree_view |
product_template_view_form_normalized_pos |
product.template.view.form.normalized | product.template | form | New |
report_pos_order_view_tree |
report.pos.order.view.list | report.pos.order | list | New |
report_saledetails |
report_saledetails | ir.ui.view | qweb | New |
report_userlabel |
report_userlabel | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.point_of_sale | res.config.settings | form | Inherits base.res_config_settings_view_form |
ticket_request_with_code |
Invoice Request | ir.ui.view | qweb | New |
ticket_validation_screen |
ticket_validation_screen | ir.ui.view | qweb | New |
uom_uom_view_form |
uom.uom.view.form.inherit.point.of.sale | uom.uom | form | Inherits uom.uom_uom_view_form |
view_account_journal_pos_user_form |
account.move.pos.form.inherit | account.move | form | Inherits account.view_move_form |
view_partner_form_pos_ui |
res.partner.form.pos.ui | res.partner | form | New |
view_partner_property_form |
res.partner.pos.form.inherit | res.partner | form | Inherits base.view_partner_form |
view_pos_bill_form |
pos.bill.form | pos.bill | form | New |
view_pos_bill_tree |
pos.bill.list | pos.bill | list | New |
view_pos_category_kanban |
pos.category.kanban | pos.category | kanban | New |
view_pos_category_search |
pos.category.search.view | pos.category | search | New |
view_pos_config_kanban |
pos.config.kanban.view | pos.config | kanban | New |
view_pos_config_search |
pos.config.search.view | pos.config | search | New |
view_pos_config_tree |
pos.config.list.view | pos.config | list | New |
view_pos_daily_sales_reports_wizard |
pos.daily.sales.reports.wizard.form | pos.daily.sales.reports.wizard | form | New |
view_pos_details_wizard |
pos.details.wizard.form | pos.details.wizard | form | New |
view_pos_note_tree |
Note Models | pos.note | list | New |
view_pos_order_filter |
pos.order.list.select | pos.order | search | New |
view_pos_order_kanban |
pos.order.kanban | pos.order | kanban | New |
view_pos_order_line |
pos.order.line.list | pos.order.line | list | New |
view_pos_order_line_form |
pos.order.line.form | pos.order.line | form | New |
view_pos_order_pivot |
pos.order.pivot | pos.order | pivot | New |
view_pos_order_search |
pos.order.search.view | pos.order | search | New |
view_pos_order_tree |
pos.order.list | pos.order | list | New |
view_pos_order_tree_all_sales_lines |
pos.order.line.all.sales.list | pos.order.line | list | New |
view_pos_order_tree_no_session_id |
pos.order.tree_no_session_id | pos.order | list | Inherits point_of_sale.view_pos_order_tree |
view_pos_payment |
pos.make.payment.form | pos.make.payment | form | New |
view_pos_payment_form |
pos.payment.form | pos.payment | form | New |
view_pos_payment_method_kanban |
pos.payment.method.kanban | pos.payment.method | kanban | New |
view_pos_payment_search |
pos.payment.search.view | pos.payment | search | New |
view_pos_payment_tree |
pos.payment.list | pos.payment | list | New |
view_pos_pos_form |
pos.order.form | pos.order | form | New |
view_pos_preset_form |
pos.preset.form | pos.preset | form | New |
view_pos_preset_tree |
pos.preset.list | pos.preset | list | New |
view_pos_price_inclusion_wizard_form |
pos.price.inclusion.wizard.form | pos.price.inclusion.wizard | form | New |
view_pos_printer |
Printers | pos.printer | list | New |
view_pos_printer_form |
Printers | pos.printer | form | New |
view_pos_printer_kanban |
pos.printer.kanban | pos.printer | kanban | New |
view_pos_session_form |
pos.session.form.view | pos.session | form | New |
view_pos_session_kanban |
pos.session.kanban | pos.session | kanban | New |
view_pos_session_search |
pos.session.search.view | pos.session | search | New |
view_pos_session_tree |
pos.session.list.view | pos.session | list | New |
view_report_pos_order_graph |
report.pos.order.graph | report.pos.order | graph | New |
view_report_pos_order_pivot |
report.pos.order.pivot | report.pos.order | pivot | New |
view_report_pos_order_search |
report.pos.order.search | report.pos.order | search | New |
HTTP endpoints (11)
| Route(s) | Handler | Auth | Type | Methods | Flags |
|---|---|---|---|---|---|
/web/image/pos.config/<id>/<string:field>, /web/image/pos.config/<id>/<string:field>/<int:width>x<int:height> |
PointOfSaleBinary.point_of_sale_content_image |
public | http | ALL | |
/pos/ticket |
PosController.invoice_request_screen |
public | http | ALL | sudo website |
/pos/web, /pos/ui |
PosController.old_pos_web |
user | http | ALL | |
/pos/ping |
PosController.pos_ping |
user | jsonrpc | ALL | |
/pos/receipt/<order_id> |
PosController.pos_receipt_download |
user | http | ALL | |
/pos/ui/<config_id>, /pos/ui/<config_id>/<path:subpath> |
PosController.pos_web |
user | http | ALL | sudo |
/pos/service-worker.js |
PosController.pos_web_service_worker |
user | http | ALL | |
/pos/sale_details_report |
PosController.print_sale_details |
user | http | ALL | |
/pos/ticket/validate |
PosController.show_ticket_validation_screen |
public | http | ALL | sudo website |
/pos_customer_display/<id_>/<identifier> |
PosCustomerDisplay.pos_customer_display |
public | http | ALL | sudo website |
/pos_customer_display/register-device |
PosCustomerDisplay.register_device |
public | jsonrpc | ALL | sudo website |
Models touched (67)
No new fields.
Public methods (0)No public methods.
-
pos_session_idOne2many → pos.sessionstring='POS Sessions' args: 'pos.session', 'bank_statement_id'
No public methods.
-
pos_session_idMany2one → pos.sessioncopy=Falseindex='btree_not_null'string='Session' args: 'pos.session'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)-
action_archive(self)
-
pos_payment_method_idsOne2many → pos.payment.methodstring='Point of Sale Payment Methods' args: 'pos.payment.method', 'journal_id'
-
action_archive(self)
-
pos_order_countIntegercompute='_compute_origin_pos_count'string='POS Order Count' -
pos_order_idsOne2many → pos.orderargs: 'pos.order', 'account_move' -
pos_payment_idsOne2many → pos.paymentargs: 'pos.payment', 'account_move_id' -
pos_refunded_invoice_idsMany2many → account.moveargs: 'account.move', 'refunded_invoices', 'refund_account_move', 'original_account_move' -
pos_session_correction_idMany2one → pos.sessionindex='btree_not_null'string='POS Sessions from Corrections' args: 'pos.session' -
pos_session_idsOne2many → pos.sessioncompute='_compute_pos_sessions'search='_search_pos_sessions'string='POS Sessions' args: 'pos.session' -
pos_session_refunds_idMany2one → pos.sessionindex='btree_not_null'string='POS Sessions from Refunds' args: 'pos.session' -
pos_session_sales_idMany2one → pos.sessionindex='btree_not_null'string='POS Sessions from Sales' args: 'pos.session' -
reversed_pos_order_idMany2one → pos.orderhelp='The pos order that was reverted after closing the session to create an invoice for it.'index='btree_not_null'string='Reversed POS Order' args: 'pos.order'
-
action_view_source_pos_orders(self) -
button_draft(self)
-
pos_order_line_idMany2one → pos.order.linehelp='POS order line that generated this invoice line.'index='btree_not_null'string='POS Order Line' args: 'pos.order.line'
No public methods.
-
force_outstanding_account_idMany2one → account.accountcheck_company=Trueindex='btree_not_null' args: 'account.account', 'Forced Outstanding Account' -
pos_payment_method_idMany2one → pos.payment.methodargs: 'pos.payment.method', 'POS Payment Method' -
pos_session_idMany2one → pos.sessionindex='btree_not_null' args: 'pos.session', 'POS Session'
No public methods.
-
pos_order_line_idsMany2many → pos.order.linecolumn1='account_tax_id'column2='pos_order_line_id'comodel_name='pos.order.line'copy=Falsereadonly=Truerelation='account_tax_pos_order_line_rel'
-
write(self, vals)
No new fields.
Public methods (0)No public methods.
-
typeSelectionondelete={'weight': 'set default', 'price': 'set default', 'discount': 'set default', 'client': 'set default', 'cashier': 'set default'}selection_add=[('weight', 'Weighted Product'), ('price', 'Priced Product'), ('discount', 'Discounted Product'), ('client', 'Client'), ('cashier', 'Cashier')]
No public methods.
No new fields.
Public methods (0)No public methods.
-
kpi_pos_totalBooleanargs: 'POS Sales' -
kpi_pos_total_valueMonetarycompute='_compute_kpi_pos_total_value'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
-
nameCharrequired=True args: 'Name' -
pos_config_idsMany2many → pos.configstring='Point of Sales' args: 'pos.config' -
valueFloatdigits=(16, 4)required=True args: 'Value'
No public methods.
-
access_tokenCharcopy=False args: 'Security Token'
-
create(self, vals_list)@api.model_create_multi
-
activeBooleandefault=True -
child_idsOne2many → pos.categorystring='Children Categories' args: 'pos.category', 'parent_id' -
colorIntegerdefault=get_default_colorrequired=False args: 'Color' -
complete_nameCharcompute='_compute_complete_name'recursive=Truestore=True args: 'Complete Name' -
has_imageBooleancompute='_compute_has_image' -
hour_afterFloatdefault=0.0help='The product will be available after this hour for online order and self order.'string='Availability After' -
hour_untilFloatdefault=24.0help='The product will be available until this hour for online order and self order.'string='Availability Until' -
image_128Imagemax_height=128max_width=128related='image_512'store=True args: 'Image 128' -
image_512Imagemax_height=512max_width=512 args: 'Image' -
nameCharrequired=Truestring='Category Name'translate=True -
parent_idMany2one → pos.categoryindex=Truestring='Parent Category' args: 'pos.category' -
pos_config_idsMany2many → pos.configstring='Linked PoS Configurations' args: 'pos.config' -
product_countIntegercompute='_compute_product_count' -
sequenceIntegerdefault=_default_sequencehelp='Gives the sequence order when displaying a list of product categories.'
-
action_archive(self) -
action_open_associated_products(self) -
get_default_color(self)
-
access_tokenChardefault=<expr> args: 'Access Token' -
activeBooleandefault=True -
amount_authorized_diffFloathelp='This field depicts the maximum difference allowed between the ending balance and the theoretical cash when closing a session, for non-POS managers. If this maximum is reached, the user will have an error message at the closing of his session saying that he needs to contact his manager.' args: 'Amount Authorized Difference' -
auto_validate_electronic_paymentBooleandefault=Truehelp='Automatically validates orders paid with an electronic payment (terminals, qr codes, ...).' -
available_preset_idsMany2many → pos.presetstring='Available Presets' args: 'pos.preset' -
available_pricelist_idsMany2many → product.pricelisthelp='Make several pricelists available in the Point of Sale. You can also apply a pricelist to specific customers from their contact form (in Sales tab). To be valid, this pricelist must be listed here as an available pricelist. Otherwise the default pricelist will apply.'string='Available Pricelists' args: 'product.pricelist' -
basic_receiptBooleanhelp='Print gift ticket without prices. Can be used for gifts.'string='Gift Receipt' -
cash_controlBooleancompute='_compute_cash_control'help='Check the amount of the cashbox at opening and closing.'string='Advanced Cash Control' -
cash_roundingBooleanstring='Total Rounding' -
closing_journal_idMany2one → account.journalcheck_company=Truecompute='_compute_closing_journal_id'domain=[('type', '=', 'sale')]help='Journal used specifically for PoS session closing and reverse entries'ondelete='restrict'precompute=Truereadonly=Falserequired=Truestore=Truestring='Closing Journal' args: 'account.journal' -
company_has_templateBooleancompute='_compute_company_has_template'string='Company has chart of accounts' -
company_idMany2one → res.companydefault=<expr>index=Truerequired=Truestring='Company' args: 'res.company' -
currency_idMany2one → res.currencycompute='_compute_currency'compute_sudo=Truestore=Truestring='Currency' args: 'res.currency' -
current_cash_register_balanceFloatcompute='_compute_current_cash_register_balance'string='Cash Register' -
current_session_idMany2one → pos.sessioncompute='_compute_current_session'search='_search_current_session'string='Current Session' args: 'pos.session' -
current_session_stateCharcompute='_compute_current_session' -
current_user_idMany2one → res.userscompute='_compute_current_session_user'string='Current Session Responsible' args: 'res.users' -
custom_emailCharreadonly=Falsestring='Email' -
custom_logoImagereadonly=Falsestring='Logo' -
custom_logo_nameCharstring='Logo Name' -
custom_phoneCharreadonly=Falsestring='Phone Nb' -
custom_receipt_addressCharreadonly=Falsestring='Address' -
custom_websiteCharreadonly=Falsestring='Website' -
customer_display_bg_imgImagemax_height=1920max_width=1920string='Background Image' -
customer_display_bg_img_nameCharstring='Background Image Name' -
default_bill_idsMany2many → pos.billstring='Coins/Bills' args: 'pos.bill' -
default_fiscal_position_idMany2one → account.fiscal.positionstring='Default Fiscal Position' args: 'account.fiscal.position' -
default_partner_idMany2one → res.partnercheck_company=Truedefault=_default_partnerhelp='The default customer used in PoS session closing'required=Truestring='Default Customer' args: 'res.partner' -
default_preset_idMany2one → pos.presetstring='Default Preset' args: 'pos.preset' -
device_seq_idMany2one → ir.sequencecopy=Falsereadonly=Truestring='Device Sequence' args: 'ir.sequence' -
emailCharcompute='_compute_custom_info'readonly=Falsestore=Truestring='Receipt email' -
fallback_nomenclature_idMany2one → barcode.nomenclaturestring='Fallback Nomenclature' args: 'barcode.nomenclature' -
fast_payment_method_idsMany2many → pos.payment.methodcompute='_compute_fast_payment_method_ids'help='These payment methods will be available for fast payment'readonly=Falserelation='pos_payment_method_config_fast_validation_relation'store=Truestring='Fast Payment Methods' args: 'pos.payment.method' -
fiscal_position_idsMany2many → account.fiscal.positionhelp='This is useful for restaurants with onsite and take-away services that imply specific tax rates.'string='Fiscal Positions' args: 'account.fiscal.position' -
group_pos_manager_idMany2one → res.groupsdefault=_get_group_pos_managerhelp='This field is there to pass the id of the pos manager group to the point of sale client.'string='Point of Sale Manager Group' args: 'res.groups' -
group_pos_user_idMany2one → res.groupsdefault=_get_group_pos_userhelp='This field is there to pass the id of the pos user group to the point of sale client.'string='Point of Sale User Group' args: 'res.groups' -
has_active_sessionBooleancompute='_compute_current_session' -
iface_available_categ_idsMany2many → pos.categoryhelp='The point of sale will only display products which are within one of the selected category trees. If no category is specified, all available products will be shown'string='Available PoS Product Categories' args: 'pos.category' -
iface_big_scrollbarsBooleanhelp='For imprecise industrial touchscreens.' args: 'Large Scrollbars' -
iface_group_by_categBooleanhelp='Display products grouped by categories.' args: 'Group products by categories' -
iface_print_autoBooleandefault=Falsehelp='The receipt will automatically be printed at the end of each order.'string='Automatic Receipt Printing' -
iface_printbillBooleanhelp='Allows to print the Bill before payment.'string='Bill Printing' -
iface_tax_includedSelectiondefault='total'required=Truestring='Tax Display' args: [('subtotal', 'Tax-Excluded Price'), ('total', 'Tax-Included Price')] -
iface_tipproductBooleanstring='Product tips' -
is_installed_account_accountantBooleancompute='_compute_is_installed_account_accountant'string='Is the Full Accounting Installed' -
is_margins_costs_accessible_to_every_userBooleandefault=Falsehelp='When disabled, only PoS manager can view the margin and cost of product among the Product info.'string='Margins & Costs' -
journal_idMany2one → account.journalcheck_company=Truedefault=_default_sale_journaldomain=[('type', '=', 'sale')]help='Journal used for customer invoices and refunds credit notes. 'ondelete='restrict'string='Point of Sale Journal' args: 'account.journal' -
kanban_dashboard_graphTextcompute='_kanban_dashboard_graph' -
last_data_changeDatetimecompute='_compute_local_data_integrity'readonly=Truestore=Truestring='Last Write Date' -
last_session_closing_dateDatecompute='_compute_last_session' -
limit_categoriesBooleanargs: 'Restrict Categories' -
logoImagecompute='_compute_custom_info'readonly=Falsestore=Truestring='Receipt logo' -
manual_discountBooleandefault=Truestring='Line Discounts' -
module_pos_appointmentBooleanargs: 'Online Booking' -
module_pos_avataxBooleanhelp='Use automatic taxes mapping with Avatax in PoS' args: 'AvaTax PoS Integration' -
module_pos_discountBooleanargs: 'Global Discounts' -
module_pos_hrBooleanhelp='Show employee login screen' -
module_pos_restaurantBooleanargs: 'Is a Bar/Restaurant' -
module_pos_smsBooleanhelp='Activate SMS feature for point_of_sale'string='SMS Enabled' -
nameCharhelp='An internal identification of the point of sale.'required=Truestring='Point of Sale'translate=True -
note_idsMany2many → pos.notehelp='The predefined notes of this point of sale.'string='Note Models' args: 'pos.note' -
only_round_cash_methodBooleanstring='Only apply rounding on cash' -
order_backend_seq_idMany2one → ir.sequencecopy=Falsereadonly=Truestring='Order Backend Sequence' args: 'ir.sequence' -
order_line_seq_idMany2one → ir.sequencecopy=Falsereadonly=Truestring='Order Line Sequence' args: 'ir.sequence' -
order_seq_idMany2one → ir.sequencecopy=Falsereadonly=Truestring='Order Sequence' args: 'ir.sequence' -
other_devicesBooleanhelp='Connect printers to your PoS.'string='Other Devices' -
payment_method_idsMany2many → pos.payment.methodbypass_search_access=Truecheck_company=Truecomodel_name='pos.payment.method'copy=Falsedefault=<expr>string='Payment Methods' -
phoneCharcompute='_compute_custom_info'readonly=Falsestore=Truestring='Receipt phone' -
pos_session_durationCharcompute='_compute_current_session_user' -
pos_session_stateCharcompute='_compute_current_session_user' -
pos_session_usernameCharcompute='_compute_current_session_user' -
pos_snooze_idsOne2many → pos.snoozestring='Snoozed Records' args: 'pos.snooze', 'pos_config_id' -
preparation_devicesBooleanhelp='Connect preparation printers to print to the bar, kitchen,...'string='Preparation devices' -
preparation_printer_idsMany2many → pos.printerdomain="[('use_type', '=', 'preparation')]"string='Preparation Printers' args: 'pos.printer', 'pos_config_printer_rel', 'config_id', 'printer_id' -
pricelist_idMany2one → product.pricelisthelp='The pricelist used if no customer is selected or if the customer has no Sale Pricelist configured if any.'string='Default Pricelist' args: 'product.pricelist' -
receipt_addressCharcompute='_compute_custom_info'readonly=Falsestore=Truestring='Receipt address' -
receipt_footerTexthelp='A short text that will be inserted as a footer in the printed receipt.'string='Receipt Footer' -
receipt_headerTexthelp='A short text that will be inserted as a header in the printed receipt.'string='Receipt Header' -
receipt_printer_idsMany2many → pos.printerdomain="[('use_type', '=', 'receipt')]"string='Receipt Printers' args: 'pos.printer', 'pos_config_receipt_printer_rel', 'config_id', 'printer_id' -
restrict_price_controlBooleanhelp='Only users with Manager access rights for PoS app can modify the product prices on orders.'string='Restrict Price Modifications to Managers' -
rounding_methodMany2one → account.cash.roundingstring='Rounding Method' args: 'account.cash.rounding' -
session_closing_daily_hourFloatdefault=4.0help="The hour at which the session will be automatically closed when the closing mode is set to 'Daily'."string='Daily Closing Hour' -
session_closing_modeSelectiondefault='daily'readonly=Truestring='Closing Mode' args: [('daily', 'Daily'), ('closing', 'At closing')] -
session_idsOne2many → pos.sessionstring='Sessions' args: 'pos.session', 'config_id' -
set_maximum_differenceBooleanhelp='Set a maximum difference allowed between the expected and counted money during the closing of the session.' args: 'Set Maximum Difference' -
set_tip_after_paymentBooleanhelp='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' -
show_category_imagesBooleandefault=Truehelp='Show category images in the Point of Sale interface.'string='Show Category Images' -
show_product_imagesBooleandefault=Truehelp='Show product images in the Point of Sale interface.'string='Show Product Images' -
statistics_for_current_sessionJsoncompute='_compute_statistics_for_session'string='Session Statistics' -
tax_regime_selectionBooleanargs: 'Tax Regime Selection value' -
tip_percentage_1Integerdefault=15string='Tip Percentage 1' -
tip_percentage_2Integerdefault=20string='Tip Percentage 2' -
tip_percentage_3Integerdefault=25string='Tip Percentage 3' -
tip_product_idMany2one → product.productdefault=_get_default_tip_producthelp='This product is used as reference on customer receipts.'string='Tip Product' args: 'product.product' -
trusted_config_idsMany2many → pos.configcolumn1='is_trusting'column2='is_trusted'domain="[('company_id', '=', company_id)]"relation='pos_config_trust_relation'string='Trusted Point of Sale Configurations' args: 'pos.config' -
use_closing_entry_by_productBooleanhelp='Display the breakdown of sales lines by product in the automatically generated closing entry.'string='Closing Entry by product' -
use_custom_receipt_infoBooleandefault=Falsehelp='Fill in if your shop does not have the same info as your company'string='Customise info' -
use_download_invoiceBooleanhelp='Automatically download the invoice PDF when an order is invoiced.'string='Download Invoice' -
use_fast_paymentBooleanhelp='Enable fast payment methods to validate orders on the product screen.' args: 'Fast Payment Validation' -
use_header_or_footerBooleanargs: 'Custom Header & Footer' -
use_order_printerBooleanargs: 'Order Printer' -
use_presetsBooleanargs: 'Use Presets' -
use_pricelistBooleanargs: 'Use a pricelist.' -
uuidCharcopy=Falsedefault=<expr>help='A globally unique identifier for this pos configuration, used to prevent conflicts in client-generated data.'readonly=True -
websiteCharcompute='_compute_custom_info'readonly=Falsestore=Truestring='Receipt website'
-
action_cash_bank_statement(self) -
action_open_ui(self) -
action_pos_config_modal_edit(self) -
close_session_snoozes(self)Unlink all snoozes that don't have an end_time when the session is closed -
close_ui(self) -
create(self, vals_list)@api.model_create_multi -
execute(self) -
get_limited_partners_loading(self, offset=0) -
get_pos_kanban_view_state(self)@api.model -
get_record_by_ref(self, recordRefs) -
get_statistics_for_session(self, session) -
install_pos_restaurant(self)@api.model -
link_category_form_pos(self, category) -
load_demo_data(self) -
load_onboarding_bakery_scenario(self, with_demo_data=True)@api.model -
load_onboarding_clothes_scenario(self, with_demo_data=True)@api.model -
load_onboarding_furniture_scenario(self, with_demo_data=True)@api.model -
load_onboarding_retail_scenario(self, with_demo_data=False)@api.model -
load_pos_data_force_loading(self)@api.model -
notify_synchronisation(self, session_id, device_identifier, records={}) -
open_existing_session_cb(self)close session button access session form to validate entries -
open_session_if_not_opened(self) -
open_ui(self)Open the pos interface with config_id as an extra argument. In vanilla PoS each user can only have one active session, therefore it was not needed to pass the config_id on opening a session. It is also possible to login to sessions created by other users. :returns: dict -
read_config_open_orders(self, domain, record_ids=[]) -
register_new_device_identifier(self) -
unlink(self) -
update_customer_display(self, order, identifier) -
write(self, vals)
-
messageTextdefault=_default_messagereadonly=True
-
action_confirm(self) -
get_selected_orders(self)
-
pos_session_idMany2one → pos.sessionrequired=True args: 'pos.session'
-
generate_report(self)
-
end_dateDatetimedefault=fields.Datetime.nowrequired=True -
pos_config_idsMany2many → pos.configdefault=<expr> args: 'pos.config', 'pos_detail_configs' -
start_dateDatetimedefault=_default_start_daterequired=True
-
generate_report(self)
No new fields.
Public methods (1)-
load_pos_data_force_loading(self)@api.modelOverride this method to force loading of all records of this model each time the POS starts (ignoring the local cache).
-
consolidated_billingBooleandefault=Truehelp='Create one invoice for all orders related to same customer and same invoicing address'string='Consolidated Billing' -
countIntegercompute='_compute_order_count'string='Order Count'
-
action_create_invoices(self)
-
amountFloatdefault=_default_amountdigits=0required=True -
config_idMany2one → pos.configdefault=_default_configrequired=Truestring='Point of Sale Configuration' args: 'pos.config' -
payment_dateDatetimedefault=<expr>required=Truestring='Payment Date' -
payment_method_idMany2one → pos.payment.methoddefault=_default_payment_methodrequired=Truestring='Payment Method' args: 'pos.payment.method' -
payment_nameCharstring='Payment Reference'
-
check(self)Check the order: if the order is not paid: continue payment, if the order is paid print ticket. -
launch_payment(self)
-
colorIntegerstring='Color' -
nameCharrequired=True -
sequenceIntegerdefault=1 args: 'Sequence'
No public methods.
-
account_moveMany2one → account.movecopy=Falseindex='btree_not_null'readonly=Truestring='Invoice' args: 'account.move' -
amount_differenceMonetaryreadonly=Truestring='Difference' -
amount_paidMonetaryrequired=Truestring='Paid' -
amount_returnMonetaryreadonly=Truerequired=Truestring='Returned' -
amount_taxMonetaryreadonly=Truerequired=Truestring='Taxes' -
amount_totalMonetaryreadonly=Truerequired=Truestring='Total' -
available_payment_method_idsMany2many → pos.payment.methodreadonly=Truerelated='config_id.payment_method_ids'store=Falsestring='Available Payment Methods' args: 'pos.payment.method' -
company_idMany2one → res.companyindex=Truereadonly=Truerequired=Truestring='Company' args: 'res.company' -
config_idMany2one → pos.configcompute='_compute_order_config_id'index=Truereadonly=Falsestore=Truestring='Point of Sale' args: 'pos.config' -
country_codeCharrelated='company_id.account_fiscal_country_id.code' -
currency_idMany2one → res.currencyrelated='config_id.currency_id'string='Currency' args: 'res.currency' -
currency_rateFloatcompute='_compute_currency_rate'compute_sudo=Truedigits=0help='The rate of the currency to the currency of rate applicable at the date of the order'readonly=Truestore=True args: 'Currency Rate' -
date_orderDatetimedefault=fields.Datetime.nowindex=Truereadonly=Truestring='Date' -
defer_invoice_pdfBooleanindex=Truestring='Defer Invoice PDF Generation' -
emailCharcompute='_compute_contact_details'readonly=Falsestore=Truestring='Email' -
fiscal_position_idMany2one → account.fiscal.positioncomodel_name='account.fiscal.position'readonly=Falsestring='Fiscal Position' -
floating_order_nameCharstring='Order Name' -
general_customer_noteTextstring='General Customer Note' -
has_deleted_lineBooleanstring='Has Deleted Line' -
has_refundable_linesBooleancompute='_compute_has_refundable_lines' args: 'Has Refundable Lines' -
internal_noteTextstring='Internal Note' -
invoice_statusSelectioncompute='_compute_is_invoiced'string='Invoice Status' args: [('invoiced', 'Fully Invoiced'), ('to_invoice', 'To Invoice')] -
is_editedBooleancompute='_compute_is_edited'string='Edited' -
is_globally_invoicedBooleancompute='_compute_is_invoiced' args: 'Is Globally Invoiced' -
is_refundBooleandefault=Falsereadonly=Truestring='Is Refund' -
is_singly_invoicedBooleancompute='_compute_is_invoiced' args: 'Is Singly Invoiced' -
is_tippedBooleanreadonly=True args: 'Is this already tipped?' -
is_total_cost_computedBooleancompute='_compute_is_total_cost_computed'help='Allows to know if all the total cost of the order lines have already been computed' -
linesOne2many → pos.order.linecopy=Truestring='Order Lines' args: 'pos.order.line', 'order_id' -
marginMonetarycompute='_compute_margin'string='Margin' -
margin_percentFloatcompute='_compute_margin'digits=(12, 4)string='Margin (%)' -
mobileCharcompute='_compute_contact_details'readonly=Falsestore=Truestring='Mobile' -
nameCharcopy=Falsedefault='/'readonly=Truerequired=Truestring='Order Ref' -
nb_printIntegercopy=Falsedefault=0readonly=Truestring='Number of Print' -
partner_idMany2one → res.partnerchange_default=Trueindex='btree_not_null'string='Customer' args: 'res.partner' -
payment_idsOne2many → pos.paymentstring='Payments' args: 'pos.payment', 'pos_order_id' -
pos_referenceCharcopy=Falseindex=Truereadonly=Truestring='Receipt Number' -
prep_order_idsOne2many → pos.prep.orderstring='Preparation orders' args: 'pos.prep.order', 'pos_order_id' -
preset_idMany2one → pos.presetstring='Preset' args: 'pos.preset' -
preset_timeDatetimehelp='Hour of the day for the order'string='Hour' -
pricelist_idMany2one → product.priceliststring='Pricelist' args: 'product.pricelist' -
print_historyJsoncopy=False args: 'Print History' -
refund_orders_countIntegercompute='_compute_refund_related_fields'help='Number of orders where items from this order were refunded' args: 'Number of Refund Orders' -
refunded_order_idMany2one → pos.ordercompute='_compute_refund_related_fields'help='Order from which items were refunded in this order' args: 'pos.order' -
reversed_move_idsOne2many → account.movehelp='List of journal entries created when this POS order was reversed and invoiced after session close.'string='Reversal Journal Entries' args: 'account.move', 'reversed_pos_order_id' -
sale_journalMany2one → account.journalondelete='restrict'readonly=Truerelated='session_id.config_id.journal_id'store=Truestring='Sales Journal' args: 'account.journal' -
sequence_numberIntegercopy=Falsehelp='A session-unique sequence number for the order. Negative if generated from the client'string='Sequence Number' -
session_idMany2one → pos.sessiondomain="[('state', '=', 'opened')]"index=Truestring='Session' args: 'pos.session' -
sourceSelectiondefault='pos'selection=[('pos', 'Point of Sale')]string='Origin' -
stateSelectioncopy=Falsedefault='draft'index=Truereadonly=True args: [('draft', 'New'), ('cancel', 'Cancelled'), ('paid', 'Paid'), ('done', 'Posted')], 'Status' -
ticket_codeCharhelp='5 digits alphanumeric code to be used by portal user to request an invoice' -
tip_amountMonetaryreadonly=Truestring='Tip Amount' -
to_invoiceBooleancopy=False args: 'To invoice' -
tracking_numberCharcopy=Falsereadonly=Truestring='Order Number' -
user_idMany2one → res.userscomodel_name='res.users'default=<expr>help='Employee who uses the cash register.'string='Employee' -
uuidCharcopy=Falsedefault=<expr>readonly=Truestring='Uuid'
-
action_create_invoices(self) -
action_invoice_download_pdf(self) -
action_pos_order_cancel(self) -
action_pos_order_invoice(self) -
action_pos_order_paid(self) -
action_pos_order_receipt(self) -
action_send_mail(self) -
action_send_receipt(self, email) -
action_view_invoice(self) -
action_view_refund_orders(self) -
action_view_refunded_order(self) -
add_payment(self, data)Create a new payment for the order -
ask_for_ticket_printing(self) -
cancel_order_from_pos(self) -
create(self, vals_list)@api.model_create_multi -
get_example_order_data(self)@api.model -
get_reference_last_part(self) -
is_refund_or_negative(self) -
process_saved_payments(self, order, existing_order)This will process and save payment related changes by ensuring necessary updates are performed on UI -
read_pos_data(self, data, config) -
read_pos_data_uuid(self, uuid)@api.model -
read_pos_orders(self, domain=False)@api.model -
refund(self) -
remove_from_ui(self, server_ids)@api.modelRemove orders from the frontend PoS application Remove orders from the server by id. :param server_ids: list of the id's of orders to remove from the server. :type server_ids: list. :returns: list -- list of db-ids for the removed orders. -
search_order_ids(self, config_id, domain, limit, offset, state_filter='paid')@api.modelSearch for orders that satisfy the given domain, limit and offset. state_filter: 'paid' for non-draft/non-cancelled orders, 'cancelled' for cancelled orders. -
sync_from_ui(self, orders)@api.modelCreate and update Orders from the frontend PoS application. Create new orders and update orders that are in draft status. If an order already exists with a status different from 'draft' it will be discarded, otherwise it will be saved to the database. If saved with 'draft' status the order can be overwritten later by this function. :param orders: dictionary with the orders to be created. :type orders: dict. :returns: list of db-ids for the created and updated orders. :rtype: list -
update_order_partner(self, order) -
write(self, vals)
-
attribute_value_idsMany2many → product.template.attribute.valuestring='Selected Attributes' args: 'product.template.attribute.value' -
combo_item_idMany2one → product.combo.itemstring='Combo Item' args: 'product.combo.item' -
combo_line_idsOne2many → pos.order.linestring='Combo Lines' args: 'pos.order.line', 'combo_parent_id' -
combo_parent_idMany2one → pos.order.lineindex='btree_not_null'string='Combo Parent' args: 'pos.order.line' -
company_idMany2one → res.companyrelated='order_id.company_id'store=Truestring='Company' args: 'res.company' -
currency_idMany2one → res.currencyrelated='order_id.currency_id' args: 'res.currency' -
custom_attribute_value_idsOne2many → product.attribute.custom.valuecomodel_name='product.attribute.custom.value'inverse_name='pos_order_line_id'readonly=Falsestore=Truestring='Custom Values' -
customer_noteCharargs: 'Customer Note' -
discountFloatdigits=0string='Discount (%)' -
extra_tax_dataJson -
full_product_nameCharargs: 'Full Product Name' -
is_editedBooleanargs: 'Edited' -
is_total_cost_computedBooleanhelp='Allows to know if the total cost has already been computed or not' -
marginMonetarycompute='_compute_margin'string='Margin' -
margin_percentFloatcompute='_compute_margin'digits=(12, 4)string='Margin (%)' -
nameCharcopy=Falserequired=Truestring='Line No' -
noteCharargs: 'Product Note' -
noticeCharstring='Discount Notice' -
order_idMany2one → pos.orderindex=Trueondelete='cascade'required=Truestring='Order Ref' args: 'pos.order' -
prep_line_idsOne2many → pos.prep.linestring='Preparation lines' args: 'pos.prep.line', 'pos_order_line_id' -
price_extraFloatstring='Price extra' -
price_subtotalMonetaryreadonly=Truerequired=Truestring='Tax Excl.' -
price_subtotal_inclMonetaryreadonly=Truerequired=Truestring='Tax Incl.' -
price_typeSelectiondefault='original'string='Price Type' args: [('original', 'Original'), ('manual', 'Manual'), ('automatic', 'Automatic')] -
price_unitFloatdigits=0string='Unit Price' -
product_idMany2one → product.productdomain=[('sale_ok', '=', True)]index=Truerequired=Truestring='Product' args: 'product.product' -
product_uom_idMany2one → uom.uomrelated='product_id.uom_id'string='Product Unit' args: 'uom.uom' -
qtyFloatdefault=1digits='Product Unit' args: 'Quantity' -
refund_orderline_idsOne2many → pos.order.linehelp='Orderlines in this field are the lines that refunded this orderline.' args: 'pos.order.line', 'refunded_orderline_id', 'Refund Order Lines' -
refunded_orderline_idMany2one → pos.order.linehelp='If this orderline is a refund, then the refunded orderline is specified in this field.'index='btree_not_null' args: 'pos.order.line', 'Refunded Order Line' -
refunded_qtyFloatcompute='_compute_refund_qty'help='Number of items refunded in this orderline.' args: 'Refunded Quantity' -
tax_idsMany2many → account.taxcolumn1='pos_order_line_id'column2='account_tax_id'comodel_name='account.tax'readonly=Truerelation='account_tax_pos_order_line_rel'string='Taxes' -
tax_ids_after_fiscal_positionMany2many → account.taxcompute='_get_tax_ids_after_fiscal_position'string='Taxes to Apply' args: 'account.tax' -
total_costFloatmin_display_digits='Product Price'readonly=Truestring='Total cost' -
uuidCharcopy=Falsedefault=<expr>readonly=Truestring='Uuid'
-
create(self, vals_list)@api.model_create_multi -
write(self, vals)
No new fields.
Public methods (3)-
order_receipt_generate_data(self, basic_receipt=False) -
order_receipt_generate_html(self, basic_receipt=False) -
order_receipt_generate_image(self, basic_receipt=False, width=500, height=0)
-
account_move_idMany2one → account.moveindex='btree_not_null' args: 'account.move' -
amountMonetarycurrency_field='currency_id'help='Total amount of the payment.'required=Truestring='Amount' -
amount_currencyMonetarycurrency_field='foreign_currency_id'help="Total amount of the payment in the order's currency."string='Amount in currency' -
card_brandCharhelp='The brand of the payment card (e.g. Visa, AMEX, ...)'string='Brand of card' -
card_noCharstring='Card Number(Last 4 Digit)' -
card_typeCharhelp='The type of the payment card (e.g. CREDIT CARD OR DEBIT CARD)'string='Type of card used' -
cardholder_nameCharstring='Card Owner name' -
company_idMany2one → res.companyrelated='pos_order_id.company_id'store=Truestring='Company' args: 'res.company' -
currency_idMany2one → res.currencyrelated='pos_order_id.currency_id'string='Currency' args: 'res.currency' -
currency_rateFloathelp='Conversion rate from company currency to order currency.'string='Conversion Rate' -
foreign_currency_idMany2one → res.currencyhelp="The currency in which the payment was made, if different from the order's currency."string='Foreign Currency' args: 'res.currency' -
is_changeBooleandefault=Falsestring='Is this payment change?' -
nameCharreadonly=Truestring='Label' -
partner_idMany2one → res.partnerrelated='pos_order_id.partner_id'string='Customer' args: 'res.partner' -
payment_dateDatetimedefault=<expr>readonly=Truerequired=Truestring='Date' -
payment_method_authcodeCharstring='Payment APPR Code' -
payment_method_idMany2one → pos.payment.methodrequired=Truestring='Payment Method' args: 'pos.payment.method' -
payment_method_issuer_bankCharstring='Payment Issuer Bank' -
payment_method_payment_modeCharstring='Payment Mode' -
payment_ref_noCharhelp='Payment reference number from payment provider terminal'string='Payment reference number' -
payment_statusCharstring='Payment Status' -
pos_order_idMany2one → pos.orderindex=Trueondelete='cascade'required=Truestring='Order' args: 'pos.order' -
qr_codeCharcopy=Falsereadonly=Truestring='QR Code' -
session_idMany2one → pos.sessionindex=Truerelated='pos_order_id.session_id'store=Truestring='Session' args: 'pos.session' -
ticketCharstring='Payment Receipt Info' -
transaction_idCharstring='Payment Transaction ID' -
user_idMany2one → res.usersrelated='session_id.user_id'string='Employee' args: 'res.users' -
uuidCharcopy=Falsedefault=<expr>readonly=Truestring='Uuid'
No public methods.
-
account_bank_statement_idMany2one → account.bank.statementreadonly=Truestring='Cash Lines' args: 'account.bank.statement' -
activeBooleandefault=True -
all_providers_installedBooleancompute='_compute_all_providers_installed' -
available_payment_method_typesJsoncompute='_compute_available_payment_method_types' -
available_payment_providersJsoncompute='_compute_available_payment_providers' -
company_idMany2one → res.companycomodel_name='res.company'default=<expr>required=Truestring='Company' -
config_idsMany2many → pos.configcheck_company=Truestring='Point of Sale' args: 'pos.config' -
currency_idsMany2many → res.currencystring='Currencies' args: 'res.currency' -
custom_imageImagemax_height=90max_width=90 args: 'Custom Image' -
default_pos_receivable_account_nameCharrelated='company_id.account_default_pos_receivable_account_id.display_name'string='Default Receivable Account Name' -
default_qrCharcompute='_compute_qr' -
hide_qr_code_methodBooleancompute='_compute_hide_qr_code_method' -
imageImagecompute='_compute_image'inverse='_inverse_image'max_height=90max_width=90 -
journal_idMany2one → account.journalcheck_company=Truedomain=['|', '&', ('type', '=', 'cash'), ('pos_payment_method_ids', '=', False), ('type', '=', 'bank')]help='Leave empty to use the receivable account of customer.\nDefines the journal where to book the accumulated payments (or individual payment if Identify Customer is true) after closing the session.\nFor cash journal, we directly write to the default account in the journal via statement lines.\nFor bank journal, we write to the outstanding account specified in this payment method.\nOnly cash and bank journals are allowed.'index='btree_not_null'ondelete='restrict'string='Journal' args: 'account.journal' -
nameCharhelp='Defines the name of the payment method that will be displayed in the Point of Sale when the payments are selected.'required=Truestring='Method'translate=True -
open_session_idsMany2many → pos.sessioncompute='_compute_open_session_ids'help='Open PoS sessions that are using this payment method.'string='Pos Sessions' args: 'pos.session' -
outstanding_account_idMany2one → account.accountcheck_company=Truehelp='Account used as outstanding account when creating accounting payment records for bank payments.'ondelete='restrict'string='Outstanding Account' args: 'account.account' -
payment_method_typeSelectiondefault='none'required=Trueselection=<expr>string='Integration' -
payment_providerSelectionhelp='Payment provider that will be used to process payments made with this payment method.'selection=<expr>string='Payment Provider' -
qr_code_methodSelectioncopy=Falsehelp='Type of QR-code to be generated for this payment method.'selection=<expr>string='QR Code Format' -
receivable_account_idMany2one → account.accountcheck_company=Truedomain=[('account_type', '=', 'asset_receivable')]help="Leave empty to use the default account from the company setting.\nOverrides the company's receivable account (for Point of Sale) used in the journal entries."ondelete='restrict'string='Intermediary Account' args: 'account.account' -
sequenceIntegercopy=Falsedefault=_default_sequence -
typeSelectionrequired=Trueselection=[('cash', 'Cash'), ('bank', 'Bank'), ('pay_later', 'Customer Account')]
-
copy_data(self, default=None) -
create(self, vals_list)@api.model_create_multi -
get_payment_providers(self)@api.model -
get_provider_status(self)@api.model -
get_qr_code_value(self, amount, free_communication, structured_communication, currency, debtor_partner)Returns the payment payload to encode in the QR-code. The QR-code image itself is drawn by the POS client, so this must be the raw value the bank application expects (e.g. the EMV string), not the URL of a report rendering it. -
write(self, vals)
-
attribute_value_idsMany2many → product.template.attribute.valuestring='Selected Attributes' args: 'product.template.attribute.value', 'pos_prep_line_product_template_attribute_value_rel' -
cancelledFloatdefault=0 args: 'Quantity of cancelled product' -
combo_line_idsOne2many → pos.prep.lineargs: 'pos.prep.line', 'combo_parent_id' -
combo_parent_idMany2one → pos.prep.linecompute='_compute_combo_fields'index='btree_not_null'store=True args: 'pos.prep.line' -
pos_order_line_idMany2one → pos.order.lineindex='btree_not_null'string='Original pos order line' args: 'pos.order.line' -
prep_order_idMany2one → pos.prep.orderindex='btree_not_null'ondelete='cascade'string='Preparation Order' args: 'pos.prep.order' -
product_idMany2one → product.productstring='Product ID' args: 'product.product' -
quantityFloatrequired=True args: 'Quantity' -
uuidCharcopy=Falsedefault=<expr>readonly=Truestring='Uuid'
No public methods.
-
pos_order_idMany2one → pos.orderindex='btree_not_null'ondelete='cascade'string='Order' args: 'pos.order' -
prep_line_idsOne2many → pos.prep.linestring='Preparation Lines' args: 'pos.prep.line', 'prep_order_id' -
uuidCharcopy=Falsedefault=<expr>readonly=Truestring='Uuid'
-
update_last_order_change(self, order)@api.modelThis method is use to create order changes for orders than was created from a self ordering device. Indeed, those orders are not created from the PoS itself, so no change is created.
-
attendance_idsOne2manyreadonly=Falserelated='resource_calendar_id.attendance_ids'string='Attendances' -
colorIntegerdefault=0string='Color' -
count_linked_configIntegercompute='_compute_count_linked_config' -
count_linked_ordersIntegercompute='_compute_count_linked_orders' -
fiscal_position_idMany2one → account.fiscal.positionstring='Fiscal Position' args: 'account.fiscal.position' -
has_imageBooleancompute='_compute_has_image' -
identificationSelectiondefault='none'required=Truestring='Identification' args: [('none', 'Not required'), ('address', 'Address'), ('name', 'Name')] -
image_128Imagemax_height=128max_width=128related='image_512'store=Truestring='Image 128' -
image_512Imagemax_height=512max_width=512string='Image' -
interval_timeIntegerdefault=20string='Interval time (in min)' -
is_returnBooleandefault=Falsehelp='All quantity in the cart will be in negative. Ideal for return managment.'string='Return mode' -
nameCharrequired=Truestring='Label'translate=True -
pricelist_idMany2one → product.priceliststring='Pricelist' args: 'product.pricelist' -
resource_calendar_idMany2one → resource.calendarargs: 'resource.calendar', 'Resource' -
service_feeBooleandefault=Falsestring='Service Fee' -
service_fee_amountFloatdefault=0.0string='Amount' -
service_fee_based_onSelectiondefault='pre_discount'string='Based on' args: [('pre_discount', 'Order total before discount(s)'), ('post_discount', 'Order total after discount(s)')] -
service_fee_product_idMany2one → product.productdefault=<expr>string='Service Fee Product' args: 'product.product' -
service_fee_typeSelectiondefault='percent'string='Type' args: [('fixed', 'Fixed Price'), ('percent', 'Percent')] -
slots_per_intervalIntegerdefault=5string='Capacity' -
use_timingBooleandefault=Falsestring='Manage orders by time'
-
action_open_linked_config(self) -
action_open_linked_orders(self) -
get_available_slots(self)
-
config_idMany2one → pos.configreadonly=Truerequired=True args: 'pos.config' -
example_textHtmlcompute='_compute_example_text'readonly=True
-
action_discard(self) -
action_tax_excluded(self) -
action_tax_included(self)
-
is_split_per_productBooleanhelp='Print one ticket for each product instead of one ticket grouping all products of the order.'string='Split per product' -
nameChardefault='Printer'help='An internal identification of the printer'required=True args: 'Printer Name' -
paper_sizeSelectiondefault='80'required=Trueselection=[('80', 'Standard 80mm'), ('58', 'Standard 58mm'), ('label', 'Zebra (>=2.75in)'), *EPSON_MODELS]string='Paper Size' -
paper_size_keysCharcompute='_compute_paper_size_keys' -
pos_config_idsMany2many → pos.configstring='Point of Sale' args: 'pos.config', 'pos_config_receipt_printer_rel', 'printer_id', 'config_id' -
printer_ipCharhelp="Local IP address of an Epson receipt printer, or its serial number if the 'Automatic Certificate Update' option is enabled in the printer settings. It can also be the IP address of a Zebra network printer."string='Printer IP Address' -
printer_typeSelectiondefault='epson_epos'selection=[('epson_epos', 'ePoS')]string='Printer Type' -
product_categories_idsMany2many → pos.categorystring='Printed Product Categories' args: 'pos.category', 'printer_category_rel', 'printer_id', 'category_id' -
timeoutIntegerdefault=15000help='Time in milliseconds before considering that the printer is not responding.'string='Connection Timeout (ms)' -
use_cashdrawerBooleanhelp='Automatically open the cashdrawer.'string='Link Cashdrawer' -
use_lnaBooleanstring='Use Local Network Access' -
use_typeSelectiondefault='preparation'selection=[('preparation', 'Preparation'), ('receipt', 'Receipt')]string='Type'
No public methods.
-
account_move_countIntegercompute='_compute_account_move_count'string='Number of related journal entries' -
bank_statement_idMany2one → account.bank.statementindex='btree_not_null'readonly=Truestring='Bank Statement' args: 'account.bank.statement' -
bank_statement_line_idsOne2many → account.bank.statement.linereadonly=Truerelated='bank_statement_id.line_ids'string='Bank Statement Lines' args: 'account.bank.statement.line' -
closing_balanceMonetaryreadonly=Truerelated='bank_statement_id.balance_end_real'string='Closing Balance' -
closing_differenceMonetarycompute='_compute_closing_difference'string='Closing Difference' -
closing_notesTextstring='Closing Notes' -
company_idMany2one → res.companyreadonly=Truerelated='config_id.company_id'string='Company' args: 'res.company' -
config_idMany2one → pos.configindex=Truerequired=Truestring='Point of Sale' args: 'pos.config' -
correction_move_idsOne2many → account.moveindex=Truestring='Correction Entries' args: 'account.move', 'pos_session_correction_id' -
currency_idMany2one → res.currencyreadonly=Falserelated='config_id.currency_id'string='Currency' args: 'res.currency' -
is_in_company_currencyBooleancompute='_compute_is_in_company_currency' args: 'Is Using Company Currency' -
move_idsMany2many → account.movecompute='_compute_move_ids'search='_search_move_ids'string='Related Journal Entries' args: 'account.move' -
nameChardefault='/'readonly=Truestring='Session ID' -
opening_balanceMonetaryreadonly=Truerelated='bank_statement_id.balance_start'string='Opening Balance' -
opening_notesTextstring='Opening Notes' -
order_countIntegercompute='_compute_order_count' -
order_idsOne2many → pos.orderstring='Orders' args: 'pos.order', 'session_id' -
payment_method_idsMany2many → pos.payment.methodrelated='config_id.payment_method_ids'string='Payment Methods' args: 'pos.payment.method' -
refund_move_countIntegercompute='_compute_account_move_count'string='Number of related refunds journal entries' -
refund_move_idsOne2many → account.moveindex=Truestring='Refunds Entry' args: 'account.move', 'pos_session_refunds_id' -
sale_move_countIntegercompute='_compute_account_move_count'string='Number of related sales journal entries' -
sale_move_idsOne2many → account.moveindex=Truestring='Sales Entry' args: 'account.move', 'pos_session_sales_id' -
start_atDatetimereadonly=Truestring='Opening Date' -
stateSelectioncopy=Falsedefault='opening_control'index=Truereadonly=Truerequired=Truestring='Status' args: [('opening_control', 'Opening Control'), ('opened', 'In Progress'), ('closing_control', 'Closing Control'), ('closed', 'Closed & Posted')] -
stop_atDatetimecopy=Falsereadonly=Truestring='Closing Date' -
total_payments_amountFloatcompute='_compute_total_payments_amount'string='Total Payments Amount' -
user_idMany2one → res.usersdefault=<expr>index=Trueondelete='restrict'readonly=Falserequired=Truestring='Opened By' args: 'res.users'
-
action_show_payments_list(self) -
action_view_order(self) -
close_session_from_ui(self, payment_method_closing={})Main entry point for closing a session from the UI. It will perform all necessary checks and operations to close the session -
create(self, vals_list)@api.model_create_multi -
delete_cash_in_out(self, absl_id, partner_id) -
delete_opening_control_session(self) -
filter_local_data(self, models_to_filter) -
get_cash_in_out_list(self) -
get_closing_control_data(self) -
get_order_count_by_preset(self) -
get_pos_ui_product_pricelist_item_by_product(self, product_tmpl_ids, product_ids, config_id) -
get_session_orders(self) -
load_data(self, local_data={})Load POS data for the session, optionally scoped by what the client already holds. param local_data: dict with the following optional keys: - ``models`` (list): restrict the response to these model names only. - ``records`` (dict): per-model mapping of ``{id: write_date}`` already in the client cache; used to compute records that should be removed locally, or updated. - ``search_params`` (dict): per-model overrides for ``domain``, ``offset``, ``limit``, and ``context`` passed to ``_load_pos_metadata``. - ``only_records`` (bool): if ``True``, return ``{model: [records]}`` without metadata (fields, relations, etc.). :return: A dictionary where the keys are the model names and the values are list of records if ``only_records`` is ``True``, or a dictionary with the following keys: - ``records``: list of records - ``fields``: list of fields - ``relations``: list of relations - ``to_remove``: list of ids that should be removed from the client cache. Present only if local_data['records'] is not empty. -
log_partner_message(self, partner_id, action, message_type) -
open_frontend_cb(self)Open the pos interface with config_id as an extra argument. In vanilla PoS each user can only have one active session, therefore it was not needed to pass the config_id on opening a session. It is also possible to login to sessions created by other users. :returns: dict -
post_close_register_message(self) -
set_opening_control(self, cashbox_value: int, notes: str)Public method to open the session. This calls the internal logic and, if successful, assigns the sequence name. DO NOT INHERIT THIS METHOD. Inherit _set_opening_control_data instead. -
show_linked_account_move(self) -
try_cash_in_out(self, _type, amount, reason, partner_id) -
write(self, vals)
-
end_timeDatetimerequired=Falsestring='End Time' -
pos_config_idMany2one → pos.configindex=Trueondelete='cascade'required=Truestring='POS Config' args: 'pos.config' -
product_template_idMany2one → product.templateondelete='cascade'string='Product' args: 'product.template' -
start_timeDatetimerequired=Truestring='Start Time' -
typeSelectiondefault='product'required=Trueselection=[('product', 'Product')]string='Snoozed for?'
-
create(self, vals_list)@api.model_create_multi
No new fields.
Public methods (0)No public methods.
-
pos_order_line_idMany2one → pos.order.lineindex='btree_not_null'ondelete='cascade'string='PoS Order Line' args: 'pos.order.line' -
uuidCharcopy=Falsedefault=<expr>readonly=Truestring='Uuid'
No public methods.
No new fields.
Public methods (0)No public methods.
-
is_upsellBooleandefault=Falsehelp='Indicates if the combo is an upsell to the customer. This can be compared to a minimum quantity of 0.'string='Is Upsell' -
qty_freeIntegerdefault=1help='Number of free items included in the combo.'string='Free quantity' -
qty_maxIntegerdefault=1help='Maximum number of items to select in the combo.'string='Maximum quantity'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (2)-
action_archive(self) -
create(self, vals_list)@api.model
-
has_imageBooleancompute='_compute_has_image' -
pos_descriptionHtmlstring='Description'translate=True
-
write(self, vals)
-
available_in_posBooleandefault=Falsehelp='Check if you want this product to appear in the Point of Sale.'string='Available in POS' -
colorIntegercompute='_compute_color'readonly=Falsestore=True args: 'Color Index' -
pos_categ_idsMany2many → pos.categoryhelp='Category used in the Point of Sale.'string='Point of Sale Category' args: 'pos.category' -
pos_optional_product_idsMany2many → product.templatecolumn1='src_id'column2='dest_id'comodel_name='product.template'help='Optional products are suggested when customers add items to their cart (e.g., adding a burger suggests cold drinks or fries).'relation='pos_product_optional_rel'string='POS Optional Products' -
pos_sequenceIntegercopy=Falsedefault=_default_pos_sequencehelp='Determine the display order in the POS Terminal'string='POS Sequence' -
public_descriptionHtmlstring='Product Description'translate=True -
to_weightBooleanhelp="Enable this option if the product should be sold by weight. When enabled and scale is not avalable, the 'Price' button will update the quantity instead of the unit price. This applies to both normal POS usage and when integrated with a hardware scale."string='To Weigh'
-
action_archive(self) -
create_product_variant_from_pos(self, attribute_value_ids, config_id)Create a product variant from the POS interface. -
get_product_info_pos(self, price, quantity, pos_config_id, product_variant_id=False) -
load_product_from_pos(self, config_id, domain, offset=0, limit=None)@api.model -
set_pos_sequence(self, sequence_by_id)@api.model -
write(self, vals)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)-
get_sale_details(self, date_start=False, date_stop=False, config_ids=False, session_ids=False, **kwargs)@api.modelSerialise the orders of the requested time period, configs and sessions. :param date_start: The dateTime to start, default today 00:00:00. :type date_start: str. :param date_stop: The dateTime to stop, default date_start + 23:59:59. :type date_stop: str. :param config_ids: Pos Config id's to include. :type config_ids: list of numbers. :param session_ids: Pos Config id's to include. :type session_ids: list of numbers. :returns: dict -- Serialised sales.
-
average_priceMonetaryaggregator='avg'readonly=Truestring='Average Price' -
company_idMany2one → res.companyreadonly=Truestring='Company' args: 'res.company' -
config_idMany2one → pos.configreadonly=Truestring='Point of Sale' args: 'pos.config' -
currency_idMany2one → res.currencyreadonly=Truestring='Currency' args: 'res.currency' -
dateDatetimereadonly=Truestring='Order Date' -
delay_validationIntegerreadonly=Truestring='Delay Validation' -
invoicedBooleanreadonly=True -
journal_idMany2one → account.journalreadonly=Truestring='Journal' args: 'account.journal' -
marginMonetaryreadonly=Truestring='Margin' -
nbr_linesIntegerreadonly=Truestring='Sale Line Count' -
order_idMany2one → pos.orderreadonly=Truestring='Order' args: 'pos.order' -
partner_idMany2one → res.partnerreadonly=Truestring='Customer' args: 'res.partner' -
payment_method_idMany2one → pos.payment.methodreadonly=Truestring='Payment Method' args: 'pos.payment.method' -
pos_categ_idMany2one → pos.categoryreadonly=Truestring='Point of Sale Category' args: 'pos.category' -
preset_idMany2one → pos.presetreadonly=Truestring='Preset' args: 'pos.preset' -
price_sub_totalMonetaryreadonly=Truestring='Subtotal w/o discount' -
price_subtotal_exclMonetaryreadonly=Truestring='Subtotal w/o Tax' -
price_totalMonetaryreadonly=Truestring='Total Price' -
pricelist_idMany2one → product.pricelistreadonly=Truestring='Pricelist' args: 'product.pricelist' -
product_categ_idMany2one → product.categoryreadonly=Truestring='Product Category' args: 'product.category' -
product_idMany2one → product.productreadonly=Truestring='Product' args: 'product.product' -
product_qtyIntegerreadonly=Truestring='Product Quantity' -
product_tmpl_idMany2one → product.templatereadonly=Truestring='Product Template' args: 'product.template' -
session_idMany2one → pos.sessionreadonly=Truestring='Session' args: 'pos.session' -
stateSelectionreadonly=Truestring='Status' args: [('draft', 'New'), ('paid', 'Paid'), ('done', 'Posted'), ('cancel', 'Cancelled')] -
total_discountMonetaryreadonly=Truestring='Total Discount' -
user_idMany2one → res.usersreadonly=Truestring='User' args: 'res.users'
-
init(self)
-
point_of_sale_ticket_portal_url_display_modeSelectiondefault='qr_code_and_url'help='Choose how the URL to the portal will be print on the receipt.'required=Truestring='Print' args: [('qr_code', 'QR code'), ('url', 'URL'), ('qr_code_and_url', 'QR code + URL')] -
point_of_sale_ticket_unique_codeBooleanhelp='Add a 5-digit code on the receipt to allow the user to request the invoice for an order on the portal.'string='Generate a code on ticket' -
point_of_sale_use_ticket_qr_codeBooleandefault=Truehelp="Print information on the receipt to allow the customer to easily access the invoice anytime, from Odoo's portal."string='Self-service invoicing' -
receipt_addressCharcompute='_get_receipt_address'store=False
-
validate_lock_dates(self)@api.constrains('fiscalyear_lock_date', 'tax_lock_date', 'sale_lock_date', 'hard_lock_date')This constrains makes it impossible to change the relevant lock dates if some open POS session would violate them. Without that, these POS sessions could not be closed (since the closing entries violate the lock dates).
-
barcode_nomenclature_idMany2one → barcode.nomenclaturereadonly=Falserelated='company_id.nomenclature_id' args: 'barcode.nomenclature' -
custom_address_placeholderCharreadonly=Falserelated='pos_config_id.company_id.receipt_address' -
custom_email_placeholderCharreadonly=Falserelated='pos_config_id.company_id.email' -
custom_phone_placeholderCharreadonly=Falserelated='pos_config_id.company_id.phone'string='phone placeholder' -
custom_website_placeholderCharreadonly=Falserelated='pos_config_id.company_id.website' -
group_pos_presetBooleanhelp='Hide or show the Presets menu in the Point of Sale configuration.'implied_group='point_of_sale.group_pos_preset'string='Presets' -
module_l10n_at_posBooleanhelp='Configure Fiskaly credentials required for Austrian RKSV fiscalization'string='Austria Fiscalization' -
module_pos_adyenBooleanhelp='The transactions are processed by Adyen. Set your Adyen credentials on the related payment method.'string='Adyen Payment Terminal' -
module_pos_dpopayBooleanhelp='The transactions are processed by DPO Pay. Set your DPO Pay credentials on the related payment method.'string='DPO Pay Payment Terminal' -
module_pos_mercado_pagoBooleanhelp='The transactions are processed by Mercado Pago. Set your Mercado Pago credentials on the related payment method.'string='Mercado Pago Payment Terminal' -
module_pos_pine_labsBooleanhelp='The transactions are processed by Pine Labs. Set your Pine Labs credentials on the related payment method.'string='Pine Labs Payment Terminal' -
module_pos_pricerBooleanhelp='Display the price of your products through electronic price tags'string='Pricer electronic price tags' -
module_pos_qfpayBooleanhelp='The transactions are processed by QFPay. Set your QFPay credentials on the related payment method.'string='QFPay Payment Terminal' -
module_pos_razorpayBooleanhelp='The transactions are processed by Razorpay. Set your Razorpay credentials on the related payment method.'string='Razorpay Payment Terminal' -
module_pos_stripeBooleanhelp='The transactions are processed by Stripe. Set your Stripe credentials on the related payment method.'string='Stripe Payment Terminal' -
module_pos_viva_comBooleanhelp='The transactions are processed by Viva.com on terminal or tap on phone.'string='Viva.com Payment Terminal' -
point_of_sale_ticket_portal_url_display_modeSelectionreadonly=Falserelated='company_id.point_of_sale_ticket_portal_url_display_mode'required=True -
point_of_sale_ticket_unique_codeBooleanreadonly=Falserelated='company_id.point_of_sale_ticket_unique_code' -
point_of_sale_use_ticket_qr_codeBooleanreadonly=Falserelated='company_id.point_of_sale_use_ticket_qr_code' -
pos_allowed_pricelist_idsMany2many → product.pricelistcompute='_compute_pos_allowed_pricelist_ids' args: 'product.pricelist' -
pos_amount_authorized_diffFloatreadonly=Falserelated='pos_config_id.amount_authorized_diff' -
pos_auto_validate_electronic_paymentBooleanreadonly=Falserelated='pos_config_id.auto_validate_electronic_payment'string='Automatically validates orders paid with an electronic payment (terminals, qr codes, ...).' -
pos_available_preset_idsMany2many → pos.presetreadonly=Falserelated='pos_config_id.available_preset_ids' args: 'pos.preset' -
pos_available_pricelist_idsMany2many → product.pricelistcompute='_compute_pos_pricelist_id'readonly=Falsestore=Truestring='Available Pricelists' args: 'product.pricelist' -
pos_basic_receiptBooleanreadonly=Falserelated='pos_config_id.basic_receipt' -
pos_cash_controlBooleanrelated='pos_config_id.cash_control' -
pos_cash_roundingBooleanreadonly=Falserelated='pos_config_id.cash_rounding'string='Total Rounding (PoS)' -
pos_closing_journal_idMany2onereadonly=Falserelated='pos_config_id.closing_journal_id' -
pos_company_has_templateBooleanrelated='pos_config_id.company_has_template' -
pos_config_idMany2one → pos.configdefault=<expr>string='Point of Sale' args: 'pos.config' -
pos_custom_emailCharreadonly=Falserelated='pos_config_id.custom_email'string='email placeholder' -
pos_custom_logoImagereadonly=Falserelated='pos_config_id.custom_logo' -
pos_custom_logo_nameCharreadonly=Falserelated='pos_config_id.custom_logo_name' -
pos_custom_phoneCharreadonly=Falserelated='pos_config_id.custom_phone' -
pos_custom_receipt_addressCharreadonly=Falserelated='pos_config_id.custom_receipt_address' -
pos_custom_websiteCharreadonly=Falserelated='pos_config_id.custom_website' -
pos_customer_display_bg_imgImagereadonly=Falserelated='pos_config_id.customer_display_bg_img' -
pos_customer_display_bg_img_nameCharreadonly=Falserelated='pos_config_id.customer_display_bg_img_name' -
pos_default_bill_idsMany2manyreadonly=Falserelated='pos_config_id.default_bill_ids' -
pos_default_fiscal_position_idMany2one → account.fiscal.positioncheck_company=Truecompute='_compute_pos_fiscal_positions'readonly=Falsestore=Truestring='Default Fiscal Position' args: 'account.fiscal.position' -
pos_default_partner_idMany2onereadonly=Falserelated='pos_config_id.default_partner_id' -
pos_default_preset_idMany2one → pos.presetreadonly=Falserelated='pos_config_id.default_preset_id' args: 'pos.preset' -
pos_fallback_nomenclature_idMany2onedomain="[('id', '!=', barcode_nomenclature_id)]"readonly=Falserelated='pos_config_id.fallback_nomenclature_id' -
pos_fast_payment_method_idsMany2manyreadonly=Falserelated='pos_config_id.fast_payment_method_ids' -
pos_fiscal_position_idsMany2many → account.fiscal.positioncheck_company=Truecompute='_compute_pos_fiscal_positions'readonly=Falsestore=Truestring='Fiscal Positions' args: 'account.fiscal.position' -
pos_has_active_sessionBooleanrelated='pos_config_id.has_active_session' -
pos_iface_available_categ_idsMany2many → pos.categorycompute='_compute_pos_iface_available_categ_ids'readonly=Falsestore=Truestring='Available PoS Product Categories' args: 'pos.category' -
pos_iface_big_scrollbarsBooleanreadonly=Falserelated='pos_config_id.iface_big_scrollbars' -
pos_iface_group_by_categBooleanreadonly=Falserelated='pos_config_id.iface_group_by_categ' -
pos_iface_print_autoBooleanreadonly=Falserelated='pos_config_id.iface_print_auto' -
pos_iface_printbillBooleanreadonly=Falserelated='pos_config_id.iface_printbill' -
pos_iface_tax_includedSelectionreadonly=Falserelated='pos_config_id.iface_tax_included' -
pos_iface_tipproductBooleanreadonly=Falserelated='pos_config_id.iface_tipproduct' -
pos_is_margins_costs_accessible_to_every_userBooleanreadonly=Falserelated='pos_config_id.is_margins_costs_accessible_to_every_user' -
pos_journal_idMany2onereadonly=Falserelated='pos_config_id.journal_id' -
pos_limit_categoriesBooleanreadonly=Falserelated='pos_config_id.limit_categories' -
pos_manual_discountBooleanreadonly=Falserelated='pos_config_id.manual_discount' -
pos_module_pos_appointmentBooleanreadonly=Falserelated='pos_config_id.module_pos_appointment' -
pos_module_pos_avataxBooleanreadonly=Falserelated='pos_config_id.module_pos_avatax' -
pos_module_pos_discountBooleanreadonly=Falserelated='pos_config_id.module_pos_discount' -
pos_module_pos_hrBooleanreadonly=Falserelated='pos_config_id.module_pos_hr' -
pos_module_pos_restaurantBooleanreadonly=Falserelated='pos_config_id.module_pos_restaurant' -
pos_module_pos_smsBooleanreadonly=Falserelated='pos_config_id.module_pos_sms' -
pos_note_idsMany2manyreadonly=Falserelated='pos_config_id.note_ids' -
pos_only_round_cash_methodBooleanreadonly=Falserelated='pos_config_id.only_round_cash_method' -
pos_other_devicesBooleanreadonly=Falserelated='pos_config_id.other_devices' -
pos_payment_method_idsMany2manyreadonly=Falserelated='pos_config_id.payment_method_ids' -
pos_preparation_devicesBooleanreadonly=Falserelated='pos_config_id.preparation_devices' -
pos_preparation_printer_idsMany2manydomain="[('use_type', '=', 'preparation')]"readonly=Falserelated='pos_config_id.preparation_printer_ids' -
pos_pricelist_idMany2one → product.pricelistcompute='_compute_pos_pricelist_id'readonly=Falsestore=Truestring='Default Pricelist' args: 'product.pricelist' -
pos_receipt_footerTextcompute='_compute_pos_receipt_header_footer'readonly=Falsestore=Truestring='Receipt Footer' -
pos_receipt_headerTextcompute='_compute_pos_receipt_header_footer'readonly=Falsestore=Truestring='Receipt Header' -
pos_receipt_printer_idsMany2manydomain="[('use_type', '=', 'receipt')]"readonly=Falserelated='pos_config_id.receipt_printer_ids' -
pos_restrict_price_controlBooleanreadonly=Falserelated='pos_config_id.restrict_price_control' -
pos_rounding_methodMany2onereadonly=Falserelated='pos_config_id.rounding_method' -
pos_selectable_categ_idsMany2many → pos.categorycompute='_compute_pos_selectable_categ_ids' args: 'pos.category' -
pos_session_closing_daily_hourFloatreadonly=Falserelated='pos_config_id.session_closing_daily_hour' -
pos_session_closing_modeSelectionreadonly=Falserelated='pos_config_id.session_closing_mode' -
pos_set_maximum_differenceBooleanreadonly=Falserelated='pos_config_id.set_maximum_difference' -
pos_set_tip_after_paymentBooleanreadonly=Falserelated='pos_config_id.set_tip_after_payment'store=True -
pos_show_category_imagesBooleanreadonly=Falserelated='pos_config_id.show_category_images' -
pos_show_product_imagesBooleanreadonly=Falserelated='pos_config_id.show_product_images' -
pos_tax_regime_selectionBooleanreadonly=Falserelated='pos_config_id.tax_regime_selection' -
pos_tip_percentage_1Integerreadonly=Falserelated='pos_config_id.tip_percentage_1' -
pos_tip_percentage_2Integerreadonly=Falserelated='pos_config_id.tip_percentage_2' -
pos_tip_percentage_3Integerreadonly=Falserelated='pos_config_id.tip_percentage_3' -
pos_tip_product_idMany2onereadonly=Falserelated='pos_config_id.tip_product_id'store=True -
pos_trusted_config_idsMany2manydomain="[('id', '!=', pos_config_id), ('module_pos_restaurant', '=', False)]"readonly=Falserelated='pos_config_id.trusted_config_ids' -
pos_use_closing_entry_by_productBooleanreadonly=Falserelated='pos_config_id.use_closing_entry_by_product' -
pos_use_custom_receipt_infoBooleanreadonly=Falserelated='pos_config_id.use_custom_receipt_info' -
pos_use_download_invoiceBooleanreadonly=Falserelated='pos_config_id.use_download_invoice' -
pos_use_fast_paymentBooleanreadonly=Falserelated='pos_config_id.use_fast_payment' -
pos_use_header_or_footerBooleanreadonly=Falserelated='pos_config_id.use_header_or_footer' -
pos_use_presetsBooleanreadonly=Falserelated='pos_config_id.use_presets' -
pos_use_pricelistBooleanreadonly=Falserelated='pos_config_id.use_pricelist' -
sale_tax_idMany2one → account.taxcheck_company=Truereadonly=Falserelated='company_id.account_sale_tax_id'string='Default Sale Tax' args: 'account.tax' -
use_kiosk_modeBooleandefault=Falsestring='Is Kiosk Mode'
-
action_launch_cron_generate_invoice_period(self) -
action_pos_config_create_new(self) -
action_pos_printer_dialog(self) -
create(self, vals_list)@api.model_create_multi -
open_payment_method_form(self) -
pos_close_ui(self) -
pos_open_ui(self) -
set_values(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
-
fiscal_position_idMany2one → account.fiscal.positioncompute='_compute_fiscal_position_id'help='Fiscal positions are used to adapt taxes and accounts for particular customers or sales orders/invoices. The default value comes from the customer.'string='Automatic Fiscal Position' args: 'account.fiscal.position' -
invoice_emailsCharcompute='_compute_invoice_emails'readonly=True -
pos_order_countIntegercompute='_compute_pos_order'groups='point_of_sale.group_pos_user'help='The number of point of sales orders related to this customer' -
pos_order_idsOne2many → pos.orderreadonly=True args: 'pos.order', 'partner_id'
-
action_open_partner_view(self) -
action_view_pos_order(self)This function returns an action that displays the pos orders from partner. -
open_commercial_entity(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
-
is_pos_groupableBooleanhelp='Check if you want to group products of this unit in point of sale orders'string='Group Products in POS'
No public methods.
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…