1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
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')
|