odoo-addon-base-tier-validation 16.0.2.6.1__py3-none-any.whl → 16.0.3.0.0__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.
@@ -11,7 +11,7 @@ Base Tier Validation
11
11
  !! This file is generated by oca-gen-addon-readme !!
12
12
  !! changes will be overwritten. !!
13
13
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
14
- !! source digest: sha256:c5fce74970b8af03a0bae9725d32234b1e56c0bf89e1151e6620e1ad36a4d359
14
+ !! source digest: sha256:f3093af0e62d45b3f67e36b93c79f6b5a0ba627d57ae5c78d3242c7df5f1deac
15
15
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
16
16
 
17
17
  .. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
@@ -3,7 +3,7 @@
3
3
  {
4
4
  "name": "Base Tier Validation",
5
5
  "summary": "Implement a validation process based on tiers.",
6
- "version": "16.0.2.6.1",
6
+ "version": "16.0.3.0.0",
7
7
  "development_status": "Mature",
8
8
  "maintainers": ["LoisRForgeFlow"],
9
9
  "category": "Tools",
@@ -6,7 +6,7 @@
6
6
  forcecreate="1"
7
7
  >
8
8
  <field name="name">Tier Validation Requested</field>
9
- <field name="default" eval="True" />
9
+ <field name="default" eval="False" />
10
10
  <field name="internal" eval="True" />
11
11
  <field name="hidden" eval="True" />
12
12
  </record>
@@ -16,7 +16,7 @@
16
16
  forcecreate="1"
17
17
  >
18
18
  <field name="name">Tier Validation Accepted Notification</field>
19
- <field name="default" eval="True" />
19
+ <field name="default" eval="False" />
20
20
  <field name="internal" eval="True" />
21
21
  <field name="hidden" eval="True" />
22
22
  </record>
@@ -26,7 +26,7 @@
26
26
  forcecreate="1"
27
27
  >
28
28
  <field name="name">Tier Validation Rejected Notification</field>
29
- <field name="default" eval="True" />
29
+ <field name="default" eval="False" />
30
30
  <field name="internal" eval="True" />
31
31
  <field name="hidden" eval="True" />
32
32
  </record>
@@ -36,7 +36,7 @@
36
36
  forcecreate="1"
37
37
  >
38
38
  <field name="name">Tier Validation Restarted</field>
39
- <field name="default" eval="True" />
39
+ <field name="default" eval="False" />
40
40
  <field name="internal" eval="True" />
41
41
  <field name="hidden" eval="True" />
42
42
  </record>
@@ -479,13 +479,29 @@ class TierValidation(models.AbstractModel):
479
479
  reviews_to_notify = user_reviews.filtered(
480
480
  lambda r: r.definition_id.notify_on_accepted
481
481
  )
482
+ # We need to notify all pending users if there is approve sequence
483
+ if tier_reviews and any(review.approve_sequence for review in tier_reviews):
484
+ reviews_to_notify = self.review_ids.filtered(
485
+ lambda r: r.status == "pending" and r.definition_id.notify_on_accepted
486
+ )
487
+ # If there are approve sequence, only the following should be
488
+ # considered to notify
489
+ if reviews_to_notify and any(
490
+ review.approve_sequence for review in reviews_to_notify
491
+ ):
492
+ reviews_to_notify = reviews_to_notify.filtered(
493
+ lambda x: x.approve_sequence
494
+ )[0]
482
495
  if reviews_to_notify:
483
496
  subscribe = "message_subscribe"
484
497
  if hasattr(self, subscribe):
485
498
  getattr(self, subscribe)(
486
499
  partner_ids=reviews_to_notify.mapped("reviewer_ids")
487
500
  .mapped("partner_id")
488
- .ids
501
+ .ids,
502
+ subtype_ids=self.env.ref(
503
+ self._get_accepted_notification_subtype()
504
+ ).ids,
489
505
  )
490
506
  for review in reviews_to_notify:
491
507
  rec = self.env[review.model].browse(review.res_id)
@@ -600,13 +616,29 @@ class TierValidation(models.AbstractModel):
600
616
  reviews_to_notify = user_reviews.filtered(
601
617
  lambda r: r.definition_id.notify_on_rejected
602
618
  )
619
+ # We need to notify all pending users if there is approve sequence
620
+ if tier_reviews and any(review.approve_sequence for review in tier_reviews):
621
+ reviews_to_notify = self.review_ids.filtered(
622
+ lambda r: r.status == "pending" and r.definition_id.notify_on_rejected
623
+ )
624
+ # If there are approve sequence, only the following should be
625
+ # considered to notify
626
+ if reviews_to_notify and any(
627
+ review.approve_sequence for review in reviews_to_notify
628
+ ):
629
+ reviews_to_notify = reviews_to_notify.filtered(
630
+ lambda x: x.approve_sequence
631
+ )[0]
603
632
  if reviews_to_notify:
604
633
  subscribe = "message_subscribe"
605
634
  if hasattr(self, subscribe):
606
635
  getattr(self, subscribe)(
607
636
  partner_ids=reviews_to_notify.mapped("reviewer_ids")
608
637
  .mapped("partner_id")
609
- .ids
638
+ .ids,
639
+ subtype_ids=self.env.ref(
640
+ self._get_rejected_notification_subtype()
641
+ ).ids,
610
642
  )
611
643
  for review in reviews_to_notify:
612
644
  rec = self.env[review.model].browse(review.res_id)
@@ -626,7 +658,10 @@ class TierValidation(models.AbstractModel):
626
658
  # Subscribe reviewers and notify
627
659
  if len(users_to_notify) > 0:
628
660
  getattr(rec, subscribe)(
629
- partner_ids=users_to_notify.mapped("partner_id").ids
661
+ partner_ids=users_to_notify.mapped("partner_id").ids,
662
+ subtype_ids=self.env.ref(
663
+ self._get_requested_notification_subtype()
664
+ ).ids,
630
665
  )
631
666
  getattr(rec, post)(
632
667
  subtype_xmlid=self._get_requested_notification_subtype(),
@@ -716,7 +751,12 @@ class TierValidation(models.AbstractModel):
716
751
  lambda r: r.definition_id.notify_on_restarted
717
752
  )
718
753
  if hasattr(self, subscribe):
719
- getattr(self, subscribe)(partner_ids=partners_to_notify_ids)
754
+ getattr(self, subscribe)(
755
+ partner_ids=partners_to_notify_ids,
756
+ subtype_ids=self.env.ref(
757
+ self._get_restarted_notification_subtype()
758
+ ).ids,
759
+ )
720
760
  rec._notify_restarted_review()
721
761
 
722
762
  def reevaluate_reviews(self):
@@ -372,7 +372,7 @@ ul.auto-toc {
372
372
  !! This file is generated by oca-gen-addon-readme !!
373
373
  !! changes will be overwritten. !!
374
374
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
375
- !! source digest: sha256:c5fce74970b8af03a0bae9725d32234b1e56c0bf89e1151e6620e1ad36a4d359
375
+ !! source digest: sha256:f3093af0e62d45b3f67e36b93c79f6b5a0ba627d57ae5c78d3242c7df5f1deac
376
376
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
377
377
  <p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Mature" src="https://img.shields.io/badge/maturity-Mature-brightgreen.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/server-ux/tree/16.0/base_tier_validation"><img alt="OCA/server-ux" src="https://img.shields.io/badge/github-OCA%2Fserver--ux-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/server-ux-16-0/server-ux-16-0-base_tier_validation"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/server-ux&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
378
378
  <p>Validating some operations is a common need across different areas in a company
@@ -1,5 +1,4 @@
1
1
  # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
2
2
 
3
- from . import common
4
3
  from . import test_tier_validation
5
4
  from . import test_tier_validation_reminder
@@ -1050,6 +1050,159 @@ class TierTierValidation(CommonTierValidation):
1050
1050
 
1051
1051
  self.assertEqual(len(reviews), 2)
1052
1052
 
1053
+ def test_30_request_validation(self):
1054
+ # Create new test record
1055
+ test_record = self.test_model.create({"test_field": 2.5})
1056
+ # Create tier definitions for both tester models
1057
+ self.tier_definition.write(
1058
+ {
1059
+ "approve_sequence": True,
1060
+ "notify_on_create": True,
1061
+ }
1062
+ )
1063
+ def_2 = self.tier_def_obj.create(
1064
+ {
1065
+ "model_id": self.tester_model.id,
1066
+ "review_type": "individual",
1067
+ "reviewer_id": self.test_user_2.id,
1068
+ "sequence": 20,
1069
+ "approve_sequence": True,
1070
+ "notify_on_create": False,
1071
+ "notify_on_accepted": True,
1072
+ }
1073
+ )
1074
+ def_3 = self.tier_def_obj.create(
1075
+ {
1076
+ "model_id": self.tester_model.id,
1077
+ "review_type": "individual",
1078
+ "reviewer_id": self.test_user_3_multi_company.id,
1079
+ "sequence": 10,
1080
+ "approve_sequence": True,
1081
+ "notify_on_create": False,
1082
+ "notify_on_accepted": True,
1083
+ }
1084
+ )
1085
+ mt_tier_validation_requested = self.env.ref(
1086
+ "base_tier_validation.mt_tier_validation_requested"
1087
+ )
1088
+ mt_tier_validation_accepted = self.env.ref(
1089
+ "base_tier_validation.mt_tier_validation_accepted"
1090
+ )
1091
+ test_record.request_validation()
1092
+ review_1 = test_record.review_ids.filtered(
1093
+ lambda x: x.definition_id == self.tier_definition
1094
+ )
1095
+ self.assertEqual(review_1.status, "pending")
1096
+ review_2 = test_record.review_ids.filtered(lambda x: x.definition_id == def_2)
1097
+ self.assertEqual(review_2.status, "pending")
1098
+ review_3 = test_record.review_ids.filtered(lambda x: x.definition_id == def_3)
1099
+ self.assertEqual(review_3.status, "pending")
1100
+ followers = test_record.message_follower_ids
1101
+ self.assertIn(self.test_user_1.partner_id, followers.mapped("partner_id"))
1102
+ follower_1 = followers.filtered(
1103
+ lambda x: x.partner_id == self.test_user_1.partner_id
1104
+ )
1105
+ self.assertIn(mt_tier_validation_requested, follower_1.subtype_ids)
1106
+ self.assertNotIn(mt_tier_validation_accepted, follower_1.subtype_ids)
1107
+ self.assertNotIn(self.test_user_2.partner_id, followers.mapped("partner_id"))
1108
+ self.assertNotIn(
1109
+ self.test_user_3_multi_company.partner_id, followers.mapped("partner_id")
1110
+ )
1111
+ old_messages = test_record.message_ids
1112
+ test_record.with_user(self.test_user_1).validate_tier()
1113
+ new_messages = test_record.message_ids - old_messages
1114
+ self.assertEqual(len(new_messages), 1)
1115
+ self.assertEqual(new_messages.subtype_id, mt_tier_validation_accepted)
1116
+ self.assertEqual(self.test_user_2.partner_id, new_messages.notified_partner_ids)
1117
+ self.assertEqual(review_1.status, "approved")
1118
+ self.assertEqual(review_2.status, "pending")
1119
+ self.assertEqual(review_3.status, "pending")
1120
+ followers = test_record.message_follower_ids
1121
+ self.assertIn(self.test_user_1.partner_id, followers.mapped("partner_id"))
1122
+ self.assertIn(self.test_user_2.partner_id, followers.mapped("partner_id"))
1123
+ follower_2 = followers.filtered(
1124
+ lambda x: x.partner_id == self.test_user_2.partner_id
1125
+ )
1126
+ self.assertNotIn(mt_tier_validation_requested, follower_2.subtype_ids)
1127
+ self.assertIn(mt_tier_validation_accepted, follower_2.subtype_ids)
1128
+ self.assertNotIn(
1129
+ self.test_user_3_multi_company.partner_id, followers.mapped("partner_id")
1130
+ )
1131
+ old_messages = test_record.message_ids
1132
+ test_record.with_user(self.test_user_2).validate_tier()
1133
+ new_messages = test_record.message_ids - old_messages
1134
+ self.assertEqual(len(new_messages), 1)
1135
+ self.assertEqual(new_messages.subtype_id, mt_tier_validation_accepted)
1136
+ self.assertEqual(
1137
+ self.test_user_3_multi_company.partner_id, new_messages.notified_partner_ids
1138
+ )
1139
+ self.assertEqual(review_1.status, "approved")
1140
+ self.assertEqual(review_2.status, "approved")
1141
+ self.assertEqual(review_3.status, "pending")
1142
+ followers = test_record.message_follower_ids
1143
+ self.assertIn(self.test_user_1.partner_id, followers.mapped("partner_id"))
1144
+ self.assertIn(self.test_user_2.partner_id, followers.mapped("partner_id"))
1145
+ self.assertIn(
1146
+ self.test_user_3_multi_company.partner_id, followers.mapped("partner_id")
1147
+ )
1148
+ follower_3 = followers.filtered(
1149
+ lambda x: x.partner_id == self.test_user_3_multi_company.partner_id
1150
+ )
1151
+ self.assertNotIn(mt_tier_validation_requested, follower_3.subtype_ids)
1152
+ self.assertIn(mt_tier_validation_accepted, follower_3.subtype_ids)
1153
+ old_messages = test_record.message_ids
1154
+ test_record.with_user(self.test_user_3_multi_company).validate_tier()
1155
+ new_messages = test_record.message_ids - old_messages
1156
+ self.assertEqual(len(new_messages), 0)
1157
+
1158
+ def test_31_request_validation(self):
1159
+ # Create new test record
1160
+ test_record = self.test_model.create({"test_field": 2.5})
1161
+ # Create tier definitions for both tester models
1162
+ self.tier_definition.write(
1163
+ {
1164
+ "approve_sequence": True,
1165
+ "notify_on_create": True,
1166
+ }
1167
+ )
1168
+ def_2 = self.tier_def_obj.create(
1169
+ {
1170
+ "model_id": self.tester_model.id,
1171
+ "review_type": "individual",
1172
+ "reviewer_id": self.test_user_2.id,
1173
+ "sequence": 20,
1174
+ "approve_sequence": True,
1175
+ "notify_on_create": True,
1176
+ "notify_on_accepted": True,
1177
+ }
1178
+ )
1179
+ def_3 = self.tier_def_obj.create(
1180
+ {
1181
+ "model_id": self.tester_model.id,
1182
+ "review_type": "individual",
1183
+ "reviewer_id": self.test_user_3_multi_company.id,
1184
+ "sequence": 10,
1185
+ "approve_sequence": True,
1186
+ "notify_on_create": True,
1187
+ "notify_on_accepted": True,
1188
+ }
1189
+ )
1190
+ test_record.request_validation()
1191
+ review_1 = test_record.review_ids.filtered(
1192
+ lambda x: x.definition_id == self.tier_definition
1193
+ )
1194
+ self.assertEqual(review_1.status, "pending")
1195
+ review_2 = test_record.review_ids.filtered(lambda x: x.definition_id == def_2)
1196
+ self.assertEqual(review_2.status, "pending")
1197
+ review_3 = test_record.review_ids.filtered(lambda x: x.definition_id == def_3)
1198
+ self.assertEqual(review_3.status, "pending")
1199
+ followers = test_record.message_follower_ids
1200
+ self.assertIn(self.test_user_1.partner_id, followers.mapped("partner_id"))
1201
+ self.assertIn(self.test_user_2.partner_id, followers.mapped("partner_id"))
1202
+ self.assertIn(
1203
+ self.test_user_3_multi_company.partner_id, followers.mapped("partner_id")
1204
+ )
1205
+
1053
1206
 
1054
1207
  @tagged("at_install")
1055
1208
  class TierTierValidationView(CommonTierValidation):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-base_tier_validation
3
- Version: 16.0.2.6.1
3
+ Version: 16.0.3.0.0
4
4
  Summary: Implement a validation process based on tiers.
5
5
  Home-page: https://github.com/OCA/server-ux
6
6
  Author: ForgeFlow, Odoo Community Association (OCA)
@@ -27,7 +27,7 @@ Base Tier Validation
27
27
  !! This file is generated by oca-gen-addon-readme !!
28
28
  !! changes will be overwritten. !!
29
29
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
30
- !! source digest: sha256:c5fce74970b8af03a0bae9725d32234b1e56c0bf89e1151e6620e1ad36a4d359
30
+ !! source digest: sha256:f3093af0e62d45b3f67e36b93c79f6b5a0ba627d57ae5c78d3242c7df5f1deac
31
31
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
32
32
 
33
33
  .. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
@@ -1,8 +1,8 @@
1
- odoo/addons/base_tier_validation/README.rst,sha256=oMamdz3IeGkcza8-PEyHUkxGwQ-1EevIv93OEYNLx3E,8161
1
+ odoo/addons/base_tier_validation/README.rst,sha256=ZnV7OY59pa9vwbudnMM9AadgvjYLM3x6tBaRbsM0waQ,8161
2
2
  odoo/addons/base_tier_validation/__init__.py,sha256=rKfzYX9RhkkCxgh2f0PJLYN45Kw8T8-fwxw1pbjLuug,108
3
- odoo/addons/base_tier_validation/__manifest__.py,sha256=IuJ-9EBlD3yzmuhNdD9NHMyjavDs8hgdm0iJYLzjOec,2011
3
+ odoo/addons/base_tier_validation/__manifest__.py,sha256=uPv9NHVqIViJQoCjvGMMxFQL58NEQ_CIvmYER4rvifk,2011
4
4
  odoo/addons/base_tier_validation/data/cron_data.xml,sha256=HMA_SgAk3_vLu_QQLHd0UyzPASuDRj5cvpiK_17esQc,707
5
- odoo/addons/base_tier_validation/data/mail_data.xml,sha256=hXhGTSyG2NAsDfZShmpyBKTXJi46L5PP1mFJAlKmlVE,1984
5
+ odoo/addons/base_tier_validation/data/mail_data.xml,sha256=8laJ1b4wUxh890yxtP8AQis8MHuXc4brCtV-3F-YmhI,1988
6
6
  odoo/addons/base_tier_validation/i18n/base_tier_validation.pot,sha256=Ap_T6TSlEoy4uXvycYBt7EA4SbyymwJWlKWiei7S2KQ,32404
7
7
  odoo/addons/base_tier_validation/i18n/es.po,sha256=wj3-zZ3bLMGYmC7eNpn3iS9EdHB7ffAAPmBwZAz5VXU,38203
8
8
  odoo/addons/base_tier_validation/i18n/es_MX.po,sha256=42TY-Dsn2Msuz38tXURWJZAi9XkAJ7IlHdYx3M-5kJw,35717
@@ -17,7 +17,7 @@ odoo/addons/base_tier_validation/models/res_config_settings.py,sha256=n-i1InkXDc
17
17
  odoo/addons/base_tier_validation/models/res_users.py,sha256=JhUZ0NxJ9EPwpkJ-mvsNTrE1avQncGNKqAF-xFxokEo,2638
18
18
  odoo/addons/base_tier_validation/models/tier_definition.py,sha256=rcDv7ySDKqBD1ksJ09um_4Reec_Im1MrdotivQ7Q_44,5173
19
19
  odoo/addons/base_tier_validation/models/tier_review.py,sha256=a7vMoaN4uWZqN48CmlK9x4ou9Ao0r4i6FuSSqPah6Qw,7329
20
- odoo/addons/base_tier_validation/models/tier_validation.py,sha256=IfVARiZPcmw7y9LauVLFMwc96b_1BNRfZNzK79GQ74A,33179
20
+ odoo/addons/base_tier_validation/models/tier_validation.py,sha256=jdy795ScUe92S3oNA4bkNMu2UgdUtxeOU-RUvwJnIoo,35193
21
21
  odoo/addons/base_tier_validation/models/tier_validation_exception.py,sha256=9H_FbTF04IyB2u6a82UAdIPmv_MUcFKmLNVl7UOM1lg,2882
22
22
  odoo/addons/base_tier_validation/readme/CONFIGURE.rst,sha256=ABgtWmfnm0QieIj7_ZsvoTHwjaKiZkBLCAjUXJeOnm4,1466
23
23
  odoo/addons/base_tier_validation/readme/CONTRIBUTORS.rst,sha256=hyMj4T9es9vnGNmdg-uPF9wc1xGRxC5DU39McI03xjA,479
@@ -27,7 +27,7 @@ odoo/addons/base_tier_validation/readme/ROADMAP.rst,sha256=UWhIpMUTM_ido6s3jZiF8
27
27
  odoo/addons/base_tier_validation/security/ir.model.access.csv,sha256=vsKy73mk8r45jzU0fAt_vfM7-JSH7lIAA7JBr1P6FAY,633
28
28
  odoo/addons/base_tier_validation/security/tier_validation_security.xml,sha256=eWFwz-osHgYFmVoEVzOSboO9oqUMtQ8oygyaz0os50Y,806
29
29
  odoo/addons/base_tier_validation/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
30
- odoo/addons/base_tier_validation/static/description/index.html,sha256=DpRIRqpQL2ZRLi8aCPhBLkdssUileupC6BXlYxVVtuU,22523
30
+ odoo/addons/base_tier_validation/static/description/index.html,sha256=2Sk6iLgF5LmkeTyp1ujGZOjK2RMfFbpPNncMfK3Iuc8,22523
31
31
  odoo/addons/base_tier_validation/static/src/js/ir_model.esm.js,sha256=kHSA7CeIt02IZmsKJdn2yZVqKqSyQ6_g6QVmtq5Qo2A,706
32
32
  odoo/addons/base_tier_validation/static/src/js/main.esm.js,sha256=ZSHScoLlMQcO6jW9mLVusJOfyH5kJIw4szPK3xU-KHA,263
33
33
  odoo/addons/base_tier_validation/static/src/js/review_group_view.esm.js,sha256=G110cBwOwENHBUkuScOB8Xg05D0FzOqlsSl_US0PngA,1677
@@ -44,9 +44,9 @@ odoo/addons/base_tier_validation/static/src/xml/reviewer_menu_container.xml,sha2
44
44
  odoo/addons/base_tier_validation/static/src/xml/systray.xml,sha256=8W04E80UhUPQp6U9zvmDu1qqOXsDaDP8Q5YFw6Dgg7s,4987
45
45
  odoo/addons/base_tier_validation/static/src/xml/tier_review_template.xml,sha256=o72pPVkPiPmr2KWucaTJahR945MbD4gaYyi3KQn6AyI,6217
46
46
  odoo/addons/base_tier_validation/templates/tier_validation_templates.xml,sha256=oEgy1wbHdYua7i5arXeli1WzZt9iwEgSZUMC_pDmnGU,4680
47
- odoo/addons/base_tier_validation/tests/__init__.py,sha256=7tj1DSbPnyA__lAKxvjX53Ll_ZTE8y8Z1bewtZJoURI,166
47
+ odoo/addons/base_tier_validation/tests/__init__.py,sha256=GPQ_IJXExtr8NbvHAjPwyfJdu5kBS_ZjfTX2X_GyM9M,145
48
48
  odoo/addons/base_tier_validation/tests/common.py,sha256=kCSmRUWy9qcmXfVpJ-ixTOyj7eL4G75x0p25uWEs7to,5918
49
- odoo/addons/base_tier_validation/tests/test_tier_validation.py,sha256=jOq6eYzzChn6Pwrv2C32mK17S0Ye3Z_cuJEDuvHWGsQ,43356
49
+ odoo/addons/base_tier_validation/tests/test_tier_validation.py,sha256=65bJs_aejEAZ8dNKjLgiJA77kd729_rVg96wy4tsenM,50451
50
50
  odoo/addons/base_tier_validation/tests/test_tier_validation_reminder.py,sha256=jsLU-7pJtbUvKPi7ddXU4jAwiJp32pKTrluarrtLKvU,1963
51
51
  odoo/addons/base_tier_validation/tests/tier_validation_tester.py,sha256=zlpJLmxpgnZhpUJ_kFqRVInQftOkgjT3lQ-uzcjn_F0,1818
52
52
  odoo/addons/base_tier_validation/views/res_config_settings_views.xml,sha256=Al6XKCN1QGLPcgAaXTvEnSTYkwBrzDGfSRh3CQD4g5Q,4234
@@ -56,7 +56,7 @@ odoo/addons/base_tier_validation/views/tier_validation_exception_view.xml,sha256
56
56
  odoo/addons/base_tier_validation/wizard/__init__.py,sha256=52q6-LAjYeJ1Vu5ahon_jnhds9VsoJvYaQCiZc82WKw,95
57
57
  odoo/addons/base_tier_validation/wizard/comment_wizard.py,sha256=gj7zCcpe47-2ifxSRlE6okQ1wtq5Ok3JBVg2CtN0ZIU,879
58
58
  odoo/addons/base_tier_validation/wizard/comment_wizard_view.xml,sha256=9XFTqrNwDCZH2IEX3HutaznSkBYk-6RERXzUDwObz4I,979
59
- odoo_addon_base_tier_validation-16.0.2.6.1.dist-info/METADATA,sha256=SQp--qtOJc9tHyW8-C_ru9fyikjZT-HlmzB6ZtGhlBE,8743
60
- odoo_addon_base_tier_validation-16.0.2.6.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
61
- odoo_addon_base_tier_validation-16.0.2.6.1.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
62
- odoo_addon_base_tier_validation-16.0.2.6.1.dist-info/RECORD,,
59
+ odoo_addon_base_tier_validation-16.0.3.0.0.dist-info/METADATA,sha256=XadeFVZTkk6BXjXy7JIX0NeMwNpdNdwWVjEjcWWDDs0,8743
60
+ odoo_addon_base_tier_validation-16.0.3.0.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
61
+ odoo_addon_base_tier_validation-16.0.3.0.0.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
62
+ odoo_addon_base_tier_validation-16.0.3.0.0.dist-info/RECORD,,