diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2023-09-07 15:49:26 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2023-09-07 15:49:26 +0700 |
| commit | 1d60288adef95392dfbfc2f170409a611be526ea (patch) | |
| tree | 626052cef36b01b1a96ef31a17cdace5e55003ba | |
| parent | 4986c63d2a6bd8e2feadbd2403a211b0b0cf405f (diff) | |
Update limit on voucher model
| -rw-r--r-- | indoteknik_custom/models/voucher.py | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/indoteknik_custom/models/voucher.py b/indoteknik_custom/models/voucher.py index b8d0dc2e..720c465e 100644 --- a/indoteknik_custom/models/voucher.py +++ b/indoteknik_custom/models/voucher.py @@ -36,8 +36,17 @@ class Voucher(models.Model): end_time = fields.Datetime(string='End Time') min_purchase_amount = fields.Integer(string='Min. Purchase Amount', help='Nominal minimum untuk dapat menggunakan voucher. Isi 0 jika tidak ada minimum purchase amount') max_discount_amount = fields.Integer(string='Max. Discount Amount', help='Max nominal terhadap persentase diskon') - order_ids = fields.One2many('sale.order', 'voucher_id', string='Order') - limit = fields.Integer(string='Limit', help='Voucher limit by sale order. Masukan 0 untuk tanpa limit') + order_ids = fields.One2many('sale.order', 'applied_voucher_id', string='Order') + limit = fields.Integer( + string='Limit', + default=0, + help='Batas penggunaan voucher keseluruhan. Isi dengan angka 0 untuk penggunaan tanpa batas' + ) + limit_user = fields.Integer( + string='Limit User', + default=0, + help='Batas penggunaan voucher per pengguna. Misalnya, jika diisi dengan angka 1, maka setiap pengguna hanya dapat menggunakan voucher ini satu kali. Isi dengan angka 0 untuk penggunaan tanpa batas' + ) manufacture_ids = fields.Many2many('x_manufactures', string='Brands', help='Voucher appplied only for brand') excl_pricelist_ids = fields.Many2many('product.pricelist', string='Excluded Pricelists', help='Hide voucher from selected exclude pricelist') voucher_line = fields.One2many('voucher.line', 'voucher_id', 'Voucher Line') @@ -46,22 +55,27 @@ class Voucher(models.Model): ('all', "All product"), ('brand', "Selected product brand"), ]) - can_used = fields.Boolean(string='Can Used?', compute='_compute_can_used') + count_order = fields.Integer(string='Count Order', compute='_compute_count_order') @api.constrains('description') def _check_description_length(self): for record in self: if record.description and len(record.description) > 120: - raise ValidationError('Description cannot exceed 120 characters') + raise ValidationError('Deskripsi tidak boleh lebih dari 120 karakter') + + @api.constrains('limit', 'limit_user') + def _check_limit(self): + for rec in self: + if rec.limit_user > rec.limit: + raise ValidationError('Limit user tidak boleh lebih besar dari limit keseluruhan') def _compute_display_name(self): for voucher in self: voucher.display_name = f'{voucher.name} ({voucher.code})' - def _compute_can_used(self): + def _compute_count_order(self): for rec in self: - valid_order = [x for x in rec.order_ids if x.state != 'cancel'] - rec.can_used = rec.limit <= 0 or len(valid_order) < rec.limit + rec.count_order = len([x for x in rec.order_ids if x.state != 'cancel']) def res_format(self): datas = [voucher.format() for voucher in self] |
