31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import _, fields, models
|
|
from odoo.exceptions import ValidationError
|
|
|
|
class SaleLoyaltyCouponWizard(models.TransientModel):
|
|
_name = 'sale.loyalty.coupon.wizard'
|
|
_description = 'Sale Loyalty - Apply Coupon Wizard'
|
|
|
|
order_id = fields.Many2one('sale.order', default=lambda self: self.env.context.get('active_id'), required=True)
|
|
|
|
coupon_code = fields.Char(required=True)
|
|
|
|
def action_apply(self):
|
|
self.ensure_one()
|
|
if not self.order_id:
|
|
raise ValidationError(_('Invalid sales order.'))
|
|
status = self.order_id._try_apply_code(self.coupon_code)
|
|
if 'error' in status:
|
|
raise ValidationError(status['error'])
|
|
all_rewards = self.env['loyalty.reward']
|
|
for rewards in status.values():
|
|
all_rewards |= rewards
|
|
action = self.env['ir.actions.actions']._for_xml_id('sale_loyalty.sale_loyalty_reward_wizard_action')
|
|
action['context'] = {
|
|
'active_id': self.order_id.id,
|
|
'default_reward_ids': all_rewards.ids,
|
|
}
|
|
return action
|