summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indoteknik_custom/models/voucher.py28
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]