OdooWiki OCA HUB

Point Of Sale - Multiple Cash Control

pos_multiple_control folder_open OCA/pos open_in_new
Point of Sale License: AGPL-3

This module extends the functionality of the point of sale by allowing a better control at the closing of the session.

  • Show differences for all statements chosen (see config part)
  • Allow user to control each statement. (not only the cash statement, by default) and change his starting and ending balance

The cashbox lines are recorded and can be found later.

  • Quickly solve differences (we can set an absolute limit), thanks to pos_move_reason

See this gif where where we set ending balance with difference, solve it and close session :

As the verification is more complete, allow the user to reopen a new session, if the first one is in a closed state.

Extra checks are done, to prevent user errors:

  • It is not possible to click on the button 'Close Session' if there are some draft orders.

auto_awesome What this module does

AI-generated from the code · Odoo 12.0

Extends Point of Sale session closing so every payment journal marked for control must have a matching counted balance before the session can be validated, with a cash-count wizard and an automatic difference solver.

This module strengthens the closing of a Point of Sale session. On each bank or cash journal you can tick "POS Journal Control" so that its statement is checked at closing; a default cashbox pattern can also be set on the journal.

On the session form you get a summary table of all statements, showing opening balance, transactions, real closing balance and the difference. Buttons let you set the opening and ending balance through a cash-count wizard where you enter the number of coins and bills; the counted cashbox is saved on the statement for later reference.

Business rules added: - You cannot close a session while draft orders remain. - You cannot validate a session if a controlled journal still shows a non-zero difference; you must correct its starting or ending balance. - Only one active session per user and per point of sale is allowed.

If the difference is small enough (below the limit set on the POS configuration) and a move reason is configured, an "automatic solve" button appears to book the difference as income or expense. Once a session is closed, a "New Session" button lets you reopen one directly.

Depends on

Required by other modules

Models and fields (9)
  • pos.config · extends an existing modelautosolve_limit (Autosolve limit), autosolve_pos_move_reason (Autosolve pos move reason)
  • pos.session · extends an existing modelstatement_ids, control_statement_ids (Control statements), summary_statement_ids (Summary statements), control_register_balance (Real Closing Balances), control_register_difference (Total difference), control_register_balance_end (Theoretical Closing Balances), control_register_balance_start (Opening Balances), control_register_total_entry_encoding (Transactions)
  • account.journal · extends an existing modelpos_control (POS Journal Control), cashbox_default (Cashbox Defaut)
  • account.cashbox.line · extends an existing modelnumber, balance_moment (Balance moment)
  • wizard.update.cashbox · new modeltotal (Total), cashbox_lines_ids (Cashbox Lines)
  • account.bank.statement · extends an existing modelcashbox_ending (Cashbox end), is_pos_control (Pos control Bank statement), control_balance (Controled Balance), cashbox_starting (Cashbox start), display_autosolve (Display autosolve), pos_session_state (Pos session state), control_difference (Control Difference)
  • wizard.update.cashbox.line · new modelnumber (Number of Coins/Bills), wiz_id (Wizard), subtotal (Subtotal), cashbox_id (Cashbox), coin_value (Coin/Bill Value), currency_id, balance_moment (Balance moment)
  • wizard.update.bank.statement · new modelname, journal_id, session_id (Current Session), balance_end (Computed Balance), currency_id, statement_id, balance_start (Starting Balance), cashbox_lines, balance_moment (Balance moment), balance_end_real (Real End Balance), balance_start_real (Real Start Balance), total_entry_encoding
  • account.bank.statement.cashbox · extends an existing modelname (Name), is_pattern (Is a selectable pattern)

Text generated by AI (DeepSeek) from reading the Odoo 12.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub

Availability by version

Reviewed: 2026-11-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 1 confirmed, 8 with no information of 9 versions.

terminal Installation and usage

OCA documentation · Odoo 12.0

To configure this module, you need to:

Configure the journals you want to control in your point of sale (POS)

  • Go to Invoicing / Configuration / Journals / Journals
  • Check the box 'POS Journal Control' if you want to enable this feature for this journal
  • Unchecked journal will be in grey
  • Configure a Cashbox default if you want Odoo give by default lines when changing balance

Configure your POS configuration

  • Go to Point of Sale / Configuration / Point of Sale /
  • Choose your Payments methods (1)
  • Check Cash Control (2)
  • (optional) Choose a "pos move reason" to ausolve difference (3) (see pos_move_reason module for more details)
  • (optional) Choose a limit to allow or not the user to autosolve control difference in pos - Set 0 if you don't want any limit. (4)

No verified information in OCA: Installation, Usage.

info

Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.