[FIX] sale_coupon: add missing dependencies on computed fields
Thanks to @rco-odoo
This commit is contained in:
@@ -44,6 +44,7 @@ class SaleCouponProgram(models.Model):
|
||||
coupon_ids = fields.One2many('sale.coupon', 'program_id', string="Generated Coupons", copy=False)
|
||||
coupon_count = fields.Integer(compute='_compute_coupon_count')
|
||||
order_count = fields.Integer(compute='_compute_order_count')
|
||||
order_line_ids = fields.Many2many('sale.order.line', store=False, search='_search_order_line_ids')
|
||||
company_id = fields.Many2one('res.company', string="Company", default=lambda self: self.env.user.company_id)
|
||||
currency_id = fields.Many2one(string="Currency", related='company_id.currency_id', readonly=True)
|
||||
validity_duration = fields.Integer(default=1,
|
||||
@@ -53,12 +54,18 @@ class SaleCouponProgram(models.Model):
|
||||
('unique_promo_code', 'unique(promo_code)', 'The program code must be unique!'),
|
||||
]
|
||||
|
||||
def _search_order_line_ids(self, operator, arg):
|
||||
# just a hack to enable the invalidation of 'order_count'
|
||||
return []
|
||||
|
||||
@api.depends('order_line_ids.product_id')
|
||||
def _compute_order_count(self):
|
||||
product_data = self.env['sale.order.line'].read_group([('product_id', 'in', self.mapped('discount_line_product_id').ids)], ['product_id'], ['product_id'])
|
||||
mapped_data = dict([(m['product_id'][0], m['product_id_count']) for m in product_data])
|
||||
for program in self:
|
||||
program.order_count = mapped_data.get(program.discount_line_product_id.id, 0)
|
||||
|
||||
@api.depends('coupon_ids')
|
||||
def _compute_coupon_count(self):
|
||||
coupon_data = self.env['sale.coupon'].read_group([('program_id', 'in', self.ids)], ['program_id'], ['program_id'])
|
||||
mapped_data = dict([(m['program_id'][0], m['program_id_count']) for m in coupon_data])
|
||||
|
||||
Reference in New Issue
Block a user