feat: restrict POS paid order history to the last 48 hours to optimize UI performance

This commit is contained in:
Suherdy Yacob 2026-06-03 14:48:05 +07:00
parent 85aa55dda9
commit e2fd06fbd6
2 changed files with 29 additions and 0 deletions

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from . import pos_config from . import pos_config
from . import res_config_settings from . import res_config_settings
from . import pos_order

28
models/pos_order.py Normal file
View File

@ -0,0 +1,28 @@
# -*- coding: utf-8 -*-
from odoo import fields, models, api
from odoo.osv import expression
from datetime import timedelta, datetime
import pytz
class PosOrder(models.Model):
_inherit = 'pos.order'
@api.model
def search_paid_order_ids(self, config_id, domain, limit, offset):
"""Limit paid orders list loaded on POS frontend to today and the day before."""
user_tz_name = self.env.context.get('tz') or self.env.user.tz or 'UTC'
try:
user_tz = pytz.timezone(user_tz_name)
except pytz.UnknownTimeZoneError:
user_tz = pytz.UTC
today_local = fields.Date.to_date(fields.Date.context_today(self))
yesterday_local = today_local - timedelta(days=1)
yesterday_start_local = datetime.combine(yesterday_local, datetime.min.time())
yesterday_start_tz = user_tz.localize(yesterday_start_local)
yesterday_start_utc = yesterday_start_tz.astimezone(pytz.UTC).replace(tzinfo=None)
# Restrict domain so only orders from today and yesterday (local timezone start) are returned
domain = expression.AND([domain, [('date_order', '>=', yesterday_start_utc)]])
return super(PosOrder, self).search_paid_order_ids(config_id, domain, limit, offset)