POS cash in-out reason

pos_cash_move_reason
REPOSITORY
REPOSITORYOCA/pos
GIT
GIThttps://github.com/OCA/pos.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/pos/tree/17.0/pos_cash_move_reason
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYPoint Of sale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), GRAP, ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), GRAP, ACSONE SA/NV
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, chaule97
WEBSITE
WEBSITEhttps://github.com/OCA/pos
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:02
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - point_of_sale
    - stock_account
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - account
    - onboarding
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allow to define some reasons for the functionality of "Put
Money In" and "Take Money Out" available in point of sale session.

So, with this module it's possible to impact directly an expense or
income account which is defined on the related reasons and create
according accounting entries.

**Typical Use Case (not exhaustive)**

- You want to track **Bank deposit** moves, using an intermediate bank
  account named 'Cash Awaiting Bank Deposit'. (In France, for instance,
  "581 - Espèce en attente d'encaissement")
- You want to allow payments from Cash Journal to pay recurring little
  expenses. (Gasoline, parking meter, etc.)

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_pos_move_reason_form pos.move.reason.form (in pos_cash_move_reason) pos.move.reason form New
view_pos_move_reason_tree pos.move.reason.tree (in pos_cash_move_reason) pos.move.reason tree New
view_pos_session_form pos.session.form (in pos_cash_move_reason) pos.session xpath Inherits point_of_sale.view_pos_session_form
view_wizard_pos_move_reason_form wizard.pos.move.reason form New
Models touched (3)

New fields (8)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=_default_company_id required=True string='Company'
  • expense_account_id Many2one → account.account
    comodel_name='account.account' string='Expense Account'
  • income_account_id Many2one → account.account
    comodel_name='account.account' string='Income Account'
  • is_expense_reason Boolean
    default=True
  • is_income_reason Boolean
    default=True
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' default=_default_journal_ids string='Accounting Journals'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (2)
  • display_move_reason_expense Boolean
    compute='_compute_display_move_reason'
  • display_move_reason_income Boolean
    compute='_compute_display_move_reason'
Public methods (2)
  • button_move_expense(self)
  • button_move_income(self)

New fields (7)
  • amount Float
    required=True
  • journal_id Many2one → account.journal
    comodel_name='account.journal' domain="[('id', 'in', journal_ids)]" required=True string='Journal'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' related='move_reason_id.journal_ids'
  • move_reason_id Many2one → pos.move.reason
    comodel_name='pos.move.reason' required=True string='Move Reason'
  • move_type Selection
    default=_default_move_type selection=_MOVE_TYPE_SELECTION
  • name Char
    required=True string='Reason'
  • session_id Many2one → pos.session
    comodel_name='pos.session' default=_default_session_id readonly=True required=True string='Current Session'
Public methods (3)
  • apply(self)
  • onchange_move_type(self)
    @api.onchange('move_type')
  • onchange_reason(self)
    @api.onchange('move_reason_id')
REPOSITORY
REPOSITORYOCA/pos
GIT
GIThttps://github.com/OCA/pos.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/pos/tree/16.0/pos_cash_move_reason
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYPoint Of sale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), GRAP, ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), GRAP, ACSONE SA/NV
COMMITTERS
COMMITTERSSylvain LE GAL, OCA-git-bot, Quentin Dupont, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/pos
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:40
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - point_of_sale
    - stock_account
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - account
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_pos_move_reason_form pos.move.reason.form (in pos_cash_move_reason) pos.move.reason form New
view_pos_move_reason_tree pos.move.reason.tree (in pos_cash_move_reason) pos.move.reason tree New
view_pos_session_form pos.session.form (in pos_cash_move_reason) pos.session xpath Inherits point_of_sale.view_pos_session_form
view_wizard_pos_move_reason_form wizard.pos.move.reason form New
Models touched (3)

New fields (8)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=_default_company_id required=True string='Company'
  • expense_account_id Many2one → account.account
    comodel_name='account.account' string='Expense Account'
  • income_account_id Many2one → account.account
    comodel_name='account.account' string='Income Account'
  • is_expense_reason Boolean
    default=True
  • is_income_reason Boolean
    default=True
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' default=_default_journal_ids string='Accounting Journals'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (2)
  • display_move_reason_expense Boolean
    compute='_compute_display_move_reason'
  • display_move_reason_income Boolean
    compute='_compute_display_move_reason'
Public methods (2)
  • button_move_expense(self)
  • button_move_income(self)

New fields (7)
  • amount Float
    required=True
  • journal_id Many2one → account.journal
    comodel_name='account.journal' domain="[('id', 'in', journal_ids)]" required=True string='Journal'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' related='move_reason_id.journal_ids'
  • move_reason_id Many2one → pos.move.reason
    comodel_name='pos.move.reason' required=True string='Move Reason'
  • move_type Selection
    default=_default_move_type selection=_MOVE_TYPE_SELECTION
  • name Char
    required=True string='Reason'
  • session_id Many2one → pos.session
    comodel_name='pos.session' default=_default_session_id readonly=True required=True string='Current Session'
Public methods (3)
  • apply(self)
  • onchange_move_type(self)
    @api.onchange('move_type')
  • onchange_reason(self)
    @api.onchange('move_reason_id')
REPOSITORY
REPOSITORYOCA/pos
GIT
GIThttps://github.com/OCA/pos.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/pos/tree/15.0/pos_cash_move_reason
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYPoint Of sale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), GRAP, ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), GRAP, ACSONE SA/NV
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, nikolausweingartmair, Nikolaus Weingartmair
WEBSITE
WEBSITEhttps://github.com/OCA/pos
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:29
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - point_of_sale
    - stock_account
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - account
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_pos_move_reason_form pos.move.reason.form (in pos_cash_move_reason) pos.move.reason form New
view_pos_move_reason_tree pos.move.reason.tree (in pos_cash_move_reason) pos.move.reason tree New
view_pos_session_form pos.session.form (in pos_cash_move_reason) pos.session xpath Inherits point_of_sale.view_pos_session_form
view_wizard_pos_move_reason_form wizard.pos.move.reason form New
Models touched (3)

New fields (8)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=_default_company_id required=True string='Company'
  • expense_account_id Many2one → account.account
    comodel_name='account.account' string='Expense Account'
  • income_account_id Many2one → account.account
    comodel_name='account.account' string='Income Account'
  • is_expense_reason Boolean
    default=True
  • is_income_reason Boolean
    default=True
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' default=_default_journal_ids string='Accounting Journals'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (2)
  • display_move_reason_expense Boolean
    compute='_compute_display_move_reason'
  • display_move_reason_income Boolean
    compute='_compute_display_move_reason'
Public methods (2)
  • button_move_expense(self)
  • button_move_income(self)

New fields (8)
  • amount Float
    required=True
  • journal_id Many2one → account.journal
    comodel_name='account.journal' domain="[('id', 'in', journal_ids)]" required=True string='Journal'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' related='move_reason_id.journal_ids'
  • move_reason_id Many2one → pos.move.reason
    comodel_name='pos.move.reason' required=True string='Move Reason'
  • move_type Selection
    default=_default_move_type selection=_MOVE_TYPE_SELECTION
  • name Char
    required=True string='Reason'
  • session_id Many2one → pos.session
    comodel_name='pos.session' default=_default_session_id readonly=True required=True string='Current Session'
  • statement_id Many2one → account.bank.statement
    comodel_name='account.bank.statement' compute='_compute_statement_id' string='Bank Statement'
Public methods (3)
  • apply(self)
  • onchange_move_type(self)
    @api.onchange('move_type')
  • onchange_reason(self)
    @api.onchange('move_reason_id')
REPOSITORY
REPOSITORYOCA/pos
GIT
GIThttps://github.com/OCA/pos.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/pos/tree/14.0/pos_cash_move_reason
VERSION
VERSION 1.1.2
CATEGORY
CATEGORYPoint Of sale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), GRAP, ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), GRAP, ACSONE SA/NV
COMMITTERS
COMMITTERSOCA Transbot, oca-travis, Weblate, OCA-git-bot, François Honoré, David, oca-ci, dsolanki, Ilyas, aromera, Ashish Hirpara
WEBSITE
WEBSITEhttps://github.com/OCA/pos
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:50
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - point_of_sale
    - stock_account
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - account
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_pos_move_reason_form pos.move.reason.form (in pos_cash_move_reason) pos.move.reason form New
view_pos_move_reason_tree pos.move.reason.tree (in pos_cash_move_reason) pos.move.reason tree New
view_pos_session_form pos.session.form (in pos_cash_move_reason) pos.session xpath Inherits point_of_sale.view_pos_session_form
view_wizard_pos_move_reason_form wizard.pos.move.reason form New
Models touched (3)

New fields (9)
  • active Boolean
    default=True string='Active'
  • allowed_pos_ids Many2many → pos.config
    string='Allowed POS' args: 'pos.config'
  • company_id Many2one → res.company
    comodel_name='res.company' default=_default_company_id required=True string='Company'
  • expense_account_id Many2one → account.account
    comodel_name='account.account' string='Expense Account'
  • income_account_id Many2one → account.account
    comodel_name='account.account' string='Income Account'
  • is_expense_reason Boolean
    default=True string='Is Expense Reason'
  • is_income_reason Boolean
    default=True string='Is Income Reason'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' default=_default_journal_ids string='Accounting Journals'
  • name Char
    required=True string='Name'
Public methods (0)

No public methods.

New fields (2)
  • display_move_reason_expense Boolean
    compute='_compute_display_move_reason'
  • display_move_reason_income Boolean
    compute='_compute_display_move_reason'
Public methods (2)
  • button_move_expense(self)
  • button_move_income(self)

New fields (8)
  • amount Float
    required=True string='Amount'
  • journal_id Many2one → account.journal
    comodel_name='account.journal' domain="[('id', 'in', journal_ids)]" required=True string='Journal'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' related='move_reason_id.journal_ids'
  • move_reason_id Many2one → pos.move.reason
    comodel_name='pos.move.reason' required=True string='Move Reason'
  • move_type Selection
    default=_default_move_type selection=_MOVE_TYPE_SELECTION string='Move type'
  • name Char
    required=True string='Reason'
  • session_id Many2one → pos.session
    comodel_name='pos.session' default=_default_session_id readonly=True required=True string='Current Session'
  • statement_id Many2one → account.bank.statement
    comodel_name='account.bank.statement' compute='_compute_statement_id' string='Bank Statement'
Public methods (3)
  • apply(self)
  • onchange_move_type(self)
    @api.onchange('move_type')
  • onchange_reason(self)
    @api.onchange('move_reason_id')
REPOSITORY
REPOSITORYOCA/pos
GIT
GIThttps://github.com/OCA/pos.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/pos/tree/12.0/pos_cash_move_reason
VERSION
VERSION 3.2.1
CATEGORY
CATEGORYPoint Of sale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), GRAP, ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), GRAP, ACSONE SA/NV
COMMITTERS
COMMITTERSSylvain LE GAL, Ivàn Todorovich, OCA Transbot, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/pos
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:13
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - point_of_sale
    - stock_account
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes
    - account
    - analytic
    - portal
    - http_routing
    - digest
    - web_editor
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_pos_move_reason_form pos.move.reason form New
view_pos_move_reason_tree pos.move.reason tree New
view_pos_session_form pos.session xpath Inherits point_of_sale.view_pos_session_form
view_wizard_pos_move_reason_form wizard.pos.move.reason form New
Models touched (3)

New fields (8)
  • active Boolean
    default=True string='Active'
  • company_id Many2one → res.company
    comodel_name='res.company' default=_default_company_id required=True string='Company'
  • expense_account_id Many2one → account.account
    comodel_name='account.account' string='Expense Account'
  • income_account_id Many2one → account.account
    comodel_name='account.account' string='Income Account'
  • is_expense_reason Boolean
    default=True string='Is Expense Reason'
  • is_income_reason Boolean
    default=True string='Is Income Reason'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' default=_default_journal_ids domain="[('journal_user', '=', True)]" string='Accounting Journals'
  • name Char
    required=True string='Name'
Public methods (0)

No public methods.

New fields (4)
  • display_move_reason_expense Boolean
    compute='_compute_display_move_reason'
  • display_move_reason_income Boolean
    compute='_compute_display_move_reason'
  • move_reason_statement_line_ids One2many → account.bank.statement.line
    comodel_name='account.bank.statement.line' compute='_compute_move_reason_statement_ids' string='Cash Moves'
  • move_reason_statement_line_qty Integer
    compute='_compute_move_reason_statement_ids' string='Cash Moves Quantity'
Public methods (2)
  • button_move_expense(self)
  • button_move_income(self)

New fields (8)
  • amount Float
    required=True string='Amount'
  • journal_id Many2one → account.journal
    comodel_name='account.journal' domain="[('id', 'in', journal_ids)]" required=True string='Journal'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' related='move_reason_id.journal_ids'
  • move_reason_id Many2one → pos.move.reason
    comodel_name='pos.move.reason' required=True string='Move Reason'
  • move_type Selection
    default=_default_move_type selection=_MOVE_TYPE_SELECTION string='Move type'
  • name Char
    required=True string='Reason'
  • session_id Many2one → pos.session
    comodel_name='pos.session' default=_default_session_id readonly=True required=True string='Current Session'
  • statement_id Many2one → account.bank.statement
    comodel_name='account.bank.statement' compute='_compute_statement_id' string='Bank Statement'
Public methods (3)
  • apply(self)
    @api.multi
  • onchange_move_type(self)
    @api.onchange('move_type')
  • onchange_reason(self)
    @api.onchange('move_reason_id')
REPOSITORY
REPOSITORYOCA/pos
GIT
GIThttps://github.com/OCA/pos.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/pos/tree/8.0/pos_cash_move_reason
VERSION
VERSION 2.0.0
CATEGORY
CATEGORYPOS
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), GRAP, ACSONE SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), GRAP, ACSONE SA/NV
COMMITTERS
COMMITTERSSylvain LE GAL, Cédric Pigeon, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis
WEBSITE
WEBSITEhttp://acsone.eu
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:20
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - point_of_sale
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - 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

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
cash_box_in_form cash.box.in xpath Inherits account.cash_box_in_form
cash_box_out_form cash.box.out xpath Inherits account.cash_box_out_form
Models touched (0)

No models found for this module.