From 593884ab7b99f97d3de184896679d91b7305aef5 Mon Sep 17 00:00:00 2001 From: Suherdy Yacob Date: Wed, 3 Jun 2026 08:42:58 +0700 Subject: [PATCH] feat: add configurable setting to hide Cash In/Out button in POS navbar and update portrait mode layout styles --- __init__.py | 2 ++ __manifest__.py | 4 +++- models/__init__.py | 3 +++ models/pos_config.py | 18 ++++++++++++++++++ models/res_config_settings.py | 11 +++++++++++ .../src/app/components/navbar/navbar_patch.js | 3 +++ static/src/scss/portrait.scss | 6 ++++++ views/res_config_settings_views.xml | 15 +++++++++++++++ 8 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 __init__.py create mode 100644 models/__init__.py create mode 100644 models/pos_config.py create mode 100644 models/res_config_settings.py create mode 100644 views/res_config_settings_views.xml diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..a0fdc10 --- /dev/null +++ b/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import models diff --git a/__manifest__.py b/__manifest__.py index e4a570a..522b35d 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -18,7 +18,9 @@ Features """, 'author': "Suherdy Yacob", 'depends': ['point_of_sale'], - 'data': [], + 'data': [ + 'views/res_config_settings_views.xml', + ], 'assets': { 'point_of_sale._assets_pos': [ # Incremental rendering patches (existing) diff --git a/models/__init__.py b/models/__init__.py new file mode 100644 index 0000000..606b715 --- /dev/null +++ b/models/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- +from . import pos_config +from . import res_config_settings diff --git a/models/pos_config.py b/models/pos_config.py new file mode 100644 index 0000000..2f92e13 --- /dev/null +++ b/models/pos_config.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +from odoo import fields, models, api + +class PosConfig(models.Model): + _inherit = 'pos.config' + + hide_cash_in_out_button = fields.Boolean( + string="Hide Cash In/Out Button (Navbar)", + default=False, + help="Hide the Cash In/Out button in the POS Navbar menu" + ) + + @api.model + def _load_pos_data_fields(self, config): + fields_list = super()._load_pos_data_fields(config) + if fields_list: + fields_list.append('hide_cash_in_out_button') + return fields_list diff --git a/models/res_config_settings.py b/models/res_config_settings.py new file mode 100644 index 0000000..4c6ced7 --- /dev/null +++ b/models/res_config_settings.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +from odoo import fields, models + +class ResConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + pos_hide_cash_in_out_button = fields.Boolean( + string="Hide Cash In/Out Button (Navbar)", + related='pos_config_id.hide_cash_in_out_button', + readonly=False + ) diff --git a/static/src/app/components/navbar/navbar_patch.js b/static/src/app/components/navbar/navbar_patch.js index cf211ac..8012d65 100644 --- a/static/src/app/components/navbar/navbar_patch.js +++ b/static/src/app/components/navbar/navbar_patch.js @@ -12,4 +12,7 @@ patch(Navbar.prototype, { toggleDisplayMode() { this.portraitMode.toggle(); }, + get showCashMoveButton() { + return this.pos.showCashMoveButton && !this.pos.config.hide_cash_in_out_button; + }, }); diff --git a/static/src/scss/portrait.scss b/static/src/scss/portrait.scss index d53f85e..940a422 100644 --- a/static/src/scss/portrait.scss +++ b/static/src/scss/portrait.scss @@ -90,6 +90,12 @@ // Push content above the fixed footer (pay strip ~52px + tab bar ~60px + gap) padding-bottom: 122px !important; overflow: hidden; + + .overflow-y-auto { + flex-grow: 1 !important; + flex-shrink: 1 !important; + min-height: 0 !important; + } } /* ---- 2-COLUMN PRODUCT GRID ---- */ diff --git a/views/res_config_settings_views.xml b/views/res_config_settings_views.xml new file mode 100644 index 0000000..eee794b --- /dev/null +++ b/views/res_config_settings_views.xml @@ -0,0 +1,15 @@ + + + + res.config.settings.view.form.inherit.pos_ui_optimization + res.config.settings + + + + + + + + + +