63 lines
2.2 KiB
Python
63 lines
2.2 KiB
Python
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||
|
|
||
|
from odoo import Command
|
||
|
from odoo.addons.point_of_sale.tests.common import TestPointOfSaleCommon
|
||
|
from odoo.tests.common import tagged
|
||
|
|
||
|
|
||
|
@tagged('-at_install', 'post_install')
|
||
|
class TestUnlinkReward(TestPointOfSaleCommon):
|
||
|
@classmethod
|
||
|
def setUpClass(cls):
|
||
|
super().setUpClass()
|
||
|
# Create a loyalty program
|
||
|
cls.loyalty_program = cls.env['loyalty.program'].create({
|
||
|
'name': 'Buy 4 whiteboard_pen, Take 1 whiteboard_pen',
|
||
|
'program_type': 'loyalty',
|
||
|
'trigger': 'auto',
|
||
|
'applies_on': 'both',
|
||
|
'rule_ids': [Command.create({
|
||
|
'product_ids': cls.whiteboard_pen.ids,
|
||
|
'reward_point_mode': 'unit',
|
||
|
'minimum_qty': 1,
|
||
|
})],
|
||
|
})
|
||
|
|
||
|
# Create a reward
|
||
|
cls.reward = cls.env['loyalty.reward'].create({
|
||
|
'program_id': cls.loyalty_program.id,
|
||
|
'reward_type': 'product',
|
||
|
'reward_product_id': cls.whiteboard_pen.id,
|
||
|
'reward_product_qty': 1,
|
||
|
'required_points': 4,
|
||
|
})
|
||
|
|
||
|
def test_pos_unlink_reward(self):
|
||
|
self.pos_config.open_ui()
|
||
|
current_session = self.pos_config.current_session_id
|
||
|
self.PosOrder.create({
|
||
|
'company_id': self.env.company.id,
|
||
|
'session_id': current_session.id,
|
||
|
'partner_id': self.partner1.id,
|
||
|
'pricelist_id': self.partner1.property_product_pricelist.id,
|
||
|
'lines': [
|
||
|
Command.create({
|
||
|
'product_id': self.whiteboard_pen.id,
|
||
|
'qty': 5,
|
||
|
'price_subtotal': 12.0,
|
||
|
'price_subtotal_incl': 12.0,
|
||
|
'reward_id': self.reward.id,
|
||
|
})
|
||
|
],
|
||
|
'amount_tax': 0.0,
|
||
|
'amount_total': 134.38,
|
||
|
'amount_paid': 0.0,
|
||
|
'amount_return': 0.0,
|
||
|
})
|
||
|
# Attempt to delete the reward
|
||
|
self.reward.unlink()
|
||
|
|
||
|
# Ensure the reward is archived and not deleted
|
||
|
self.assertTrue(self.reward.exists())
|
||
|
self.assertFalse(self.reward.active)
|