refactor: optimize POS startup performance by disabling default partner loading and clearing the customer list view
This commit is contained in:
parent
815fba780b
commit
7ca603ecce
@ -21,18 +21,8 @@ class ResPartner(models.Model):
|
||||
|
||||
@api.model
|
||||
def _load_pos_data_domain(self, data, config):
|
||||
domain = super()._load_pos_data_domain(data, config)
|
||||
# Limit initial load of extra loyalty members to 30 to ensure fast POS startup (1-2 seconds)
|
||||
loyalty_members = self.search(
|
||||
[
|
||||
('is_company', '=', False),
|
||||
('loyalty_card_ids.active', '=', True),
|
||||
('loyalty_card_ids.program_id.active', '=', True),
|
||||
],
|
||||
limit=30,
|
||||
order='write_date desc'
|
||||
)
|
||||
return ['|'] + domain + [('id', 'in', loyalty_members.ids)]
|
||||
# Override to load zero partners on startup, preventing caching of customer data on session start
|
||||
return [('id', '=', False)]
|
||||
|
||||
@api.model
|
||||
def _load_pos_data_fields(self, config):
|
||||
|
||||
@ -70,16 +70,8 @@ patch(PartnerList.prototype, {
|
||||
let computedResult;
|
||||
|
||||
if (!searchWord) {
|
||||
// When query is empty, slice and sort following standard POS behavior
|
||||
computedResult = filteredPartners
|
||||
.slice(0, 1000)
|
||||
.toSorted((a, b) =>
|
||||
this.props.partner?.id === a.id
|
||||
? -1
|
||||
: this.props.partner?.id === b.id
|
||||
? 1
|
||||
: (a.name || "").localeCompare(b.name || "")
|
||||
);
|
||||
// When query is empty, keep list blank by default except for the currently selected customer (if any)
|
||||
computedResult = filteredPartners.filter((p) => this.props.partner?.id === p.id);
|
||||
} else {
|
||||
// When query is present, optimize search filtering
|
||||
const exactMatches = filteredPartners.filter((partner) => partner.exactMatch(searchWord));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user