40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
|
# 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
|