summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/product_pricelist.py
blob: 94a9b2390bc722328d0fdf6b63f177e8edbe8bbd (plain)
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')