[FIX] loyalty: Prevent reward_ids to be reset to default
Steps:
- Install `sale_management`
- Go to `Discount & Loyalty`
- Create a new one and set a name
- Change default program type from `discount` to `buy x get y`
- Remove the default rewards
- Add a new one (the default one)
- Click `Save & Close`
- Trigger save
Rewards is reset to default `discount` instead of `buy x get y`
closes odoo/odoo#138523
X-original-commit: 798c69f44bfde2f66826775a5a11fe5e51adb9a8
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
This commit is contained in:
@@ -5,7 +5,7 @@ from psycopg2 import IntegrityError
|
||||
|
||||
from odoo.exceptions import ValidationError
|
||||
from odoo.fields import Command
|
||||
from odoo.tests import tagged, TransactionCase
|
||||
from odoo.tests import tagged, TransactionCase, Form
|
||||
from odoo.tools import mute_logger
|
||||
|
||||
from unittest.mock import patch
|
||||
@@ -113,6 +113,17 @@ class TestLoyalty(TransactionCase):
|
||||
})
|
||||
self.assertTrue(all(r.reward_type == 'product' for r in self.program.reward_ids))
|
||||
|
||||
def test_loyalty_program_preserve_reward_with_always_edit(self):
|
||||
with Form(self.env['loyalty.program']) as program_form:
|
||||
program_form.name = 'Test'
|
||||
program_form.program_type = 'buy_x_get_y'
|
||||
program_form.reward_ids.remove(0)
|
||||
with program_form.reward_ids.new() as new_reward:
|
||||
new_reward.reward_product_qty = 2
|
||||
program = program_form.save()
|
||||
self.assertEqual(program.reward_ids.reward_type, 'product')
|
||||
self.assertEqual(program.reward_ids.reward_product_qty, 2)
|
||||
|
||||
def test_archiving_unarchiving(self):
|
||||
self.program.write({
|
||||
'reward_ids': [
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<sheet>
|
||||
<group>
|
||||
<group string="Reward" name="reward_type_group">
|
||||
<field name="reward_type" widget="selection" readonly="program_type == 'buy_x_get_y'"/>
|
||||
<field name="reward_type" widget="selection" force_save="1" readonly="program_type == 'buy_x_get_y'"/>
|
||||
<label for="discount" invisible="reward_type != 'discount'"/>
|
||||
<div class="d-flex flex-row" invisible="reward_type != 'discount'">
|
||||
<field name="discount" class="oe_inline me-1"/>
|
||||
|
||||
Reference in New Issue
Block a user