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.
- odoo/addons/base_tier_validation/README.rst +1 -1
- odoo/addons/base_tier_validation/__manifest__.py +1 -1
- odoo/addons/base_tier_validation/models/tier_review.py +5 -1
- odoo/addons/base_tier_validation/models/tier_validation.py +19 -5
- odoo/addons/base_tier_validation/static/description/index.html +1 -1
- odoo/addons/base_tier_validation/tests/common.py +54 -0
- odoo/addons/base_tier_validation/tests/test_tier_validation.py +83 -12
- odoo/addons/base_tier_validation/tests/tier_validation_tester.py +1 -0
- {odoo_addon_base_tier_validation-18.0.1.0.1.dist-info → odoo_addon_base_tier_validation-18.0.1.1.0.dist-info}/METADATA +2 -2
- {odoo_addon_base_tier_validation-18.0.1.0.1.dist-info → odoo_addon_base_tier_validation-18.0.1.1.0.dist-info}/RECORD +12 -12
- {odoo_addon_base_tier_validation-18.0.1.0.1.dist-info → odoo_addon_base_tier_validation-18.0.1.1.0.dist-info}/WHEEL +0 -0
- {odoo_addon_base_tier_validation-18.0.1.0.1.dist-info → odoo_addon_base_tier_validation-18.0.1.1.0.dist-info}/top_level.txt +0 -0
@@ -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:
|
10
|
+
!! source digest: sha256:add9b122d31043634518f262d83d786919439359db22663dc056cf314750cff8
|
11
11
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
12
12
|
|
13
13
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
|
@@ -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.
|
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] +
|
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.
|
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] +
|
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:
|
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&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
|
-
|
299
|
+
1, len(record1.review_ids.filtered(lambda x: x.status == "waiting"))
|
303
300
|
)
|
304
301
|
self.assertEqual(
|
305
|
-
|
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
|
-
|
373
|
+
1, len(record1.review_ids.filtered(lambda x: x.status == "waiting"))
|
362
374
|
)
|
363
375
|
self.assertEqual(
|
364
|
-
|
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
|
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
|
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
|
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
|
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:
|
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=
|
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=
|
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=
|
21
|
-
odoo/addons/base_tier_validation/models/tier_validation.py,sha256=
|
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=
|
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=
|
43
|
-
odoo/addons/base_tier_validation/tests/test_tier_validation.py,sha256=
|
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=
|
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.
|
54
|
-
odoo_addon_base_tier_validation-18.0.1.0.
|
55
|
-
odoo_addon_base_tier_validation-18.0.1.0.
|
56
|
-
odoo_addon_base_tier_validation-18.0.1.0.
|
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,,
|
File without changes
|