odoo-addon-base-tier-validation 15.0.1.4.0__py3-none-any.whl → 15.0.1.5.0.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 +1 -1
- odoo/addons/base_tier_validation/__manifest__.py +2 -1
- odoo/addons/base_tier_validation/data/cron_data.xml +17 -0
- odoo/addons/base_tier_validation/data/mail_data.xml +18 -0
- odoo/addons/base_tier_validation/i18n/base_tier_validation.pot +36 -0
- odoo/addons/base_tier_validation/i18n/es.po +55 -5
- odoo/addons/base_tier_validation/i18n/es_MX.po +54 -0
- odoo/addons/base_tier_validation/i18n/fr.po +54 -0
- odoo/addons/base_tier_validation/i18n/it.po +54 -0
- odoo/addons/base_tier_validation/i18n/nl_NL.po +54 -0
- odoo/addons/base_tier_validation/i18n/sv.po +54 -0
- odoo/addons/base_tier_validation/i18n/zh_CN.po +54 -0
- odoo/addons/base_tier_validation/models/tier_definition.py +35 -0
- odoo/addons/base_tier_validation/models/tier_review.py +40 -0
- odoo/addons/base_tier_validation/static/description/index.html +8 -5
- odoo/addons/base_tier_validation/tests/__init__.py +1 -0
- odoo/addons/base_tier_validation/tests/common.py +1 -1
- odoo/addons/base_tier_validation/tests/test_tier_validation_reminder.py +46 -0
- odoo/addons/base_tier_validation/views/tier_definition_view.xml +1 -0
- {odoo_addon_base_tier_validation-15.0.1.4.0.dist-info → odoo_addon_base_tier_validation-15.0.1.5.0.1.dist-info}/METADATA +3 -6
- {odoo_addon_base_tier_validation-15.0.1.4.0.dist-info → odoo_addon_base_tier_validation-15.0.1.5.0.1.dist-info}/RECORD +23 -21
- {odoo_addon_base_tier_validation-15.0.1.4.0.dist-info → odoo_addon_base_tier_validation-15.0.1.5.0.1.dist-info}/WHEEL +1 -1
- {odoo_addon_base_tier_validation-15.0.1.4.0.dist-info → odoo_addon_base_tier_validation-15.0.1.5.0.1.dist-info}/top_level.txt +0 -0
@@ -59,6 +59,12 @@ msgstr "<span class=\"oe_edit_only\">Naam</span>"
|
|
59
59
|
msgid "<span>Bypassed, if previous tier was validated by same reviewer</span>"
|
60
60
|
msgstr ""
|
61
61
|
|
62
|
+
#. module: base_tier_validation
|
63
|
+
#: code:addons/base_tier_validation/models/tier_review.py:0
|
64
|
+
#, python-format
|
65
|
+
msgid "A review has been requested %s days ago."
|
66
|
+
msgstr ""
|
67
|
+
|
62
68
|
#. module: base_tier_validation
|
63
69
|
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
64
70
|
#, python-format
|
@@ -145,6 +151,11 @@ msgstr "Goedkeuren op volgorde"
|
|
145
151
|
msgid "Approved"
|
146
152
|
msgstr "Goedgekeurd"
|
147
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
|
+
|
148
159
|
#. module: base_tier_validation
|
149
160
|
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass
|
150
161
|
#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass
|
@@ -315,6 +326,11 @@ msgstr ""
|
|
315
326
|
msgid "Last Modified on"
|
316
327
|
msgstr "Laatst gewijzigd op"
|
317
328
|
|
329
|
+
#. module: base_tier_validation
|
330
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__last_reminder_date
|
331
|
+
msgid "Last Reminder Date"
|
332
|
+
msgstr ""
|
333
|
+
|
318
334
|
#. module: base_tier_validation
|
319
335
|
#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid
|
320
336
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid
|
@@ -379,6 +395,13 @@ msgstr "Geen beoordelingen te doen."
|
|
379
395
|
msgid "Notify Reviewers on Creation"
|
380
396
|
msgstr "Informeer beoordelaar bij het maken"
|
381
397
|
|
398
|
+
#. module: base_tier_validation
|
399
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_reminder_delay
|
400
|
+
msgid ""
|
401
|
+
"Number of days after which a message must be posted to remind about pending "
|
402
|
+
"validation (0 = no reminder)"
|
403
|
+
msgstr ""
|
404
|
+
|
382
405
|
#. module: base_tier_validation
|
383
406
|
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
384
407
|
#, python-format
|
@@ -410,6 +433,7 @@ msgstr ""
|
|
410
433
|
#. openerp-web
|
411
434
|
#: code:addons/base_tier_validation/static/src/xml/systray.xml:0
|
412
435
|
#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending
|
436
|
+
#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending
|
413
437
|
#, python-format
|
414
438
|
msgid "Pending"
|
415
439
|
msgstr "In afwachting"
|
@@ -427,6 +451,7 @@ msgstr ""
|
|
427
451
|
#. module: base_tier_validation
|
428
452
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected
|
429
453
|
#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected
|
454
|
+
#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected
|
430
455
|
msgid "Rejected"
|
431
456
|
msgstr "Afgekeurd"
|
432
457
|
|
@@ -518,6 +543,18 @@ msgstr "Beoordelaars"
|
|
518
543
|
msgid "Reviews"
|
519
544
|
msgstr "Beoordelingen"
|
520
545
|
|
546
|
+
#. module: base_tier_validation
|
547
|
+
#: model:ir.actions.server,name:base_tier_validation.ir_cron_auto_tier_validation_ir_actions_server
|
548
|
+
#: model:ir.cron,cron_name:base_tier_validation.ir_cron_auto_tier_validation
|
549
|
+
#: model:ir.cron,name:base_tier_validation.ir_cron_auto_tier_validation
|
550
|
+
msgid "Send Tier Review Reminder"
|
551
|
+
msgstr ""
|
552
|
+
|
553
|
+
#. module: base_tier_validation
|
554
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_reminder_delay
|
555
|
+
msgid "Send reminder message on pending reviews"
|
556
|
+
msgstr ""
|
557
|
+
|
521
558
|
#. module: base_tier_validation
|
522
559
|
#. openerp-web
|
523
560
|
#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0
|
@@ -629,6 +666,12 @@ msgstr "Tier-validatie (abstract)"
|
|
629
666
|
msgid "Tier Validation Rejected Notification"
|
630
667
|
msgstr "Tier-validatie (abstract)"
|
631
668
|
|
669
|
+
#. module: base_tier_validation
|
670
|
+
#: model:mail.activity.type,name:base_tier_validation.mail_act_tier_validation_reminder
|
671
|
+
#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_reminder
|
672
|
+
msgid "Tier Validation Reminder"
|
673
|
+
msgstr ""
|
674
|
+
|
632
675
|
#. module: base_tier_validation
|
633
676
|
#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested
|
634
677
|
msgid "Tier Validation Requested"
|
@@ -683,6 +726,7 @@ msgstr "Valideren weigeren"
|
|
683
726
|
|
684
727
|
#. module: base_tier_validation
|
685
728
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated
|
729
|
+
#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated
|
686
730
|
msgid "Validated"
|
687
731
|
msgstr "Gevalideerd"
|
688
732
|
|
@@ -705,11 +749,21 @@ msgstr "Gevalideerd door"
|
|
705
749
|
msgid "Validation Date"
|
706
750
|
msgstr "Validatie datum"
|
707
751
|
|
752
|
+
#. module: base_tier_validation
|
753
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status
|
754
|
+
msgid "Validation Status"
|
755
|
+
msgstr ""
|
756
|
+
|
708
757
|
#. module: base_tier_validation
|
709
758
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids
|
710
759
|
msgid "Validations"
|
711
760
|
msgstr "Validaties"
|
712
761
|
|
762
|
+
#. module: base_tier_validation
|
763
|
+
#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no
|
764
|
+
msgid "Without validation"
|
765
|
+
msgstr ""
|
766
|
+
|
713
767
|
#. module: base_tier_validation
|
714
768
|
#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form
|
715
769
|
msgid "e.g. Tier Validation for..."
|
@@ -70,6 +70,12 @@ msgstr "<span class=\"oe_edit_only\">Namn</span>"
|
|
70
70
|
msgid "<span>Bypassed, if previous tier was validated by same reviewer</span>"
|
71
71
|
msgstr ""
|
72
72
|
|
73
|
+
#. module: base_tier_validation
|
74
|
+
#: code:addons/base_tier_validation/models/tier_review.py:0
|
75
|
+
#, python-format
|
76
|
+
msgid "A review has been requested %s days ago."
|
77
|
+
msgstr ""
|
78
|
+
|
73
79
|
#. module: base_tier_validation
|
74
80
|
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
75
81
|
#, python-format
|
@@ -156,6 +162,11 @@ msgstr "Godkänn efter sekvens"
|
|
156
162
|
msgid "Approved"
|
157
163
|
msgstr "Godkänd"
|
158
164
|
|
165
|
+
#. module: base_tier_validation
|
166
|
+
#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form
|
167
|
+
msgid "Archived"
|
168
|
+
msgstr ""
|
169
|
+
|
159
170
|
#. module: base_tier_validation
|
160
171
|
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass
|
161
172
|
#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass
|
@@ -328,6 +339,11 @@ msgstr ""
|
|
328
339
|
msgid "Last Modified on"
|
329
340
|
msgstr "Senast ändrad den"
|
330
341
|
|
342
|
+
#. module: base_tier_validation
|
343
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__last_reminder_date
|
344
|
+
msgid "Last Reminder Date"
|
345
|
+
msgstr ""
|
346
|
+
|
331
347
|
#. module: base_tier_validation
|
332
348
|
#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid
|
333
349
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid
|
@@ -394,6 +410,13 @@ msgstr "Inga granskningar att göra."
|
|
394
410
|
msgid "Notify Reviewers on Creation"
|
395
411
|
msgstr "Meddela granskare vid skapande"
|
396
412
|
|
413
|
+
#. module: base_tier_validation
|
414
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_reminder_delay
|
415
|
+
msgid ""
|
416
|
+
"Number of days after which a message must be posted to remind about pending "
|
417
|
+
"validation (0 = no reminder)"
|
418
|
+
msgstr ""
|
419
|
+
|
397
420
|
#. module: base_tier_validation
|
398
421
|
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
399
422
|
#, python-format
|
@@ -430,6 +453,7 @@ msgstr ""
|
|
430
453
|
#. openerp-web
|
431
454
|
#: code:addons/base_tier_validation/static/src/xml/systray.xml:0
|
432
455
|
#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending
|
456
|
+
#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending
|
433
457
|
#, python-format
|
434
458
|
msgid "Pending"
|
435
459
|
msgstr "Väntande"
|
@@ -447,6 +471,7 @@ msgstr "Neka"
|
|
447
471
|
#. module: base_tier_validation
|
448
472
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected
|
449
473
|
#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected
|
474
|
+
#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected
|
450
475
|
msgid "Rejected"
|
451
476
|
msgstr "Nekad"
|
452
477
|
|
@@ -538,6 +563,18 @@ msgstr "Granskare"
|
|
538
563
|
msgid "Reviews"
|
539
564
|
msgstr "Granskningar"
|
540
565
|
|
566
|
+
#. module: base_tier_validation
|
567
|
+
#: model:ir.actions.server,name:base_tier_validation.ir_cron_auto_tier_validation_ir_actions_server
|
568
|
+
#: model:ir.cron,cron_name:base_tier_validation.ir_cron_auto_tier_validation
|
569
|
+
#: model:ir.cron,name:base_tier_validation.ir_cron_auto_tier_validation
|
570
|
+
msgid "Send Tier Review Reminder"
|
571
|
+
msgstr ""
|
572
|
+
|
573
|
+
#. module: base_tier_validation
|
574
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_reminder_delay
|
575
|
+
msgid "Send reminder message on pending reviews"
|
576
|
+
msgstr ""
|
577
|
+
|
541
578
|
#. module: base_tier_validation
|
542
579
|
#. openerp-web
|
543
580
|
#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0
|
@@ -647,6 +684,12 @@ msgstr "Meddelande vid accepterad attestering"
|
|
647
684
|
msgid "Tier Validation Rejected Notification"
|
648
685
|
msgstr "Meddelande vid nekad attestering"
|
649
686
|
|
687
|
+
#. module: base_tier_validation
|
688
|
+
#: model:mail.activity.type,name:base_tier_validation.mail_act_tier_validation_reminder
|
689
|
+
#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_reminder
|
690
|
+
msgid "Tier Validation Reminder"
|
691
|
+
msgstr ""
|
692
|
+
|
650
693
|
#. module: base_tier_validation
|
651
694
|
#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested
|
652
695
|
msgid "Tier Validation Requested"
|
@@ -701,6 +744,7 @@ msgstr "Validera Neka"
|
|
701
744
|
|
702
745
|
#. module: base_tier_validation
|
703
746
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated
|
747
|
+
#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated
|
704
748
|
msgid "Validated"
|
705
749
|
msgstr "Validerad"
|
706
750
|
|
@@ -723,11 +767,21 @@ msgstr "Validerad av"
|
|
723
767
|
msgid "Validation Date"
|
724
768
|
msgstr "Valideringsdatum"
|
725
769
|
|
770
|
+
#. module: base_tier_validation
|
771
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status
|
772
|
+
msgid "Validation Status"
|
773
|
+
msgstr ""
|
774
|
+
|
726
775
|
#. module: base_tier_validation
|
727
776
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids
|
728
777
|
msgid "Validations"
|
729
778
|
msgstr "Valideringar"
|
730
779
|
|
780
|
+
#. module: base_tier_validation
|
781
|
+
#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no
|
782
|
+
msgid "Without validation"
|
783
|
+
msgstr ""
|
784
|
+
|
731
785
|
#. module: base_tier_validation
|
732
786
|
#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form
|
733
787
|
msgid "e.g. Tier Validation for..."
|
@@ -59,6 +59,12 @@ msgstr "<span class=\"oe_edit_only\">名称</span>"
|
|
59
59
|
msgid "<span>Bypassed, if previous tier was validated by same reviewer</span>"
|
60
60
|
msgstr ""
|
61
61
|
|
62
|
+
#. module: base_tier_validation
|
63
|
+
#: code:addons/base_tier_validation/models/tier_review.py:0
|
64
|
+
#, python-format
|
65
|
+
msgid "A review has been requested %s days ago."
|
66
|
+
msgstr ""
|
67
|
+
|
62
68
|
#. module: base_tier_validation
|
63
69
|
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
64
70
|
#, python-format
|
@@ -145,6 +151,11 @@ msgstr "按顺序审批"
|
|
145
151
|
msgid "Approved"
|
146
152
|
msgstr "已批准"
|
147
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
|
+
|
148
159
|
#. module: base_tier_validation
|
149
160
|
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass
|
150
161
|
#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass
|
@@ -313,6 +324,11 @@ msgstr ""
|
|
313
324
|
msgid "Last Modified on"
|
314
325
|
msgstr "最近修改时间"
|
315
326
|
|
327
|
+
#. module: base_tier_validation
|
328
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__last_reminder_date
|
329
|
+
msgid "Last Reminder Date"
|
330
|
+
msgstr ""
|
331
|
+
|
316
332
|
#. module: base_tier_validation
|
317
333
|
#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid
|
318
334
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid
|
@@ -377,6 +393,13 @@ msgstr "没有待审批的项目。"
|
|
377
393
|
msgid "Notify Reviewers on Creation"
|
378
394
|
msgstr "创建时通知审批人"
|
379
395
|
|
396
|
+
#. module: base_tier_validation
|
397
|
+
#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_reminder_delay
|
398
|
+
msgid ""
|
399
|
+
"Number of days after which a message must be posted to remind about pending "
|
400
|
+
"validation (0 = no reminder)"
|
401
|
+
msgstr ""
|
402
|
+
|
380
403
|
#. module: base_tier_validation
|
381
404
|
#: code:addons/base_tier_validation/models/tier_validation.py:0
|
382
405
|
#, python-format
|
@@ -408,6 +431,7 @@ msgstr ""
|
|
408
431
|
#. openerp-web
|
409
432
|
#: code:addons/base_tier_validation/static/src/xml/systray.xml:0
|
410
433
|
#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending
|
434
|
+
#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending
|
411
435
|
#, python-format
|
412
436
|
msgid "Pending"
|
413
437
|
msgstr "待审批"
|
@@ -425,6 +449,7 @@ msgstr ""
|
|
425
449
|
#. module: base_tier_validation
|
426
450
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected
|
427
451
|
#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected
|
452
|
+
#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected
|
428
453
|
msgid "Rejected"
|
429
454
|
msgstr "已驳回"
|
430
455
|
|
@@ -516,6 +541,18 @@ msgstr "审批者"
|
|
516
541
|
msgid "Reviews"
|
517
542
|
msgstr "审批"
|
518
543
|
|
544
|
+
#. module: base_tier_validation
|
545
|
+
#: model:ir.actions.server,name:base_tier_validation.ir_cron_auto_tier_validation_ir_actions_server
|
546
|
+
#: model:ir.cron,cron_name:base_tier_validation.ir_cron_auto_tier_validation
|
547
|
+
#: model:ir.cron,name:base_tier_validation.ir_cron_auto_tier_validation
|
548
|
+
msgid "Send Tier Review Reminder"
|
549
|
+
msgstr ""
|
550
|
+
|
551
|
+
#. module: base_tier_validation
|
552
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_reminder_delay
|
553
|
+
msgid "Send reminder message on pending reviews"
|
554
|
+
msgstr ""
|
555
|
+
|
519
556
|
#. module: base_tier_validation
|
520
557
|
#. openerp-web
|
521
558
|
#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0
|
@@ -627,6 +664,12 @@ msgstr "多层级审批(抽象)"
|
|
627
664
|
msgid "Tier Validation Rejected Notification"
|
628
665
|
msgstr "多层级审批(抽象)"
|
629
666
|
|
667
|
+
#. module: base_tier_validation
|
668
|
+
#: model:mail.activity.type,name:base_tier_validation.mail_act_tier_validation_reminder
|
669
|
+
#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_reminder
|
670
|
+
msgid "Tier Validation Reminder"
|
671
|
+
msgstr ""
|
672
|
+
|
630
673
|
#. module: base_tier_validation
|
631
674
|
#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested
|
632
675
|
msgid "Tier Validation Requested"
|
@@ -681,6 +724,7 @@ msgstr "驳回"
|
|
681
724
|
|
682
725
|
#. module: base_tier_validation
|
683
726
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated
|
727
|
+
#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated
|
684
728
|
msgid "Validated"
|
685
729
|
msgstr "已批准"
|
686
730
|
|
@@ -703,11 +747,21 @@ msgstr "审批人"
|
|
703
747
|
msgid "Validation Date"
|
704
748
|
msgstr "审批日期"
|
705
749
|
|
750
|
+
#. module: base_tier_validation
|
751
|
+
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status
|
752
|
+
msgid "Validation Status"
|
753
|
+
msgstr ""
|
754
|
+
|
706
755
|
#. module: base_tier_validation
|
707
756
|
#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids
|
708
757
|
msgid "Validations"
|
709
758
|
msgstr "审批"
|
710
759
|
|
760
|
+
#. module: base_tier_validation
|
761
|
+
#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no
|
762
|
+
msgid "Without validation"
|
763
|
+
msgstr ""
|
764
|
+
|
711
765
|
#. module: base_tier_validation
|
712
766
|
#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form
|
713
767
|
msgid "e.g. Tier Validation for..."
|
@@ -68,6 +68,11 @@ class TierDefinition(models.Model):
|
|
68
68
|
"this definition is triggered.",
|
69
69
|
)
|
70
70
|
has_comment = fields.Boolean(string="Comment", default=False)
|
71
|
+
notify_reminder_delay = fields.Integer(
|
72
|
+
string="Send reminder message on pending reviews",
|
73
|
+
help="Number of days after which a message must be posted to remind about "
|
74
|
+
"pending validation (0 = no reminder)",
|
75
|
+
)
|
71
76
|
approve_sequence = fields.Boolean(
|
72
77
|
string="Approve by sequence",
|
73
78
|
default=False,
|
@@ -88,3 +93,33 @@ class TierDefinition(models.Model):
|
|
88
93
|
rec.valid_reviewer_field_ids = self.env["ir.model.fields"].search(
|
89
94
|
[("model", "=", rec.model), ("relation", "=", "res.users")]
|
90
95
|
)
|
96
|
+
|
97
|
+
def _get_review_needing_reminder(self):
|
98
|
+
"""Return all the reviews that have the reminder setup."""
|
99
|
+
self.ensure_one()
|
100
|
+
if not self.notify_reminder_delay:
|
101
|
+
return self.env["tier.review"]
|
102
|
+
review_date = fields.Datetime.subtract(
|
103
|
+
fields.Datetime.now(), days=self.notify_reminder_delay
|
104
|
+
)
|
105
|
+
return self.env["tier.review"].search(
|
106
|
+
[
|
107
|
+
("definition_id", "=", self.id),
|
108
|
+
("status", "=", "pending"),
|
109
|
+
"|",
|
110
|
+
"&",
|
111
|
+
("create_date", "<", review_date),
|
112
|
+
("last_reminder_date", "=", False),
|
113
|
+
("last_reminder_date", "<", review_date),
|
114
|
+
],
|
115
|
+
limit=1,
|
116
|
+
)
|
117
|
+
|
118
|
+
def _cron_send_review_reminder(self):
|
119
|
+
definition_with_reminder = self.env["tier.definition"].search(
|
120
|
+
[("notify_reminder_delay", ">", 0)]
|
121
|
+
)
|
122
|
+
for record in definition_with_reminder:
|
123
|
+
review_to_remind = record._get_review_needing_reminder()
|
124
|
+
if review_to_remind:
|
125
|
+
review_to_remind._send_review_reminder()
|
@@ -1,9 +1,13 @@
|
|
1
1
|
# Copyright 2017-19 ForgeFlow S.L. (https://www.forgeflow.com)
|
2
2
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
3
3
|
|
4
|
+
import logging
|
5
|
+
|
4
6
|
from odoo import _, api, fields, models
|
5
7
|
from odoo.exceptions import ValidationError
|
6
8
|
|
9
|
+
_logger = logging.getLogger(__name__)
|
10
|
+
|
7
11
|
|
8
12
|
class TierReview(models.Model):
|
9
13
|
_name = "tier.review"
|
@@ -58,6 +62,7 @@ class TierReview(models.Model):
|
|
58
62
|
approve_sequence_bypass = fields.Boolean(
|
59
63
|
related="definition_id.approve_sequence_bypass", readonly=True
|
60
64
|
)
|
65
|
+
last_reminder_date = fields.Datetime(readonly=True)
|
61
66
|
|
62
67
|
@api.depends("definition_id.approve_sequence")
|
63
68
|
def _compute_can_review(self):
|
@@ -110,3 +115,38 @@ class TierReview(models.Model):
|
|
110
115
|
if not reviewer_field or not reviewer_field._name == "res.users":
|
111
116
|
raise ValidationError(_("There are no res.users in the selected field"))
|
112
117
|
return reviewer_field
|
118
|
+
|
119
|
+
def _get_reminder_notification_subtype(self):
|
120
|
+
return "base_tier_validation.mt_tier_validation_reminder"
|
121
|
+
|
122
|
+
def _get_reminder_activity_type(self):
|
123
|
+
return "base_tier_validation.mail_act_tier_validation_reminder"
|
124
|
+
|
125
|
+
def _notify_review_reminder_body(self):
|
126
|
+
delay = (fields.Datetime.now() - self.create_date).days
|
127
|
+
return _("A review has been requested %s days ago.") % (delay)
|
128
|
+
|
129
|
+
def _send_review_reminder(self):
|
130
|
+
record = self.env[self.model].browse(self.res_id)
|
131
|
+
# Only schedule activity if reviewer is a single user and model has activities
|
132
|
+
if len(self.reviewer_ids) == 1 and hasattr(record, "activity_ids"):
|
133
|
+
self._schedule_review_reminder_activity(record)
|
134
|
+
elif hasattr(record, "message_post"):
|
135
|
+
self._notify_review_reminder(record)
|
136
|
+
else:
|
137
|
+
msg = "Could not send reminder for record %s" % record
|
138
|
+
_logger.exception(msg)
|
139
|
+
self.last_reminder_date = fields.Datetime.now()
|
140
|
+
|
141
|
+
def _notify_review_reminder(self, record):
|
142
|
+
record.message_post(
|
143
|
+
subtype_xmlid=self._get_reminder_notification_subtype(),
|
144
|
+
body=self._notify_review_reminder_body(),
|
145
|
+
)
|
146
|
+
|
147
|
+
def _schedule_review_reminder_activity(self, record):
|
148
|
+
record.activity_schedule(
|
149
|
+
act_type_xmlid=self._get_reminder_activity_type(),
|
150
|
+
note=self._notify_review_reminder_body(),
|
151
|
+
act_values={"user_id": self.reviewer_ids.id},
|
152
|
+
)
|
@@ -8,10 +8,11 @@
|
|
8
8
|
|
9
9
|
/*
|
10
10
|
:Author: David Goodger (goodger@python.org)
|
11
|
-
:Id: $Id: html4css1.css
|
11
|
+
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
|
12
12
|
:Copyright: This stylesheet has been placed in the public domain.
|
13
13
|
|
14
14
|
Default cascading style sheet for the HTML output of Docutils.
|
15
|
+
Despite the name, some widely supported CSS2 features are used.
|
15
16
|
|
16
17
|
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
|
17
18
|
customize this style sheet.
|
@@ -274,7 +275,7 @@ pre.literal-block, pre.doctest-block, pre.math, pre.code {
|
|
274
275
|
margin-left: 2em ;
|
275
276
|
margin-right: 2em }
|
276
277
|
|
277
|
-
pre.code .ln { color:
|
278
|
+
pre.code .ln { color: gray; } /* line numbers */
|
278
279
|
pre.code, code { background-color: #eeeeee }
|
279
280
|
pre.code .comment, code .comment { color: #5C6576 }
|
280
281
|
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
|
@@ -300,7 +301,7 @@ span.option {
|
|
300
301
|
span.pre {
|
301
302
|
white-space: pre }
|
302
303
|
|
303
|
-
span.problematic {
|
304
|
+
span.problematic, pre.problematic {
|
304
305
|
color: red }
|
305
306
|
|
306
307
|
span.section-subtitle {
|
@@ -366,7 +367,7 @@ ul.auto-toc {
|
|
366
367
|
!! This file is generated by oca-gen-addon-readme !!
|
367
368
|
!! changes will be overwritten. !!
|
368
369
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
369
|
-
!! source digest: sha256:
|
370
|
+
!! source digest: sha256:6630e37cda41b78f1f3dfb44fb574c46992a747d7afb4c55e3ca7691027d177d
|
370
371
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
371
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&target_branch=15.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
|
372
373
|
<p>Validating some operations is a common need across different areas in a company
|
@@ -567,7 +568,9 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
|
|
567
568
|
<div class="section" id="maintainers">
|
568
569
|
<h2><a class="toc-backref" href="#toc-entry-22">Maintainers</a></h2>
|
569
570
|
<p>This module is maintained by the OCA.</p>
|
570
|
-
<a class="reference external image-reference" href="https://odoo-community.org"
|
571
|
+
<a class="reference external image-reference" href="https://odoo-community.org">
|
572
|
+
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
|
573
|
+
</a>
|
571
574
|
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
|
572
575
|
mission is to support the collaborative development of Odoo features and
|
573
576
|
promote its widespread use.</p>
|
@@ -75,7 +75,7 @@ class CommonTierValidation(common.TransactionCase):
|
|
75
75
|
|
76
76
|
# Create tier definitions:
|
77
77
|
cls.tier_def_obj = cls.env["tier.definition"]
|
78
|
-
cls.tier_def_obj.create(
|
78
|
+
cls.tier_definition = cls.tier_def_obj.create(
|
79
79
|
{
|
80
80
|
"model_id": cls.tester_model.id,
|
81
81
|
"review_type": "individual",
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# Copyright 2018-19 ForgeFlow S.L. (https://www.forgeflow.com)
|
2
|
+
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).
|
3
|
+
|
4
|
+
from freezegun import freeze_time
|
5
|
+
|
6
|
+
from odoo import fields
|
7
|
+
from odoo.tests.common import tagged
|
8
|
+
|
9
|
+
from .common import CommonTierValidation
|
10
|
+
|
11
|
+
|
12
|
+
@tagged("post_install", "-at_install")
|
13
|
+
class TierTierValidation(CommonTierValidation):
|
14
|
+
def test_validation_reminder(self):
|
15
|
+
"""Check the posting of reminder to reviews."""
|
16
|
+
tier_definition = self.tier_definition
|
17
|
+
tier_definition.notify_reminder_delay = 3
|
18
|
+
|
19
|
+
# Request a review today
|
20
|
+
self.test_record.with_user(self.test_user_2.id).request_validation()
|
21
|
+
review = self.env["tier.review"].search(
|
22
|
+
[("definition_id", "=", tier_definition.id)]
|
23
|
+
)
|
24
|
+
self.assertTrue(review)
|
25
|
+
self.assertEqual(review.last_reminder_date, False)
|
26
|
+
|
27
|
+
# 2 days later no reminder should be posted
|
28
|
+
in_2_days = fields.Datetime.add(fields.Datetime.now(), days=2)
|
29
|
+
with freeze_time(in_2_days):
|
30
|
+
tier_definition._cron_send_review_reminder()
|
31
|
+
self.assertEqual(review.last_reminder_date, False)
|
32
|
+
# 4 days later first reminder
|
33
|
+
in_4_days = fields.Datetime.add(fields.Datetime.now(), days=4)
|
34
|
+
with freeze_time(in_4_days):
|
35
|
+
self.tier_definition._cron_send_review_reminder()
|
36
|
+
self.assertEqual(review.last_reminder_date, in_4_days)
|
37
|
+
# 5 days later no new reminder
|
38
|
+
in_6_days = fields.Datetime.add(fields.Datetime.now(), days=6)
|
39
|
+
with freeze_time(in_6_days):
|
40
|
+
self.tier_definition._cron_send_review_reminder()
|
41
|
+
self.assertEqual(review.last_reminder_date, in_4_days)
|
42
|
+
# 9 days later second reminder
|
43
|
+
in_9_days = fields.Datetime.add(fields.Datetime.now(), days=9)
|
44
|
+
with freeze_time(in_9_days):
|
45
|
+
self.tier_definition._cron_send_review_reminder()
|
46
|
+
self.assertEqual(review.last_reminder_date, in_9_days)
|
@@ -1,12 +1,11 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
|
-
Name: odoo-addon-
|
3
|
-
Version: 15.0.1.
|
2
|
+
Name: odoo-addon-base_tier_validation
|
3
|
+
Version: 15.0.1.5.0.1
|
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)
|
7
7
|
Author-email: support@odoo-community.org
|
8
8
|
License: AGPL-3
|
9
|
-
Platform: UNKNOWN
|
10
9
|
Classifier: Programming Language :: Python
|
11
10
|
Classifier: Framework :: Odoo
|
12
11
|
Classifier: Framework :: Odoo :: 15.0
|
@@ -24,7 +23,7 @@ Base Tier Validation
|
|
24
23
|
!! This file is generated by oca-gen-addon-readme !!
|
25
24
|
!! changes will be overwritten. !!
|
26
25
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
27
|
-
!! source digest: sha256:
|
26
|
+
!! source digest: sha256:6630e37cda41b78f1f3dfb44fb574c46992a747d7afb4c55e3ca7691027d177d
|
28
27
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
29
28
|
|
30
29
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
|
@@ -251,5 +250,3 @@ Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|
|
251
250
|
This module is part of the `OCA/server-ux <https://github.com/OCA/server-ux/tree/15.0/base_tier_validation>`_ project on GitHub.
|
252
251
|
|
253
252
|
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
254
|
-
|
255
|
-
|