odoo-addon-openupgrade-scripts 16.0.1.0.3.272__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.
@@ -0,0 +1,4 @@
1
+ ---Models in module 'account_fleet'---
2
+ ---Fields in module 'account_fleet'---
3
+ ---XML records in module 'account_fleet'---
4
+ ---nothing has changed in this module--
@@ -0,0 +1,5 @@
1
+ ---Models in module 'l10n_fr_fec'---
2
+ ---Fields in module 'l10n_fr_fec'---
3
+ ---XML records in module 'l10n_fr_fec'---
4
+ ---nothing has changed in this module--
5
+ # NOTHING TO DO
@@ -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
@@ -0,0 +1,9 @@
1
+ ---Models in module 'purchase_requisition_stock'---
2
+ ---Fields in module 'purchase_requisition_stock'---
3
+ purchase_requisition_stock / purchase.requisition / procurement_group_id (many2one): DEL relation: procurement.group
4
+ # NOTHING TO DO: handle at purchase_requisition: the POs being directly linked to each other
5
+
6
+ ---XML records in module 'purchase_requisition_stock'---
7
+ NEW ir.ui.view: purchase_requisition_stock.purchase_order_form_inherit_purchase_requisition_stock
8
+ NEW ir.ui.view: purchase_requisition_stock.purchase_order_line_compare_tree_inherit_purchase_requisition_stock
9
+ # NOTHING TO DO: noupdate="0" records
@@ -0,0 +1,24 @@
1
+ ---Models in module 'stock_picking_batch'---
2
+ ---Fields in module 'stock_picking_batch'---
3
+ stock_picking_batch / stock.move.line / batch_id (many2one) : is now stored
4
+ # NOTHING TO DO: Resolved by ORM with an SQL query
5
+
6
+ stock_picking_batch / stock.picking.type / auto_batch (boolean) : NEW
7
+ stock_picking_batch / stock.picking.type / batch_group_by_dest_loc (boolean): NEW
8
+ stock_picking_batch / stock.picking.type / batch_group_by_destination (boolean): NEW
9
+ stock_picking_batch / stock.picking.type / batch_group_by_partner (boolean): NEW
10
+ stock_picking_batch / stock.picking.type / batch_group_by_src_loc (boolean): NEW
11
+ stock_picking_batch / stock.picking.type / batch_max_lines (integer) : NEW
12
+ stock_picking_batch / stock.picking.type / batch_max_pickings (integer) : NEW
13
+ # NOTHING TO DO: New feature for putting pickings in batches automatically. The default False for auto_batch preserves previous behavior.
14
+
15
+ stock_picking_batch / stock.picking.type / batch_auto_confirm (boolean) : NEW hasdefault: default
16
+ # NOTHING TO DO: Although the default is True, this only acts if auto_batch, so it's not a problem.
17
+
18
+ ---XML records in module 'stock_picking_batch'---
19
+ NEW ir.ui.view: stock_picking_batch.stock_move_line_view_search_inherit_stock_picking_batch
20
+ NEW ir.ui.view: stock_picking_batch.stock_picking_form_inherit
21
+ NEW ir.ui.view: stock_picking_batch.view_move_line_tree_inherit_stock_picking_batch
22
+ NEW ir.ui.view: stock_picking_batch.view_picking_internal_search_inherit
23
+ NEW ir.ui.view: stock_picking_batch.view_picking_type_form_inherit
24
+ # NOTHING TO DO: New ir noupdate=0 records
@@ -0,0 +1,5 @@
1
+ ---Models in module 'website_sale_digital'---
2
+ ---Fields in module 'website_sale_digital'---
3
+ ---XML records in module 'website_sale_digital'---
4
+ ---nothing has changed in this module--
5
+ # NOTHING TO DO
@@ -1,12 +1,11 @@
1
1
  Metadata-Version: 2.1
2
- Name: odoo-addon-openupgrade-scripts
3
- Version: 16.0.1.0.3.272
2
+ Name: odoo-addon-openupgrade_scripts
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)
7
7
  Author-email: support@odoo-community.org
8
8
  License: AGPL-3
9
- Platform: UNKNOWN
10
9
  Classifier: Programming Language :: Python
11
10
  Classifier: Framework :: Odoo
12
11
  Classifier: Framework :: Odoo :: 16.0
@@ -101,5 +100,3 @@ promote its widespread use.
101
100
  This module is part of the `OCA/OpenUpgrade <https://github.com/OCA/OpenUpgrade/tree/16.0/openupgrade_scripts>`_ project on GitHub.
102
101
 
103
102
  You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
104
-
105
-
@@ -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
@@ -258,6 +259,7 @@ odoo/addons/openupgrade_scripts/scripts/l10n_fr/16.0.2.1/upgrade_analysis.txt,sh
258
259
  odoo/addons/openupgrade_scripts/scripts/l10n_fr/16.0.2.1/upgrade_analysis_work.txt,sha256=mkRkU4-eJvjnxMzzwPRS1IhLCRAH82iykrZ0Y-b_puE,6336
259
260
  odoo/addons/openupgrade_scripts/scripts/l10n_fr_facturx_chorus_pro/16.0.1.0/upgrade_analysis.txt,sha256=pCTtVTixXRGAtRdfheNzj6S7NvIIcoimpk6UWyiip48,201
260
261
  odoo/addons/openupgrade_scripts/scripts/l10n_fr_fec/16.0.1.0/upgrade_analysis.txt,sha256=965QMMGisRYTsw_asToJYNh4sQVPPR39fpWryP-gSIk,156
262
+ odoo/addons/openupgrade_scripts/scripts/l10n_fr_fec/16.0.1.0/upgrade_analysis_work.txt,sha256=3qHDUj0Hd9uS0hgao2A8mZqV0yr6fd72wNUW8JDDiGc,172
261
263
  odoo/addons/openupgrade_scripts/scripts/l10n_fr_pos_cert/16.0.1.0/upgrade_analysis.txt,sha256=uNmsVRbRUdcWQ-cDLOhk0aYM0eTS1v6UnnGWe6cQEAU,198
262
264
  odoo/addons/openupgrade_scripts/scripts/l10n_gcc_invoice/16.0.1.0.0/upgrade_analysis.txt,sha256=uSovMVe_yQRYKAdvYvZ9jMjk4gyf9bb8P6mAzbQ_pTU,171
263
265
  odoo/addons/openupgrade_scripts/scripts/l10n_generic_coa/16.0.1.1/upgrade_analysis.txt,sha256=UySkY4wQGgql23iS2zexWd6xTbI8e7GIkDBxjv6XVAw,263
@@ -349,7 +351,10 @@ odoo/addons/openupgrade_scripts/scripts/l10n_ve/16.0.1.0/noupdate_changes.xml,sh
349
351
  odoo/addons/openupgrade_scripts/scripts/l10n_vn/16.0.2.0.1/upgrade_analysis.txt,sha256=YiP48_bJ39QM5p9lAc0CRVCre9ut6pvpS_SVZI0QuuI,1261
350
352
  odoo/addons/openupgrade_scripts/scripts/l10n_za/16.0.1.0/upgrade_analysis.txt,sha256=-rQO3Wi0H1nDy8cjmJOl_yo6IgOxMhm6f4FHP31Qs4g,1739
351
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
352
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
353
358
  odoo/addons/openupgrade_scripts/scripts/loyalty_delivery/16.0.1.0/upgrade_analysis.txt,sha256=8TnNXqdMPDyxBHuN4C6DaxijUWSLag4XVe15HbTg4BI,419
354
359
  odoo/addons/openupgrade_scripts/scripts/lunch/16.0.1.0/upgrade_analysis.txt,sha256=Vx_uxoW1IhIJF-UcG6q09VSnBCeY0VjBc1YE71RXgZs,593
355
360
  odoo/addons/openupgrade_scripts/scripts/lunch/16.0.1.0/upgrade_analysis_work.txt,sha256=4szGZDLH6jY7ZNGZq0aSB6ozmAMyMWv47yZYult2gTg,660
@@ -511,6 +516,7 @@ odoo/addons/openupgrade_scripts/scripts/purchase_requisition/16.0.0.1/pre-migrat
511
516
  odoo/addons/openupgrade_scripts/scripts/purchase_requisition/16.0.0.1/upgrade_analysis.txt,sha256=hu4bNoVAuOmaDuK0IQDQV5y3J0lg4r58gCoH6fYrLEM,2295
512
517
  odoo/addons/openupgrade_scripts/scripts/purchase_requisition/16.0.0.1/upgrade_analysis_work.txt,sha256=4IENy2UZb-C4xYd2ZC_NGRLk7ecx3AiiXYvQ48k5tkU,2577
513
518
  odoo/addons/openupgrade_scripts/scripts/purchase_requisition_stock/16.0.1.2/upgrade_analysis.txt,sha256=dmjMOLEfLnKWEfqynh-dOtbg8CmU1sLEE4gsZcsZ-ks,491
519
+ odoo/addons/openupgrade_scripts/scripts/purchase_requisition_stock/16.0.1.2/upgrade_analysis_work.txt,sha256=94jWrbWEUcJEFELwa4c4v1UXo6BC1l-kXgdVj3b18OM,623
514
520
  odoo/addons/openupgrade_scripts/scripts/purchase_stock/16.0.1.2/pre-migration.py,sha256=gDGPEvpqn2TY0U1qKin7w5JY2p6CokhTIq3tk-ddWfM,1539
515
521
  odoo/addons/openupgrade_scripts/scripts/purchase_stock/16.0.1.2/upgrade_analysis.txt,sha256=ubjqaHWBjLwCd33dZaMpR37J5PVIXWCABnw6dpWjALY,702
516
522
  odoo/addons/openupgrade_scripts/scripts/purchase_stock/16.0.1.2/upgrade_analysis_work.txt,sha256=-xhjYmpVgBLSUdj8kMF0o65-rIieuWhbkrSv5Sqw4GM,1009
@@ -595,6 +601,7 @@ odoo/addons/openupgrade_scripts/scripts/stock_dropshipping/16.0.1.0/upgrade_anal
595
601
  odoo/addons/openupgrade_scripts/scripts/stock_landed_costs/16.0.1.1/upgrade_analysis.txt,sha256=WFU81Vt8XuuK9wkxAIUUtohVnUdyOzBtg08-3QGxKh8,177
596
602
  odoo/addons/openupgrade_scripts/scripts/stock_landed_costs/16.0.1.1/upgrade_analysis_work.txt,sha256=Go5HHuQCzgwpBFv_trXxF6i0RpzG2eK_HP4831Lcn6A,193
597
603
  odoo/addons/openupgrade_scripts/scripts/stock_picking_batch/16.0.1.0/upgrade_analysis.txt,sha256=-vWDvtNd94zMYD8LIYGJT_AiaYq4lZvCh4Jv9vL4paE,1327
604
+ odoo/addons/openupgrade_scripts/scripts/stock_picking_batch/16.0.1.0/upgrade_analysis_work.txt,sha256=dvB5bbCPkl_jK0eQM9kDdzwehtouWoSoMB2ksRHinkQ,1662
598
605
  odoo/addons/openupgrade_scripts/scripts/stock_sms/16.0.1.0/upgrade_analysis.txt,sha256=WmtD-QRPZnTjNKvErYIFRz_n-t4C2ttxPz_9eYkTOrw,150
599
606
  odoo/addons/openupgrade_scripts/scripts/stock_sms/16.0.1.0/upgrade_analysis_work.txt,sha256=fvMhLfNLamiAHGIL_lGhW-LydBLO-uAYkX5bNJGfOu4,166
600
607
  odoo/addons/openupgrade_scripts/scripts/survey/16.0.3.5/post-migration.py,sha256=6-FUi-2MkJaOtE7qff_gIJBvPHdT6ugIf_ncjfpqatA,906
@@ -684,6 +691,7 @@ odoo/addons/openupgrade_scripts/scripts/website_sale_delivery/16.0.1.0/upgrade_a
684
691
  odoo/addons/openupgrade_scripts/scripts/website_sale_delivery/16.0.1.0/upgrade_analysis_work.txt,sha256=FvJYgjfqYqFPK1axHqCNC8t9CpXFsjIAmaWivVq1aZQ,202
685
692
  odoo/addons/openupgrade_scripts/scripts/website_sale_delivery_mondialrelay/16.0.0.1/upgrade_analysis.txt,sha256=BCxNxJ48VdYt5bV337TfePuo0MN-uhhRUqYwC-bPp0c,433
686
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
687
695
  odoo/addons/openupgrade_scripts/scripts/website_sale_loyalty/16.0.1.0/upgrade_analysis.txt,sha256=M753BVZ9F-ZP039qyWr2V8SMeehrt8iizS0T-cwNVmU,3308
688
696
  odoo/addons/openupgrade_scripts/scripts/website_sale_picking/16.0.1.0/upgrade_analysis.txt,sha256=TUeJygEuVPq6CRW7o-1WlNj-ytg3qMwvIrn1GSLjJK4,1075
689
697
  odoo/addons/openupgrade_scripts/scripts/website_sale_product_configurator/16.0.0.1/upgrade_analysis.txt,sha256=AoU15nW3TnH5g6D1uusr9M5j0rUdG0rsHxfwTgML3D4,350
@@ -706,7 +714,7 @@ odoo/addons/openupgrade_scripts/scripts/website_twitter/16.0.1.0/upgrade_analysi
706
714
  odoo/addons/openupgrade_scripts/static/description/banner.png,sha256=KTIBu4gfxeZVw9zjs_fivTgFEOeaAorlBxajmCA1p6k,26859
707
715
  odoo/addons/openupgrade_scripts/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
708
716
  odoo/addons/openupgrade_scripts/static/description/index.html,sha256=IOWtZdzr_jN_Dja8HYIfzIxrO8NE5pFgazKJtPsLKw0,12678
709
- odoo_addon_openupgrade_scripts-16.0.1.0.3.272.dist-info/METADATA,sha256=9d7HD3_Yx22fH-UBuvnqeQx5nQ4eOAwAZ5FirN8SFuY,3810
710
- odoo_addon_openupgrade_scripts-16.0.1.0.3.272.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
711
- odoo_addon_openupgrade_scripts-16.0.1.0.3.272.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
712
- odoo_addon_openupgrade_scripts-16.0.1.0.3.272.dist-info/RECORD,,
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,,