from odoo import fields, models class EncoachDiscount(models.Model): _name = "encoach.discount" _description = "EnCoach Discount Code" code = fields.Char(required=True, index=True) _code_unique = models.Constraint( "UNIQUE(code)", "Discount code must be unique.", ) percentage = fields.Float(digits=(5, 2)) expiry_date = fields.Datetime() max_uses = fields.Integer() uses = fields.Integer(default=0) def is_valid(self): self.ensure_one() if self.max_uses and self.uses >= self.max_uses: return False if self.expiry_date and self.expiry_date < fields.Datetime.now(): return False return True