odoo-addon-base-tier-validation 16.0.1.0.4.29__py3-none-any.whl → 16.0.1.5.1__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.
Files changed (29) hide show
  1. odoo/addons/base_tier_validation/README.rst +11 -6
  2. odoo/addons/base_tier_validation/__manifest__.py +1 -1
  3. odoo/addons/base_tier_validation/i18n/base_tier_validation.pot +104 -6
  4. odoo/addons/base_tier_validation/i18n/es.po +147 -73
  5. odoo/addons/base_tier_validation/i18n/es_MX.po +104 -6
  6. odoo/addons/base_tier_validation/i18n/fr.po +186 -78
  7. odoo/addons/base_tier_validation/i18n/it.po +159 -48
  8. odoo/addons/base_tier_validation/i18n/nl_NL.po +159 -37
  9. odoo/addons/base_tier_validation/i18n/sv.po +140 -54
  10. odoo/addons/base_tier_validation/i18n/tr.po +107 -6
  11. odoo/addons/base_tier_validation/i18n/zh_CN.po +107 -6
  12. odoo/addons/base_tier_validation/models/res_config_settings.py +3 -3
  13. odoo/addons/base_tier_validation/models/res_users.py +5 -0
  14. odoo/addons/base_tier_validation/models/tier_definition.py +18 -0
  15. odoo/addons/base_tier_validation/models/tier_review.py +18 -3
  16. odoo/addons/base_tier_validation/models/tier_validation.py +183 -63
  17. odoo/addons/base_tier_validation/readme/CONTRIBUTORS.rst +2 -0
  18. odoo/addons/base_tier_validation/static/description/index.html +68 -65
  19. odoo/addons/base_tier_validation/static/src/xml/tier_review_template.xml +41 -17
  20. odoo/addons/base_tier_validation/templates/tier_validation_templates.xml +7 -6
  21. odoo/addons/base_tier_validation/tests/common.py +19 -6
  22. odoo/addons/base_tier_validation/tests/test_tier_validation.py +415 -0
  23. odoo/addons/base_tier_validation/tests/tier_validation_tester.py +13 -2
  24. odoo/addons/base_tier_validation/views/res_config_settings_views.xml +6 -6
  25. odoo/addons/base_tier_validation/views/tier_definition_view.xml +14 -1
  26. {odoo_addon_base_tier_validation-16.0.1.0.4.29.dist-info → odoo_addon_base_tier_validation-16.0.1.5.1.dist-info}/METADATA +13 -8
  27. {odoo_addon_base_tier_validation-16.0.1.0.4.29.dist-info → odoo_addon_base_tier_validation-16.0.1.5.1.dist-info}/RECORD +29 -29
  28. {odoo_addon_base_tier_validation-16.0.1.0.4.29.dist-info → odoo_addon_base_tier_validation-16.0.1.5.1.dist-info}/WHEEL +1 -1
  29. {odoo_addon_base_tier_validation-16.0.1.0.4.29.dist-info → odoo_addon_base_tier_validation-16.0.1.5.1.dist-info}/top_level.txt +0 -0
@@ -54,6 +54,11 @@ msgstr ""
54
54
  msgid "<span class=\"oe_edit_only\">Name</span>"
55
55
  msgstr "<span class=\"oe_edit_only\">名称</span>"
56
56
 
57
+ #. module: base_tier_validation
58
+ #: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form
59
+ msgid "<span>Bypassed, if previous tier was validated by same reviewer</span>"
60
+ msgstr ""
61
+
57
62
  #. module: base_tier_validation
58
63
  #. odoo-python
59
64
  #: code:addons/base_tier_validation/models/tier_validation.py:0
@@ -129,6 +134,12 @@ msgstr ""
129
134
  msgid "Approval order by the specified sequence number"
130
135
  msgstr "审批按指定序号排序"
131
136
 
137
+ #. module: base_tier_validation
138
+ #: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence_bypass
139
+ #: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence_bypass
140
+ msgid "Approve Sequence Bypass"
141
+ msgstr ""
142
+
132
143
  #. module: base_tier_validation
133
144
  #: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence
134
145
  #: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence
@@ -140,6 +151,18 @@ msgstr "按顺序审批"
140
151
  msgid "Approved"
141
152
  msgstr "已批准"
142
153
 
154
+ #. module: base_tier_validation
155
+ #: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form
156
+ msgid "Archived"
157
+ msgstr ""
158
+
159
+ #. module: base_tier_validation
160
+ #: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass
161
+ #: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass
162
+ msgid ""
163
+ "Bypassed (auto validated), if previous tier was validated by same reviewer"
164
+ msgstr ""
165
+
143
166
  #. module: base_tier_validation
144
167
  #: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__can_review
145
168
  #: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__can_review
@@ -159,8 +182,8 @@ msgid "Cancel"
159
182
  msgstr "取消"
160
183
 
161
184
  #. module: base_tier_validation
162
- #. odoo-javascript
163
185
  #. odoo-python
186
+ #. odoo-javascript
164
187
  #: code:addons/base_tier_validation/models/tier_validation.py:0
165
188
  #: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0
166
189
  #: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__comment
@@ -233,6 +256,11 @@ msgstr "说明"
233
256
  msgid "Display Name"
234
257
  msgstr "显示名称"
235
258
 
259
+ #. module: base_tier_validation
260
+ #: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__display_status
261
+ msgid "Display Status"
262
+ msgstr ""
263
+
236
264
  #. module: base_tier_validation
237
265
  #: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__definition_type__domain
238
266
  msgid "Domain"
@@ -286,6 +314,27 @@ msgid ""
286
314
  "definition is triggered."
287
315
  msgstr "如果设置,则触发此定义规则时将通过电子邮件通知所有的审批人。"
288
316
 
317
+ #. module: base_tier_validation
318
+ #: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_accepted
319
+ msgid ""
320
+ "If set, reviewers will be notified by email when a review related to this "
321
+ "definition is accepted."
322
+ msgstr ""
323
+
324
+ #. module: base_tier_validation
325
+ #: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_rejected
326
+ msgid ""
327
+ "If set, reviewers will be notified by email when a review related to this "
328
+ "definition is rejected."
329
+ msgstr ""
330
+
331
+ #. module: base_tier_validation
332
+ #: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_restarted
333
+ msgid ""
334
+ "If set, reviewers will be notified by email when a reviews related to this "
335
+ "definition are restarted."
336
+ msgstr ""
337
+
289
338
  #. module: base_tier_validation
290
339
  #: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard____last_update
291
340
  #: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition____last_update
@@ -349,11 +398,26 @@ msgstr ""
349
398
  msgid "No reviews to do."
350
399
  msgstr "没有待审批的项目。"
351
400
 
401
+ #. module: base_tier_validation
402
+ #: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_accepted
403
+ msgid "Notify Reviewers on Accepted"
404
+ msgstr ""
405
+
352
406
  #. module: base_tier_validation
353
407
  #: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create
354
408
  msgid "Notify Reviewers on Creation"
355
409
  msgstr "创建时通知审批人"
356
410
 
411
+ #. module: base_tier_validation
412
+ #: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_rejected
413
+ msgid "Notify Reviewers on Rejected"
414
+ msgstr ""
415
+
416
+ #. module: base_tier_validation
417
+ #: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_restarted
418
+ msgid "Notify Reviewers on Restarted"
419
+ msgstr ""
420
+
357
421
  #. module: base_tier_validation
358
422
  #. odoo-python
359
423
  #: code:addons/base_tier_validation/models/tier_validation.py:0
@@ -368,10 +432,21 @@ msgstr ""
368
432
  msgid "Operation has been <b>validated</b>!"
369
433
  msgstr ""
370
434
 
435
+ #. module: base_tier_validation
436
+ #: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget
437
+ msgid "Option to forward a tier validation to other reviewer, and backward"
438
+ msgstr ""
439
+
440
+ #. module: base_tier_validation
441
+ #: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget
442
+ msgid "Option to use python formula to get reviewers and find documents"
443
+ msgstr ""
444
+
371
445
  #. module: base_tier_validation
372
446
  #. odoo-javascript
373
447
  #: code:addons/base_tier_validation/static/src/xml/systray.xml:0
374
448
  #: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending
449
+ #: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending
375
450
  #, python-format
376
451
  msgid "Pending"
377
452
  msgstr "待审批"
@@ -389,6 +464,7 @@ msgstr ""
389
464
  #. module: base_tier_validation
390
465
  #: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected
391
466
  #: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected
467
+ #: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected
392
468
  msgid "Rejected"
393
469
  msgstr "已驳回"
394
470
 
@@ -481,6 +557,7 @@ msgstr "审批"
481
557
  #. odoo-javascript
482
558
  #: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0
483
559
  #: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__sequence
560
+ #: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__sequence
484
561
  #, python-format
485
562
  msgid "Sequence"
486
563
  msgstr "序号"
@@ -537,11 +614,6 @@ msgstr ""
537
614
  "此操作需要至少对一条记录进行审批。\n"
538
615
  "请发起审批申请。"
539
616
 
540
- #. module: base_tier_validation
541
- #: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__sequence
542
- msgid "Tier"
543
- msgstr "层级"
544
-
545
617
  #. module: base_tier_validation
546
618
  #: model:ir.actions.act_window,name:base_tier_validation.tier_definition_action
547
619
  #: model:ir.model,name:base_tier_validation.model_tier_definition
@@ -550,11 +622,26 @@ msgstr "层级"
550
622
  msgid "Tier Definition"
551
623
  msgstr "层级定义"
552
624
 
625
+ #. module: base_tier_validation
626
+ #: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_formula
627
+ msgid "Tier Formula"
628
+ msgstr ""
629
+
630
+ #. module: base_tier_validation
631
+ #: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_forward
632
+ msgid "Tier Forward & Backward"
633
+ msgstr ""
634
+
553
635
  #. module: base_tier_validation
554
636
  #: model:ir.model,name:base_tier_validation.model_tier_review
555
637
  msgid "Tier Review"
556
638
  msgstr "多层级审批"
557
639
 
640
+ #. module: base_tier_validation
641
+ #: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget
642
+ msgid "Tier Validation"
643
+ msgstr ""
644
+
558
645
  #. module: base_tier_validation
559
646
  #: model:ir.model,name:base_tier_validation.model_tier_validation
560
647
  msgid "Tier Validation (abstract)"
@@ -626,6 +713,7 @@ msgstr "驳回"
626
713
 
627
714
  #. module: base_tier_validation
628
715
  #: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated
716
+ #: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated
629
717
  msgid "Validated"
630
718
  msgstr "已批准"
631
719
 
@@ -653,16 +741,29 @@ msgstr "审批日期"
653
741
  msgid "Validation Formated Date"
654
742
  msgstr ""
655
743
 
744
+ #. module: base_tier_validation
745
+ #: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status
746
+ msgid "Validation Status"
747
+ msgstr ""
748
+
656
749
  #. module: base_tier_validation
657
750
  #: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids
658
751
  msgid "Validations"
659
752
  msgstr "审批"
660
753
 
754
+ #. module: base_tier_validation
755
+ #: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no
756
+ msgid "Without validation"
757
+ msgstr ""
758
+
661
759
  #. module: base_tier_validation
662
760
  #: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form
663
761
  msgid "e.g. Tier Validation for..."
664
762
  msgstr "例如:审批层级用于..."
665
763
 
764
+ #~ msgid "Tier"
765
+ #~ msgstr "层级"
766
+
666
767
  #, python-format
667
768
  #~ msgid "Activities"
668
769
  #~ msgstr "活动项目"
@@ -1,6 +1,6 @@
1
1
  # Copyright 2021 Ecosoft Co., Ltd. (http://ecosoft.co.th)
2
2
  # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
3
- from odoo import models
3
+ from odoo import fields, models
4
4
 
5
5
 
6
6
  class ResConfigSettings(models.TransientModel):
@@ -8,7 +8,7 @@ class ResConfigSettings(models.TransientModel):
8
8
 
9
9
  # Activate me back when modules are migrated
10
10
 
11
- # module_base_tier_validation_formula = fields.Boolean(string="Tier Formula")
12
- # module_base_tier_validation_forward = fields.Boolean("Tier Forward & Backward")
11
+ module_base_tier_validation_formula = fields.Boolean(string="Tier Formula")
12
+ module_base_tier_validation_forward = fields.Boolean("Tier Forward & Backward")
13
13
  # module_base_tier_validation_server_action = fields.Boolean("Tier Server Action")
14
14
  # module_base_tier_validation_report = fields.Boolean("Tier Reports")
@@ -28,6 +28,11 @@ class Users(models.Model):
28
28
  .search([("id", "in", reviews.mapped("res_id"))])
29
29
  .filtered(lambda x: not x.rejected and x.can_review)
30
30
  )
31
+ # Excludes any cancelled records depending on the structure of the model
32
+ if self.env[model]._state_field in self.env[model]._fields:
33
+ records = records.filtered(
34
+ lambda x: x[x._state_field] != x._cancel_state
35
+ )
31
36
  # if len(records):
32
37
  for rec in records:
33
38
  record = self.env[model]
@@ -67,12 +67,30 @@ class TierDefinition(models.Model):
67
67
  help="If set, all possible reviewers will be notified by email when "
68
68
  "this definition is triggered.",
69
69
  )
70
+ notify_on_accepted = fields.Boolean(
71
+ string="Notify Reviewers on Accepted",
72
+ help="If set, reviewers will be notified by email when a review related "
73
+ "to this definition is accepted.",
74
+ )
75
+ notify_on_rejected = fields.Boolean(
76
+ string="Notify Reviewers on Rejected",
77
+ help="If set, reviewers will be notified by email when a review related "
78
+ "to this definition is rejected.",
79
+ )
80
+ notify_on_restarted = fields.Boolean(
81
+ string="Notify Reviewers on Restarted",
82
+ help="If set, reviewers will be notified by email when a reviews related "
83
+ "to this definition are restarted.",
84
+ )
70
85
  has_comment = fields.Boolean(string="Comment", default=False)
71
86
  approve_sequence = fields.Boolean(
72
87
  string="Approve by sequence",
73
88
  default=False,
74
89
  help="Approval order by the specified sequence number",
75
90
  )
91
+ approve_sequence_bypass = fields.Boolean(
92
+ help="Bypassed (auto validated), if previous tier was validated by same reviewer",
93
+ )
76
94
 
77
95
  @api.onchange("review_type")
78
96
  def onchange_review_type(self):
@@ -41,6 +41,7 @@ class TierReview(models.Model):
41
41
  compute="_compute_reviewer_ids",
42
42
  store=True,
43
43
  )
44
+ display_status = fields.Char(compute="_compute_display_status")
44
45
  sequence = fields.Integer(string="Tier")
45
46
  todo_by = fields.Char(compute="_compute_todo_by", store=True)
46
47
  done_by = fields.Many2one(comodel_name="res.users")
@@ -60,6 +61,20 @@ class TierReview(models.Model):
60
61
  approve_sequence = fields.Boolean(
61
62
  related="definition_id.approve_sequence", readonly=True
62
63
  )
64
+ approve_sequence_bypass = fields.Boolean(
65
+ related="definition_id.approve_sequence_bypass", readonly=True
66
+ )
67
+
68
+ @api.depends("status")
69
+ def _compute_display_status(self):
70
+ """
71
+ Compute the display status based on the current status value to get the
72
+ translated status value.
73
+ """
74
+ selection = self.fields_get(["status"])["status"]["selection"]
75
+ selection_dict = dict(selection)
76
+ for record in self:
77
+ record.display_status = selection_dict[record.status]
63
78
 
64
79
  @api.depends_context("tz")
65
80
  def _compute_reviewed_formated_date(self):
@@ -68,9 +83,9 @@ class TierReview(models.Model):
68
83
  if not review.reviewed_date:
69
84
  review.reviewed_formated_date = False
70
85
  continue
71
- requested_date_utc = pytz.timezone(timezone).localize(review.reviewed_date)
72
- requested_date = requested_date_utc.astimezone(pytz.timezone(timezone))
73
- review.reviewed_formated_date = requested_date.replace(tzinfo=None)
86
+ reviewed_date_utc = pytz.timezone("UTC").localize(review.reviewed_date)
87
+ reviewed_date_tz = reviewed_date_utc.astimezone(pytz.timezone(timezone))
88
+ review.reviewed_formated_date = reviewed_date_tz.replace(tzinfo=None)
74
89
 
75
90
  @api.depends("definition_id.approve_sequence")
76
91
  def _compute_can_review(self):