Point of Sale
point_of_sale · odoo/odoo
🛠 Migration considerations
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `SELECT id FROM pos_config WHERE id = %s FOR UPDATE NOWAIT` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
Found by automated static analysis: patterns worth a look before/after upgrading this module to a newer Odoo version.
- Repository
- odoo/odoo · module folder
- Module version
- 1.0.2
- Category
- Sales/Point of Sale
- Folder size
- 31.52 MB
- License
- LGPL-3
- Application
- Yes
- Auto-installable
- No
- Website
- https://www.odoo.com/app/point-of-sale-shop
- Last tracking update
- 2026-08-20 16:11:45
- Authors
- Odoo S.A.
- Maintainers
- Odoo S.A.
- Committers
- Xavier Morel, Raphael Collet, Thibault Delavallée, Josse Colpaert, Odoo Translation Bot, David Monjoie, Joren Van Onder, qdp-odoo, Aaron Bohy, Lucas Perais (lpe), Sylvain LE GAL, Yannick Tivisse, Pierre Masereel, Laurent Smet, Christophe Monniez, Jorge Pinna Puissant, Alexandre Kühn, Arnold Moyaux, Julien Castiaux, Victor Feyens, Andrea Grazioso (agr-odoo), Adrien Dieudonné, William Henrotin, Sébastien Theys, Julien Mougenot, Anh Thao Pham (pta), Alvaro Fuentes, Achraf (abz), Brice bib Bartoletti, Rémy Voet (ryv), Tiffany Chang (tic), fja-odoo, Gorash, Mathieu Duckerts-Antoine, Pierre Paridans, William Braeckman, Romain Estievenart, roen-odoo, william-andre, yhu-odoo, Agustín Castro Bugallo, luvi, Hubert Van De Walle, Renaud Thiry, rhe-odoo, Habib (ayh), Loan (LSE), David Monnom (moda), tsm-odoo, Louis Wicket (wil), alsh-odoo, Pedram (PEBR), Adrien Widart (awt), Victor Piryns (pivi), Julien (jula), Mahamadasif Ansari, Pieter Claeys (clpi), clesgow, Claire Bretton (clbr), Dylan Kiss (dyki), tong-odoo, Xavier Bol (xbo), Paweł Fertyk, Nguyễn Đại Dương, Zeel Patel, Sarah Bellefroid, Pedram (pebr), Louis Travaux, Adrien Guilliams (adgu), Arnaud Sibille, shag-odoo, kdeb@odoo.com, sesn-odoo, Nicolas Viseur (vin), Walid (wasa), Paul Stroobant, lase@odoo.com, Quentin Wolfs, Ethan Vincent, Maryam Kia, reka-odoo, Sven Fuehr, Cyrus Robins, kmod-odoo, Julien Carion (juca), kcv-odoo, odoostan, mega, Tanguy Quéguineur, Louis Gobert, Agustin Castro Bugallo, Chrysanthe (chgo), asno-odoo, mano-odoo, hatr-odoo, Parth Solanki[PASO], Majed Alhanash (malh), manv-afk, Max Whale, Hussein Ebrahim(hyhe), aamo-odoo, Joseph (jcb), Victorien (viso), parp-odoo, Loukas Wets (lowe), yaso, Mathieu Coutant, Patricia Daloze (pda), Xavier Luyckx (xlu), guce, yagp-odoo, Elisabeth Dickinson, Sanchit Gupta, Claire (clbr), gteboul, Manushi Shah, Léo Gizard, Pierre Pulinckx (PIPU), paan-odoo, Jitendra Prajapat, David Monnom, Nesma Harraz, Ian, Smit Patel, Arthur Nanson, elhayyany, pkgu-odoo, Mohammad Abdulmoneim (abdu), djameltouati, Pierre Lamotte (pila), Pierre Pulinckx, wt, Bastien PIERRE, Michaël Mattiello, Corentin Heinix (cohe), Corentin Lombard, Jeffrey Luo, Carmine, Sherif Gabr, pish-odoo, Mahdi Alijani (malj), Vincent Sevestre, plha-odoo, lse-odoo, Krzysztof Magusiak (krma), nape-odoo, kkuj-odoo, Omar (OSAH), Ajit Singh, Akash Pandey, dvsh-odoo, Hazem Ibrahim, Shubham Agarwal [SHAG], ksku-odoo, joseph, zadh-odoo, Robin Engels (roen), Basioni (basm), sagu-odoo, vpan-odoo, dhruv, rida, kdes-odoo, 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), Elier Ayala Bernal, nsirjacobs, bhna-odoo, MAGREMENT, aksi-odoo, Ze Chen (zeche), mohannedah, rare-odoo, Lancelot Semal, sjai-odoo, Dhwani Patel, Laurent Smet (LAS), adip-odoo, Quentin Colla (qucol), Ali Hassan (alhy), shka-odoo, josv-odoo, Martin Doyen, path-odoo, kaju-odoo, Amr Elkhatieb, Adnan Sabbir, Uemus, YoussefM890, saurabh, Traina Ludo, a-k-s-h-a-y, Keya Patel, rpka-odoo, Stephane Vanmeerhaeghe (stva), Stephane Vanmeerhaeghe, Andreas Bichinger, Thomas (thsc), Léopold Cantraine, Pierre (pco), Eve Lin (evlin), abhk-odoo, Romain (roto), smjo-odoo, Julien (jdeh), Farah (ahmfa), ELCO, lase, chpa-odoo, adgu-odoo, Shubham Agarwal, Mohamed Ben-Tahri, Oussema Heni, Shubham Agarwal(shag), Stephane vm, amitmuchhala, Mohamed (mobt), jipr-odoo, krpat-odoo, Abhishek Khant, jean (jebou)
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- hotel_restaurant, l10n_account_withholding_tax_pos, l10n_ar_pos, l10n_at_pos_rksv, l10n_ch_pos, l10n_co_pos, l10n_es_edi_tbai_pos, l10n_es_edi_verifactu_pos, l10n_es_pos, l10n_fr_pdp_pos, l10n_fr_pos_caisse_ap_ip, l10n_fr_pos_cert, l10n_gcc_pos, l10n_id_pos, l10n_in_pos, l10n_mt_pos, l10n_my_edi_pos, l10n_pe_pos, l10n_ro_pos, l10n_test_pos_qr_payment, l10n_tw_edi_ecpay_pos, l10n_uy_pos, l10n_vn_edi_viettel_pos, pos_account_tax_python, pos_adyen, pos_analytic_by_config, pos_cashdro, pos_cashmatic, pos_discount, pos_dpopay, pos_edi_ubl, pos_edit_order_line, pos_event, pos_glory_cash, pos_hr, pos_imin, pos_loyalty, pos_mercado_pago, pos_mollie, pos_mrp, pos_online_payment, pos_partner_birthdate, pos_pine_labs, pos_printing_qztray, pos_qfpay, pos_razorpay, pos_repair, pos_restaurant, pos_safaricom, pos_sale, pos_sms, pos_stripe, pos_viva_com
- Description
Code Analysis ⓘ
Views touched (70)
| 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.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.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_product_tree_view |
product.product.product.list.inherit | product.product | list | Inherits product.product_product_tree_view |
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 |
product.template.product.list.inherit | product.template | list | Inherits product.product_template_tree_view |
product_template_tree_view_point_of_sale |
product.template.view.list.point_of_sale | product.template | list | Inherits point_of_sale.product_template_tree_view |
product_template_view_form_normalized_pos |
product.template.view.form.normalized | product.template | form | New |
product_uom_form_view_inherit |
product.uom.form.view.inherit | uom.uom | form | Inherits uom.product_uom_form_view |
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 |
stock_reference_pos_view_form |
stock.reference.pos | stock.reference | form | Inherits stock.stock_reference_form_view |
ticket_request_with_code |
Invoice Request | ir.ui.view | qweb | New |
ticket_validation_screen |
ticket_validation_screen | ir.ui.view | qweb | New |
view_account_journal_pos_user_form |
account.move.pos.form.inherit | account.move | form | Inherits account.view_move_form |
view_form_pos_close_session_wizard |
pos.close.session.wizard.form | pos.close.session.wizard | 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_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_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_printer |
Preparation Printers | pos.printer | list | New |
view_pos_printer_form |
Preparation Printer | pos.printer | form | 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 (9)
| 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/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_>/<device_uuid> |
PosCustomerDisplay.pos_customer_display |
public | http | ALL | sudo website |
Models touched (71)
No new fields.
Public methods (0)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 (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_idsOne2many → pos.sessionargs: 'pos.session', 'move_id', 'POS Sessions' -
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)
No new fields.
Public methods (0)No public methods.
-
force_outstanding_account_idMany2one → account.accountcheck_company=True 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.
No new fields.
Public methods (1)-
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.
-
nameCharargs: 'Name' -
pos_config_idsMany2many → pos.configstring='Point of Sales' args: 'pos.config' -
valueFloatdigits=(16, 4)required=True args: 'Value'
-
name_create(self, name)@api.model
-
access_tokenCharcopy=False args: 'Security Token'
-
create(self, vals_list)@api.model_create_multi
-
child_idsOne2many → pos.categorystring='Children Categories' args: 'pos.category', 'parent_id' -
colorIntegerdefault=get_default_colorrequired=False args: 'Color' -
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' -
sequenceIntegerhelp='Gives the sequence order when displaying a list of product categories.'
-
get_default_color(self)
-
account_idMany2one → account.accountargs: 'account.account', 'Destination account' -
account_readonlyBooleanargs: 'Destination account is readonly' -
amount_to_balanceFloatargs: 'Amount to balance' -
messageTextargs: 'Information message'
-
close_session(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_terminal_paymentBooleandefault=Truehelp='Automatically validates orders paid with a payment terminal.' -
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 basic ticket without prices. Can be used for gifts.'string='Basic Receipt' -
cash_controlBooleancompute='_compute_cash_control'help='Check the amount of the cashbox at opening and closing.'string='Advanced Cash Control' -
cash_roundingBooleanstring='Cash Rounding' -
company_has_templateBooleancompute='_compute_company_has_template'string='Company has chart of accounts' -
company_idMany2one → res.companydefault=<expr>required=Truestring='Company' args: 'res.company' -
currency_idMany2one → res.currencycompute='_compute_currency'compute_sudo=Truestore=Truestring='Currency' args: 'res.currency' -
current_session_idMany2one → pos.sessioncompute='_compute_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' -
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_preset_idMany2one → pos.presetstring='Default Preset' args: 'pos.preset' -
device_seq_idMany2one → ir.sequencecopy=Falsereadonly=Truestring='Device Sequence' args: 'ir.sequence' -
epson_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."string='Epson Printer IP' -
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_cashdrawerBooleanhelp='Automatically open the cashdrawer.'string='Cashdrawer' -
iface_electronic_scaleBooleanhelp='Enables Electronic Scale integration.'string='Electronic Scale' -
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_print_skip_screenBooleandefault=Truehelp='The receipt screen will be skipped if the receipt can be printed automatically.'string='Skip Preview Screen' -
iface_print_via_proxyBooleanhelp='Bypass browser printing and prints via the hardware proxy.'string='Print via Proxy' -
iface_scan_via_proxyBooleanhelp='Enable barcode scanning with a remotely connected barcode scanner and card swiping with a Vantiv card reader.'string='Scan via Proxy' -
iface_tax_includedSelectiondefault='total'required=Truestring='Tax Display' args: [('subtotal', 'Tax-Excluded Price'), ('total', 'Tax-Included Price')] -
iface_tipproductBooleanstring='Product tips' -
invoice_journal_idMany2one → account.journalcheck_company=Truedefault=_default_invoice_journaldomain=[('type', '=', 'sale')]help='Accounting journal used to create invoices.'string='Invoice Journal' args: 'account.journal' -
is_closing_entry_by_productBooleanhelp='Display the breakdown of sales lines by product in the automatically generated closing entry.'string='Closing Entry by product' -
is_header_or_footerBooleanargs: 'Custom Header & Footer' -
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' -
is_order_printerBooleanargs: 'Order Printer' -
is_posboxBooleanargs: 'PosBox' -
journal_idMany2one → account.journalcheck_company=Truedefault=_default_sale_journaldomain=[('type', 'in', ('general', 'sale'))]help='Accounting journal used to post POS session journal entries and POS invoice payments.'ondelete='restrict'string='Point of Sale Journal' args: 'account.journal' -
last_data_changeDatetimecompute='_compute_local_data_integrity'readonly=Truestore=Truestring='Last Write Date' -
last_session_closing_cashFloatcompute='_compute_last_session' -
last_session_closing_dateDatecompute='_compute_last_session' -
limit_categoriesBooleanargs: 'Restrict Categories' -
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' -
note_idsMany2many → pos.notehelp='The predefined notes of this point of sale.'string='Note Models' args: 'pos.note' -
number_of_rescue_sessionIntegercompute='_compute_current_session'string='Number of Rescue Session' -
only_round_cash_methodBooleanstring='Only apply rounding on cash' -
order_backend_seq_idMany2one → ir.sequencecopy=Falsereadonly=Truestring='Order Backend Sequence' args: 'ir.sequence' -
order_edit_trackingBooleandefault=Falsehelp='Store edited orders in the backend'string='Track orders edits' -
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 devices to your PoS without an IoT Box.'string='Other Devices' -
payment_method_idsMany2many → pos.payment.methodcopy=Falsedefault=<expr>string='Payment Methods' args: 'pos.payment.method' -
picking_policySelectiondefault='direct'help='If you deliver all products at once, the delivery order will be scheduled based on the greatest product lead time. Otherwise, it will be based on the shortest.'required=Truestring='Shipping Policy' args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')] -
picking_type_idMany2one → stock.picking.typedefault=_default_picking_type_iddomain=<expr>ondelete='restrict'required=Truestring='Operation Type' args: 'stock.picking.type' -
pos_session_durationCharcompute='_compute_current_session_user' -
pos_session_stateCharcompute='_compute_current_session_user' -
pos_session_usernameCharcompute='_compute_current_session_user' -
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' -
printer_idsMany2many → pos.printerstring='Order Printers' args: 'pos.printer', 'pos_config_printer_rel', 'config_id', 'printer_id' -
proxy_ipCharhelp='The hostname or ip address of the hardware proxy, Will be autodetected if left empty.'size=45string='IP 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' -
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='Cash rounding' args: 'account.cash.rounding' -
route_idMany2one → stock.routestring='Spefic route for products delivered later.' args: 'stock.route' -
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' -
ship_laterBooleanstring='Ship Later' -
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_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_fast_paymentBooleanhelp='Enable fast payment methods to validate orders on the product screen.' args: 'Fast Payment Validation' -
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 -
warehouse_idMany2one → stock.warehousecompute='_compute_warehouse_id'ondelete='restrict'precompute=Truereadonly=Falsestore=True args: 'stock.warehouse'
-
action_pos_config_modal_edit(self) -
close_ui(self) -
create(self, vals_list)@api.model_create_multi -
execute(self) -
get_limited_partners_loading(self, offset=0) -
get_limited_product_count(self) -
get_pos_kanban_view_state(self)@api.model -
get_product_loading_info(self)Return total product.template count matching the PoS domain and the configured loading limit. Used by the frontend to warn the user before triggering a full sync when the product count exceeds the configured limit or crosses the dangerous threshold (20 000+). -
get_record_by_ref(self, recordRefs) -
get_statistics_for_session(self, session) -
install_pos_restaurant(self)@api.model -
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 -
notify_synchronisation(self, session_id, device_identifier, records={}) -
open_existing_session_cb(self)close session button access session form to validate entries -
open_opened_rescue_session_form(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, device_uuid) -
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 (0)No public methods.
-
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'readonly=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' -
emailCharcompute='_compute_contact_details'readonly=Falsestore=Truestring='Email' -
failed_pickingsBooleancompute='_compute_picking_count' -
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_invoice_status'string='Invoice Status' args: [('invoiced', 'Fully Invoiced'), ('to_invoice', 'To Invoice')] -
is_editedBooleancompute='_compute_is_edited'string='Edited' -
is_invoicedBooleancompute='_compute_is_invoiced' args: 'Is Invoiced' -
is_refundBooleandefault=Falsereadonly=Truestring='Is Refund' -
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' -
last_order_preparation_changeCharhelp='Last printed state of the order'string='Last preparation change' -
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' -
order_edit_trackingBooleanreadonly=Truerelated='config_id.order_edit_tracking' -
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' -
picking_countIntegercompute='_compute_picking_count' -
picking_idsOne2many → stock.pickingargs: 'stock.picking', 'pos_order_id' -
picking_type_idMany2one → stock.picking.typereadonly=Falserelated='session_id.config_id.picking_type_id'string='Operation Type' args: 'stock.picking.type' -
pos_referenceCharcopy=Falseindex=Truereadonly=Truestring='Receipt Number' -
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' -
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 account moves created when this POS order was reversed and invoiced after session close.'string='Reversal Account Moves' 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' -
session_move_idMany2one → account.movecopy=Falsereadonly=Truerelated='session_id.move_id'string='Session Journal Entry' args: 'account.move' -
shipping_dateDateargs: 'Shipping Date' -
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' -
stock_reference_idsMany2many → stock.referencestring='Reference' args: 'stock.reference', 'stock_reference_pos_order_rel', 'pos_order_id', 'reference_id' -
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_pos_order_cancel(self) -
action_pos_order_invoice(self) -
action_pos_order_paid(self) -
action_send_mail(self) -
action_send_receipt(self, email, ticket_image, basic_image) -
action_stock_picking(self) -
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 -
create(self, vals_list)@api.model_create_multi -
get_preparation_change(self) -
get_reference_last_part(self) -
get_stock_reports_to_print(self) -
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_paid_order_ids(self, config_id, domain, limit, offset)@api.modelSearch for 'paid' orders that satisfy the given domain, limit and offset. -
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 -
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' -
discountFloatdefault=0.0digits=0string='Discount (%)' -
extra_tax_dataJson -
full_product_nameCharargs: 'Full Product Name' -
is_editedBooleandefault=False args: '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' -
pack_lot_idsOne2many → pos.pack.operation.lotstring='Lot/serial Number' args: 'pos.pack.operation.lot', '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.productchange_default=Truedomain=[('sale_ok', '=', True)]required=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.taxreadonly=Truestring='Taxes' args: 'account.tax' -
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 -
get_existing_lots(self, company_id, config_id, product_id)@api.modelReturn the lots that are still available in the given company. The lot is available if its quantity in the corresponding stock_quant and pos stock location is > 0. -
isRefund(self) -
unlink(self) -
write(self, vals)
-
lot_nameCharargs: 'Lot Name' -
order_idMany2one → pos.orderreadonly=Falserelated='pos_order_line_id.order_id' args: 'pos.order' -
pos_order_line_idMany2one → pos.order.lineindex='btree_not_null' args: 'pos.order.line' -
product_idMany2one → product.productreadonly=Falserelated='pos_order_line_id.product_id' args: 'product.product'
No public methods.
-
account_move_idMany2one → account.moveindex='btree_not_null' args: 'account.move' -
amountMonetarycurrency_field='currency_id'help='Total amount of the payment.'required=Truestring='Amount' -
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.'related='pos_order_id.currency_rate'string='Conversion Rate' -
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' -
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.
-
activeBooleandefault=True -
company_idMany2one → res.companydefault=<expr>string='Company' args: 'res.company' -
config_idsMany2many → pos.configstring='Point of Sale' args: 'pos.config' -
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' -
hide_use_payment_terminalBooleancompute='_compute_hide_use_payment_terminal' -
imageImagemax_height=50max_width=50 args: 'Image' -
is_cash_countBooleancompute='_compute_is_cash_count'store=Truestring='Cash' -
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.accounthelp='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' -
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.accountdomain=[('reconcile', '=', True), ('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=False -
split_transactionsBooleandefault=Falsehelp='Forces to set a customer when using this payment method and splits the journal entries for each customer. It could slow down the closing process.'string='Identify Customer' -
typeSelectioncompute='_compute_type'selection=[('cash', 'Cash'), ('bank', 'Bank'), ('pay_later', 'Customer Account')] -
use_payment_terminalSelectionhelp='Record payments with a terminal on this journal.'selection=<expr>string='Use a Payment Terminal'
-
copy_data(self, default=None) -
create(self, vals_list)@api.model_create_multi -
get_provider_status(self, modules_list)@api.model -
get_qr_code(self, amount, free_communication, structured_communication, currency, debtor_partner)Generates and returns a QR-code -
write(self, vals)
-
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' -
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)
-
company_idMany2one → res.companydefault=<expr>required=Truestring='Company' args: 'res.company' -
epson_printer_ipChardefault='0.0.0.0'help="Local IP address of an Epson receipt printer, or its serial number if the 'Automatic Certificate Update' option is enabled in the printer settings."string='Epson Printer IP Address' -
nameChardefault='Printer'help='An internal identification of the printer'required=True args: 'Printer Name' -
pos_config_idsMany2many → pos.configargs: 'pos.config', 'pos_config_printer_rel', 'printer_id', 'config_id' -
printer_typeSelectiondefault='iot'selection=[('iot', 'Use a printer connected to the IoT Box'), ('epson_epos', 'Use an Epson printer')]string='Printer Type' -
product_categories_idsMany2many → pos.categorystring='Printed Product Categories' args: 'pos.category', 'printer_category_rel', 'printer_id', 'category_id' -
proxy_ipCharhelp="The IP Address or hostname of the Printer's hardware proxy" args: 'Proxy IP Address'
-
use_local_network_access(self)@api.model
-
bank_payment_idsOne2many → account.paymenthelp='Account payments representing aggregated and bank split payments.' args: 'account.payment', 'pos_session_id', 'Bank Payments' -
cash_controlBooleancompute='_compute_cash_control'string='Has Cash Control' -
cash_journal_idMany2one → account.journalcompute='_compute_cash_journal'store=Truestring='Cash Journal' args: 'account.journal' -
cash_real_transactionMonetaryreadonly=Truestring='Transaction' -
cash_register_balance_endMonetarycompute='_compute_cash_balance'help='Opening balance summed to all cash transactions.'readonly=Truestring='Theoretical Closing Balance' -
cash_register_balance_end_realMonetaryreadonly=Truestring='Ending Balance' -
cash_register_balance_startMonetaryreadonly=Truestring='Starting Balance' -
cash_register_differenceMonetarycompute='_compute_cash_balance'help='Difference between the theoretical closing balance and the real closing balance.'readonly=Truestring='Before 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' -
currency_idMany2one → res.currencyreadonly=Falserelated='config_id.currency_id'string='Currency' args: 'res.currency' -
failed_pickingsBooleancompute='_compute_picking_count' -
is_in_company_currencyBooleancompute='_compute_is_in_company_currency' args: 'Is Using Company Currency' -
move_idMany2one → account.moveindex=Truestring='Journal Entry' args: 'account.move' -
nameChardefault='/'readonly=Truestring='Session ID' -
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' -
picking_countIntegercompute='_compute_picking_count' -
picking_idsOne2many → stock.pickingargs: 'stock.picking', 'pos_session_id' -
rescueBooleancopy=Falsehelp='Auto-generated session for orphan orders, ignored in constraints'readonly=Truestring='Recovery Session' -
start_atDatetimereadonly=Truestring='Opening Date' -
stateSelectioncopy=Falsedefault='opening_control'index=Truereadonly=Truerequired=Truestring='Status' args: POS_SESSION_STATE -
statement_line_idsOne2many → account.bank.statement.linereadonly=Truestring='Cash Lines' args: 'account.bank.statement.line', 'pos_session_id' -
stop_atDatetimecopy=Falsereadonly=Truestring='Closing Date' -
total_payments_amountFloatcompute='_compute_total_payments_amount'string='Total Payments Amount' -
update_stock_at_closingBooleanargs: 'Stock should be updated at closing' -
user_idMany2one → res.usersdefault=<expr>index=Trueondelete='restrict'readonly=Falserequired=Truestring='Opened By' args: 'res.users'
-
action_pos_session_close(self, balancing_account=False, amount_to_balance=0, bank_payment_method_diffs=None) -
action_pos_session_closing_control(self, balancing_account=False, amount_to_balance=0, bank_payment_method_diffs=None) -
action_pos_session_open(self) -
action_pos_session_validate(self, balancing_account=False, amount_to_balance=0, bank_payment_method_diffs=None) -
action_show_payments_list(self) -
action_stock_picking(self) -
action_view_order(self) -
close_session_from_ui(self, bank_payment_method_diff_pairs=None)Calling this method will try to close the session. param bank_payment_method_diff_pairs: list[(int, float)] Pairs of payment_method_id and diff_amount which will be used to post loss/profit when closing the session. If successful, it returns {'successful': True} Otherwise, it returns {'successful': False, 'message': str, 'redirect': bool}. 'redirect' is a boolean used to know whether we redirect the user to the back end or not. When necessary, error (i.e. UserError, AccessError) is raised which should redirect the user to the back end. -
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) -
find_product_by_barcode(self, barcode, config_id) -
get_cash_in_out_list(self) -
get_closing_control_data(self) -
get_pos_ui_product_pricelist_item_by_product(self, product_tmpl_ids, product_ids, config_id) -
get_session_orders(self) -
get_total_discount(self) -
load_data(self, models_to_load) -
load_data_params(self) -
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) -
post_closing_cash_details(self, counted_cash)Calling this method will try store the cash details during the session closing. :param counted_cash: float, the total cash the user counted from its cash register If successful, it returns ``{'successful': True}``. Otherwise, it returns ``{'successful': False, 'message': str, 'redirect': bool}`` where ``'redirect'`` is a boolean used to know whether we redirect the user to the back end or not. When necessary, error (i.e. UserError, AccessError) is raised which should redirect the user to the back end. -
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_cash_register(self) -
show_journal_items(self) -
try_cash_in_out(self, _type, amount, reason, partner_id, extras) -
unlink(self) -
update_closing_control_state_session(self, notes) -
write(self, vals)
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'
No public methods.
No new fields.
Public methods (0)No public methods.
-
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 (1)-
action_archive(self)
No new fields.
Public methods (0)No public methods.
-
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='Check if the product should be weighted using the hardware scale integration.'string='To Weigh With Scale'
-
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=0)@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 (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_priceFloataggregator='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' -
dateDatetimereadonly=Truestring='Order Date' -
delay_validationIntegerreadonly=Truestring='Delay Validation' -
invoicedBooleanreadonly=True -
journal_idMany2one → account.journalreadonly=Truestring='Journal' args: 'account.journal' -
marginFloatreadonly=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' -
price_sub_totalFloatreadonly=Truestring='Subtotal w/o discount' -
price_subtotal_exclFloatreadonly=Truestring='Subtotal w/o Tax' -
price_totalFloatreadonly=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_discountFloatreadonly=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_update_stock_quantitiesSelectiondefault='real'help="At the session closing: A picking is created for the entire session when it's closed\n In real time: Each order sent to the server create its own picking"string='Update quantities in stock' args: [('closing', 'At the session closing'), ('real', 'In real time')] -
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'
-
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).
-
account_default_pos_receivable_account_idMany2onecheck_company=Truereadonly=Falserelated='company_id.account_default_pos_receivable_account_id'string='Default Account Receivable (PoS)' -
barcode_nomenclature_idMany2one → barcode.nomenclaturereadonly=Falserelated='company_id.nomenclature_id' args: 'barcode.nomenclature' -
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' -
is_kiosk_modeBooleandefault=Falsestring='Is Kiosk Mode' -
module_pos_adyenBooleanhelp='The transactions are processed by Adyen. Set your Adyen credentials on the related payment method.'string='Adyen 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_terminal_paymentBooleanreadonly=Falserelated='pos_config_id.auto_validate_terminal_payment'string='Automatically validates orders paid with a payment terminal.' -
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='Cash Rounding (PoS)' -
pos_company_has_templateBooleanrelated='pos_config_id.company_has_template' -
pos_config_idMany2one → pos.configdefault=<expr>string='Point of Sale' args: 'pos.config' -
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_preset_idMany2one → pos.presetreadonly=Falserelated='pos_config_id.default_preset_id' args: 'pos.preset' -
pos_epson_printer_ipCharreadonly=Falserelated='pos_config_id.epson_printer_ip' -
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_cashdrawerBooleancompute='_compute_pos_iface_cashdrawer'readonly=Falsestore=Truestring='Cashdrawer' -
pos_iface_electronic_scaleBooleancompute='_compute_pos_iface_electronic_scale'readonly=Falsestore=Truestring='Electronic Scale' -
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_print_skip_screenBooleanreadonly=Falserelated='pos_config_id.iface_print_skip_screen' -
pos_iface_print_via_proxyBooleancompute='_compute_pos_iface_print_via_proxy'readonly=Falsestore=Truestring='Print via Proxy' -
pos_iface_scan_via_proxyBooleancompute='_compute_pos_iface_scan_via_proxy'readonly=Falsestore=Truestring='Scan via Proxy' -
pos_iface_tax_includedSelectionreadonly=Falserelated='pos_config_id.iface_tax_included' -
pos_iface_tipproductBooleanreadonly=Falserelated='pos_config_id.iface_tipproduct' -
pos_invoice_journal_idMany2onereadonly=Falserelated='pos_config_id.invoice_journal_id' -
pos_is_closing_entry_by_productBooleanreadonly=Falserelated='pos_config_id.is_closing_entry_by_product' -
pos_is_header_or_footerBooleanreadonly=Falserelated='pos_config_id.is_header_or_footer' -
pos_is_margins_costs_accessible_to_every_userBooleanreadonly=Falserelated='pos_config_id.is_margins_costs_accessible_to_every_user' -
pos_is_order_printerBooleancompute='_compute_pos_printer'readonly=Falsestore=True -
pos_is_posboxBooleanreadonly=Falserelated='pos_config_id.is_posbox' -
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_order_edit_trackingBooleanreadonly=Falserelated='pos_config_id.order_edit_tracking' -
pos_other_devicesBooleanreadonly=Falserelated='pos_config_id.other_devices' -
pos_payment_method_idsMany2manyreadonly=Falserelated='pos_config_id.payment_method_ids' -
pos_picking_policySelectionreadonly=Falserelated='pos_config_id.picking_policy' -
pos_picking_type_idMany2onereadonly=Falserelated='pos_config_id.picking_type_id' -
pos_pricelist_idMany2one → product.pricelistcompute='_compute_pos_pricelist_id'readonly=Falsestore=Truestring='Default Pricelist' args: 'product.pricelist' -
pos_printer_idsMany2manyreadonly=Falserelated='pos_config_id.printer_ids' -
pos_proxy_ipCharreadonly=Falserelated='pos_config_id.proxy_ip'string='IP Address' -
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_restrict_price_controlBooleanreadonly=Falserelated='pos_config_id.restrict_price_control' -
pos_rounding_methodMany2onereadonly=Falserelated='pos_config_id.rounding_method' -
pos_route_idMany2onereadonly=Falserelated='pos_config_id.route_id' -
pos_selectable_categ_idsMany2many → pos.categorycompute='_compute_pos_selectable_categ_ids' args: 'pos.category' -
pos_set_maximum_differenceBooleanreadonly=Falserelated='pos_config_id.set_maximum_difference' -
pos_ship_laterBooleanreadonly=Falserelated='pos_config_id.ship_later' -
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_product_idMany2one → product.productcompute='_compute_pos_tip_product_id'readonly=Falsestore=Truestring='Tip Product' args: 'product.product' -
pos_trusted_config_idsMany2manydomain="[('id', '!=', pos_config_id), ('module_pos_restaurant', '=', False)]"readonly=Falserelated='pos_config_id.trusted_config_ids' -
pos_use_fast_paymentBooleanreadonly=Falserelated='pos_config_id.use_fast_payment' -
pos_use_presetsBooleanreadonly=Falserelated='pos_config_id.use_presets' -
pos_use_pricelistBooleanreadonly=Falserelated='pos_config_id.use_pricelist' -
pos_warehouse_idMany2onereadonly=Falserelated='pos_config_id.warehouse_id'string='Warehouse (PoS)' -
sale_tax_idMany2one → account.taxcheck_company=Truereadonly=Falserelated='company_id.account_sale_tax_id'string='Default Sale Tax' args: 'account.tax' -
update_stock_quantitiesSelectionreadonly=Falserelated='company_id.point_of_sale_update_stock_quantities'
-
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.
-
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_contact_addressCharcompute='_compute_pos_contact_address' args: 'PoS Address' -
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_view_pos_order(self)This function returns an action that displays the pos orders from partner. -
get_new_partner(self, config_id, domain, offset)@api.model -
open_commercial_entity(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.
-
pos_order_idMany2one → pos.orderindex=True args: 'pos.order' -
pos_session_idMany2one → pos.sessionindex=True args: 'pos.session'
No public methods.
-
has_stock_reports_to_printBooleancompute='_compute_has_stock_reports_to_print'
No public methods.
-
pos_order_idsMany2many → pos.orderstring='PoS Orders' args: 'pos.order', 'stock_reference_pos_order_rel', 'reference_id', 'pos_order_id'
No public methods.
No new fields.
Public methods (0)No public methods.
-
pos_type_idMany2one → stock.picking.typecopy=Falsestring='Point of Sale Operation Type' args: 'stock.picking.type'
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…