odoo-addon-base-tier-validation 18.0.1.0.1__py3-none-any.whl → 18.0.1.1.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.
@@ -7,7 +7,7 @@ Base Tier Validation
7
7
  !! This file is generated by oca-gen-addon-readme !!
8
8
  !! changes will be overwritten. !!
9
9
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10
- !! source digest: sha256:7a65c77580bee5875a4babb69d3d958052621197a5e6a79609fcf7837123b2c0
10
+ !! source digest: sha256:add9b122d31043634518f262d83d786919439359db22663dc056cf314750cff8
11
11
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
12
12
 
13
13
  .. |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": "18.0.1.0.1",
6
+ "version": "18.0.1.1.0",
7
7
  "development_status": "Mature",
8
8
  "maintainers": ["LoisRForgeFlow"],
9
9
  "category": "Tools",
@@ -26,7 +26,11 @@ class TierReview(models.Model):
26
26
  default="waiting",
27
27
  )
28
28
  model = fields.Char(string="Related Document Model", index=True)
29
- res_id = fields.Integer(string="Related Document ID", index=True)
29
+ res_id = fields.Many2oneReference(
30
+ string="Related Document ID",
31
+ index=True,
32
+ model_field="model",
33
+ )
30
34
  definition_id = fields.Many2one(comodel_name="tier.definition")
31
35
  company_id = fields.Many2one(
32
36
  related="definition_id.company_id",
@@ -22,6 +22,7 @@ class TierValidation(models.AbstractModel):
22
22
  _tier_validation_buttons_xpath = "/form/header/button[last()]"
23
23
  _tier_validation_manual_config = True
24
24
  _tier_validation_state_field_is_computed = False
25
+ _tier_validation_company_field = "company_id"
25
26
 
26
27
  _state_field = "state"
27
28
  _state_from = ["draft"]
@@ -250,7 +251,7 @@ class TierValidation(models.AbstractModel):
250
251
  .search(
251
252
  [
252
253
  ("model", "=", self._name),
253
- ("company_id", "in", [False] + self.env.company.ids),
254
+ ("company_id", "in", [False] + rec._get_company().ids),
254
255
  ]
255
256
  )
256
257
  )
@@ -275,7 +276,7 @@ class TierValidation(models.AbstractModel):
275
276
  .search(
276
277
  [
277
278
  ("model_name", "=", self._name),
278
- ("company_id", "in", [False] + self.env.company.ids),
279
+ ("company_id", "in", [False] + self._get_company().ids),
279
280
  "|",
280
281
  ("group_ids", "in", self.env.user.groups_id.ids),
281
282
  ("group_ids", "=", False),
@@ -711,6 +712,17 @@ class TierValidation(models.AbstractModel):
711
712
  "sequence": sequence,
712
713
  }
713
714
 
715
+ @api.model
716
+ def _get_company(self):
717
+ company_id = self.env.company
718
+ if (
719
+ self
720
+ and self._tier_validation_company_field in self.env[self._name]
721
+ and self[self._tier_validation_company_field]
722
+ ):
723
+ company_id = self[self._tier_validation_company_field]
724
+ return company_id
725
+
714
726
  def request_validation(self):
715
727
  td_obj = self.env["tier.definition"]
716
728
  tr_obj = self.env["tier.review"]
@@ -720,7 +732,7 @@ class TierValidation(models.AbstractModel):
720
732
  tier_definitions = td_obj.search(
721
733
  [
722
734
  ("model", "=", self._name),
723
- ("company_id", "in", [False] + self.env.company.ids),
735
+ ("company_id", "in", [False] + rec._get_company().ids),
724
736
  ],
725
737
  order="sequence desc",
726
738
  )
@@ -729,8 +741,9 @@ class TierValidation(models.AbstractModel):
729
741
  if rec.evaluate_tier(td):
730
742
  sequence += 1
731
743
  vals_list.append(rec._prepare_tier_review_vals(td, sequence))
732
- self._update_counter({"review_created": True})
733
744
  created_trs = tr_obj.create(vals_list)
745
+ if any(self.mapped("can_review")):
746
+ self._update_counter({"review_created": True})
734
747
  self._notify_review_requested(created_trs)
735
748
  return created_trs
736
749
 
@@ -765,8 +778,9 @@ class TierValidation(models.AbstractModel):
765
778
  .mapped("partner_id")
766
779
  .ids
767
780
  )
781
+ can_review = rec.can_review
768
782
  rec.mapped("review_ids").unlink()
769
- if to_update_counter:
783
+ if to_update_counter and can_review:
770
784
  self._update_counter({"review_deleted": True})
771
785
  if partners_to_notify_ids:
772
786
  subscribe = "message_subscribe"
@@ -367,7 +367,7 @@ ul.auto-toc {
367
367
  !! This file is generated by oca-gen-addon-readme !!
368
368
  !! changes will be overwritten. !!
369
369
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
370
- !! source digest: sha256:7a65c77580bee5875a4babb69d3d958052621197a5e6a79609fcf7837123b2c0
370
+ !! source digest: sha256:add9b122d31043634518f262d83d786919439359db22663dc056cf314750cff8
371
371
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
372
372
  <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/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/server-ux/tree/18.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-18-0/server-ux-18-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=18.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
373
373
  <p>Validating some operations is a common need across different areas in a
@@ -41,6 +41,9 @@ class CommonTierValidation(BaseCommon):
41
41
  cls.tester_model_computed = cls.env["ir.model"].search(
42
42
  [("model", "=", "tier.validation.tester.computed")]
43
43
  )
44
+ # Create a multi-company
45
+ cls.main_company = cls.env.ref("base.main_company")
46
+ cls.other_company = cls.env["res.company"].create({"name": "My Company"})
44
47
 
45
48
  models = (
46
49
  cls.tester_model,
@@ -90,6 +93,14 @@ class CommonTierValidation(BaseCommon):
90
93
  cls.test_user_2 = cls.env["res.users"].create(
91
94
  {"name": "Mike", "login": "test2", "email": "mike@yourcompany.example.com"}
92
95
  )
96
+ cls.test_user_3_multi_company = cls.env["res.users"].create(
97
+ {
98
+ "name": "Jane",
99
+ "login": "test3",
100
+ "email": "jane@mycompany.example.com",
101
+ "company_ids": [(6, 0, [cls.main_company.id, cls.other_company.id])],
102
+ }
103
+ )
93
104
 
94
105
  # Create tier definitions:
95
106
  cls.tier_def_obj = cls.env["tier.definition"]
@@ -158,6 +169,49 @@ class CommonTierValidation(BaseCommon):
158
169
  }
159
170
  )
160
171
 
172
+ # Create definition for test 30, 31
173
+ # Main company tier definition
174
+ cls.tier_def_obj.create(
175
+ {
176
+ "model_id": cls.tester_model_2.id,
177
+ "review_type": "individual",
178
+ "reviewer_id": cls.test_user_1.id,
179
+ "definition_domain": "[('test_field', '>=', 1.0)]",
180
+ "approve_sequence": True,
181
+ "notify_on_pending": False,
182
+ "sequence": 30,
183
+ "name": "Definition for test 30 - sequence - user 1 - main company",
184
+ "company_id": cls.main_company.id,
185
+ }
186
+ )
187
+ cls.tier_def_obj.create(
188
+ {
189
+ "model_id": cls.tester_model_2.id,
190
+ "review_type": "individual",
191
+ "reviewer_id": cls.test_user_3_multi_company.id,
192
+ "definition_domain": "[('test_field', '>=', 1.0)]",
193
+ "approve_sequence": True,
194
+ "notify_on_pending": False,
195
+ "sequence": 20,
196
+ "name": "Definition for test 30 - sequence - user 3 - main company",
197
+ "company_id": cls.main_company.id,
198
+ }
199
+ )
200
+ # Other company tier definition
201
+ cls.tier_def_obj.create(
202
+ {
203
+ "model_id": cls.tester_model_2.id,
204
+ "review_type": "individual",
205
+ "reviewer_id": cls.test_user_3_multi_company.id,
206
+ "definition_domain": "[('test_field', '>=', 1.0)]",
207
+ "approve_sequence": True,
208
+ "notify_on_pending": False,
209
+ "sequence": 30,
210
+ "name": "Definition for test 30 - sequence - user 3 - other company",
211
+ "company_id": cls.other_company.id,
212
+ }
213
+ )
214
+
161
215
  @classmethod
162
216
  def tearDownClass(cls):
163
217
  cls.loader.restore_registry()
@@ -131,11 +131,8 @@ class TierTierValidation(CommonTierValidation):
131
131
  )
132
132
  # Request validation
133
133
  self.test_record.with_user(self.test_user_2.id).request_validation()
134
- self.test_record.invalidate_model()
135
134
  test_record.with_user(self.test_user_2.id).request_validation()
136
- test_record.invalidate_model()
137
135
  self.test_record_2.with_user(self.test_user_2.id).request_validation()
138
- self.test_record_2.invalidate_model()
139
136
  # Get review user count as systray icon would do and check count value
140
137
  docs = self.test_user_1.with_user(self.test_user_1).review_user_count()
141
138
  for doc in docs:
@@ -295,14 +292,14 @@ class TierTierValidation(CommonTierValidation):
295
292
  self.assertTrue(reviews)
296
293
 
297
294
  record1 = test_record.with_user(self.test_user_1.id)
298
- record1.invalidate_model()
299
295
  self.assertTrue(record1.can_review)
300
296
  # Validation will be all by sequence
297
+ self.assertEqual(len(record1.review_ids), 2)
301
298
  self.assertEqual(
302
- 2, len(record1.review_ids.filtered(lambda x: x.status == "waiting"))
299
+ 1, len(record1.review_ids.filtered(lambda x: x.status == "waiting"))
303
300
  )
304
301
  self.assertEqual(
305
- 0, len(record1.review_ids.filtered(lambda x: x.status == "pending"))
302
+ 1, len(record1.review_ids.filtered(lambda x: x.status == "pending"))
306
303
  )
307
304
  record1.validate_tier()
308
305
  self.assertEqual(
@@ -311,14 +308,29 @@ class TierTierValidation(CommonTierValidation):
311
308
  self.assertEqual(
312
309
  1, len(record1.review_ids.filtered(lambda x: x.status == "pending"))
313
310
  )
311
+ self.assertEqual(
312
+ 1, len(record1.review_ids.filtered(lambda x: x.status == "approved"))
313
+ )
314
314
  record1.validate_tier()
315
315
  self.assertEqual(
316
316
  0, len(record1.review_ids.filtered(lambda x: x.status == "waiting"))
317
317
  )
318
+ self.assertEqual(
319
+ 0, len(record1.review_ids.filtered(lambda x: x.status == "pending"))
320
+ )
321
+ self.assertEqual(
322
+ 2, len(record1.review_ids.filtered(lambda x: x.status == "approved"))
323
+ )
318
324
  record1.validate_tier()
325
+ self.assertEqual(
326
+ 0, len(record1.review_ids.filtered(lambda x: x.status == "waiting"))
327
+ )
319
328
  self.assertEqual(
320
329
  0, len(record1.review_ids.filtered(lambda x: x.status == "pending"))
321
330
  )
331
+ self.assertEqual(
332
+ 2, len(record1.review_ids.filtered(lambda x: x.status == "approved"))
333
+ )
322
334
 
323
335
  def test_12_approve_sequence_same_user_bypassed(self):
324
336
  """Similar to test_12_approve_sequence, with all same users,
@@ -354,14 +366,14 @@ class TierTierValidation(CommonTierValidation):
354
366
  self.assertTrue(reviews)
355
367
 
356
368
  record1 = test_record.with_user(self.test_user_1.id)
357
- record1.invalidate_model()
358
369
  self.assertTrue(record1.can_review)
359
370
  # When the first tier is validated, all the rest will be approved.
371
+ self.assertEqual(len(record1.review_ids), 2)
360
372
  self.assertEqual(
361
- 2, len(record1.review_ids.filtered(lambda x: x.status == "waiting"))
373
+ 1, len(record1.review_ids.filtered(lambda x: x.status == "waiting"))
362
374
  )
363
375
  self.assertEqual(
364
- 0, len(record1.review_ids.filtered(lambda x: x.status == "pending"))
376
+ 1, len(record1.review_ids.filtered(lambda x: x.status == "pending"))
365
377
  )
366
378
  record1.validate_tier()
367
379
  self.assertEqual(
@@ -370,6 +382,9 @@ class TierTierValidation(CommonTierValidation):
370
382
  self.assertEqual(
371
383
  0, len(record1.review_ids.filtered(lambda x: x.status == "waiting"))
372
384
  )
385
+ self.assertEqual(
386
+ 2, len(record1.review_ids.filtered(lambda x: x.status == "approved"))
387
+ )
373
388
 
374
389
  def test_13_onchange_review_type(self):
375
390
  tier_def_id = self.tier_def_obj.create(
@@ -919,7 +934,7 @@ class TierTierValidation(CommonTierValidation):
919
934
  )
920
935
  self.assertEqual(notifications_no_2, notifications_no_1)
921
936
 
922
- def test_25_change_field_exception_validation(self):
937
+ def test_27_change_field_exception_validation(self):
923
938
  """Test under and after validations"""
924
939
  # Cannot create `tier.validation.exception` records because
925
940
  # `tier.validation.tester` are fake model and its fields are
@@ -970,7 +985,7 @@ class TierTierValidation(CommonTierValidation):
970
985
  )
971
986
  self.assertEqual(self.test_record.test_validation_field, 4)
972
987
 
973
- def test_26_computed_state_field(self):
988
+ def test_28_computed_state_field(self):
974
989
  """Test the regular flow on a model where state is a computed field"""
975
990
  # The record cannot be confirmed without validation
976
991
  with self.assertRaisesRegex(
@@ -999,7 +1014,7 @@ class TierTierValidation(CommonTierValidation):
999
1014
  self.assertFalse(self.test_record_computed.review_ids)
1000
1015
  self.test_record_computed.invalidate_recordset()
1001
1016
 
1002
- def test_27_allow_write_for_reviewers(self):
1017
+ def test_29_allow_write_for_reviewers(self):
1003
1018
  reviews = self.test_record.with_user(self.test_user_2.id).request_validation()
1004
1019
  record = self.test_record.with_user(self.test_user_1.id)
1005
1020
  record.invalidate_recordset()
@@ -1010,6 +1025,62 @@ class TierTierValidation(CommonTierValidation):
1010
1025
  )
1011
1026
  record.with_user(self.test_user_1.id).write({"test_field": 0.3})
1012
1027
 
1028
+ def test_30_request_validation_diff_company(self):
1029
+ """
1030
+ Test validation request behavior with multi-company setup.
1031
+
1032
+ Setup:
1033
+ - Main company has 2 tier definitions:
1034
+ - One for User1 (sequence 30)
1035
+ - One for User3 (sequence 20)
1036
+ - Other company has 1 tier definition:
1037
+ - One for User3 (sequence 30)
1038
+
1039
+ When record's company is set to 'other company':
1040
+ - Only User3's tier definition from other company should be applied
1041
+ - Should create only 1 review
1042
+ """
1043
+ self.assertFalse(self.test_record_2.review_ids)
1044
+ self.assertFalse(self.test_record_2.company_id)
1045
+ self.assertEqual(self.test_user_3_multi_company.env.company, self.main_company)
1046
+
1047
+ self.test_record_2.company_id = self.other_company
1048
+
1049
+ reviews = self.test_record_2.with_user(
1050
+ self.test_user_3_multi_company.id
1051
+ ).request_validation()
1052
+ self.test_record_2.invalidate_recordset()
1053
+
1054
+ self.assertEqual(len(reviews), 1)
1055
+
1056
+ def test_31_request_validation_same_company(self):
1057
+ """
1058
+ Test validation request behavior with multi-company setup.
1059
+
1060
+ Setup:
1061
+ - Main company has 2 tier definitions:
1062
+ - One for User1 (sequence 30)
1063
+ - One for User3 (sequence 20)
1064
+ - Other company has 1 tier definition:
1065
+ - One for User3 (sequence 30)
1066
+
1067
+ When record's company is set to 'main company':
1068
+ - Both User1 and User3's tier definitions from main company should be applied
1069
+ - Should create 2 reviews
1070
+ """
1071
+ self.assertFalse(self.test_record_2.review_ids)
1072
+ self.assertFalse(self.test_record_2.company_id)
1073
+ self.assertEqual(self.test_user_3_multi_company.env.company, self.main_company)
1074
+
1075
+ self.test_record_2.company_id = self.main_company
1076
+
1077
+ reviews = self.test_record_2.with_user(
1078
+ self.test_user_3_multi_company.id
1079
+ ).request_validation()
1080
+ self.test_record_2.invalidate_recordset()
1081
+
1082
+ self.assertEqual(len(reviews), 2)
1083
+
1013
1084
 
1014
1085
  @tagged("at_install")
1015
1086
  class TierTierValidationView(CommonTierValidation):
@@ -43,6 +43,7 @@ class TierValidationTester2(models.Model):
43
43
  test_field = fields.Float()
44
44
  test_validation_field = fields.Float()
45
45
  user_id = fields.Many2one(string="Assigned to:", comodel_name="res.users")
46
+ company_id = fields.Many2one(comodel_name="res.company")
46
47
 
47
48
  def action_confirm(self):
48
49
  self.write({"state": "confirmed"})
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-base_tier_validation
3
- Version: 18.0.1.0.1
3
+ Version: 18.0.1.1.0
4
4
  Requires-Python: >=3.10
5
5
  Requires-Dist: odoo==18.0.*
6
6
  Summary: Implement a validation process based on tiers.
@@ -23,7 +23,7 @@ Base Tier Validation
23
23
  !! This file is generated by oca-gen-addon-readme !!
24
24
  !! changes will be overwritten. !!
25
25
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
26
- !! source digest: sha256:7a65c77580bee5875a4babb69d3d958052621197a5e6a79609fcf7837123b2c0
26
+ !! source digest: sha256:add9b122d31043634518f262d83d786919439359db22663dc056cf314750cff8
27
27
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
28
28
 
29
29
  .. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
@@ -1,6 +1,6 @@
1
- odoo/addons/base_tier_validation/README.rst,sha256=KoacLiZcWefqZEDbTH7dp4HDmNNXP7u9BJL-Xz1uiEY,9088
1
+ odoo/addons/base_tier_validation/README.rst,sha256=138iiJkAJJtDVPVwcbQ6xDd2_RCQflc49AaXNTb8jZI,9088
2
2
  odoo/addons/base_tier_validation/__init__.py,sha256=rKfzYX9RhkkCxgh2f0PJLYN45Kw8T8-fwxw1pbjLuug,108
3
- odoo/addons/base_tier_validation/__manifest__.py,sha256=d72jPdbKLn5TF5oIMnnqbVeJ7QR42y2iZFBcrEr1M20,1201
3
+ odoo/addons/base_tier_validation/__manifest__.py,sha256=UNYluztqzC11lBbudNIvDQuew_5fbl7rDprrtgHMS0g,1201
4
4
  odoo/addons/base_tier_validation/data/cron_data.xml,sha256=7lNJCyjZPSvpXiccQLG-z5pSGui90Ox0hsjQA56_l4g,619
5
5
  odoo/addons/base_tier_validation/data/mail_data.xml,sha256=hXhGTSyG2NAsDfZShmpyBKTXJi46L5PP1mFJAlKmlVE,1984
6
6
  odoo/addons/base_tier_validation/i18n/base_tier_validation.pot,sha256=oY389tAzqrkQz9RU06DmbNiowyICmI1a5bVx1ZlojVs,31930
@@ -17,8 +17,8 @@ odoo/addons/base_tier_validation/models/__init__.py,sha256=X8c8CFM5eOXyIErFr7xsa
17
17
  odoo/addons/base_tier_validation/models/res_config_settings.py,sha256=xMdQiCfU5p7Z5puKcSRvJihLpI9ulyVFUd_QJjAOuwc,619
18
18
  odoo/addons/base_tier_validation/models/res_users.py,sha256=V65OZZ-ktYFs5Vm5oxlbhTia09rdrtbWGQF9JnQzbBA,2183
19
19
  odoo/addons/base_tier_validation/models/tier_definition.py,sha256=r1aCQJBDKYxoamgLuWVxCZHRx39CzcnuVPnQYHMGXnA,5901
20
- odoo/addons/base_tier_validation/models/tier_review.py,sha256=V-ywnymdx6oqFTvNbhyC4y5GgiO7Z-ZqGPgX_kD8uds,8230
21
- odoo/addons/base_tier_validation/models/tier_validation.py,sha256=DsvdqW8mLhCg3CEd4sE7C8ywKt0rSWYfzpg0du1I4Vs,35706
20
+ odoo/addons/base_tier_validation/models/tier_review.py,sha256=b1z-Nx7yUqhGul8eHQetHQPlqix-7roSEYfzDdATJ-Q,8292
21
+ odoo/addons/base_tier_validation/models/tier_validation.py,sha256=eXsVGlGPCbOoehVVX6SamW_-MGvGsEEyIK3ilgkoRYo,36211
22
22
  odoo/addons/base_tier_validation/models/tier_validation_exception.py,sha256=8AuFyX9wDyux5puLNQZd6QuvUuqZKZmha11c11uZuS8,3021
23
23
  odoo/addons/base_tier_validation/readme/CONFIGURE.md,sha256=MuyVCH75T0_3Rtrkl7RUg7XzxjoU7zUkbPWv84_a-XU,1709
24
24
  odoo/addons/base_tier_validation/readme/CONTRIBUTORS.md,sha256=qLNyJqdNmLTkT9MAMGyL0ULd3vtTCrJFDXWehyJOXXo,738
@@ -30,7 +30,7 @@ odoo/addons/base_tier_validation/security/ir.model.access.csv,sha256=_NMShHIoKCQ
30
30
  odoo/addons/base_tier_validation/security/tier_validation_security.xml,sha256=FA3lm5R4sEKrpEJmmqM9N3bRYuOUeYqhfmdXHMRF-Uo,724
31
31
  odoo/addons/base_tier_validation/static/description/icon.png,sha256=ocMS0YO1xbJs6kkXqCuw71UnsCa_4d1U5cMvzcKSH2U,4993
32
32
  odoo/addons/base_tier_validation/static/description/icon.svg,sha256=SBeR3DJDE_jBR3Z92Yn3r7WPOkpsRlOd61t1Tuk7M_A,2684
33
- odoo/addons/base_tier_validation/static/description/index.html,sha256=dN6Heg1CDun5J_hQr3ynaiq3zTZ21UB4RtLj-ZUZNuw,24298
33
+ odoo/addons/base_tier_validation/static/description/index.html,sha256=v9DLUhuNbppBfqUlVxyKnGO5mBa5I2U9WlVJmzhCghw,24298
34
34
  odoo/addons/base_tier_validation/static/src/components/tier_review_menu/tier_review_menu.esm.js,sha256=LZhT9W17yecXeX7U6iwcwB4Ns_inM0kd91jl5hG2tBI,2162
35
35
  odoo/addons/base_tier_validation/static/src/components/tier_review_menu/tier_review_menu.xml,sha256=Xkal2szcRU1QYAwNSB6-QFRbKs7aP66kBGdCidhri8I,3151
36
36
  odoo/addons/base_tier_validation/static/src/components/tier_review_widget/tier_review_widget.esm.js,sha256=30ncVXFkj-5ws0gBWJGADabzf_SNHC5xnhjnVaSEZWk,1211
@@ -39,10 +39,10 @@ odoo/addons/base_tier_validation/static/src/components/tier_review_widget/tier_r
39
39
  odoo/addons/base_tier_validation/static/src/js/services/tier_review_service.esm.js,sha256=rEhap9yid30t8zGAfhauNautXYoSxuTff1vvEcvpaVs,983
40
40
  odoo/addons/base_tier_validation/templates/tier_validation_templates.xml,sha256=jk7sOuu7Z_AJYLD1rwYBIrYK0Qlh66guQGoE0fEiqpo,3230
41
41
  odoo/addons/base_tier_validation/tests/__init__.py,sha256=7tj1DSbPnyA__lAKxvjX53Ll_ZTE8y8Z1bewtZJoURI,166
42
- odoo/addons/base_tier_validation/tests/common.py,sha256=qC5dIEkY_Q1J6maro234cK9-lTBqO_E0J0_8d2_mQhg,5823
43
- odoo/addons/base_tier_validation/tests/test_tier_validation.py,sha256=I8hVKYLcaiVGY7XKRI-rQ3wNsB1yR1VGqEdNWgaYSwk,42670
42
+ odoo/addons/base_tier_validation/tests/common.py,sha256=nqj_e7iug9LKvAV39qBuZMOn_lE7q21FaXn9r49XHys,8086
43
+ odoo/addons/base_tier_validation/tests/test_tier_validation.py,sha256=7VtIypBLgCXFEZon-KU24ZrPLycHptx70zBdp8woEUg,45343
44
44
  odoo/addons/base_tier_validation/tests/test_tier_validation_reminder.py,sha256=jsLU-7pJtbUvKPi7ddXU4jAwiJp32pKTrluarrtLKvU,1963
45
- odoo/addons/base_tier_validation/tests/tier_validation_tester.py,sha256=m25QbB9-9Goxx1Fiz0qwsVO3WPL6jrtMlGDW6VQbLik,3345
45
+ odoo/addons/base_tier_validation/tests/tier_validation_tester.py,sha256=O0QFANIH-jH_1GZtcv-EqPMGp2LgWF2HJMaaibFROWs,3406
46
46
  odoo/addons/base_tier_validation/views/res_config_settings_views.xml,sha256=5HbrsAVaXRoQNX7utIQ_EzZrqzKnwBrV9uHsi-PHb9M,2640
47
47
  odoo/addons/base_tier_validation/views/tier_definition_view.xml,sha256=Npse-ZdBcgCAW8ZHIv1e0FYSUNgWyb7T1yfEsEIHVsw,7603
48
48
  odoo/addons/base_tier_validation/views/tier_review_view.xml,sha256=KrkXUU99Hd3bLua0GEXQGaF7TGV0L6WPcSdJcg4TL-8,966
@@ -50,7 +50,7 @@ odoo/addons/base_tier_validation/views/tier_validation_exception_view.xml,sha256
50
50
  odoo/addons/base_tier_validation/wizard/__init__.py,sha256=52q6-LAjYeJ1Vu5ahon_jnhds9VsoJvYaQCiZc82WKw,95
51
51
  odoo/addons/base_tier_validation/wizard/comment_wizard.py,sha256=gj7zCcpe47-2ifxSRlE6okQ1wtq5Ok3JBVg2CtN0ZIU,879
52
52
  odoo/addons/base_tier_validation/wizard/comment_wizard_view.xml,sha256=9XFTqrNwDCZH2IEX3HutaznSkBYk-6RERXzUDwObz4I,979
53
- odoo_addon_base_tier_validation-18.0.1.0.1.dist-info/METADATA,sha256=UgK0Liz7EYxHHkh64mCTszbrlySKQU3AuPDoJU_1Q5o,9662
54
- odoo_addon_base_tier_validation-18.0.1.0.1.dist-info/WHEEL,sha256=9fEMia4zL7ZuZbnCOrcYogUhmn4XFIVaJ8G4YGI31xc,81
55
- odoo_addon_base_tier_validation-18.0.1.0.1.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
56
- odoo_addon_base_tier_validation-18.0.1.0.1.dist-info/RECORD,,
53
+ odoo_addon_base_tier_validation-18.0.1.1.0.dist-info/METADATA,sha256=-OfpapQfDLVqiOfPxXM2Z3Bt0FST-EJunbxvUKTdvn8,9662
54
+ odoo_addon_base_tier_validation-18.0.1.1.0.dist-info/WHEEL,sha256=9fEMia4zL7ZuZbnCOrcYogUhmn4XFIVaJ8G4YGI31xc,81
55
+ odoo_addon_base_tier_validation-18.0.1.1.0.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
56
+ odoo_addon_base_tier_validation-18.0.1.1.0.dist-info/RECORD,,