feat: override res.partner search to force zero loyalty member load limit in POS

This commit is contained in:
Suherdy Yacob 2026-06-17 10:51:35 +07:00
parent 2f1e9d869a
commit 930999b30c
3 changed files with 22 additions and 1 deletions

View File

@ -17,7 +17,7 @@ Features
3. Portrait Display Mode: Single-pane responsive layout for mobile POS terminals. 3. Portrait Display Mode: Single-pane responsive layout for mobile POS terminals.
""", """,
'author': "Suherdy Yacob", 'author': "Suherdy Yacob",
'depends': ['point_of_sale', 'pos_restaurant'], 'depends': ['point_of_sale', 'pos_restaurant', 'pos_loyalty_member_custom'],
'data': [ 'data': [
'views/res_config_settings_views.xml', 'views/res_config_settings_views.xml',
'views/pos_order_view.xml', 'views/pos_order_view.xml',

View File

@ -2,3 +2,5 @@
from . import pos_config from . import pos_config
from . import res_config_settings from . import res_config_settings
from . import pos_order from . import pos_order
from . import res_partner

19
models/res_partner.py Normal file
View File

@ -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)