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([
|
||||
('partner_id', '=', partner.id),
|
||||
('program_id', '=', old_level_id),
|
||||
('active', '=', True),
|
||||
])
|
||||
if old_cards and new_level_id:
|
||||
new_card = self.env['loyalty.card'].sudo().search([
|
||||
@ -52,6 +53,7 @@ class ResPartner(models.Model):
|
||||
pts = old_card.points
|
||||
if abs(pts) > 0.0001:
|
||||
new_card.points += pts
|
||||
old_card.points = 0.0
|
||||
|
||||
# 2. Transfer loyalty history (point transactions)
|
||||
old_histories = self.env['loyalty.history'].sudo().search([
|
||||
@ -76,5 +78,5 @@ class ResPartner(models.Model):
|
||||
|
||||
# Archive old-level cards
|
||||
if old_cards:
|
||||
old_cards.write({'active': False})
|
||||
old_cards.write({'active': False, 'points': 0.0})
|
||||
return super().write(vals)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user