Odoo18-Base/addons/loyalty/wizard/loyalty_card_update_balance.py

40 lines
1.2 KiB
Python
Raw Permalink Normal View History

2025-01-06 10:57:38 +07:00
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import _, fields, models
from odoo.exceptions import ValidationError
class LoyaltyCardUpdateBalance(models.TransientModel):
_name = 'loyalty.card.update.balance'
_description = "Update Loyalty Card Points"
card_id = fields.Many2one(
comodel_name='loyalty.card',
required=True,
readonly=True,
)
old_balance = fields.Float(related='card_id.points')
new_balance = fields.Float()
description = fields.Char(required=True)
def action_update_card_point(self):
if self.old_balance == self.new_balance or self.new_balance < 0:
raise ValidationError(
_("New Balance should be positive and different then old balance.")
)
difference = self.new_balance - self.old_balance
used = 0
issued = 0
if difference > 0:
issued = difference
else:
used = abs(difference)
self.env['loyalty.history'].create({
'card_id': self.card_id.id,
'description': self.description or _("Gift for customer"),
'used': used,
'issued': issued,
})
self.card_id.points = self.new_balance