odoo-addon-base-tier-validation 15.0.1.5.0.2__py3-none-any.whl → 15.0.1.6.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:6630e37cda41b78f1f3dfb44fb574c46992a747d7afb4c55e3ca7691027d177d
10
+ !! source digest: sha256:96f7d9d02c734dd0ceaeea2aee22eb2b056257384a73890e6b77df0e5af0ddb9
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": "15.0.1.5.0",
6
+ "version": "15.0.1.6.0",
7
7
  "development_status": "Mature",
8
8
  "maintainers": ["LoisRForgeFlow"],
9
9
  "category": "Tools",
@@ -15,6 +15,7 @@ class TierValidation(models.AbstractModel):
15
15
 
16
16
  _tier_validation_buttons_xpath = "/form/header/button[last()]"
17
17
  _tier_validation_manual_config = True
18
+ _tier_validation_company_field = "company_id"
18
19
 
19
20
  _state_field = "state"
20
21
  _state_from = ["draft"]
@@ -217,11 +218,15 @@ class TierValidation(models.AbstractModel):
217
218
  if isinstance(rec.id, models.NewId):
218
219
  rec.need_validation = False
219
220
  continue
220
- tiers = self.env["tier.definition"].search(
221
- [
222
- ("model", "=", self._name),
223
- ("company_id", "in", [False] + self.env.company.ids),
224
- ]
221
+ tiers = (
222
+ self.env["tier.definition"]
223
+ .with_context(active_test=True)
224
+ .search(
225
+ [
226
+ ("model", "=", self._name),
227
+ ("company_id", "in", [False] + rec._get_company().ids),
228
+ ]
229
+ )
225
230
  )
226
231
  valid_tiers = any([rec.evaluate_tier(tier) for tier in tiers])
227
232
  rec.need_validation = (
@@ -466,6 +471,17 @@ class TierValidation(models.AbstractModel):
466
471
  "sequence": sequence,
467
472
  }
468
473
 
474
+ @api.model
475
+ def _get_company(self):
476
+ company_id = self.env.company
477
+ if (
478
+ self
479
+ and self._tier_validation_company_field in self.env[self._name]
480
+ and self[self._tier_validation_company_field]
481
+ ):
482
+ company_id = self[self._tier_validation_company_field]
483
+ return company_id
484
+
469
485
  def request_validation(self):
470
486
  td_obj = self.env["tier.definition"]
471
487
  tr_obj = created_trs = self.env["tier.review"]
@@ -475,7 +491,7 @@ class TierValidation(models.AbstractModel):
475
491
  tier_definitions = td_obj.search(
476
492
  [
477
493
  ("model", "=", self._name),
478
- ("company_id", "in", [False] + self.env.company.ids),
494
+ ("company_id", "in", [False] + rec._get_company().ids),
479
495
  ],
480
496
  order="sequence desc",
481
497
  )
@@ -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:6630e37cda41b78f1f3dfb44fb574c46992a747d7afb4c55e3ca7691027d177d
370
+ !! source digest: sha256:96f7d9d02c734dd0ceaeea2aee22eb2b056257384a73890e6b77df0e5af0ddb9
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/15.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-15-0/server-ux-15-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=15.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 company
@@ -41,6 +41,9 @@ class CommonTierValidation(common.TransactionCase):
41
41
  cls.tester_model_2 = cls.env["ir.model"].search(
42
42
  [("model", "=", "tier.validation.tester2")]
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
  # Access record:
46
49
  cls.env["ir.model.access"].create(
@@ -72,6 +75,14 @@ class CommonTierValidation(common.TransactionCase):
72
75
  cls.test_user_2 = cls.env["res.users"].create(
73
76
  {"name": "Mike", "login": "test2"}
74
77
  )
78
+ cls.test_user_3_multi_company = cls.env["res.users"].create(
79
+ {
80
+ "name": "Jane",
81
+ "login": "test3",
82
+ "email": "jane@mycompany.example.com",
83
+ "company_ids": [(6, 0, [cls.main_company.id, cls.other_company.id])],
84
+ }
85
+ )
75
86
 
76
87
  # Create tier definitions:
77
88
  cls.tier_def_obj = cls.env["tier.definition"]
@@ -88,6 +99,46 @@ class CommonTierValidation(common.TransactionCase):
88
99
  cls.test_record = cls.test_model.create({"test_field": 2.5})
89
100
  cls.test_record_2 = cls.test_model_2.create({"test_field": 2.5})
90
101
 
102
+ # Create definition for test 19, 20
103
+ # Main company tier definition
104
+ cls.tier_def_obj.create(
105
+ {
106
+ "model_id": cls.tester_model_2.id,
107
+ "review_type": "individual",
108
+ "reviewer_id": cls.test_user_1.id,
109
+ "definition_domain": "[('test_field', '>=', 1.0)]",
110
+ "approve_sequence": True,
111
+ "sequence": 30,
112
+ "name": "Definition for test 30 - sequence - user 1 - main company",
113
+ "company_id": cls.main_company.id,
114
+ }
115
+ )
116
+ cls.tier_def_obj.create(
117
+ {
118
+ "model_id": cls.tester_model_2.id,
119
+ "review_type": "individual",
120
+ "reviewer_id": cls.test_user_3_multi_company.id,
121
+ "definition_domain": "[('test_field', '>=', 1.0)]",
122
+ "approve_sequence": True,
123
+ "sequence": 20,
124
+ "name": "Definition for test 30 - sequence - user 3 - main company",
125
+ "company_id": cls.main_company.id,
126
+ }
127
+ )
128
+ # Other company tier definition
129
+ cls.tier_def_obj.create(
130
+ {
131
+ "model_id": cls.tester_model_2.id,
132
+ "review_type": "individual",
133
+ "reviewer_id": cls.test_user_3_multi_company.id,
134
+ "definition_domain": "[('test_field', '>=', 1.0)]",
135
+ "approve_sequence": True,
136
+ "sequence": 30,
137
+ "name": "Definition for test 30 - sequence - user 3 - other company",
138
+ "company_id": cls.other_company.id,
139
+ }
140
+ )
141
+
91
142
  @classmethod
92
143
  def tearDownClass(cls):
93
144
  cls.loader.restore_registry()
@@ -481,6 +481,58 @@ class TierTierValidation(CommonTierValidation):
481
481
  self.assertTrue(review)
482
482
  self.assertEqual(review.reviewer_ids, self.test_user_2)
483
483
 
484
+ def test_19_request_validation_diff_company(self):
485
+ """
486
+ Test validation request behavior with multi-company setup.
487
+ Setup:
488
+ - Main company has 2 tier definitions:
489
+ - One for User1 (sequence 30)
490
+ - One for User3 (sequence 20)
491
+ - Other company has 1 tier definition:
492
+ - One for User3 (sequence 30)
493
+ When record's company is set to 'other company':
494
+ - Only User3's tier definition from other company should be applied
495
+ - Should create only 1 review
496
+ """
497
+ self.assertFalse(self.test_record_2.review_ids)
498
+ self.assertFalse(self.test_record_2.company_id)
499
+ self.assertEqual(self.test_user_3_multi_company.env.company, self.main_company)
500
+
501
+ self.test_record_2.company_id = self.other_company
502
+
503
+ reviews = self.test_record_2.with_user(
504
+ self.test_user_3_multi_company.id
505
+ ).request_validation()
506
+ self.test_record_2.invalidate_cache()
507
+
508
+ self.assertEqual(len(reviews), 1)
509
+
510
+ def test_20_request_validation_same_company(self):
511
+ """
512
+ Test validation request behavior with multi-company setup.
513
+ Setup:
514
+ - Main company has 2 tier definitions:
515
+ - One for User1 (sequence 30)
516
+ - One for User3 (sequence 20)
517
+ - Other company has 1 tier definition:
518
+ - One for User3 (sequence 30)
519
+ When record's company is set to 'main company':
520
+ - Both User1 and User3's tier definitions from main company should be applied
521
+ - Should create 2 reviews
522
+ """
523
+ self.assertFalse(self.test_record_2.review_ids)
524
+ self.assertFalse(self.test_record_2.company_id)
525
+ self.assertEqual(self.test_user_3_multi_company.env.company, self.main_company)
526
+
527
+ self.test_record_2.company_id = self.main_company
528
+
529
+ reviews = self.test_record_2.with_user(
530
+ self.test_user_3_multi_company.id
531
+ ).request_validation()
532
+ self.test_record_2.invalidate_cache()
533
+
534
+ self.assertEqual(len(reviews), 2)
535
+
484
536
 
485
537
  @tagged("at_install")
486
538
  class TierTierValidationView(CommonTierValidation):
@@ -41,6 +41,7 @@ class TierValidationTester2(models.Model):
41
41
  )
42
42
  test_field = fields.Float()
43
43
  user_id = fields.Many2one(string="Assigned to:", comodel_name="res.users")
44
+ company_id = fields.Many2one(comodel_name="res.company")
44
45
 
45
46
  def action_confirm(self):
46
47
  self.write({"state": "confirmed"})
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-base_tier_validation
3
- Version: 15.0.1.5.0.2
3
+ Version: 15.0.1.6.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)
@@ -12,7 +12,7 @@ Classifier: Framework :: Odoo :: 15.0
12
12
  Classifier: License :: OSI Approved :: GNU Affero General Public License v3
13
13
  Classifier: Development Status :: 6 - Mature
14
14
  Requires-Python: >=3.8
15
- Requires-Dist: odoo <15.1dev,>=15.0a
15
+ Requires-Dist: odoo<15.1dev,>=15.0a
16
16
 
17
17
  ====================
18
18
  Base Tier Validation
@@ -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:6630e37cda41b78f1f3dfb44fb574c46992a747d7afb4c55e3ca7691027d177d
26
+ !! source digest: sha256:96f7d9d02c734dd0ceaeea2aee22eb2b056257384a73890e6b77df0e5af0ddb9
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=-tQtO_2feniz_m3sYC0jST8go-IaPO5oQWJ6KuMz6nE,6836
1
+ odoo/addons/base_tier_validation/README.rst,sha256=06ua6aNy4rANvyv1sniUpiT4jpks1v50-aG-tQhpRdk,6836
2
2
  odoo/addons/base_tier_validation/__init__.py,sha256=rKfzYX9RhkkCxgh2f0PJLYN45Kw8T8-fwxw1pbjLuug,108
3
- odoo/addons/base_tier_validation/__manifest__.py,sha256=FdbI0vNhN-fBTQJa2SvZacCH3oVbrnI6QxTa9Xj3Zkw,1476
3
+ odoo/addons/base_tier_validation/__manifest__.py,sha256=fRZeq8r77PWrDCecbi6ghLQrLGwa_961ejq5ZllnUeE,1476
4
4
  odoo/addons/base_tier_validation/data/cron_data.xml,sha256=HMA_SgAk3_vLu_QQLHd0UyzPASuDRj5cvpiK_17esQc,707
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=ds5mywlrl9Oxoeln6I6fYDM2pfFux8BYNsBcifYNPgQ,26602
@@ -16,7 +16,7 @@ odoo/addons/base_tier_validation/models/res_config_settings.py,sha256=78JEni0DTe
16
16
  odoo/addons/base_tier_validation/models/res_users.py,sha256=JH2QgQdACI-0GMHEI_JmIZf4G6huvQ4PqDza4M2Li48,2245
17
17
  odoo/addons/base_tier_validation/models/tier_definition.py,sha256=vpjLLP3XwMl35O8pCGh_5Db85iKrDV_G5OJTUtFszRI,4468
18
18
  odoo/addons/base_tier_validation/models/tier_review.py,sha256=q0xve9c8bAxjBrj2e7h7wqeZ0w0Hnm-u5Rp8iFeFJD0,6082
19
- odoo/addons/base_tier_validation/models/tier_validation.py,sha256=-NpGKEr22hbFxsq7s01P2Z4NxFV66YaxKaPf6DxDYsQ,22473
19
+ odoo/addons/base_tier_validation/models/tier_validation.py,sha256=YHUkzV1MowXII_zsmEXMUVby2FriCIugsBl7hJMrI2U,22994
20
20
  odoo/addons/base_tier_validation/readme/CONFIGURE.rst,sha256=-XvqIRVzdEx5Pl-w5qVHayTDYzGDI1FX92ChdijeNh0,503
21
21
  odoo/addons/base_tier_validation/readme/CONTRIBUTORS.rst,sha256=ibMe_AqDBgemGXGJOMH6_NCDegHoav6Umt7Fy4cmC-E,282
22
22
  odoo/addons/base_tier_validation/readme/DESCRIPTION.rst,sha256=MFbI1iBk0moWjdQUueJa05am8-JfIiiLRSyGgi1NBFY,653
@@ -25,7 +25,7 @@ odoo/addons/base_tier_validation/readme/ROADMAP.rst,sha256=UWhIpMUTM_ido6s3jZiF8
25
25
  odoo/addons/base_tier_validation/security/ir.model.access.csv,sha256=ZlU5wKSjQ8gL6iCulpR_AF-AdULanaGK9J1gl-Fx__4,399
26
26
  odoo/addons/base_tier_validation/security/tier_validation_security.xml,sha256=eWFwz-osHgYFmVoEVzOSboO9oqUMtQ8oygyaz0os50Y,806
27
27
  odoo/addons/base_tier_validation/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
28
- odoo/addons/base_tier_validation/static/description/index.html,sha256=Jwts_rAWLrVqJqvw22z2DDWTjcJmAg9cEQg2scNO-e8,20601
28
+ odoo/addons/base_tier_validation/static/description/index.html,sha256=iGKDFqd_9tZ1u6Qb0yP2JasBbngRe-HXdLyJ9ygMOxg,20601
29
29
  odoo/addons/base_tier_validation/static/src/js/systray.js,sha256=IbDLI1ML0B22wCPRlv-2T0PzTPW4k88JbzS1Dcogsuo,5725
30
30
  odoo/addons/base_tier_validation/static/src/js/tier_review_widget.js,sha256=9iEhOzvbKND-JDGDa9lhGsQd3wu9hZuJm48xdEK4uj8,1991
31
31
  odoo/addons/base_tier_validation/static/src/scss/review.scss,sha256=K0ZLNShHoj-piTp7EP92EglZgsFBsHyAazPr764rrHs,687
@@ -34,17 +34,17 @@ odoo/addons/base_tier_validation/static/src/xml/systray.xml,sha256=XZ-agb4gbp7NC
34
34
  odoo/addons/base_tier_validation/static/src/xml/tier_review_template.xml,sha256=s7OszZ996NilQ39CrRo6GXMZRFbV5qfoaiM6f6KsArg,3931
35
35
  odoo/addons/base_tier_validation/templates/tier_validation_templates.xml,sha256=Obob5W0mkAkhWWnr1UuR-sAZeUnH-xlEPggIXfuxbSY,3507
36
36
  odoo/addons/base_tier_validation/tests/__init__.py,sha256=7tj1DSbPnyA__lAKxvjX53Ll_ZTE8y8Z1bewtZJoURI,166
37
- odoo/addons/base_tier_validation/tests/common.py,sha256=zGOs4cOK_38Ez0tPpkdXJ-yo7AgM4OyFkgizOz2La1U,3222
38
- odoo/addons/base_tier_validation/tests/test_tier_validation.py,sha256=5hHWj92q8NCCFvw1iHDU3JAXC56SJ_W4tWw2XuNktYw,22118
37
+ odoo/addons/base_tier_validation/tests/common.py,sha256=B3bSzC-92HsmF_Nk10coQ_e_qJJJm2NaXX1_X1O8LPU,5353
38
+ odoo/addons/base_tier_validation/tests/test_tier_validation.py,sha256=GJuUms5RbinKGtAAWfVZ3oTeFlWPagsHOnyu2VGWiQU,24166
39
39
  odoo/addons/base_tier_validation/tests/test_tier_validation_reminder.py,sha256=jsLU-7pJtbUvKPi7ddXU4jAwiJp32pKTrluarrtLKvU,1963
40
- odoo/addons/base_tier_validation/tests/tier_validation_tester.py,sha256=AyHJIY1w2P1pH2BHCbXrlZTqlzWdXb5K43yy4KFbqu0,1645
40
+ odoo/addons/base_tier_validation/tests/tier_validation_tester.py,sha256=ciBojFHACr67E1R-1WuZpn5EQBh-c7J6CS6KjaHegGA,1706
41
41
  odoo/addons/base_tier_validation/views/res_config_settings_views.xml,sha256=PFLz_GkO4s77YReykKjLDYaUfmkCaeFNTxkeUuEYarE,4156
42
42
  odoo/addons/base_tier_validation/views/tier_definition_view.xml,sha256=BM04uI_70SVdYUM3FZRGZW0RpfiIT_R86TjyNWMmmS4,6971
43
43
  odoo/addons/base_tier_validation/views/tier_review_view.xml,sha256=tPzmpz-kbQwOOtJrAcsTJEP9bJLcfzWAITCpI86kZU4,966
44
44
  odoo/addons/base_tier_validation/wizard/__init__.py,sha256=52q6-LAjYeJ1Vu5ahon_jnhds9VsoJvYaQCiZc82WKw,95
45
45
  odoo/addons/base_tier_validation/wizard/comment_wizard.py,sha256=JzF5RBpqx3JB3IuXdSHbZ6saLwLlRnQzGHWQk2D82uA,855
46
46
  odoo/addons/base_tier_validation/wizard/comment_wizard_view.xml,sha256=lUW9oncnS7MaayA5EIbeQ2XNlTc3SZ8wE8eKSnS5w1k,967
47
- odoo_addon_base_tier_validation-15.0.1.5.0.2.dist-info/METADATA,sha256=uDvjIQw7F5X3tdJRKegr_7RwEq4smeYJ7akVOak_cjs,7420
48
- odoo_addon_base_tier_validation-15.0.1.5.0.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
49
- odoo_addon_base_tier_validation-15.0.1.5.0.2.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
50
- odoo_addon_base_tier_validation-15.0.1.5.0.2.dist-info/RECORD,,
47
+ odoo_addon_base_tier_validation-15.0.1.6.0.dist-info/METADATA,sha256=3-OyNHbWfJTi5GlcgKMtIrkWjmkxLAoBUnu2gi_aZec,7417
48
+ odoo_addon_base_tier_validation-15.0.1.6.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
49
+ odoo_addon_base_tier_validation-15.0.1.6.0.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
50
+ odoo_addon_base_tier_validation-15.0.1.6.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: bdist_wheel (0.45.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5