odoo-addon-openupgrade-scripts 16.0.1.0.3.276__py3-none-any.whl → 16.0.1.0.3.280__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- odoo/addons/openupgrade_scripts/scripts/account_fleet/16.0.1.0/upgrade_analysis_work.txt +4 -0
- odoo/addons/openupgrade_scripts/scripts/loyalty/16.0.1.0/post-migration.py +57 -0
- odoo/addons/openupgrade_scripts/scripts/loyalty/16.0.1.0/pre-migration.py +796 -0
- odoo/addons/openupgrade_scripts/scripts/loyalty/16.0.1.0/upgrade_analysis_work.txt +179 -0
- odoo/addons/openupgrade_scripts/scripts/website_sale_digital/16.0.0.1/upgrade_analysis_work.txt +5 -0
- {odoo_addon_openupgrade_scripts-16.0.1.0.3.276.dist-info → odoo_addon_openupgrade_scripts-16.0.1.0.3.280.dist-info}/METADATA +1 -1
- {odoo_addon_openupgrade_scripts-16.0.1.0.3.276.dist-info → odoo_addon_openupgrade_scripts-16.0.1.0.3.280.dist-info}/RECORD +9 -4
- {odoo_addon_openupgrade_scripts-16.0.1.0.3.276.dist-info → odoo_addon_openupgrade_scripts-16.0.1.0.3.280.dist-info}/WHEEL +0 -0
- {odoo_addon_openupgrade_scripts-16.0.1.0.3.276.dist-info → odoo_addon_openupgrade_scripts-16.0.1.0.3.280.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,57 @@
|
|
1
|
+
# Copyright 2023 Tecnativa - Pilar Vargas
|
2
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
3
|
+
from openupgradelib import openupgrade
|
4
|
+
|
5
|
+
from odoo.tools.translate import _
|
6
|
+
|
7
|
+
_deleted_xml_records = [
|
8
|
+
"loyalty.sale_coupon_generate_rule",
|
9
|
+
]
|
10
|
+
|
11
|
+
|
12
|
+
def convert_loyalty_program_rewards(env):
|
13
|
+
openupgrade.m2o_to_x2m(
|
14
|
+
env.cr, env["loyalty.program"], "loyalty_program", "reward_ids", "reward_id"
|
15
|
+
)
|
16
|
+
|
17
|
+
|
18
|
+
def convert_loyalty_program_rules(env):
|
19
|
+
openupgrade.m2o_to_x2m(
|
20
|
+
env.cr, env["loyalty.program"], "loyalty_program", "rule_ids", "rule_id"
|
21
|
+
)
|
22
|
+
|
23
|
+
|
24
|
+
def compute_portal_point_name(env):
|
25
|
+
"""This is a computed field, but the _program_type_default_values method of the
|
26
|
+
loyalty module sets the following values in portal_point_name depending on the
|
27
|
+
program_type field. This is done in post so that the language context can be used."""
|
28
|
+
portal_point_names = {
|
29
|
+
"coupons": _("Coupon point(s)"),
|
30
|
+
"promotion": _("Promo point(s)"),
|
31
|
+
"gift_card": _("Gift Card"),
|
32
|
+
"loyalty": _("Loyalty point(s)"),
|
33
|
+
"ewallet": _("eWallet"),
|
34
|
+
"promo_code": _("Discount point(s)"),
|
35
|
+
"buy_x_get_y": _("Credit(s)"),
|
36
|
+
"next_order_coupons": _("Coupon point(s)"),
|
37
|
+
}
|
38
|
+
loyalty_programs = env["loyalty.program"].search([])
|
39
|
+
for program in loyalty_programs:
|
40
|
+
if program.program_type in portal_point_names:
|
41
|
+
translated_name = portal_point_names[program.program_type]
|
42
|
+
# By default when the module is installed it contains the terms in the
|
43
|
+
# language code "en_US".
|
44
|
+
program.with_context(lang="en_US").write(
|
45
|
+
{"portal_point_name": translated_name}
|
46
|
+
)
|
47
|
+
|
48
|
+
|
49
|
+
@openupgrade.migrate()
|
50
|
+
def migrate(env, version):
|
51
|
+
convert_loyalty_program_rewards(env)
|
52
|
+
convert_loyalty_program_rules(env)
|
53
|
+
compute_portal_point_name(env)
|
54
|
+
openupgrade.delete_records_safely_by_xml_id(
|
55
|
+
env,
|
56
|
+
_deleted_xml_records,
|
57
|
+
)
|
@@ -0,0 +1,796 @@
|
|
1
|
+
# Copyright 2023 Tecnativa - Pilar Vargas
|
2
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
3
|
+
from openupgradelib import openupgrade
|
4
|
+
|
5
|
+
_field_renames = [
|
6
|
+
("coupon.program", "coupon_program", "promo_applicability", "applies_on"),
|
7
|
+
("coupon.program", "coupon_program", "promo_code_usage", "trigger"),
|
8
|
+
("coupon.program", "coupon_program", "maximum_use_number", "max_usage"),
|
9
|
+
("coupon.reward", "coupon_reward", "reward_description", "description"),
|
10
|
+
("coupon.reward", "coupon_reward", "discount_percentage", "discount"),
|
11
|
+
("coupon.reward", "coupon_reward", "discount_apply_on", "discount_applicability"),
|
12
|
+
("coupon.reward", "coupon_reward", "discount_type", "discount_mode"),
|
13
|
+
(
|
14
|
+
"coupon.reward",
|
15
|
+
"coupon_reward",
|
16
|
+
"discount_specific_product_ids",
|
17
|
+
"discount_product_ids",
|
18
|
+
),
|
19
|
+
("coupon.reward", "coupon_reward", "reward_product_quantity", "reward_product_qty"),
|
20
|
+
("coupon.rule", "coupon_rule", "rule_minimum_amount", "minimum_amount"),
|
21
|
+
("coupon.rule", "coupon_rule", "rule_min_quantity", "minimum_qty"),
|
22
|
+
("coupon.rule", "coupon_rule", "rule_products_domain", "product_domain"),
|
23
|
+
(
|
24
|
+
"coupon.rule",
|
25
|
+
"coupon_rule",
|
26
|
+
"rule_minimum_amount_tax_inclusion",
|
27
|
+
"minimum_amount_tax_mode",
|
28
|
+
),
|
29
|
+
]
|
30
|
+
_models_renames = [
|
31
|
+
("coupon.program", "loyalty.program"),
|
32
|
+
("coupon.reward", "loyalty.reward"),
|
33
|
+
("coupon.coupon", "loyalty.card"),
|
34
|
+
("coupon.rule", "loyalty.rule"),
|
35
|
+
]
|
36
|
+
_tables_renames = [
|
37
|
+
("coupon_program", "loyalty_program"),
|
38
|
+
("coupon_reward", "loyalty_reward"),
|
39
|
+
("coupon_coupon", "loyalty_card"),
|
40
|
+
("coupon_rule", "loyalty_rule"),
|
41
|
+
]
|
42
|
+
_xmlids_renames = [
|
43
|
+
(
|
44
|
+
"loyalty.coupon_action",
|
45
|
+
"loyalty.loyalty_card_action",
|
46
|
+
),
|
47
|
+
(
|
48
|
+
"loyalty.coupon_generate",
|
49
|
+
"loyalty.loyalty_generate_wizard_action",
|
50
|
+
),
|
51
|
+
(
|
52
|
+
"loyalty.report_coupon_code",
|
53
|
+
"loyalty.report_loyalty_card",
|
54
|
+
),
|
55
|
+
(
|
56
|
+
"loyalty.coupon_view_form",
|
57
|
+
"loyalty.loyalty_card_view_form",
|
58
|
+
),
|
59
|
+
(
|
60
|
+
"loyalty.coupon_view_tree",
|
61
|
+
"loyalty.loyalty_card_view_tree",
|
62
|
+
),
|
63
|
+
(
|
64
|
+
"loyalty.coupon_generate_view_form",
|
65
|
+
"loyalty.loyalty_generate_wizard_view_form",
|
66
|
+
),
|
67
|
+
(
|
68
|
+
"loyalty.coupon_program_view_form_common",
|
69
|
+
"loyalty.loyalty_program_view_form",
|
70
|
+
),
|
71
|
+
(
|
72
|
+
"loyalty.coupon_program_view_search",
|
73
|
+
"loyalty.loyalty_program_view_search",
|
74
|
+
),
|
75
|
+
(
|
76
|
+
"loyalty.coupon_program_view_tree",
|
77
|
+
"loyalty.loyalty_program_view_tree",
|
78
|
+
),
|
79
|
+
(
|
80
|
+
"sale_loyalty.mail_template_sale_coupon",
|
81
|
+
"loyalty.mail_template_loyalty_card",
|
82
|
+
),
|
83
|
+
(
|
84
|
+
"gift_card.gift_card_product_50",
|
85
|
+
"loyalty.gift_card_product_50",
|
86
|
+
),
|
87
|
+
]
|
88
|
+
|
89
|
+
_noupdate_xmlids = [
|
90
|
+
"mail_template_loyalty_card",
|
91
|
+
"gift_card_product_50",
|
92
|
+
]
|
93
|
+
|
94
|
+
_columns_copies = {
|
95
|
+
"loyalty_rule": [
|
96
|
+
("minimum_amount_tax_mode", None, None),
|
97
|
+
],
|
98
|
+
"loyalty_reward": [
|
99
|
+
("discount_applicability", None, None),
|
100
|
+
("discount_mode", None, None),
|
101
|
+
],
|
102
|
+
"loyalty_program": [
|
103
|
+
("applies_on", None, None),
|
104
|
+
("trigger", None, None),
|
105
|
+
("program_type", None, None),
|
106
|
+
],
|
107
|
+
}
|
108
|
+
|
109
|
+
|
110
|
+
def update_loyalty_program_data(env):
|
111
|
+
# Fill date_to field: This data is updated with the values of the field 'rule_date_to
|
112
|
+
# field of the 'loyalty_rule' table. Sets the 'date_to' field of the 'loyalty_program'
|
113
|
+
# table to non-null values of to the non-null values of 'rule_date_to' where the old
|
114
|
+
# 'loyalty_program.rule_id' field is equal to loyalty_rule.id' and
|
115
|
+
# 'loyalty_rule.rule_date_to' is not null.
|
116
|
+
openupgrade.logged_query(
|
117
|
+
env.cr,
|
118
|
+
"""
|
119
|
+
ALTER TABLE loyalty_program
|
120
|
+
ADD COLUMN IF NOT EXISTS date_to DATE
|
121
|
+
""",
|
122
|
+
)
|
123
|
+
openupgrade.logged_query(
|
124
|
+
env.cr,
|
125
|
+
"""
|
126
|
+
UPDATE loyalty_program
|
127
|
+
SET date_to = loyalty_rule.rule_date_to
|
128
|
+
FROM loyalty_rule
|
129
|
+
WHERE loyalty_program.rule_id = loyalty_rule.id
|
130
|
+
AND loyalty_rule.rule_date_to IS NOT NULL
|
131
|
+
""",
|
132
|
+
)
|
133
|
+
# Sets the value of the limit_usage column to True for those records where the max_usage
|
134
|
+
# column is not null.
|
135
|
+
openupgrade.logged_query(
|
136
|
+
env.cr,
|
137
|
+
"""
|
138
|
+
ALTER TABLE loyalty_program
|
139
|
+
ADD COLUMN IF NOT EXISTS limit_usage BOOLEAN
|
140
|
+
""",
|
141
|
+
)
|
142
|
+
openupgrade.logged_query(
|
143
|
+
env.cr,
|
144
|
+
"""
|
145
|
+
UPDATE loyalty_program
|
146
|
+
SET limit_usage = TRUE
|
147
|
+
WHERE max_usage IS NOT NULL
|
148
|
+
""",
|
149
|
+
)
|
150
|
+
# Determine the visibility on the default portal of specific loyalty programs, based
|
151
|
+
# on their type (program_type)
|
152
|
+
openupgrade.logged_query(
|
153
|
+
env.cr,
|
154
|
+
"""
|
155
|
+
ALTER TABLE loyalty_program
|
156
|
+
ADD COLUMN IF NOT EXISTS portal_visible BOOLEAN
|
157
|
+
""",
|
158
|
+
)
|
159
|
+
openupgrade.logged_query(
|
160
|
+
env.cr,
|
161
|
+
"""
|
162
|
+
UPDATE loyalty_program
|
163
|
+
SET portal_visible =
|
164
|
+
CASE
|
165
|
+
WHEN program_type
|
166
|
+
IN ('gift_card', 'ewallet', 'loyalty', 'next_order_coupons') THEN true
|
167
|
+
ELSE false
|
168
|
+
END
|
169
|
+
""",
|
170
|
+
)
|
171
|
+
# Update standard selection values
|
172
|
+
openupgrade.map_values(
|
173
|
+
env.cr,
|
174
|
+
openupgrade.get_legacy_name("applies_on"),
|
175
|
+
"applies_on",
|
176
|
+
[("on_current_order", "current"), ("on_next_order", "future")],
|
177
|
+
table="loyalty_program",
|
178
|
+
)
|
179
|
+
openupgrade.map_values(
|
180
|
+
env.cr,
|
181
|
+
openupgrade.get_legacy_name("trigger"),
|
182
|
+
"trigger",
|
183
|
+
[("no_code_needed", "auto"), ("code_needed", "with_code")],
|
184
|
+
table="loyalty_program",
|
185
|
+
)
|
186
|
+
openupgrade.map_values(
|
187
|
+
env.cr,
|
188
|
+
openupgrade.get_legacy_name("program_type"),
|
189
|
+
"program_type",
|
190
|
+
[("coupon_program", "coupons"), ("promotion_program", "promotion")],
|
191
|
+
table="loyalty_program",
|
192
|
+
)
|
193
|
+
|
194
|
+
|
195
|
+
def update_loyalty_reward_data(env):
|
196
|
+
# Determine which program_id and company_id each reward belongs to
|
197
|
+
openupgrade.logged_query(
|
198
|
+
env.cr,
|
199
|
+
"""
|
200
|
+
ALTER TABLE loyalty_reward
|
201
|
+
ADD COLUMN IF NOT EXISTS program_id INT
|
202
|
+
""",
|
203
|
+
)
|
204
|
+
openupgrade.logged_query(
|
205
|
+
env.cr,
|
206
|
+
"""
|
207
|
+
UPDATE loyalty_reward AS lr
|
208
|
+
SET program_id = lp.id
|
209
|
+
FROM loyalty_program AS lp
|
210
|
+
WHERE lr.id = lp.reward_id
|
211
|
+
""",
|
212
|
+
)
|
213
|
+
openupgrade.logged_query(
|
214
|
+
env.cr,
|
215
|
+
"""
|
216
|
+
ALTER TABLE loyalty_reward
|
217
|
+
ADD COLUMN IF NOT EXISTS company_id INT
|
218
|
+
""",
|
219
|
+
)
|
220
|
+
openupgrade.logged_query(
|
221
|
+
env.cr,
|
222
|
+
"""
|
223
|
+
UPDATE loyalty_reward AS lr
|
224
|
+
SET company_id = lp.company_id
|
225
|
+
FROM loyalty_program AS lp
|
226
|
+
WHERE lr.id = lp.reward_id
|
227
|
+
""",
|
228
|
+
)
|
229
|
+
# Update standard selection values for discount mode
|
230
|
+
openupgrade.map_values(
|
231
|
+
env.cr,
|
232
|
+
openupgrade.get_legacy_name("discount_mode"),
|
233
|
+
"discount_mode",
|
234
|
+
[
|
235
|
+
("percentage", "discount_percentage"),
|
236
|
+
("fixed_amount", "discount_fixed_amount"),
|
237
|
+
],
|
238
|
+
table="loyalty_reward",
|
239
|
+
)
|
240
|
+
# Establish whether a reward is active based on the status of the program to which the
|
241
|
+
# reward belongs
|
242
|
+
openupgrade.logged_query(
|
243
|
+
env.cr,
|
244
|
+
"""
|
245
|
+
ALTER TABLE loyalty_reward
|
246
|
+
ADD COLUMN IF NOT EXISTS active BOOLEAN
|
247
|
+
""",
|
248
|
+
)
|
249
|
+
openupgrade.logged_query(
|
250
|
+
env.cr,
|
251
|
+
"""
|
252
|
+
UPDATE loyalty_reward AS lr
|
253
|
+
SET active = lp.active
|
254
|
+
FROM loyalty_program AS lp
|
255
|
+
WHERE lr.id = lp.reward_id
|
256
|
+
""",
|
257
|
+
)
|
258
|
+
# Set default values
|
259
|
+
if not openupgrade.column_exists(env.cr, "loyalty_reward", "clear_wallet"):
|
260
|
+
openupgrade.add_fields(
|
261
|
+
env,
|
262
|
+
[
|
263
|
+
(
|
264
|
+
"clear_wallet",
|
265
|
+
"loyalty.reward",
|
266
|
+
"loyalty_reward",
|
267
|
+
"boolean",
|
268
|
+
"bool",
|
269
|
+
"loyalty",
|
270
|
+
False,
|
271
|
+
)
|
272
|
+
],
|
273
|
+
)
|
274
|
+
if not openupgrade.column_exists(env.cr, "loyalty_reward", "required_points"):
|
275
|
+
openupgrade.add_fields(
|
276
|
+
env,
|
277
|
+
[
|
278
|
+
(
|
279
|
+
"required_points",
|
280
|
+
"loyalty.reward",
|
281
|
+
"loyalty_reward",
|
282
|
+
"float",
|
283
|
+
"float",
|
284
|
+
"loyalty",
|
285
|
+
1,
|
286
|
+
)
|
287
|
+
],
|
288
|
+
)
|
289
|
+
# Update standard selection values
|
290
|
+
openupgrade.map_values(
|
291
|
+
env.cr,
|
292
|
+
openupgrade.get_legacy_name("discount_applicability"),
|
293
|
+
"discount_applicability",
|
294
|
+
[
|
295
|
+
("on_order", "order"),
|
296
|
+
("cheapest_product", "cheapest"),
|
297
|
+
("specific_products", "specific"),
|
298
|
+
],
|
299
|
+
table="loyalty_reward",
|
300
|
+
)
|
301
|
+
openupgrade.map_values(
|
302
|
+
env.cr,
|
303
|
+
openupgrade.get_legacy_name("discount_mode"),
|
304
|
+
"discount_mode",
|
305
|
+
[("percentage", "percent"), ("fixed_amount", "per_order")],
|
306
|
+
table="loyalty_reward",
|
307
|
+
)
|
308
|
+
|
309
|
+
|
310
|
+
def update_loyalty_rule_data(env):
|
311
|
+
# Determine which program_id and company_id each rule belongs to
|
312
|
+
openupgrade.logged_query(
|
313
|
+
env.cr,
|
314
|
+
"""
|
315
|
+
ALTER TABLE loyalty_rule
|
316
|
+
ADD COLUMN IF NOT EXISTS program_id INT
|
317
|
+
""",
|
318
|
+
)
|
319
|
+
openupgrade.logged_query(
|
320
|
+
env.cr,
|
321
|
+
"""
|
322
|
+
UPDATE loyalty_rule AS lr
|
323
|
+
SET program_id = lp.id
|
324
|
+
FROM loyalty_program AS lp
|
325
|
+
WHERE lr.id = lp.rule_id
|
326
|
+
""",
|
327
|
+
)
|
328
|
+
openupgrade.logged_query(
|
329
|
+
env.cr,
|
330
|
+
"""
|
331
|
+
ALTER TABLE loyalty_rule
|
332
|
+
ADD COLUMN IF NOT EXISTS company_id INT
|
333
|
+
""",
|
334
|
+
)
|
335
|
+
openupgrade.logged_query(
|
336
|
+
env.cr,
|
337
|
+
"""
|
338
|
+
UPDATE loyalty_rule AS lr
|
339
|
+
SET company_id = lp.company_id
|
340
|
+
FROM loyalty_program AS lp
|
341
|
+
WHERE lr.id = lp.rule_id
|
342
|
+
""",
|
343
|
+
)
|
344
|
+
# Copy values from the "promo_code" field of loyalty.program to the "code" field of
|
345
|
+
# loyalty.rule
|
346
|
+
openupgrade.logged_query(
|
347
|
+
env.cr,
|
348
|
+
"""
|
349
|
+
ALTER TABLE loyalty_rule
|
350
|
+
ADD COLUMN IF NOT EXISTS code VARCHAR
|
351
|
+
""",
|
352
|
+
)
|
353
|
+
openupgrade.logged_query(
|
354
|
+
env.cr,
|
355
|
+
"""
|
356
|
+
UPDATE loyalty_rule AS lr
|
357
|
+
SET code = lp.promo_code
|
358
|
+
FROM loyalty_program AS lp
|
359
|
+
WHERE lr.id = lp.rule_id
|
360
|
+
""",
|
361
|
+
)
|
362
|
+
# If the code field is not null, the mode of application of a promotion based on its
|
363
|
+
# rules will be set to "with_code", otherwise it will be "auto"
|
364
|
+
openupgrade.logged_query(
|
365
|
+
env.cr,
|
366
|
+
"""
|
367
|
+
ALTER TABLE loyalty_rule
|
368
|
+
ADD COLUMN IF NOT EXISTS mode VARCHAR
|
369
|
+
""",
|
370
|
+
)
|
371
|
+
openupgrade.logged_query(
|
372
|
+
env.cr,
|
373
|
+
"""
|
374
|
+
UPDATE loyalty_rule
|
375
|
+
SET mode = CASE
|
376
|
+
WHEN code IS NOT NULL THEN 'with_code'
|
377
|
+
ELSE 'auto'
|
378
|
+
END
|
379
|
+
""",
|
380
|
+
)
|
381
|
+
# Establish whether a rule is active based on the status of the program to which the
|
382
|
+
# rule belongs
|
383
|
+
openupgrade.logged_query(
|
384
|
+
env.cr,
|
385
|
+
"""
|
386
|
+
ALTER TABLE loyalty_rule
|
387
|
+
ADD COLUMN IF NOT EXISTS active BOOLEAN
|
388
|
+
""",
|
389
|
+
)
|
390
|
+
openupgrade.logged_query(
|
391
|
+
env.cr,
|
392
|
+
"""
|
393
|
+
UPDATE loyalty_rule AS lr
|
394
|
+
SET active = lp.active
|
395
|
+
FROM loyalty_program AS lp
|
396
|
+
WHERE lr.id = lp.rule_id
|
397
|
+
""",
|
398
|
+
)
|
399
|
+
# Set default values
|
400
|
+
openupgrade.logged_query(
|
401
|
+
env.cr,
|
402
|
+
"""
|
403
|
+
ALTER TABLE loyalty_rule
|
404
|
+
ADD COLUMN IF NOT EXISTS reward_point_amount FLOAT
|
405
|
+
""",
|
406
|
+
)
|
407
|
+
openupgrade.logged_query(
|
408
|
+
env.cr,
|
409
|
+
"""
|
410
|
+
UPDATE loyalty_rule
|
411
|
+
SET reward_point_amount = 1
|
412
|
+
""",
|
413
|
+
)
|
414
|
+
openupgrade.logged_query(
|
415
|
+
env.cr,
|
416
|
+
"""
|
417
|
+
ALTER TABLE loyalty_rule
|
418
|
+
ADD COLUMN IF NOT EXISTS reward_point_mode VARCHAR
|
419
|
+
""",
|
420
|
+
)
|
421
|
+
openupgrade.logged_query(
|
422
|
+
env.cr,
|
423
|
+
"""
|
424
|
+
UPDATE loyalty_rule
|
425
|
+
SET reward_point_mode = 'order'
|
426
|
+
""",
|
427
|
+
)
|
428
|
+
openupgrade.logged_query(
|
429
|
+
env.cr,
|
430
|
+
"""
|
431
|
+
ALTER TABLE loyalty_rule
|
432
|
+
ADD COLUMN IF NOT EXISTS reward_point_split BOOLEAN
|
433
|
+
""",
|
434
|
+
)
|
435
|
+
openupgrade.logged_query(
|
436
|
+
env.cr,
|
437
|
+
"""
|
438
|
+
UPDATE loyalty_rule
|
439
|
+
SET reward_point_split = false
|
440
|
+
""",
|
441
|
+
)
|
442
|
+
openupgrade.map_values(
|
443
|
+
env.cr,
|
444
|
+
openupgrade.get_legacy_name("minimum_amount_tax_mode"),
|
445
|
+
"minimum_amount_tax_mode",
|
446
|
+
[("tax_included", "incl"), ("tax_excluded", "excl")],
|
447
|
+
table="loyalty_rule",
|
448
|
+
)
|
449
|
+
|
450
|
+
|
451
|
+
def update_loyalty_card_data(env):
|
452
|
+
# Determine which company_id each loyalty_card belongs to
|
453
|
+
openupgrade.logged_query(
|
454
|
+
env.cr,
|
455
|
+
"""
|
456
|
+
ALTER TABLE loyalty_card
|
457
|
+
ADD COLUMN IF NOT EXISTS company_id INT
|
458
|
+
""",
|
459
|
+
)
|
460
|
+
openupgrade.logged_query(
|
461
|
+
env.cr,
|
462
|
+
"""
|
463
|
+
UPDATE loyalty_card AS lc
|
464
|
+
SET company_id = lp.company_id
|
465
|
+
FROM loyalty_program AS lp
|
466
|
+
WHERE lc.program_id = lp.id
|
467
|
+
""",
|
468
|
+
)
|
469
|
+
# In v16 points are used to establish the usability of a loyalty card, in case the
|
470
|
+
# card has been used it will be 0, in case it is still valid it will be 1
|
471
|
+
openupgrade.logged_query(
|
472
|
+
env.cr,
|
473
|
+
"""
|
474
|
+
ALTER TABLE loyalty_card
|
475
|
+
ADD COLUMN IF NOT EXISTS points FLOAT
|
476
|
+
""",
|
477
|
+
)
|
478
|
+
openupgrade.logged_query(
|
479
|
+
env.cr,
|
480
|
+
"""
|
481
|
+
UPDATE loyalty_card
|
482
|
+
SET points = CASE
|
483
|
+
WHEN loyalty_card.state IN ('used', 'cancel') THEN 0
|
484
|
+
ELSE 1
|
485
|
+
END
|
486
|
+
""",
|
487
|
+
)
|
488
|
+
|
489
|
+
|
490
|
+
# Field incorporated in new module loyalty_initial_date_validity
|
491
|
+
def fill_date_from_field(env):
|
492
|
+
"""Field incorporated in new module loyalty_initial_date_validity. This field takes
|
493
|
+
the data from the old rule_date_from field of the coupon.rule template."""
|
494
|
+
openupgrade.logged_query(
|
495
|
+
env.cr,
|
496
|
+
"""
|
497
|
+
ALTER TABLE loyalty_program
|
498
|
+
ADD COLUMN IF NOT EXISTS date_from DATE
|
499
|
+
""",
|
500
|
+
)
|
501
|
+
openupgrade.logged_query(
|
502
|
+
env.cr,
|
503
|
+
"""
|
504
|
+
UPDATE loyalty_program
|
505
|
+
SET date_from = loyalty_rule.rule_date_from
|
506
|
+
FROM loyalty_rule
|
507
|
+
WHERE loyalty_program.rule_id = loyalty_rule.id
|
508
|
+
AND loyalty_rule.rule_date_from IS NOT NULL
|
509
|
+
""",
|
510
|
+
)
|
511
|
+
|
512
|
+
|
513
|
+
def check_and_install_module_if_applicable(env):
|
514
|
+
"""
|
515
|
+
The migration script for the loyalty_initial_date_validity modules is included.
|
516
|
+
It is checked if there is any record with a start date in the rules of the
|
517
|
+
established promotion. If there is any record, the modules are installed and the
|
518
|
+
data is migrated from the database.
|
519
|
+
"""
|
520
|
+
env.cr.execute(
|
521
|
+
"""
|
522
|
+
SELECT 1 FROM loyalty_rule WHERE rule_date_from IS NOT NULL
|
523
|
+
""",
|
524
|
+
)
|
525
|
+
has_date_from = env.cr.rowcount
|
526
|
+
if has_date_from:
|
527
|
+
openupgrade.logged_query(
|
528
|
+
env.cr,
|
529
|
+
"""
|
530
|
+
UPDATE ir_module_module
|
531
|
+
SET state='to install'
|
532
|
+
WHERE name = 'loyalty_initial_date_validity' AND state='uninstalled'
|
533
|
+
""",
|
534
|
+
)
|
535
|
+
fill_date_from_field(env)
|
536
|
+
|
537
|
+
|
538
|
+
def delete_sql_constraints(env):
|
539
|
+
# Delete constraints to recreate it
|
540
|
+
openupgrade.delete_sql_constraint_safely(
|
541
|
+
env, "loyalty", "loyalty_rule", "check_coupon_rule_dates"
|
542
|
+
)
|
543
|
+
openupgrade.delete_sql_constraint_safely(
|
544
|
+
env, "loyalty", "loyalty_card", "unique_coupon_code"
|
545
|
+
)
|
546
|
+
|
547
|
+
|
548
|
+
def update_template_keys(env):
|
549
|
+
openupgrade.logged_query(
|
550
|
+
env.cr,
|
551
|
+
"""
|
552
|
+
UPDATE ir_ui_view
|
553
|
+
SET key = 'loyalty.loyalty_report'
|
554
|
+
WHERE key = 'coupon.report_coupon'
|
555
|
+
""",
|
556
|
+
)
|
557
|
+
openupgrade.logged_query(
|
558
|
+
env.cr,
|
559
|
+
"""
|
560
|
+
UPDATE ir_ui_view
|
561
|
+
SET key = 'loyalty.loyalty_report_i18n'
|
562
|
+
WHERE key = 'coupon.report_coupon_i18n'
|
563
|
+
""",
|
564
|
+
)
|
565
|
+
|
566
|
+
|
567
|
+
def merge_gift_card_to_loyalty_card(env):
|
568
|
+
"""Merging the gift_card module into loyalty. To perform this data migration task,
|
569
|
+
we work with gift_card and two tables to be updated, loyalty_program and
|
570
|
+
loyalty_card. First, the data from gift_card will be inserted into loyalty_program
|
571
|
+
to adapt the functionality to the gift card programs in v16, and then the data from
|
572
|
+
gift_card will be copied to loyalty_card and the corresponding records will be
|
573
|
+
referenced."""
|
574
|
+
table = openupgrade.get_model2table("gift.card")
|
575
|
+
if not openupgrade.table_exists(env.cr, table):
|
576
|
+
return
|
577
|
+
# Create records in loyalty_program based on gift_card data
|
578
|
+
openupgrade.logged_query(
|
579
|
+
env.cr,
|
580
|
+
"""
|
581
|
+
INSERT INTO loyalty_program (
|
582
|
+
company_id,
|
583
|
+
create_uid,
|
584
|
+
write_uid,
|
585
|
+
program_type,
|
586
|
+
applies_on,
|
587
|
+
trigger,
|
588
|
+
name,
|
589
|
+
active,
|
590
|
+
portal_visible,
|
591
|
+
create_date,
|
592
|
+
write_date
|
593
|
+
)
|
594
|
+
SELECT
|
595
|
+
company_id,
|
596
|
+
create_uid,
|
597
|
+
write_uid,
|
598
|
+
'gift_card' AS program_type,
|
599
|
+
'future' AS applies_on,
|
600
|
+
'auto' AS trigger,
|
601
|
+
'{"en_US": "Gift Cards"}' AS name,
|
602
|
+
CASE WHEN state = 'valid' THEN true ELSE false END AS active,
|
603
|
+
true AS portal_visible,
|
604
|
+
create_date,
|
605
|
+
write_date
|
606
|
+
FROM gift_card
|
607
|
+
""",
|
608
|
+
)
|
609
|
+
# Add program_id column to gift_card to reference the program it belongs to
|
610
|
+
openupgrade.logged_query(
|
611
|
+
env.cr,
|
612
|
+
"""
|
613
|
+
ALTER TABLE gift_card ADD COLUMN program_id INT;
|
614
|
+
""",
|
615
|
+
)
|
616
|
+
# Update gift_card to link records with loyalty_program
|
617
|
+
openupgrade.logged_query(
|
618
|
+
env.cr,
|
619
|
+
"""
|
620
|
+
UPDATE gift_card gc
|
621
|
+
SET program_id = (
|
622
|
+
SELECT lp.id
|
623
|
+
FROM loyalty_program lp
|
624
|
+
WHERE lp.create_uid = gc.create_uid
|
625
|
+
AND lp.create_date = gc.create_date
|
626
|
+
AND lp.company_id = gc.company_id
|
627
|
+
AND lp.currency_id = gc.currency_id
|
628
|
+
AND lp.program_type = 'gift_card'
|
629
|
+
)
|
630
|
+
""",
|
631
|
+
)
|
632
|
+
# After having correctly referenced the data, we will copy the data from gift_card
|
633
|
+
# to loyalty_card
|
634
|
+
openupgrade.logged_query(
|
635
|
+
env.cr,
|
636
|
+
"""
|
637
|
+
INSERT INTO loyalty_card (
|
638
|
+
program_id,
|
639
|
+
company_id,
|
640
|
+
partner_id,
|
641
|
+
create_uid,
|
642
|
+
write_uid,
|
643
|
+
code,
|
644
|
+
expiration_date,
|
645
|
+
create_date,
|
646
|
+
write_date,
|
647
|
+
points
|
648
|
+
)
|
649
|
+
SELECT
|
650
|
+
program_id,
|
651
|
+
company_id,
|
652
|
+
partner_id,
|
653
|
+
create_uid,
|
654
|
+
write_uid,
|
655
|
+
code,
|
656
|
+
expiration_date AS expired_date,
|
657
|
+
create_date,
|
658
|
+
write_date,
|
659
|
+
initial_amount AS points
|
660
|
+
FROM gift_card
|
661
|
+
""",
|
662
|
+
)
|
663
|
+
# Create records in loyalty_reward based on gift_card data
|
664
|
+
openupgrade.logged_query(
|
665
|
+
env.cr,
|
666
|
+
"""
|
667
|
+
INSERT INTO loyalty_reward (
|
668
|
+
active,
|
669
|
+
program_id,
|
670
|
+
company_id,
|
671
|
+
description,
|
672
|
+
reward_type,
|
673
|
+
discount,
|
674
|
+
discount_mode,
|
675
|
+
discount_applicability,
|
676
|
+
discount_line_product_id,
|
677
|
+
clear_wallet,
|
678
|
+
required_points,
|
679
|
+
reward_product_qty,
|
680
|
+
create_uid,
|
681
|
+
write_uid,
|
682
|
+
discount_product_domain,
|
683
|
+
create_date,
|
684
|
+
write_date
|
685
|
+
)
|
686
|
+
SELECT
|
687
|
+
lp.active,
|
688
|
+
gc.program_id,
|
689
|
+
gc.company_id,
|
690
|
+
'{"en_US": "Gift Card"}',
|
691
|
+
'discount',
|
692
|
+
1,
|
693
|
+
'per_point',
|
694
|
+
'order',
|
695
|
+
sol.product_id,
|
696
|
+
false,
|
697
|
+
1,
|
698
|
+
1,
|
699
|
+
gc.create_uid,
|
700
|
+
gc.write_uid,
|
701
|
+
'[]',
|
702
|
+
gc.create_date,
|
703
|
+
gc.write_date
|
704
|
+
FROM gift_card AS gc
|
705
|
+
JOIN loyalty_program AS lp ON gc.program_id = lp.id
|
706
|
+
JOIN sale_order_line AS sol ON sol.gift_card_id = gc.id
|
707
|
+
""",
|
708
|
+
)
|
709
|
+
# Create records in loyalty_rule based on gift_card data
|
710
|
+
openupgrade.logged_query(
|
711
|
+
env.cr,
|
712
|
+
"""
|
713
|
+
INSERT INTO loyalty_rrule (
|
714
|
+
program_id,
|
715
|
+
company_id,
|
716
|
+
minimun_qty,
|
717
|
+
create_uid,
|
718
|
+
write_uid,
|
719
|
+
product_domain,
|
720
|
+
reward_point_mode,
|
721
|
+
minimun_amount_tax_mode,
|
722
|
+
mode,
|
723
|
+
active,
|
724
|
+
reward_point_split,
|
725
|
+
create_date,
|
726
|
+
write_date,
|
727
|
+
reward_point_amount
|
728
|
+
)
|
729
|
+
SELECT
|
730
|
+
gc.program_id,
|
731
|
+
gc.company_id,
|
732
|
+
1,
|
733
|
+
gc.create_uid,
|
734
|
+
gc.write_uid,
|
735
|
+
'[]',
|
736
|
+
'money',
|
737
|
+
'incl',
|
738
|
+
'auto',
|
739
|
+
lp.active,
|
740
|
+
true,
|
741
|
+
gc.create_date,
|
742
|
+
gc.write_date,
|
743
|
+
1
|
744
|
+
FROM gift_card AS gc
|
745
|
+
JOIN loyalty_program AS lp ON gc.program_id = lp.id
|
746
|
+
""",
|
747
|
+
)
|
748
|
+
# If the card has been used, it calculates the new points value by subtracting the
|
749
|
+
# sum of the absolute price_unit values of the order lines linked to a gift_card
|
750
|
+
# from the initial value of the loyalty card (loyalty_card.initial_amount). In case
|
751
|
+
# there is no order line linked to the gift card, the initial value of the loyalty
|
752
|
+
# card shall be maintained.
|
753
|
+
openupgrade.logged_query(
|
754
|
+
env.cr,
|
755
|
+
"""
|
756
|
+
UPDATE loyalty_card lc
|
757
|
+
SET points =
|
758
|
+
CASE
|
759
|
+
WHEN (
|
760
|
+
SELECT SUM(ABS(sol.price_unit))
|
761
|
+
FROM sale_order_line sol
|
762
|
+
JOIN gift_card gc ON gc.id = sol.gift_card_id
|
763
|
+
WHERE gc.program_id = lc.program_id
|
764
|
+
) IS NOT NULL
|
765
|
+
THEN lc.initial_amount - (
|
766
|
+
SELECT SUM(ABS(sol.price_unit))
|
767
|
+
FROM sale_order_line sol
|
768
|
+
JOIN gift_card gc ON gc.id = sol.gift_card_id
|
769
|
+
WHERE gc.program_id = lc.program_id
|
770
|
+
)
|
771
|
+
ELSE lc.points
|
772
|
+
END
|
773
|
+
FROM gift_card gc
|
774
|
+
WHERE lc.program_id = gc.program_id
|
775
|
+
""",
|
776
|
+
)
|
777
|
+
|
778
|
+
|
779
|
+
@openupgrade.migrate()
|
780
|
+
def migrate(env, version):
|
781
|
+
openupgrade.rename_fields(env, _field_renames)
|
782
|
+
openupgrade.rename_models(env.cr, _models_renames)
|
783
|
+
openupgrade.rename_tables(env.cr, _tables_renames)
|
784
|
+
openupgrade.copy_columns(env.cr, _columns_copies)
|
785
|
+
openupgrade.rename_xmlids(env.cr, _xmlids_renames)
|
786
|
+
# Renamed in rename_xmlids method.
|
787
|
+
# In v15 are noupdate=1 and in v16 are noupdate=0
|
788
|
+
openupgrade.set_xml_ids_noupdate_value(env, "loyalty", _noupdate_xmlids, False)
|
789
|
+
update_loyalty_program_data(env)
|
790
|
+
update_loyalty_reward_data(env)
|
791
|
+
update_loyalty_rule_data(env)
|
792
|
+
update_loyalty_card_data(env)
|
793
|
+
check_and_install_module_if_applicable(env)
|
794
|
+
delete_sql_constraints(env)
|
795
|
+
update_template_keys(env)
|
796
|
+
merge_gift_card_to_loyalty_card(env)
|
@@ -0,0 +1,179 @@
|
|
1
|
+
---Models in module 'loyalty'---
|
2
|
+
new model loyalty.card
|
3
|
+
new model loyalty.rule
|
4
|
+
new model loyalty.program
|
5
|
+
new model loyalty.reward
|
6
|
+
# DONE pre-migration: renamed models and tables
|
7
|
+
|
8
|
+
new model loyalty.generate.wizard [transient]
|
9
|
+
# NOTHING TO DO: transient model
|
10
|
+
|
11
|
+
new model loyalty.mail
|
12
|
+
# NOTHING TO DO: new model
|
13
|
+
|
14
|
+
---Fields in module 'loyalty'---
|
15
|
+
loyalty / loyalty.program / program_type (selection) : NEW required, selection_keys: ['buy_x_get_y', 'coupons', 'ewallet', 'gift_card', 'loyalty', 'next_order_coupons', 'promo_code', 'promotion'], hasdefault: default
|
16
|
+
# DONE pre-migration: update selection_keys
|
17
|
+
|
18
|
+
loyalty / loyalty.program / applies_on (selection) : NEW required, selection_keys: ['both', 'current', 'future'], hasdefault: default
|
19
|
+
loyalty / loyalty.program / trigger (selection) : NEW selection_keys: ['auto', 'with_code'], hasdefault: compute
|
20
|
+
loyalty / loyalty.reward / discount_applicability (selection): NEW selection_keys: ['cheapest', 'order', 'specific'], hasdefault: default
|
21
|
+
loyalty / loyalty.reward / discount_mode (selection) : NEW required, selection_keys: function, hasdefault: default
|
22
|
+
loyalty / loyalty.rule / minimum_amount_tax_mode (selection): NEW required, selection_keys: ['excl', 'incl'], hasdefault: default
|
23
|
+
# DONE pre-migration: rename field and update selection_keys
|
24
|
+
|
25
|
+
loyalty / loyalty.program / max_usage (integer) : NEW
|
26
|
+
loyalty / loyalty.reward / description (char) : NEW hasdefault: compute
|
27
|
+
loyalty / loyalty.reward / discount_product_ids (many2many): NEW relation: product.product
|
28
|
+
loyalty / loyalty.reward / reward_product_qty (integer) : NEW hasdefault: default
|
29
|
+
loyalty / loyalty.rule / minimum_amount (float) : NEW
|
30
|
+
loyalty / loyalty.rule / minimum_qty (integer) : NEW hasdefault: default
|
31
|
+
loyalty / loyalty.rule / product_domain (char) : NEW hasdefault: default
|
32
|
+
# DONE pre-migration: rename field
|
33
|
+
|
34
|
+
loyalty / loyalty.program / active (boolean) : NEW hasdefault: default
|
35
|
+
loyalty / loyalty.program / limit_usage (boolean) : NEW
|
36
|
+
loyalty / loyalty.reward / active (boolean) : NEW hasdefault: default
|
37
|
+
loyalty / loyalty.rule / active (boolean) : NEW hasdefault: default
|
38
|
+
# DONE pre-migration: setting values
|
39
|
+
|
40
|
+
loyalty / loyalty.program / reward_ids (one2many) : NEW relation: loyalty.reward, hasdefault: compute
|
41
|
+
loyalty / loyalty.program / rule_ids (one2many) : NEW relation: loyalty.rule, hasdefault: compute
|
42
|
+
# DONE post-migration: convert data many2many to one2many
|
43
|
+
|
44
|
+
loyalty / loyalty.program / date_to (date) : NEW
|
45
|
+
loyalty / loyalty.reward / program_id (many2one) : NEW relation: loyalty.program, required
|
46
|
+
loyalty / loyalty.reward / company_id (many2one) : NEW relation: res.company, isrelated: related, stored
|
47
|
+
loyalty / loyalty.reward / discount (float) : NEW hasdefault: default
|
48
|
+
loyalty / loyalty.rule / code (char) : NEW hasdefault: compute
|
49
|
+
loyalty / loyalty.rule / company_id (many2one) : NEW relation: res.company, isrelated: related, stored
|
50
|
+
loyalty / loyalty.rule / mode (selection) : NEW selection_keys: ['auto', 'with_code'], hasdefault: compute
|
51
|
+
loyalty / loyalty.rule / program_id (many2one) : NEW relation: loyalty.program, required
|
52
|
+
loyalty / loyalty.card / company_id (many2one) : NEW relation: res.company, isrelated: related, stored
|
53
|
+
loyalty / loyalty.card / points (float) : NEW
|
54
|
+
# DONE pre-migration: fill in data
|
55
|
+
|
56
|
+
loyalty / loyalty.program / portal_visible (boolean) : NEW hasdefault: default
|
57
|
+
loyalty / loyalty.reward / clear_wallet (boolean) : NEW hasdefault: default
|
58
|
+
loyalty / loyalty.reward / required_points (float) : NEW hasdefault: default
|
59
|
+
loyalty / loyalty.rule / reward_point_amount (float) : NEW hasdefault: default
|
60
|
+
loyalty / loyalty.rule / reward_point_mode (selection) : NEW required, selection_keys: function, hasdefault: default
|
61
|
+
loyalty / loyalty.rule / reward_point_split (boolean) : NEW hasdefault: default
|
62
|
+
# DONE pre-migration: set default value
|
63
|
+
|
64
|
+
loyalty / loyalty.program / portal_point_name (char) : NEW hasdefault: default
|
65
|
+
# DONE post-migration: compute value
|
66
|
+
|
67
|
+
loyalty / loyalty.program / name (char) : NEW required
|
68
|
+
loyalty / loyalty.program / sequence (integer) : NEW
|
69
|
+
loyalty / loyalty.program / company_id (many2one) : NEW relation: res.company, hasdefault: default
|
70
|
+
loyalty / loyalty.program / currency_id (many2one) : NEW relation: res.currency, required, hasdefault: compute
|
71
|
+
loyalty / loyalty.program / coupon_ids (one2many) : NEW relation: loyalty.card
|
72
|
+
loyalty / loyalty.reward / discount_line_product_id (many2one): NEW relation: product.product
|
73
|
+
loyalty / loyalty.reward / discount_max_amount (float) : NEW
|
74
|
+
loyalty / loyalty.reward / reward_product_id (many2one) : NEW relation: product.product
|
75
|
+
loyalty / loyalty.reward / reward_type (selection) : NEW required, selection_keys: ['discount', 'product'], hasdefault: default
|
76
|
+
loyalty / loyalty.card / code (char) : NEW required, hasdefault: default
|
77
|
+
loyalty / loyalty.card / expiration_date (date) : NEW
|
78
|
+
loyalty / loyalty.card / partner_id (many2one) : NEW relation: res.partner
|
79
|
+
loyalty / loyalty.card / program_id (many2one) : NEW relation: loyalty.program, hasdefault: default
|
80
|
+
# NOTHING TO DO
|
81
|
+
|
82
|
+
loyalty / loyalty.program / available_on (boolean) : NEW
|
83
|
+
loyalty / loyalty.program / communication_plan_ids (one2many): NEW relation: loyalty.mail, hasdefault: compute
|
84
|
+
loyalty / loyalty.reward / discount_product_category_id (many2one): NEW relation: product.category
|
85
|
+
loyalty / loyalty.reward / discount_product_domain (char): NEW hasdefault: default
|
86
|
+
loyalty / loyalty.reward / discount_product_tag_id (many2one): NEW relation: product.tag
|
87
|
+
loyalty / loyalty.reward / reward_product_tag_id (many2one): NEW relation: product.tag
|
88
|
+
loyalty / loyalty.rule / product_category_id (many2one): NEW relation: product.category
|
89
|
+
loyalty / loyalty.rule / product_ids (many2many) : NEW relation: product.product
|
90
|
+
loyalty / loyalty.rule / product_tag_id (many2one) : NEW relation: product.tag
|
91
|
+
loyalty / loyalty.card / message_follower_ids (one2many): NEW relation: mail.followers
|
92
|
+
loyalty / loyalty.card / message_ids (one2many) : NEW relation: mail.message
|
93
|
+
loyalty / loyalty.card / message_main_attachment_id (many2one): NEW relation: ir.attachment
|
94
|
+
loyalty / loyalty.mail / active (boolean) : NEW hasdefault: default
|
95
|
+
loyalty / loyalty.mail / mail_template_id (many2one) : NEW relation: mail.template, required
|
96
|
+
loyalty / loyalty.mail / points (float) : NEW
|
97
|
+
loyalty / loyalty.mail / program_id (many2one) : NEW relation: loyalty.program, required
|
98
|
+
loyalty / loyalty.mail / trigger (selection) : NEW required, selection_keys: ['create', 'points_reach']
|
99
|
+
# NOTHING TO DO: new field
|
100
|
+
|
101
|
+
---XML records in module 'loyalty'---
|
102
|
+
NEW ir.actions.act_window: loyalty.loyalty_card_action
|
103
|
+
NEW ir.actions.act_window: loyalty.loyalty_generate_wizard_action
|
104
|
+
# DONE pre-migration: rename xmlids
|
105
|
+
|
106
|
+
NEW ir.actions.act_window: loyalty.loyalty_program_discount_loyalty_action
|
107
|
+
NEW ir.actions.act_window: loyalty.loyalty_program_gift_ewallet_action
|
108
|
+
# NOTHING TO DO
|
109
|
+
|
110
|
+
NEW ir.actions.act_window.view: loyalty.action_loyalty_program_form_discount_loyalty
|
111
|
+
NEW ir.actions.act_window.view: loyalty.action_loyalty_program_form_gift_card_ewallet
|
112
|
+
NEW ir.actions.act_window.view: loyalty.action_loyalty_program_tree_discount_loyalty
|
113
|
+
NEW ir.actions.act_window.view: loyalty.action_loyalty_program_tree_gift_card_ewallet
|
114
|
+
# NOTHING TO DO
|
115
|
+
|
116
|
+
NEW ir.actions.report: loyalty.report_gift_card
|
117
|
+
# NOTHING TO DO
|
118
|
+
|
119
|
+
NEW ir.actions.report: loyalty.report_loyalty_card
|
120
|
+
# DONE pre-migration: rename xmlids
|
121
|
+
|
122
|
+
NEW ir.model.access: loyalty.access_loyalty_card
|
123
|
+
NEW ir.model.access: loyalty.access_loyalty_generate_wizard
|
124
|
+
NEW ir.model.access: loyalty.access_loyalty_mail
|
125
|
+
NEW ir.model.access: loyalty.access_loyalty_program
|
126
|
+
NEW ir.model.access: loyalty.access_loyalty_reward
|
127
|
+
NEW ir.model.access: loyalty.access_loyalty_rule
|
128
|
+
# NOTHING TO DO
|
129
|
+
|
130
|
+
NEW ir.model.constraint: loyalty.constraint_loyalty_card_card_code_unique
|
131
|
+
NEW ir.model.constraint: loyalty.constraint_loyalty_program_check_max_usage
|
132
|
+
NEW ir.model.constraint: loyalty.constraint_loyalty_reward_discount_positive
|
133
|
+
NEW ir.model.constraint: loyalty.constraint_loyalty_reward_product_qty_positive
|
134
|
+
NEW ir.model.constraint: loyalty.constraint_loyalty_reward_required_points_positive
|
135
|
+
NEW ir.model.constraint: loyalty.constraint_loyalty_rule_reward_point_amount_positive
|
136
|
+
# DONE pre-migration: safely delete constraint to recreate it
|
137
|
+
|
138
|
+
NEW ir.rule: loyalty.sale_loyalty_card_company_rule (noupdate)
|
139
|
+
NEW ir.rule: loyalty.sale_loyalty_program_company_rule (noupdate)
|
140
|
+
NEW ir.rule: loyalty.sale_loyalty_reward_company_rule (noupdate)
|
141
|
+
NEW ir.rule: loyalty.sale_loyalty_rule_company_rule (noupdate)
|
142
|
+
# DONE post-migration: safely deleted xmlid
|
143
|
+
|
144
|
+
NEW ir.ui.view: loyalty.gift_card_report
|
145
|
+
NEW ir.ui.view: loyalty.gift_card_report_i18n
|
146
|
+
# NOTHING TO DO
|
147
|
+
|
148
|
+
NEW ir.ui.view: loyalty.loyalty_report
|
149
|
+
NEW ir.ui.view: loyalty.loyalty_report_i18n
|
150
|
+
# DONE pre-migration: update template keys
|
151
|
+
|
152
|
+
NEW ir.ui.view: loyalty.loyalty_card_view_form
|
153
|
+
NEW ir.ui.view: loyalty.loyalty_card_view_tree
|
154
|
+
NEW ir.ui.view: loyalty.loyalty_generate_wizard_view_form
|
155
|
+
NEW ir.ui.view: loyalty.loyalty_program_view_form
|
156
|
+
NEW ir.ui.view: loyalty.loyalty_program_view_search
|
157
|
+
NEW ir.ui.view: loyalty.loyalty_program_view_tree
|
158
|
+
# DONE pre-migration: rename xmlids
|
159
|
+
|
160
|
+
NEW ir.ui.view: loyalty.loyalty_card_view_search
|
161
|
+
NEW ir.ui.view: loyalty.loyalty_mail_view_tree
|
162
|
+
NEW ir.ui.view: loyalty.loyalty_program_gift_ewallet_view_form
|
163
|
+
NEW ir.ui.view: loyalty.loyalty_reward_view_form
|
164
|
+
NEW ir.ui.view: loyalty.loyalty_reward_view_kanban
|
165
|
+
NEW ir.ui.view: loyalty.loyalty_rule_view_form
|
166
|
+
NEW ir.ui.view: loyalty.loyalty_rule_view_kanban
|
167
|
+
# NOTHING TO DO
|
168
|
+
|
169
|
+
NEW mail.template: loyalty.mail_template_gift_card [renamed from sale_gift_card module]
|
170
|
+
# NOTHING TO DO
|
171
|
+
|
172
|
+
NEW mail.template: loyalty.mail_template_loyalty_card
|
173
|
+
# DONE pre-migration: rename xmlids and set noupdate value
|
174
|
+
|
175
|
+
NEW product.product: loyalty.ewallet_product_50
|
176
|
+
# NOTHING TO DO
|
177
|
+
|
178
|
+
NEW product.product: loyalty.gift_card_product_50 [renamed from gift_card module] (noupdate switched)
|
179
|
+
# DONE pre-migration: rename and set to noupdate=0
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: odoo-addon-openupgrade_scripts
|
3
|
-
Version: 16.0.1.0.3.
|
3
|
+
Version: 16.0.1.0.3.280
|
4
4
|
Summary: Module that contains all the migrations analysis and scripts for migrate Odoo SA modules.
|
5
5
|
Home-page: https://github.com/OCA/OpenUpgrade
|
6
6
|
Author: Odoo Community Association (OCA)
|
@@ -19,6 +19,7 @@ odoo/addons/openupgrade_scripts/scripts/account_edi_proxy_client/16.0.1.0/upgrad
|
|
19
19
|
odoo/addons/openupgrade_scripts/scripts/account_edi_ubl_cii/16.0.1.0/upgrade_analysis.txt,sha256=ZYIkW8_Nni1fma0yneD50Y1iG2caA9CxwRtc1ARIAf0,1937
|
20
20
|
odoo/addons/openupgrade_scripts/scripts/account_edi_ubl_cii/16.0.1.0/upgrade_analysis_work.txt,sha256=23bKjZGvAbLubnTaQoHvQA5hj9Xa3dv1OqfDNFk9mzw,2021
|
21
21
|
odoo/addons/openupgrade_scripts/scripts/account_fleet/16.0.1.0/upgrade_analysis.txt,sha256=4ACWUpmQ7qvzWsQSP3Z3qbz5Z3YpOFAN7V5wC69WxmA,162
|
22
|
+
odoo/addons/openupgrade_scripts/scripts/account_fleet/16.0.1.0/upgrade_analysis_work.txt,sha256=4ACWUpmQ7qvzWsQSP3Z3qbz5Z3YpOFAN7V5wC69WxmA,162
|
22
23
|
odoo/addons/openupgrade_scripts/scripts/account_payment/16.0.2.0/upgrade_analysis.txt,sha256=1oLZzMBx3SZEmAyklfh3EC_nm_S4v3SOHyp_gfQbSQA,3870
|
23
24
|
odoo/addons/openupgrade_scripts/scripts/account_payment/16.0.2.0/upgrade_analysis_work.txt,sha256=QgVW-HvbkJ0QCnVU8_zhKYhpSjb5cepWn8VIkJVn23E,4388
|
24
25
|
odoo/addons/openupgrade_scripts/scripts/account_payment_invoice_online_payment_patch/16.0.1.0/upgrade_analysis.txt,sha256=wrd72W_QJg34IsT5iezC4oCVY_zMLn53AY1__ZfzB4w,594
|
@@ -350,7 +351,10 @@ odoo/addons/openupgrade_scripts/scripts/l10n_ve/16.0.1.0/noupdate_changes.xml,sh
|
|
350
351
|
odoo/addons/openupgrade_scripts/scripts/l10n_vn/16.0.2.0.1/upgrade_analysis.txt,sha256=YiP48_bJ39QM5p9lAc0CRVCre9ut6pvpS_SVZI0QuuI,1261
|
351
352
|
odoo/addons/openupgrade_scripts/scripts/l10n_za/16.0.1.0/upgrade_analysis.txt,sha256=-rQO3Wi0H1nDy8cjmJOl_yo6IgOxMhm6f4FHP31Qs4g,1739
|
352
353
|
odoo/addons/openupgrade_scripts/scripts/link_tracker/16.0.1.1/upgrade_analysis.txt,sha256=Ph-CuEBHU1WnRHswlXmC4YvE1LOo-0EpydbqIJ4VBSU,159
|
354
|
+
odoo/addons/openupgrade_scripts/scripts/loyalty/16.0.1.0/post-migration.py,sha256=XP28cFyPCipISepMu7e2nrSp--vPvoJARj5fr8M86ig,1963
|
355
|
+
odoo/addons/openupgrade_scripts/scripts/loyalty/16.0.1.0/pre-migration.py,sha256=lgNThpg84E_fWkQdaC9qW2DuEUsDMvSyOXCZT6PaeFE,23021
|
353
356
|
odoo/addons/openupgrade_scripts/scripts/loyalty/16.0.1.0/upgrade_analysis.txt,sha256=N2waWK_WAcEsvrjG2mgGAVb4WLl76tVH7oU880Ei2mk,14561
|
357
|
+
odoo/addons/openupgrade_scripts/scripts/loyalty/16.0.1.0/upgrade_analysis_work.txt,sha256=CW3VLkf5gsTyuA_YHUeqxDKSyuXn5x5MBuMz8FYOuKY,11368
|
354
358
|
odoo/addons/openupgrade_scripts/scripts/loyalty_delivery/16.0.1.0/upgrade_analysis.txt,sha256=8TnNXqdMPDyxBHuN4C6DaxijUWSLag4XVe15HbTg4BI,419
|
355
359
|
odoo/addons/openupgrade_scripts/scripts/lunch/16.0.1.0/upgrade_analysis.txt,sha256=Vx_uxoW1IhIJF-UcG6q09VSnBCeY0VjBc1YE71RXgZs,593
|
356
360
|
odoo/addons/openupgrade_scripts/scripts/lunch/16.0.1.0/upgrade_analysis_work.txt,sha256=4szGZDLH6jY7ZNGZq0aSB6ozmAMyMWv47yZYult2gTg,660
|
@@ -687,6 +691,7 @@ odoo/addons/openupgrade_scripts/scripts/website_sale_delivery/16.0.1.0/upgrade_a
|
|
687
691
|
odoo/addons/openupgrade_scripts/scripts/website_sale_delivery/16.0.1.0/upgrade_analysis_work.txt,sha256=FvJYgjfqYqFPK1axHqCNC8t9CpXFsjIAmaWivVq1aZQ,202
|
688
692
|
odoo/addons/openupgrade_scripts/scripts/website_sale_delivery_mondialrelay/16.0.0.1/upgrade_analysis.txt,sha256=BCxNxJ48VdYt5bV337TfePuo0MN-uhhRUqYwC-bPp0c,433
|
689
693
|
odoo/addons/openupgrade_scripts/scripts/website_sale_digital/16.0.0.1/upgrade_analysis.txt,sha256=ow2g8lrO5k51Ec1gCFTG5_8D9pnfJAzxeVyk5au2qiA,183
|
694
|
+
odoo/addons/openupgrade_scripts/scripts/website_sale_digital/16.0.0.1/upgrade_analysis_work.txt,sha256=9xGa08jnG6Dce9tsHCeCKpNn_IkfOqd7pRLQLXyWZZg,199
|
690
695
|
odoo/addons/openupgrade_scripts/scripts/website_sale_loyalty/16.0.1.0/upgrade_analysis.txt,sha256=M753BVZ9F-ZP039qyWr2V8SMeehrt8iizS0T-cwNVmU,3308
|
691
696
|
odoo/addons/openupgrade_scripts/scripts/website_sale_picking/16.0.1.0/upgrade_analysis.txt,sha256=TUeJygEuVPq6CRW7o-1WlNj-ytg3qMwvIrn1GSLjJK4,1075
|
692
697
|
odoo/addons/openupgrade_scripts/scripts/website_sale_product_configurator/16.0.0.1/upgrade_analysis.txt,sha256=AoU15nW3TnH5g6D1uusr9M5j0rUdG0rsHxfwTgML3D4,350
|
@@ -709,7 +714,7 @@ odoo/addons/openupgrade_scripts/scripts/website_twitter/16.0.1.0/upgrade_analysi
|
|
709
714
|
odoo/addons/openupgrade_scripts/static/description/banner.png,sha256=KTIBu4gfxeZVw9zjs_fivTgFEOeaAorlBxajmCA1p6k,26859
|
710
715
|
odoo/addons/openupgrade_scripts/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
|
711
716
|
odoo/addons/openupgrade_scripts/static/description/index.html,sha256=IOWtZdzr_jN_Dja8HYIfzIxrO8NE5pFgazKJtPsLKw0,12678
|
712
|
-
odoo_addon_openupgrade_scripts-16.0.1.0.3.
|
713
|
-
odoo_addon_openupgrade_scripts-16.0.1.0.3.
|
714
|
-
odoo_addon_openupgrade_scripts-16.0.1.0.3.
|
715
|
-
odoo_addon_openupgrade_scripts-16.0.1.0.3.
|
717
|
+
odoo_addon_openupgrade_scripts-16.0.1.0.3.280.dist-info/METADATA,sha256=k1b7o8KT70Kb6RP472AbUdU6anJIBEjUy22NpZQficY,3790
|
718
|
+
odoo_addon_openupgrade_scripts-16.0.1.0.3.280.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
719
|
+
odoo_addon_openupgrade_scripts-16.0.1.0.3.280.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
|
720
|
+
odoo_addon_openupgrade_scripts-16.0.1.0.3.280.dist-info/RECORD,,
|
File without changes
|