fix: ensure loyalty card points are reset to zero when transferring levels or archiving cards
This commit is contained in:
parent
fc63dda464
commit
9768a3795c
@ -33,6 +33,7 @@ class ResPartner(models.Model):
|
|||||||
old_cards = self.env['loyalty.card'].sudo().search([
|
old_cards = self.env['loyalty.card'].sudo().search([
|
||||||
('partner_id', '=', partner.id),
|
('partner_id', '=', partner.id),
|
||||||
('program_id', '=', old_level_id),
|
('program_id', '=', old_level_id),
|
||||||
|
('active', '=', True),
|
||||||
])
|
])
|
||||||
if old_cards and new_level_id:
|
if old_cards and new_level_id:
|
||||||
new_card = self.env['loyalty.card'].sudo().search([
|
new_card = self.env['loyalty.card'].sudo().search([
|
||||||
@ -52,6 +53,7 @@ class ResPartner(models.Model):
|
|||||||
pts = old_card.points
|
pts = old_card.points
|
||||||
if abs(pts) > 0.0001:
|
if abs(pts) > 0.0001:
|
||||||
new_card.points += pts
|
new_card.points += pts
|
||||||
|
old_card.points = 0.0
|
||||||
|
|
||||||
# 2. Transfer loyalty history (point transactions)
|
# 2. Transfer loyalty history (point transactions)
|
||||||
old_histories = self.env['loyalty.history'].sudo().search([
|
old_histories = self.env['loyalty.history'].sudo().search([
|
||||||
@ -76,5 +78,5 @@ class ResPartner(models.Model):
|
|||||||
|
|
||||||
# Archive old-level cards
|
# Archive old-level cards
|
||||||
if old_cards:
|
if old_cards:
|
||||||
old_cards.write({'active': False})
|
old_cards.write({'active': False, 'points': 0.0})
|
||||||
return super().write(vals)
|
return super().write(vals)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user