| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
digest_digest_view_form |
digest.digest.view.form.inherit.point_of_sale | digest.digest | xpath | 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 | field | 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 | xpath | 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 | field | Inherits product.product_product_tree_view |
product_tag_form_view_inherit_point_of_sale |
product.tag.form.inherit.point.of.sale | product.tag | xpath | Inherits product.product_tag_form_view |
product_template_form_view |
product.template.form.inherit | product.template | xpath | Inherits product.product_template_form_view |
product_template_only_form_view |
product.template.product.form.inherit | product.template | xpath | Inherits product.product_template_only_form_view |
product_template_search_view_pos |
product.template.search.pos.form | product.template | field | Inherits product.product_template_search_view |
product_template_tree_view |
product.template.product.list.inherit | product.template | field | 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 | div | 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 | xpath | Inherits base.res_config_settings_view_form |
stock_reference_pos_view_form |
stock.reference.pos | stock.reference | xpath | 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 | xpath | 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 | div | 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 | xpath | 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 |
No new fields.
Public methods (0)No public methods.
pos_session_id
Many2one → pos.session
copy=False
index='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_ids
One2many → pos.payment.method
string='Point of Sale Payment Methods'
args: 'pos.payment.method', 'journal_id'
action_archive(self)
pos_order_count
Integer
compute='_compute_origin_pos_count'
string='POS Order Count'
pos_order_ids
One2many → pos.order
pos_payment_ids
One2many → pos.payment
pos_refunded_invoice_ids
Many2many → account.move
pos_session_ids
One2many → pos.session
reversed_pos_order_id
Many2one → pos.order
help='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_id
Many2one → account.account
check_company=True
args: 'account.account', 'Forced Outstanding Account'
pos_payment_method_id
Many2one → pos.payment.method
pos_session_id
Many2one → pos.session
index='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.
type
Selection
ondelete={'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_total
Boolean
kpi_pos_total_value
Monetary
compute='_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.
name
Char
pos_config_ids
Many2many → pos.config
string='Point of Sales'
args: 'pos.config'
value
Float
digits=(16, 4)
required=True
args: 'Value'
name_create(self, name)
access_token
Char
copy=False
args: 'Security Token'
create(self, vals_list)
child_ids
One2many → pos.category
string='Children Categories'
args: 'pos.category', 'parent_id'
color
Integer
default=get_default_color
required=False
args: 'Color'
has_image
Boolean
compute='_compute_has_image'
hour_after
Float
default=0.0
help='The product will be available after this hour for online order and self order.'
string='Availability After'
hour_until
Float
default=24.0
help='The product will be available until this hour for online order and self order.'
string='Availability Until'
image_128
Image
max_height=128
max_width=128
related='image_512'
store=True
args: 'Image 128'
image_512
Image
max_height=512
max_width=512
args: 'Image'
name
Char
required=True
string='Category Name'
translate=True
parent_id
Many2one → pos.category
index=True
string='Parent Category'
args: 'pos.category'
sequence
Integer
help='Gives the sequence order when displaying a list of product categories.'
get_default_color(self)
account_id
Many2one → account.account
account_readonly
Boolean
amount_to_balance
Float
message
Text
close_session(self)
access_token
Char
default=<expr>
args: 'Access Token'
active
Boolean
default=True
amount_authorized_diff
Float
help='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_payment
Boolean
default=True
help='Automatically validates orders paid with a payment terminal.'
available_preset_ids
Many2many → pos.preset
string='Available Presets'
args: 'pos.preset'
available_pricelist_ids
Many2many → product.pricelist
help='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_receipt
Boolean
help='Print basic ticket without prices. Can be used for gifts.'
string='Basic Receipt'
cash_control
Boolean
compute='_compute_cash_control'
help='Check the amount of the cashbox at opening and closing.'
string='Advanced Cash Control'
cash_rounding
Boolean
string='Cash Rounding'
company_has_template
Boolean
compute='_compute_company_has_template'
string='Company has chart of accounts'
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
compute='_compute_currency'
compute_sudo=True
store=True
string='Currency'
args: 'res.currency'
current_session_id
Many2one → pos.session
compute='_compute_current_session'
string='Current Session'
args: 'pos.session'
current_session_state
Char
compute='_compute_current_session'
current_user_id
Many2one → res.users
compute='_compute_current_session_user'
string='Current Session Responsible'
args: 'res.users'
customer_display_bg_img
Image
max_height=1920
max_width=1920
string='Background Image'
customer_display_bg_img_name
Char
string='Background Image Name'
default_bill_ids
Many2many → pos.bill
string='Coins/Bills'
args: 'pos.bill'
default_fiscal_position_id
Many2one → account.fiscal.position
string='Default Fiscal Position'
args: 'account.fiscal.position'
default_preset_id
Many2one → pos.preset
string='Default Preset'
args: 'pos.preset'
device_seq_id
Many2one → ir.sequence
copy=False
readonly=True
string='Device Sequence'
args: 'ir.sequence'
epson_printer_ip
Char
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'
fallback_nomenclature_id
Many2one → barcode.nomenclature
string='Fallback Nomenclature'
args: 'barcode.nomenclature'
fast_payment_method_ids
Many2many → pos.payment.method
compute='_compute_fast_payment_method_ids'
help='These payment methods will be available for fast payment'
readonly=False
relation='pos_payment_method_config_fast_validation_relation'
store=True
string='Fast Payment Methods'
args: 'pos.payment.method'
fiscal_position_ids
Many2many → account.fiscal.position
help='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_id
Many2one → res.groups
default=_get_group_pos_manager
help='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_id
Many2one → res.groups
default=_get_group_pos_user
help='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_session
Boolean
compute='_compute_current_session'
iface_available_categ_ids
Many2many → pos.category
help='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_scrollbars
Boolean
help='For imprecise industrial touchscreens.'
args: 'Large Scrollbars'
iface_cashdrawer
Boolean
help='Automatically open the cashdrawer.'
string='Cashdrawer'
iface_electronic_scale
Boolean
help='Enables Electronic Scale integration.'
string='Electronic Scale'
iface_group_by_categ
Boolean
help='Display products grouped by categories.'
args: 'Group products by categories'
iface_print_auto
Boolean
default=False
help='The receipt will automatically be printed at the end of each order.'
string='Automatic Receipt Printing'
iface_print_skip_screen
Boolean
default=True
help='The receipt screen will be skipped if the receipt can be printed automatically.'
string='Skip Preview Screen'
iface_print_via_proxy
Boolean
help='Bypass browser printing and prints via the hardware proxy.'
string='Print via Proxy'
iface_scan_via_proxy
Boolean
help='Enable barcode scanning with a remotely connected barcode scanner and card swiping with a Vantiv card reader.'
string='Scan via Proxy'
iface_tax_included
Selection
default='total'
required=True
string='Tax Display'
args: [('subtotal', 'Tax-Excluded Price'), ('total', 'Tax-Included Price')]
iface_tipproduct
Boolean
string='Product tips'
invoice_journal_id
Many2one → account.journal
check_company=True
default=_default_invoice_journal
domain=[('type', '=', 'sale')]
help='Accounting journal used to create invoices.'
string='Invoice Journal'
args: 'account.journal'
is_closing_entry_by_product
Boolean
help='Display the breakdown of sales lines by product in the automatically generated closing entry.'
string='Closing Entry by product'
is_header_or_footer
Boolean
is_installed_account_accountant
Boolean
compute='_compute_is_installed_account_accountant'
string='Is the Full Accounting Installed'
is_margins_costs_accessible_to_every_user
Boolean
default=False
help='When disabled, only PoS manager can view the margin and cost of product among the Product info.'
string='Margins & Costs'
is_order_printer
Boolean
is_posbox
Boolean
journal_id
Many2one → account.journal
check_company=True
default=_default_sale_journal
domain=[('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_change
Datetime
compute='_compute_local_data_integrity'
readonly=True
store=True
string='Last Write Date'
last_session_closing_cash
Float
compute='_compute_last_session'
last_session_closing_date
Date
compute='_compute_last_session'
limit_categories
Boolean
manual_discount
Boolean
default=True
string='Line Discounts'
module_pos_appointment
Boolean
module_pos_avatax
Boolean
help='Use automatic taxes mapping with Avatax in PoS'
args: 'AvaTax PoS Integration'
module_pos_discount
Boolean
module_pos_hr
Boolean
help='Show employee login screen'
module_pos_restaurant
Boolean
module_pos_sms
Boolean
help='Activate SMS feature for point_of_sale'
string='SMS Enabled'
name
Char
help='An internal identification of the point of sale.'
required=True
string='Point of Sale'
note_ids
Many2many → pos.note
help='The predefined notes of this point of sale.'
string='Note Models'
args: 'pos.note'
number_of_rescue_session
Integer
compute='_compute_current_session'
string='Number of Rescue Session'
only_round_cash_method
Boolean
string='Only apply rounding on cash'
order_backend_seq_id
Many2one → ir.sequence
copy=False
readonly=True
string='Order Backend Sequence'
args: 'ir.sequence'
order_edit_tracking
Boolean
default=False
help='Store edited orders in the backend'
string='Track orders edits'
order_line_seq_id
Many2one → ir.sequence
copy=False
readonly=True
string='Order Line Sequence'
args: 'ir.sequence'
order_seq_id
Many2one → ir.sequence
copy=False
readonly=True
string='Order Sequence'
args: 'ir.sequence'
other_devices
Boolean
help='Connect devices to your PoS without an IoT Box.'
string='Other Devices'
payment_method_ids
Many2many → pos.payment.method
copy=False
default=<expr>
string='Payment Methods'
args: 'pos.payment.method'
picking_policy
Selection
default='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=True
string='Shipping Policy'
args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')]
picking_type_id
Many2one → stock.picking.type
default=_default_picking_type_id
domain=<expr>
ondelete='restrict'
required=True
string='Operation Type'
args: 'stock.picking.type'
pos_session_duration
Char
compute='_compute_current_session_user'
pos_session_state
Char
compute='_compute_current_session_user'
pos_session_username
Char
compute='_compute_current_session_user'
pricelist_id
Many2one → product.pricelist
help='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_ids
Many2many → pos.printer
string='Order Printers'
args: 'pos.printer', 'pos_config_printer_rel', 'config_id', 'printer_id'
proxy_ip
Char
help='The hostname or ip address of the hardware proxy, Will be autodetected if left empty.'
size=45
string='IP Address'
receipt_footer
Text
help='A short text that will be inserted as a footer in the printed receipt.'
string='Receipt Footer'
receipt_header
Text
help='A short text that will be inserted as a header in the printed receipt.'
string='Receipt Header'
restrict_price_control
Boolean
help='Only users with Manager access rights for PoS app can modify the product prices on orders.'
string='Restrict Price Modifications to Managers'
rounding_method
Many2one → account.cash.rounding
string='Cash rounding'
args: 'account.cash.rounding'
route_id
Many2one → stock.route
string='Spefic route for products delivered later.'
args: 'stock.route'
session_ids
One2many → pos.session
string='Sessions'
args: 'pos.session', 'config_id'
set_maximum_difference
Boolean
help='Set a maximum difference allowed between the expected and counted money during the closing of the session.'
args: 'Set Maximum Difference'
ship_later
Boolean
string='Ship Later'
show_category_images
Boolean
default=True
help='Show category images in the Point of Sale interface.'
string='Show Category Images'
show_product_images
Boolean
default=True
help='Show product images in the Point of Sale interface.'
string='Show Product Images'
statistics_for_current_session
Json
compute='_compute_statistics_for_session'
string='Session Statistics'
tax_regime_selection
Boolean
tip_product_id
Many2one → product.product
default=_get_default_tip_product
help='This product is used as reference on customer receipts.'
string='Tip Product'
args: 'product.product'
trusted_config_ids
Many2many → pos.config
column1='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_payment
Boolean
help='Enable fast payment methods to validate orders on the product screen.'
args: 'Fast Payment Validation'
use_presets
Boolean
use_pricelist
Boolean
uuid
Char
copy=False
default=<expr>
help='A globally unique identifier for this pos configuration, used to prevent conflicts in client-generated data.'
readonly=True
warehouse_id
Many2one → stock.warehouse
compute='_compute_warehouse_id'
ondelete='restrict'
precompute=True
readonly=False
store=True
args: 'stock.warehouse'
action_pos_config_modal_edit(self)
close_ui(self)
create(self, vals_list)
execute(self)
get_limited_partners_loading(self, offset=0)
get_limited_product_count(self)
get_pos_kanban_view_state(self)
get_product_loading_info(self)
get_record_by_ref(self, recordRefs)
get_statistics_for_session(self, session)
install_pos_restaurant(self)
load_demo_data(self)
load_onboarding_bakery_scenario(self, with_demo_data=True)
load_onboarding_clothes_scenario(self, with_demo_data=True)
load_onboarding_furniture_scenario(self, with_demo_data=True)
load_onboarding_retail_scenario(self, with_demo_data=False)
notify_synchronisation(self, session_id, device_identifier, records={})
open_existing_session_cb(self)
open_opened_rescue_session_form(self)
open_ui(self)
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)
message
Text
default=_default_message
readonly=True
action_confirm(self)
get_selected_orders(self)
pos_session_id
Many2one → pos.session
required=True
args: 'pos.session'
generate_report(self)
end_date
Datetime
default=fields.Datetime.now
required=True
pos_config_ids
Many2many → pos.config
default=<expr>
args: 'pos.config', 'pos_detail_configs'
start_date
Datetime
default=_default_start_date
required=True
generate_report(self)
No new fields.
Public methods (0)No public methods.
consolidated_billing
Boolean
default=True
help='Create one invoice for all orders related to same customer and same invoicing address'
string='Consolidated Billing'
count
Integer
compute='_compute_order_count'
string='Order Count'
action_create_invoices(self)
amount
Float
default=_default_amount
digits=0
required=True
config_id
Many2one → pos.config
default=_default_config
required=True
string='Point of Sale Configuration'
args: 'pos.config'
payment_date
Datetime
default=<expr>
required=True
string='Payment Date'
payment_method_id
Many2one → pos.payment.method
default=_default_payment_method
required=True
string='Payment Method'
args: 'pos.payment.method'
payment_name
Char
string='Payment Reference'
check(self)
launch_payment(self)
color
Integer
string='Color'
name
Char
required=True
sequence
Integer
default=1
args: 'Sequence'
No public methods.
account_move
Many2one → account.move
copy=False
index='btree_not_null'
readonly=True
string='Invoice'
args: 'account.move'
amount_difference
Monetary
readonly=True
string='Difference'
amount_paid
Monetary
required=True
string='Paid'
amount_return
Monetary
readonly=True
required=True
string='Returned'
amount_tax
Monetary
readonly=True
required=True
string='Taxes'
amount_total
Monetary
readonly=True
required=True
string='Total'
available_payment_method_ids
Many2many → pos.payment.method
readonly=True
related='config_id.payment_method_ids'
store=False
string='Available Payment Methods'
args: 'pos.payment.method'
company_id
Many2one → res.company
index=True
readonly=True
required=True
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
compute='_compute_order_config_id'
readonly=False
store=True
string='Point of Sale'
args: 'pos.config'
country_code
Char
related='company_id.account_fiscal_country_id.code'
currency_id
Many2one → res.currency
related='config_id.currency_id'
string='Currency'
args: 'res.currency'
currency_rate
Float
compute='_compute_currency_rate'
compute_sudo=True
digits=0
help='The rate of the currency to the currency of rate applicable at the date of the order'
readonly=True
store=True
args: 'Currency Rate'
date_order
Datetime
default=fields.Datetime.now
index=True
readonly=True
string='Date'
email
Char
compute='_compute_contact_details'
readonly=False
store=True
string='Email'
failed_pickings
Boolean
compute='_compute_picking_count'
fiscal_position_id
Many2one → account.fiscal.position
comodel_name='account.fiscal.position'
readonly=False
string='Fiscal Position'
floating_order_name
Char
string='Order Name'
general_customer_note
Text
string='General Customer Note'
has_deleted_line
Boolean
string='Has Deleted Line'
has_refundable_lines
Boolean
compute='_compute_has_refundable_lines'
args: 'Has Refundable Lines'
internal_note
Text
string='Internal Note'
invoice_status
Selection
compute='_compute_invoice_status'
string='Invoice Status'
args: [('invoiced', 'Fully Invoiced'), ('to_invoice', 'To Invoice')]
is_edited
Boolean
compute='_compute_is_edited'
string='Edited'
is_invoiced
Boolean
compute='_compute_is_invoiced'
args: 'Is Invoiced'
is_refund
Boolean
default=False
readonly=True
string='Is Refund'
is_tipped
Boolean
readonly=True
args: 'Is this already tipped?'
is_total_cost_computed
Boolean
compute='_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_change
Char
help='Last printed state of the order'
string='Last preparation change'
lines
One2many → pos.order.line
copy=True
string='Order Lines'
args: 'pos.order.line', 'order_id'
margin
Monetary
compute='_compute_margin'
string='Margin'
margin_percent
Float
compute='_compute_margin'
digits=(12, 4)
string='Margin (%)'
mobile
Char
compute='_compute_contact_details'
readonly=False
store=True
string='Mobile'
name
Char
copy=False
default='/'
readonly=True
required=True
string='Order Ref'
nb_print
Integer
copy=False
default=0
readonly=True
string='Number of Print'
order_edit_tracking
Boolean
readonly=True
related='config_id.order_edit_tracking'
partner_id
Many2one → res.partner
change_default=True
index='btree_not_null'
string='Customer'
args: 'res.partner'
payment_ids
One2many → pos.payment
string='Payments'
args: 'pos.payment', 'pos_order_id'
picking_count
Integer
compute='_compute_picking_count'
picking_ids
One2many → stock.picking
picking_type_id
Many2one → stock.picking.type
readonly=False
related='session_id.config_id.picking_type_id'
string='Operation Type'
args: 'stock.picking.type'
pos_reference
Char
copy=False
index=True
readonly=True
string='Receipt Number'
preset_id
Many2one → pos.preset
string='Preset'
args: 'pos.preset'
preset_time
Datetime
help='Hour of the day for the order'
string='Hour'
pricelist_id
Many2one → product.pricelist
string='Pricelist'
args: 'product.pricelist'
refund_orders_count
Integer
compute='_compute_refund_related_fields'
help='Number of orders where items from this order were refunded'
args: 'Number of Refund Orders'
refunded_order_id
Many2one → pos.order
compute='_compute_refund_related_fields'
help='Order from which items were refunded in this order'
args: 'pos.order'
reversed_move_ids
One2many → account.move
help='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_journal
Many2one → account.journal
ondelete='restrict'
readonly=True
related='session_id.config_id.journal_id'
store=True
string='Sales Journal'
args: 'account.journal'
sequence_number
Integer
copy=False
help='A session-unique sequence number for the order. Negative if generated from the client'
string='Sequence Number'
session_id
Many2one → pos.session
domain="[('state', '=', 'opened')]"
index=True
string='Session'
args: 'pos.session'
session_move_id
Many2one → account.move
copy=False
readonly=True
related='session_id.move_id'
string='Session Journal Entry'
args: 'account.move'
shipping_date
Date
source
Selection
default='pos'
selection=[('pos', 'Point of Sale')]
string='Origin'
state
Selection
copy=False
default='draft'
index=True
readonly=True
args: [('draft', 'New'), ('cancel', 'Cancelled'), ('paid', 'Paid'), ('done', 'Posted')], 'Status'
stock_reference_ids
Many2many → stock.reference
string='Reference'
args: 'stock.reference', 'stock_reference_pos_order_rel', 'pos_order_id', 'reference_id'
ticket_code
Char
help='5 digits alphanumeric code to be used by portal user to request an invoice'
tip_amount
Monetary
readonly=True
string='Tip Amount'
to_invoice
Boolean
copy=False
args: 'To invoice'
tracking_number
Char
copy=False
readonly=True
string='Order Number'
user_id
Many2one → res.users
comodel_name='res.users'
default=<expr>
help='Employee who uses the cash register.'
string='Employee'
uuid
Char
copy=False
default=<expr>
readonly=True
string='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(self, vals_list)
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)
read_pos_orders(self, domain=False)
refund(self)
remove_from_ui(self, server_ids)
search_paid_order_ids(self, config_id, domain, limit, offset)
sync_from_ui(self, orders)
write(self, vals)
attribute_value_ids
Many2many → product.template.attribute.value
string='Selected Attributes'
args: 'product.template.attribute.value'
combo_item_id
Many2one → product.combo.item
string='Combo Item'
args: 'product.combo.item'
combo_line_ids
One2many → pos.order.line
string='Combo Lines'
args: 'pos.order.line', 'combo_parent_id'
combo_parent_id
Many2one → pos.order.line
index='btree_not_null'
string='Combo Parent'
args: 'pos.order.line'
company_id
Many2one → res.company
related='order_id.company_id'
store=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
related='order_id.currency_id'
args: 'res.currency'
custom_attribute_value_ids
One2many → product.attribute.custom.value
comodel_name='product.attribute.custom.value'
inverse_name='pos_order_line_id'
readonly=False
store=True
string='Custom Values'
customer_note
Char
discount
Float
default=0.0
digits=0
string='Discount (%)'
extra_tax_data
Json
full_product_name
Char
is_edited
Boolean
default=False
args: 'Edited'
is_total_cost_computed
Boolean
help='Allows to know if the total cost has already been computed or not'
margin
Monetary
compute='_compute_margin'
string='Margin'
margin_percent
Float
compute='_compute_margin'
digits=(12, 4)
string='Margin (%)'
name
Char
copy=False
required=True
string='Line No'
note
Char
notice
Char
string='Discount Notice'
order_id
Many2one → pos.order
index=True
ondelete='cascade'
required=True
string='Order Ref'
args: 'pos.order'
pack_lot_ids
One2many → pos.pack.operation.lot
string='Lot/serial Number'
args: 'pos.pack.operation.lot', 'pos_order_line_id'
price_extra
Float
string='Price extra'
price_subtotal
Monetary
readonly=True
required=True
string='Tax Excl.'
price_subtotal_incl
Monetary
readonly=True
required=True
string='Tax Incl.'
price_type
Selection
default='original'
string='Price Type'
args: [('original', 'Original'), ('manual', 'Manual'), ('automatic', 'Automatic')]
price_unit
Float
digits=0
string='Unit Price'
product_id
Many2one → product.product
change_default=True
domain=[('sale_ok', '=', True)]
required=True
string='Product'
args: 'product.product'
product_uom_id
Many2one → uom.uom
related='product_id.uom_id'
string='Product Unit'
args: 'uom.uom'
qty
Float
default=1
digits='Product Unit'
args: 'Quantity'
refund_orderline_ids
One2many → pos.order.line
help='Orderlines in this field are the lines that refunded this orderline.'
args: 'pos.order.line', 'refunded_orderline_id', 'Refund Order Lines'
refunded_orderline_id
Many2one → pos.order.line
help='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_qty
Float
compute='_compute_refund_qty'
help='Number of items refunded in this orderline.'
args: 'Refunded Quantity'
tax_ids
Many2many → account.tax
readonly=True
string='Taxes'
args: 'account.tax'
tax_ids_after_fiscal_position
Many2many → account.tax
compute='_get_tax_ids_after_fiscal_position'
string='Taxes to Apply'
args: 'account.tax'
total_cost
Float
min_display_digits='Product Price'
readonly=True
string='Total cost'
uuid
Char
copy=False
default=<expr>
readonly=True
string='Uuid'
create(self, vals_list)
get_existing_lots(self, company_id, config_id, product_id)
unlink(self)
write(self, vals)
lot_name
Char
order_id
Many2one → pos.order
readonly=False
related='pos_order_line_id.order_id'
args: 'pos.order'
pos_order_line_id
Many2one → pos.order.line
index='btree_not_null'
args: 'pos.order.line'
product_id
Many2one → product.product
readonly=False
related='pos_order_line_id.product_id'
args: 'product.product'
No public methods.
account_move_id
Many2one → account.move
index='btree_not_null'
args: 'account.move'
amount
Monetary
currency_field='currency_id'
help='Total amount of the payment.'
required=True
string='Amount'
card_brand
Char
help='The brand of the payment card (e.g. Visa, AMEX, ...)'
string='Brand of card'
card_no
Char
string='Card Number(Last 4 Digit)'
card_type
Char
help='The type of the payment card (e.g. CREDIT CARD OR DEBIT CARD)'
string='Type of card used'
cardholder_name
Char
string='Card Owner name'
company_id
Many2one → res.company
related='pos_order_id.company_id'
store=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
related='pos_order_id.currency_id'
string='Currency'
args: 'res.currency'
currency_rate
Float
help='Conversion rate from company currency to order currency.'
related='pos_order_id.currency_rate'
string='Conversion Rate'
is_change
Boolean
default=False
string='Is this payment change?'
name
Char
readonly=True
string='Label'
partner_id
Many2one → res.partner
related='pos_order_id.partner_id'
string='Customer'
args: 'res.partner'
payment_date
Datetime
default=<expr>
readonly=True
required=True
string='Date'
payment_method_authcode
Char
string='Payment APPR Code'
payment_method_id
Many2one → pos.payment.method
required=True
string='Payment Method'
args: 'pos.payment.method'
payment_method_issuer_bank
Char
string='Payment Issuer Bank'
payment_method_payment_mode
Char
string='Payment Mode'
payment_ref_no
Char
help='Payment reference number from payment provider terminal'
string='Payment reference number'
payment_status
Char
string='Payment Status'
pos_order_id
Many2one → pos.order
index=True
ondelete='cascade'
required=True
string='Order'
args: 'pos.order'
session_id
Many2one → pos.session
index=True
related='pos_order_id.session_id'
store=True
string='Session'
args: 'pos.session'
ticket
Char
string='Payment Receipt Info'
transaction_id
Char
string='Payment Transaction ID'
user_id
Many2one → res.users
related='session_id.user_id'
string='Employee'
args: 'res.users'
uuid
Char
copy=False
default=<expr>
readonly=True
string='Uuid'
No public methods.
active
Boolean
default=True
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
config_ids
Many2many → pos.config
string='Point of Sale'
args: 'pos.config'
default_pos_receivable_account_name
Char
related='company_id.account_default_pos_receivable_account_id.display_name'
string='Default Receivable Account Name'
default_qr
Char
compute='_compute_qr'
hide_qr_code_method
Boolean
compute='_compute_hide_qr_code_method'
hide_use_payment_terminal
Boolean
compute='_compute_hide_use_payment_terminal'
image
Image
max_height=50
max_width=50
args: 'Image'
is_cash_count
Boolean
compute='_compute_is_cash_count'
store=True
string='Cash'
journal_id
Many2one → account.journal
check_company=True
domain=['|', '&', ('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'
name
Char
help='Defines the name of the payment method that will be displayed in the Point of Sale when the payments are selected.'
required=True
string='Method'
translate=True
open_session_ids
Many2many → pos.session
compute='_compute_open_session_ids'
help='Open PoS sessions that are using this payment method.'
string='Pos Sessions'
args: 'pos.session'
outstanding_account_id
Many2one → account.account
help='Account used as outstanding account when creating accounting payment records for bank payments.'
ondelete='restrict'
string='Outstanding Account'
args: 'account.account'
payment_method_type
Selection
default='none'
required=True
selection=<expr>
string='Integration'
qr_code_method
Selection
copy=False
help='Type of QR-code to be generated for this payment method.'
selection=<expr>
string='QR Code Format'
receivable_account_id
Many2one → account.account
domain=[('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'
sequence
Integer
copy=False
split_transactions
Boolean
default=False
help='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'
type
Selection
compute='_compute_type'
selection=[('cash', 'Cash'), ('bank', 'Bank'), ('pay_later', 'Customer Account')]
use_payment_terminal
Selection
help='Record payments with a terminal on this journal.'
selection=<expr>
string='Use a Payment Terminal'
copy_data(self, default=None)
create(self, vals_list)
get_provider_status(self, modules_list)
get_qr_code(self, amount, free_communication, structured_communication, currency, debtor_partner)
write(self, vals)
attendance_ids
One2many
readonly=False
related='resource_calendar_id.attendance_ids'
string='Attendances'
color
Integer
default=0
string='Color'
count_linked_config
Integer
compute='_compute_count_linked_config'
count_linked_orders
Integer
compute='_compute_count_linked_orders'
fiscal_position_id
Many2one → account.fiscal.position
string='Fiscal Position'
args: 'account.fiscal.position'
has_image
Boolean
compute='_compute_has_image'
identification
Selection
default='none'
required=True
string='Identification'
args: [('none', 'Not required'), ('address', 'Address'), ('name', 'Name')]
image_128
Image
max_height=128
max_width=128
related='image_512'
store=True
string='Image 128'
image_512
Image
max_height=512
max_width=512
string='Image'
interval_time
Integer
default=20
string='Interval time (in min)'
is_return
Boolean
default=False
help='All quantity in the cart will be in negative. Ideal for return managment.'
string='Return mode'
name
Char
required=True
string='Label'
translate=True
pricelist_id
Many2one → product.pricelist
string='Pricelist'
args: 'product.pricelist'
resource_calendar_id
Many2one → resource.calendar
slots_per_interval
Integer
default=5
string='Capacity'
use_timing
Boolean
default=False
string='Manage orders by time'
action_open_linked_config(self)
action_open_linked_orders(self)
get_available_slots(self)
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
epson_printer_ip
Char
default='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'
name
Char
default='Printer'
help='An internal identification of the printer'
required=True
args: 'Printer Name'
pos_config_ids
Many2many → pos.config
printer_type
Selection
default='iot'
selection=[('iot', 'Use a printer connected to the IoT Box'), ('epson_epos', 'Use an Epson printer')]
string='Printer Type'
product_categories_ids
Many2many → pos.category
string='Printed Product Categories'
args: 'pos.category', 'printer_category_rel', 'printer_id', 'category_id'
proxy_ip
Char
help="The IP Address or hostname of the Printer's hardware proxy"
args: 'Proxy IP Address'
use_local_network_access(self)
bank_payment_ids
One2many → account.payment
help='Account payments representing aggregated and bank split payments.'
args: 'account.payment', 'pos_session_id', 'Bank Payments'
cash_control
Boolean
compute='_compute_cash_control'
string='Has Cash Control'
cash_journal_id
Many2one → account.journal
compute='_compute_cash_journal'
store=True
string='Cash Journal'
args: 'account.journal'
cash_real_transaction
Monetary
readonly=True
string='Transaction'
cash_register_balance_end
Monetary
compute='_compute_cash_balance'
help='Opening balance summed to all cash transactions.'
readonly=True
string='Theoretical Closing Balance'
cash_register_balance_end_real
Monetary
readonly=True
string='Ending Balance'
cash_register_balance_start
Monetary
readonly=True
string='Starting Balance'
cash_register_difference
Monetary
compute='_compute_cash_balance'
help='Difference between the theoretical closing balance and the real closing balance.'
readonly=True
string='Before Closing Difference'
closing_notes
Text
string='Closing Notes'
company_id
Many2one → res.company
readonly=True
related='config_id.company_id'
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
index=True
required=True
string='Point of Sale'
args: 'pos.config'
currency_id
Many2one → res.currency
readonly=False
related='config_id.currency_id'
string='Currency'
args: 'res.currency'
failed_pickings
Boolean
compute='_compute_picking_count'
is_in_company_currency
Boolean
compute='_compute_is_in_company_currency'
args: 'Is Using Company Currency'
move_id
Many2one → account.move
index=True
string='Journal Entry'
args: 'account.move'
name
Char
default='/'
readonly=True
string='Session ID'
opening_notes
Text
string='Opening Notes'
order_count
Integer
compute='_compute_order_count'
order_ids
One2many → pos.order
string='Orders'
args: 'pos.order', 'session_id'
payment_method_ids
Many2many → pos.payment.method
related='config_id.payment_method_ids'
string='Payment Methods'
args: 'pos.payment.method'
picking_count
Integer
compute='_compute_picking_count'
picking_ids
One2many → stock.picking
rescue
Boolean
copy=False
help='Auto-generated session for orphan orders, ignored in constraints'
readonly=True
string='Recovery Session'
start_at
Datetime
readonly=True
string='Opening Date'
state
Selection
copy=False
default='opening_control'
index=True
readonly=True
required=True
string='Status'
args: POS_SESSION_STATE
statement_line_ids
One2many → account.bank.statement.line
readonly=True
string='Cash Lines'
args: 'account.bank.statement.line', 'pos_session_id'
stop_at
Datetime
copy=False
readonly=True
string='Closing Date'
total_payments_amount
Float
compute='_compute_total_payments_amount'
string='Total Payments Amount'
update_stock_at_closing
Boolean
user_id
Many2one → res.users
default=<expr>
index=True
ondelete='restrict'
readonly=False
required=True
string='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)
create(self, vals_list)
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)
post_close_register_message(self)
post_closing_cash_details(self, counted_cash)
set_opening_control(self, cashbox_value: int, notes: str)
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_id
Many2one → pos.order.line
index='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_free
Integer
default=1
help='Number of free items included in the combo.'
string='Free quantity'
qty_max
Integer
default=1
help='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_image
Boolean
compute='_compute_has_image'
pos_description
Html
string='Description'
translate=True
write(self, vals)
available_in_pos
Boolean
default=False
help='Check if you want this product to appear in the Point of Sale.'
string='Available in POS'
color
Integer
compute='_compute_color'
readonly=False
store=True
args: 'Color Index'
pos_categ_ids
Many2many → pos.category
help='Category used in the Point of Sale.'
string='Point of Sale Category'
args: 'pos.category'
pos_optional_product_ids
Many2many → product.template
column1='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_sequence
Integer
copy=False
default=_default_pos_sequence
help='Determine the display order in the POS Terminal'
string='POS Sequence'
public_description
Html
string='Product Description'
translate=True
to_weight
Boolean
help='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)
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)
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)
average_price
Float
aggregator='avg'
readonly=True
string='Average Price'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
readonly=True
string='Point of Sale'
args: 'pos.config'
date
Datetime
readonly=True
string='Order Date'
delay_validation
Integer
readonly=True
string='Delay Validation'
invoiced
Boolean
readonly=True
journal_id
Many2one → account.journal
readonly=True
string='Journal'
args: 'account.journal'
margin
Float
readonly=True
string='Margin'
nbr_lines
Integer
readonly=True
string='Sale Line Count'
order_id
Many2one → pos.order
readonly=True
string='Order'
args: 'pos.order'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
payment_method_id
Many2one → pos.payment.method
readonly=True
string='Payment Method'
args: 'pos.payment.method'
pos_categ_id
Many2one → pos.category
readonly=True
string='Point of Sale Category'
args: 'pos.category'
price_sub_total
Float
readonly=True
string='Subtotal w/o discount'
price_subtotal_excl
Float
readonly=True
string='Subtotal w/o Tax'
price_total
Float
readonly=True
string='Total Price'
pricelist_id
Many2one → product.pricelist
readonly=True
string='Pricelist'
args: 'product.pricelist'
product_categ_id
Many2one → product.category
readonly=True
string='Product Category'
args: 'product.category'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_qty
Integer
readonly=True
string='Product Quantity'
product_tmpl_id
Many2one → product.template
readonly=True
string='Product Template'
args: 'product.template'
session_id
Many2one → pos.session
readonly=True
string='Session'
args: 'pos.session'
state
Selection
readonly=True
string='Status'
args: [('draft', 'New'), ('paid', 'Paid'), ('done', 'Posted'), ('cancel', 'Cancelled')]
total_discount
Float
readonly=True
string='Total Discount'
user_id
Many2one → res.users
readonly=True
string='User'
args: 'res.users'
init(self)
point_of_sale_ticket_portal_url_display_mode
Selection
default='qr_code_and_url'
help='Choose how the URL to the portal will be print on the receipt.'
required=True
string='Print'
args: [('qr_code', 'QR code'), ('url', 'URL'), ('qr_code_and_url', 'QR code + URL')]
point_of_sale_ticket_unique_code
Boolean
help='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_quantities
Selection
default='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_code
Boolean
default=True
help="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)
account_default_pos_receivable_account_id
Many2one
check_company=True
readonly=False
related='company_id.account_default_pos_receivable_account_id'
string='Default Account Receivable (PoS)'
barcode_nomenclature_id
Many2one → barcode.nomenclature
readonly=False
related='company_id.nomenclature_id'
args: 'barcode.nomenclature'
group_pos_preset
Boolean
help='Hide or show the Presets menu in the Point of Sale configuration.'
implied_group='point_of_sale.group_pos_preset'
string='Presets'
is_kiosk_mode
Boolean
default=False
string='Is Kiosk Mode'
module_pos_adyen
Boolean
help='The transactions are processed by Adyen. Set your Adyen credentials on the related payment method.'
string='Adyen Payment Terminal'
module_pos_mercado_pago
Boolean
help='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_labs
Boolean
help='The transactions are processed by Pine Labs. Set your Pine Labs credentials on the related payment method.'
string='Pine Labs Payment Terminal'
module_pos_pricer
Boolean
help='Display the price of your products through electronic price tags'
string='Pricer electronic price tags'
module_pos_qfpay
Boolean
help='The transactions are processed by QFPay. Set your QFPay credentials on the related payment method.'
string='QFPay Payment Terminal'
module_pos_razorpay
Boolean
help='The transactions are processed by Razorpay. Set your Razorpay credentials on the related payment method.'
string='Razorpay Payment Terminal'
module_pos_stripe
Boolean
help='The transactions are processed by Stripe. Set your Stripe credentials on the related payment method.'
string='Stripe Payment Terminal'
module_pos_viva_com
Boolean
help='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_mode
Selection
readonly=False
related='company_id.point_of_sale_ticket_portal_url_display_mode'
required=True
point_of_sale_ticket_unique_code
Boolean
readonly=False
related='company_id.point_of_sale_ticket_unique_code'
point_of_sale_use_ticket_qr_code
Boolean
readonly=False
related='company_id.point_of_sale_use_ticket_qr_code'
pos_allowed_pricelist_ids
Many2many → product.pricelist
compute='_compute_pos_allowed_pricelist_ids'
args: 'product.pricelist'
pos_amount_authorized_diff
Float
readonly=False
related='pos_config_id.amount_authorized_diff'
pos_auto_validate_terminal_payment
Boolean
readonly=False
related='pos_config_id.auto_validate_terminal_payment'
string='Automatically validates orders paid with a payment terminal.'
pos_available_preset_ids
Many2many → pos.preset
readonly=False
related='pos_config_id.available_preset_ids'
args: 'pos.preset'
pos_available_pricelist_ids
Many2many → product.pricelist
compute='_compute_pos_pricelist_id'
readonly=False
store=True
string='Available Pricelists'
args: 'product.pricelist'
pos_basic_receipt
Boolean
readonly=False
related='pos_config_id.basic_receipt'
pos_cash_control
Boolean
related='pos_config_id.cash_control'
pos_cash_rounding
Boolean
readonly=False
related='pos_config_id.cash_rounding'
string='Cash Rounding (PoS)'
pos_company_has_template
Boolean
related='pos_config_id.company_has_template'
pos_config_id
Many2one → pos.config
default=<expr>
string='Point of Sale'
args: 'pos.config'
pos_customer_display_bg_img
Image
readonly=False
related='pos_config_id.customer_display_bg_img'
pos_customer_display_bg_img_name
Char
readonly=False
related='pos_config_id.customer_display_bg_img_name'
pos_default_bill_ids
Many2many
readonly=False
related='pos_config_id.default_bill_ids'
pos_default_fiscal_position_id
Many2one → account.fiscal.position
check_company=True
compute='_compute_pos_fiscal_positions'
readonly=False
store=True
string='Default Fiscal Position'
args: 'account.fiscal.position'
pos_default_preset_id
Many2one → pos.preset
readonly=False
related='pos_config_id.default_preset_id'
args: 'pos.preset'
pos_epson_printer_ip
Char
readonly=False
related='pos_config_id.epson_printer_ip'
pos_fallback_nomenclature_id
Many2one
domain="[('id', '!=', barcode_nomenclature_id)]"
readonly=False
related='pos_config_id.fallback_nomenclature_id'
pos_fast_payment_method_ids
Many2many
readonly=False
related='pos_config_id.fast_payment_method_ids'
pos_fiscal_position_ids
Many2many → account.fiscal.position
check_company=True
compute='_compute_pos_fiscal_positions'
readonly=False
store=True
string='Fiscal Positions'
args: 'account.fiscal.position'
pos_has_active_session
Boolean
related='pos_config_id.has_active_session'
pos_iface_available_categ_ids
Many2many → pos.category
compute='_compute_pos_iface_available_categ_ids'
readonly=False
store=True
string='Available PoS Product Categories'
args: 'pos.category'
pos_iface_big_scrollbars
Boolean
readonly=False
related='pos_config_id.iface_big_scrollbars'
pos_iface_cashdrawer
Boolean
compute='_compute_pos_iface_cashdrawer'
readonly=False
store=True
string='Cashdrawer'
pos_iface_electronic_scale
Boolean
compute='_compute_pos_iface_electronic_scale'
readonly=False
store=True
string='Electronic Scale'
pos_iface_group_by_categ
Boolean
readonly=False
related='pos_config_id.iface_group_by_categ'
pos_iface_print_auto
Boolean
readonly=False
related='pos_config_id.iface_print_auto'
pos_iface_print_skip_screen
Boolean
readonly=False
related='pos_config_id.iface_print_skip_screen'
pos_iface_print_via_proxy
Boolean
compute='_compute_pos_iface_print_via_proxy'
readonly=False
store=True
string='Print via Proxy'
pos_iface_scan_via_proxy
Boolean
compute='_compute_pos_iface_scan_via_proxy'
readonly=False
store=True
string='Scan via Proxy'
pos_iface_tax_included
Selection
readonly=False
related='pos_config_id.iface_tax_included'
pos_iface_tipproduct
Boolean
readonly=False
related='pos_config_id.iface_tipproduct'
pos_invoice_journal_id
Many2one
readonly=False
related='pos_config_id.invoice_journal_id'
pos_is_closing_entry_by_product
Boolean
readonly=False
related='pos_config_id.is_closing_entry_by_product'
pos_is_header_or_footer
Boolean
readonly=False
related='pos_config_id.is_header_or_footer'
pos_is_margins_costs_accessible_to_every_user
Boolean
readonly=False
related='pos_config_id.is_margins_costs_accessible_to_every_user'
pos_is_order_printer
Boolean
compute='_compute_pos_printer'
readonly=False
store=True
pos_is_posbox
Boolean
readonly=False
related='pos_config_id.is_posbox'
pos_journal_id
Many2one
readonly=False
related='pos_config_id.journal_id'
pos_limit_categories
Boolean
readonly=False
related='pos_config_id.limit_categories'
pos_manual_discount
Boolean
readonly=False
related='pos_config_id.manual_discount'
pos_module_pos_appointment
Boolean
readonly=False
related='pos_config_id.module_pos_appointment'
pos_module_pos_avatax
Boolean
readonly=False
related='pos_config_id.module_pos_avatax'
pos_module_pos_discount
Boolean
readonly=False
related='pos_config_id.module_pos_discount'
pos_module_pos_hr
Boolean
readonly=False
related='pos_config_id.module_pos_hr'
pos_module_pos_restaurant
Boolean
readonly=False
related='pos_config_id.module_pos_restaurant'
pos_module_pos_sms
Boolean
readonly=False
related='pos_config_id.module_pos_sms'
pos_note_ids
Many2many
readonly=False
related='pos_config_id.note_ids'
pos_only_round_cash_method
Boolean
readonly=False
related='pos_config_id.only_round_cash_method'
pos_order_edit_tracking
Boolean
readonly=False
related='pos_config_id.order_edit_tracking'
pos_other_devices
Boolean
readonly=False
related='pos_config_id.other_devices'
pos_payment_method_ids
Many2many
readonly=False
related='pos_config_id.payment_method_ids'
pos_picking_policy
Selection
readonly=False
related='pos_config_id.picking_policy'
pos_picking_type_id
Many2one
readonly=False
related='pos_config_id.picking_type_id'
pos_pricelist_id
Many2one → product.pricelist
compute='_compute_pos_pricelist_id'
readonly=False
store=True
string='Default Pricelist'
args: 'product.pricelist'
pos_printer_ids
Many2many
readonly=False
related='pos_config_id.printer_ids'
pos_proxy_ip
Char
readonly=False
related='pos_config_id.proxy_ip'
string='IP Address'
pos_receipt_footer
Text
compute='_compute_pos_receipt_header_footer'
readonly=False
store=True
string='Receipt Footer'
pos_receipt_header
Text
compute='_compute_pos_receipt_header_footer'
readonly=False
store=True
string='Receipt Header'
pos_restrict_price_control
Boolean
readonly=False
related='pos_config_id.restrict_price_control'
pos_rounding_method
Many2one
readonly=False
related='pos_config_id.rounding_method'
pos_route_id
Many2one
readonly=False
related='pos_config_id.route_id'
pos_selectable_categ_ids
Many2many → pos.category
compute='_compute_pos_selectable_categ_ids'
args: 'pos.category'
pos_set_maximum_difference
Boolean
readonly=False
related='pos_config_id.set_maximum_difference'
pos_ship_later
Boolean
readonly=False
related='pos_config_id.ship_later'
pos_show_category_images
Boolean
readonly=False
related='pos_config_id.show_category_images'
pos_show_product_images
Boolean
readonly=False
related='pos_config_id.show_product_images'
pos_tax_regime_selection
Boolean
readonly=False
related='pos_config_id.tax_regime_selection'
pos_tip_product_id
Many2one → product.product
compute='_compute_pos_tip_product_id'
readonly=False
store=True
string='Tip Product'
args: 'product.product'
pos_trusted_config_ids
Many2many
domain="[('id', '!=', pos_config_id), ('module_pos_restaurant', '=', False)]"
readonly=False
related='pos_config_id.trusted_config_ids'
pos_use_fast_payment
Boolean
readonly=False
related='pos_config_id.use_fast_payment'
pos_use_presets
Boolean
readonly=False
related='pos_config_id.use_presets'
pos_use_pricelist
Boolean
readonly=False
related='pos_config_id.use_pricelist'
pos_warehouse_id
Many2one
readonly=False
related='pos_config_id.warehouse_id'
string='Warehouse (PoS)'
sale_tax_id
Many2one → account.tax
check_company=True
readonly=False
related='company_id.account_sale_tax_id'
string='Default Sale Tax'
args: 'account.tax'
update_stock_quantities
Selection
readonly=False
related='company_id.point_of_sale_update_stock_quantities'
action_pos_config_create_new(self)
action_pos_printer_dialog(self)
create(self, vals_list)
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_id
Many2one → account.fiscal.position
compute='_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_emails
Char
compute='_compute_invoice_emails'
readonly=True
pos_contact_address
Char
compute='_compute_pos_contact_address'
args: 'PoS Address'
pos_order_count
Integer
compute='_compute_pos_order'
groups='point_of_sale.group_pos_user'
help='The number of point of sales orders related to this customer'
pos_order_ids
One2many → pos.order
readonly=True
args: 'pos.order', 'partner_id'
action_view_pos_order(self)
get_new_partner(self, config_id, domain, offset)
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_id
Many2one → pos.order
index=True
args: 'pos.order'
pos_session_id
Many2one → pos.session
index=True
args: 'pos.session'
No public methods.
has_stock_reports_to_print
Boolean
compute='_compute_has_stock_reports_to_print'
No public methods.
pos_order_ids
Many2many → pos.order
string='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_id
Many2one → stock.picking.type
copy=False
string='Point of Sale Operation Type'
args: 'stock.picking.type'
No public methods.
is_pos_groupable
Boolean
help='Check if you want to group products of this unit in point of sale orders'
string='Group Products in POS'
No public methods.
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
digest_digest_view_form |
digest.digest.view.form.inherit.sale.order | digest.digest | xpath | 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 | field | 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 |
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 | xpath | 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 | field | Inherits product.product_product_tree_view |
product_product_view_form_normalized_pos |
product.product.view.form.normalized.inherit | product.product | xpath | Inherits product.product_product_view_form_normalized |
product_template_form_view |
product.template.form.inherit | product.template | xpath | Inherits product.product_template_form_view |
product_template_only_form_view |
product.template.product.form.inherit | product.template | xpath | Inherits product.product_template_only_form_view |
product_template_search_view_pos |
product.template.search.pos.form | product.template | field | Inherits product.product_template_search_view |
product_template_tree_view |
product.template.product.list.inherit | product.template | field | Inherits product.product_template_tree_view |
product_uom_categ_form_view |
uom.category.form.inherit | uom.category | xpath | Inherits uom.product_uom_categ_form_view |
product_uom_categ_tree_view |
uom.category.list.inherit | uom.category | xpath | Inherits uom.product_uom_categ_tree_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 | xpath | 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 |
view_account_journal_pos_user_form |
account.journal.pos.user.form.inherit | account.journal | xpath | Inherits account.view_account_journal_form |
view_account_journal_pos_user_form |
account.move.pos.form.inherit | account.move | xpath | Inherits account.view_move_form |
view_form_pos_close_session_wizard |
pos.close.session.wizard.form | pos.close.session.wizard | form | New |
view_partner_pos_kanban |
res.partner.pos.kanban.inherit | res.partner | xpath | Inherits base.res_partner_kanban_view |
view_partner_property_form |
res.partner.pos.form.inherit | res.partner | div | 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 | xpath | 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_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 |
pos_session_id
Many2one → pos.session
copy=False
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)
No new fields.
Public methods (0)No public methods.
pos_payment_method_ids
One2many → pos.payment.method
string='Point of Sale Payment Methods'
args: 'pos.payment.method', 'journal_id'
action_archive(self)
pos_order_ids
One2many → pos.order
pos_payment_ids
One2many → pos.payment
pos_refunded_invoice_ids
Many2many → account.move
pos_session_ids
One2many → pos.session
reversed_pos_order_id
Many2one → pos.order
help='The pos order that was reverted after closing the session to create an invoice for it.'
string='Reversed POS Order'
args: 'pos.order'
button_draft(self)
No new fields.
Public methods (0)No public methods.
force_outstanding_account_id
Many2one → account.account
check_company=True
args: 'account.account', 'Forced Outstanding Account'
pos_payment_method_id
Many2one → pos.payment.method
pos_session_id
Many2one → pos.session
No public methods.
No new fields.
Public methods (1)write(self, vals)
No new fields.
Public methods (0)No public methods.
type
Selection
ondelete={'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_total
Boolean
kpi_pos_total_value
Monetary
compute='_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.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)action_send_mail(self)
for_all_config
Boolean
default=True
help='If checked, this coin/bill will be available in all PoS.'
args: 'For All PoS'
name
Char
pos_config_ids
Many2many → pos.config
string='Point of Sales'
args: 'pos.config'
value
Float
digits=(16, 4)
required=True
args: 'Coin/Bill Value'
name_create(self, name)
access_token
Char
copy=False
args: 'Security Token'
create(self, vals_list)
child_ids
One2many → pos.category
string='Children Categories'
args: 'pos.category', 'parent_id'
color
Integer
default=get_default_color
required=False
args: 'Color'
has_image
Boolean
compute='_compute_has_image'
image_128
Image
max_height=128
max_width=128
args: 'Image'
name
Char
required=True
string='Category Name'
translate=True
parent_id
Many2one → pos.category
index=True
string='Parent Category'
args: 'pos.category'
sequence
Integer
help='Gives the sequence order when displaying a list of product categories.'
create(self, vals_list)
get_default_color(self)
write(self, vals)
account_id
Many2one → account.account
account_readonly
Boolean
amount_to_balance
Float
message
Text
close_session(self)
access_token
Char
default=<expr>
args: 'Access Token'
active
Boolean
default=True
amount_authorized_diff
Float
help='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_payment
Boolean
default=True
help='Automatically validates orders paid with a payment terminal.'
available_pricelist_ids
Many2many → product.pricelist
help='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_receipt
Boolean
help='Print basic ticket without prices. Can be used for gifts.'
string='Basic Receipt'
cash_control
Boolean
compute='_compute_cash_control'
help='Check the amount of the cashbox at opening and closing.'
string='Advanced Cash Control'
cash_rounding
Boolean
string='Cash Rounding'
company_has_template
Boolean
compute='_compute_company_has_template'
string='Company has chart of accounts'
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
compute='_compute_currency'
compute_sudo=True
string='Currency'
args: 'res.currency'
current_session_id
Many2one → pos.session
compute='_compute_current_session'
string='Current Session'
args: 'pos.session'
current_session_state
Char
compute='_compute_current_session'
current_user_id
Many2one → res.users
compute='_compute_current_session_user'
string='Current Session Responsible'
args: 'res.users'
customer_display_bg_img
Image
max_height=1920
max_width=1920
string='Background Image'
customer_display_bg_img_name
Char
string='Background Image Name'
customer_display_type
Selection
default='local'
help='Show checkout to customers.'
selection=<expr>
string='Customer Facing Display'
default_bill_ids
Many2many → pos.bill
string='Coins/Bills'
args: 'pos.bill'
default_fiscal_position_id
Many2one → account.fiscal.position
string='Default Fiscal Position'
args: 'account.fiscal.position'
fiscal_position_ids
Many2many → account.fiscal.position
help='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_id
Many2one → res.groups
default=_get_group_pos_manager
help='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_id
Many2one → res.groups
default=_get_group_pos_user
help='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_session
Boolean
compute='_compute_current_session'
iface_available_categ_ids
Many2many → pos.category
help='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_scrollbars
Boolean
help='For imprecise industrial touchscreens.'
args: 'Large Scrollbars'
iface_cashdrawer
Boolean
help='Automatically open the cashdrawer.'
string='Cashdrawer'
iface_electronic_scale
Boolean
help='Enables Electronic Scale integration.'
string='Electronic Scale'
iface_print_auto
Boolean
default=False
help='The receipt will automatically be printed at the end of each order.'
string='Automatic Receipt Printing'
iface_print_skip_screen
Boolean
default=True
help='The receipt screen will be skipped if the receipt can be printed automatically.'
string='Skip Preview Screen'
iface_print_via_proxy
Boolean
help='Bypass browser printing and prints via the hardware proxy.'
string='Print via Proxy'
iface_scan_via_proxy
Boolean
help='Enable barcode scanning with a remotely connected barcode scanner and card swiping with a Vantiv card reader.'
string='Scan via Proxy'
iface_tax_included
Selection
default='total'
required=True
string='Tax Display'
args: [('subtotal', 'Tax-Excluded Price'), ('total', 'Tax-Included Price')]
iface_tipproduct
Boolean
string='Product tips'
invoice_journal_id
Many2one → account.journal
check_company=True
default=_default_invoice_journal
domain=[('type', '=', 'sale')]
help='Accounting journal used to create invoices.'
string='Invoice Journal'
args: 'account.journal'
is_closing_entry_by_product
Boolean
help='Display the breakdown of sales lines by product in the automatically generated closing entry.'
string='Closing Entry by product'
is_header_or_footer
Boolean
is_installed_account_accountant
Boolean
compute='_compute_is_installed_account_accountant'
string='Is the Full Accounting Installed'
is_margins_costs_accessible_to_every_user
Boolean
default=False
help='When disabled, only PoS manager can view the margin and cost of product among the Product info.'
string='Margins & Costs'
is_order_printer
Boolean
is_posbox
Boolean
journal_id
Many2one → account.journal
check_company=True
default=_default_sale_journal
domain=[('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_session_closing_cash
Float
compute='_compute_last_session'
last_session_closing_date
Date
compute='_compute_last_session'
limit_categories
Boolean
manual_discount
Boolean
default=True
string='Line Discounts'
module_pos_avatax
Boolean
help='Use automatic taxes mapping with Avatax in PoS'
args: 'AvaTax PoS Integration'
module_pos_discount
Boolean
module_pos_hr
Boolean
help='Show employee login screen'
module_pos_restaurant
Boolean
module_pos_sms
Boolean
help='Activate SMS feature for point_of_sale'
string='SMS Enabled'
name
Char
help='An internal identification of the point of sale.'
required=True
string='Point of Sale'
note_ids
Many2many → pos.note
help='The predefined notes of this point of sale.'
string='Note Models'
args: 'pos.note'
number_of_rescue_session
Integer
compute='_compute_current_session'
string='Number of Rescue Session'
only_round_cash_method
Boolean
string='Only apply rounding on cash'
order_edit_tracking
Boolean
default=False
help='Store edited orders in the backend'
string='Track orders edits'
orderlines_sequence_in_cart_by_category
Boolean
default=False
help="When active, orderlines will be sorted based on product category and sequence in the product screen's order cart."
string="Order cart by category's sequence"
other_devices
Boolean
help='Connect devices to your PoS without an IoT Box.'
string='Other Devices'
payment_method_ids
Many2many → pos.payment.method
copy=False
default=<expr>
string='Payment Methods'
args: 'pos.payment.method'
picking_policy
Selection
default='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=True
string='Shipping Policy'
args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')]
picking_type_id
Many2one → stock.picking.type
default=_default_picking_type_id
domain=<expr>
ondelete='restrict'
required=True
string='Operation Type'
args: 'stock.picking.type'
pos_session_duration
Char
compute='_compute_current_session_user'
pos_session_state
Char
compute='_compute_current_session_user'
pos_session_username
Char
compute='_compute_current_session_user'
pricelist_id
Many2one → product.pricelist
help='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_ids
Many2many → pos.printer
string='Order Printers'
args: 'pos.printer', 'pos_config_printer_rel', 'config_id', 'printer_id'
proxy_ip
Char
help='The hostname or ip address of the hardware proxy, Will be autodetected if left empty.'
size=45
string='IP Address'
receipt_footer
Text
help='A short text that will be inserted as a footer in the printed receipt.'
string='Receipt Footer'
receipt_header
Text
help='A short text that will be inserted as a header in the printed receipt.'
string='Receipt Header'
restrict_price_control
Boolean
help='Only users with Manager access rights for PoS app can modify the product prices on orders.'
string='Restrict Price Modifications to Managers'
rounding_method
Many2one → account.cash.rounding
string='Cash rounding'
args: 'account.cash.rounding'
route_id
Many2one → stock.route
string='Spefic route for products delivered later.'
args: 'stock.route'
sequence_id
Many2one → ir.sequence
copy=False
help='This sequence is automatically created by Odoo but you can change it to customize the reference numbers of your orders.'
ondelete='restrict'
readonly=True
string='Order IDs Sequence'
args: 'ir.sequence'
sequence_line_id
Many2one → ir.sequence
copy=False
help='This sequence is automatically created by Odoo but you can change it to customize the reference numbers of your orders lines.'
readonly=True
string='Order Line IDs Sequence'
args: 'ir.sequence'
session_ids
One2many → pos.session
string='Sessions'
args: 'pos.session', 'config_id'
set_maximum_difference
Boolean
help='Set a maximum difference allowed between the expected and counted money during the closing of the session.'
args: 'Set Maximum Difference'
ship_later
Boolean
string='Ship Later'
show_category_images
Boolean
default=True
help='Show category images in the Point of Sale interface.'
string='Show Category Images'
show_product_images
Boolean
default=True
help='Show product images in the Point of Sale interface.'
string='Show Product Images'
tax_regime_selection
Boolean
tip_product_id
Many2one → product.product
default=_get_default_tip_product
help='This product is used as reference on customer receipts.'
string='Tip Product'
args: 'product.product'
trusted_config_ids
Many2many → pos.config
column1='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_pricelist
Boolean
uuid
Char
copy=False
default=<expr>
help='A globally unique identifier for this pos configuration, used to prevent conflicts in client-generated data.'
readonly=True
warehouse_id
Many2one → stock.warehouse
compute='_compute_warehouse_id'
ondelete='restrict'
precompute=True
readonly=False
store=True
args: 'stock.warehouse'
action_pos_config_modal_edit(self)
create(self, vals_list)
execute(self)
get_categories(self, categories)
get_limited_partners_loading(self)
get_limited_product_count(self)
get_limited_products_loading(self, fields)
get_pos_kanban_view_state(self)
get_records(self, data)
install_pos_restaurant(self)
load_onboarding_bakery_scenario(self)
load_onboarding_clothes_scenario(self)
load_onboarding_furniture_scenario(self)
notify_synchronisation(self, session_id, login_number, records={})
open_existing_session_cb(self)
open_opened_rescue_session_form(self)
open_ui(self)
read_config_open_orders(self, domain, record_ids=[])
unlink(self)
update_customer_display(self, order, access_token)
write(self, vals)
pos_session_id
Many2one → pos.session
required=True
args: 'pos.session'
generate_report(self)
end_date
Datetime
default=fields.Datetime.now
required=True
pos_config_ids
Many2many → pos.config
default=<expr>
args: 'pos.config', 'pos_detail_configs'
start_date
Datetime
default=_default_start_date
required=True
generate_report(self)
No new fields.
Public methods (0)No public methods.
amount
Float
default=_default_amount
digits=0
required=True
config_id
Many2one → pos.config
default=_default_config
required=True
string='Point of Sale Configuration'
args: 'pos.config'
payment_date
Datetime
default=<expr>
required=True
string='Payment Date'
payment_method_id
Many2one → pos.payment.method
default=_default_payment_method
required=True
string='Payment Method'
args: 'pos.payment.method'
payment_name
Char
string='Payment Reference'
check(self)
launch_payment(self)
name
Char
required=True
sequence
Integer
default=1
args: 'Sequence'
No public methods.
account_move
Many2one → account.move
copy=False
index='btree_not_null'
readonly=True
string='Invoice'
args: 'account.move'
amount_difference
Monetary
readonly=True
string='Difference'
amount_paid
Monetary
required=True
string='Paid'
amount_return
Monetary
readonly=True
required=True
string='Returned'
amount_tax
Monetary
readonly=True
required=True
string='Taxes'
amount_total
Monetary
readonly=True
required=True
string='Total'
available_payment_method_ids
Many2many → pos.payment.method
readonly=True
related='config_id.payment_method_ids'
store=False
string='Available Payment Methods'
args: 'pos.payment.method'
company_id
Many2one → res.company
index=True
readonly=True
required=True
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
readonly=False
related='session_id.config_id'
store=True
string='Point of Sale'
args: 'pos.config'
country_code
Char
related='company_id.account_fiscal_country_id.code'
currency_id
Many2one → res.currency
related='config_id.currency_id'
string='Currency'
args: 'res.currency'
currency_rate
Float
compute='_compute_currency_rate'
compute_sudo=True
digits=0
help='The rate of the currency to the currency of rate applicable at the date of the order'
readonly=True
store=True
args: 'Currency Rate'
date_order
Datetime
default=fields.Datetime.now
index=True
readonly=True
string='Date'
email
Char
compute='_compute_contact_details'
readonly=False
store=True
string='Email'
failed_pickings
Boolean
compute='_compute_picking_count'
fiscal_position_id
Many2one → account.fiscal.position
comodel_name='account.fiscal.position'
readonly=False
string='Fiscal Position'
floating_order_name
Char
string='Order Name'
general_note
Text
string='General Note'
has_deleted_line
Boolean
string='Has Deleted Line'
has_refundable_lines
Boolean
compute='_compute_has_refundable_lines'
args: 'Has Refundable Lines'
is_edited
Boolean
compute='_compute_is_edited'
string='Edited'
is_invoiced
Boolean
compute='_compute_is_invoiced'
args: 'Is Invoiced'
is_tipped
Boolean
readonly=True
args: 'Is this already tipped?'
is_total_cost_computed
Boolean
compute='_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_change
Char
help='Last printed state of the order'
string='Last preparation change'
lines
One2many → pos.order.line
copy=True
string='Order Lines'
args: 'pos.order.line', 'order_id'
margin
Monetary
compute='_compute_margin'
string='Margin'
margin_percent
Float
compute='_compute_margin'
digits=(12, 4)
string='Margin (%)'
mobile
Char
compute='_compute_contact_details'
readonly=False
store=True
string='Mobile'
name
Char
copy=False
default='/'
readonly=True
required=True
string='Order Ref'
nb_print
Integer
copy=False
default=0
readonly=True
string='Number of Print'
order_edit_tracking
Boolean
readonly=True
related='config_id.order_edit_tracking'
partner_id
Many2one → res.partner
change_default=True
index='btree_not_null'
string='Customer'
args: 'res.partner'
payment_ids
One2many → pos.payment
string='Payments'
args: 'pos.payment', 'pos_order_id'
picking_count
Integer
compute='_compute_picking_count'
picking_ids
One2many → stock.picking
picking_type_id
Many2one → stock.picking.type
readonly=False
related='session_id.config_id.picking_type_id'
string='Operation Type'
args: 'stock.picking.type'
pos_reference
Char
copy=False
index=True
readonly=True
string='Receipt Number'
pricelist_id
Many2one → product.pricelist
string='Pricelist'
args: 'product.pricelist'
procurement_group_id
Many2one → procurement.group
copy=False
args: 'procurement.group', 'Procurement Group'
refund_orders_count
Integer
compute='_compute_refund_related_fields'
help='Number of orders where items from this order were refunded'
args: 'Number of Refund Orders'
refunded_order_id
Many2one → pos.order
compute='_compute_refund_related_fields'
help='Order from which items were refunded in this order'
args: 'pos.order'
sale_journal
Many2one → account.journal
ondelete='restrict'
readonly=True
related='session_id.config_id.journal_id'
store=True
string='Sales Journal'
args: 'account.journal'
sequence_number
Integer
default=1
help='A session-unique sequence number for the order'
string='Sequence Number'
session_id
Many2one → pos.session
domain="[('state', '=', 'opened')]"
index=True
required=True
string='Session'
args: 'pos.session'
session_move_id
Many2one → account.move
copy=False
readonly=True
related='session_id.move_id'
string='Session Journal Entry'
args: 'account.move'
shipping_date
Date
state
Selection
copy=False
default='draft'
index=True
readonly=True
args: [('draft', 'New'), ('cancel', 'Cancelled'), ('paid', 'Paid'), ('done', 'Posted'), ('invoiced', 'Invoiced')], 'Status'
ticket_code
Char
help='5 digits alphanumeric code to be used by portal user to request an invoice'
tip_amount
Monetary
readonly=True
string='Tip Amount'
to_invoice
Boolean
copy=False
args: 'To invoice'
tracking_number
Char
compute='_compute_tracking_number'
search='_search_tracking_number'
string='Order Number'
user_id
Many2one → res.users
comodel_name='res.users'
default=<expr>
help='Employee who uses the cash register.'
string='Employee'
uuid
Char
copy=False
readonly=True
string='Uuid'
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(self, vals_list)
get_preparation_change(self)
read_pos_data(self, data, config_id)
refund(self)
remove_from_ui(self, server_ids)
search_paid_order_ids(self, config_id, domain, limit, offset)
sync_from_ui(self, orders)
write(self, vals)
attribute_value_ids
Many2many → product.template.attribute.value
string='Selected Attributes'
args: 'product.template.attribute.value'
combo_item_id
Many2one → product.combo.item
string='Combo Item'
args: 'product.combo.item'
combo_line_ids
One2many → pos.order.line
string='Combo Lines'
args: 'pos.order.line', 'combo_parent_id'
combo_parent_id
Many2one → pos.order.line
string='Combo Parent'
args: 'pos.order.line'
company_id
Many2one → res.company
related='order_id.company_id'
store=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
related='order_id.currency_id'
args: 'res.currency'
custom_attribute_value_ids
One2many → product.attribute.custom.value
comodel_name='product.attribute.custom.value'
inverse_name='pos_order_line_id'
readonly=False
store=True
string='Custom Values'
customer_note
Char
discount
Float
default=0.0
digits=0
string='Discount (%)'
full_product_name
Char
is_edited
Boolean
default=False
args: 'Edited'
is_total_cost_computed
Boolean
help='Allows to know if the total cost has already been computed or not'
margin
Monetary
compute='_compute_margin'
string='Margin'
margin_percent
Float
compute='_compute_margin'
digits=(12, 4)
string='Margin (%)'
name
Char
copy=False
required=True
string='Line No'
note
Char
notice
Char
string='Discount Notice'
order_id
Many2one → pos.order
index=True
ondelete='cascade'
required=True
string='Order Ref'
args: 'pos.order'
pack_lot_ids
One2many → pos.pack.operation.lot
string='Lot/serial Number'
args: 'pos.pack.operation.lot', 'pos_order_line_id'
price_extra
Float
string='Price extra'
price_subtotal
Monetary
readonly=True
required=True
string='Tax Excl.'
price_subtotal_incl
Monetary
readonly=True
required=True
string='Tax Incl.'
price_type
Selection
default='original'
string='Price Type'
args: [('original', 'Original'), ('manual', 'Manual'), ('automatic', 'Automatic')]
price_unit
Float
digits=0
string='Unit Price'
product_id
Many2one → product.product
change_default=True
domain=[('sale_ok', '=', True)]
required=True
string='Product'
args: 'product.product'
product_uom_id
Many2one → uom.uom
related='product_id.uom_id'
string='Product UoM'
args: 'uom.uom'
qty
Float
default=1
digits='Product Unit of Measure'
args: 'Quantity'
refund_orderline_ids
One2many → pos.order.line
help='Orderlines in this field are the lines that refunded this orderline.'
args: 'pos.order.line', 'refunded_orderline_id', 'Refund Order Lines'
refunded_orderline_id
Many2one → pos.order.line
help='If this orderline is a refund, then the refunded orderline is specified in this field.'
args: 'pos.order.line', 'Refunded Order Line'
refunded_qty
Float
compute='_compute_refund_qty'
help='Number of items refunded in this orderline.'
args: 'Refunded Quantity'
skip_change
Boolean
tax_ids
Many2many → account.tax
readonly=True
string='Taxes'
args: 'account.tax'
tax_ids_after_fiscal_position
Many2many → account.tax
compute='_get_tax_ids_after_fiscal_position'
string='Taxes to Apply'
args: 'account.tax'
total_cost
Float
min_display_digits='Product Price'
readonly=True
string='Total cost'
uuid
Char
copy=False
readonly=True
string='Uuid'
create(self, vals_list)
get_existing_lots(self, company_id, product_id)
unlink(self)
write(self, values)
lot_name
Char
order_id
Many2one → pos.order
readonly=False
related='pos_order_line_id.order_id'
args: 'pos.order'
pos_order_line_id
Many2one → pos.order.line
product_id
Many2one → product.product
readonly=False
related='pos_order_line_id.product_id'
args: 'product.product'
No public methods.
account_move_id
Many2one → account.move
index='btree_not_null'
args: 'account.move'
amount
Monetary
currency_field='currency_id'
help='Total amount of the payment.'
required=True
string='Amount'
card_brand
Char
help='The brand of the payment card (e.g. Visa, AMEX, ...)'
string='Brand of card'
card_no
Char
string='Card Number(Last 4 Digit)'
card_type
Char
help='The type of the payment card (e.g. CREDIT CARD OR DEBIT CARD)'
string='Type of card used'
cardholder_name
Char
string='Card Owner name'
company_id
Many2one → res.company
related='pos_order_id.company_id'
store=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
related='pos_order_id.currency_id'
string='Currency'
args: 'res.currency'
currency_rate
Float
help='Conversion rate from company currency to order currency.'
related='pos_order_id.currency_rate'
string='Conversion Rate'
is_change
Boolean
default=False
string='Is this payment change?'
name
Char
readonly=True
string='Label'
partner_id
Many2one → res.partner
related='pos_order_id.partner_id'
string='Customer'
args: 'res.partner'
payment_date
Datetime
default=<expr>
readonly=True
required=True
string='Date'
payment_method_authcode
Char
string='Payment APPR Code'
payment_method_id
Many2one → pos.payment.method
required=True
string='Payment Method'
args: 'pos.payment.method'
payment_method_issuer_bank
Char
string='Payment Issuer Bank'
payment_method_payment_mode
Char
string='Payment Mode'
payment_ref_no
Char
help='Payment reference number from payment provider terminal'
string='Payment reference number'
payment_status
Char
string='Payment Status'
pos_order_id
Many2one → pos.order
index=True
ondelete='cascade'
required=True
string='Order'
args: 'pos.order'
session_id
Many2one → pos.session
index=True
related='pos_order_id.session_id'
store=True
string='Session'
args: 'pos.session'
ticket
Char
string='Payment Receipt Info'
transaction_id
Char
string='Payment Transaction ID'
user_id
Many2one → res.users
related='session_id.user_id'
string='Employee'
args: 'res.users'
uuid
Char
copy=False
readonly=True
string='Uuid'
No public methods.
active
Boolean
default=True
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
config_ids
Many2many → pos.config
string='Point of Sale'
args: 'pos.config'
default_qr
Char
compute='_compute_qr'
hide_qr_code_method
Boolean
compute='_compute_hide_qr_code_method'
hide_use_payment_terminal
Boolean
compute='_compute_hide_use_payment_terminal'
image
Image
max_height=50
max_width=50
args: 'Image'
is_cash_count
Boolean
compute='_compute_is_cash_count'
store=True
string='Cash'
journal_id
Many2one → account.journal
domain=['|', '&', ('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.'
ondelete='restrict'
string='Journal'
args: 'account.journal'
name
Char
help='Defines the name of the payment method that will be displayed in the Point of Sale when the payments are selected.'
required=True
string='Method'
translate=True
open_session_ids
Many2many → pos.session
compute='_compute_open_session_ids'
help='Open PoS sessions that are using this payment method.'
string='Pos Sessions'
args: 'pos.session'
outstanding_account_id
Many2one → account.account
help='Account used as outstanding account when creating accounting payment records for bank payments.'
ondelete='restrict'
string='Outstanding Account'
args: 'account.account'
payment_method_type
Selection
default='none'
required=True
selection=<expr>
string='Integration'
qr_code_method
Selection
copy=False
help='Type of QR-code to be generated for this payment method.'
selection=<expr>
string='QR Code Format'
receivable_account_id
Many2one → account.account
domain=[('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'
sequence
Integer
copy=False
split_transactions
Boolean
default=False
help='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'
type
Selection
compute='_compute_type'
selection=[('cash', 'Cash'), ('bank', 'Bank'), ('pay_later', 'Customer Account')]
use_payment_terminal
Selection
help='Record payments with a terminal on this journal.'
selection=<expr>
string='Use a Payment Terminal'
copy_data(self, default=None)
create(self, vals_list)
get_qr_code(self, amount, free_communication, structured_communication, currency, debtor_partner)
write(self, vals)
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
name
Char
default='Printer'
help='An internal identification of the printer'
required=True
args: 'Printer Name'
printer_type
Selection
default='iot'
selection=[('iot', ' Use a printer connected to the IoT Box')]
string='Printer Type'
product_categories_ids
Many2many → pos.category
string='Printed Product Categories'
args: 'pos.category', 'printer_category_rel', 'printer_id', 'category_id'
proxy_ip
Char
help="The IP Address or hostname of the Printer's hardware proxy"
args: 'Proxy IP Address'
No public methods.
bank_payment_ids
One2many → account.payment
help='Account payments representing aggregated and bank split payments.'
args: 'account.payment', 'pos_session_id', 'Bank Payments'
cash_control
Boolean
compute='_compute_cash_control'
string='Has Cash Control'
cash_journal_id
Many2one → account.journal
compute='_compute_cash_journal'
store=True
string='Cash Journal'
args: 'account.journal'
cash_real_transaction
Monetary
readonly=True
string='Transaction'
cash_register_balance_end
Monetary
compute='_compute_cash_balance'
help='Opening balance summed to all cash transactions.'
readonly=True
string='Theoretical Closing Balance'
cash_register_balance_end_real
Monetary
readonly=True
string='Ending Balance'
cash_register_balance_start
Monetary
readonly=True
string='Starting Balance'
cash_register_difference
Monetary
compute='_compute_cash_balance'
help='Difference between the theoretical closing balance and the real closing balance.'
readonly=True
string='Before Closing Difference'
closing_notes
Text
string='Closing Notes'
company_id
Many2one → res.company
readonly=True
related='config_id.company_id'
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
index=True
required=True
string='Point of Sale'
args: 'pos.config'
currency_id
Many2one → res.currency
readonly=False
related='config_id.currency_id'
string='Currency'
args: 'res.currency'
failed_pickings
Boolean
compute='_compute_picking_count'
is_in_company_currency
Boolean
compute='_compute_is_in_company_currency'
args: 'Is Using Company Currency'
login_number
Integer
default=0
help='A sequence number that is incremented each time a user resumes the pos session'
string='Login Sequence Number'
move_id
Many2one → account.move
index=True
string='Journal Entry'
args: 'account.move'
name
Char
default='/'
readonly=True
required=True
string='Session ID'
opening_notes
Text
string='Opening Notes'
order_count
Integer
compute='_compute_order_count'
order_ids
One2many → pos.order
string='Orders'
args: 'pos.order', 'session_id'
payment_method_ids
Many2many → pos.payment.method
related='config_id.payment_method_ids'
string='Payment Methods'
args: 'pos.payment.method'
picking_count
Integer
compute='_compute_picking_count'
picking_ids
One2many → stock.picking
rescue
Boolean
copy=False
help='Auto-generated session for orphan orders, ignored in constraints'
readonly=True
string='Recovery Session'
sequence_number
Integer
default=1
help='A sequence number that is incremented with each order'
string='Order Sequence Number'
start_at
Datetime
readonly=True
string='Opening Date'
state
Selection
copy=False
default='opening_control'
index=True
readonly=True
required=True
string='Status'
args: POS_SESSION_STATE
statement_line_ids
One2many → account.bank.statement.line
readonly=True
string='Cash Lines'
args: 'account.bank.statement.line', 'pos_session_id'
stop_at
Datetime
copy=False
readonly=True
string='Closing Date'
total_payments_amount
Float
compute='_compute_total_payments_amount'
string='Total Payments Amount'
update_stock_at_closing
Boolean
user_id
Many2one → res.users
default=<expr>
index=True
ondelete='restrict'
readonly=False
required=True
string='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)
create(self, vals_list)
delete_opening_control_session(self)
find_product_by_barcode(self, barcode, config_id)
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, only_data=False)
log_partner_message(self, partner_id, action, message_type)
login(self)
open_frontend_cb(self)
post_close_register_message(self)
post_closing_cash_details(self, counted_cash)
set_opening_control(self, cashbox_value: int, notes: str)
show_cash_register(self)
show_journal_items(self)
try_cash_in_out(self, _type, amount, reason, extras)
unlink(self)
update_closing_control_state_session(self, notes)
write(self, vals)
No new fields.
Public methods (0)No public methods.
pos_order_id
Many2one → pos.order
No public methods.
No new fields.
Public methods (0)No public methods.
pos_order_line_id
Many2one → pos.order.line
ondelete='cascade'
string='PoS Order Line'
args: 'pos.order.line'
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 (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)get_product_info_pos(self, price, quantity, pos_config_id)
No new fields.
Public methods (0)No public methods.
available_in_pos
Boolean
default=False
help='Check if you want this product to appear in the Point of Sale.'
string='Available in POS'
color
Integer
compute='_compute_color'
readonly=False
store=True
args: 'Color Index'
pos_categ_ids
Many2many → pos.category
help='Category used in the Point of Sale.'
string='Point of Sale Category'
args: 'pos.category'
public_description
Html
string='Product Description'
translate=True
to_weight
Boolean
help='Check if the product should be weighted using the hardware scale integration.'
string='To Weigh With Scale'
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)
average_price
Float
aggregator='avg'
readonly=True
string='Average Price'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
readonly=True
string='Point of Sale'
args: 'pos.config'
date
Datetime
readonly=True
string='Order Date'
delay_validation
Integer
readonly=True
string='Delay Validation'
invoiced
Boolean
readonly=True
journal_id
Many2one → account.journal
readonly=True
string='Journal'
args: 'account.journal'
margin
Float
readonly=True
string='Margin'
nbr_lines
Integer
readonly=True
string='Sale Line Count'
order_id
Many2one → pos.order
readonly=True
string='Order'
args: 'pos.order'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
payment_method_id
Many2one → pos.payment.method
readonly=True
string='Payment Method'
args: 'pos.payment.method'
pos_categ_id
Many2one → pos.category
readonly=True
string='Point of Sale Category'
args: 'pos.category'
price_sub_total
Float
readonly=True
string='Subtotal w/o discount'
price_subtotal_excl
Float
readonly=True
string='Subtotal w/o Tax'
price_total
Float
readonly=True
string='Total Price'
pricelist_id
Many2one → product.pricelist
readonly=True
string='Pricelist'
args: 'product.pricelist'
product_categ_id
Many2one → product.category
readonly=True
string='Product Category'
args: 'product.category'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_qty
Integer
readonly=True
string='Product Quantity'
product_tmpl_id
Many2one → product.template
readonly=True
string='Product Template'
args: 'product.template'
session_id
Many2one → pos.session
readonly=True
string='Session'
args: 'pos.session'
state
Selection
readonly=True
string='Status'
args: [('draft', 'New'), ('paid', 'Paid'), ('done', 'Posted'), ('invoiced', 'Invoiced'), ('cancel', 'Cancelled')]
total_discount
Float
readonly=True
string='Total Discount'
user_id
Many2one → res.users
readonly=True
string='User'
args: 'res.users'
init(self)
point_of_sale_ticket_portal_url_display_mode
Selection
default='qr_code'
help='Choose how the URL to the portal will be print on the receipt.'
required=True
string='Print'
args: [('qr_code', 'QR code'), ('url', 'URL'), ('qr_code_and_url', 'QR code + URL')]
point_of_sale_ticket_unique_code
Boolean
help='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_quantities
Selection
default='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_code
Boolean
help="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)
account_default_pos_receivable_account_id
Many2one
check_company=True
readonly=False
related='company_id.account_default_pos_receivable_account_id'
string='Default Account Receivable (PoS)'
barcode_nomenclature_id
Many2one → barcode.nomenclature
readonly=False
related='company_id.nomenclature_id'
args: 'barcode.nomenclature'
is_kiosk_mode
Boolean
default=False
string='Is Kiosk Mode'
module_pos_adyen
Boolean
help='The transactions are processed by Adyen. Set your Adyen credentials on the related payment method.'
string='Adyen Payment Terminal'
module_pos_mercado_pago
Boolean
help='The transactions are processed by Mercado Pago. Set your Mercado Pago credentials on the related payment method.'
string='Mercado Pago Payment Terminal'
module_pos_paytm
Boolean
help='The transactions are processed by PayTM. Set your PayTM credentials on the related payment method.'
string='PayTM Payment Terminal'
module_pos_preparation_display
Boolean
help='Show orders on the preparation display screen.'
string='Preparation Display'
module_pos_pricer
Boolean
help='Display the price of your products through electronic price tags'
string='Pricer electronic price tags'
module_pos_razorpay
Boolean
help='The transactions are processed by Razorpay. Set your Razorpay credentials on the related payment method.'
string='Razorpay Payment Terminal'
module_pos_six
Boolean
help='The transactions are processed by Six. Set the IP address of the terminal on the related payment method.'
string='Six Payment Terminal'
module_pos_stripe
Boolean
help='The transactions are processed by Stripe. Set your Stripe credentials on the related payment method.'
string='Stripe Payment Terminal'
module_pos_viva_wallet
Boolean
help='The transactions are processed by Viva Wallet on terminal or tap on phone.'
string='Viva Wallet Payment Terminal'
point_of_sale_ticket_portal_url_display_mode
Selection
readonly=False
related='company_id.point_of_sale_ticket_portal_url_display_mode'
required=True
point_of_sale_ticket_unique_code
Boolean
readonly=False
related='company_id.point_of_sale_ticket_unique_code'
point_of_sale_use_ticket_qr_code
Boolean
readonly=False
related='company_id.point_of_sale_use_ticket_qr_code'
pos_allowed_pricelist_ids
Many2many → product.pricelist
compute='_compute_pos_allowed_pricelist_ids'
args: 'product.pricelist'
pos_amount_authorized_diff
Float
readonly=False
related='pos_config_id.amount_authorized_diff'
pos_auto_validate_terminal_payment
Boolean
readonly=False
related='pos_config_id.auto_validate_terminal_payment'
string='Automatically validates orders paid with a payment terminal.'
pos_available_pricelist_ids
Many2many → product.pricelist
compute='_compute_pos_pricelist_id'
readonly=False
store=True
string='Available Pricelists'
args: 'product.pricelist'
pos_basic_receipt
Boolean
readonly=False
related='pos_config_id.basic_receipt'
pos_cash_control
Boolean
related='pos_config_id.cash_control'
pos_cash_rounding
Boolean
readonly=False
related='pos_config_id.cash_rounding'
string='Cash Rounding (PoS)'
pos_company_has_template
Boolean
related='pos_config_id.company_has_template'
pos_config_id
Many2one → pos.config
default=<expr>
string='Point of Sale'
args: 'pos.config'
pos_customer_display_bg_img
Image
readonly=False
related='pos_config_id.customer_display_bg_img'
pos_customer_display_bg_img_name
Char
readonly=False
related='pos_config_id.customer_display_bg_img_name'
pos_customer_display_type
Selection
readonly=False
related='pos_config_id.customer_display_type'
pos_default_bill_ids
Many2many
readonly=False
related='pos_config_id.default_bill_ids'
pos_default_fiscal_position_id
Many2one → account.fiscal.position
check_company=True
compute='_compute_pos_fiscal_positions'
readonly=False
store=True
string='Default Fiscal Position'
args: 'account.fiscal.position'
pos_fiscal_position_ids
Many2many → account.fiscal.position
check_company=True
compute='_compute_pos_fiscal_positions'
readonly=False
store=True
string='Fiscal Positions'
args: 'account.fiscal.position'
pos_has_active_session
Boolean
related='pos_config_id.has_active_session'
pos_iface_available_categ_ids
Many2many → pos.category
compute='_compute_pos_iface_available_categ_ids'
readonly=False
store=True
string='Available PoS Product Categories'
args: 'pos.category'
pos_iface_big_scrollbars
Boolean
readonly=False
related='pos_config_id.iface_big_scrollbars'
pos_iface_cashdrawer
Boolean
compute='_compute_pos_iface_cashdrawer'
readonly=False
store=True
string='Cashdrawer'
pos_iface_electronic_scale
Boolean
compute='_compute_pos_iface_electronic_scale'
readonly=False
store=True
string='Electronic Scale'
pos_iface_print_auto
Boolean
readonly=False
related='pos_config_id.iface_print_auto'
pos_iface_print_skip_screen
Boolean
readonly=False
related='pos_config_id.iface_print_skip_screen'
pos_iface_print_via_proxy
Boolean
compute='_compute_pos_iface_print_via_proxy'
readonly=False
store=True
string='Print via Proxy'
pos_iface_scan_via_proxy
Boolean
compute='_compute_pos_iface_scan_via_proxy'
readonly=False
store=True
string='Scan via Proxy'
pos_iface_tax_included
Selection
readonly=False
related='pos_config_id.iface_tax_included'
pos_iface_tipproduct
Boolean
readonly=False
related='pos_config_id.iface_tipproduct'
pos_invoice_journal_id
Many2one
readonly=False
related='pos_config_id.invoice_journal_id'
pos_is_closing_entry_by_product
Boolean
readonly=False
related='pos_config_id.is_closing_entry_by_product'
pos_is_header_or_footer
Boolean
readonly=False
related='pos_config_id.is_header_or_footer'
pos_is_margins_costs_accessible_to_every_user
Boolean
readonly=False
related='pos_config_id.is_margins_costs_accessible_to_every_user'
pos_is_order_printer
Boolean
compute='_compute_pos_printer'
readonly=False
store=True
pos_is_posbox
Boolean
readonly=False
related='pos_config_id.is_posbox'
pos_journal_id
Many2one
readonly=False
related='pos_config_id.journal_id'
pos_limit_categories
Boolean
readonly=False
related='pos_config_id.limit_categories'
pos_manual_discount
Boolean
readonly=False
related='pos_config_id.manual_discount'
pos_module_pos_avatax
Boolean
readonly=False
related='pos_config_id.module_pos_avatax'
pos_module_pos_discount
Boolean
readonly=False
related='pos_config_id.module_pos_discount'
pos_module_pos_hr
Boolean
readonly=False
related='pos_config_id.module_pos_hr'
pos_module_pos_restaurant
Boolean
readonly=False
related='pos_config_id.module_pos_restaurant'
pos_module_pos_sms
Boolean
readonly=False
related='pos_config_id.module_pos_sms'
pos_note_ids
Many2many
readonly=False
related='pos_config_id.note_ids'
pos_only_round_cash_method
Boolean
readonly=False
related='pos_config_id.only_round_cash_method'
pos_order_edit_tracking
Boolean
readonly=False
related='pos_config_id.order_edit_tracking'
pos_orderlines_sequence_in_cart_by_category
Boolean
readonly=False
related='pos_config_id.orderlines_sequence_in_cart_by_category'
pos_other_devices
Boolean
readonly=False
related='pos_config_id.other_devices'
pos_payment_method_ids
Many2many
readonly=False
related='pos_config_id.payment_method_ids'
pos_picking_policy
Selection
readonly=False
related='pos_config_id.picking_policy'
pos_picking_type_id
Many2one
readonly=False
related='pos_config_id.picking_type_id'
pos_pricelist_id
Many2one → product.pricelist
compute='_compute_pos_pricelist_id'
readonly=False
store=True
string='Default Pricelist'
args: 'product.pricelist'
pos_printer_ids
Many2many
readonly=False
related='pos_config_id.printer_ids'
pos_proxy_ip
Char
readonly=False
related='pos_config_id.proxy_ip'
string='IP Address'
pos_receipt_footer
Text
compute='_compute_pos_receipt_header_footer'
readonly=False
store=True
string='Receipt Footer'
pos_receipt_header
Text
compute='_compute_pos_receipt_header_footer'
readonly=False
store=True
string='Receipt Header'
pos_restrict_price_control
Boolean
readonly=False
related='pos_config_id.restrict_price_control'
pos_rounding_method
Many2one
readonly=False
related='pos_config_id.rounding_method'
pos_route_id
Many2one
readonly=False
related='pos_config_id.route_id'
pos_selectable_categ_ids
Many2many → pos.category
compute='_compute_pos_selectable_categ_ids'
args: 'pos.category'
pos_sequence_id
Many2one
related='pos_config_id.sequence_id'
pos_set_maximum_difference
Boolean
readonly=False
related='pos_config_id.set_maximum_difference'
pos_ship_later
Boolean
readonly=False
related='pos_config_id.ship_later'
pos_show_category_images
Boolean
readonly=False
related='pos_config_id.show_category_images'
pos_show_product_images
Boolean
readonly=False
related='pos_config_id.show_product_images'
pos_tax_regime_selection
Boolean
readonly=False
related='pos_config_id.tax_regime_selection'
pos_tip_product_id
Many2one → product.product
compute='_compute_pos_tip_product_id'
readonly=False
store=True
string='Tip Product'
args: 'product.product'
pos_trusted_config_ids
Many2many
domain="[('id', '!=', pos_config_id), ('module_pos_restaurant', '=', False)]"
readonly=False
related='pos_config_id.trusted_config_ids'
pos_use_pricelist
Boolean
readonly=False
related='pos_config_id.use_pricelist'
pos_warehouse_id
Many2one
readonly=False
related='pos_config_id.warehouse_id'
string='Warehouse (PoS)'
sale_tax_id
Many2one → account.tax
check_company=True
readonly=False
related='company_id.account_sale_tax_id'
string='Default Sale Tax'
args: 'account.tax'
update_stock_quantities
Selection
readonly=False
related='company_id.point_of_sale_update_stock_quantities'
action_pos_config_create_new(self)
create(self, vals_list)
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.
pos_order_count
Integer
compute='_compute_pos_order'
groups='point_of_sale.group_pos_user'
help='The number of point of sales orders related to this customer'
pos_order_ids
One2many → pos.order
readonly=True
args: 'pos.order', 'partner_id'
action_view_pos_order(self)
open_commercial_entity(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
pos_order_id
Many2one → pos.order
index=True
args: 'pos.order'
pos_session_id
Many2one → pos.session
index=True
args: 'pos.session'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
pos_type_id
Many2one → stock.picking.type
copy=False
string='Point of Sale Operation Type'
args: 'stock.picking.type'
No public methods.
is_pos_groupable
Boolean
help='Check if you want to group products of this category in point of sale orders'
string='Group Products in POS'
No public methods.
is_pos_groupable
Boolean
readonly=False
related='category_id.is_pos_groupable'
No public methods.
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_product_template_form_view |
product.template.product.form.account.inherit | product.template | xpath | Inherits account.product_template_form_view |
digest_digest_view_form |
digest.digest.view.form.inherit.sale.order | digest.digest | xpath | Inherits digest.digest_digest_view_form |
point_of_sale.index |
POS Index | ir.ui.view | qweb | New |
point_of_sale.qunit_suite |
point_of_sale.qunit_suite | ir.ui.view | qweb | New |
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_pos_combo_form |
pos.combo.form | pos.combo | form | New |
point_of_sale.view_pos_combo_tree |
pos.combo.tree | pos.combo | tree | New |
pos_config_view_form |
pos.config.form.view | pos.config | form | 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.tree | pos.payment.method | tree | New |
pos_rounding_form_view_inherited |
pos.cash.rounding.form.inherited | account.cash.rounding | xpath | Inherits account.rounding_form_view |
product_pos_category_form_view |
pos.category.form | pos.category | form | New |
product_pos_category_tree_view |
pos.category.tree | pos.category | tree | New |
product_product_tree_view |
product.product.product.tree.inherit | product.product | field | Inherits product.product_product_tree_view |
product_template_form_view |
product.template.form.inherit | product.template | xpath | Inherits product.product_template_form_view |
product_template_only_form_view |
product.template.only.form.inherit | product.template | xpath | Inherits product.product_template_only_form_view |
product_template_only_form_view |
product.template.product.form.inherit | product.template | xpath | Inherits product.product_template_only_form_view |
product_template_search_view_pos |
product.template.search.pos.form | product.template | field | Inherits product.product_template_search_view |
product_template_tree_view |
product.template.product.tree.inherit | product.template | field | Inherits product.product_template_tree_view |
product_uom_categ_form_view |
uom.category.form.inherit | uom.category | xpath | Inherits uom.product_uom_categ_form_view |
product_uom_categ_tree_view |
uom.category.tree.inherit | uom.category | xpath | Inherits uom.product_uom_categ_tree_view |
report_pos_order_view_tree |
report.pos.order.view.tree | report.pos.order | tree | 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 | xpath | 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 |
view_account_journal_pos_user_form |
account.journal.pos.user.form.inherit | account.journal | xpath | Inherits account.view_account_journal_form |
view_form_pos_close_session_wizard |
pos.close.session.wizard.form | pos.close.session.wizard | form | New |
view_partner_pos_kanban |
res.partner.pos.kanban.inherit | res.partner | field | Inherits base.res_partner_kanban_view |
view_partner_property_form |
res.partner.pos.form.inherit | res.partner | div | Inherits base.view_partner_form |
view_pos_bill_form |
pos.bill.form | pos.bill | form | New |
view_pos_bill_tree |
pos.bill.tree | pos.bill | tree | 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.tree.view | pos.config | tree | 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_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.tree | pos.order.line | tree | 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.tree | pos.order | tree | New |
view_pos_order_tree_all_sales_lines |
pos.order.line.all.sales.tree | pos.order.line | tree | New |
view_pos_order_tree_no_session_id |
pos.order.tree_no_session_id | pos.order | xpath | 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.tree | pos.payment | tree | New |
view_pos_pos_form |
pos.order.form | pos.order | form | New |
view_pos_printer |
Preparation Printers | pos.printer | tree | 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.tree.view | pos.session | tree | 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 |
pos_session_id
Many2one → pos.session
copy=False
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 (0)No public methods.
No new fields.
Public methods (1)action_archive(self)
pos_payment_method_ids
One2many → pos.payment.method
string='Point of Sale Payment Methods'
args: 'pos.payment.method', 'journal_id'
action_archive(self)
pos_order_ids
One2many → pos.order
pos_payment_ids
One2many → pos.payment
pos_refunded_invoice_ids
Many2many → account.move
No public methods.
No new fields.
Public methods (0)No public methods.
force_outstanding_account_id
Many2one → account.account
check_company=True
args: 'account.account', 'Forced Outstanding Account'
pos_payment_method_id
Many2one → pos.payment.method
pos_session_id
Many2one → pos.session
No public methods.
No new fields.
Public methods (1)write(self, vals)
type
Selection
ondelete={'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.
kpi_pos_total
Boolean
kpi_pos_total_value
Monetary
compute='_compute_kpi_pos_total_value'
No public methods.
name
Char
pos_config_ids
Many2many → pos.config
string='Point of Sales'
args: 'pos.config'
value
Float
digits=(16, 4)
required=True
args: 'Coin/Bill Value'
name_create(self, name)
child_id
One2many → pos.category
string='Children Categories'
args: 'pos.category', 'parent_id'
has_image
Boolean
compute='_compute_has_image'
image_128
Image
max_height=128
max_width=128
args: 'Image'
name
Char
required=True
string='Category Name'
translate=True
parent_id
Many2one → pos.category
index=True
string='Parent Category'
args: 'pos.category'
sequence
Integer
help='Gives the sequence order when displaying a list of product categories.'
No public methods.
account_id
Many2one → account.account
account_readonly
Boolean
amount_to_balance
Float
message
Text
close_session(self)
base_price
Float
compute='_compute_base_price'
help='The value from which pro-rating of the component price is based. This is to ensure that whatever product the user chooses for a component, it will always be they same price.'
string='Product Price'
combo_line_ids
One2many → pos.combo.line
copy=True
string='Products in Combo'
args: 'pos.combo.line', 'combo_id'
name
Char
required=True
string='Name'
num_of_products
Integer
compute='_compute_num_of_products'
args: 'No of Products'
sequence
Integer
copy=False
No public methods.
combo_id
Many2one → pos.combo
combo_price
Float
default=0.0
args: 'Price Extra'
lst_price
Float
related='product_id.lst_price'
args: 'Original Price'
product_id
Many2one → product.product
required=True
string='Product'
args: 'product.product'
No public methods.
active
Boolean
default=True
amount_authorized_diff
Float
help='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_payment
Boolean
default=True
help='Automatically validates orders paid with a payment terminal.'
available_pricelist_ids
Many2many → product.pricelist
help='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'
cash_control
Boolean
compute='_compute_cash_control'
help='Check the amount of the cashbox at opening and closing.'
string='Advanced Cash Control'
cash_rounding
Boolean
string='Cash Rounding'
company_has_template
Boolean
compute='_compute_company_has_template'
string='Company has chart of accounts'
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
compute='_compute_currency'
compute_sudo=True
string='Currency'
args: 'res.currency'
current_session_id
Many2one → pos.session
compute='_compute_current_session'
string='Current Session'
args: 'pos.session'
current_session_state
Char
compute='_compute_current_session'
current_user_id
Many2one → res.users
compute='_compute_current_session_user'
string='Current Session Responsible'
args: 'res.users'
default_bill_ids
Many2many → pos.bill
string='Coins/Bills'
args: 'pos.bill'
default_fiscal_position_id
Many2one → account.fiscal.position
string='Default Fiscal Position'
args: 'account.fiscal.position'
fiscal_position_ids
Many2many → account.fiscal.position
help='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_id
Many2one → res.groups
default=_get_group_pos_manager
help='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_id
Many2one → res.groups
default=_get_group_pos_user
help='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_session
Boolean
compute='_compute_current_session'
iface_available_categ_ids
Many2many → pos.category
help='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_scrollbars
Boolean
help='For imprecise industrial touchscreens.'
args: 'Large Scrollbars'
iface_cashdrawer
Boolean
help='Automatically open the cashdrawer.'
string='Cashdrawer'
iface_customer_facing_display
Boolean
compute='_compute_customer_facing_display'
iface_customer_facing_display_background_image_1920
Image
compute='_compute_iface_customer_facing_display_background_image_1920'
max_height=1920
max_width=1920
store=True
string='Background Image'
iface_customer_facing_display_local
Boolean
help='Show checkout to customers.'
string='Local Customer Facing Display'
iface_customer_facing_display_via_proxy
Boolean
help='Show checkout to customers with a remotely-connected screen.'
string='Customer Facing Display'
iface_electronic_scale
Boolean
help='Enables Electronic Scale integration.'
string='Electronic Scale'
iface_print_auto
Boolean
default=False
help='The receipt will automatically be printed at the end of each order.'
string='Automatic Receipt Printing'
iface_print_skip_screen
Boolean
default=True
help='The receipt screen will be skipped if the receipt can be printed automatically.'
string='Skip Preview Screen'
iface_print_via_proxy
Boolean
help='Bypass browser printing and prints via the hardware proxy.'
string='Print via Proxy'
iface_scan_via_proxy
Boolean
help='Enable barcode scanning with a remotely connected barcode scanner and card swiping with a Vantiv card reader.'
string='Scan via Proxy'
iface_start_categ_id
Many2one → pos.category
help='The point of sale will display this product category by default. If no category is specified, all available products will be shown.'
string='Initial Category'
args: 'pos.category'
iface_tax_included
Selection
default='total'
required=True
string='Tax Display'
args: [('subtotal', 'Tax-Excluded Price'), ('total', 'Tax-Included Price')]
iface_tipproduct
Boolean
string='Product tips'
invoice_journal_id
Many2one → account.journal
check_company=True
default=_default_invoice_journal
domain=[('type', '=', 'sale')]
help='Accounting journal used to create invoices.'
string='Invoice Journal'
args: 'account.journal'
is_header_or_footer
Boolean
is_installed_account_accountant
Boolean
compute='_compute_is_installed_account_accountant'
string='Is the Full Accounting Installed'
is_margins_costs_accessible_to_every_user
Boolean
default=False
help='When disabled, only PoS manager can view the margin and cost of product among the Product info.'
string='Margins & Costs'
is_order_printer
Boolean
is_posbox
Boolean
journal_id
Many2one → account.journal
check_company=True
default=_default_sale_journal
domain=[('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_session_closing_cash
Float
compute='_compute_last_session'
last_session_closing_date
Date
compute='_compute_last_session'
limit_categories
Boolean
manual_discount
Boolean
default=True
string='Line Discounts'
module_pos_discount
Boolean
module_pos_hr
Boolean
help='Show employee login screen'
module_pos_mercury
Boolean
string='Integrated Card Payments'
module_pos_restaurant
Boolean
name
Char
help='An internal identification of the point of sale.'
required=True
string='Point of Sale'
number_of_rescue_session
Integer
compute='_compute_current_session'
string='Number of Rescue Session'
only_round_cash_method
Boolean
string='Only apply rounding on cash'
other_devices
Boolean
help='Connect devices to your PoS without an IoT Box.'
string='Other Devices'
payment_method_ids
Many2many → pos.payment.method
copy=False
default=<expr>
string='Payment Methods'
args: 'pos.payment.method'
picking_policy
Selection
default='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=True
string='Shipping Policy'
args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')]
picking_type_id
Many2one → stock.picking.type
default=_default_picking_type_id
domain="[('code', '=', 'outgoing'), ('warehouse_id.company_id', '=', company_id)]"
ondelete='restrict'
required=True
string='Operation Type'
args: 'stock.picking.type'
pos_session_duration
Char
compute='_compute_current_session_user'
pos_session_state
Char
compute='_compute_current_session_user'
pos_session_username
Char
compute='_compute_current_session_user'
pricelist_id
Many2one → product.pricelist
help='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_ids
Many2many → pos.printer
string='Order Printers'
args: 'pos.printer', 'pos_config_printer_rel', 'config_id', 'printer_id'
proxy_ip
Char
help='The hostname or ip address of the hardware proxy, Will be autodetected if left empty.'
size=45
string='IP Address'
receipt_footer
Text
help='A short text that will be inserted as a footer in the printed receipt.'
string='Receipt Footer'
receipt_header
Text
help='A short text that will be inserted as a header in the printed receipt.'
string='Receipt Header'
restrict_price_control
Boolean
help='Only users with Manager access rights for PoS app can modify the product prices on orders.'
string='Restrict Price Modifications to Managers'
rounding_method
Many2one → account.cash.rounding
string='Cash rounding'
args: 'account.cash.rounding'
route_id
Many2one → stock.route
string='Spefic route for products delivered later.'
args: 'stock.route'
sequence_id
Many2one → ir.sequence
copy=False
help='This sequence is automatically created by Odoo but you can change it to customize the reference numbers of your orders.'
ondelete='restrict'
readonly=True
string='Order IDs Sequence'
args: 'ir.sequence'
sequence_line_id
Many2one → ir.sequence
copy=False
help='This sequence is automatically created by Odoo but you can change it to customize the reference numbers of your orders lines.'
readonly=True
string='Order Line IDs Sequence'
args: 'ir.sequence'
session_ids
One2many → pos.session
string='Sessions'
args: 'pos.session', 'config_id'
set_maximum_difference
Boolean
help='Set a maximum difference allowed between the expected and counted money during the closing of the session.'
args: 'Set Maximum Difference'
ship_later
Boolean
string='Ship Later'
start_category
Boolean
default=False
args: 'Start Category'
tax_regime_selection
Boolean
tip_product_id
Many2one → product.product
default=_get_default_tip_product
help='This product is used as reference on customer receipts.'
string='Tip Product'
args: 'product.product'
trusted_config_ids
Many2many → pos.config
column1='is_trusting'
column2='is_trusted'
domain="[('id', '!=', pos_config_id), ('module_pos_restaurant', '=', False), ('company_id', '=', company_id)]"
relation='pos_config_trust_relation'
string='Trusted Point of Sale Configurations'
args: 'pos.config'
use_pricelist
Boolean
uuid
Char
copy=False
default=<expr>
help='A globally unique identifier for this pos configuration, used to prevent conflicts in client-generated data.'
readonly=True
warehouse_id
Many2one → stock.warehouse
default=_default_warehouse_id
ondelete='restrict'
args: 'stock.warehouse'
action_pos_config_modal_edit(self)
add_cash_payment_method(self)
assign_payment_journals(self, company)
create(self, vals_list)
execute(self)
generate_pos_journal(self, company)
get_limited_partners_loading(self)
get_limited_product_count(self)
get_limited_products_loading(self, fields)
open_existing_session_cb(self)
open_opened_rescue_session_form(self)
open_ui(self)
post_install_pos_localisation(self, companies=False)
setup_defaults(self, company)
setup_invoice_journal(self, company)
toggle_images(self, for_products, for_categories)
unlink(self)
write(self, vals)
pos_session_id
Many2one → pos.session
required=True
args: 'pos.session'
generate_report(self)
end_date
Datetime
default=fields.Datetime.now
required=True
pos_config_ids
Many2many → pos.config
default=<expr>
args: 'pos.config', 'pos_detail_configs'
start_date
Datetime
default=_default_start_date
required=True
generate_report(self)
amount
Float
default=_default_amount
digits=0
required=True
config_id
Many2one → pos.config
default=_default_config
required=True
string='Point of Sale Configuration'
args: 'pos.config'
payment_date
Datetime
default=<expr>
required=True
string='Payment Date'
payment_method_id
Many2one → pos.payment.method
default=_default_payment_method
required=True
string='Payment Method'
args: 'pos.payment.method'
payment_name
Char
string='Payment Reference'
check(self)
launch_payment(self)
account_move
Many2one → account.move
copy=False
index='btree_not_null'
readonly=True
string='Invoice'
args: 'account.move'
amount_paid
Float
digits=0
required=True
string='Paid'
amount_return
Float
digits=0
readonly=True
required=True
string='Returned'
amount_tax
Float
digits=0
readonly=True
required=True
string='Taxes'
amount_total
Float
digits=0
readonly=True
required=True
string='Total'
company_id
Many2one → res.company
index=True
readonly=True
required=True
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
readonly=False
related='session_id.config_id'
store=True
string='Point of Sale'
args: 'pos.config'
country_code
Char
related='company_id.account_fiscal_country_id.code'
currency_id
Many2one → res.currency
related='config_id.currency_id'
string='Currency'
args: 'res.currency'
currency_rate
Float
compute='_compute_currency_rate'
compute_sudo=True
digits=0
help='The rate of the currency to the currency of rate applicable at the date of the order'
readonly=True
store=True
args: 'Currency Rate'
date_order
Datetime
default=fields.Datetime.now
index=True
readonly=True
string='Date'
failed_pickings
Boolean
compute='_compute_picking_count'
fiscal_position_id
Many2one → account.fiscal.position
comodel_name='account.fiscal.position'
readonly=False
string='Fiscal Position'
has_refundable_lines
Boolean
compute='_compute_has_refundable_lines'
args: 'Has Refundable Lines'
is_invoiced
Boolean
compute='_compute_is_invoiced'
args: 'Is Invoiced'
is_refunded
Boolean
compute='_compute_refund_related_fields'
is_tipped
Boolean
readonly=True
args: 'Is this already tipped?'
is_total_cost_computed
Boolean
compute='_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_change
Char
help='Last printed state of the order'
string='Last preparation change'
lines
One2many → pos.order.line
copy=True
string='Order Lines'
args: 'pos.order.line', 'order_id'
margin
Monetary
compute='_compute_margin'
string='Margin'
margin_percent
Float
compute='_compute_margin'
digits=(12, 4)
string='Margin (%)'
name
Char
copy=False
default='/'
readonly=True
required=True
string='Order Ref'
nb_print
Integer
copy=False
default=0
readonly=True
string='Number of Print'
note
Text
string='Internal Notes'
partner_id
Many2one → res.partner
change_default=True
index='btree_not_null'
string='Customer'
args: 'res.partner'
payment_ids
One2many → pos.payment
readonly=True
string='Payments'
args: 'pos.payment', 'pos_order_id'
picking_count
Integer
compute='_compute_picking_count'
picking_ids
One2many → stock.picking
picking_type_id
Many2one → stock.picking.type
readonly=False
related='session_id.config_id.picking_type_id'
string='Operation Type'
args: 'stock.picking.type'
pos_reference
Char
copy=False
index=True
readonly=True
string='Receipt Number'
pricelist_id
Many2one → product.pricelist
string='Pricelist'
args: 'product.pricelist'
procurement_group_id
Many2one → procurement.group
copy=False
args: 'procurement.group', 'Procurement Group'
refund_orders_count
Integer
compute='_compute_refund_related_fields'
args: 'Number of Refund Orders'
refunded_order_ids
Many2many → pos.order
compute='_compute_refund_related_fields'
args: 'pos.order'
refunded_orders_count
Integer
compute='_compute_refund_related_fields'
sale_journal
Many2one → account.journal
ondelete='restrict'
readonly=True
related='session_id.config_id.journal_id'
store=True
string='Sales Journal'
args: 'account.journal'
sequence_number
Integer
default=1
help='A session-unique sequence number for the order'
string='Sequence Number'
session_id
Many2one → pos.session
domain="[('state', '=', 'opened')]"
index=True
required=True
string='Session'
args: 'pos.session'
session_move_id
Many2one → account.move
copy=False
readonly=True
related='session_id.move_id'
string='Session Journal Entry'
args: 'account.move'
shipping_date
Date
state
Selection
copy=False
default='draft'
index=True
readonly=True
args: [('draft', 'New'), ('cancel', 'Cancelled'), ('paid', 'Paid'), ('done', 'Posted'), ('invoiced', 'Invoiced')], 'Status'
ticket_code
Char
help='5 digits alphanumeric code to be used by portal user to request an invoice'
tip_amount
Float
digits=0
readonly=True
string='Tip Amount'
to_invoice
Boolean
copy=False
args: 'To invoice'
tracking_number
Char
compute='_compute_tracking_number'
search='_search_tracking_number'
string='Order Number'
user_id
Many2one → res.users
comodel_name='res.users'
default=<expr>
help='Person who uses the cash register. It can be a reliever, a student or an interim employee.'
string='Responsible'
action_pos_order_cancel(self)
action_pos_order_invoice(self)
action_pos_order_paid(self)
action_receipt_to_customer(self, name, client, ticket)
action_stock_picking(self)
action_view_invoice(self)
action_view_refund_orders(self)
action_view_refunded_orders(self)
add_payment(self, data)
create(self, vals_list)
create_from_ui(self, orders, draft=False)
export_for_ui(self)
export_for_ui_shared_order(self, config_id)
is_already_paid(self)
refund(self)
remove_from_ui(self, server_ids)
search_paid_order_ids(self, config_id, domain, limit, offset)
write(self, vals)
attribute_value_ids
Many2many → product.template.attribute.value
string='Selected Attributes'
args: 'product.template.attribute.value'
combo_line_ids
One2many → pos.order.line
string='Combo Lines'
args: 'pos.order.line', 'combo_parent_id'
combo_parent_id
Many2one → pos.order.line
string='Combo Parent'
args: 'pos.order.line'
company_id
Many2one → res.company
related='order_id.company_id'
store=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
related='order_id.currency_id'
args: 'res.currency'
custom_attribute_value_ids
One2many → product.attribute.custom.value
comodel_name='product.attribute.custom.value'
inverse_name='pos_order_line_id'
readonly=False
store=True
string='Custom Values'
customer_note
Char
discount
Float
default=0.0
digits=0
string='Discount (%)'
full_product_name
Char
is_total_cost_computed
Boolean
help='Allows to know if the total cost has already been computed or not'
margin
Monetary
compute='_compute_margin'
string='Margin'
margin_percent
Float
compute='_compute_margin'
digits=(12, 4)
string='Margin (%)'
name
Char
copy=False
required=True
string='Line No'
notice
Char
string='Discount Notice'
order_id
Many2one → pos.order
index=True
ondelete='cascade'
required=True
string='Order Ref'
args: 'pos.order'
pack_lot_ids
One2many → pos.pack.operation.lot
string='Lot/serial Number'
args: 'pos.pack.operation.lot', 'pos_order_line_id'
price_extra
Float
string='Price extra'
price_subtotal
Float
digits=0
readonly=True
required=True
string='Subtotal w/o Tax'
price_subtotal_incl
Float
digits=0
readonly=True
required=True
string='Subtotal'
price_unit
Float
digits=0
string='Unit Price'
product_id
Many2one → product.product
change_default=True
domain=[('sale_ok', '=', True)]
required=True
string='Product'
args: 'product.product'
product_uom_id
Many2one → uom.uom
related='product_id.uom_id'
string='Product UoM'
args: 'uom.uom'
qty
Float
default=1
digits='Product Unit of Measure'
args: 'Quantity'
refund_orderline_ids
One2many → pos.order.line
help='Orderlines in this field are the lines that refunded this orderline.'
args: 'pos.order.line', 'refunded_orderline_id', 'Refund Order Lines'
refunded_orderline_id
Many2one → pos.order.line
help='If this orderline is a refund, then the refunded orderline is specified in this field.'
args: 'pos.order.line', 'Refunded Order Line'
refunded_qty
Float
compute='_compute_refund_qty'
help='Number of items refunded in this orderline.'
args: 'Refunded Quantity'
skip_change
Boolean
tax_ids
Many2many → account.tax
readonly=True
string='Taxes'
args: 'account.tax'
tax_ids_after_fiscal_position
Many2many → account.tax
compute='_get_tax_ids_after_fiscal_position'
string='Taxes to Apply'
args: 'account.tax'
total_cost
Float
digits='Product Price'
readonly=True
string='Total cost'
uuid
Char
copy=False
readonly=True
string='Uuid'
create(self, vals_list)
export_for_ui(self)
write(self, values)
lot_name
Char
order_id
Many2one → pos.order
readonly=False
related='pos_order_line_id.order_id'
args: 'pos.order'
pos_order_line_id
Many2one → pos.order.line
product_id
Many2one → product.product
readonly=False
related='pos_order_line_id.product_id'
args: 'product.product'
export_for_ui(self)
account_move_id
Many2one → account.move
index='btree_not_null'
args: 'account.move'
amount
Monetary
currency_field='currency_id'
help='Total amount of the payment.'
readonly=True
required=True
string='Amount'
card_type
Char
cardholder_name
Char
company_id
Many2one → res.company
related='pos_order_id.company_id'
store=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
related='pos_order_id.currency_id'
string='Currency'
args: 'res.currency'
currency_rate
Float
help='Conversion rate from company currency to order currency.'
related='pos_order_id.currency_rate'
string='Conversion Rate'
is_change
Boolean
default=False
string='Is this payment change?'
name
Char
readonly=True
string='Label'
partner_id
Many2one → res.partner
related='pos_order_id.partner_id'
string='Customer'
args: 'res.partner'
payment_date
Datetime
default=<expr>
readonly=True
required=True
string='Date'
payment_method_id
Many2one → pos.payment.method
required=True
string='Payment Method'
args: 'pos.payment.method'
payment_status
Char
pos_order_id
Many2one → pos.order
index=True
required=True
string='Order'
args: 'pos.order'
session_id
Many2one → pos.session
index=True
related='pos_order_id.session_id'
store=True
string='Session'
args: 'pos.session'
ticket
Char
transaction_id
Char
export_for_ui(self)
active
Boolean
default=True
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
config_ids
Many2many → pos.config
string='Point of Sale'
args: 'pos.config'
hide_use_payment_terminal
Boolean
compute='_compute_hide_use_payment_terminal'
image
Image
max_height=50
max_width=50
args: 'Image'
is_cash_count
Boolean
compute='_compute_is_cash_count'
store=True
string='Cash'
journal_id
Many2one → account.journal
domain=['|', '&', ('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.'
ondelete='restrict'
string='Journal'
args: 'account.journal'
name
Char
help='Defines the name of the payment method that will be displayed in the Point of Sale when the payments are selected.'
required=True
string='Method'
translate=True
open_session_ids
Many2many → pos.session
compute='_compute_open_session_ids'
help='Open PoS sessions that are using this payment method.'
string='Pos Sessions'
args: 'pos.session'
outstanding_account_id
Many2one → account.account
help='Leave empty to use the default account from the company setting.\nAccount used as outstanding account when creating accounting payment records for bank payments.'
ondelete='restrict'
string='Outstanding Account'
args: 'account.account'
receivable_account_id
Many2one → account.account
domain=[('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'
sequence
Integer
copy=False
split_transactions
Boolean
default=False
help='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'
type
Selection
compute='_compute_type'
selection=[('cash', 'Cash'), ('bank', 'Bank'), ('pay_later', 'Customer Account')]
use_payment_terminal
Selection
help='Record payments with a terminal on this journal.'
selection=<expr>
string='Use a Payment Terminal'
copy(self, default=None)
write(self, vals)
name
Char
default='Printer'
help='An internal identification of the printer'
required=True
args: 'Printer Name'
printer_type
Selection
default='iot'
selection=[('iot', ' Use a printer connected to the IoT Box')]
string='Printer Type'
product_categories_ids
Many2many → pos.category
string='Printed Product Categories'
args: 'pos.category', 'printer_category_rel', 'printer_id', 'category_id'
proxy_ip
Char
help="The IP Address or hostname of the Printer's hardware proxy"
args: 'Proxy IP Address'
No public methods.
access_token
Char
copy=False
args: 'Security Token'
bank_payment_ids
One2many → account.payment
help='Account payments representing aggregated and bank split payments.'
args: 'account.payment', 'pos_session_id', 'Bank Payments'
cash_control
Boolean
compute='_compute_cash_control'
string='Has Cash Control'
cash_journal_id
Many2one → account.journal
compute='_compute_cash_journal'
store=True
string='Cash Journal'
args: 'account.journal'
cash_real_transaction
Monetary
readonly=True
string='Transaction'
cash_register_balance_end
Monetary
compute='_compute_cash_balance'
help='Opening balance summed to all cash transactions.'
readonly=True
string='Theoretical Closing Balance'
cash_register_balance_end_real
Monetary
readonly=True
string='Ending Balance'
cash_register_balance_start
Monetary
readonly=True
string='Starting Balance'
cash_register_difference
Monetary
compute='_compute_cash_balance'
help='Difference between the theoretical closing balance and the real closing balance.'
readonly=True
string='Before Closing Difference'
cash_register_total_entry_encoding
Monetary
compute='_compute_cash_balance'
readonly=True
string='Total Cash Transaction'
closing_notes
Text
string='Closing Notes'
company_id
Many2one → res.company
readonly=True
related='config_id.company_id'
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
index=True
required=True
string='Point of Sale'
args: 'pos.config'
currency_id
Many2one → res.currency
readonly=False
related='config_id.currency_id'
string='Currency'
args: 'res.currency'
failed_pickings
Boolean
compute='_compute_picking_count'
is_in_company_currency
Boolean
compute='_compute_is_in_company_currency'
args: 'Is Using Company Currency'
login_number
Integer
default=0
help='A sequence number that is incremented each time a user resumes the pos session'
string='Login Sequence Number'
move_id
Many2one → account.move
index=True
string='Journal Entry'
args: 'account.move'
name
Char
default='/'
readonly=True
required=True
string='Session ID'
opening_notes
Text
string='Opening Notes'
order_count
Integer
compute='_compute_order_count'
order_ids
One2many → pos.order
string='Orders'
args: 'pos.order', 'session_id'
payment_method_ids
Many2many → pos.payment.method
related='config_id.payment_method_ids'
string='Payment Methods'
args: 'pos.payment.method'
picking_count
Integer
compute='_compute_picking_count'
picking_ids
One2many → stock.picking
rescue
Boolean
copy=False
help='Auto-generated session for orphan orders, ignored in constraints'
readonly=True
string='Recovery Session'
sequence_number
Integer
default=1
help='A sequence number that is incremented with each order'
string='Order Sequence Number'
start_at
Datetime
readonly=True
string='Opening Date'
state
Selection
copy=False
default='opening_control'
index=True
readonly=True
required=True
string='Status'
args: POS_SESSION_STATE
statement_line_ids
One2many → account.bank.statement.line
readonly=True
string='Cash Lines'
args: 'account.bank.statement.line', 'pos_session_id'
stop_at
Datetime
copy=False
readonly=True
string='Closing Date'
total_payments_amount
Float
compute='_compute_total_payments_amount'
string='Total Payments Amount'
update_stock_at_closing
Boolean
user_id
Many2one → res.users
default=<expr>
index=True
ondelete='restrict'
readonly=False
required=True
string='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)
create(self, vals_list)
find_product_by_barcode(self, barcode)
get_closing_control_data(self)
get_onboarding_data(self)
get_pos_ui_account_fiscal_positions_by_ids(self, fp_ids)
get_pos_ui_product_pricelist_item_by_product(self, product_tmpl_ids, product_ids)
get_pos_ui_product_pricelists_by_ids(self, pricelist_ids)
get_pos_ui_product_product_by_params(self, custom_search_params)
get_pos_ui_res_partner_by_params(self, custom_search_params)
get_total_discount(self)
load_pos_data(self)
load_product_frontend(self)
log_partner_message(self, partner_id, action, message_type)
login(self)
open_frontend_cb(self)
post_closing_cash_details(self, counted_cash)
set_cashbox_pos(self, cashbox_value: int, notes: str)
show_cash_register(self)
show_journal_items(self)
try_cash_in_out(self, _type, amount, reason, extras)
unlink(self)
update_closing_control_state_session(self, notes)
No new fields.
Public methods (0)No public methods.
pos_order_id
Many2one → pos.order
No public methods.
pos_order_line_id
Many2one → pos.order.line
ondelete='cascade'
string='PoS Order Line'
args: 'pos.order.line'
No public methods.
No new fields.
Public methods (1)get_product_info_pos(self, price, quantity, pos_config_id)
available_in_pos
Boolean
default=False
help='Check if you want this product to appear in the Point of Sale.'
string='Available in POS'
combo_ids
Many2many → pos.combo
string='Combinations'
args: 'pos.combo'
detailed_type
Selection
ondelete={'combo': 'set consu'}
selection_add=[('combo', 'Combo')]
pos_categ_ids
Many2many → pos.category
help='Category used in the Point of Sale.'
string='Point of Sale Category'
args: 'pos.category'
to_weight
Boolean
help='Check if the product should be weighted using the hardware scale integration.'
string='To Weigh With Scale'
type
Selection
ondelete={'combo': 'set consu'}
selection_add=[('combo', 'Combo')]
write(self, vals)
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)
average_price
Float
group_operator='avg'
readonly=True
string='Average Price'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
readonly=True
string='Point of Sale'
args: 'pos.config'
date
Datetime
readonly=True
string='Order Date'
delay_validation
Integer
readonly=True
string='Delay Validation'
invoiced
Boolean
readonly=True
journal_id
Many2one → account.journal
readonly=True
string='Journal'
args: 'account.journal'
margin
Float
readonly=True
string='Margin'
nbr_lines
Integer
readonly=True
string='Sale Line Count'
order_id
Many2one → pos.order
readonly=True
string='Order'
args: 'pos.order'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
price_sub_total
Float
readonly=True
string='Subtotal w/o discount'
price_total
Float
readonly=True
string='Total Price'
pricelist_id
Many2one → product.pricelist
readonly=True
string='Pricelist'
args: 'product.pricelist'
product_categ_id
Many2one → product.category
readonly=True
string='Product Category'
args: 'product.category'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_qty
Integer
readonly=True
string='Product Quantity'
product_tmpl_id
Many2one → product.template
readonly=True
string='Product Template'
args: 'product.template'
session_id
Many2one → pos.session
readonly=True
string='Session'
args: 'pos.session'
state
Selection
readonly=True
string='Status'
args: [('draft', 'New'), ('paid', 'Paid'), ('done', 'Posted'), ('invoiced', 'Invoiced'), ('cancel', 'Cancelled')]
total_discount
Float
readonly=True
string='Total Discount'
user_id
Many2one → res.users
readonly=True
string='User'
args: 'res.users'
init(self)
point_of_sale_ticket_unique_code
Boolean
help='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_quantities
Selection
default='closing'
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 (faster)'), ('real', 'In real time (accurate but slower)')]
point_of_sale_use_ticket_qr_code
Boolean
help='Add a QR code on the ticket, which the user can scan to request the invoice linked to its order.'
string='Use QR code on ticket'
validate_period_lock_date(self)
account_default_pos_receivable_account_id
Many2one
check_company=True
readonly=False
related='company_id.account_default_pos_receivable_account_id'
string='Default Account Receivable (PoS)'
barcode_nomenclature_id
Many2one → barcode.nomenclature
readonly=False
related='company_id.nomenclature_id'
args: 'barcode.nomenclature'
is_kiosk_mode
Boolean
default=False
string='Is Kiosk Mode'
module_pos_adyen
Boolean
help='The transactions are processed by Adyen. Set your Adyen credentials on the related payment method.'
string='Adyen Payment Terminal'
module_pos_mercury
Boolean
help='The transactions are processed by Vantiv. Set your Vantiv credentials on the related payment method.'
string='Vantiv Payment Terminal'
module_pos_paytm
Boolean
help='The transactions are processed by PayTM. Set your PayTM credentials on the related payment method.'
string='PayTM Payment Terminal'
module_pos_preparation_display
Boolean
help='Show orders on the preparation display screen.'
string='Preparation Display'
module_pos_six
Boolean
help='The transactions are processed by Six. Set the IP address of the terminal on the related payment method.'
string='Six Payment Terminal'
module_pos_stripe
Boolean
help='The transactions are processed by Stripe. Set your Stripe credentials on the related payment method.'
string='Stripe Payment Terminal'
point_of_sale_ticket_unique_code
Boolean
readonly=False
related='company_id.point_of_sale_ticket_unique_code'
point_of_sale_use_ticket_qr_code
Boolean
readonly=False
related='company_id.point_of_sale_use_ticket_qr_code'
pos_allowed_pricelist_ids
Many2many → product.pricelist
compute='_compute_pos_allowed_pricelist_ids'
args: 'product.pricelist'
pos_amount_authorized_diff
Float
readonly=False
related='pos_config_id.amount_authorized_diff'
pos_auto_validate_terminal_payment
Boolean
readonly=False
related='pos_config_id.auto_validate_terminal_payment'
string='Automatically validates orders paid with a payment terminal.'
pos_available_pricelist_ids
Many2many → product.pricelist
compute='_compute_pos_pricelist_id'
readonly=False
store=True
string='Available Pricelists'
args: 'product.pricelist'
pos_cash_control
Boolean
related='pos_config_id.cash_control'
pos_cash_rounding
Boolean
readonly=False
related='pos_config_id.cash_rounding'
string='Cash Rounding (PoS)'
pos_company_has_template
Boolean
related='pos_config_id.company_has_template'
pos_config_id
Many2one → pos.config
default=<expr>
string='Point of Sale'
args: 'pos.config'
pos_default_bill_ids
Many2many
readonly=False
related='pos_config_id.default_bill_ids'
pos_default_fiscal_position_id
Many2one → account.fiscal.position
check_company=True
compute='_compute_pos_fiscal_positions'
readonly=False
store=True
string='Default Fiscal Position'
args: 'account.fiscal.position'
pos_fiscal_position_ids
Many2many → account.fiscal.position
check_company=True
compute='_compute_pos_fiscal_positions'
readonly=False
store=True
string='Fiscal Positions'
args: 'account.fiscal.position'
pos_has_active_session
Boolean
related='pos_config_id.has_active_session'
pos_iface_available_categ_ids
Many2many → pos.category
compute='_compute_pos_iface_available_categ_ids'
readonly=False
store=True
string='Available PoS Product Categories'
args: 'pos.category'
pos_iface_big_scrollbars
Boolean
readonly=False
related='pos_config_id.iface_big_scrollbars'
pos_iface_cashdrawer
Boolean
compute='_compute_pos_iface_cashdrawer'
readonly=False
store=True
string='Cashdrawer'
pos_iface_customer_facing_display_background_image_1920
Image
readonly=False
related='pos_config_id.iface_customer_facing_display_background_image_1920'
pos_iface_customer_facing_display_local
Boolean
readonly=False
related='pos_config_id.iface_customer_facing_display_local'
pos_iface_customer_facing_display_via_proxy
Boolean
compute='_compute_pos_iface_customer_facing_display_via_proxy'
readonly=False
store=True
string='Customer Facing Display'
pos_iface_electronic_scale
Boolean
compute='_compute_pos_iface_electronic_scale'
readonly=False
store=True
string='Electronic Scale'
pos_iface_print_auto
Boolean
readonly=False
related='pos_config_id.iface_print_auto'
pos_iface_print_skip_screen
Boolean
readonly=False
related='pos_config_id.iface_print_skip_screen'
pos_iface_print_via_proxy
Boolean
compute='_compute_pos_iface_print_via_proxy'
readonly=False
store=True
string='Print via Proxy'
pos_iface_scan_via_proxy
Boolean
compute='_compute_pos_iface_scan_via_proxy'
readonly=False
store=True
string='Scan via Proxy'
pos_iface_start_categ_id
Many2one → pos.category
compute='_compute_pos_iface_start_categ_id'
readonly=False
store=True
string='Initial Category'
args: 'pos.category'
pos_iface_tax_included
Selection
readonly=False
related='pos_config_id.iface_tax_included'
pos_iface_tipproduct
Boolean
readonly=False
related='pos_config_id.iface_tipproduct'
pos_invoice_journal_id
Many2one
readonly=False
related='pos_config_id.invoice_journal_id'
pos_is_header_or_footer
Boolean
readonly=False
related='pos_config_id.is_header_or_footer'
pos_is_margins_costs_accessible_to_every_user
Boolean
readonly=False
related='pos_config_id.is_margins_costs_accessible_to_every_user'
pos_is_order_printer
Boolean
compute='_compute_pos_printer'
readonly=False
store=True
pos_is_posbox
Boolean
readonly=False
related='pos_config_id.is_posbox'
pos_journal_id
Many2one
readonly=False
related='pos_config_id.journal_id'
pos_limit_categories
Boolean
readonly=False
related='pos_config_id.limit_categories'
pos_manual_discount
Boolean
readonly=False
related='pos_config_id.manual_discount'
pos_module_pos_discount
Boolean
readonly=False
related='pos_config_id.module_pos_discount'
pos_module_pos_hr
Boolean
readonly=False
related='pos_config_id.module_pos_hr'
pos_module_pos_restaurant
Boolean
readonly=False
related='pos_config_id.module_pos_restaurant'
pos_only_round_cash_method
Boolean
readonly=False
related='pos_config_id.only_round_cash_method'
pos_other_devices
Boolean
readonly=False
related='pos_config_id.other_devices'
pos_payment_method_ids
Many2many
readonly=False
related='pos_config_id.payment_method_ids'
pos_picking_policy
Selection
readonly=False
related='pos_config_id.picking_policy'
pos_picking_type_id
Many2one
readonly=False
related='pos_config_id.picking_type_id'
pos_pricelist_id
Many2one → product.pricelist
compute='_compute_pos_pricelist_id'
readonly=False
store=True
string='Default Pricelist'
args: 'product.pricelist'
pos_printer_ids
Many2many
readonly=False
related='pos_config_id.printer_ids'
pos_proxy_ip
Char
compute='_compute_pos_proxy_ip'
readonly=False
store=True
string='IP Address'
pos_receipt_footer
Text
compute='_compute_pos_receipt_header_footer'
readonly=False
store=True
string='Receipt Footer'
pos_receipt_header
Text
compute='_compute_pos_receipt_header_footer'
readonly=False
store=True
string='Receipt Header'
pos_restrict_price_control
Boolean
readonly=False
related='pos_config_id.restrict_price_control'
pos_rounding_method
Many2one
readonly=False
related='pos_config_id.rounding_method'
pos_route_id
Many2one
readonly=False
related='pos_config_id.route_id'
pos_selectable_categ_ids
Many2many → pos.category
compute='_compute_pos_selectable_categ_ids'
args: 'pos.category'
pos_sequence_id
Many2one
related='pos_config_id.sequence_id'
pos_set_maximum_difference
Boolean
readonly=False
related='pos_config_id.set_maximum_difference'
pos_ship_later
Boolean
readonly=False
related='pos_config_id.ship_later'
pos_start_category
Boolean
readonly=False
related='pos_config_id.start_category'
pos_tax_regime_selection
Boolean
readonly=False
related='pos_config_id.tax_regime_selection'
pos_tip_product_id
Many2one → product.product
compute='_compute_pos_tip_product_id'
readonly=False
store=True
string='Tip Product'
args: 'product.product'
pos_trusted_config_ids
Many2many
readonly=False
related='pos_config_id.trusted_config_ids'
pos_use_pricelist
Boolean
readonly=False
related='pos_config_id.use_pricelist'
pos_warehouse_id
Many2one
readonly=False
related='pos_config_id.warehouse_id'
string='Warehouse (PoS)'
sale_tax_id
Many2one → account.tax
check_company=True
readonly=False
related='company_id.account_sale_tax_id'
string='Default Sale Tax'
args: 'account.tax'
update_stock_quantities
Selection
readonly=False
related='company_id.point_of_sale_update_stock_quantities'
action_pos_config_create_new(self)
create(self, vals_list)
pos_open_ui(self)
set_values(self)
pos_order_count
Integer
compute='_compute_pos_order'
groups='point_of_sale.group_pos_user'
help='The number of point of sales orders related to this customer'
pos_order_ids
One2many → pos.order
readonly=True
args: 'pos.order', 'partner_id'
action_view_pos_order(self)
create_from_ui(self, partner)
No new fields.
Public methods (0)No public methods.
pos_order_id
Many2one → pos.order
index=True
args: 'pos.order'
pos_session_id
Many2one → pos.session
index=True
args: 'pos.session'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
pos_type_id
Many2one → stock.picking.type
copy=False
string='Point of Sale Operation Type'
args: 'stock.picking.type'
No public methods.
is_pos_groupable
Boolean
help='Check if you want to group products of this category in point of sale orders'
string='Group Products in POS'
No public methods.
is_pos_groupable
Boolean
readonly=False
related='category_id.is_pos_groupable'
No public methods.
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
digest_digest_view_form |
digest.digest.view.form.inherit.sale.order | digest.digest | xpath | Inherits digest.digest_digest_view_form |
point_of_sale.assets_common |
POS Assets Common | ir.ui.view | qweb | New |
point_of_sale.index |
POS Index | ir.ui.view | qweb | New |
point_of_sale.qunit_suite |
point_of_sale.qunit_suite | ir.ui.view | qweb | New |
point_of_sale.qunit_suite_assets |
point_of_sale.qunit_suite_assets | ir.ui.view | qweb | New |
point_of_sale.report_invoice_document |
point_of_sale.report_invoice_document | ir.ui.view | qweb | Inherits account.report_invoice_document |
pos_config_view_form |
pos.config.form.view | pos.config | form | 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.tree | pos.payment.method | tree | New |
pos_rounding_form_view_inherited |
pos.cash.rounding.form.inherited | account.cash.rounding | xpath | Inherits account.rounding_form_view |
product_pos_category_form_view |
pos.category.form | pos.category | form | New |
product_pos_category_tree_view |
pos.category.tree | pos.category | tree | New |
product_product_tree_view |
product.product.product.tree.inherit | product.product | field | Inherits product.product_product_tree_view |
product_template_form_view |
product.template.form.inherit | product.template | xpath | Inherits product.product_template_form_view |
product_template_only_form_view |
product.template.only.form.inherit | product.template | xpath | Inherits product.product_template_only_form_view |
product_template_search_view_pos |
product.template.search.pos.form | product.template | filter | Inherits product.product_template_search_view |
product_template_tree_view |
product.template.product.tree.inherit | product.template | field | Inherits product.product_template_tree_view |
product_uom_categ_form_view |
uom.category.form.inherit | uom.category | xpath | Inherits uom.product_uom_categ_form_view |
product_uom_categ_tree_view |
uom.category.tree.inherit | uom.category | xpath | Inherits uom.product_uom_categ_tree_view |
report_pos_order_view_tree |
report.pos.order.view.tree | report.pos.order | tree | 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 | xpath | Inherits base.res_config_settings_view_form |
ticket_validation_screen |
ticket_validation_screen | ir.ui.view | qweb | New |
view_account_journal_pos_user_form |
account.journal.pos.user.form.inherit | account.journal | xpath | Inherits account.view_account_journal_form |
view_form_pos_close_session_wizard |
pos.close.session.wizard.form | pos.close.session.wizard | form | New |
view_partner_pos_kanban |
res.partner.pos.kanban.inherit | res.partner | field | Inherits base.res_partner_kanban_view |
view_partner_property_form |
res.partner.pos.form.inherit | res.partner | div | Inherits base.view_partner_form |
view_pos_bill_form |
pos.bill.form | pos.bill | form | New |
view_pos_bill_tree |
pos.bill.tree | pos.bill | tree | 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.tree.view | pos.config | tree | New |
view_pos_details_wizard |
pos.details.wizard.form | pos.details.wizard | form | 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.tree | pos.order.line | tree | 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.tree | pos.order | tree | New |
view_pos_order_tree_all_sales_lines |
pos.order.line.all.sales.tree | pos.order.line | tree | New |
view_pos_order_tree_no_session_id |
pos.order.tree_no_session_id | pos.order | xpath | 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.tree | pos.payment | tree | New |
view_pos_pos_form |
pos.order.form | pos.order | form | New |
view_pos_session_check_product_wizard |
pos.session.check.product.wizard.form | pos.session.check_product_wizard | 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.tree.view | pos.session | tree | 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 |
pos_session_id
Many2one → pos.session
copy=False
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 (0)No public methods.
pos_payment_method_ids
One2many → pos.payment.method
string='Point of Sale Payment Methods'
args: 'pos.payment.method', 'journal_id'
action_archive(self)
pos_order_ids
One2many → pos.order
pos_payment_ids
One2many → pos.payment
No public methods.
No new fields.
Public methods (0)No public methods.
force_outstanding_account_id
Many2one → account.account
check_company=True
args: 'account.account', 'Forced Outstanding Account'
pos_payment_method_id
Many2one → pos.payment.method
pos_session_id
Many2one → pos.session
No public methods.
No new fields.
Public methods (1)write(self, vals)
type
Selection
ondelete={'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.
kpi_pos_total
Boolean
kpi_pos_total_value
Monetary
compute='_compute_kpi_pos_total_value'
No public methods.
name
Char
pos_config_ids
Many2many → pos.config
string='Point of Sales'
args: 'pos.config'
value
Float
digits=(16, 4)
required=True
args: 'Coin/Bill Value'
name_create(self, name)
child_id
One2many → pos.category
string='Children Categories'
args: 'pos.category', 'parent_id'
has_image
Boolean
compute='_compute_has_image'
image_128
Image
max_height=128
max_width=128
args: 'Image'
name
Char
required=True
string='Category Name'
translate=True
parent_id
Many2one → pos.category
index=True
string='Parent Category'
args: 'pos.category'
sequence
Integer
help='Gives the sequence order when displaying a list of product categories.'
name_get(self)
account_id
Many2one → account.account
account_readonly
Boolean
amount_to_balance
Float
message
Text
close_session(self)
active
Boolean
default=True
amount_authorized_diff
Float
help='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'
available_pricelist_ids
Many2many → product.pricelist
default=_default_pricelist
help='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'
cash_control
Boolean
compute='_compute_cash_control'
help='Check the amount of the cashbox at opening and closing.'
string='Advanced Cash Control'
cash_rounding
Boolean
string='Cash Rounding'
company_has_template
Boolean
compute='_compute_company_has_template'
string='Company has chart of accounts'
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
compute='_compute_currency'
string='Currency'
args: 'res.currency'
current_session_id
Many2one → pos.session
compute='_compute_current_session'
string='Current Session'
args: 'pos.session'
current_session_state
Char
compute='_compute_current_session'
current_user_id
Many2one → res.users
compute='_compute_current_session_user'
string='Current Session Responsible'
args: 'res.users'
default_bill_ids
Many2many → pos.bill
string='Coins/Bills'
args: 'pos.bill'
default_fiscal_position_id
Many2one → account.fiscal.position
string='Default Fiscal Position'
args: 'account.fiscal.position'
fiscal_position_ids
Many2many → account.fiscal.position
help='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_id
Many2one → res.groups
default=_get_group_pos_manager
help='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_id
Many2one → res.groups
default=_get_group_pos_user
help='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_session
Boolean
compute='_compute_current_session'
iface_available_categ_ids
Many2many → pos.category
help='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_scrollbars
Boolean
help='For imprecise industrial touchscreens.'
args: 'Large Scrollbars'
iface_cashdrawer
Boolean
help='Automatically open the cashdrawer.'
string='Cashdrawer'
iface_customer_facing_display
Boolean
compute='_compute_customer_facing_display'
iface_customer_facing_display_local
Boolean
help='Show checkout to customers.'
string='Local Customer Facing Display'
iface_customer_facing_display_via_proxy
Boolean
help='Show checkout to customers with a remotely-connected screen.'
string='Customer Facing Display'
iface_electronic_scale
Boolean
help='Enables Electronic Scale integration.'
string='Electronic Scale'
iface_print_auto
Boolean
default=False
help='The receipt will automatically be printed at the end of each order.'
string='Automatic Receipt Printing'
iface_print_skip_screen
Boolean
default=True
help='The receipt screen will be skipped if the receipt can be printed automatically.'
string='Skip Preview Screen'
iface_print_via_proxy
Boolean
help='Bypass browser printing and prints via the hardware proxy.'
string='Print via Proxy'
iface_scan_via_proxy
Boolean
help='Enable barcode scanning with a remotely connected barcode scanner and card swiping with a Vantiv card reader.'
string='Scan via Proxy'
iface_start_categ_id
Many2one → pos.category
help='The point of sale will display this product category by default. If no category is specified, all available products will be shown.'
string='Initial Category'
args: 'pos.category'
iface_tax_included
Selection
default='total'
required=True
string='Tax Display'
args: [('subtotal', 'Tax-Excluded Price'), ('total', 'Tax-Included Price')]
iface_tipproduct
Boolean
string='Product tips'
invoice_journal_id
Many2one → account.journal
default=_default_invoice_journal
domain=[('type', '=', 'sale')]
help='Accounting journal used to create invoices.'
string='Invoice Journal'
args: 'account.journal'
is_header_or_footer
Boolean
is_installed_account_accountant
Boolean
compute='_compute_is_installed_account_accountant'
string='Is the Full Accounting Installed'
is_margins_costs_accessible_to_every_user
Boolean
default=False
help='When disabled, only PoS manager can view the margin and cost of product among the Product info.'
string='Margins & Costs'
is_posbox
Boolean
journal_id
Many2one → account.journal
default=_default_sale_journal
domain=[('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_session_closing_cash
Float
compute='_compute_last_session'
last_session_closing_date
Date
compute='_compute_last_session'
limit_categories
Boolean
limited_partners_amount
Integer
default=10000
limited_partners_loading
Boolean
default=True
help="By default, 10000 partners are loaded.\nWhen the session is open, we keep on loading all remaining partners in the background.\nIn the meantime, you can use the 'Load Customers' button to load partners from database."
args: 'Limited Partners Loading'
limited_products_amount
Integer
default=20000
limited_products_loading
Boolean
default=True
help="we load all starred products (favorite), all services, recent inventory movements of products, and the most recently updated products.\nWhen the session is open, we keep on loading all remaining products in the background.\nIn the meantime, you can click on the 'database icon' in the searchbar to load products from database."
args: 'Limited Product Loading'
manual_discount
Boolean
default=True
string='Line Discounts'
module_pos_discount
Boolean
module_pos_hr
Boolean
help='Show employee login screen'
module_pos_mercury
Boolean
string='Integrated Card Payments'
module_pos_restaurant
Boolean
name
Char
help='An internal identification of the point of sale.'
required=True
string='Point of Sale'
number_of_opened_session
Integer
compute='_compute_current_session'
string='Number of Opened Session'
only_round_cash_method
Boolean
string='Only apply rounding on cash'
other_devices
Boolean
help='Connect devices to your PoS without an IoT Box.'
string='Other Devices'
partner_load_background
Boolean
default=False
payment_method_ids
Many2many → pos.payment.method
default=<expr>
string='Payment Methods'
args: 'pos.payment.method'
picking_policy
Selection
default='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=True
string='Shipping Policy'
args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')]
picking_type_id
Many2one → stock.picking.type
default=_default_picking_type_id
domain="[('code', '=', 'outgoing'), ('warehouse_id.company_id', '=', company_id)]"
ondelete='restrict'
required=True
string='Operation Type'
args: 'stock.picking.type'
pos_session_duration
Char
compute='_compute_current_session_user'
pos_session_state
Char
compute='_compute_current_session_user'
pos_session_username
Char
compute='_compute_current_session_user'
pricelist_id
Many2one → product.pricelist
default=_default_pricelist
help='The pricelist used if no customer is selected or if the customer has no Sale Pricelist configured.'
required=True
string='Default Pricelist'
args: 'product.pricelist'
product_load_background
Boolean
default=False
proxy_ip
Char
help='The hostname or ip address of the hardware proxy, Will be autodetected if left empty.'
size=45
string='IP Address'
receipt_footer
Text
help='A short text that will be inserted as a footer in the printed receipt.'
string='Receipt Footer'
receipt_header
Text
help='A short text that will be inserted as a header in the printed receipt.'
string='Receipt Header'
restrict_price_control
Boolean
help='Only users with Manager access rights for PoS app can modify the product prices on orders.'
string='Restrict Price Modifications to Managers'
rounding_method
Many2one → account.cash.rounding
string='Cash rounding'
args: 'account.cash.rounding'
route_id
Many2one → stock.route
string='Spefic route for products delivered later.'
args: 'stock.route'
sequence_id
Many2one → ir.sequence
copy=False
help='This sequence is automatically created by Odoo but you can change it to customize the reference numbers of your orders.'
ondelete='restrict'
readonly=True
string='Order IDs Sequence'
args: 'ir.sequence'
sequence_line_id
Many2one → ir.sequence
copy=False
help='This sequence is automatically created by Odoo but you can change it to customize the reference numbers of your orders lines.'
readonly=True
string='Order Line IDs Sequence'
args: 'ir.sequence'
session_ids
One2many → pos.session
string='Sessions'
args: 'pos.session', 'config_id'
set_maximum_difference
Boolean
help='Set a maximum difference allowed between the expected and counted money during the closing of the session.'
args: 'Set Maximum Difference'
ship_later
Boolean
string='Ship Later'
start_category
Boolean
default=False
args: 'Start Category'
tax_regime_selection
Boolean
tip_product_id
Many2one → product.product
help='This product is used as reference on customer receipts.'
string='Tip Product'
args: 'product.product'
use_pricelist
Boolean
uuid
Char
copy=False
default=<expr>
help='A globally unique identifier for this pos configuration, used to prevent conflicts in client-generated data.'
readonly=True
warehouse_id
Many2one → stock.warehouse
default=_default_warehouse_id
ondelete='restrict'
args: 'stock.warehouse'
action_pos_config_modal_edit(self)
assign_payment_journals(self, company)
create(self, vals_list)
execute(self)
generate_pos_journal(self, company)
get_limited_partners_loading(self)
get_limited_products_loading(self, fields)
name_get(self)
open_existing_session_cb(self)
open_opened_session_list(self)
open_ui(self)
post_install_pos_localisation(self, companies=False)
setup_defaults(self, company)
setup_invoice_journal(self, company)
unlink(self)
write(self, vals)
end_date
Datetime
default=fields.Datetime.now
required=True
pos_config_ids
Many2many → pos.config
default=<expr>
args: 'pos.config', 'pos_detail_configs'
start_date
Datetime
default=_default_start_date
required=True
generate_report(self)
amount
Float
default=_default_amount
digits=0
required=True
config_id
Many2one → pos.config
default=_default_config
required=True
string='Point of Sale Configuration'
args: 'pos.config'
payment_date
Datetime
default=<expr>
required=True
string='Payment Date'
payment_method_id
Many2one → pos.payment.method
default=_default_payment_method
required=True
string='Payment Method'
args: 'pos.payment.method'
payment_name
Char
string='Payment Reference'
check(self)
launch_payment(self)
account_move
Many2one → account.move
copy=False
index='btree_not_null'
readonly=True
string='Invoice'
args: 'account.move'
amount_paid
Float
digits=0
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Paid'
amount_return
Float
digits=0
readonly=True
required=True
string='Returned'
amount_tax
Float
digits=0
readonly=True
required=True
string='Taxes'
amount_total
Float
digits=0
readonly=True
required=True
string='Total'
company_id
Many2one → res.company
index=True
readonly=True
required=True
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
readonly=False
related='session_id.config_id'
string='Point of Sale'
args: 'pos.config'
currency_id
Many2one → res.currency
related='config_id.currency_id'
string='Currency'
args: 'res.currency'
currency_rate
Float
compute='_compute_currency_rate'
compute_sudo=True
digits=0
help='The rate of the currency to the currency of rate applicable at the date of the order'
readonly=True
store=True
args: 'Currency Rate'
date_order
Datetime
default=fields.Datetime.now
index=True
readonly=True
string='Date'
failed_pickings
Boolean
compute='_compute_picking_count'
fiscal_position_id
Many2one → account.fiscal.position
comodel_name='account.fiscal.position'
readonly=True
states={'draft': [('readonly', False)]}
string='Fiscal Position'
has_refundable_lines
Boolean
compute='_compute_has_refundable_lines'
args: 'Has Refundable Lines'
is_invoiced
Boolean
compute='_compute_is_invoiced'
args: 'Is Invoiced'
is_refunded
Boolean
compute='_compute_refund_related_fields'
is_tipped
Boolean
readonly=True
args: 'Is this already tipped?'
is_total_cost_computed
Boolean
compute='_compute_is_total_cost_computed'
help='Allows to know if all the total cost of the order lines have already been computed'
lines
One2many → pos.order.line
copy=True
readonly=True
states={'draft': [('readonly', False)]}
string='Order Lines'
args: 'pos.order.line', 'order_id'
margin
Monetary
compute='_compute_margin'
string='Margin'
margin_percent
Float
compute='_compute_margin'
digits=(12, 4)
string='Margin (%)'
name
Char
copy=False
default='/'
readonly=True
required=True
string='Order Ref'
nb_print
Integer
copy=False
default=0
readonly=True
string='Number of Print'
note
Text
string='Internal Notes'
partner_id
Many2one → res.partner
change_default=True
index='btree_not_null'
states={'draft': [('readonly', False)], 'paid': [('readonly', False)]}
string='Customer'
args: 'res.partner'
payment_ids
One2many → pos.payment
readonly=True
string='Payments'
args: 'pos.payment', 'pos_order_id'
picking_count
Integer
compute='_compute_picking_count'
picking_ids
One2many → stock.picking
picking_type_id
Many2one → stock.picking.type
readonly=False
related='session_id.config_id.picking_type_id'
string='Operation Type'
args: 'stock.picking.type'
pos_reference
Char
copy=False
index=True
readonly=True
string='Receipt Number'
pricelist_id
Many2one → product.pricelist
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Pricelist'
args: 'product.pricelist'
procurement_group_id
Many2one → procurement.group
copy=False
args: 'procurement.group', 'Procurement Group'
refund_orders_count
Integer
compute='_compute_refund_related_fields'
args: 'Number of Refund Orders'
refunded_order_ids
Many2many → pos.order
compute='_compute_refund_related_fields'
args: 'pos.order'
refunded_orders_count
Integer
compute='_compute_refund_related_fields'
sale_journal
Many2one → account.journal
ondelete='restrict'
readonly=True
related='session_id.config_id.journal_id'
store=True
string='Sales Journal'
args: 'account.journal'
sequence_number
Integer
default=1
help='A session-unique sequence number for the order'
string='Sequence Number'
session_id
Many2one → pos.session
domain="[('state', '=', 'opened')]"
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Session'
args: 'pos.session'
session_move_id
Many2one → account.move
copy=False
readonly=True
related='session_id.move_id'
string='Session Journal Entry'
args: 'account.move'
state
Selection
copy=False
default='draft'
index=True
readonly=True
args: [('draft', 'New'), ('cancel', 'Cancelled'), ('paid', 'Paid'), ('done', 'Posted'), ('invoiced', 'Invoiced')], 'Status'
tip_amount
Float
digits=0
readonly=True
string='Tip Amount'
to_invoice
Boolean
copy=False
args: 'To invoice'
to_ship
Boolean
user_id
Many2one → res.users
comodel_name='res.users'
default=<expr>
help='Person who uses the cash register. It can be a reliever, a student or an interim employee.'
states={'done': [('readonly', True)], 'invoiced': [('readonly', True)]}
string='Responsible'
action_pos_order_cancel(self)
action_pos_order_invoice(self)
action_pos_order_paid(self)
action_receipt_to_customer(self, name, client, ticket)
action_stock_picking(self)
action_view_invoice(self)
action_view_refund_orders(self)
action_view_refunded_orders(self)
add_payment(self, data)
create(self, vals_list)
create_from_ui(self, orders, draft=False)
export_for_ui(self)
get_table_draft_orders(self, table_id)
refund(self)
search_paid_order_ids(self, config_id, domain, limit, offset)
write(self, vals)
company_id
Many2one → res.company
related='order_id.company_id'
store=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
related='order_id.currency_id'
args: 'res.currency'
customer_note
Char
discount
Float
default=0.0
digits=0
string='Discount (%)'
full_product_name
Char
is_total_cost_computed
Boolean
help='Allows to know if the total cost has already been computed or not'
margin
Monetary
compute='_compute_margin'
string='Margin'
margin_percent
Float
compute='_compute_margin'
digits=(12, 4)
string='Margin (%)'
name
Char
copy=False
required=True
string='Line No'
notice
Char
string='Discount Notice'
order_id
Many2one → pos.order
index=True
ondelete='cascade'
required=True
string='Order Ref'
args: 'pos.order'
pack_lot_ids
One2many → pos.pack.operation.lot
string='Lot/serial Number'
args: 'pos.pack.operation.lot', 'pos_order_line_id'
price_extra
Float
string='Price extra'
price_subtotal
Float
digits=0
readonly=True
required=True
string='Subtotal w/o Tax'
price_subtotal_incl
Float
digits=0
readonly=True
required=True
string='Subtotal'
price_unit
Float
digits=0
string='Unit Price'
product_id
Many2one → product.product
change_default=True
domain=[('sale_ok', '=', True)]
required=True
string='Product'
args: 'product.product'
product_uom_id
Many2one → uom.uom
related='product_id.uom_id'
string='Product UoM'
args: 'uom.uom'
qty
Float
default=1
digits='Product Unit of Measure'
args: 'Quantity'
refund_orderline_ids
One2many → pos.order.line
help='Orderlines in this field are the lines that refunded this orderline.'
args: 'pos.order.line', 'refunded_orderline_id', 'Refund Order Lines'
refunded_orderline_id
Many2one → pos.order.line
help='If this orderline is a refund, then the refunded orderline is specified in this field.'
args: 'pos.order.line', 'Refunded Order Line'
refunded_qty
Float
compute='_compute_refund_qty'
help='Number of items refunded in this orderline.'
args: 'Refunded Quantity'
tax_ids
Many2many → account.tax
readonly=True
string='Taxes'
args: 'account.tax'
tax_ids_after_fiscal_position
Many2many → account.tax
compute='_get_tax_ids_after_fiscal_position'
string='Taxes to Apply'
args: 'account.tax'
total_cost
Float
digits='Product Price'
readonly=True
string='Total cost'
create(self, vals_list)
export_for_ui(self)
write(self, values)
lot_name
Char
order_id
Many2one → pos.order
readonly=False
related='pos_order_line_id.order_id'
args: 'pos.order'
pos_order_line_id
Many2one → pos.order.line
product_id
Many2one → product.product
readonly=False
related='pos_order_line_id.product_id'
args: 'product.product'
export_for_ui(self)
account_move_id
Many2one → account.move
index='btree_not_null'
args: 'account.move'
amount
Monetary
currency_field='currency_id'
help='Total amount of the payment.'
readonly=True
required=True
string='Amount'
card_type
Char
cardholder_name
Char
company_id
Many2one → res.company
related='pos_order_id.company_id'
store=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
related='pos_order_id.currency_id'
string='Currency'
args: 'res.currency'
currency_rate
Float
help='Conversion rate from company currency to order currency.'
related='pos_order_id.currency_rate'
string='Conversion Rate'
is_change
Boolean
default=False
string='Is this payment change?'
name
Char
readonly=True
string='Label'
partner_id
Many2one → res.partner
related='pos_order_id.partner_id'
string='Customer'
args: 'res.partner'
payment_date
Datetime
default=<expr>
readonly=True
required=True
string='Date'
payment_method_id
Many2one → pos.payment.method
required=True
string='Payment Method'
args: 'pos.payment.method'
payment_status
Char
pos_order_id
Many2one → pos.order
index=True
required=True
string='Order'
args: 'pos.order'
session_id
Many2one → pos.session
index=True
related='pos_order_id.session_id'
store=True
string='Session'
args: 'pos.session'
ticket
Char
transaction_id
Char
export_for_ui(self)
name_get(self)
active
Boolean
default=True
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
config_ids
Many2many → pos.config
string='Point of Sale Configurations'
args: 'pos.config'
hide_use_payment_terminal
Boolean
compute='_compute_hide_use_payment_terminal'
is_cash_count
Boolean
compute='_compute_is_cash_count'
store=True
string='Cash'
journal_id
Many2one → account.journal
domain=[('type', 'in', ('cash', '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.'
ondelete='restrict'
string='Journal'
args: 'account.journal'
name
Char
help='Defines the name of the payment method that will be displayed in the Point of Sale when the payments are selected.'
required=True
string='Method'
translate=True
open_session_ids
Many2many → pos.session
compute='_compute_open_session_ids'
help='Open PoS sessions that are using this payment method.'
string='Pos Sessions'
args: 'pos.session'
outstanding_account_id
Many2one → account.account
help='Leave empty to use the default account from the company setting.\nAccount used as outstanding account when creating accounting payment records for bank payments.'
ondelete='restrict'
string='Outstanding Account'
args: 'account.account'
receivable_account_id
Many2one → account.account
domain=[('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'
split_transactions
Boolean
default=False
help='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'
type
Selection
compute='_compute_type'
selection=[('cash', 'Cash'), ('bank', 'Bank'), ('pay_later', 'Customer Account')]
use_payment_terminal
Selection
help='Record payments with a terminal on this journal.'
selection=<expr>
string='Use a Payment Terminal'
copy(self, default=None)
write(self, vals)
bank_payment_ids
One2many → account.payment
help='Account payments representing aggregated and bank split payments.'
args: 'account.payment', 'pos_session_id', 'Bank Payments'
cash_control
Boolean
compute='_compute_cash_all'
compute_sudo=True
string='Has Cash Control'
cash_journal_id
Many2one → account.journal
compute='_compute_cash_all'
store=True
string='Cash Journal'
args: 'account.journal'
cash_real_transaction
Monetary
readonly=True
string='Transaction'
cash_register_balance_end
Monetary
compute='_compute_cash_balance'
help='Opening balance summed to all cash transactions.'
readonly=True
string='Theoretical Closing Balance'
cash_register_balance_end_real
Monetary
readonly=True
string='Ending Balance'
cash_register_balance_start
Monetary
readonly=True
string='Starting Balance'
cash_register_difference
Monetary
compute='_compute_cash_balance'
help='Difference between the theoretical closing balance and the real closing balance.'
readonly=True
string='Before Closing Difference'
cash_register_total_entry_encoding
Monetary
compute='_compute_cash_balance'
readonly=True
string='Total Cash Transaction'
company_id
Many2one → res.company
readonly=True
related='config_id.company_id'
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
index=True
required=True
string='Point of Sale'
args: 'pos.config'
currency_id
Many2one → res.currency
readonly=False
related='config_id.currency_id'
string='Currency'
args: 'res.currency'
failed_pickings
Boolean
compute='_compute_picking_count'
is_in_company_currency
Boolean
compute='_compute_is_in_company_currency'
args: 'Is Using Company Currency'
login_number
Integer
default=0
help='A sequence number that is incremented each time a user resumes the pos session'
string='Login Sequence Number'
move_id
Many2one → account.move
index=True
string='Journal Entry'
args: 'account.move'
name
Char
default='/'
readonly=True
required=True
string='Session ID'
opening_notes
Text
string='Opening Notes'
order_count
Integer
compute='_compute_order_count'
order_ids
One2many → pos.order
string='Orders'
args: 'pos.order', 'session_id'
payment_method_ids
Many2many → pos.payment.method
related='config_id.payment_method_ids'
string='Payment Methods'
args: 'pos.payment.method'
picking_count
Integer
compute='_compute_picking_count'
picking_ids
One2many → stock.picking
rescue
Boolean
copy=False
help='Auto-generated session for orphan orders, ignored in constraints'
readonly=True
string='Recovery Session'
sequence_number
Integer
default=1
help='A sequence number that is incremented with each order'
string='Order Sequence Number'
start_at
Datetime
readonly=True
string='Opening Date'
state
Selection
copy=False
default='opening_control'
index=True
readonly=True
required=True
string='Status'
args: POS_SESSION_STATE
statement_line_ids
One2many → account.bank.statement.line
readonly=True
string='Cash Lines'
args: 'account.bank.statement.line', 'pos_session_id'
stop_at
Datetime
copy=False
readonly=True
string='Closing Date'
total_payments_amount
Float
compute='_compute_total_payments_amount'
string='Total Payments Amount'
update_stock_at_closing
Boolean
user_id
Many2one → res.users
default=<expr>
index=True
ondelete='restrict'
readonly=True
required=True
states={'opening_control': [('readonly', False)]}
string='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)
create(self, vals_list)
find_product_by_barcode(self, barcode)
get_closing_control_data(self)
get_onboarding_data(self)
get_pos_ui_product_pricelist_item_by_product(self, product_tmpl_ids, product_ids)
get_pos_ui_product_product_by_params(self, custom_search_params)
get_pos_ui_res_partner_by_params(self, custom_search_params)
load_pos_data(self)
login(self)
open_frontend_cb(self)
post_closing_cash_details(self, counted_cash)
set_cashbox_pos(self, cashbox_value, notes)
show_cash_register(self)
show_journal_items(self)
try_cash_in_out(self, _type, amount, reason, extras)
unlink(self)
update_closing_control_state_session(self, notes)
No new fields.
Public methods (2)load_demo_products(self)
open_ui(self)
No new fields.
Public methods (0)No public methods.
pos_order_id
Many2one → pos.order
No public methods.
No new fields.
Public methods (1)get_product_info_pos(self, price, quantity, pos_config_id)
available_in_pos
Boolean
default=False
help='Check if you want this product to appear in the Point of Sale.'
string='Available in POS'
pos_categ_id
Many2one → pos.category
help='Category used in the Point of Sale.'
string='Point of Sale Category'
args: 'pos.category'
to_weight
Boolean
help='Check if the product should be weighted using the hardware scale integration.'
string='To Weigh With Scale'
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)
average_price
Float
group_operator='avg'
readonly=True
string='Average Price'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
readonly=True
string='Point of Sale'
args: 'pos.config'
date
Datetime
readonly=True
string='Order Date'
delay_validation
Integer
readonly=True
string='Delay Validation'
invoiced
Boolean
readonly=True
journal_id
Many2one → account.journal
readonly=True
string='Journal'
args: 'account.journal'
margin
Float
readonly=True
string='Margin'
nbr_lines
Integer
readonly=True
string='Sale Line Count'
order_id
Many2one → pos.order
readonly=True
string='Order'
args: 'pos.order'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
pos_categ_id
Many2one → pos.category
readonly=True
string='PoS Category'
args: 'pos.category'
price_sub_total
Float
readonly=True
string='Subtotal w/o discount'
price_total
Float
readonly=True
string='Total Price'
pricelist_id
Many2one → product.pricelist
readonly=True
string='Pricelist'
args: 'product.pricelist'
product_categ_id
Many2one → product.category
readonly=True
string='Product Category'
args: 'product.category'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_qty
Integer
readonly=True
string='Product Quantity'
product_tmpl_id
Many2one → product.template
readonly=True
string='Product Template'
args: 'product.template'
session_id
Many2one → pos.session
readonly=True
string='Session'
args: 'pos.session'
state
Selection
readonly=True
string='Status'
args: [('draft', 'New'), ('paid', 'Paid'), ('done', 'Posted'), ('invoiced', 'Invoiced'), ('cancel', 'Cancelled')]
total_discount
Float
readonly=True
string='Total Discount'
user_id
Many2one → res.users
readonly=True
string='User'
args: 'res.users'
init(self)
point_of_sale_update_stock_quantities
Selection
default='closing'
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 (faster)'), ('real', 'In real time (accurate but slower)')]
point_of_sale_use_ticket_qr_code
Boolean
help='Add a QR code on the ticket, which the user can scan to request the invoice linked to its order.'
string='Use QR code on ticket'
validate_period_lock_date(self)
account_default_pos_receivable_account_id
Many2one
readonly=False
related='company_id.account_default_pos_receivable_account_id'
string='Default Account Receivable (PoS)'
barcode_nomenclature_id
Many2one → barcode.nomenclature
readonly=False
related='company_id.nomenclature_id'
args: 'barcode.nomenclature'
is_default_pricelist_displayed
Boolean
compute='_compute_pos_pricelist_id'
compute_sudo=True
module_pos_adyen
Boolean
help='The transactions are processed by Adyen. Set your Adyen credentials on the related payment method.'
string='Adyen Payment Terminal'
module_pos_mercury
Boolean
help='The transactions are processed by Vantiv. Set your Vantiv credentials on the related payment method.'
string='Vantiv Payment Terminal'
module_pos_six
Boolean
help='The transactions are processed by Six. Set the IP address of the terminal on the related payment method.'
string='Six Payment Terminal'
module_pos_stripe
Boolean
help='The transactions are processed by Stripe. Set your Stripe credentials on the related payment method.'
string='Stripe Payment Terminal'
point_of_sale_use_ticket_qr_code
Boolean
readonly=False
related='company_id.point_of_sale_use_ticket_qr_code'
pos_allowed_pricelist_ids
Many2many → product.pricelist
compute='_compute_pos_allowed_pricelist_ids'
args: 'product.pricelist'
pos_amount_authorized_diff
Float
readonly=False
related='pos_config_id.amount_authorized_diff'
pos_available_pricelist_ids
Many2many → product.pricelist
compute='_compute_pos_pricelist_id'
readonly=False
store=True
string='Available Pricelists'
args: 'product.pricelist'
pos_cash_control
Boolean
related='pos_config_id.cash_control'
pos_cash_rounding
Boolean
readonly=False
related='pos_config_id.cash_rounding'
string='Cash Rounding (PoS)'
pos_company_has_template
Boolean
related='pos_config_id.company_has_template'
pos_config_id
Many2one → pos.config
default=<expr>
string='Point of Sale'
args: 'pos.config'
pos_default_bill_ids
Many2many
readonly=False
related='pos_config_id.default_bill_ids'
pos_default_fiscal_position_id
Many2one → account.fiscal.position
compute='_compute_pos_fiscal_positions'
readonly=False
store=True
string='Default Fiscal Position'
args: 'account.fiscal.position'
pos_fiscal_position_ids
Many2many → account.fiscal.position
compute='_compute_pos_fiscal_positions'
readonly=False
store=True
string='Fiscal Positions'
args: 'account.fiscal.position'
pos_has_active_session
Boolean
related='pos_config_id.has_active_session'
pos_iface_available_categ_ids
Many2many → pos.category
compute='_compute_pos_iface_available_categ_ids'
readonly=False
store=True
string='Available PoS Product Categories'
args: 'pos.category'
pos_iface_big_scrollbars
Boolean
readonly=False
related='pos_config_id.iface_big_scrollbars'
pos_iface_cashdrawer
Boolean
compute='_compute_pos_iface_cashdrawer'
readonly=False
store=True
string='Cashdrawer'
pos_iface_customer_facing_display_local
Boolean
readonly=False
related='pos_config_id.iface_customer_facing_display_local'
pos_iface_customer_facing_display_via_proxy
Boolean
compute='_compute_pos_iface_customer_facing_display_via_proxy'
readonly=False
store=True
string='Customer Facing Display'
pos_iface_electronic_scale
Boolean
compute='_compute_pos_iface_electronic_scale'
readonly=False
store=True
string='Electronic Scale'
pos_iface_print_auto
Boolean
readonly=False
related='pos_config_id.iface_print_auto'
pos_iface_print_skip_screen
Boolean
readonly=False
related='pos_config_id.iface_print_skip_screen'
pos_iface_print_via_proxy
Boolean
compute='_compute_pos_iface_print_via_proxy'
readonly=False
store=True
string='Print via Proxy'
pos_iface_scan_via_proxy
Boolean
compute='_compute_pos_iface_scan_via_proxy'
readonly=False
store=True
string='Scan via Proxy'
pos_iface_start_categ_id
Many2one → pos.category
compute='_compute_pos_iface_start_categ_id'
readonly=False
store=True
string='Initial Category'
args: 'pos.category'
pos_iface_tax_included
Selection
readonly=False
related='pos_config_id.iface_tax_included'
pos_iface_tipproduct
Boolean
readonly=False
related='pos_config_id.iface_tipproduct'
pos_invoice_journal_id
Many2one
readonly=False
related='pos_config_id.invoice_journal_id'
pos_is_header_or_footer
Boolean
readonly=False
related='pos_config_id.is_header_or_footer'
pos_is_margins_costs_accessible_to_every_user
Boolean
readonly=False
related='pos_config_id.is_margins_costs_accessible_to_every_user'
pos_is_posbox
Boolean
readonly=False
related='pos_config_id.is_posbox'
pos_journal_id
Many2one
readonly=False
related='pos_config_id.journal_id'
pos_limit_categories
Boolean
readonly=False
related='pos_config_id.limit_categories'
pos_limited_partners_amount
Integer
readonly=False
related='pos_config_id.limited_partners_amount'
pos_limited_partners_loading
Boolean
readonly=False
related='pos_config_id.limited_partners_loading'
pos_limited_products_amount
Integer
readonly=False
related='pos_config_id.limited_products_amount'
pos_limited_products_loading
Boolean
readonly=False
related='pos_config_id.limited_products_loading'
pos_manual_discount
Boolean
readonly=False
related='pos_config_id.manual_discount'
pos_module_pos_discount
Boolean
readonly=False
related='pos_config_id.module_pos_discount'
pos_module_pos_hr
Boolean
readonly=False
related='pos_config_id.module_pos_hr'
pos_module_pos_restaurant
Boolean
readonly=False
related='pos_config_id.module_pos_restaurant'
pos_only_round_cash_method
Boolean
readonly=False
related='pos_config_id.only_round_cash_method'
pos_other_devices
Boolean
readonly=False
related='pos_config_id.other_devices'
pos_partner_load_background
Boolean
readonly=False
related='pos_config_id.partner_load_background'
pos_payment_method_ids
Many2many
readonly=False
related='pos_config_id.payment_method_ids'
pos_picking_policy
Selection
readonly=False
related='pos_config_id.picking_policy'
pos_picking_type_id
Many2one
readonly=False
related='pos_config_id.picking_type_id'
pos_pricelist_id
Many2one → product.pricelist
compute='_compute_pos_pricelist_id'
readonly=False
store=True
string='Default Pricelist'
args: 'product.pricelist'
pos_product_load_background
Boolean
readonly=False
related='pos_config_id.product_load_background'
pos_proxy_ip
Char
compute='_compute_pos_proxy_ip'
readonly=False
store=True
string='IP Address'
pos_receipt_footer
Text
compute='_compute_pos_receipt_header_footer'
readonly=False
store=True
string='Receipt Footer'
pos_receipt_header
Text
compute='_compute_pos_receipt_header_footer'
readonly=False
store=True
string='Receipt Header'
pos_restrict_price_control
Boolean
readonly=False
related='pos_config_id.restrict_price_control'
pos_rounding_method
Many2one
readonly=False
related='pos_config_id.rounding_method'
pos_route_id
Many2one
readonly=False
related='pos_config_id.route_id'
pos_selectable_categ_ids
Many2many → pos.category
compute='_compute_pos_selectable_categ_ids'
args: 'pos.category'
pos_sequence_id
Many2one
related='pos_config_id.sequence_id'
pos_set_maximum_difference
Boolean
readonly=False
related='pos_config_id.set_maximum_difference'
pos_ship_later
Boolean
readonly=False
related='pos_config_id.ship_later'
pos_start_category
Boolean
readonly=False
related='pos_config_id.start_category'
pos_tax_regime_selection
Boolean
readonly=False
related='pos_config_id.tax_regime_selection'
pos_tip_product_id
Many2one → product.product
compute='_compute_pos_tip_product_id'
readonly=False
store=True
string='Tip Product'
args: 'product.product'
pos_use_pricelist
Boolean
readonly=False
related='pos_config_id.use_pricelist'
pos_warehouse_id
Many2one
readonly=False
related='pos_config_id.warehouse_id'
string='Warehouse (PoS)'
sale_tax_id
Many2one → account.tax
readonly=False
related='company_id.account_sale_tax_id'
string='Default Sale Tax'
args: 'account.tax'
update_stock_quantities
Selection
readonly=False
related='company_id.point_of_sale_update_stock_quantities'
action_pos_config_create_new(self)
create(self, vals_list)
pos_open_ui(self)
set_values(self)
pos_order_count
Integer
compute='_compute_pos_order'
groups='point_of_sale.group_pos_user'
help='The number of point of sales orders related to this customer'
pos_order_ids
One2many → pos.order
readonly=True
args: 'pos.order', 'partner_id'
action_view_pos_order(self)
create_from_ui(self, partner)
No new fields.
Public methods (0)No public methods.
pos_order_id
Many2one → pos.order
index=True
args: 'pos.order'
pos_session_id
Many2one → pos.session
index=True
args: 'pos.session'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
pos_type_id
Many2one → stock.picking.type
string='Point of Sale Operation Type'
args: 'stock.picking.type'
No public methods.
is_pos_groupable
Boolean
help='Check if you want to group products of this category in point of sale orders'
string='Group Products in POS'
No public methods.
is_pos_groupable
Boolean
readonly=False
related='category_id.is_pos_groupable'
No public methods.
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_cashbox_line_view_tree |
account.cashbox.line.tree | account.cashbox.line | tree | New |
digest_digest_view_form |
digest.digest.view.form.inherit.sale.order | digest.digest | xpath | Inherits digest.digest_digest_view_form |
point_of_sale.assets_common |
POS Assets Common | ir.ui.view | qweb | New |
point_of_sale.index |
POS Index | ir.ui.view | qweb | New |
point_of_sale.qunit_suite |
point_of_sale.qunit_suite | ir.ui.view | qweb | New |
point_of_sale.qunit_suite_assets |
point_of_sale.qunit_suite_assets | ir.ui.view | qweb | New |
point_of_sale.report_invoice_document |
point_of_sale.report_invoice_document | ir.ui.view | qweb | Inherits account.report_invoice_document |
pos_config_view_form |
pos.config.form.view | pos.config | form | 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.tree | pos.payment.method | tree | New |
pos_rounding_form_view_inherited |
pos.cash.rounding.form.inherited | account.cash.rounding | xpath | Inherits account.rounding_form_view |
product_pos_category_form_view |
pos.category.form | pos.category | form | New |
product_pos_category_tree_view |
pos.category.tree | pos.category | tree | New |
product_product_tree_view |
product.product.product.tree.inherit | product.product | field | Inherits product.product_product_tree_view |
product_template_form_view |
product.template.form.inherit | product.template | xpath | Inherits product.product_template_form_view |
product_template_only_form_view |
product.template.only.form.inherit | product.template | xpath | Inherits product.product_template_only_form_view |
product_template_search_view_pos |
product.template.search.pos.form | product.template | filter | Inherits product.product_template_search_view |
product_template_tree_view |
product.template.product.tree.inherit | product.template | field | Inherits product.product_template_tree_view |
product_uom_categ_form_view |
uom.category.form.inherit | uom.category | xpath | Inherits uom.product_uom_categ_form_view |
product_uom_categ_tree_view |
uom.category.tree.inherit | uom.category | xpath | Inherits uom.product_uom_categ_tree_view |
report_pos_order_view_tree |
report.pos.order.view.tree | report.pos.order | tree | 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 | xpath | Inherits base.res_config_settings_view_form |
stock.product_template_kanban_stock_view |
New | |||
stock.view_stock_product_template_tree |
New | |||
stock.view_stock_product_tree |
New | |||
view_account_journal_pos_user_form |
account.journal.pos.user.form.inherit | account.journal | xpath | Inherits account.view_account_journal_form |
view_bank_statement_pos_session |
view.bank.statement.pos.session | account.bank.statement | xpath | Inherits account.view_bank_statement_form |
view_form_pos_close_session_wizard |
pos.close.session.wizard.form | pos.close.session.wizard | form | New |
view_partner_pos_kanban |
res.partner.pos.kanban.inherit | res.partner | field | Inherits base.res_partner_kanban_view |
view_partner_property_form |
res.partner.pos.form.inherit | res.partner | div | Inherits base.view_partner_form |
view_pos_bill_form |
pos.bill.form | pos.bill | form | New |
view_pos_bill_tree |
pos.bill.tree | pos.bill | tree | 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.tree.view | pos.config | tree | New |
view_pos_details_wizard |
pos.details.wizard.form | pos.details.wizard | form | 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.tree | pos.order.line | tree | 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.tree | pos.order | tree | New |
view_pos_order_tree_all_sales_lines |
pos.order.line.all.sales.tree | pos.order.line | tree | New |
view_pos_order_tree_no_session_id |
pos.order.tree_no_session_id | pos.order | xpath | 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.tree | pos.payment | tree | New |
view_pos_pos_form |
pos.order.form | pos.order | 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.tree.view | pos.session | tree | 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 |
account_id
Many2one → account.account
readonly=True
related='journal_id.default_account_id'
args: 'account.account'
pos_session_id
Many2one → pos.session
copy=False
string='Session'
args: 'pos.session'
button_validate_or_action(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
pos_payment_method_ids
One2many → pos.payment.method
string='Point of Sale Payment Methods'
args: 'pos.payment.method', 'journal_id'
No public methods.
pos_order_ids
One2many → pos.order
pos_payment_ids
One2many → pos.payment
No public methods.
No new fields.
Public methods (0)No public methods.
force_outstanding_account_id
Many2one → account.account
check_company=True
args: 'account.account', 'Forced Outstanding Account'
pos_payment_method_id
Many2one → pos.payment.method
pos_session_id
Many2one → pos.session
No public methods.
No new fields.
Public methods (2)get_real_tax_amount(self)
write(self, vals)
type
Selection
ondelete={'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.
kpi_pos_total
Boolean
kpi_pos_total_value
Monetary
compute='_compute_kpi_pos_total_value'
No public methods.
name
Char
pos_config_ids
Many2many → pos.config
value
Float
digits=(16, 4)
required=True
args: 'Coin/Bill Value'
name_create(self, name)
child_id
One2many → pos.category
string='Children Categories'
args: 'pos.category', 'parent_id'
image_128
Image
max_height=128
max_width=128
args: 'Image'
name
Char
required=True
string='Category Name'
translate=True
parent_id
Many2one → pos.category
index=True
string='Parent Category'
args: 'pos.category'
sequence
Integer
help='Gives the sequence order when displaying a list of product categories.'
name_get(self)
account_id
Many2one → account.account
account_readonly
Boolean
amount_to_balance
Float
message
Text
close_session(self)
active
Boolean
default=True
allowed_pricelist_ids
Many2many → product.pricelist
compute='_compute_allowed_pricelist_ids'
help='This is a technical field used for the domain of pricelist_id.'
string='Allowed Pricelists'
args: 'product.pricelist'
amount_authorized_diff
Float
help='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'
available_pricelist_ids
Many2many → product.pricelist
default=_default_pricelist
help='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'
barcode_nomenclature_id
Many2one → barcode.nomenclature
default=<expr>
help='Defines what kind of barcodes are available and how they are assigned to products, customers and cashiers.'
required=True
string='Barcode Nomenclature'
args: 'barcode.nomenclature'
cash_control
Boolean
compute='_compute_cash_control'
help='Check the amount of the cashbox at opening and closing.'
string='Advanced Cash Control'
cash_rounding
Boolean
string='Cash Rounding'
company_has_template
Boolean
compute='_compute_company_has_template'
string='Company has chart of accounts'
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
compute='_compute_currency'
string='Currency'
args: 'res.currency'
current_session_id
Many2one → pos.session
compute='_compute_current_session'
string='Current Session'
args: 'pos.session'
current_session_state
Char
compute='_compute_current_session'
current_user_id
Many2one → res.users
compute='_compute_current_session_user'
string='Current Session Responsible'
args: 'res.users'
default_bill_ids
Many2many → pos.bill
string='Coins/Bills'
args: 'pos.bill'
default_fiscal_position_id
Many2one → account.fiscal.position
string='Default Fiscal Position'
args: 'account.fiscal.position'
fiscal_position_ids
Many2many → account.fiscal.position
help='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_id
Many2one → res.groups
default=_get_group_pos_manager
help='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_id
Many2one → res.groups
default=_get_group_pos_user
help='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_session
Boolean
compute='_compute_current_session'
iface_available_categ_ids
Many2many → pos.category
help='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_scrollbars
Boolean
help='For imprecise industrial touchscreens.'
args: 'Large Scrollbars'
iface_cashdrawer
Boolean
help='Automatically open the cashdrawer.'
string='Cashdrawer'
iface_customer_facing_display
Boolean
compute='_compute_customer_facing_display'
iface_customer_facing_display_local
Boolean
help='Show customers checkout in a pop-up window. Recommend to be moved to a second screen visible to the client.'
string='Local Customer Facing Display'
iface_customer_facing_display_via_proxy
Boolean
help='Show checkout to customers with a remotely-connected screen.'
string='Customer Facing Display'
iface_display_categ_images
Boolean
help='The product categories will be displayed with pictures.'
string='Display Category Pictures'
iface_electronic_scale
Boolean
help='Enables Electronic Scale integration.'
string='Electronic Scale'
iface_orderline_customer_notes
Boolean
help='Allow to write notes for customer on Orderlines. This will be shown in the receipt.'
string='Customer Notes'
iface_print_auto
Boolean
default=False
help='The receipt will automatically be printed at the end of each order.'
string='Automatic Receipt Printing'
iface_print_skip_screen
Boolean
default=True
help='The receipt screen will be skipped if the receipt can be printed automatically.'
string='Skip Preview Screen'
iface_print_via_proxy
Boolean
help='Bypass browser printing and prints via the hardware proxy.'
string='Print via Proxy'
iface_scan_via_proxy
Boolean
help='Enable barcode scanning with a remotely connected barcode scanner and card swiping with a Vantiv card reader.'
string='Scan via Proxy'
iface_start_categ_id
Many2one → pos.category
help='The point of sale will display this product category by default. If no category is specified, all available products will be shown.'
string='Initial Category'
args: 'pos.category'
iface_tax_included
Selection
default='subtotal'
required=True
string='Tax Display'
args: [('subtotal', 'Tax-Excluded Price'), ('total', 'Tax-Included Price')]
iface_tipproduct
Boolean
string='Product tips'
invoice_journal_id
Many2one → account.journal
default=_default_invoice_journal
domain=[('type', '=', 'sale')]
help='Accounting journal used to create invoices.'
string='Invoice Journal'
args: 'account.journal'
is_header_or_footer
Boolean
is_installed_account_accountant
Boolean
compute='_compute_is_installed_account_accountant'
string='Is the Full Accounting Installed'
is_posbox
Boolean
journal_id
Many2one → account.journal
default=_default_sale_journal
domain=[('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_session_closing_cash
Float
compute='_compute_last_session'
last_session_closing_date
Date
compute='_compute_last_session'
limit_categories
Boolean
limited_partners_amount
Integer
default=10000
limited_partners_loading
Boolean
help="By default, 10000 partners are loaded.\nWhen the session is open, we keep on loading all remaining partners in the background.\nIn the meantime, you can use the 'Load Customers' button to load partners from database."
args: 'Limited Partners Loading'
limited_products_amount
Integer
default=20000
limited_products_loading
Boolean
help="we load all starred products (favorite), all services, recent inventory movements of products, and the most recently updated products.\nWhen the session is open, we keep on loading all remaining products in the background.\nIn the meantime, you can click on the 'database icon' in the searchbar to load products from database."
args: 'Limited Product Loading'
manual_discount
Boolean
default=True
string='Manual Discounts'
module_account
Boolean
default=True
help='Enables invoice generation from the Point of Sale.'
string='Invoicing'
module_pos_discount
Boolean
module_pos_hr
Boolean
help='Show employee login screen'
module_pos_loyalty
Boolean
module_pos_mercury
Boolean
string='Integrated Card Payments'
module_pos_restaurant
Boolean
name
Char
help='An internal identification of the point of sale.'
index=True
required=True
string='Point of Sale'
number_of_opened_session
Integer
compute='_compute_current_session'
string='Number of Opened Session'
only_round_cash_method
Boolean
string='Only apply rounding on cash'
other_devices
Boolean
help='Connect devices to your PoS without an IoT Box.'
string='Other Devices'
partner_load_background
Boolean
payment_method_ids
Many2many → pos.payment.method
default=<expr>
string='Payment Methods'
args: 'pos.payment.method'
picking_policy
Selection
default='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=True
string='Shipping Policy'
args: [('direct', 'As soon as possible'), ('one', 'When all products are ready')]
picking_type_id
Many2one → stock.picking.type
default=_default_picking_type_id
domain="[('code', '=', 'outgoing'), ('warehouse_id.company_id', '=', company_id)]"
ondelete='restrict'
required=True
string='Operation Type'
args: 'stock.picking.type'
pos_session_duration
Char
compute='_compute_current_session_user'
pos_session_state
Char
compute='_compute_current_session_user'
pos_session_username
Char
compute='_compute_current_session_user'
pricelist_id
Many2one → product.pricelist
default=_default_pricelist
help='The pricelist used if no customer is selected or if the customer has no Sale Pricelist configured.'
required=True
string='Default Pricelist'
args: 'product.pricelist'
product_configurator
Boolean
string='Product Configurator'
product_load_background
Boolean
proxy_ip
Char
help='The hostname or ip address of the hardware proxy, Will be autodetected if left empty.'
size=45
string='IP Address'
receipt_footer
Text
help='A short text that will be inserted as a footer in the printed receipt.'
string='Receipt Footer'
receipt_header
Text
help='A short text that will be inserted as a header in the printed receipt.'
string='Receipt Header'
restrict_price_control
Boolean
help='Only users with Manager access rights for PoS app can modify the product prices on orders.'
string='Restrict Price Modifications to Managers'
rounding_method
Many2one → account.cash.rounding
string='Cash rounding'
args: 'account.cash.rounding'
route_id
Many2one → stock.location.route
string='Spefic route for products delivered later.'
args: 'stock.location.route'
selectable_categ_ids
Many2many → pos.category
compute='_compute_selectable_categories'
args: 'pos.category'
sequence_id
Many2one → ir.sequence
copy=False
help='This sequence is automatically created by Odoo but you can change it to customize the reference numbers of your orders.'
ondelete='restrict'
readonly=True
string='Order IDs Sequence'
args: 'ir.sequence'
sequence_line_id
Many2one → ir.sequence
copy=False
help='This sequence is automatically created by Odoo but you can change it to customize the reference numbers of your orders lines.'
readonly=True
string='Order Line IDs Sequence'
args: 'ir.sequence'
session_ids
One2many → pos.session
string='Sessions'
args: 'pos.session', 'config_id'
set_maximum_difference
Boolean
help='Set a maximum difference allowed between the expected and counted money during the closing of the session.'
args: 'Set Maximum Difference'
ship_later
Boolean
string='Ship Later'
start_category
Boolean
default=False
args: 'Start Category'
tax_regime
Boolean
tax_regime_selection
Boolean
tip_product_id
Many2one → product.product
help='This product is used as reference on customer receipts.'
string='Tip Product'
args: 'product.product'
use_pricelist
Boolean
uuid
Char
copy=False
default=<expr>
help='A globally unique identifier for this pos configuration, used to prevent conflicts in client-generated data.'
readonly=True
warehouse_id
Many2one → stock.warehouse
default=_default_warehouse_id
ondelete='restrict'
args: 'stock.warehouse'
assign_payment_journals(self, company)
create(self, values)
execute(self)
generate_pos_journal(self, company)
get_limited_partners_loading(self)
get_limited_products_loading(self, fields)
name_get(self)
open_existing_session_cb(self)
open_opened_session_list(self)
open_session_cb(self, check_coa=True)
open_ui(self)
post_install_pos_localisation(self, companies=False)
setup_defaults(self, company)
setup_invoice_journal(self, company)
unlink(self)
write(self, vals)
end_date
Datetime
default=fields.Datetime.now
required=True
pos_config_ids
Many2many → pos.config
default=<expr>
args: 'pos.config', 'pos_detail_configs'
start_date
Datetime
default=_default_start_date
required=True
generate_report(self)
amount
Float
default=_default_amount
digits=0
required=True
config_id
Many2one → pos.config
default=_default_config
required=True
string='Point of Sale Configuration'
args: 'pos.config'
payment_date
Datetime
default=<expr>
required=True
string='Payment Date'
payment_method_id
Many2one → pos.payment.method
default=_default_payment_method
required=True
string='Payment Method'
args: 'pos.payment.method'
payment_name
Char
string='Payment Reference'
check(self)
launch_payment(self)
No new fields.
Public methods (1)open_statement(self)
account_move
Many2one → account.move
copy=False
index=True
readonly=True
string='Invoice'
args: 'account.move'
amount_paid
Float
digits=0
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Paid'
amount_return
Float
digits=0
readonly=True
required=True
string='Returned'
amount_tax
Float
digits=0
readonly=True
required=True
string='Taxes'
amount_total
Float
digits=0
readonly=True
required=True
string='Total'
company_id
Many2one → res.company
index=True
readonly=True
required=True
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
readonly=False
related='session_id.config_id'
string='Point of Sale'
args: 'pos.config'
currency_id
Many2one → res.currency
related='config_id.currency_id'
string='Currency'
args: 'res.currency'
currency_rate
Float
compute='_compute_currency_rate'
compute_sudo=True
digits=0
help='The rate of the currency to the currency of rate applicable at the date of the order'
readonly=True
store=True
args: 'Currency Rate'
date_order
Datetime
default=fields.Datetime.now
index=True
readonly=True
string='Date'
failed_pickings
Boolean
compute='_compute_picking_count'
fiscal_position_id
Many2one → account.fiscal.position
comodel_name='account.fiscal.position'
readonly=True
states={'draft': [('readonly', False)]}
string='Fiscal Position'
has_refundable_lines
Boolean
compute='_compute_has_refundable_lines'
args: 'Has Refundable Lines'
invoice_group
Boolean
readonly=False
related='config_id.module_account'
is_invoiced
Boolean
compute='_compute_is_invoiced'
args: 'Is Invoiced'
is_refunded
Boolean
compute='_compute_refund_related_fields'
is_tipped
Boolean
readonly=True
args: 'Is this already tipped?'
is_total_cost_computed
Boolean
compute='_compute_is_total_cost_computed'
help='Allows to know if all the total cost of the order lines have already been computed'
lines
One2many → pos.order.line
copy=True
readonly=True
states={'draft': [('readonly', False)]}
string='Order Lines'
args: 'pos.order.line', 'order_id'
margin
Monetary
compute='_compute_margin'
string='Margin'
margin_percent
Float
compute='_compute_margin'
digits=(12, 4)
string='Margin (%)'
name
Char
copy=False
default='/'
readonly=True
required=True
string='Order Ref'
nb_print
Integer
copy=False
default=0
readonly=True
string='Number of Print'
note
Text
string='Internal Notes'
partner_id
Many2one → res.partner
change_default=True
index=True
states={'draft': [('readonly', False)], 'paid': [('readonly', False)]}
string='Customer'
args: 'res.partner'
payment_ids
One2many → pos.payment
readonly=True
string='Payments'
args: 'pos.payment', 'pos_order_id'
picking_count
Integer
compute='_compute_picking_count'
picking_ids
One2many → stock.picking
picking_type_id
Many2one → stock.picking.type
readonly=False
related='session_id.config_id.picking_type_id'
string='Operation Type'
args: 'stock.picking.type'
pos_reference
Char
copy=False
index=True
readonly=True
string='Receipt Number'
pricelist_id
Many2one → product.pricelist
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Pricelist'
args: 'product.pricelist'
procurement_group_id
Many2one → procurement.group
copy=False
args: 'procurement.group', 'Procurement Group'
refund_orders_count
Integer
compute='_compute_refund_related_fields'
args: 'Number of Refund Orders'
refunded_order_ids
Many2many → pos.order
compute='_compute_refund_related_fields'
args: 'pos.order'
refunded_orders_count
Integer
compute='_compute_refund_related_fields'
sale_journal
Many2one → account.journal
ondelete='restrict'
readonly=True
related='session_id.config_id.journal_id'
store=True
string='Sales Journal'
args: 'account.journal'
sequence_number
Integer
default=1
help='A session-unique sequence number for the order'
string='Sequence Number'
session_id
Many2one → pos.session
domain="[('state', '=', 'opened')]"
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Session'
args: 'pos.session'
session_move_id
Many2one → account.move
copy=False
readonly=True
related='session_id.move_id'
string='Session Journal Entry'
args: 'account.move'
state
Selection
copy=False
default='draft'
index=True
readonly=True
args: [('draft', 'New'), ('cancel', 'Cancelled'), ('paid', 'Paid'), ('done', 'Posted'), ('invoiced', 'Invoiced')], 'Status'
tip_amount
Float
digits=0
readonly=True
string='Tip Amount'
to_invoice
Boolean
copy=False
args: 'To invoice'
to_ship
Boolean
user_id
Many2one → res.users
comodel_name='res.users'
default=<expr>
help='Person who uses the cash register. It can be a reliever, a student or an interim employee.'
states={'done': [('readonly', True)], 'invoiced': [('readonly', True)]}
string='Responsible'
action_pos_order_cancel(self)
action_pos_order_invoice(self)
action_pos_order_paid(self)
action_receipt_to_customer(self, name, client, ticket)
action_stock_picking(self)
action_view_invoice(self)
action_view_refund_orders(self)
action_view_refunded_orders(self)
add_payment(self, data)
create(self, values)
create_from_ui(self, orders, draft=False)
export_for_ui(self)
refund(self)
remove_from_ui(self, server_ids)
search_paid_order_ids(self, config_id, domain, limit, offset)
write(self, vals)
company_id
Many2one → res.company
related='order_id.company_id'
store=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
related='order_id.currency_id'
args: 'res.currency'
customer_note
Char
help='This is a note destined to the customer'
args: 'Customer Note'
discount
Float
default=0.0
digits=0
string='Discount (%)'
full_product_name
Char
is_total_cost_computed
Boolean
help='Allows to know if the total cost has already been computed or not'
margin
Monetary
compute='_compute_margin'
string='Margin'
margin_percent
Float
compute='_compute_margin'
digits=(12, 4)
string='Margin (%)'
name
Char
copy=False
required=True
string='Line No'
notice
Char
string='Discount Notice'
order_id
Many2one → pos.order
index=True
ondelete='cascade'
required=True
string='Order Ref'
args: 'pos.order'
pack_lot_ids
One2many → pos.pack.operation.lot
string='Lot/serial Number'
args: 'pos.pack.operation.lot', 'pos_order_line_id'
price_subtotal
Float
digits=0
readonly=True
required=True
string='Subtotal w/o Tax'
price_subtotal_incl
Float
digits=0
readonly=True
required=True
string='Subtotal'
price_unit
Float
digits=0
string='Unit Price'
product_id
Many2one → product.product
change_default=True
domain=[('sale_ok', '=', True)]
required=True
string='Product'
args: 'product.product'
product_uom_id
Many2one → uom.uom
related='product_id.uom_id'
string='Product UoM'
args: 'uom.uom'
qty
Float
default=1
digits='Product Unit of Measure'
args: 'Quantity'
refund_orderline_ids
One2many → pos.order.line
help='Orderlines in this field are the lines that refunded this orderline.'
args: 'pos.order.line', 'refunded_orderline_id', 'Refund Order Lines'
refunded_orderline_id
Many2one → pos.order.line
help='If this orderline is a refund, then the refunded orderline is specified in this field.'
args: 'pos.order.line', 'Refunded Order Line'
refunded_qty
Float
compute='_compute_refund_qty'
help='Number of items refunded in this orderline.'
args: 'Refunded Quantity'
tax_ids
Many2many → account.tax
readonly=True
string='Taxes'
args: 'account.tax'
tax_ids_after_fiscal_position
Many2many → account.tax
compute='_get_tax_ids_after_fiscal_position'
string='Taxes to Apply'
args: 'account.tax'
total_cost
Float
digits='Product Price'
readonly=True
string='Total cost'
create(self, values)
export_for_ui(self)
write(self, values)
lot_name
Char
order_id
Many2one → pos.order
readonly=False
related='pos_order_line_id.order_id'
args: 'pos.order'
pos_order_line_id
Many2one → pos.order.line
product_id
Many2one → product.product
readonly=False
related='pos_order_line_id.product_id'
args: 'product.product'
export_for_ui(self)
account_move_id
Many2one → account.move
amount
Monetary
currency_field='currency_id'
help='Total amount of the payment.'
readonly=True
required=True
string='Amount'
card_type
Char
cardholder_name
Char
company_id
Many2one → res.company
related='pos_order_id.company_id'
store=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
related='pos_order_id.currency_id'
string='Currency'
args: 'res.currency'
currency_rate
Float
help='Conversion rate from company currency to order currency.'
related='pos_order_id.currency_rate'
string='Conversion Rate'
is_change
Boolean
default=False
string='Is this payment change?'
name
Char
readonly=True
string='Label'
partner_id
Many2one → res.partner
related='pos_order_id.partner_id'
string='Customer'
args: 'res.partner'
payment_date
Datetime
default=<expr>
readonly=True
required=True
string='Date'
payment_method_id
Many2one → pos.payment.method
required=True
string='Payment Method'
args: 'pos.payment.method'
payment_status
Char
pos_order_id
Many2one → pos.order
index=True
required=True
string='Order'
args: 'pos.order'
session_id
Many2one → pos.session
index=True
related='pos_order_id.session_id'
store=True
string='Session'
args: 'pos.session'
ticket
Char
transaction_id
Char
export_for_ui(self)
name_get(self)
active
Boolean
default=True
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
config_ids
Many2many → pos.config
string='Point of Sale Configurations'
args: 'pos.config'
hide_use_payment_terminal
Boolean
compute='_compute_hide_use_payment_terminal'
help='Technical field which is used to hide use_payment_terminal when no payment interfaces are installed.'
is_cash_count
Boolean
compute='_compute_is_cash_count'
store=True
string='Cash'
journal_id
Many2one → account.journal
check_company=True
domain="[('type', 'in', ('cash', 'bank')), ('company_id', '=', company_id)]"
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.'
ondelete='restrict'
string='Journal'
args: 'account.journal'
name
Char
help='Defines the name of the payment method that will be displayed in the Point of Sale when the payments are selected.'
required=True
string='Method'
translate=True
open_session_ids
Many2many → pos.session
compute='_compute_open_session_ids'
help='Open PoS sessions that are using this payment method.'
string='Pos Sessions'
args: 'pos.session'
outstanding_account_id
Many2one → account.account
check_company=True
help='Leave empty to use the default account from the company setting.\nAccount used as outstanding account when creating accounting payment records for bank payments.'
ondelete='restrict'
string='Outstanding Account'
args: 'account.account'
receivable_account_id
Many2one → account.account
check_company=True
domain="[('reconcile', '=', True), ('user_type_id.type', '=', 'receivable'), ('company_id', '=', company_id)]"
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'
split_transactions
Boolean
default=False
help='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'
type
Selection
compute='_compute_type'
selection=[('cash', 'Cash'), ('bank', 'Bank'), ('pay_later', 'Customer Account')]
use_payment_terminal
Selection
help='Record payments with a terminal on this journal.'
selection=<expr>
string='Use a Payment Terminal'
write(self, vals)
bank_payment_ids
One2many → account.payment
help='Account payments representing aggregated and bank split payments.'
args: 'account.payment', 'pos_session_id', 'Bank Payments'
cash_control
Boolean
compute='_compute_cash_all'
compute_sudo=True
string='Has Cash Control'
cash_journal_id
Many2one → account.journal
compute='_compute_cash_all'
store=True
string='Cash Journal'
args: 'account.journal'
cash_real_difference
Monetary
readonly=True
string='Difference'
cash_real_expected
Monetary
readonly=True
string='Expected'
cash_real_transaction
Monetary
readonly=True
string='Transaction'
cash_register_balance_end
Monetary
compute='_compute_cash_balance'
help='Sum of opening balance and transactions.'
readonly=True
string='Theoretical Closing Balance'
cash_register_balance_end_real
Monetary
help='Total of closing cash control lines.'
readonly=True
related='cash_register_id.balance_end_real'
string='Ending Balance'
cash_register_balance_start
Monetary
help='Total of opening cash control lines.'
readonly=True
related='cash_register_id.balance_start'
string='Starting Balance'
cash_register_difference
Monetary
compute='_compute_cash_balance'
help='Difference between the theoretical closing balance and the real closing balance.'
readonly=True
string='Before Closing Difference'
cash_register_id
Many2one → account.bank.statement
compute='_compute_cash_all'
store=True
string='Cash Register'
args: 'account.bank.statement'
cash_register_total_entry_encoding
Monetary
compute='_compute_cash_balance'
help='Total of all paid sales orders'
readonly=True
string='Total Cash Transaction'
company_id
Many2one → res.company
readonly=True
related='config_id.company_id'
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
help='The physical point of sale you will use.'
index=True
required=True
string='Point of Sale'
args: 'pos.config'
currency_id
Many2one → res.currency
readonly=False
related='config_id.currency_id'
string='Currency'
args: 'res.currency'
failed_pickings
Boolean
compute='_compute_picking_count'
is_in_company_currency
Boolean
compute='_compute_is_in_company_currency'
args: 'Is Using Company Currency'
login_number
Integer
default=0
help='A sequence number that is incremented each time a user resumes the pos session'
string='Login Sequence Number'
move_id
Many2one → account.move
index=True
string='Journal Entry'
args: 'account.move'
name
Char
default='/'
readonly=True
required=True
string='Session ID'
opening_notes
Text
string='Opening Notes'
order_count
Integer
compute='_compute_order_count'
order_ids
One2many → pos.order
string='Orders'
args: 'pos.order', 'session_id'
payment_method_ids
Many2many → pos.payment.method
related='config_id.payment_method_ids'
string='Payment Methods'
args: 'pos.payment.method'
picking_count
Integer
compute='_compute_picking_count'
picking_ids
One2many → stock.picking
rescue
Boolean
copy=False
help='Auto-generated session for orphan orders, ignored in constraints'
readonly=True
string='Recovery Session'
sequence_number
Integer
default=1
help='A sequence number that is incremented with each order'
string='Order Sequence Number'
start_at
Datetime
readonly=True
string='Opening Date'
state
Selection
copy=False
default='opening_control'
index=True
readonly=True
required=True
string='Status'
args: POS_SESSION_STATE
statement_ids
One2many → account.bank.statement
readonly=True
string='Cash Statements'
args: 'account.bank.statement', 'pos_session_id'
stop_at
Datetime
copy=False
readonly=True
string='Closing Date'
total_payments_amount
Float
compute='_compute_total_payments_amount'
string='Total Payments Amount'
update_stock_at_closing
Boolean
user_id
Many2one → res.users
default=<expr>
index=True
ondelete='restrict'
readonly=True
required=True
states={'opening_control': [('readonly', False)]}
string='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)
create(self, values)
get_closing_control_data(self)
login(self)
open_frontend_cb(self)
post_closing_cash_details(self, counted_cash)
set_cashbox_pos(self, cashbox_value, notes)
show_cash_register(self)
show_journal_items(self)
try_cash_in_out(self, _type, amount, reason, extras)
unlink(self)
update_closing_control_state_session(self, notes)
No new fields.
Public methods (0)No public methods.
pos_order_id
Many2one → pos.order
No public methods.
No new fields.
Public methods (1)get_product_info_pos(self, price, quantity, pos_config_id)
available_in_pos
Boolean
default=False
help='Check if you want this product to appear in the Point of Sale.'
string='Available in POS'
pos_categ_id
Many2one → pos.category
help='Category used in the Point of Sale.'
string='Point of Sale Category'
args: 'pos.category'
to_weight
Boolean
help='Check if the product should be weighted using the hardware scale integration.'
string='To Weigh With Scale'
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)
average_price
Float
group_operator='avg'
readonly=True
string='Average Price'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
readonly=True
string='Point of Sale'
args: 'pos.config'
date
Datetime
readonly=True
string='Order Date'
delay_validation
Integer
readonly=True
string='Delay Validation'
invoiced
Boolean
readonly=True
journal_id
Many2one → account.journal
readonly=True
string='Journal'
args: 'account.journal'
margin
Float
readonly=True
string='Margin'
nbr_lines
Integer
readonly=True
string='Sale Line Count'
order_id
Many2one → pos.order
readonly=True
string='Order'
args: 'pos.order'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
pos_categ_id
Many2one → pos.category
readonly=True
string='PoS Category'
args: 'pos.category'
price_sub_total
Float
readonly=True
string='Subtotal w/o discount'
price_total
Float
readonly=True
string='Total Price'
pricelist_id
Many2one → product.pricelist
readonly=True
string='Pricelist'
args: 'product.pricelist'
product_categ_id
Many2one → product.category
readonly=True
string='Product Category'
args: 'product.category'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_qty
Integer
readonly=True
string='Product Quantity'
product_tmpl_id
Many2one → product.template
readonly=True
string='Product Template'
args: 'product.template'
session_id
Many2one → pos.session
readonly=True
string='Session'
args: 'pos.session'
state
Selection
readonly=True
string='Status'
args: [('draft', 'New'), ('paid', 'Paid'), ('done', 'Posted'), ('invoiced', 'Invoiced'), ('cancel', 'Cancelled')]
total_discount
Float
readonly=True
string='Total Discount'
user_id
Many2one → res.users
readonly=True
string='User'
args: 'res.users'
init(self)
point_of_sale_update_stock_quantities
Selection
default='closing'
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 (recommended)'), ('real', 'In real time')]
validate_period_lock_date(self)
account_default_pos_receivable_account_id
Many2one
readonly=False
related='company_id.account_default_pos_receivable_account_id'
string='Default Account Receivable (PoS)'
module_pos_adyen
Boolean
help='The transactions are processed by Adyen. Set your Adyen credentials on the related payment method.'
string='Adyen Payment Terminal'
module_pos_coupon
Boolean
help='Allow the use of coupon and promotion programs in PoS.'
args: 'Coupon and Promotion Programs'
module_pos_gift_card
Boolean
help='Allow the use of gift card'
args: 'Gift Cards'
module_pos_mercury
Boolean
help='The transactions are processed by Vantiv. Set your Vantiv credentials on the related payment method.'
string='Vantiv Payment Terminal'
module_pos_six
Boolean
help='The transactions are processed by Six. Set the IP address of the terminal on the related payment method.'
string='Six Payment Terminal'
sale_tax_id
Many2one → account.tax
readonly=False
related='company_id.account_sale_tax_id'
string='Default Sale Tax'
args: 'account.tax'
update_stock_quantities
Selection
readonly=False
related='company_id.point_of_sale_update_stock_quantities'
set_values(self)
pos_order_count
Integer
compute='_compute_pos_order'
groups='point_of_sale.group_pos_user'
help='The number of point of sales orders related to this customer'
pos_order_ids
One2many → pos.order
readonly=True
args: 'pos.order', 'partner_id'
action_view_pos_order(self)
create_from_ui(self, partner)
No new fields.
Public methods (0)No public methods.
pos_order_id
Many2one → pos.order
index=True
args: 'pos.order'
pos_session_id
Many2one → pos.session
index=True
args: 'pos.session'
No public methods.
No new fields.
Public methods (0)No public methods.
pos_type_id
Many2one → stock.picking.type
string='Point of Sale Operation Type'
args: 'stock.picking.type'
No public methods.
is_pos_groupable
Boolean
help='Check if you want to group products of this category in point of sale orders'
string='Group Products in POS'
No public methods.
is_pos_groupable
Boolean
readonly=False
related='category_id.is_pos_groupable'
No public methods.
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_cashbox_line_view_tree |
account.cashbox.line.tree | account.cashbox.line | tree | New |
assets_tests |
Point Of Sale Assets Tests | ir.ui.view | qweb | Inherits web.assets_tests |
closing_balance_confirm |
Confirming balance closing | closing.balance.confirm.wizard | form | New |
customer_facing_display_html |
customer_facing_display_html | ir.ui.view | qweb | New |
digest_digest_view_form |
digest.digest.view.form.inherit.sale.order | digest.digest | xpath | Inherits digest.digest_digest_view_form |
point_of_sale.assets |
point_of_sale assets | ir.ui.view | qweb | New |
point_of_sale.assets_backend |
hr assets | ir.ui.view | qweb | Inherits web.assets_backend |
point_of_sale.assets_common |
POS Assets Common | ir.ui.view | qweb | New |
point_of_sale.index |
POS Index | ir.ui.view | qweb | New |
point_of_sale.pos_assets_backend |
POS UI Backend Assets | ir.ui.view | qweb | Inherits web.assets_backend |
point_of_sale.qunit_suite |
point_of_sale.qunit_suite | ir.ui.view | qweb | New |
point_of_sale.qunit_suite_assets |
point_of_sale.qunit_suite_assets | ir.ui.view | qweb | New |
point_of_sale.qunit_suite_tests |
point_of_sale.qunit_suite_tests | ir.ui.view | qweb | New |
pos_config_view_form |
pos.config.form.view | pos.config | form | 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.tree | pos.payment.method | tree | New |
pos_rounding_form_view_inherited |
pos.cash.rounding.form.inherited | account.cash.rounding | xpath | Inherits account.rounding_form_view |
product_pos_category_form_view |
pos.category.form | pos.category | form | New |
product_pos_category_tree_view |
pos.category.tree | pos.category | tree | New |
product_template_form_view |
product.template.form.inherit | product.template | xpath | Inherits product.product_template_form_view |
product_template_search_view_pos |
product.template.search.pos.form | product.template | filter | Inherits product.product_template_search_view |
product_uom_categ_form_view |
uom.category.form.inherit | uom.category | xpath | Inherits uom.product_uom_categ_form_view |
product_uom_categ_tree_view |
uom.category.tree.inherit | uom.category | xpath | Inherits uom.product_uom_categ_tree_view |
report_invoice |
report_invoice | ir.ui.view | qweb | Inherits account.report_invoice |
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 | xpath | Inherits base.res_config_settings_view_form |
view_account_bnk_stmt_cashbox |
account.bnk_stmt_cashbox.form | account.bank.statement.cashbox | xpath | Inherits account.view_account_bnk_stmt_cashbox |
view_account_bnk_stmt_cashbox_footer |
account.bnk_stmt_cashbox.form.close.modal | account.bank.statement.cashbox | xpath | Inherits account.view_account_bnk_stmt_cashbox_footer |
view_account_journal_pos_user_form |
account.journal.pos.user.form.inherit | account.journal | xpath | Inherits account.view_account_journal_form |
view_bank_statement_pos_session |
view.bank.statement.pos.session | account.bank.statement | xpath | Inherits account.view_bank_statement_form |
view_partner_pos_kanban |
res.partner.pos.kanban.inherit | res.partner | field | Inherits base.res_partner_kanban_view |
view_partner_property_form |
res.partner.pos.form.inherit | res.partner | div | Inherits base.view_partner_form |
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.tree.view | pos.config | tree | New |
view_pos_details_wizard |
pos.details.wizard.form | pos.details.wizard | form | 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.tree | pos.order.line | tree | 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.tree | pos.order | tree | New |
view_pos_order_tree_all_sales_lines |
pos.order.line.all.sales.tree | pos.order.line | tree | New |
view_pos_order_tree_no_session_id |
pos.order.tree_no_session_id | pos.order | xpath | 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.tree | pos.payment | tree | New |
view_pos_pos_form |
pos.order.form | pos.order | 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.tree.view | pos.session | tree | 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 |
account_id
Many2one → account.account
readonly=True
related='journal_id.default_account_id'
args: 'account.account'
pos_session_id
Many2one → pos.session
copy=False
string='Session'
args: 'pos.session'
button_validate_or_action(self)
unlink(self)
is_a_template
Boolean
default=False
pos_config_ids
One2many → pos.config
default_get(self, fields)
set_default_cashbox(self)
pos_statement_id
Many2one → pos.order
ondelete='cascade'
string='POS statement'
args: 'pos.order'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
pos_payment_method_ids
One2many → pos.payment.method
string='Point of Sale Payment Methods'
args: 'pos.payment.method', 'cash_journal_id'
No public methods.
pos_order_ids
One2many → pos.order
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (2)get_real_tax_amount(self)
write(self, vals)
type
Selection
ondelete={'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 (1)confirm_closing_balance(self)
kpi_pos_total
Boolean
kpi_pos_total_value
Monetary
compute='_compute_kpi_pos_total_value'
No public methods.
child_id
One2many → pos.category
string='Children Categories'
args: 'pos.category', 'parent_id'
image_128
Image
max_height=128
max_width=128
args: 'Image'
name
Char
required=True
string='Category Name'
translate=True
parent_id
Many2one → pos.category
index=True
string='Parent Category'
args: 'pos.category'
sequence
Integer
help='Gives the sequence order when displaying a list of product categories.'
name_get(self)
unlink(self)
active
Boolean
default=True
allowed_pricelist_ids
Many2many → product.pricelist
compute='_compute_allowed_pricelist_ids'
help='This is a technical field used for the domain of pricelist_id.'
string='Allowed Pricelists'
args: 'product.pricelist'
amount_authorized_diff
Float
help='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'
available_pricelist_ids
Many2many → product.pricelist
default=_default_pricelist
help='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'
barcode_nomenclature_id
Many2one → barcode.nomenclature
default=<expr>
help='Defines what kind of barcodes are available and how they are assigned to products, customers and cashiers.'
required=True
string='Barcode Nomenclature'
args: 'barcode.nomenclature'
cash_control
Boolean
help='Check the amount of the cashbox at opening and closing.'
string='Advanced Cash Control'
cash_rounding
Boolean
string='Cash Rounding'
company_has_template
Boolean
compute='_compute_company_has_template'
string='Company has chart of accounts'
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
compute='_compute_currency'
string='Currency'
args: 'res.currency'
current_session_id
Many2one → pos.session
compute='_compute_current_session'
string='Current Session'
args: 'pos.session'
current_session_state
Char
compute='_compute_current_session'
current_user_id
Many2one → res.users
compute='_compute_current_session_user'
string='Current Session Responsible'
args: 'res.users'
customer_facing_display_html
Html
compute=_compute_customer_html
string='Customer facing display content'
translate=True
default_cashbox_id
Many2one → account.bank.statement.cashbox
string='Default Balance'
args: 'account.bank.statement.cashbox'
default_fiscal_position_id
Many2one → account.fiscal.position
string='Default Fiscal Position'
args: 'account.fiscal.position'
fiscal_position_ids
Many2many → account.fiscal.position
help='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_id
Many2one → res.groups
default=_get_group_pos_manager
help='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_id
Many2one → res.groups
default=_get_group_pos_user
help='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_session
Boolean
compute='_compute_current_session'
iface_available_categ_ids
Many2many → pos.category
help='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_scrollbars
Boolean
help='For imprecise industrial touchscreens.'
args: 'Large Scrollbars'
iface_cashdrawer
Boolean
help='Automatically open the cashdrawer.'
string='Cashdrawer'
iface_customer_facing_display
Boolean
help='Show checkout to customers with a remotely-connected screen.'
string='Customer Facing Display'
iface_display_categ_images
Boolean
help='The product categories will be displayed with pictures.'
string='Display Category Pictures'
iface_electronic_scale
Boolean
help='Enables Electronic Scale integration.'
string='Electronic Scale'
iface_print_auto
Boolean
default=False
help='The receipt will automatically be printed at the end of each order.'
string='Automatic Receipt Printing'
iface_print_skip_screen
Boolean
default=True
help='The receipt screen will be skipped if the receipt can be printed automatically.'
string='Skip Preview Screen'
iface_print_via_proxy
Boolean
help='Bypass browser printing and prints via the hardware proxy.'
string='Print via Proxy'
iface_scan_via_proxy
Boolean
help='Enable barcode scanning with a remotely connected barcode scanner and card swiping with a Vantiv card reader.'
string='Scan via Proxy'
iface_start_categ_id
Many2one → pos.category
help='The point of sale will display this product category by default. If no category is specified, all available products will be shown.'
string='Initial Category'
args: 'pos.category'
iface_tax_included
Selection
default='subtotal'
required=True
string='Tax Display'
args: [('subtotal', 'Tax-Excluded Price'), ('total', 'Tax-Included Price')]
iface_tipproduct
Boolean
string='Product tips'
iface_vkeyboard
Boolean
help='Don’t turn this option on if you take orders on smartphones or tablets. \n Such devices already benefit from a native keyboard.'
string='Virtual KeyBoard'
invoice_journal_id
Many2one → account.journal
default=_default_invoice_journal
domain=[('type', '=', 'sale')]
help='Accounting journal used to create invoices.'
string='Invoice Journal'
args: 'account.journal'
is_header_or_footer
Boolean
is_installed_account_accountant
Boolean
compute='_compute_is_installed_account_accountant'
string='Is the Full Accounting Installed'
is_posbox
Boolean
journal_id
Many2one → account.journal
default=_default_sale_journal
domain=[('type', '=', 'sale')]
help='Accounting journal used to post sales entries.'
ondelete='restrict'
string='Sales Journal'
args: 'account.journal'
last_session_closing_cash
Float
compute='_compute_last_session'
last_session_closing_cashbox
Many2one → account.bank.statement.cashbox
compute='_compute_last_session'
args: 'account.bank.statement.cashbox'
last_session_closing_date
Date
compute='_compute_last_session'
limit_categories
Boolean
manage_orders
Boolean
string='Manage Orders'
manual_discount
Boolean
default=True
string='Manual Discounts'
module_account
Boolean
default=True
help='Enables invoice generation from the Point of Sale.'
string='Invoicing'
module_pos_discount
Boolean
module_pos_hr
Boolean
help='Show employee login screen'
module_pos_loyalty
Boolean
module_pos_mercury
Boolean
string='Integrated Card Payments'
module_pos_restaurant
Boolean
name
Char
help='An internal identification of the point of sale.'
index=True
required=True
string='Point of Sale'
only_round_cash_method
Boolean
string='Only apply rounding on cash'
other_devices
Boolean
help='Connect devices to your PoS without an IoT Box.'
string='Other Devices'
payment_method_ids
Many2many → pos.payment.method
default=<expr>
string='Payment Methods'
args: 'pos.payment.method'
picking_type_id
Many2one → stock.picking.type
default=_default_picking_type_id
domain="[('code', '=', 'outgoing'), ('warehouse_id.company_id', '=', company_id)]"
ondelete='restrict'
required=True
string='Operation Type'
args: 'stock.picking.type'
pos_session_duration
Char
compute='_compute_current_session_user'
pos_session_state
Char
compute='_compute_current_session_user'
pos_session_username
Char
compute='_compute_current_session_user'
pricelist_id
Many2one → product.pricelist
default=_default_pricelist
help='The pricelist used if no customer is selected or if the customer has no Sale Pricelist configured.'
required=True
string='Default Pricelist'
args: 'product.pricelist'
product_configurator
Boolean
string='Product Configurator'
proxy_ip
Char
help='The hostname or ip address of the hardware proxy, Will be autodetected if left empty.'
size=45
string='IP Address'
receipt_footer
Text
help='A short text that will be inserted as a footer in the printed receipt.'
string='Receipt Footer'
receipt_header
Text
help='A short text that will be inserted as a header in the printed receipt.'
string='Receipt Header'
restrict_price_control
Boolean
help='Only users with Manager access rights for PoS app can modify the product prices on orders.'
string='Restrict Price Modifications to Managers'
rounding_method
Many2one → account.cash.rounding
string='Cash rounding'
args: 'account.cash.rounding'
selectable_categ_ids
Many2many → pos.category
compute='_compute_selectable_categories'
args: 'pos.category'
sequence_id
Many2one → ir.sequence
copy=False
help='This sequence is automatically created by Odoo but you can change it to customize the reference numbers of your orders.'
ondelete='restrict'
readonly=True
string='Order IDs Sequence'
args: 'ir.sequence'
sequence_line_id
Many2one → ir.sequence
copy=False
help='This sequence is automatically created by Odoo but you can change it to customize the reference numbers of your orders lines.'
readonly=True
string='Order Line IDs Sequence'
args: 'ir.sequence'
session_ids
One2many → pos.session
string='Sessions'
args: 'pos.session', 'config_id'
show_allow_invoicing_alert
Boolean
compute='_compute_show_allow_invoicing_alert'
start_category
Boolean
default=False
args: 'Start Category'
tax_regime
Boolean
tax_regime_selection
Boolean
tip_product_id
Many2one → product.product
help='This product is used as reference on customer receipts.'
string='Tip Product'
args: 'product.product'
use_pricelist
Boolean
uuid
Char
copy=False
default=<expr>
help='A globally unique identifier for this pos configuration, used to prevent conflicts in client-generated data.'
readonly=True
assign_payment_journals(self, company)
create(self, values)
execute(self)
generate_pos_journal(self, company)
name_get(self)
open_existing_session_cb(self)
open_session_cb(self, check_coa=True)
open_ui(self)
post_install_pos_localisation(self, companies=False)
setup_defaults(self, company)
setup_invoice_journal(self, company)
unlink(self)
write(self, vals)
end_date
Datetime
default=fields.Datetime.now
required=True
pos_config_ids
Many2many → pos.config
default=<expr>
args: 'pos.config', 'pos_detail_configs'
start_date
Datetime
default=_default_start_date
required=True
generate_report(self)
amount
Float
default=_default_amount
digits=0
required=True
config_id
Many2one → pos.config
default=_default_config
required=True
string='Point of Sale Configuration'
args: 'pos.config'
payment_date
Datetime
default=<expr>
required=True
string='Payment Date'
payment_method_id
Many2one → pos.payment.method
default=_default_payment_method
required=True
string='Payment Method'
args: 'pos.payment.method'
payment_name
Char
string='Payment Reference'
check(self)
launch_payment(self)
No new fields.
Public methods (1)open_statement(self)
account_move
Many2one → account.move
copy=False
index=True
readonly=True
string='Invoice'
args: 'account.move'
amount_paid
Float
digits=0
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Paid'
amount_return
Float
digits=0
readonly=True
required=True
string='Returned'
amount_tax
Float
digits=0
readonly=True
required=True
string='Taxes'
amount_total
Float
digits=0
readonly=True
required=True
string='Total'
company_id
Many2one → res.company
readonly=True
required=True
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
readonly=False
related='session_id.config_id'
string='Point of Sale'
args: 'pos.config'
currency_id
Many2one → res.currency
related='config_id.currency_id'
string='Currency'
args: 'res.currency'
currency_rate
Float
compute='_compute_currency_rate'
compute_sudo=True
digits=0
help='The rate of the currency to the currency of rate applicable at the date of the order'
readonly=True
store=True
args: 'Currency Rate'
date_order
Datetime
default=fields.Datetime.now
index=True
readonly=True
string='Date'
failed_pickings
Boolean
compute='_compute_picking_count'
fiscal_position_id
Many2one → account.fiscal.position
comodel_name='account.fiscal.position'
readonly=True
states={'draft': [('readonly', False)]}
string='Fiscal Position'
invoice_group
Boolean
readonly=False
related='config_id.module_account'
is_invoiced
Boolean
compute='_compute_is_invoiced'
args: 'Is Invoiced'
is_tipped
Boolean
readonly=True
args: 'Is this already tipped?'
lines
One2many → pos.order.line
copy=True
readonly=True
states={'draft': [('readonly', False)]}
string='Order Lines'
args: 'pos.order.line', 'order_id'
name
Char
copy=False
default='/'
readonly=True
required=True
string='Order Ref'
nb_print
Integer
copy=False
default=0
readonly=True
string='Number of Print'
note
Text
string='Internal Notes'
partner_id
Many2one → res.partner
change_default=True
index=True
states={'draft': [('readonly', False)], 'paid': [('readonly', False)]}
string='Customer'
args: 'res.partner'
payment_ids
One2many → pos.payment
readonly=True
string='Payments'
args: 'pos.payment', 'pos_order_id'
picking_count
Integer
compute='_compute_picking_count'
picking_ids
One2many → stock.picking
picking_type_id
Many2one → stock.picking.type
readonly=False
related='session_id.config_id.picking_type_id'
string='Operation Type'
args: 'stock.picking.type'
pos_reference
Char
copy=False
readonly=True
string='Receipt Number'
pricelist_id
Many2one → product.pricelist
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Pricelist'
args: 'product.pricelist'
sale_journal
Many2one → account.journal
ondelete='restrict'
readonly=True
related='session_id.config_id.journal_id'
store=True
string='Sales Journal'
args: 'account.journal'
sequence_number
Integer
default=1
help='A session-unique sequence number for the order'
string='Sequence Number'
session_id
Many2one → pos.session
domain="[('state', '=', 'opened')]"
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Session'
args: 'pos.session'
session_move_id
Many2one → account.move
copy=False
readonly=True
related='session_id.move_id'
string='Session Journal Entry'
args: 'account.move'
state
Selection
copy=False
default='draft'
index=True
readonly=True
args: [('draft', 'New'), ('cancel', 'Cancelled'), ('paid', 'Paid'), ('done', 'Posted'), ('invoiced', 'Invoiced')], 'Status'
tip_amount
Float
digits=0
readonly=True
string='Tip Amount'
to_invoice
Boolean
copy=False
args: 'To invoice'
user_id
Many2one → res.users
comodel_name='res.users'
default=<expr>
help='Person who uses the cash register. It can be a reliever, a student or an interim employee.'
states={'done': [('readonly', True)], 'invoiced': [('readonly', True)]}
string='Responsible'
action_pos_order_cancel(self)
action_pos_order_invoice(self)
action_pos_order_paid(self)
action_receipt_to_customer(self, name, client, ticket)
action_stock_picking(self)
action_view_invoice(self)
add_payment(self, data)
create(self, values)
create_from_ui(self, orders, draft=False)
export_for_ui(self)
refund(self)
remove_from_ui(self, server_ids)
search_paid_order_ids(self, config_id, domain, limit, offset)
unlink(self)
write(self, vals)
company_id
Many2one → res.company
related='order_id.company_id'
store=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
related='order_id.currency_id'
args: 'res.currency'
discount
Float
default=0.0
digits=0
string='Discount (%)'
full_product_name
Char
name
Char
copy=False
required=True
string='Line No'
notice
Char
string='Discount Notice'
order_id
Many2one → pos.order
index=True
ondelete='cascade'
required=True
string='Order Ref'
args: 'pos.order'
pack_lot_ids
One2many → pos.pack.operation.lot
string='Lot/serial Number'
args: 'pos.pack.operation.lot', 'pos_order_line_id'
price_subtotal
Float
digits=0
readonly=True
required=True
string='Subtotal w/o Tax'
price_subtotal_incl
Float
digits=0
readonly=True
required=True
string='Subtotal'
price_unit
Float
digits=0
string='Unit Price'
product_id
Many2one → product.product
change_default=True
domain=[('sale_ok', '=', True)]
required=True
string='Product'
args: 'product.product'
product_uom_id
Many2one → uom.uom
related='product_id.uom_id'
string='Product UoM'
args: 'uom.uom'
qty
Float
default=1
digits='Product Unit of Measure'
args: 'Quantity'
tax_ids
Many2many → account.tax
readonly=True
string='Taxes'
args: 'account.tax'
tax_ids_after_fiscal_position
Many2many → account.tax
compute='_get_tax_ids_after_fiscal_position'
string='Taxes to Apply'
args: 'account.tax'
create(self, values)
export_for_ui(self)
write(self, values)
lot_name
Char
order_id
Many2one → pos.order
readonly=False
related='pos_order_line_id.order_id'
args: 'pos.order'
pos_order_line_id
Many2one → pos.order.line
product_id
Many2one → product.product
readonly=False
related='pos_order_line_id.product_id'
args: 'product.product'
export_for_ui(self)
amount
Monetary
currency_field='currency_id'
help='Total amount of the payment.'
readonly=True
required=True
string='Amount'
card_type
Char
cardholder_name
Char
company_id
Many2one → res.company
related='pos_order_id.company_id'
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
related='pos_order_id.currency_id'
string='Currency'
args: 'res.currency'
currency_rate
Float
help='Conversion rate from company currency to order currency.'
related='pos_order_id.currency_rate'
string='Conversion Rate'
is_change
Boolean
default=False
string='Is this payment change?'
name
Char
readonly=True
string='Label'
partner_id
Many2one → res.partner
related='pos_order_id.partner_id'
string='Customer'
args: 'res.partner'
payment_date
Datetime
default=<expr>
readonly=True
required=True
string='Date'
payment_method_id
Many2one → pos.payment.method
required=True
string='Payment Method'
args: 'pos.payment.method'
payment_status
Char
pos_order_id
Many2one → pos.order
required=True
string='Order'
args: 'pos.order'
session_id
Many2one → pos.session
index=True
related='pos_order_id.session_id'
store=True
string='Session'
args: 'pos.session'
ticket
Char
transaction_id
Char
export_for_ui(self)
name_get(self)
active
Boolean
default=True
cash_journal_id
Many2one → account.journal
domain=[('type', '=', 'cash')]
help='The payment method is of type cash. A cash statement will be automatically generated.'
ondelete='restrict'
string='Cash Journal'
args: 'account.journal'
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
config_ids
Many2many → pos.config
string='Point of Sale Configurations'
args: 'pos.config'
hide_use_payment_terminal
Boolean
compute='_compute_hide_use_payment_terminal'
help='Technical field which is used to hide use_payment_terminal when no payment interfaces are installed.'
is_cash_count
Boolean
string='Cash'
name
Char
required=True
string='Payment Method'
translate=True
open_session_ids
Many2many → pos.session
compute='_compute_open_session_ids'
help='Open PoS sessions that are using this payment method.'
string='Pos Sessions'
args: 'pos.session'
receivable_account_id
Many2one → account.account
default=<expr>
domain=[('reconcile', '=', True), ('user_type_id.type', '=', 'receivable')]
help='Account used as counterpart of the income account in the accounting entry representing the pos sales.'
ondelete='restrict'
required=True
string='Intermediary Account'
args: 'account.account'
split_transactions
Boolean
default=False
help='If ticked, each payment will generate a separated journal item. Ticking that option will slow the closing of the PoS.'
string='Split Transactions'
use_payment_terminal
Selection
help='Record payments with a terminal on this journal.'
selection=<expr>
string='Use a Payment Terminal'
write(self, vals)
cash_control
Boolean
compute='_compute_cash_all'
compute_sudo=True
string='Has Cash Control'
cash_journal_id
Many2one → account.journal
compute='_compute_cash_all'
store=True
string='Cash Journal'
args: 'account.journal'
cash_real_difference
Monetary
readonly=True
string='Difference'
cash_real_expected
Monetary
readonly=True
string='Expected'
cash_real_transaction
Monetary
readonly=True
string='Transaction'
cash_register_balance_end
Monetary
compute='_compute_cash_balance'
help='Sum of opening balance and transactions.'
readonly=True
string='Theoretical Closing Balance'
cash_register_balance_end_real
Monetary
help='Total of closing cash control lines.'
readonly=True
related='cash_register_id.balance_end_real'
string='Ending Balance'
cash_register_balance_start
Monetary
help='Total of opening cash control lines.'
readonly=True
related='cash_register_id.balance_start'
string='Starting Balance'
cash_register_difference
Monetary
compute='_compute_cash_balance'
help='Difference between the theoretical closing balance and the real closing balance.'
readonly=True
string='Before Closing Difference'
cash_register_id
Many2one → account.bank.statement
compute='_compute_cash_all'
store=True
string='Cash Register'
args: 'account.bank.statement'
cash_register_total_entry_encoding
Monetary
compute='_compute_cash_balance'
help='Total of all paid sales orders'
readonly=True
string='Total Cash Transaction'
company_id
Many2one → res.company
readonly=True
related='config_id.company_id'
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
help='The physical point of sale you will use.'
index=True
required=True
string='Point of Sale'
args: 'pos.config'
currency_id
Many2one → res.currency
readonly=False
related='config_id.currency_id'
string='Currency'
args: 'res.currency'
failed_pickings
Boolean
compute='_compute_picking_count'
is_in_company_currency
Boolean
compute='_compute_is_in_company_currency'
args: 'Is Using Company Currency'
login_number
Integer
default=0
help='A sequence number that is incremented each time a user resumes the pos session'
string='Login Sequence Number'
move_id
Many2one → account.move
index=True
string='Journal Entry'
args: 'account.move'
name
Char
default='/'
readonly=True
required=True
string='Session ID'
order_count
Integer
compute='_compute_order_count'
order_ids
One2many → pos.order
string='Orders'
args: 'pos.order', 'session_id'
payment_method_ids
Many2many → pos.payment.method
related='config_id.payment_method_ids'
string='Payment Methods'
args: 'pos.payment.method'
picking_count
Integer
compute='_compute_picking_count'
picking_ids
One2many → stock.picking
rescue
Boolean
copy=False
help='Auto-generated session for orphan orders, ignored in constraints'
readonly=True
string='Recovery Session'
sequence_number
Integer
default=1
help='A sequence number that is incremented with each order'
string='Order Sequence Number'
start_at
Datetime
readonly=True
string='Opening Date'
state
Selection
copy=False
default='opening_control'
index=True
readonly=True
required=True
string='Status'
args: POS_SESSION_STATE
statement_ids
One2many → account.bank.statement
readonly=True
string='Cash Statements'
args: 'account.bank.statement', 'pos_session_id'
stop_at
Datetime
copy=False
readonly=True
string='Closing Date'
total_payments_amount
Float
compute='_compute_total_payments_amount'
string='Total Payments Amount'
update_stock_at_closing
Boolean
user_id
Many2one → res.users
default=<expr>
index=True
ondelete='restrict'
readonly=True
required=True
states={'opening_control': [('readonly', False)]}
string='Opened By'
args: 'res.users'
action_pos_session_close(self)
action_pos_session_closing_control(self)
action_pos_session_open(self)
action_pos_session_validate(self)
action_show_payments_list(self)
action_stock_picking(self)
action_view_order(self)
create(self, values)
login(self)
open_cashbox_pos(self)
open_frontend_cb(self)
set_cashbox_pos(self, cashbox_value, notes)
show_journal_items(self)
unlink(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)unlink(self)
available_in_pos
Boolean
default=False
help='Check if you want this product to appear in the Point of Sale.'
string='Available in POS'
pos_categ_id
Many2one → pos.category
help='Category used in the Point of Sale.'
string='Point of Sale Category'
args: 'pos.category'
to_weight
Boolean
help='Check if the product should be weighted using the hardware scale integration.'
string='To Weigh With Scale'
unlink(self)
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)
average_price
Float
group_operator='avg'
readonly=True
string='Average Price'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
readonly=True
string='Point of Sale'
args: 'pos.config'
date
Datetime
readonly=True
string='Order Date'
delay_validation
Integer
string='Delay Validation'
invoiced
Boolean
readonly=True
journal_id
Many2one → account.journal
string='Journal'
args: 'account.journal'
nbr_lines
Integer
readonly=True
string='Sale Line Count'
order_id
Many2one → pos.order
readonly=True
string='Order'
args: 'pos.order'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
pos_categ_id
Many2one → pos.category
readonly=True
string='PoS Category'
args: 'pos.category'
price_sub_total
Float
readonly=True
string='Subtotal w/o discount'
price_total
Float
readonly=True
string='Total Price'
pricelist_id
Many2one → product.pricelist
readonly=True
string='Pricelist'
args: 'product.pricelist'
product_categ_id
Many2one → product.category
readonly=True
string='Product Category'
args: 'product.category'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_qty
Integer
readonly=True
string='Product Quantity'
product_tmpl_id
Many2one → product.template
readonly=True
string='Product Template'
args: 'product.template'
session_id
Many2one → pos.session
readonly=True
string='Session'
args: 'pos.session'
state
Selection
string='Status'
args: [('draft', 'New'), ('paid', 'Paid'), ('done', 'Posted'), ('invoiced', 'Invoiced'), ('cancel', 'Cancelled')]
total_discount
Float
readonly=True
string='Total Discount'
user_id
Many2one → res.users
readonly=True
string='User'
args: 'res.users'
init(self)
point_of_sale_update_stock_quantities
Selection
default='closing'
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 (advised)'), ('real', 'In real time')]
validate_period_lock_date(self)
module_pos_adyen
Boolean
help='The transactions are processed by Adyen. Set your Adyen credentials on the related payment method.'
string='Adyen Payment Terminal'
module_pos_mercury
Boolean
help='The transactions are processed by Vantiv. Set your Vantiv credentials on the related payment method.'
string='Vantiv Payment Terminal'
module_pos_six
Boolean
help='The transactions are processed by Six. Set the IP address of the terminal on the related payment method.'
string='Six Payment Terminal'
sale_tax_id
Many2one → account.tax
readonly=False
related='company_id.account_sale_tax_id'
string='Default Sale Tax'
args: 'account.tax'
update_stock_quantities
Selection
readonly=False
related='company_id.point_of_sale_update_stock_quantities'
set_values(self)
pos_order_count
Integer
compute='_compute_pos_order'
groups='point_of_sale.group_pos_user'
help='The number of point of sales orders related to this customer'
pos_order_ids
One2many → pos.order
readonly=True
args: 'pos.order', 'partner_id'
create_from_ui(self, partner)
unlink(self)
pos_order_id
Many2one → pos.order
index=True
args: 'pos.order'
pos_session_id
Many2one → pos.session
index=True
args: 'pos.session'
No public methods.
pos_type_id
Many2one → stock.picking.type
string='Point of Sale Operation Type'
args: 'stock.picking.type'
No public methods.
is_pos_groupable
Boolean
help='Check if you want to group products of this category in point of sale orders'
string='Group Products in POS'
No public methods.
is_pos_groupable
Boolean
readonly=False
related='category_id.is_pos_groupable'
No public methods.
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_cashbox_line_view_tree |
account.cashbox.line.tree | account.cashbox.line | tree | New |
assets |
point_of_sale assets | ir.ui.view | qweb | New |
assets_backend |
hr assets | ir.ui.view | qweb | Inherits web.assets_backend |
assets_tests |
Point Of Sale Assets Tests | ir.ui.view | qweb | Inherits web.assets_tests |
closing_balance_confirm |
Confirming balance closing | closing.balance.confirm.wizard | form | New |
customer_facing_display_html |
customer_facing_display_html | ir.ui.view | qweb | New |
digest_digest_view_form |
digest.digest.view.form.inherit.sale.order | digest.digest | xpath | Inherits digest.digest_digest_view_form |
index |
POS Index | ir.ui.view | qweb | New |
pos_assets_backend |
POS UI Backend Assets | ir.ui.view | qweb | Inherits web.assets_backend |
pos_config_view_form |
pos.config.form.view | pos.config | form | 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.tree | pos.payment.method | tree | New |
product_pos_category_form_view |
pos.category.form | pos.category | form | New |
product_pos_category_tree_view |
pos.category.tree | pos.category | tree | New |
product_template_form_view |
product.template.form.inherit | product.template | xpath | Inherits product.product_template_form_view |
product_template_search_view_pos |
product.template.search.pos.form | product.template | filter | Inherits product.product_template_search_view |
product_uom_categ_form_view |
uom.category.form.inherit | uom.category | xpath | Inherits uom.product_uom_categ_form_view |
product_uom_categ_tree_view |
uom.category.tree.inherit | uom.category | xpath | Inherits uom.product_uom_categ_tree_view |
report_invoice |
report_invoice | ir.ui.view | qweb | Inherits account.report_invoice |
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 | xpath | Inherits base.res_config_settings_view_form |
view_account_bnk_stmt_cashbox |
account.bnk_stmt_cashbox.form | account.bank.statement.cashbox | xpath | Inherits account.view_account_bnk_stmt_cashbox |
view_account_bnk_stmt_cashbox_footer |
account.bnk_stmt_cashbox.form.close.modal | account.bank.statement.cashbox | xpath | Inherits account.view_account_bnk_stmt_cashbox_footer |
view_account_journal_pos_user_form |
account.journal.pos.user.form.inherit | account.journal | xpath | Inherits account.view_account_journal_form |
view_bank_statement_pos_session |
view.bank.statement.pos.session | account.bank.statement | xpath | Inherits account.view_bank_statement_form |
view_partner_pos_kanban |
res.partner.pos.kanban.inherit | res.partner | field | Inherits base.res_partner_kanban_view |
view_partner_property_form |
res.partner.pos.form.inherit | res.partner | div | Inherits base.view_partner_form |
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.tree.view | pos.config | tree | New |
view_pos_details_wizard |
pos.details.wizard.form | pos.details.wizard | form | 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.tree | pos.order.line | tree | 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.tree | pos.order | tree | New |
view_pos_order_tree_all_sales_lines |
pos.order.line.all.sales.tree | pos.order.line | tree | New |
view_pos_order_tree_no_session_id |
pos.order.tree_no_session_id | pos.order | xpath | 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.tree | pos.payment | tree | New |
view_pos_pos_form |
pos.order.form | pos.order | 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.tree.view | pos.session | tree | 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 |
account_id
Many2one → account.account
readonly=True
related='journal_id.default_debit_account_id'
args: 'account.account'
pos_session_id
Many2one → pos.session
copy=False
string='Session'
args: 'pos.session'
check_confirm_bank(self)
unlink(self)
is_a_template
Boolean
default=False
pos_config_ids
One2many → pos.config
default_get(self, fields)
set_default_cashbox(self)
pos_statement_id
Many2one → pos.order
ondelete='cascade'
string='POS statement'
args: 'pos.order'
No public methods.
No new fields.
Public methods (1)generate_journals(self, acc_template_ref, company, journals_dict=None)
pos_payment_method_ids
One2many → pos.payment.method
string='Point of Sale Payment Methods'
args: 'pos.payment.method', 'cash_journal_id'
No public methods.
pos_order_ids
One2many → pos.order
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (2)get_real_tax_amount(self)
write(self, vals)
type
Selection
selection_add=[('weight', 'Weighted Product'), ('price', 'Priced Product'), ('discount', 'Discounted Product'), ('client', 'Client'), ('cashier', 'Cashier')]
No public methods.
No new fields.
Public methods (1)confirm_closing_balance(self)
kpi_pos_total
Boolean
kpi_pos_total_value
Monetary
compute='_compute_kpi_pos_total_value'
compute_kpis_actions(self, company, user)
child_id
One2many → pos.category
string='Children Categories'
args: 'pos.category', 'parent_id'
image_128
Image
max_height=128
max_width=128
args: 'Image'
name
Char
required=True
string='Category Name'
translate=True
parent_id
Many2one → pos.category
index=True
string='Parent Category'
args: 'pos.category'
sequence
Integer
help='Gives the sequence order when displaying a list of product categories.'
name_get(self)
active
Boolean
default=True
allowed_pricelist_ids
Many2many → product.pricelist
compute='_compute_allowed_pricelist_ids'
help='This is a technical field used for the domain of pricelist_id.'
string='Allowed Pricelists'
args: 'product.pricelist'
amount_authorized_diff
Float
help='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'
available_pricelist_ids
Many2many → product.pricelist
default=_default_pricelist
help='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'
barcode_nomenclature_id
Many2one → barcode.nomenclature
default=<expr>
help='Defines what kind of barcodes are available and how they are assigned to products, customers and cashiers.'
required=True
string='Barcode Nomenclature'
args: 'barcode.nomenclature'
cash_control
Boolean
help='Check the amount of the cashbox at opening and closing.'
string='Cash Control'
company_has_template
Boolean
compute='_compute_company_has_template'
string='Company has chart of accounts'
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
compute='_compute_currency'
string='Currency'
args: 'res.currency'
current_session_id
Many2one → pos.session
compute='_compute_current_session'
string='Current Session'
args: 'pos.session'
current_session_state
Char
compute='_compute_current_session'
current_user_id
Many2one → res.users
compute='_compute_current_session_user'
string='Current Session Responsible'
args: 'res.users'
customer_facing_display_html
Html
compute=_compute_customer_html
string='Customer facing display content'
translate=True
default_cashbox_id
Many2one → account.bank.statement.cashbox
string='Default Balance'
args: 'account.bank.statement.cashbox'
default_fiscal_position_id
Many2one → account.fiscal.position
string='Default Fiscal Position'
args: 'account.fiscal.position'
fiscal_position_ids
Many2many → account.fiscal.position
help='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_id
Many2one → res.groups
default=_get_group_pos_manager
help='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_id
Many2one → res.groups
default=_get_group_pos_user
help='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'
iface_available_categ_ids
Many2many → pos.category
help='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_scrollbars
Boolean
help='For imprecise industrial touchscreens.'
args: 'Large Scrollbars'
iface_cashdrawer
Boolean
help='Automatically open the cashdrawer.'
string='Cashdrawer'
iface_customer_facing_display
Boolean
help='Show checkout to customers with a remotely-connected screen.'
string='Customer Facing Display'
iface_display_categ_images
Boolean
help='The product categories will be displayed with pictures.'
string='Display Category Pictures'
iface_electronic_scale
Boolean
help='Enables Electronic Scale integration.'
string='Electronic Scale'
iface_precompute_cash
Boolean
help='The payment input will behave similarily to bank payment input, and will be prefilled with the exact due amount.'
string='Prefill Cash Payment'
iface_print_auto
Boolean
default=False
help='The receipt will automatically be printed at the end of each order.'
string='Automatic Receipt Printing'
iface_print_skip_screen
Boolean
default=True
help='The receipt screen will be skipped if the receipt can be printed automatically.'
string='Skip Preview Screen'
iface_print_via_proxy
Boolean
help='Bypass browser printing and prints via the hardware proxy.'
string='Print via Proxy'
iface_scan_via_proxy
Boolean
help='Enable barcode scanning with a remotely connected barcode scanner.'
string='Scan via Proxy'
iface_start_categ_id
Many2one → pos.category
help='The point of sale will display this product category by default. If no category is specified, all available products will be shown.'
string='Initial Category'
args: 'pos.category'
iface_tax_included
Selection
default='subtotal'
required=True
string='Tax Display'
args: [('subtotal', 'Tax-Excluded Price'), ('total', 'Tax-Included Price')]
iface_tipproduct
Boolean
string='Product tips'
iface_vkeyboard
Boolean
help='Don’t turn this option on if you take orders on smartphones or tablets. \n Such devices already benefit from a native keyboard.'
string='Virtual KeyBoard'
invoice_journal_id
Many2one → account.journal
default=_default_invoice_journal
domain=[('type', '=', 'sale')]
help='Accounting journal used to create invoices.'
string='Invoice Journal'
args: 'account.journal'
is_header_or_footer
Boolean
is_installed_account_accountant
Boolean
compute='_compute_is_installed_account_accountant'
string='Is the Full Accounting Installed'
is_posbox
Boolean
journal_id
Many2one → account.journal
default=_default_sale_journal
domain=[('type', '=', 'sale')]
help='Accounting journal used to post sales entries.'
ondelete='restrict'
string='Sales Journal'
args: 'account.journal'
last_session_closing_cash
Float
compute='_compute_last_session'
last_session_closing_cashbox
Many2one → account.bank.statement.cashbox
compute='_compute_last_session'
args: 'account.bank.statement.cashbox'
last_session_closing_date
Date
compute='_compute_last_session'
limit_categories
Boolean
module_account
Boolean
help='Enables invoice generation from the Point of Sale.'
string='Invoicing'
module_pos_discount
Boolean
module_pos_hr
Boolean
help='Show employee login screen'
module_pos_loyalty
Boolean
module_pos_mercury
Boolean
string='Integrated Card Payments'
module_pos_reprint
Boolean
string='Reprint Receipt'
module_pos_restaurant
Boolean
name
Char
help='An internal identification of the point of sale.'
index=True
required=True
string='Point of Sale'
other_devices
Boolean
help='Connect devices to your PoS without an IoT Box.'
string='Other Devices'
payment_method_ids
Many2many → pos.payment.method
default=<expr>
string='Payment Methods'
args: 'pos.payment.method'
picking_type_id
Many2one → stock.picking.type
default=_default_picking_type_id
domain="[('code', '=', 'outgoing'), ('warehouse_id.company_id', '=', company_id)]"
ondelete='restrict'
string='Operation Type'
args: 'stock.picking.type'
pos_session_duration
Char
compute='_compute_current_session_user'
pos_session_state
Char
compute='_compute_current_session_user'
pos_session_username
Char
compute='_compute_current_session_user'
pricelist_id
Many2one → product.pricelist
default=_default_pricelist
help='The pricelist used if no customer is selected or if the customer has no Sale Pricelist configured.'
required=True
string='Default Pricelist'
args: 'product.pricelist'
proxy_ip
Char
help='The hostname or ip address of the hardware proxy, Will be autodetected if left empty.'
size=45
string='IP Address'
receipt_footer
Text
help='A short text that will be inserted as a footer in the printed receipt.'
string='Receipt Footer'
receipt_header
Text
help='A short text that will be inserted as a header in the printed receipt.'
string='Receipt Header'
restrict_price_control
Boolean
help='Only users with Manager access rights for PoS app can modify the product prices on orders.'
string='Restrict Price Modifications to Managers'
selectable_categ_ids
Many2many → pos.category
compute='_compute_selectable_categories'
args: 'pos.category'
sequence_id
Many2one → ir.sequence
copy=False
help='This sequence is automatically created by Odoo but you can change it to customize the reference numbers of your orders.'
ondelete='restrict'
readonly=True
string='Order IDs Sequence'
args: 'ir.sequence'
sequence_line_id
Many2one → ir.sequence
copy=False
help='This sequence is automatically created by Odoo but you can change it to customize the reference numbers of your orders lines.'
readonly=True
string='Order Line IDs Sequence'
args: 'ir.sequence'
session_ids
One2many → pos.session
string='Sessions'
args: 'pos.session', 'config_id'
start_category
Boolean
default=False
args: 'Set Start Category'
tax_regime
Boolean
tax_regime_selection
Boolean
tip_product_id
Many2one → product.product
help='This product is used as reference on customer receipts.'
string='Tip Product'
args: 'product.product'
use_existing_lots
Boolean
readonly=False
related='picking_type_id.use_existing_lots'
use_pricelist
Boolean
uuid
Char
copy=False
default=<expr>
help='A globally unique identifier for this pos configuration, used to prevent conflicts in client-generated data.'
readonly=True
assign_payment_journals(self, companies=False)
create(self, values)
execute(self)
generate_pos_journal(self, companies=False)
name_get(self)
open_existing_session_cb(self)
open_session_cb(self)
open_ui(self)
post_install_pos_localisation(self)
unlink(self)
write(self, vals)
end_date
Datetime
default=fields.Datetime.now
required=True
pos_config_ids
Many2many → pos.config
default=<expr>
args: 'pos.config', 'pos_detail_configs'
start_date
Datetime
default=_default_start_date
required=True
generate_report(self)
amount
Float
default=_default_amount
digits=0
required=True
config_id
Many2one → pos.config
default=_default_config
required=True
string='Point of Sale Configuration'
args: 'pos.config'
payment_date
Datetime
default=<expr>
required=True
string='Payment Date'
payment_method_id
Many2one → pos.payment.method
default=_default_payment_method
required=True
string='Payment Method'
args: 'pos.payment.method'
payment_name
Char
string='Payment Reference'
check(self)
launch_payment(self)
No new fields.
Public methods (1)open_statement(self)
account_move
Many2one → account.move
copy=False
readonly=True
string='Invoice'
args: 'account.move'
amount_paid
Float
digits=0
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Paid'
amount_return
Float
digits=0
readonly=True
required=True
string='Returned'
amount_tax
Float
digits=0
readonly=True
required=True
string='Taxes'
amount_total
Float
digits=0
readonly=True
required=True
string='Total'
company_id
Many2one → res.company
readonly=True
required=True
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
readonly=False
related='session_id.config_id'
string='Point of Sale'
args: 'pos.config'
currency_id
Many2one → res.currency
related='config_id.currency_id'
string='Currency'
args: 'res.currency'
currency_rate
Float
compute='_compute_currency_rate'
compute_sudo=True
digits=0
help='The rate of the currency to the currency of rate 1 applicable at the date of the order'
readonly=True
store=True
args: 'Currency Rate'
date_order
Datetime
default=fields.Datetime.now
index=True
readonly=True
string='Date'
fiscal_position_id
Many2one → account.fiscal.position
comodel_name='account.fiscal.position'
readonly=True
states={'draft': [('readonly', False)]}
string='Fiscal Position'
invoice_group
Boolean
readonly=False
related='config_id.module_account'
is_invoiced
Boolean
compute='_compute_is_invoiced'
args: 'Is Invoiced'
lines
One2many → pos.order.line
copy=True
readonly=True
states={'draft': [('readonly', False)]}
string='Order Lines'
args: 'pos.order.line', 'order_id'
location_id
Many2one → stock.location
comodel_name='stock.location'
readonly=True
related='picking_id.location_id'
store=True
string='Location'
name
Char
copy=False
default='/'
readonly=True
required=True
string='Order Ref'
nb_print
Integer
copy=False
default=0
readonly=True
string='Number of Print'
note
Text
string='Internal Notes'
partner_id
Many2one → res.partner
change_default=True
index=True
states={'draft': [('readonly', False)], 'paid': [('readonly', False)]}
string='Customer'
args: 'res.partner'
payment_ids
One2many → pos.payment
readonly=True
string='Payments'
args: 'pos.payment', 'pos_order_id'
picking_id
Many2one → stock.picking
copy=False
readonly=True
string='Picking'
args: 'stock.picking'
picking_type_id
Many2one → stock.picking.type
readonly=False
related='session_id.config_id.picking_type_id'
string='Operation Type'
args: 'stock.picking.type'
pos_reference
Char
copy=False
readonly=True
string='Receipt Number'
pricelist_id
Many2one → product.pricelist
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Pricelist'
args: 'product.pricelist'
sale_journal
Many2one → account.journal
ondelete='restrict'
readonly=True
related='session_id.config_id.journal_id'
store=True
string='Sales Journal'
args: 'account.journal'
sequence_number
Integer
default=1
help='A session-unique sequence number for the order'
string='Sequence Number'
session_id
Many2one → pos.session
domain="[('state', '=', 'opened')]"
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Session'
args: 'pos.session'
session_move_id
Many2one → account.move
copy=False
readonly=True
related='session_id.move_id'
string='Session Journal Entry'
args: 'account.move'
state
Selection
copy=False
default='draft'
readonly=True
args: [('draft', 'New'), ('cancel', 'Cancelled'), ('paid', 'Paid'), ('done', 'Posted'), ('invoiced', 'Invoiced')], 'Status'
to_invoice
Boolean
user_id
Many2one → res.users
comodel_name='res.users'
default=<expr>
help='Person who uses the cash register. It can be a reliever, a student or an interim employee.'
states={'done': [('readonly', True)], 'invoiced': [('readonly', True)]}
string='Responsible'
action_pos_order_cancel(self)
action_pos_order_invoice(self)
action_pos_order_paid(self)
action_receipt_to_customer(self, name, client, ticket, order_ids=False)
action_view_invoice(self)
add_payment(self, data)
create(self, values)
create_from_ui(self, orders, draft=False)
create_picking(self)
refund(self)
remove_from_ui(self, server_ids)
set_pack_operation_lot(self, picking=None)
unlink(self)
write(self, vals)
company_id
Many2one → res.company
related='order_id.company_id'
store=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
related='order_id.currency_id'
args: 'res.currency'
discount
Float
default=0.0
digits=0
string='Discount (%)'
name
Char
copy=False
required=True
string='Line No'
notice
Char
string='Discount Notice'
order_id
Many2one → pos.order
index=True
ondelete='cascade'
required=True
string='Order Ref'
args: 'pos.order'
pack_lot_ids
One2many → pos.pack.operation.lot
string='Lot/serial Number'
args: 'pos.pack.operation.lot', 'pos_order_line_id'
price_subtotal
Float
digits=0
readonly=True
required=True
string='Subtotal w/o Tax'
price_subtotal_incl
Float
digits=0
readonly=True
required=True
string='Subtotal'
price_unit
Float
digits=0
string='Unit Price'
product_id
Many2one → product.product
change_default=True
domain=[('sale_ok', '=', True)]
required=True
string='Product'
args: 'product.product'
product_uom_id
Many2one → uom.uom
related='product_id.uom_id'
string='Product UoM'
args: 'uom.uom'
qty
Float
default=1
digits='Product Unit of Measure'
args: 'Quantity'
tax_ids
Many2many → account.tax
readonly=True
string='Taxes'
args: 'account.tax'
tax_ids_after_fiscal_position
Many2many → account.tax
compute='_get_tax_ids_after_fiscal_position'
string='Taxes to Apply'
args: 'account.tax'
create(self, values)
write(self, values)
lot_name
Char
order_id
Many2one → pos.order
readonly=False
related='pos_order_line_id.order_id'
args: 'pos.order'
pos_order_line_id
Many2one → pos.order.line
auto_join=True
args: 'pos.order.line'
product_id
Many2one → product.product
readonly=False
related='pos_order_line_id.product_id'
args: 'product.product'
No public methods.
amount
Monetary
currency_field='currency_id'
help='Total amount of the payment.'
readonly=True
required=True
string='Amount'
card_type
Char
company_id
Many2one → res.company
related='pos_order_id.company_id'
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
related='pos_order_id.currency_id'
string='Currency'
args: 'res.currency'
currency_rate
Float
help='Conversion rate from company currency to order currency.'
related='pos_order_id.currency_rate'
string='Conversion Rate'
name
Char
readonly=True
string='Label'
partner_id
Many2one → res.partner
related='pos_order_id.partner_id'
string='Customer'
args: 'res.partner'
payment_date
Datetime
default=<expr>
readonly=True
required=True
string='Date'
payment_method_id
Many2one → pos.payment.method
required=True
string='Payment Method'
args: 'pos.payment.method'
pos_order_id
Many2one → pos.order
required=True
string='Order'
args: 'pos.order'
session_id
Many2one → pos.session
related='pos_order_id.session_id'
store=True
string='Session'
args: 'pos.session'
transaction_id
Char
name_get(self)
cash_journal_id
Many2one → account.journal
domain=[('type', '=', 'cash')]
help='The payment method is of type cash. A cash statement will be automatically generated.'
ondelete='restrict'
string='Cash Journal'
args: 'account.journal'
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
config_ids
Many2many → pos.config
string='Point of Sale Configurations'
args: 'pos.config'
hide_use_payment_terminal
Boolean
compute='_compute_hide_use_payment_terminal'
help='Technical field which is used to hide use_payment_terminal when no payment interfaces are installed.'
is_cash_count
Boolean
string='Cash'
name
Char
required=True
string='Payment Method'
translate=True
open_session_ids
Many2many → pos.session
compute='_compute_open_session_ids'
help='Open PoS sessions that are using this payment method.'
string='Pos Sessions'
args: 'pos.session'
receivable_account_id
Many2one → account.account
default=<expr>
domain=[('reconcile', '=', True), ('user_type_id.type', '=', 'receivable')]
help='Account used as counterpart of the income account in the accounting entry representing the pos sales.'
ondelete='restrict'
required=True
string='Intermediary Account'
args: 'account.account'
split_transactions
Boolean
default=False
help='If ticked, each payment will generate a separated journal item. Ticking that option will slow the closing of the PoS.'
string='Split Transactions'
use_payment_terminal
Selection
help='Record payments with a terminal on this journal.'
selection=<expr>
string='Use a Payment Terminal'
write(self, vals)
cash_control
Boolean
compute='_compute_cash_all'
compute_sudo=True
string='Has Cash Control'
cash_journal_id
Many2one → account.journal
compute='_compute_cash_all'
store=True
string='Cash Journal'
args: 'account.journal'
cash_register_balance_end
Monetary
compute='_compute_cash_balance'
help='Sum of opening balance and transactions.'
readonly=True
string='Theoretical Closing Balance'
cash_register_balance_end_real
Monetary
help='Total of closing cash control lines.'
readonly=True
related='cash_register_id.balance_end_real'
string='Ending Balance'
cash_register_balance_start
Monetary
help='Total of opening cash control lines.'
readonly=True
related='cash_register_id.balance_start'
string='Starting Balance'
cash_register_difference
Monetary
compute='_compute_cash_balance'
help='Difference between the theoretical closing balance and the real closing balance.'
readonly=True
string='Difference'
cash_register_id
Many2one → account.bank.statement
compute='_compute_cash_all'
store=True
string='Cash Register'
args: 'account.bank.statement'
cash_register_total_entry_encoding
Monetary
compute='_compute_cash_balance'
help='Total of all paid sales orders'
readonly=True
string='Total Cash Transaction'
company_id
Many2one → res.company
readonly=True
related='config_id.company_id'
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
help='The physical point of sale you will use.'
index=True
required=True
string='Point of Sale'
args: 'pos.config'
currency_id
Many2one → res.currency
readonly=False
related='config_id.currency_id'
string='Currency'
args: 'res.currency'
is_in_company_currency
Boolean
compute='_compute_is_in_company_currency'
args: 'Is Using Company Currency'
login_number
Integer
default=0
help='A sequence number that is incremented each time a user resumes the pos session'
string='Login Sequence Number'
move_id
Many2one → account.move
string='Journal Entry'
args: 'account.move'
name
Char
default='/'
readonly=True
required=True
string='Session ID'
order_count
Integer
compute='_compute_order_count'
order_ids
One2many → pos.order
string='Orders'
args: 'pos.order', 'session_id'
payment_method_ids
Many2many → pos.payment.method
related='config_id.payment_method_ids'
string='Payment Methods'
args: 'pos.payment.method'
picking_count
Integer
compute='_compute_picking_count'
rescue
Boolean
copy=False
help='Auto-generated session for orphan orders, ignored in constraints'
readonly=True
string='Recovery Session'
sequence_number
Integer
default=1
help='A sequence number that is incremented with each order'
string='Order Sequence Number'
start_at
Datetime
readonly=True
string='Opening Date'
state
Selection
copy=False
default='new_session'
index=True
readonly=True
required=True
string='Status'
args: POS_SESSION_STATE
statement_ids
One2many → account.bank.statement
readonly=True
string='Cash Statements'
args: 'account.bank.statement', 'pos_session_id'
stop_at
Datetime
copy=False
readonly=True
string='Closing Date'
total_payments_amount
Float
compute='_compute_total_payments_amount'
string='Total Payments Amount'
user_id
Many2one → res.users
default=<expr>
index=True
ondelete='restrict'
readonly=True
required=True
states={'opening_control': [('readonly', False)]}
string='Responsible'
args: 'res.users'
action_pos_session_close(self)
action_pos_session_closing_control(self)
action_pos_session_open(self)
action_pos_session_validate(self)
action_show_payments_list(self)
action_stock_picking(self)
action_view_order(self)
create(self, values)
login(self)
open_cashbox_pos(self)
open_frontend_cb(self)
show_journal_items(self)
unlink(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)unlink(self)
available_in_pos
Boolean
default=False
help='Check if you want this product to appear in the Point of Sale.'
string='Available in POS'
pos_categ_id
Many2one → pos.category
help='Category used in the Point of Sale.'
string='Point of Sale Category'
args: 'pos.category'
to_weight
Boolean
help='Check if the product should be weighted using the hardware scale integration.'
string='To Weigh With Scale'
unlink(self)
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)
average_price
Float
group_operator='avg'
readonly=True
string='Average Price'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
readonly=True
string='Point of Sale'
args: 'pos.config'
date
Datetime
readonly=True
string='Order Date'
delay_validation
Integer
string='Delay Validation'
invoiced
Boolean
readonly=True
journal_id
Many2one → account.journal
string='Journal'
args: 'account.journal'
location_id
Many2one → stock.location
readonly=True
string='Location'
args: 'stock.location'
nbr_lines
Integer
readonly=True
string='Sale Line Count'
order_id
Many2one → pos.order
readonly=True
string='Order'
args: 'pos.order'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
pos_categ_id
Many2one → pos.category
readonly=True
string='PoS Category'
args: 'pos.category'
price_sub_total
Float
readonly=True
string='Subtotal w/o discount'
price_total
Float
readonly=True
string='Total Price'
pricelist_id
Many2one → product.pricelist
readonly=True
string='Pricelist'
args: 'product.pricelist'
product_categ_id
Many2one → product.category
readonly=True
string='Product Category'
args: 'product.category'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_qty
Integer
readonly=True
string='Product Quantity'
product_tmpl_id
Many2one → product.template
readonly=True
string='Product Template'
args: 'product.template'
session_id
Many2one → pos.session
readonly=True
string='Session'
args: 'pos.session'
state
Selection
string='Status'
args: [('draft', 'New'), ('paid', 'Paid'), ('done', 'Posted'), ('invoiced', 'Invoiced'), ('cancel', 'Cancelled')]
total_discount
Float
readonly=True
string='Total Discount'
user_id
Many2one → res.users
readonly=True
string='User'
args: 'res.users'
init(self)
No new fields.
Public methods (1)validate_period_lock_date(self)
module_pos_adyen
Boolean
help='The transactions are processed by Adyen. Set your Adyen credentials on the related payment method.'
string='Adyen Payment Terminal'
module_pos_mercury
Boolean
help='The transactions are processed by Vantiv. Set your Vantiv credentials on the related payment method.'
string='Vantiv Payment Terminal'
sale_tax_id
Many2one → account.tax
readonly=False
related='company_id.account_sale_tax_id'
string='Default Sale Tax'
args: 'account.tax'
No public methods.
barcode
Char
copy=False
help='Use a barcode to identify this contact from the Point of Sale.'
pos_order_count
Integer
compute='_compute_pos_order'
groups='point_of_sale.group_pos_user'
help='The number of point of sales orders related to this customer'
pos_order_ids
One2many → pos.order
readonly=True
args: 'pos.order', 'partner_id'
create_from_ui(self, partner)
unlink(self)
No new fields.
Public methods (0)No public methods.
pos_type_id
Many2one → stock.picking.type
string='Point of Sale Operation Type'
args: 'stock.picking.type'
No public methods.
is_pos_groupable
Boolean
help='Check if you want to group products of this category in point of sale orders'
string='Group Products in POS'
No public methods.
is_pos_groupable
Boolean
readonly=False
related='category_id.is_pos_groupable'
No public methods.
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
FieldTextHtml |
FieldTextHtml | ir.ui.view | qweb | New |
account_cashbox_line_view_tree |
account.cashbox.line.tree | account.cashbox.line | tree | New |
assets |
point_of_sale assets | ir.ui.view | qweb | New |
assets_backend |
hr assets | ir.ui.view | qweb | Inherits web.assets_backend |
customer_facing_display_html |
customer_facing_display_html | ir.ui.view | qweb | New |
customer_facing_display_snippets |
customer_facing_display_snippets | ir.ui.view | qweb | New |
digest_digest_view_form |
digest.digest.view.form.inherit.sale.order | digest.digest | xpath | Inherits digest.digest_digest_view_form |
extra_head |
extra_head | ir.ui.view | qweb | New |
index |
POS Index | ir.ui.view | qweb | New |
pos_assets_backend |
POS UI Backend Assets | ir.ui.view | qweb | Inherits web.assets_backend |
pos_config_view_form |
pos.config.form.view | pos.config | form | New |
pos_editor_assets |
pos_editor_assets | ir.ui.view | qweb | Inherits web_editor.assets_editor |
pos_editor_fieldtexthtml_assets |
pos_editor_fieldtexthtml_assets | ir.ui.view | qweb | Inherits web.assets_backend |
product_pos_category_form_view |
pos.category.form | pos.category | form | New |
product_pos_category_tree_view |
pos.category.tree | pos.category | tree | New |
product_template_form_view |
product.template.form.inherit | product.template | xpath | Inherits stock.view_template_property_form |
product_template_search_view_pos |
product.template.search.pos.form | product.template | filter | Inherits product.product_template_search_view |
product_uom_categ_form_view |
uom.category.form.inherit | uom.category | xpath | Inherits uom.product_uom_categ_form_view |
report_invoice |
report_invoice | ir.ui.view | qweb | Inherits account.report_invoice |
report_saledetails |
report_saledetails | ir.ui.view | qweb | New |
report_statement |
report_statement | 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 | xpath | Inherits base.res_config_settings_view_form |
res_users_view_form |
res.users.form.view | res.users | notebook | Inherits base.view_users_form |
view_account_bank_journal_form_inherited_pos |
account.bank.journal.form.inherit.pos | account.journal | xpath | Inherits account.view_account_bank_journal_form |
view_account_journal_pos_user_form |
account.journal.pos.user.form.inherit | account.journal | xpath | Inherits account.view_account_journal_form |
view_account_journal_search_inherit_point_of_sale |
account.journal.filter | account.journal | xpath | Inherits account.view_account_journal_search |
view_partner_pos_kanban |
res.partner.pos.kanban.inherit | res.partner | field | Inherits base.res_partner_kanban_view |
view_partner_property_form |
res.partner.pos.form.inherit | res.partner | button | Inherits base.view_partner_form |
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.tree.view | pos.config | tree | New |
view_pos_details_wizard |
pos.details.wizard.form | pos.details.wizard | form | New |
view_pos_open_statement |
pos.open.statement.form | pos.open.statement | form | 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.tree | pos.order.line | tree | New |
view_pos_order_line_form |
pos.order.line.form | pos.order.line | form | New |
view_pos_order_search |
pos.order.search.view | pos.order | search | New |
view_pos_order_tree |
pos.order.tree | pos.order | tree | New |
view_pos_order_tree_all_sales_lines |
pos.order.line.all.sales.tree | pos.order.line | tree | New |
view_pos_payment |
pos.make.payment.form | pos.make.payment | form | New |
view_pos_pos_form |
pos.order.form | pos.order | 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.tree.view | pos.session | tree | 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 |
account_id
Many2one → account.account
readonly=True
related='journal_id.default_debit_account_id'
args: 'account.account'
pos_session_id
Many2one → pos.session
copy=False
string='Session'
args: 'pos.session'
No public methods.
No new fields.
Public methods (1)default_get(self, fields)
pos_statement_id
Many2one → pos.order
ondelete='cascade'
string='POS statement'
args: 'pos.order'
No public methods.
default_pos_id
Many2one → pos.config
string='This cashbox line is used by default when opening or closing a balance for this point of sale'
args: 'pos.config'
name_get(self)
No new fields.
Public methods (0)No public methods.
amount_authorized_diff
Float
help='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'
journal_user
Boolean
help='Check this box if this journal define a payment method that can be used in a point of sale.'
args: 'Use in Point of Sale'
onchange_type(self)
No new fields.
Public methods (1)write(self, vals)
type
Selection
selection_add=[('weight', 'Weighted Product'), ('price', 'Priced Product'), ('discount', 'Discounted Product'), ('client', 'Client'), ('cashier', 'Cashier')]
No public methods.
kpi_pos_total
Boolean
kpi_pos_total_value
Monetary
compute='_compute_kpi_pos_total_value'
compute_kpis_actions(self, company, user)
child_id
One2many → pos.category
string='Children Categories'
args: 'pos.category', 'parent_id'
image
Binary
attachment=True
help='This field holds the image used as image for the cateogry, limited to 1024x1024px.'
image_medium
Binary
attachment=True
help='Medium-sized image of the category. It is automatically resized as a 128x128px image, with aspect ratio preserved. Use this field in form views or some kanban views.'
string='Medium-sized image'
image_small
Binary
attachment=True
help='Small-sized image of the category. It is automatically resized as a 64x64px image, with aspect ratio preserved. Use this field anywhere a small image is required.'
string='Small-sized image'
name
Char
required=True
translate=True
parent_id
Many2one → pos.category
index=True
string='Parent Category'
args: 'pos.category'
sequence
Integer
help='Gives the sequence order when displaying a list of product categories.'
create(self, vals)
name_get(self)
write(self, vals)
active
Boolean
default=True
available_pricelist_ids
Many2many → product.pricelist
default=_default_pricelist
help='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'
barcode_nomenclature_id
Many2one → barcode.nomenclature
help='Defines what kind of barcodes are available and how they are assigned to products, customers and cashiers.'
string='Barcode Nomenclature'
args: 'barcode.nomenclature'
barcode_scanner
Boolean
cash_control
Boolean
help='Check the amount of the cashbox at opening and closing.'
string='Cash Control'
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
compute='_compute_currency'
string='Currency'
args: 'res.currency'
current_session_id
Many2one → pos.session
compute='_compute_current_session'
string='Current Session'
args: 'pos.session'
current_session_state
Char
compute='_compute_current_session'
customer_facing_display_html
Html
default=_compute_default_customer_html
string='Customer facing display content'
translate=True
default_cashbox_lines_ids
One2many → account.cashbox.line
string='Default Balance'
args: 'account.cashbox.line', 'default_pos_id'
default_fiscal_position_id
Many2one → account.fiscal.position
string='Default Fiscal Position'
args: 'account.fiscal.position'
fiscal_position_ids
Many2many → account.fiscal.position
help='This is useful for restaurants with onsite and take-away services that imply specific tax rates.'
string='Fiscal Positions'
args: 'account.fiscal.position'
group_by
Boolean
default=True
help='Check this if you want to group the Journal Items by Product while closing a Session.'
string='Group Journal Items'
group_pos_manager_id
Many2one → res.groups
default=_get_group_pos_manager
help='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_id
Many2one → res.groups
default=_get_group_pos_user
help='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'
iface_big_scrollbars
Boolean
help='For imprecise industrial touchscreens.'
args: 'Large Scrollbars'
iface_cashdrawer
Boolean
help='Automatically open the cashdrawer.'
string='Cashdrawer'
iface_customer_facing_display
Boolean
help='Show checkout to customers with a remotely-connected screen.'
string='Customer Facing Display'
iface_display_categ_images
Boolean
help='The product categories will be displayed with pictures.'
string='Display Category Pictures'
iface_electronic_scale
Boolean
help='Enables Electronic Scale integration.'
string='Electronic Scale'
iface_payment_terminal
Boolean
help='Enables Payment Terminal integration.'
string='Payment Terminal'
iface_precompute_cash
Boolean
help='The payment input will behave similarily to bank payment input, and will be prefilled with the exact due amount.'
string='Prefill Cash Payment'
iface_print_auto
Boolean
default=False
help='The receipt will automatically be printed at the end of each order.'
string='Automatic Receipt Printing'
iface_print_skip_screen
Boolean
default=True
help='The receipt screen will be skipped if the receipt can be printed automatically.'
string='Skip Preview Screen'
iface_print_via_proxy
Boolean
help='Bypass browser printing and prints via the hardware proxy.'
string='Print via Proxy'
iface_scan_via_proxy
Boolean
help='Enable barcode scanning with a remotely connected barcode scanner.'
string='Scan via Proxy'
iface_start_categ_id
Many2one → pos.category
help='The point of sale will display this product category by default. If no category is specified, all available products will be shown.'
string='Initial Category'
args: 'pos.category'
iface_tax_included
Selection
default='subtotal'
required=True
string='Tax Display'
args: [('subtotal', 'Tax-Excluded Price'), ('total', 'Tax-Included Price')]
iface_tipproduct
Boolean
string='Product tips'
iface_vkeyboard
Boolean
help='Don’t turn this option on if you take orders on smartphones or tablets. \n Such devices already benefit from a native keyboard.'
string='Virtual KeyBoard'
invoice_journal_id
Many2one → account.journal
default=_default_invoice_journal
domain=[('type', '=', 'sale')]
help='Accounting journal used to create invoices.'
string='Invoice Journal'
args: 'account.journal'
is_header_or_footer
Boolean
is_installed_account_accountant
Boolean
compute='_compute_is_installed_account_accountant'
string='Is the Full Accounting Installed'
is_posbox
Boolean
journal_id
Many2one → account.journal
default=_default_sale_journal
domain=[('type', '=', 'sale')]
help='Accounting journal used to post sales entries.'
string='Sales Journal'
args: 'account.journal'
journal_ids
Many2many → account.journal
domain="[('journal_user', '=', True ), ('type', 'in', ['bank', 'cash'])]"
string='Available Payment Methods'
args: 'account.journal', 'pos_config_journal_rel', 'pos_config_id', 'journal_id'
last_session_closing_cash
Float
compute='_compute_last_session'
last_session_closing_date
Date
compute='_compute_last_session'
module_account
Boolean
help='Enables invoice generation from the Point of Sale.'
string='Invoicing'
module_pos_discount
Boolean
module_pos_loyalty
Boolean
module_pos_mercury
Boolean
string='Integrated Card Payments'
module_pos_reprint
Boolean
string='Reprint Receipt'
module_pos_restaurant
Boolean
name
Char
help='An internal identification of the point of sale.'
index=True
required=True
string='Point of Sale Name'
picking_type_id
Many2one → stock.picking.type
string='Operation Type'
args: 'stock.picking.type'
pos_session_duration
Char
compute='_compute_current_session_user'
pos_session_state
Char
compute='_compute_current_session_user'
pos_session_username
Char
compute='_compute_current_session_user'
pricelist_id
Many2one → product.pricelist
default=_default_pricelist
help='The pricelist used if no customer is selected or if the customer has no Sale Pricelist configured.'
required=True
string='Default Pricelist'
args: 'product.pricelist'
proxy_ip
Char
help='The hostname or ip address of the hardware proxy, Will be autodetected if left empty.'
size=45
string='IP Address'
receipt_footer
Text
help='A short text that will be inserted as a footer in the printed receipt.'
string='Receipt Footer'
receipt_header
Text
help='A short text that will be inserted as a header in the printed receipt.'
string='Receipt Header'
restrict_price_control
Boolean
help='Only users with Manager access rights for PoS app can modify the product prices on orders.'
string='Restrict Price Modifications to Managers'
sequence_id
Many2one → ir.sequence
copy=False
help='This sequence is automatically created by Odoo but you can change it to customize the reference numbers of your orders.'
readonly=True
string='Order IDs Sequence'
args: 'ir.sequence'
sequence_line_id
Many2one → ir.sequence
copy=False
help='This sequence is automatically created by Odoo but you can change it to customize the reference numbers of your orders lines.'
readonly=True
string='Order Line IDs Sequence'
args: 'ir.sequence'
session_ids
One2many → pos.session
string='Sessions'
args: 'pos.session', 'config_id'
start_category
Boolean
stock_location_id
Many2one → stock.location
default=_get_default_location
domain=[('usage', '=', 'internal')]
required=True
string='Stock Location'
args: 'stock.location'
tax_regime
Boolean
tax_regime_selection
Boolean
tip_product_id
Many2one → product.product
help='This product is used as reference on customer receipts.'
string='Tip Product'
args: 'product.product'
use_existing_lots
Boolean
readonly=False
related='picking_type_id.use_existing_lots'
use_pricelist
Boolean
uuid
Char
default=<expr>
help='A globally unique identifier for this pos configuration, used to prevent conflicts in client-generated data.'
readonly=True
create(self, values)
execute(self)
name_get(self)
open_existing_session_cb(self)
open_session_cb(self)
open_ui(self)
unlink(self)
write(self, vals)
end_date
Datetime
default=fields.Datetime.now
required=True
pos_config_ids
Many2many → pos.config
default=<expr>
args: 'pos.config', 'pos_detail_configs'
start_date
Datetime
default=_default_start_date
required=True
generate_report(self)
amount
Float
default=_default_amount
digits=0
required=True
journal_id
Many2one → account.journal
default=_default_journal
required=True
string='Payment Mode'
args: 'account.journal'
payment_date
Date
default=<expr>
required=True
string='Payment Date'
payment_name
Char
string='Payment Reference'
session_id
Many2one → pos.session
default=_default_session
required=True
args: 'pos.session'
check(self)
launch_payment(self)
No new fields.
Public methods (1)open_statement(self)
account_move
Many2one → account.move
copy=False
readonly=True
string='Journal Entry'
args: 'account.move'
amount_paid
Float
digits=0
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Paid'
amount_return
Float
digits=0
readonly=True
required=True
string='Returned'
amount_tax
Float
digits=0
readonly=True
required=True
string='Taxes'
amount_total
Float
digits=0
readonly=True
required=True
string='Total'
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
readonly=False
related='session_id.config_id'
string='Point of Sale'
args: 'pos.config'
date_order
Datetime
default=fields.Datetime.now
index=True
readonly=True
string='Order Date'
fiscal_position_id
Many2one → account.fiscal.position
comodel_name='account.fiscal.position'
default=<expr>
readonly=True
states={'draft': [('readonly', False)]}
string='Fiscal Position'
invoice_group
Boolean
readonly=False
related='config_id.module_account'
invoice_id
Many2one → account.invoice
copy=False
string='Invoice'
args: 'account.invoice'
lines
One2many → pos.order.line
copy=True
readonly=True
states={'draft': [('readonly', False)]}
string='Order Lines'
args: 'pos.order.line', 'order_id'
location_id
Many2one → stock.location
comodel_name='stock.location'
readonly=True
related='session_id.config_id.stock_location_id'
store=True
string='Location'
name
Char
copy=False
default='/'
readonly=True
required=True
string='Order Ref'
nb_print
Integer
copy=False
default=0
readonly=True
string='Number of Print'
note
Text
string='Internal Notes'
partner_id
Many2one → res.partner
change_default=True
index=True
states={'draft': [('readonly', False)], 'paid': [('readonly', False)]}
string='Customer'
args: 'res.partner'
picking_id
Many2one → stock.picking
copy=False
readonly=True
string='Picking'
args: 'stock.picking'
picking_type_id
Many2one → stock.picking.type
readonly=False
related='session_id.config_id.picking_type_id'
string='Operation Type'
args: 'stock.picking.type'
pos_reference
Char
copy=False
readonly=True
string='Receipt Ref'
pricelist_id
Many2one → product.pricelist
default=_default_pricelist
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Pricelist'
args: 'product.pricelist'
sale_journal
Many2one → account.journal
readonly=True
related='session_id.config_id.journal_id'
store=True
string='Sales Journal'
args: 'account.journal'
sequence_number
Integer
default=1
help='A session-unique sequence number for the order'
string='Sequence Number'
session_id
Many2one → pos.session
default=_default_session
domain="[('state', '=', 'opened')]"
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Session'
args: 'pos.session'
state
Selection
copy=False
default='draft'
readonly=True
args: [('draft', 'New'), ('cancel', 'Cancelled'), ('paid', 'Paid'), ('done', 'Posted'), ('invoiced', 'Invoiced')], 'Status'
statement_ids
One2many → account.bank.statement.line
readonly=True
states={'draft': [('readonly', False)]}
string='Payments'
args: 'account.bank.statement.line', 'pos_statement_id'
user_id
Many2one → res.users
comodel_name='res.users'
default=<expr>
help='Person who uses the cash register. It can be a reliever, a student or an interim employee.'
states={'done': [('readonly', True)], 'invoiced': [('readonly', True)]}
string='Salesperson'
action_pos_order_cancel(self)
action_pos_order_done(self)
action_pos_order_invoice(self)
action_pos_order_paid(self)
action_view_invoice(self)
add_payment(self, data)
create(self, values)
create_from_ui(self, orders)
create_picking(self)
refund(self)
set_pack_operation_lot(self, picking=None)
test_paid(self)
unlink(self)
write(self, vals)
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
discount
Float
default=0.0
digits=0
string='Discount (%)'
name
Char
copy=False
required=True
string='Line No'
notice
Char
string='Discount Notice'
order_id
Many2one → pos.order
ondelete='cascade'
string='Order Ref'
args: 'pos.order'
pack_lot_ids
One2many → pos.pack.operation.lot
string='Lot/serial Number'
args: 'pos.pack.operation.lot', 'pos_order_line_id'
price_subtotal
Float
digits=0
readonly=True
required=True
string='Subtotal w/o Tax'
price_subtotal_incl
Float
digits=0
readonly=True
required=True
string='Subtotal'
price_unit
Float
digits=0
string='Unit Price'
product_id
Many2one → product.product
change_default=True
domain=[('sale_ok', '=', True)]
required=True
string='Product'
args: 'product.product'
qty
Float
default=1
digits=dp.get_precision('Product Unit of Measure')
args: 'Quantity'
tax_ids
Many2many → account.tax
readonly=True
string='Taxes'
args: 'account.tax'
tax_ids_after_fiscal_position
Many2many → account.tax
compute='_get_tax_ids_after_fiscal_position'
string='Taxes to Apply'
args: 'account.tax'
create(self, values)
lot_name
Char
order_id
Many2one → pos.order
readonly=False
related='pos_order_line_id.order_id'
args: 'pos.order'
pos_order_line_id
Many2one → pos.order.line
product_id
Many2one → product.product
readonly=False
related='pos_order_line_id.product_id'
args: 'product.product'
No public methods.
cash_control
Boolean
compute='_compute_cash_all'
string='Has Cash Control'
cash_journal_id
Many2one → account.journal
compute='_compute_cash_all'
store=True
string='Cash Journal'
args: 'account.journal'
cash_register_balance_end
Monetary
digits=0
help='Sum of opening balance and transactions.'
readonly=True
related='cash_register_id.balance_end'
string='Theoretical Closing Balance'
cash_register_balance_end_real
Monetary
help='Total of closing cash control lines.'
readonly=True
related='cash_register_id.balance_end_real'
string='Ending Balance'
cash_register_balance_start
Monetary
help='Total of opening cash control lines.'
readonly=True
related='cash_register_id.balance_start'
string='Starting Balance'
cash_register_difference
Monetary
help='Difference between the theoretical closing balance and the real closing balance.'
readonly=True
related='cash_register_id.difference'
string='Difference'
cash_register_id
Many2one → account.bank.statement
compute='_compute_cash_all'
store=True
string='Cash Register'
args: 'account.bank.statement'
cash_register_total_entry_encoding
Monetary
help='Total of all paid sales orders'
readonly=True
related='cash_register_id.total_entry_encoding'
string='Total Cash Transaction'
config_id
Many2one → pos.config
help='The physical point of sale you will use.'
index=True
required=True
string='Point of Sale'
args: 'pos.config'
currency_id
Many2one → res.currency
readonly=False
related='config_id.currency_id'
string='Currency'
args: 'res.currency'
journal_ids
Many2many → account.journal
readonly=True
related='config_id.journal_ids'
string='Available Payment Methods'
args: 'account.journal'
login_number
Integer
default=0
help='A sequence number that is incremented each time a user resumes the pos session'
string='Login Sequence Number'
name
Char
default='/'
readonly=True
required=True
string='Session ID'
order_ids
One2many → pos.order
string='Orders'
args: 'pos.order', 'session_id'
picking_count
Integer
compute='_compute_picking_count'
rescue
Boolean
copy=False
help='Auto-generated session for orphan orders, ignored in constraints'
readonly=True
string='Recovery Session'
sequence_number
Integer
default=1
help='A sequence number that is incremented with each order'
string='Order Sequence Number'
start_at
Datetime
readonly=True
string='Opening Date'
state
Selection
copy=False
default='opening_control'
index=True
readonly=True
required=True
string='Status'
args: POS_SESSION_STATE
statement_ids
One2many → account.bank.statement
readonly=True
string='Bank Statement'
args: 'account.bank.statement', 'pos_session_id'
stop_at
Datetime
copy=False
readonly=True
string='Closing Date'
user_id
Many2one → res.users
default=<expr>
index=True
readonly=True
required=True
states={'opening_control': [('readonly', False)]}
string='Responsible'
args: 'res.users'
action_pos_session_close(self)
action_pos_session_closing_control(self)
action_pos_session_open(self)
action_pos_session_validate(self)
action_stock_picking(self)
create(self, values)
login(self)
open_cashbox(self)
open_frontend_cb(self)
unlink(self)
No new fields.
Public methods (1)unlink(self)
available_in_pos
Boolean
default=False
help='Check if you want this product to appear in the Point of Sale.'
string='Available in POS'
pos_categ_id
Many2one → pos.category
help='Category used in the Point of Sale.'
string='Point of Sale Category'
args: 'pos.category'
to_weight
Boolean
help='Check if the product should be weighted using the hardware scale integration.'
string='To Weigh With Scale'
unlink(self)
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, configs=False)
average_price
Float
group_operator='avg'
readonly=True
string='Average Price'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
readonly=True
string='Point of Sale'
args: 'pos.config'
date
Datetime
readonly=True
string='Order Date'
delay_validation
Integer
string='Delay Validation'
invoiced
Boolean
readonly=True
journal_id
Many2one → account.journal
string='Journal'
args: 'account.journal'
location_id
Many2one → stock.location
readonly=True
string='Location'
args: 'stock.location'
nbr_lines
Integer
oldname='nbr'
readonly=True
string='Sale Line Count'
order_id
Many2one → pos.order
readonly=True
string='Order'
args: 'pos.order'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
pos_categ_id
Many2one → pos.category
readonly=True
string='PoS Category'
args: 'pos.category'
price_sub_total
Float
readonly=True
string='Subtotal w/o discount'
price_total
Float
readonly=True
string='Total Price'
pricelist_id
Many2one → product.pricelist
readonly=True
string='Pricelist'
args: 'product.pricelist'
product_categ_id
Many2one → product.category
readonly=True
string='Product Category'
args: 'product.category'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_qty
Integer
readonly=True
string='Product Quantity'
product_tmpl_id
Many2one → product.template
readonly=True
string='Product Template'
args: 'product.template'
session_id
Many2one → pos.session
readonly=True
string='Session'
args: 'pos.session'
state
Selection
string='Status'
args: [('draft', 'New'), ('paid', 'Paid'), ('done', 'Posted'), ('invoiced', 'Invoiced'), ('cancel', 'Cancelled')]
total_discount
Float
readonly=True
string='Total Discount'
user_id
Many2one → res.users
readonly=True
string='Salesperson'
args: 'res.users'
init(self)
module_pos_mercury
Boolean
help='The transactions are processed by Vantiv. Set your Vantiv credentials on the related payment journal.'
string='Integrated Card Payments'
pos_pricelist_setting
Selection
config_parameter='point_of_sale.pos_pricelist_setting'
string='POS Pricelists'
args: [('percentage', 'Multiple prices per product (e.g. customer segments, currencies)'), ('formula', 'Price computed from formulas (discounts, margins, roundings)')]
pos_sales_price
Boolean
config_parameter='point_of_sale.pos_sales_price'
args: 'Multiple Product Prices'
sale_tax_id
Many2one → account.tax
readonly=False
related='company_id.account_sale_tax_id'
string='Default Sale Tax'
args: 'account.tax'
pos_pricelist_setting_sync(self, sale_pricelist_setting)
pos_order_count
Integer
compute='_compute_pos_order'
groups='point_of_sale.group_pos_user'
help='The number of point of sales orders related to this customer'
create_from_ui(self, partner)
pos_security_pin
Char
help='A Security PIN used to protect sensible functionality in the Point of Sale'
size=32
string='Security PIN'
No public methods.
is_pos_groupable
Boolean
help='Check if you want to group products of this category in point of sale orders'
string='Group Products in POS'
No public methods.
is_pos_groupable
Boolean
readonly=False
related='category_id.is_pos_groupable'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/11.0/point_of_sale |
| VERSION | |
| VERSION | 1.0.1 |
| CATEGORY | |
| CATEGORY | Point Of Sale |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Josse Colpaert, Denis Ledoux, Christophe Simonis, Xavier Morel, Joren Van Onder, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, Richard Mathot, qdp-odoo, Géry Debongnie, Aaron Bohy, GitHub, Lucas Perais (lpe), Yannick Tivisse, qsm-odoo, Martin Geubelle, Odoo Online, Pierre Masereel, Laurent Smet, Denis Vermylen (dve), DVE, Adrien Dieudonne, Christophe Monniez, len-odoo, Jorge Pinna Puissant, Gert Pellin, jev-odoo, Antoine Prieels, mgh-odoo, Luis Torres |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/point-of-sale |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:53:42 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock_account - stock - product - base - decimal_precision - base_setup - web - bus - web_tour - barcodes - web_planner - account - analytic - portal - http_routing - web_editor |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
FieldTextHtml |
FieldTextHtml | ir.ui.view | qweb | New |
account_cashbox_line_view_tree |
account.cashbox.line.tree | account.cashbox.line | tree | New |
assets |
point_of_sale assets | ir.ui.view | qweb | New |
assets_backend |
hr assets | ir.ui.view | qweb | Inherits web.assets_backend |
customer_facing_display_html |
customer_facing_display_html | ir.ui.view | qweb | New |
customer_facing_display_snippets |
customer_facing_display_snippets | ir.ui.view | qweb | New |
extra_head |
extra_head | ir.ui.view | qweb | New |
index |
POS Index | ir.ui.view | qweb | New |
pos_config_view_form |
pos.config.form.view | pos.config | form | New |
pos_editor_assets |
pos_editor_assets | ir.ui.view | qweb | Inherits web_editor.assets_editor |
pos_editor_fieldtexthtml_assets |
pos_editor_fieldtexthtml_assets | ir.ui.view | qweb | Inherits web.assets_backend |
product_pos_category_form_view |
pos.category.form | pos.category | form | New |
product_pos_category_tree_view |
pos.category.tree | pos.category | tree | New |
product_template_form_view |
product.template.form.inherit | product.template | group | Inherits stock.view_template_property_form |
product_template_search_view_pos |
product.template.search.pos.form | product.template | filter | Inherits product.product_template_search_view |
product_uom_categ_form_view |
product.uom.categ.form.inherit | product.uom.categ | xpath | Inherits product.product_uom_categ_form_view |
report_invoice |
report_invoice | ir.ui.view | qweb | Inherits account.report_invoice |
report_saledetails |
report_saledetails | ir.ui.view | qweb | New |
report_statement |
report_statement | ir.ui.view | qweb | New |
report_userlabel |
report_userlabel | ir.ui.view | qweb | New |
res_users_form_view |
res.users.form.view | res.users | notebook | Inherits base.view_users_form |
view_account_bank_journal_form_inherited_pos |
account.bank.journal.form.inherit.pos | account.journal | xpath | Inherits account.view_account_bank_journal_form |
view_account_journal_pos_user_form |
account.journal.pos.user.form.inherit | account.journal | xpath | Inherits account.view_account_journal_form |
view_account_journal_search_inherit_point_of_sale |
account.journal.filter | account.journal | field | Inherits account.view_account_journal_search |
view_partner_pos_kanban |
res.partner.pos.kanban.inherit | res.partner | field | Inherits base.res_partner_kanban_view |
view_partner_property_form |
res.partner.pos.form.inherit | res.partner | div | Inherits base.view_partner_form |
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.tree.view | pos.config | tree | New |
view_pos_details_wizard |
pos.details.wizard.form | pos.details.wizard | form | New |
view_pos_discount |
pos.discount.form | pos.discount | form | New |
view_pos_open_statement |
pos.open.statement.form | pos.open.statement | form | 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.tree | pos.order.line | tree | New |
view_pos_order_line_form |
pos.order.line.form | pos.order.line | form | New |
view_pos_order_search |
pos.order.search.view | pos.order | search | New |
view_pos_order_tree |
pos.order.tree | pos.order | tree | New |
view_pos_order_tree_all_sales_lines |
pos.order.line.all.sales.tree | pos.order.line | tree | New |
view_pos_payment |
pos.make.payment.form | pos.make.payment | form | New |
view_pos_pos_form |
pos.order.form | pos.order | 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.tree.view | pos.session | tree | 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 |
account_id
Many2one → account.account
readonly=True
related='journal_id.default_debit_account_id'
args: 'account.account'
pos_session_id
Many2one → pos.session
copy=False
string='Session'
args: 'pos.session'
No public methods.
No new fields.
Public methods (1)default_get(self, fields)
pos_statement_id
Many2one → pos.order
ondelete='cascade'
string='POS statement'
args: 'pos.order'
No public methods.
default_pos_id
Many2one → pos.config
string='This cashbox line is used by default when opening or closing a balance for this point of sale'
args: 'pos.config'
name_get(self)
No new fields.
Public methods (0)No public methods.
amount_authorized_diff
Float
help='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'
journal_user
Boolean
help='Check this box if this journal define a payment method that can be used in a point of sale.'
args: 'Use in Point of Sale'
onchange_type(self)
search(self, args, offset=0, limit=None, order=None, count=False)
type
Selection
selection_add=[('weight', 'Weighted Product'), ('price', 'Priced Product'), ('discount', 'Discounted Product'), ('client', 'Client'), ('cashier', 'Cashier')]
No public methods.
child_id
One2many → pos.category
string='Children Categories'
args: 'pos.category', 'parent_id'
image
Binary
attachment=True
help='This field holds the image used as image for the cateogry, limited to 1024x1024px.'
image_medium
Binary
attachment=True
help='Medium-sized image of the category. It is automatically resized as a 128x128px image, with aspect ratio preserved. Use this field in form views or some kanban views.'
string='Medium-sized image'
image_small
Binary
attachment=True
help='Small-sized image of the category. It is automatically resized as a 64x64px image, with aspect ratio preserved. Use this field anywhere a small image is required.'
string='Small-sized image'
name
Char
required=True
translate=True
parent_id
Many2one → pos.category
index=True
string='Parent Category'
args: 'pos.category'
sequence
Integer
help='Gives the sequence order when displaying a list of product categories.'
create(self, vals)
name_get(self)
write(self, vals)
active
Boolean
default=True
available_pricelist_ids
Many2many → product.pricelist
default=_default_pricelist
help='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'
barcode_nomenclature_id
Many2one → barcode.nomenclature
help='Defines what kind of barcodes are available and how they are assigned to products, customers and cashiers.'
string='Barcode Nomenclature'
args: 'barcode.nomenclature'
barcode_scanner
Boolean
cash_control
Boolean
help='Check the amount of the cashbox at opening and closing.'
string='Cash Control'
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
compute='_compute_currency'
string='Currency'
args: 'res.currency'
current_session_id
Many2one → pos.session
compute='_compute_current_session'
string='Current Session'
args: 'pos.session'
current_session_state
Char
compute='_compute_current_session'
customer_facing_display_html
Html
default=_compute_default_customer_html
string='Customer facing display content'
translate=True
default_cashbox_lines_ids
One2many → account.cashbox.line
string='Default Balance'
args: 'account.cashbox.line', 'default_pos_id'
default_fiscal_position_id
Many2one → account.fiscal.position
string='Default Fiscal Position'
args: 'account.fiscal.position'
fiscal_position_ids
Many2many → account.fiscal.position
help='This is useful for restaurants with onsite and take-away services that imply specific tax rates.'
string='Fiscal Positions'
args: 'account.fiscal.position'
group_by
Boolean
default=True
help='Check this if you want to group the Journal Items by Product while closing a Session.'
string='Group Journal Items'
group_pos_manager_id
Many2one → res.groups
default=_get_group_pos_manager
help='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_id
Many2one → res.groups
default=_get_group_pos_user
help='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'
group_pricelist_item
Boolean
implied_group='product.group_pricelist_item'
args: 'Show pricelists to customers'
group_sale_pricelist
Boolean
help='Allows to manage different prices based on rules per category of customers.\n Example: 10% for retailers, promotion of 5 EUR on this product, etc.'
implied_group='product.group_sale_pricelist'
args: 'Use pricelists to adapt your price per customers'
iface_big_scrollbars
Boolean
help='For imprecise industrial touchscreens.'
args: 'Large Scrollbars'
iface_cashdrawer
Boolean
help='Automatically open the cashdrawer.'
string='Cashdrawer'
iface_customer_facing_display
Boolean
help='Show checkout to customers with a remotely-connected screen.'
string='Customer Facing Display'
iface_display_categ_images
Boolean
help='The product categories will be displayed with pictures.'
string='Display Category Pictures'
iface_electronic_scale
Boolean
help='Enables Electronic Scale integration.'
string='Electronic Scale'
iface_invoicing
Boolean
help='Enables invoice generation from the Point of Sale.'
string='Invoicing'
iface_payment_terminal
Boolean
help='Enables Payment Terminal integration.'
string='Payment Terminal'
iface_precompute_cash
Boolean
help='The payment input will behave similarily to bank payment input, and will be prefilled with the exact due amount.'
string='Prefill Cash Payment'
iface_print_auto
Boolean
default=False
help='The receipt will automatically be printed at the end of each order.'
string='Automatic Receipt Printing'
iface_print_skip_screen
Boolean
default=True
help='The receipt screen will be skipped if the receipt can be printed automatically.'
string='Skip Preview Screen'
iface_print_via_proxy
Boolean
help='Bypass browser printing and prints via the hardware proxy.'
string='Print via Proxy'
iface_scan_via_proxy
Boolean
help='Enable barcode scanning with a remotely connected barcode scanner.'
string='Scan via Proxy'
iface_start_categ_id
Many2one → pos.category
help='The point of sale will display this product category by default. If no category is specified, all available products will be shown.'
string='Initial Category'
args: 'pos.category'
iface_tax_included
Selection
default='subtotal'
required=True
args: [('subtotal', 'Tax-Excluded Prices'), ('total', 'Tax-Included Prices')], 'Tax Display'
iface_tipproduct
Boolean
string='Product tips'
iface_vkeyboard
Boolean
help='Don’t turn this option on if you take orders on smartphones or tablets. \n Such devices already benefit from a native keyboard.'
string='Virtual KeyBoard'
invoice_journal_id
Many2one → account.journal
default=_default_invoice_journal
domain=[('type', '=', 'sale')]
help='Accounting journal used to create invoices.'
string='Invoice Journal'
args: 'account.journal'
is_header_or_footer
Boolean
is_installed_account_accountant
Boolean
compute='_compute_is_installed_account_accountant'
is_posbox
Boolean
journal_id
Many2one → account.journal
default=_default_sale_journal
domain=[('type', '=', 'sale')]
help='Accounting journal used to post sales entries.'
string='Sales Journal'
args: 'account.journal'
journal_ids
Many2many → account.journal
domain="[('journal_user', '=', True ), ('type', 'in', ['bank', 'cash'])]"
string='Available Payment Methods'
args: 'account.journal', 'pos_config_journal_rel', 'pos_config_id', 'journal_id'
last_session_closing_cash
Float
compute='_compute_last_session'
last_session_closing_date
Date
compute='_compute_last_session'
module_pos_discount
Boolean
module_pos_loyalty
Boolean
module_pos_mercury
Boolean
string='Integrated Card Payments'
module_pos_reprint
Boolean
string='Reprint Receipt'
module_pos_restaurant
Boolean
name
Char
help='An internal identification of the point of sale.'
index=True
required=True
string='Point of Sale Name'
picking_type_id
Many2one → stock.picking.type
string='Operation Type'
args: 'stock.picking.type'
pos_session_state
Char
compute='_compute_current_session_user'
pos_session_username
Char
compute='_compute_current_session_user'
pricelist_id
Many2one → product.pricelist
default=_default_pricelist
help='The pricelist used if no customer is selected or if the customer has no Sale Pricelist configured.'
required=True
string='Default Pricelist'
args: 'product.pricelist'
proxy_ip
Char
help='The hostname or ip address of the hardware proxy, Will be autodetected if left empty.'
size=45
string='IP Address'
receipt_footer
Text
help='A short text that will be inserted as a footer in the printed receipt.'
string='Receipt Footer'
receipt_header
Text
help='A short text that will be inserted as a header in the printed receipt.'
string='Receipt Header'
restrict_price_control
Boolean
help='Only users with Manager access rights for PoS app can modify the product prices on orders.'
string='Restrict Price Modifications to Managers'
sequence_id
Many2one → ir.sequence
copy=False
help='This sequence is automatically created by Odoo but you can change it to customize the reference numbers of your orders.'
readonly=True
string='Order IDs Sequence'
args: 'ir.sequence'
sequence_line_id
Many2one → ir.sequence
copy=False
help='This sequence is automatically created by Odoo but you can change it to customize the reference numbers of your orders lines.'
readonly=True
string='Order Line IDs Sequence'
args: 'ir.sequence'
session_ids
One2many → pos.session
string='Sessions'
args: 'pos.session', 'config_id'
start_category
Boolean
stock_location_id
Many2one → stock.location
default=_get_default_location
domain=[('usage', '=', 'internal')]
required=True
string='Stock Location'
args: 'stock.location'
tax_regime
Boolean
tax_regime_selection
Boolean
tip_product_id
Many2one → product.product
help='This product is used as reference on customer receipts.'
string='Tip Product'
args: 'product.product'
use_existing_lots
Boolean
related='picking_type_id.use_existing_lots'
use_pricelist
Boolean
uuid
Char
default=<expr>
help='A globally unique identifier for this pos configuration, used to prevent conflicts in client-generated data.'
readonly=True
create(self, values)
execute(self)
name_get(self)
open_existing_session_cb(self)
open_session_cb(self)
open_ui(self)
unlink(self)
write(self, vals)
end_date
Datetime
default=fields.Datetime.now
required=True
pos_config_ids
Many2many → pos.config
default=<expr>
args: 'pos.config', 'pos_detail_configs'
start_date
Datetime
default=_default_start_date
required=True
generate_report(self)
discount
Float
default=5
digits=(16, 2)
required=True
string='Discount (%)'
apply_discount(self)
amount
Float
default=_default_amount
digits=0
required=True
journal_id
Many2one → account.journal
default=_default_journal
required=True
string='Payment Mode'
args: 'account.journal'
payment_date
Date
default=<expr>
required=True
string='Payment Date'
payment_name
Char
string='Payment Reference'
session_id
Many2one → pos.session
default=_default_session
required=True
args: 'pos.session'
check(self)
launch_payment(self)
No new fields.
Public methods (1)open_statement(self)
account_move
Many2one → account.move
copy=False
readonly=True
string='Journal Entry'
args: 'account.move'
amount_paid
Float
compute='_compute_amount_all'
digits=0
readonly=True
states={'draft': [('readonly', False)]}
string='Paid'
amount_return
Float
compute='_compute_amount_all'
digits=0
string='Returned'
amount_tax
Float
compute='_compute_amount_all'
digits=0
string='Taxes'
amount_total
Float
compute='_compute_amount_all'
digits=0
string='Total'
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
related='session_id.config_id'
string='Point of Sale'
args: 'pos.config'
date_order
Datetime
default=fields.Datetime.now
index=True
readonly=True
string='Order Date'
fiscal_position_id
Many2one → account.fiscal.position
comodel_name='account.fiscal.position'
default=<expr>
readonly=True
states={'draft': [('readonly', False)]}
string='Fiscal Position'
invoice_id
Many2one → account.invoice
copy=False
string='Invoice'
args: 'account.invoice'
lines
One2many → pos.order.line
copy=True
readonly=True
states={'draft': [('readonly', False)]}
string='Order Lines'
args: 'pos.order.line', 'order_id'
location_id
Many2one → stock.location
comodel_name='stock.location'
readonly=True
related='session_id.config_id.stock_location_id'
store=True
string='Location'
name
Char
copy=False
default='/'
readonly=True
required=True
string='Order Ref'
nb_print
Integer
copy=False
default=0
readonly=True
string='Number of Print'
note
Text
string='Internal Notes'
partner_id
Many2one → res.partner
change_default=True
index=True
states={'draft': [('readonly', False)], 'paid': [('readonly', False)]}
string='Customer'
args: 'res.partner'
picking_id
Many2one → stock.picking
copy=False
readonly=True
string='Picking'
args: 'stock.picking'
picking_type_id
Many2one → stock.picking.type
related='session_id.config_id.picking_type_id'
string='Operation Type'
args: 'stock.picking.type'
pos_reference
Char
copy=False
readonly=True
string='Receipt Ref'
pricelist_id
Many2one → product.pricelist
default=_default_pricelist
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Pricelist'
args: 'product.pricelist'
sale_journal
Many2one → account.journal
readonly=True
related='session_id.config_id.journal_id'
store=True
string='Sales Journal'
args: 'account.journal'
sequence_number
Integer
default=1
help='A session-unique sequence number for the order'
string='Sequence Number'
session_id
Many2one → pos.session
default=_default_session
domain="[('state', '=', 'opened')]"
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Session'
args: 'pos.session'
state
Selection
copy=False
default='draft'
readonly=True
args: [('draft', 'New'), ('cancel', 'Cancelled'), ('paid', 'Paid'), ('done', 'Posted'), ('invoiced', 'Invoiced')], 'Status'
statement_ids
One2many → account.bank.statement.line
readonly=True
states={'draft': [('readonly', False)]}
string='Payments'
args: 'account.bank.statement.line', 'pos_statement_id'
user_id
Many2one → res.users
comodel_name='res.users'
default=<expr>
help='Person who uses the cash register. It can be a reliever, a student or an interim employee.'
states={'done': [('readonly', True)], 'invoiced': [('readonly', True)]}
string='Salesman'
action_pos_order_cancel(self)
action_pos_order_done(self)
action_pos_order_invoice(self)
action_pos_order_paid(self)
action_view_invoice(self)
add_payment(self, data)
create(self, values)
create_from_ui(self, orders)
create_picking(self)
refund(self)
set_pack_operation_lot(self, picking=None)
test_paid(self)
unlink(self)
write(self, vals)
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
create_date
Datetime
readonly=True
string='Creation Date'
discount
Float
default=0.0
digits=0
string='Discount (%)'
name
Char
copy=False
required=True
string='Line No'
notice
Char
string='Discount Notice'
order_id
Many2one → pos.order
ondelete='cascade'
string='Order Ref'
args: 'pos.order'
pack_lot_ids
One2many → pos.pack.operation.lot
string='Lot/serial Number'
args: 'pos.pack.operation.lot', 'pos_order_line_id'
price_subtotal
Float
compute='_compute_amount_line_all'
digits=0
string='Subtotal w/o Tax'
price_subtotal_incl
Float
compute='_compute_amount_line_all'
digits=0
string='Subtotal'
price_unit
Float
digits=0
string='Unit Price'
product_id
Many2one → product.product
change_default=True
domain=[('sale_ok', '=', True)]
required=True
string='Product'
args: 'product.product'
qty
Float
default=1
digits=dp.get_precision('Product Unit of Measure')
args: 'Quantity'
tax_ids
Many2many → account.tax
readonly=True
string='Taxes'
args: 'account.tax'
tax_ids_after_fiscal_position
Many2many → account.tax
compute='_get_tax_ids_after_fiscal_position'
string='Taxes'
args: 'account.tax'
create(self, values)
lot_name
Char
order_id
Many2one → pos.order
related='pos_order_line_id.order_id'
args: 'pos.order'
pos_order_line_id
Many2one → pos.order.line
product_id
Many2one → product.product
related='pos_order_line_id.product_id'
args: 'product.product'
No public methods.
cash_control
Boolean
compute='_compute_cash_all'
string='Has Cash Control'
cash_journal_id
Many2one → account.journal
compute='_compute_cash_all'
store=True
string='Cash Journal'
args: 'account.journal'
cash_register_balance_end
Monetary
digits=0
help='Sum of opening balance and transactions.'
readonly=True
related='cash_register_id.balance_end'
string='Theoretical Closing Balance'
cash_register_balance_end_real
Monetary
help='Total of closing cash control lines.'
readonly=True
related='cash_register_id.balance_end_real'
string='Ending Balance'
cash_register_balance_start
Monetary
help='Total of opening cash control lines.'
readonly=True
related='cash_register_id.balance_start'
string='Starting Balance'
cash_register_difference
Monetary
help='Difference between the theoretical closing balance and the real closing balance.'
readonly=True
related='cash_register_id.difference'
string='Difference'
cash_register_id
Many2one → account.bank.statement
compute='_compute_cash_all'
store=True
string='Cash Register'
args: 'account.bank.statement'
cash_register_total_entry_encoding
Monetary
help='Total of all paid sales orders'
readonly=True
related='cash_register_id.total_entry_encoding'
string='Total Cash Transaction'
config_id
Many2one → pos.config
help='The physical point of sale you will use.'
index=True
required=True
string='Point of Sale'
args: 'pos.config'
currency_id
Many2one → res.currency
related='config_id.currency_id'
string='Currency'
args: 'res.currency'
journal_ids
Many2many → account.journal
readonly=True
related='config_id.journal_ids'
string='Available Payment Methods'
args: 'account.journal'
login_number
Integer
default=0
help='A sequence number that is incremented each time a user resumes the pos session'
string='Login Sequence Number'
name
Char
default='/'
readonly=True
required=True
string='Session ID'
order_ids
One2many → pos.order
string='Orders'
args: 'pos.order', 'session_id'
picking_count
Integer
compute='_compute_picking_count'
rescue
Boolean
copy=False
help='Auto-generated session for orphan orders, ignored in constraints'
readonly=True
string='Recovery Session'
sequence_number
Integer
default=1
help='A sequence number that is incremented with each order'
string='Order Sequence Number'
start_at
Datetime
readonly=True
string='Opening Date'
state
Selection
copy=False
default='opening_control'
index=True
readonly=True
required=True
string='Status'
args: POS_SESSION_STATE
statement_ids
One2many → account.bank.statement
readonly=True
string='Bank Statement'
args: 'account.bank.statement', 'pos_session_id'
stop_at
Datetime
copy=False
readonly=True
string='Closing Date'
user_id
Many2one → res.users
default=<expr>
index=True
readonly=True
required=True
states={'opening_control': [('readonly', False)]}
string='Responsible'
args: 'res.users'
action_pos_session_close(self)
action_pos_session_closing_control(self)
action_pos_session_open(self)
action_pos_session_validate(self)
action_stock_picking(self)
create(self, values)
login(self)
open_cashbox(self)
open_frontend_cb(self)
unlink(self)
No new fields.
Public methods (1)unlink(self)
available_in_pos
Boolean
default=True
help='Check if you want this product to appear in the Point of Sale'
string='Available in Point of Sale'
pos_categ_id
Many2one → pos.category
help='Those categories are used to group similar products for point of sale.'
string='Point of Sale Category'
args: 'pos.category'
to_weight
Boolean
help='Check if the product should be weighted using the hardware scale integration'
string='To Weigh With Scale'
unlink(self)
is_pos_groupable
Boolean
related='category_id.is_pos_groupable'
No public methods.
is_pos_groupable
Boolean
help='Check if you want to group products of this category in point of sale orders'
string='Group Products in POS'
No public methods.
No new fields.
Public methods (1)get_report_values(self, docids, data=None)
No new fields.
Public methods (2)get_report_values(self, docids, data=None)
get_sale_details(self, date_start=False, date_stop=False, configs=False)
average_price
Float
group_operator='avg'
readonly=True
string='Average Price'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
readonly=True
string='Point of Sale'
args: 'pos.config'
date
Datetime
readonly=True
string='Date Order'
delay_validation
Integer
string='Delay Validation'
invoiced
Boolean
readonly=True
journal_id
Many2one → account.journal
string='Journal'
args: 'account.journal'
location_id
Many2one → stock.location
readonly=True
string='Location'
args: 'stock.location'
nbr_lines
Integer
oldname='nbr'
readonly=True
string='# of Lines'
order_id
Many2one → pos.order
readonly=True
string='Order'
args: 'pos.order'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
pos_categ_id
Many2one → pos.category
readonly=True
string='PoS Category'
args: 'pos.category'
price_sub_total
Float
readonly=True
string='Subtotal w/o discount'
price_total
Float
readonly=True
string='Total Price'
pricelist_id
Many2one → product.pricelist
readonly=True
string='Pricelist'
args: 'product.pricelist'
product_categ_id
Many2one → product.category
readonly=True
string='Product Category'
args: 'product.category'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_qty
Integer
readonly=True
string='Product Quantity'
product_tmpl_id
Many2one → product.template
readonly=True
string='Product Template'
args: 'product.template'
session_id
Many2one → pos.session
readonly=True
string='Session'
args: 'pos.session'
state
Selection
string='Status'
args: [('draft', 'New'), ('paid', 'Paid'), ('done', 'Posted'), ('invoiced', 'Invoiced'), ('cancel', 'Cancelled')]
stock_location_id
Many2one → stock.location
readonly=True
string='Warehouse'
args: 'stock.location'
total_discount
Float
readonly=True
string='Total Discount'
user_id
Many2one → res.users
readonly=True
string='Salesperson'
args: 'res.users'
init(self)
barcode
Char
oldname='ean13'
string='Barcode'
pos_order_count
Integer
compute='_compute_pos_order'
groups='point_of_sale.group_pos_user'
help='The number of point of sales orders related to this customer'
create_from_ui(self, partner)
pos_security_pin
Char
help='A Security PIN used to protect sensible functionality in the Point of Sale'
size=32
string='Security PIN'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/10.0/point_of_sale |
| VERSION | |
| VERSION | 1.0.1 |
| CATEGORY | |
| CATEGORY | Point Of Sale |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Denis Ledoux, Fabien Meghazi, Christophe Simonis, David Monjoie, Joren Van Onder, Goffin Simon, Nicolas Martinelli, Nicolas Lempereur, Julien Legros, qdp-odoo, Géry Debongnie, Aaron Bohy, Jeremy Kersten, Lucas Perais (lpe), Damien Bouvy, Yannick Tivisse, qsm-odoo, Pierre Masereel, De Paoli Quentin, Tanguy Charlier, len-odoo, Jorge Pinna Puissant, Gert Pellin - GPE, Nans Lefebvre, Denis Vermylen, Gert Pellin, Lucas Perais, KolushovAlexandr |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/point-of-sale |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:50:47 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock_account - stock - product - base - decimal_precision - base_setup - web_kanban - web - bus - web_tour - report - procurement - barcodes - web_planner - account - analytic |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Quick and Easy sale process
===========================
This module allows you to manage your shop sales very easily with a fully web based touchscreen interface.
It is compatible with all PC tablets and the iPad, offering multiple payment methods.
Product selection can be done in several ways:
* Using a barcode reader
* Browsing through categories of products or via a text search.
Main Features
-------------
* Fast encoding of the sale
* Choose one payment method (the quick way) or split the payment between several payment methods
* Computation of the amount of money to return
* Create and confirm the picking list automatically
* Allows the user to create an invoice automatically
* Refund previous sales
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets |
point_of_sale assets | ir.ui.view | qweb | New |
assets_backend |
hr assets | ir.ui.view | qweb | Inherits web.assets_backend |
index |
POS Index | ir.ui.view | qweb | New |
product_pos_category_form_view |
pos.category.form | pos.category | form | New |
product_pos_category_tree_view |
pos.category.tree | pos.category | tree | New |
product_template_form_view |
product.template.form.inherit | product.template | group | Inherits stock.view_template_property_form |
product_template_search_view_pos |
product.template.search.pos.form | product.template | filter | Inherits product.product_template_search_view |
report_saledetails |
report_saledetails | ir.ui.view | qweb | New |
report_statement |
report_statement | ir.ui.view | qweb | New |
report_userlabel |
report_userlabel | ir.ui.view | qweb | New |
res_users_form_view |
res.users.form.view | res.users | notebook | Inherits base.view_users_form |
view_account_journal_pos_user_form |
account.journal.pos.user.form.inherit | account.journal | xpath | Inherits account.view_account_journal_form |
view_partner_pos_kanban |
res.partner.pos.kanban.inherit | res.partner | field | Inherits base.res_partner_kanban_view |
view_partner_property_form |
res.partner.pos.form.inherit | res.partner | div | Inherits base.view_partner_form |
view_pos_config_form |
pos.config.form.view | pos.config | form | 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.tree.view | pos.config | tree | New |
view_pos_details_wizard |
pos.details.wizard.form | pos.details.wizard | form | New |
view_pos_discount |
pos.discount.form | pos.discount | form | New |
view_pos_open_statement |
pos.open.statement.form | pos.open.statement | form | New |
view_pos_order_filter |
pos.order.list.select | pos.order | search | New |
view_pos_order_line |
pos.order.line.tree | pos.order.line | tree | New |
view_pos_order_line_form |
pos.order.line.form | pos.order.line | form | New |
view_pos_order_search |
pos.order.search.view | pos.order | search | New |
view_pos_order_tree |
pos.order.tree | pos.order | tree | New |
view_pos_order_tree_all_sales_lines |
pos.order.line.all.sales.tree | pos.order.line | tree | New |
view_pos_payment |
pos.make.payment.form | pos.make.payment | form | New |
view_pos_pos_form |
pos.order.form | pos.order | form | New |
view_pos_session_form |
pos.session.form.view | pos.session | form | New |
view_pos_session_search |
pos.session.search.view | pos.session | search | New |
view_pos_session_tree |
pos.session.tree.view | pos.session | tree | 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 |
view_sale_config_settings_form_pos |
pos.config.settings.form | pos.config.settings | form | New |
account_id
Many2one → account.account
readonly=True
related='journal_id.default_debit_account_id'
args: 'account.account'
pos_session_id
Many2one → pos.session
copy=False
string='Session'
args: 'pos.session'
No public methods.
No new fields.
Public methods (1)default_get(self, fields)
pos_statement_id
Many2one → pos.order
ondelete='cascade'
string='POS statement'
args: 'pos.order'
No public methods.
default_pos_id
Many2one → pos.config
string='This cashbox line is used by default when opening or closing a balance for this point of sale'
args: 'pos.config'
No public methods.
amount_authorized_diff
Float
help='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'
journal_user
Boolean
help='Check this box if this journal define a payment method that can be used in a point of sale.'
args: 'Active in Point of Sale'
search(self, args, offset=0, limit=None, order=None, count=False)
type
Selection
selection_add=[('weight', _('Weighted Product')), ('price', _('Priced Product')), ('discount', _('Discounted Product')), ('client', _('Client')), ('cashier', _('Cashier'))]
No public methods.
child_id
One2many → pos.category
string='Children Categories'
args: 'pos.category', 'parent_id'
image
Binary
attachment=True
help='This field holds the image used as image for the cateogry, limited to 1024x1024px.'
image_medium
Binary
attachment=True
help='Medium-sized image of the category. It is automatically resized as a 128x128px image, with aspect ratio preserved. Use this field in form views or some kanban views.'
string='Medium-sized image'
image_small
Binary
attachment=True
help='Small-sized image of the category. It is automatically resized as a 64x64px image, with aspect ratio preserved. Use this field anywhere a small image is required.'
string='Small-sized image'
name
Char
required=True
translate=True
parent_id
Many2one → pos.category
index=True
string='Parent Category'
args: 'pos.category'
sequence
Integer
help='Gives the sequence order when displaying a list of product categories.'
create(self, vals)
name_get(self)
write(self, vals)
active
Boolean
default=True
barcode_nomenclature_id
Many2one → barcode.nomenclature
default=_get_default_nomenclature
help='Defines what kind of barcodes are available and how they are assigned to products, customers and cashiers'
required=True
string='Barcodes'
args: 'barcode.nomenclature'
cash_control
Boolean
help='Check the amount of the cashbox at opening and closing.'
string='Cash Control'
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
compute='_compute_currency'
string='Currency'
args: 'res.currency'
current_session_id
Many2one → pos.session
compute='_compute_current_session'
string='Current Session'
args: 'pos.session'
current_session_state
Char
compute='_compute_current_session'
default_cashbox_lines_ids
One2many → account.cashbox.line
string='Default Balance'
args: 'account.cashbox.line', 'default_pos_id'
default_fiscal_position_id
Many2one → account.fiscal.position
string='Default Fiscal Position'
args: 'account.fiscal.position'
fiscal_position_ids
Many2many → account.fiscal.position
string='Fiscal Positions'
args: 'account.fiscal.position'
group_by
Boolean
default=True
help='Check this if you want to group the Journal Items by Product while closing a Session'
string='Group Journal Items'
group_pos_manager_id
Many2one → res.groups
default=_get_group_pos_manager
help='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_id
Many2one → res.groups
default=_get_group_pos_user
help='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'
iface_big_scrollbars
Boolean
help='For imprecise industrial touchscreens'
args: 'Large Scrollbars'
iface_cashdrawer
Boolean
help='Automatically open the cashdrawer'
string='Cashdrawer'
iface_display_categ_images
Boolean
help='The product categories will be displayed with pictures.'
string='Display Category Pictures'
iface_electronic_scale
Boolean
help='Enables Electronic Scale integration'
string='Electronic Scale'
iface_invoicing
Boolean
default=True
help='Enables invoice generation from the Point of Sale'
string='Invoicing'
iface_payment_terminal
Boolean
help='Enables Payment Terminal integration'
string='Payment Terminal'
iface_precompute_cash
Boolean
help='The payment input will behave similarily to bank payment input, and will be prefilled with the exact due amount'
string='Prefill Cash Payment'
iface_print_auto
Boolean
default=False
help='The receipt will automatically be printed at the end of each order'
string='Automatic Receipt Printing'
iface_print_skip_screen
Boolean
default=True
help='The receipt screen will be skipped if the receipt can be printed automatically.'
string='Skip Receipt Screen'
iface_print_via_proxy
Boolean
help='Bypass browser printing and prints via the hardware proxy'
string='Print via Proxy'
iface_scan_via_proxy
Boolean
help='Enable barcode scanning with a remotely connected barcode scanner'
string='Scan via Proxy'
iface_start_categ_id
Many2one → pos.category
help='The point of sale will display this product category by default. If no category is specified, all available products will be shown'
string='Start Category'
args: 'pos.category'
iface_tax_included
Boolean
help='The displayed prices will always include all taxes, even if the taxes have been setup differently'
string='Include Taxes in Prices'
iface_vkeyboard
Boolean
help='Enables an integrated Virtual Keyboard'
string='Virtual KeyBoard'
invoice_journal_id
Many2one → account.journal
default=_default_invoice_journal
domain=[('type', '=', 'sale')]
help='Accounting journal used to create invoices.'
string='Invoice Journal'
args: 'account.journal'
journal_id
Many2one → account.journal
default=_default_sale_journal
domain=[('type', '=', 'sale')]
help='Accounting journal used to post sales entries.'
string='Sale Journal'
args: 'account.journal'
journal_ids
Many2many → account.journal
domain="[('journal_user', '=', True ), ('type', 'in', ['bank', 'cash'])]"
string='Available Payment Methods'
args: 'account.journal', 'pos_config_journal_rel', 'pos_config_id', 'journal_id'
last_session_closing_cash
Float
compute='_compute_last_session'
last_session_closing_date
Date
compute='_compute_last_session'
name
Char
help='An internal identification of the point of sale'
index=True
required=True
string='Point of Sale Name'
picking_type_id
Many2one → stock.picking.type
string='Picking Type'
args: 'stock.picking.type'
pos_session_username
Char
compute='_compute_current_session_user'
pricelist_id
Many2one → product.pricelist
default=_default_pricelist
required=True
string='Pricelist'
args: 'product.pricelist'
proxy_ip
Char
help='The hostname or ip address of the hardware proxy, Will be autodetected if left empty'
size=45
string='IP Address'
receipt_footer
Text
help='A short text that will be inserted as a footer in the printed receipt'
string='Receipt Footer'
receipt_header
Text
help='A short text that will be inserted as a header in the printed receipt'
string='Receipt Header'
sequence_id
Many2one → ir.sequence
copy=False
help='This sequence is automatically created by Odoo but you can change it to customize the reference numbers of your orders.'
readonly=True
string='Order IDs Sequence'
args: 'ir.sequence'
session_ids
One2many → pos.session
string='Sessions'
args: 'pos.session', 'config_id'
stock_location_id
Many2one → stock.location
default=_get_default_location
domain=[('usage', '=', 'internal')]
required=True
string='Stock Location'
args: 'stock.location'
tip_product_id
Many2one → product.product
help='The product used to encode the customer tip. Leave empty if you do not accept tips.'
string='Tip Product'
args: 'product.product'
uuid
Char
default=<expr>
help='A globally unique identifier for this pos configuration, used to prevent conflicts in client-generated data'
readonly=True
create(self, values)
name_get(self)
open_existing_session_cb(self)
open_existing_session_cb_close(self)
open_session_cb(self)
open_ui(self)
unlink(self)
module_pos_data_drinks
Boolean
string='Import common drinks data'
module_pos_discount
Selection
help='Allows the cashier to quickly give a percentage sale discount for all the sales order to a customer'
string='Discount'
args: [(0, 'Allow discounts on order lines only'), (1, 'Allow global discounts')]
module_pos_loyalty
Boolean
help='Allows you to define a loyalty program in the point of sale, where the customers earn loyalty points and get rewards'
string='Loyalty Program'
module_pos_mercury
Selection
help='The transactions are processed by MercuryPay'
string='Credit Cards'
args: [(0, 'No credit card'), (1, 'Allows customers to pay with credit cards.')]
module_pos_reprint
Selection
string='Reprints'
args: [(0, 'No reprint'), (1, 'Allow cashier to reprint receipts')]
module_pos_restaurant
Selection
help='This module adds several restaurant features to the Point of Sale: \n\n- Bill Printing: Allows you to print a receipt before the order is paid \n\n- Bill Splitting: Allows you to split an order into different orders \n\n- Kitchen Order Printing: allows you to print orders updates to kitchen or bar printers'
string='Restaurant'
args: [(0, 'Point of sale for shops'), (1, 'Restaurant: activate table management')]
No public methods.
end_date
Datetime
default=fields.Datetime.now
required=True
pos_config_ids
Many2many → pos.config
default=<expr>
args: 'pos.config', 'pos_detail_configs'
start_date
Datetime
default=_default_start_date
required=True
generate_report(self)
discount
Float
default=5
digits=(16, 2)
required=True
string='Discount (%)'
apply_discount(self)
amount
Float
default=_default_amount
digits=(16, 2)
required=True
journal_id
Many2one → account.journal
default=_default_journal
required=True
string='Payment Mode'
args: 'account.journal'
payment_date
Date
default=<expr>
required=True
string='Payment Date'
payment_name
Char
string='Payment Reference'
check(self)
launch_payment(self)
No new fields.
Public methods (1)open_statement(self)
account_move
Many2one → account.move
copy=False
readonly=True
string='Journal Entry'
args: 'account.move'
amount_paid
Float
compute='_compute_amount_all'
digits=0
readonly=True
states={'draft': [('readonly', False)]}
string='Paid'
amount_return
Float
compute='_compute_amount_all'
digits=0
string='Returned'
amount_tax
Float
compute='_compute_amount_all'
digits=0
string='Taxes'
amount_total
Float
compute='_compute_amount_all'
digits=0
string='Total'
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
related='session_id.config_id'
string='Point of Sale'
args: 'pos.config'
date_order
Datetime
default=fields.Datetime.now
index=True
readonly=True
string='Order Date'
fiscal_position_id
Many2one → account.fiscal.position
comodel_name='account.fiscal.position'
default=<expr>
readonly=True
states={'draft': [('readonly', False)]}
string='Fiscal Position'
invoice_id
Many2one → account.invoice
copy=False
string='Invoice'
args: 'account.invoice'
lines
One2many → pos.order.line
copy=True
readonly=True
states={'draft': [('readonly', False)]}
string='Order Lines'
args: 'pos.order.line', 'order_id'
location_id
Many2one → stock.location
comodel_name='stock.location'
readonly=True
related='session_id.config_id.stock_location_id'
store=True
string='Location'
name
Char
copy=False
default='/'
readonly=True
required=True
string='Order Ref'
nb_print
Integer
copy=False
default=0
readonly=True
string='Number of Print'
note
Text
string='Internal Notes'
partner_id
Many2one → res.partner
change_default=True
index=True
states={'draft': [('readonly', False)], 'paid': [('readonly', False)]}
string='Customer'
args: 'res.partner'
picking_id
Many2one → stock.picking
copy=False
readonly=True
string='Picking'
args: 'stock.picking'
picking_type_id
Many2one → stock.picking.type
related='session_id.config_id.picking_type_id'
string='Picking Type'
args: 'stock.picking.type'
pos_reference
Char
copy=False
readonly=True
string='Receipt Ref'
pricelist_id
Many2one → product.pricelist
default=_default_pricelist
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Pricelist'
args: 'product.pricelist'
sale_journal
Many2one → account.journal
readonly=True
related='session_id.config_id.journal_id'
store=True
string='Sale Journal'
args: 'account.journal'
sequence_number
Integer
default=1
help='A session-unique sequence number for the order'
string='Sequence Number'
session_id
Many2one → pos.session
default=_default_session
domain="[('state', '=', 'opened')]"
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Session'
args: 'pos.session'
state
Selection
copy=False
default='draft'
readonly=True
args: [('draft', 'New'), ('cancel', 'Cancelled'), ('paid', 'Paid'), ('done', 'Posted'), ('invoiced', 'Invoiced')], 'Status'
statement_ids
One2many → account.bank.statement.line
readonly=True
states={'draft': [('readonly', False)]}
string='Payments'
args: 'account.bank.statement.line', 'pos_statement_id'
user_id
Many2one → res.users
comodel_name='res.users'
default=<expr>
help='Person who uses the cash register. It can be a reliever, a student or an interim employee.'
states={'done': [('readonly', True)], 'invoiced': [('readonly', True)]}
string='Salesman'
action_pos_order_cancel(self)
action_pos_order_done(self)
action_pos_order_invoice(self)
action_pos_order_paid(self)
action_view_invoice(self)
add_payment(self, data)
create(self, values)
create_from_ui(self, orders)
create_picking(self)
refund(self)
set_pack_operation_lot(self, picking=None)
test_paid(self)
unlink(self)
write(self, vals)
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
create_date
Datetime
readonly=True
string='Creation Date'
discount
Float
default=0.0
digits=0
string='Discount (%)'
name
Char
copy=False
required=True
string='Line No'
notice
Char
string='Discount Notice'
order_id
Many2one → pos.order
ondelete='cascade'
string='Order Ref'
args: 'pos.order'
pack_lot_ids
One2many → pos.pack.operation.lot
string='Lot/serial Number'
args: 'pos.pack.operation.lot', 'pos_order_line_id'
price_subtotal
Float
compute='_compute_amount_line_all'
digits=0
string='Subtotal w/o Tax'
price_subtotal_incl
Float
compute='_compute_amount_line_all'
digits=0
string='Subtotal'
price_unit
Float
digits=0
string='Unit Price'
product_id
Many2one → product.product
change_default=True
domain=[('sale_ok', '=', True)]
required=True
string='Product'
args: 'product.product'
qty
Float
default=1
digits=dp.get_precision('Product Unit of Measure')
args: 'Quantity'
tax_ids
Many2many → account.tax
readonly=True
string='Taxes'
args: 'account.tax'
tax_ids_after_fiscal_position
Many2many → account.tax
compute='_get_tax_ids_after_fiscal_position'
string='Taxes'
args: 'account.tax'
create(self, values)
lot_name
Char
order_id
Many2one → pos.order
related='pos_order_line_id.order_id'
args: 'pos.order'
pos_order_line_id
Many2one → pos.order.line
product_id
Many2one → product.product
related='pos_order_line_id.product_id'
args: 'product.product'
No public methods.
cash_control
Boolean
compute='_compute_cash_all'
string='Has Cash Control'
cash_journal_id
Many2one → account.journal
compute='_compute_cash_all'
store=True
string='Cash Journal'
args: 'account.journal'
cash_register_balance_end
Monetary
digits=0
help='Sum of opening balance and transactions.'
readonly=True
related='cash_register_id.balance_end'
string='Theoretical Closing Balance'
cash_register_balance_end_real
Monetary
help='Total of closing cash control lines.'
readonly=True
related='cash_register_id.balance_end_real'
string='Ending Balance'
cash_register_balance_start
Monetary
help='Total of opening cash control lines.'
readonly=True
related='cash_register_id.balance_start'
string='Starting Balance'
cash_register_difference
Monetary
help='Difference between the theoretical closing balance and the real closing balance.'
readonly=True
related='cash_register_id.difference'
string='Difference'
cash_register_id
Many2one → account.bank.statement
compute='_compute_cash_all'
store=True
string='Cash Register'
args: 'account.bank.statement'
cash_register_total_entry_encoding
Monetary
help='Total of all paid sale orders'
readonly=True
related='cash_register_id.total_entry_encoding'
string='Total Cash Transaction'
config_id
Many2one → pos.config
help='The physical point of sale you will use.'
index=True
required=True
string='Point of Sale'
args: 'pos.config'
currency_id
Many2one → res.currency
related='config_id.currency_id'
string='Currency'
args: 'res.currency'
journal_ids
Many2many → account.journal
readonly=True
related='config_id.journal_ids'
string='Available Payment Methods'
args: 'account.journal'
login_number
Integer
default=0
help='A sequence number that is incremented each time a user resumes the pos session'
string='Login Sequence Number'
name
Char
default='/'
readonly=True
required=True
string='Session ID'
order_ids
One2many → pos.order
string='Orders'
args: 'pos.order', 'session_id'
picking_count
Integer
compute='_compute_picking_count'
sequence_number
Integer
default=1
help='A sequence number that is incremented with each order'
string='Order Sequence Number'
start_at
Datetime
readonly=True
string='Opening Date'
state
Selection
copy=False
default='opening_control'
index=True
readonly=True
required=True
string='Status'
args: POS_SESSION_STATE
statement_ids
One2many → account.bank.statement
readonly=True
string='Bank Statement'
args: 'account.bank.statement', 'pos_session_id'
stop_at
Datetime
copy=False
readonly=True
string='Closing Date'
user_id
Many2one → res.users
default=<expr>
index=True
readonly=True
required=True
states={'opening_control': [('readonly', False)]}
string='Responsible'
args: 'res.users'
action_pos_session_close(self)
action_pos_session_closing_control(self)
action_pos_session_open(self)
action_stock_picking(self)
create(self, values)
login(self)
open_cashbox(self)
open_frontend_cb(self)
unlink(self)
available_in_pos
Boolean
default=True
help='Check if you want this product to appear in the Point of Sale'
string='Available in the Point of Sale'
pos_categ_id
Many2one → pos.category
help='Those categories are used to group similar products for point of sale.'
string='Point of Sale Category'
args: 'pos.category'
to_weight
Boolean
help='Check if the product should be weighted using the hardware scale integration'
string='To Weigh With Scale'
unlink(self)
No new fields.
Public methods (1)render_html(self, docids, data=None)
No new fields.
Public methods (2)get_sale_details(self, date_start=False, date_stop=False, configs=False)
render_html(self, docids, data=None)
average_price
Float
group_operator='avg'
readonly=True
string='Average Price'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
config_id
Many2one → pos.config
readonly=True
string='Point of Sale'
args: 'pos.config'
date
Datetime
readonly=True
string='Date Order'
delay_validation
Integer
string='Delay Validation'
invoiced
Boolean
readonly=True
journal_id
Many2one → account.journal
string='Journal'
args: 'account.journal'
location_id
Many2one → stock.location
readonly=True
string='Location'
args: 'stock.location'
nbr_lines
Integer
oldname='nbr'
readonly=True
string='# of Lines'
order_id
Many2one → pos.order
readonly=True
string='Order'
args: 'pos.order'
partner_id
Many2one → res.partner
readonly=True
string='Partner'
args: 'res.partner'
pos_categ_id
Many2one → pos.category
readonly=True
string='Public Category'
args: 'pos.category'
price_sub_total
Float
readonly=True
string='Subtotal w/o discount'
price_total
Float
readonly=True
string='Total Price'
pricelist_id
Many2one → product.pricelist
readonly=True
string='Pricelist'
args: 'product.pricelist'
product_categ_id
Many2one → product.category
readonly=True
string='Product Category'
args: 'product.category'
product_id
Many2one → product.product
readonly=True
string='Product'
args: 'product.product'
product_qty
Integer
readonly=True
string='Product Quantity'
product_tmpl_id
Many2one → product.template
readonly=True
string='Product Template'
args: 'product.template'
session_id
Many2one → pos.session
readonly=True
string='Session'
args: 'pos.session'
state
Selection
string='Status'
args: [('draft', 'New'), ('paid', 'Paid'), ('done', 'Posted'), ('invoiced', 'Invoiced'), ('cancel', 'Cancelled')]
stock_location_id
Many2one → stock.location
readonly=True
string='Warehouse'
args: 'stock.location'
total_discount
Float
readonly=True
string='Total Discount'
user_id
Many2one → res.users
readonly=True
string='Salesperson'
args: 'res.users'
init(self)
barcode
Char
help='BarCode'
oldname='ean13'
string='Barcode'
pos_order_count
Integer
compute='_compute_pos_order'
groups='point_of_sale.group_pos_user'
help='The number of point of sale orders related to this customer'
create_from_ui(self, partner)
pos_security_pin
Char
help='A Security PIN used to protect sensible functionality in the Point of Sale'
size=32
string='Security PIN'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/9.0/point_of_sale |
| VERSION | |
| VERSION | 1.0.1 |
| CATEGORY | |
| CATEGORY | Point Of Sale |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Josse Colpaert, Denis Ledoux, Fabien Meghazi, Christophe Simonis, David Monjoie, Joren Van Onder, Frederic van der Essen, Goffin Simon, Cedric Snauwaert, Frédéric van der Essen, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, Julien Legros, Richard Mathot, qdp-odoo, Géry Debongnie, Aaron Bohy, Jeremy Kersten, Martin, GitHub, Lucas Perais (lpe), Damien Bouvy, pvy, Arthur Maniet, Yannick Tivisse, qsm-odoo, Cédric Snauwaert, Martin Geubelle, Pierre Masereel, odoo-tac, Laurent Smet |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/point-of-sale |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:48:29 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - sale_stock - sale - sales_team - base - base_setup - web_kanban - web - bus - account - product - decimal_precision - report - analytic - web_tip - web_planner - procurement - stock_account - stock - barcodes |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Quick and Easy sale process
===========================
This module allows you to manage your shop sales very easily with a fully web based touchscreen interface.
It is compatible with all PC tablets and the iPad, offering multiple payment methods.
Product selection can be done in several ways:
* Using a barcode reader
* Browsing through categories of products or via a text search.
Main Features
-------------
* Fast encoding of the sale
* Choose one payment method (the quick way) or split the payment between several payment methods
* Computation of the amount of money to return
* Create and confirm the picking list automatically
* Allows the user to create an invoice automatically
* Refund previous sales
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets |
point_of_sale assets | ir.ui.view | qweb | New |
assets_backend |
hr assets | ir.ui.view | qweb | Inherits web.assets_backend |
index |
POS Index | ir.ui.view | qweb | New |
product_pos_category_form_view |
pos.category.form | pos.category | form | New |
product_pos_category_tree_view |
pos.category.tree | pos.category | tree | New |
product_template_form_view |
product.template.form.inherit | product.template | group | Inherits product.product_template_form_view |
product_template_tree_view |
product.template.tree.inherit | product.template | field | Inherits product.product_template_tree_view |
report_detailsofsales |
report_detailsofsales | ir.ui.view | qweb | New |
report_payment |
report_payment | ir.ui.view | qweb | New |
report_receipt |
report_receipt | ir.ui.view | qweb | New |
report_saleslines |
report_saleslines | ir.ui.view | qweb | New |
report_sessionsummary |
report_sessionsummary | ir.ui.view | qweb | New |
report_statement |
report_statement | ir.ui.view | qweb | New |
report_userlabel |
report_userlabel | ir.ui.view | qweb | New |
report_usersproduct |
report_usersproduct | ir.ui.view | qweb | New |
res_users_form_preference_view |
res.users.form.view | res.users | xpath | Inherits base.view_users_form_simple_modif |
res_users_form_view |
res.users.form.view | res.users | notebook | Inherits base.view_users_form |
view_account_journal_pos_user_form |
POS Journal | account.journal | xpath | Inherits account.view_account_journal_form |
view_partner_property_form |
res.partner.pos.form.inherit | res.partner | xpath | Inherits base.view_partner_form |
view_pos_config_form |
pos.config.form.view | pos.config | form | 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.tree.view | pos.config | tree | New |
view_pos_confirm |
Post Sale Journal Entries | pos.confirm | form | New |
view_pos_details |
POS Details | pos.details | form | New |
view_pos_discount |
Apply Discount | pos.discount | form | New |
view_pos_open_statement |
Open Statements | pos.open.statement | form | New |
view_pos_order_filter |
pos.order.list.select | pos.order | search | New |
view_pos_order_filter |
pos.order.list.select | pos.order | search | New |
view_pos_order_line |
Sale lines | pos.order.line | tree | New |
view_pos_order_line_form |
Sale line | pos.order.line | form | New |
view_pos_order_search |
pos.order.search.view | pos.order | search | New |
view_pos_order_tree |
Orders | pos.order | tree | New |
view_pos_order_tree_all_sales_lines |
POS Sales Lines | pos.order.line | tree | New |
view_pos_payment |
Pay Order | pos.make.payment | form | New |
view_pos_pos_form |
pos.order | pos.order | form | New |
view_pos_session_form |
pos.session.form.view | pos.session | form | New |
view_pos_session_search |
pos.session.search.view | pos.session | search | New |
view_pos_session_tree |
pos.session.tree.view | pos.session | tree | New |
view_pos_trans_user_form |
report.trans.pos.user.form | report.transaction.pos | form | 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 |
view_report_sales_by_user_pos_calendar |
report.sales.by.user.pos.calendar | report.sales.by.user.pos | calendar | New |
view_report_sales_by_user_pos_form |
report.sales.by.user.pos.form | report.sales.by.user.pos | form | New |
view_report_sales_by_user_pos_graph |
report.sales.by.user.pos.graph | report.sales.by.user.pos | graph | New |
view_report_sales_by_user_pos_month_calendar |
report.sales.by.user.pos.month.calendar | report.sales.by.user.pos.month | calendar | New |
view_report_sales_by_user_pos_month_form |
report.sales.by.user.pos.month.form | report.sales.by.user.pos.month | form | New |
view_report_sales_by_user_pos_month_graph |
report.sales.by.user.pos.month.graph | report.sales.by.user.pos.month | graph | New |
view_report_sales_by_user_pos_month_tree |
report.sales.by.user.pos.month.tree | report.sales.by.user.pos.month | tree | New |
view_report_sales_by_user_pos_tree |
report.sales.by.user.pos.tree | report.sales.by.user.pos | tree | New |
view_report_transaction_pos_calendar |
report.transaction.pos.calendar | report.transaction.pos | calendar | New |
view_report_transaction_pos_graph |
report.transaction.pos.graph | report.transaction.pos | graph | New |
view_sale_config_settings_form_pos |
pos.config.settings.form | pos.config.settings | form | New |
view_trans_pos_user_tree |
Sales by user | report.transaction.pos | tree | New |
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)render_html(self, cr, uid, ids, data=None, context=None)
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.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/8.0/point_of_sale |
| VERSION | |
| VERSION | 1.0.1 |
| CATEGORY | |
| CATEGORY | Point Of Sale |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | OpenERP SA |
| MAINTAINERS | |
| MAINTAINERS | OpenERP SA |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Atul Patel (OpenERP), Randhir Mayatra (OpenERP), Stephane Wirtel, Odoo Translation Bot, Turkesh Patel (Open ERP), Christophe Matthieu, Harry (OpenERP), Martin Trigaux, Ajay Chauhan (OpenERP), Foram Katharotiya (OpenERP), Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Tejas Tank, Thibault Delavallée, Vo Minh Thu, Josse Colpaert, Launchpad Translations on behalf of openerp, Quentin (OpenERP), Denis Ledoux, Alexis de Lattre, Fabien Meghazi, niv-openerp, ggh-openerp, Christophe Simonis, Frédéric Van der Essen, David Monjoie, Xavier Morel, Joren Van Onder, Frederic van der Essen, Goffin Simon, Anael Closson, Cedric Snauwaert, Simon Lejeune, Frédéric van der Essen, Nicolas Martinelli, Vidhin Mehta (OpenERP), Kersten Jeremy, Amit Bhavsar (Open ERP), Paramjit Singh Sahota, Nicolas Lempereur, Vidhin Mehta, Julien Legros, Richard Mathot, qdp-odoo, Niels Huylebroeck, Géry Debongnie, Darshan Kalola (OpenERP Trainee), jke-openerp, Aaron Bohy, Chandni Machchhar (OpenERP Trainee), Bharat R. Devnani (OpenERP), ged-odoo, ddm@openerp.com, Jeremy Kersten, Sylvain LE GAL, Kunal Chavda (Open ERP), Martin, ima-openerp, Gery Debongnie, Grover Menacho, Randhir Mayatra rma-openerp, Amit Vora (OpenERP Trainee), Mario Arias Badila, sgo@tinyerp.com, GitHub, Dimitri del Marmol, Lucas Perais (lpe) |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/point-of-sale |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:45:38 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - sale_stock - sale - sales_team - base - base_setup - web_kanban - web - web_kanban_sparkline - account_voucher - account - product - decimal_precision - report - analytic - board - edi - email_template - procurement - stock_account - stock - web_kanban_gauge |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Quick and Easy sale process
===========================
This module allows you to manage your shop sales very easily with a fully web based touchscreen interface.
It is compatible with all PC tablets and the iPad, offering multiple payment methods.
Product selection can be done in several ways:
* Using a barcode reader
* Browsing through categories of products or via a text search.
Main Features
-------------
* Fast encoding of the sale
* Choose one payment method (the quick way) or split the payment between several payment methods
* Computation of the amount of money to return
* Create and confirm the picking list automatically
* Allows the user to create an invoice automatically
* Refund previous sales
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
point_of_sale assets | ir.ui.view | qweb | Inherits web.assets_backend |
index |
POS Index | ir.ui.view | qweb | New |
pos_ean13_generator |
pos.ean_wizard | pos.ean_wizard | form | New |
pos_session_opening_form_view |
pos.session.opening.form.view | pos.session.opening | form | New |
product_normal_form_view_inherit_ean |
product.form.inherit.ean | product.product | field | Inherits product.product_normal_form_view |
product_pos_category_form_view |
pos.category.form | pos.category | form | New |
product_pos_category_tree_view |
pos.category.tree | pos.category | tree | New |
product_template_form_view |
product.template.form.inherit | product.template | group | Inherits product.product_template_form_view |
product_template_form_view_inherit_ean |
product.template.only.form.inherit.ean | product.template | field | Inherits product.product_template_only_form_view |
report_detailsofsales |
report_detailsofsales | ir.ui.view | qweb | New |
report_payment |
report_payment | ir.ui.view | qweb | New |
report_receipt |
report_receipt | ir.ui.view | qweb | New |
report_saleslines |
report_saleslines | ir.ui.view | qweb | New |
report_sessionsummary |
report_sessionsummary | ir.ui.view | qweb | New |
report_statement |
report_statement | ir.ui.view | qweb | New |
report_usersproduct |
report_usersproduct | ir.ui.view | qweb | New |
res_users_form_preference_view |
res.users.form.view | res.users | xpath | Inherits base.view_users_form_simple_modif |
res_users_form_view |
res.users.form.view | res.users | notebook | Inherits base.view_users_form |
view_account_journal_pos_user_form |
POS Journal | account.journal | xpath | Inherits account.view_account_journal_form |
view_cash_statement_pos_tree |
account.bank.statement.tree | account.bank.statement | field | Inherits account.view_cash_statement_tree |
view_partner_property_form |
res.partner.product.property.form.inherit | res.partner | notebook | Inherits base.view_partner_form |
view_pos_config_form |
pos.config.form.view | pos.config | form | New |
view_pos_config_search |
pos.config.search.view | pos.config | search | New |
view_pos_config_tree |
pos.config.tree.view | pos.config | tree | New |
view_pos_confirm |
Post Sale Journal Entries | pos.confirm | form | New |
view_pos_confirm_cash_statement_filter |
account.bank.statement.inherit2 | account.bank.statement | search | New |
view_pos_details |
POS Details | pos.details | form | New |
view_pos_discount |
Apply Discount | pos.discount | form | New |
view_pos_open_cash_statement_filter |
account.bank.statement.inherit | account.bank.statement | search | New |
view_pos_open_statement |
Open Statements | pos.open.statement | form | New |
view_pos_order_filter |
pos.order.list.select | pos.order | search | New |
view_pos_order_filter |
pos.order.list.select | pos.order | search | New |
view_pos_order_line |
Sale lines | pos.order.line | tree | New |
view_pos_order_line_form |
Sale line | pos.order.line | form | New |
view_pos_order_tree |
Orders | pos.order | tree | New |
view_pos_order_tree_all_sales_lines |
POS Sales Lines | pos.order.line | tree | New |
view_pos_payment |
Pay Order | pos.make.payment | form | New |
view_pos_pos_form |
pos.order | pos.order | form | New |
view_pos_session_form |
pos.session.form.view | pos.session | form | New |
view_pos_session_search |
pos.session.search.view | pos.session | search | New |
view_pos_session_tree |
pos.session.tree.view | pos.session | tree | New |
view_pos_trans_user_form |
report.trans.pos.user.form | report.transaction.pos | form | New |
view_report_pos_order_graph |
report.pos.order.graph | report.pos.order | graph | New |
view_report_pos_order_search |
report.pos.order.search | report.pos.order | search | New |
view_report_sales_by_user_pos_calendar |
report.sales.by.user.pos.calendar | report.sales.by.user.pos | calendar | New |
view_report_sales_by_user_pos_form |
report.sales.by.user.pos.form | report.sales.by.user.pos | form | New |
view_report_sales_by_user_pos_graph |
report.sales.by.user.pos.graph | report.sales.by.user.pos | graph | New |
view_report_sales_by_user_pos_month_calendar |
report.sales.by.user.pos.month.calendar | report.sales.by.user.pos.month | calendar | New |
view_report_sales_by_user_pos_month_form |
report.sales.by.user.pos.month.form | report.sales.by.user.pos.month | form | New |
view_report_sales_by_user_pos_month_graph |
report.sales.by.user.pos.month.graph | report.sales.by.user.pos.month | graph | New |
view_report_sales_by_user_pos_month_tree |
report.sales.by.user.pos.month.tree | report.sales.by.user.pos.month | tree | New |
view_report_sales_by_user_pos_tree |
report.sales.by.user.pos.tree | report.sales.by.user.pos | tree | New |
view_report_transaction_pos_calendar |
report.transaction.pos.calendar | report.transaction.pos | calendar | New |
view_report_transaction_pos_graph |
report.transaction.pos.graph | report.transaction.pos | graph | New |
view_trans_pos_user_tree |
Sales by user | report.transaction.pos | tree | New |
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)render_html(self, cr, uid, ids, data=None, context=None)
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.
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
pos_category_form_view |
pos.category.form | pos.category | form | New |
pos_category_tree_view |
pos.category.tree | pos.category | tree | New |
pos_ean13_generator |
pos.ean_wizard | pos.ean_wizard | form | New |
pos_payment_report_user_form |
pos.payment.report.user.form | pos.payment.report.user | form | New |
pos_return_form |
pos.return | pos.return | form | New |
pos_return_form_in |
pos.return.memory | pos.return.memory | form | New |
pos_return_tree_in |
pos.return.memory | pos.return.memory | tree | New |
pos_session_opening_form_view |
pos.session.opening.form.view | pos.session.opening | form | New |
product_normal_form_view |
product.normal.form.inherit | product.product | group | Inherits stock.view_normal_procurement_locations_form |
res_users_form_preference_view |
res.users.form.view | res.users | xpath | Inherits base.view_users_form_simple_modif |
res_users_form_view |
res.users.form.view | res.users | notebook | Inherits base.view_users_form |
view_account_journal_pos_user_form |
POS Journal | account.journal | xpath | Inherits account.view_account_journal_form |
view_box_entries |
Box Entries | pos.box.entries | form | New |
view_cash_statement_pos_tree |
account.bank.statement.tree | account.bank.statement | field | Inherits account.view_cash_statement_tree |
view_partner_property_form |
res.partner.product.property.form.inherit | res.partner | notebook | Inherits base.view_partner_form |
view_pos_box_out |
Box Out | pos.box.out | form | New |
view_pos_config_form |
pos.config.form.view | pos.config | form | New |
view_pos_config_search |
pos.config.search.view | pos.config | search | New |
view_pos_config_tree |
pos.config.tree.view | pos.config | tree | New |
view_pos_confirm |
Post Sale Journal Entries | pos.confirm | form | New |
view_pos_confirm_cash_statement_filter |
account.bank.statement.inherit2 | account.bank.statement | search | New |
view_pos_details |
POS Details | pos.details | form | New |
view_pos_discount |
Apply Discount | pos.discount | form | New |
view_pos_open_cash_statement_filter |
account.bank.statement.inherit | account.bank.statement | search | New |
view_pos_open_statement |
Open Statements | pos.open.statement | form | New |
view_pos_order_filter |
pos.order.list.select | pos.order | search | New |
view_pos_order_filter |
pos.order.list.select | pos.order | search | New |
view_pos_order_line |
Sale lines | pos.order.line | tree | New |
view_pos_order_line_form |
Sale line | pos.order.line | form | New |
view_pos_order_tree |
Orders | pos.order | tree | New |
view_pos_order_tree_all_sales_lines |
POS Sales Lines | pos.order.line | tree | New |
view_pos_payment |
Pay Order | pos.make.payment | form | New |
view_pos_payment_report |
Payment Report | pos.payment.report | form | New |
view_pos_payment_report |
Payment Report | pos.payment.report | form | New |
view_pos_pos_form |
pos.order | pos.order | form | New |
view_pos_receipt |
Receipt | pos.receipt | form | New |
view_pos_sale_user |
Sale By User | pos.sale.user | form | New |
view_pos_session_form |
pos.session.form.view | pos.session | form | New |
view_pos_session_search |
pos.session.search.view | pos.session | search | New |
view_pos_session_tree |
pos.session.tree.view | pos.session | tree | New |
view_pos_trans_user_form |
report.trans.pos.user.form | report.transaction.pos | form | New |
view_report_pos_order_search |
report.pos.order.search | report.pos.order | search | New |
view_report_pos_order_tree |
report.pos.order.tree | report.pos.order | tree | New |
view_report_sales_by_margin_pos_calendar |
report.sales.by.margin.pos.calendar | report.sales.by.margin.pos | calendar | New |
view_report_sales_by_margin_pos_form |
report.sales.by.margin.pos.form | report.sales.by.margin.pos | form | New |
view_report_sales_by_margin_pos_graph |
report.sales.by.margin.pos.graph | report.sales.by.margin.pos | graph | New |
view_report_sales_by_margin_pos_month_calendar |
report.sales.by.margin.pos.month.calendar | report.sales.by.margin.pos.month | calendar | New |
view_report_sales_by_margin_pos_month_form |
report.sales.by.margin.pos.month.form | report.sales.by.margin.pos.month | form | New |
view_report_sales_by_margin_pos_month_graph |
report.sales.by.margin.pos.month.graph | report.sales.by.margin.pos.month | graph | New |
view_report_sales_by_margin_pos_month_tree |
report.sales.by.margin.pos.month.tree | report.sales.by.margin.pos.month | tree | New |
view_report_sales_by_margin_pos_tree |
report.sales.by.margin.pos.tree | report.sales.by.margin.pos | tree | New |
view_report_sales_by_user_pos_calendar |
report.sales.by.user.pos.calendar | report.sales.by.user.pos | calendar | New |
view_report_sales_by_user_pos_form |
report.sales.by.user.pos.form | report.sales.by.user.pos | form | New |
view_report_sales_by_user_pos_graph |
report.sales.by.user.pos.graph | report.sales.by.user.pos | graph | New |
view_report_sales_by_user_pos_month_calendar |
report.sales.by.user.pos.month.calendar | report.sales.by.user.pos.month | calendar | New |
view_report_sales_by_user_pos_month_form |
report.sales.by.user.pos.month.form | report.sales.by.user.pos.month | form | New |
view_report_sales_by_user_pos_month_graph |
report.sales.by.user.pos.month.graph | report.sales.by.user.pos.month | graph | New |
view_report_sales_by_user_pos_month_tree |
report.sales.by.user.pos.month.tree | report.sales.by.user.pos.month | tree | New |
view_report_sales_by_user_pos_tree |
report.sales.by.user.pos.tree | report.sales.by.user.pos | tree | New |
view_report_transaction_pos_calendar |
report.transaction.pos.calendar | report.transaction.pos | calendar | New |
view_report_transaction_pos_graph |
report.transaction.pos.graph | report.transaction.pos | graph | New |
view_trans_pos_user_tree |
Sales by user | report.transaction.pos | tree | New |
No models found for this module.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/6.1/point_of_sale |
| VERSION | |
| VERSION | 1.0.1 |
| CATEGORY | |
| CATEGORY | Point Of Sale |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | OpenERP SA |
| MAINTAINERS | |
| MAINTAINERS | OpenERP SA |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Jagdish Panchal (Open ERP), Rucha (Open ERP), Stephane Wirtel, Numerigraphe - Lionel Sausin, Harry (OpenERP), Fabien Pinckaers, Antony Lesuisse, Bharat Devnani (OpenERP), Meera Trambadia (OpenERP), Olivier Dony, Thibault Delavallée, Vo Minh Thu, pso (OpenERP), Launchpad Translations on behalf of openerp, Quentin (OpenERP), vro, olt@tinyerp.com, niv-openerp, Xavier ALT, Christophe Simonis, Ujjvala Collins (OpenERP), Xavier Morel, Khushboo Bhatt (Open ERP), Hardik Ansodariya, Amit (OpenERP), Minh Tran, Thibault Francois, Stefan Rijnhart, vishmita, Carlos Vásquez, Husen Daudi, Els Van Vossel, Israel Fermin Montilla, Rifakat Haradwala (Open ERP), Hardik Ansodariy (OpenERP), rch-openerp, Bharat (OpenERP), ARA (OpenERP), aag (OpenERP), ron@tinyerp.com, mtr, fp, qdp-launchpad@tinyerp.com, AMP (OpenERP), ksa (OpenERP), ado, Mustufa Rangwala, Naresh (OpenERP) |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:41:35 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - sale - stock - product - base - process - decimal_precision - account - base_setup - analytic - board - edi - email_template - base_tools - procurement |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
This module provides a quick and easy sale process.
===================================================
Main features :
---------------
* Fast encoding of the sale.
* Allow to choose one payment mode (the quick way) or to split the payment between several payment mode.
* Computation of the amount of money to return.
* Create and confirm picking list automatically.
* Allow the user to create invoice automatically.
* Allow to refund former sales.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
pos_category_form_view |
pos.category.form | pos.category | form | New |
pos_category_tree_view |
pos.category.tree | pos.category | tree | New |
pos_payment_report_user_form |
pos.payment.report.user.form | pos.payment.report.user | form | New |
pos_return_form |
pos.return | pos.return | form | New |
pos_return_form_in |
pos.return.memory | pos.return.memory | form | New |
pos_return_tree_in |
pos.return.memory | pos.return.memory | tree | New |
product_normal_form_pos_view |
product.normal.pos.form.inherit | product.product | group | Inherits product.product_normal_form_view |
product_normal_form_view |
product.normal.form.inherit | product.product | field | Inherits product.product_normal_form_view |
view_account_journal_pos_user_form |
POS Journal | account.journal | xpath | Inherits account.view_account_journal_form |
view_box_entries |
Box Entries | pos.box.entries | form | New |
view_cash_statement_pos_tree |
account.bank.statement.tree | account.bank.statement | field | Inherits account.view_cash_statement_tree |
view_pos_box_out |
Box Out | pos.box.out | form | New |
view_pos_close_statement |
Close Statements | pos.close.statement | form | New |
view_pos_confirm |
Post Sale Journal Entries | pos.confirm | form | New |
view_pos_confirm_cash_statement_filter |
account.bank.statement.inherit2 | account.bank.statement | search | New |
view_pos_details |
POS Details | pos.details | form | New |
view_pos_discount |
Apply Discount | pos.discount | form | New |
view_pos_open_cash_statement_filter |
account.bank.statement.inherit | account.bank.statement | search | New |
view_pos_open_statement |
Open Statements | pos.open.statement | form | New |
view_pos_order_filter |
pos.order.list.select | pos.order | search | New |
view_pos_order_line |
Sale lines | pos.order.line | tree | New |
view_pos_order_line_form |
Sale line | pos.order.line | form | New |
view_pos_order_tree |
Sales | pos.order | tree | New |
view_pos_order_tree_all_sales_lines |
POS Sales Lines | pos.order.line | tree | New |
view_pos_payment |
Add payment : | pos.make.payment | form | New |
view_pos_payment_report |
Pyament Report | pos.payment.report | form | New |
view_pos_payment_report |
Payment Report | pos.payment.report | form | New |
view_pos_pos_form |
pos.order | pos.order | form | New |
view_pos_receipt |
Receipt | pos.receipt | form | New |
view_pos_sale_user |
Sale By User | pos.sale.user | form | New |
view_pos_trans_user_form |
report.trans.pos.user.form | report.transaction.pos | form | New |
view_report_cash_register_search |
report.cash.register.search | report.cash.register | search | New |
view_report_cash_register_tree |
report.cash.register.tree | report.cash.register | tree | New |
view_report_pos_order_search |
report.pos.order.search | report.pos.order | search | New |
view_report_pos_order_tree |
report.pos.order.tree | report.pos.order | tree | New |
view_report_sales_by_margin_pos_calendar |
report.sales.by.margin.pos.calendar | report.sales.by.margin.pos | calendar | New |
view_report_sales_by_margin_pos_form |
report.sales.by.margin.pos.form | report.sales.by.margin.pos | form | New |
view_report_sales_by_margin_pos_graph |
report.sales.by.margin.pos.graph | report.sales.by.margin.pos | graph | New |
view_report_sales_by_margin_pos_month_calendar |
report.sales.by.margin.pos.month.calendar | report.sales.by.margin.pos.month | calendar | New |
view_report_sales_by_margin_pos_month_form |
report.sales.by.margin.pos.month.form | report.sales.by.margin.pos.month | form | New |
view_report_sales_by_margin_pos_month_graph |
report.sales.by.margin.pos.month.graph | report.sales.by.margin.pos.month | graph | New |
view_report_sales_by_margin_pos_month_tree |
report.sales.by.margin.pos.month.tree | report.sales.by.margin.pos.month | tree | New |
view_report_sales_by_margin_pos_tree |
report.sales.by.margin.pos.tree | report.sales.by.margin.pos | tree | New |
view_report_sales_by_user_pos_calendar |
report.sales.by.user.pos.calendar | report.sales.by.user.pos | calendar | New |
view_report_sales_by_user_pos_form |
report.sales.by.user.pos.form | report.sales.by.user.pos | form | New |
view_report_sales_by_user_pos_graph |
report.sales.by.user.pos.graph | report.sales.by.user.pos | graph | New |
view_report_sales_by_user_pos_month_calendar |
report.sales.by.user.pos.month.calendar | report.sales.by.user.pos.month | calendar | New |
view_report_sales_by_user_pos_month_form |
report.sales.by.user.pos.month.form | report.sales.by.user.pos.month | form | New |
view_report_sales_by_user_pos_month_graph |
report.sales.by.user.pos.month.graph | report.sales.by.user.pos.month | graph | New |
view_report_sales_by_user_pos_month_tree |
report.sales.by.user.pos.month.tree | report.sales.by.user.pos.month | tree | New |
view_report_sales_by_user_pos_tree |
report.sales.by.user.pos.tree | report.sales.by.user.pos | tree | New |
view_report_transaction_pos_calendar |
report.transaction.pos.calendar | report.transaction.pos | calendar | New |
view_report_transaction_pos_graph |
report.transaction.pos.graph | report.transaction.pos | graph | New |
view_trans_pos_user_tree |
Sales by user | report.transaction.pos | tree | New |
No models found for this module.