From 930999b30c711c797ad530fe306c9be7231bfe1c Mon Sep 17 00:00:00 2001 From: Suherdy Yacob Date: Wed, 17 Jun 2026 10:51:35 +0700 Subject: [PATCH] feat: override res.partner search to force zero loyalty member load limit in POS --- __manifest__.py | 2 +- models/__init__.py | 2 ++ models/res_partner.py | 19 +++++++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 models/res_partner.py diff --git a/__manifest__.py b/__manifest__.py index aaf41e5..6d6b18b 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -17,7 +17,7 @@ Features 3. Portrait Display Mode: Single-pane responsive layout for mobile POS terminals. """, 'author': "Suherdy Yacob", - 'depends': ['point_of_sale', 'pos_restaurant'], + 'depends': ['point_of_sale', 'pos_restaurant', 'pos_loyalty_member_custom'], 'data': [ 'views/res_config_settings_views.xml', 'views/pos_order_view.xml', diff --git a/models/__init__.py b/models/__init__.py index 6242518..5c0f368 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -2,3 +2,5 @@ from . import pos_config from . import res_config_settings from . import pos_order +from . import res_partner + diff --git a/models/res_partner.py b/models/res_partner.py new file mode 100644 index 0000000..331e3f0 --- /dev/null +++ b/models/res_partner.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from odoo import models, api + +class ResPartner(models.Model): + _inherit = 'res.partner' + + @api.model + def _load_pos_data_domain(self, data, config): + # Set context flag to force loyalty member loading limit to 0 + self_with_context = self.with_context(pos_load_loyalty_limit_zero=True) + return super(ResPartner, self_with_context)._load_pos_data_domain(data, config) + + @api.model + def search(self, args, offset=0, limit=None, order=None): + # Intercept the search for extra loyalty members when loading POS data + # and return an empty recordset to change the loaded/cached members count to 0 + if self.env.context.get('pos_load_loyalty_limit_zero') and limit == 30: + return self.browse() + return super(ResPartner, self).search(args, offset=offset, limit=limit, order=order)