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.
- odoo/addons/base_tier_validation/README.rst +11 -6
- odoo/addons/base_tier_validation/__manifest__.py +1 -1
- odoo/addons/base_tier_validation/i18n/base_tier_validation.pot +104 -6
- odoo/addons/base_tier_validation/i18n/es.po +147 -73
- odoo/addons/base_tier_validation/i18n/es_MX.po +104 -6
- odoo/addons/base_tier_validation/i18n/fr.po +186 -78
- odoo/addons/base_tier_validation/i18n/it.po +159 -48
- odoo/addons/base_tier_validation/i18n/nl_NL.po +159 -37
- odoo/addons/base_tier_validation/i18n/sv.po +140 -54
- odoo/addons/base_tier_validation/i18n/tr.po +107 -6
- odoo/addons/base_tier_validation/i18n/zh_CN.po +107 -6
- odoo/addons/base_tier_validation/models/res_config_settings.py +3 -3
- odoo/addons/base_tier_validation/models/res_users.py +5 -0
- odoo/addons/base_tier_validation/models/tier_definition.py +18 -0
- odoo/addons/base_tier_validation/models/tier_review.py +18 -3
- odoo/addons/base_tier_validation/models/tier_validation.py +183 -63
- odoo/addons/base_tier_validation/readme/CONTRIBUTORS.rst +2 -0
- odoo/addons/base_tier_validation/static/description/index.html +68 -65
- odoo/addons/base_tier_validation/static/src/xml/tier_review_template.xml +41 -17
- odoo/addons/base_tier_validation/templates/tier_validation_templates.xml +7 -6
- odoo/addons/base_tier_validation/tests/common.py +19 -6
- odoo/addons/base_tier_validation/tests/test_tier_validation.py +415 -0
- odoo/addons/base_tier_validation/tests/tier_validation_tester.py +13 -2
- odoo/addons/base_tier_validation/views/res_config_settings_views.xml +6 -6
- odoo/addons/base_tier_validation/views/tier_definition_view.xml +14 -1
- {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
- {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
- {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
- {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
|
-
|
12
|
-
|
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
|
-
|
72
|
-
|
73
|
-
review.reviewed_formated_date =
|
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):
|