from odoo import models, fields from datetime import datetime, timedelta class ProductPricelist(models.Model): _inherit = 'product.pricelist' is_flash_sale = fields.Boolean(string='Flash Sale', default=False) is_show_program = fields.Boolean(string='Show Program', default=False) banner = fields.Binary(string='Banner') start_date = fields.Datetime(string='Start Date') end_date = fields.Datetime(string='End Date') banner_mobile = fields.Binary(string='Banner Mobile') flashsale_option = fields.Selection([ ('all', 'For All User'), ('registered_user', 'Only for Registered User') ], string='Flash Sale Option') banner_top = fields.Binary(string='Banner Top') flashsale_tag = fields.Char(string='Flash Sale Tag') number = fields.Integer(string='Sequence') def _check_end_date_and_update_solr(self): today = datetime.utcnow().date() one_day_ago = today - timedelta(days=1) pricelists = self.search([ ('is_flash_sale', '=', True) ]) for pricelist in pricelists: if fields.Date.to_date(pricelist.end_date) == one_day_ago: pricelist._constrains_related_solr_field() def _remaining_time_in_second(self): if not self.end_date: return 0 remaining_time = (self.end_date - datetime.now()).total_seconds() remaining_time = round(remaining_time) return max(remaining_time, 0) def get_tier_level(self): config = self.env['ir.config_parameter'] tier_keys = ['1', '2', '3', '1_v2', '2_v2', '3_v2', '4_v2', '5_v2'] for tier in tier_keys: tier_id = config.get_param('product.pricelist.tier' + tier, 0) if self.id == int(tier_id): return tier return None def get_tier_name(self): tier_level = self.get_tier_level() tier_name = f'tier{tier_level}' if tier_level else None return tier_name class ProductPricelistItem(models.Model): _inherit = 'product.pricelist.item' manufacture_id = fields.Many2one('x_manufactures', string='Manufacture') computed_price = fields.Float(string='Computed Price')