From a83d08906190b50ab49209a59537a632d6c4a099 Mon Sep 17 00:00:00 2001 From: Rinaldi Firdaus Date: Tue, 12 Dec 2023 03:05:21 +0000 Subject: [PATCH 1/3] [3983][ADD] purchase_tier_validation, base_tier_validation --- base_tier_validation/README.rst | 236 ++++++ base_tier_validation/__init__.py | 4 + base_tier_validation/__manifest__.py | 43 + base_tier_validation/data/mail_data.xml | 43 + .../i18n/base_tier_validation.pot | 710 ++++++++++++++++ base_tier_validation/i18n/es.po | 737 +++++++++++++++++ base_tier_validation/i18n/es_MX.po | 740 +++++++++++++++++ base_tier_validation/i18n/fr.po | 748 +++++++++++++++++ base_tier_validation/i18n/it.po | 739 +++++++++++++++++ base_tier_validation/i18n/nl_NL.po | 740 +++++++++++++++++ base_tier_validation/i18n/sv.po | 758 ++++++++++++++++++ base_tier_validation/i18n/tr.po | 732 +++++++++++++++++ base_tier_validation/i18n/zh_CN.po | 744 +++++++++++++++++ base_tier_validation/models/__init__.py | 7 + .../models/res_config_settings.py | 14 + base_tier_validation/models/res_users.py | 64 ++ .../models/tier_definition.py | 90 +++ base_tier_validation/models/tier_review.py | 128 +++ .../models/tier_validation.py | 594 ++++++++++++++ base_tier_validation/readme/CONFIGURE.rst | 11 + base_tier_validation/readme/CONTRIBUTORS.rst | 7 + base_tier_validation/readme/DESCRIPTION.rst | 13 + base_tier_validation/readme/HISTORY.rst | 91 +++ base_tier_validation/readme/ROADMAP.rst | 20 + .../security/ir.model.access.csv | 5 + .../security/tier_validation_security.xml | 19 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 583 ++++++++++++++ .../static/src/js/ir_model.esm.js | 29 + .../static/src/js/main.esm.js | 7 + .../static/src/js/review_group_view.esm.js | 51 ++ .../static/src/js/review_groups.esm.js | 52 ++ .../src/js/review_notification_handler.esm.js | 26 + .../src/js/reviewer_menu_container.esm.js | 25 + .../static/src/js/reviewer_menu_view.esm.js | 29 + .../static/src/js/systray.esm.js | 104 +++ .../static/src/js/systray_service.esm.js | 17 + .../static/src/js/tier_review_widget.esm.js | 36 + .../static/src/scss/review.scss | 41 + .../static/src/scss/systray.scss | 143 ++++ .../src/xml/reviewer_menu_container.xml | 8 + .../static/src/xml/systray.xml | 97 +++ .../static/src/xml/tier_review_template.xml | 119 +++ .../templates/tier_validation_templates.xml | 105 +++ base_tier_validation/tests/__init__.py | 4 + base_tier_validation/tests/common.py | 92 +++ .../tests/test_tier_validation.py | 535 ++++++++++++ .../tests/tier_validation_tester.py | 57 ++ .../views/res_config_settings_views.xml | 83 ++ .../views/tier_definition_view.xml | 154 ++++ .../views/tier_review_view.xml | 25 + base_tier_validation/wizard/__init__.py | 3 + base_tier_validation/wizard/comment_wizard.py | 25 + .../wizard/comment_wizard_view.xml | 26 + purchase_tier_validation/README.rst | 112 +++ purchase_tier_validation/__init__.py | 3 + purchase_tier_validation/__manifest__.py | 16 + purchase_tier_validation/i18n/es.po | 132 +++ .../i18n/purchase_tier_validation.pot | 100 +++ purchase_tier_validation/i18n/zh_CN.po | 126 +++ purchase_tier_validation/models/__init__.py | 4 + .../models/purchase_order.py | 13 + .../models/tier_definition.py | 14 + purchase_tier_validation/readme/CONFIGURE.rst | 4 + .../readme/CONTRIBUTORS.rst | 4 + .../readme/DESCRIPTION.rst | 2 + purchase_tier_validation/readme/INSTALL.rst | 2 + purchase_tier_validation/readme/USAGE.rst | 14 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 459 +++++++++++ purchase_tier_validation/tests/__init__.py | 3 + .../tests/test_tier_validation.py | 69 ++ .../tests/tier_validation_tester.py | 24 + .../views/purchase_order_view.xml | 44 + .../odoo/addons/base_tier_validation | 1 + setup/base_tier_validation/setup.py | 6 + .../odoo/addons/purchase_tier_validation | 1 + setup/purchase_tier_validation/setup.py | 6 + 78 files changed, 11672 insertions(+) create mode 100644 base_tier_validation/README.rst create mode 100644 base_tier_validation/__init__.py create mode 100644 base_tier_validation/__manifest__.py create mode 100644 base_tier_validation/data/mail_data.xml create mode 100644 base_tier_validation/i18n/base_tier_validation.pot create mode 100644 base_tier_validation/i18n/es.po create mode 100644 base_tier_validation/i18n/es_MX.po create mode 100644 base_tier_validation/i18n/fr.po create mode 100644 base_tier_validation/i18n/it.po create mode 100644 base_tier_validation/i18n/nl_NL.po create mode 100644 base_tier_validation/i18n/sv.po create mode 100644 base_tier_validation/i18n/tr.po create mode 100644 base_tier_validation/i18n/zh_CN.po create mode 100644 base_tier_validation/models/__init__.py create mode 100644 base_tier_validation/models/res_config_settings.py create mode 100644 base_tier_validation/models/res_users.py create mode 100644 base_tier_validation/models/tier_definition.py create mode 100644 base_tier_validation/models/tier_review.py create mode 100644 base_tier_validation/models/tier_validation.py create mode 100644 base_tier_validation/readme/CONFIGURE.rst create mode 100644 base_tier_validation/readme/CONTRIBUTORS.rst create mode 100644 base_tier_validation/readme/DESCRIPTION.rst create mode 100644 base_tier_validation/readme/HISTORY.rst create mode 100644 base_tier_validation/readme/ROADMAP.rst create mode 100644 base_tier_validation/security/ir.model.access.csv create mode 100644 base_tier_validation/security/tier_validation_security.xml create mode 100644 base_tier_validation/static/description/icon.png create mode 100644 base_tier_validation/static/description/index.html create mode 100644 base_tier_validation/static/src/js/ir_model.esm.js create mode 100644 base_tier_validation/static/src/js/main.esm.js create mode 100644 base_tier_validation/static/src/js/review_group_view.esm.js create mode 100644 base_tier_validation/static/src/js/review_groups.esm.js create mode 100644 base_tier_validation/static/src/js/review_notification_handler.esm.js create mode 100644 base_tier_validation/static/src/js/reviewer_menu_container.esm.js create mode 100644 base_tier_validation/static/src/js/reviewer_menu_view.esm.js create mode 100644 base_tier_validation/static/src/js/systray.esm.js create mode 100644 base_tier_validation/static/src/js/systray_service.esm.js create mode 100644 base_tier_validation/static/src/js/tier_review_widget.esm.js create mode 100644 base_tier_validation/static/src/scss/review.scss create mode 100644 base_tier_validation/static/src/scss/systray.scss create mode 100644 base_tier_validation/static/src/xml/reviewer_menu_container.xml create mode 100644 base_tier_validation/static/src/xml/systray.xml create mode 100644 base_tier_validation/static/src/xml/tier_review_template.xml create mode 100644 base_tier_validation/templates/tier_validation_templates.xml create mode 100644 base_tier_validation/tests/__init__.py create mode 100644 base_tier_validation/tests/common.py create mode 100644 base_tier_validation/tests/test_tier_validation.py create mode 100644 base_tier_validation/tests/tier_validation_tester.py create mode 100644 base_tier_validation/views/res_config_settings_views.xml create mode 100644 base_tier_validation/views/tier_definition_view.xml create mode 100644 base_tier_validation/views/tier_review_view.xml create mode 100644 base_tier_validation/wizard/__init__.py create mode 100644 base_tier_validation/wizard/comment_wizard.py create mode 100644 base_tier_validation/wizard/comment_wizard_view.xml create mode 100644 purchase_tier_validation/README.rst create mode 100644 purchase_tier_validation/__init__.py create mode 100644 purchase_tier_validation/__manifest__.py create mode 100644 purchase_tier_validation/i18n/es.po create mode 100644 purchase_tier_validation/i18n/purchase_tier_validation.pot create mode 100644 purchase_tier_validation/i18n/zh_CN.po create mode 100644 purchase_tier_validation/models/__init__.py create mode 100644 purchase_tier_validation/models/purchase_order.py create mode 100644 purchase_tier_validation/models/tier_definition.py create mode 100644 purchase_tier_validation/readme/CONFIGURE.rst create mode 100644 purchase_tier_validation/readme/CONTRIBUTORS.rst create mode 100644 purchase_tier_validation/readme/DESCRIPTION.rst create mode 100644 purchase_tier_validation/readme/INSTALL.rst create mode 100644 purchase_tier_validation/readme/USAGE.rst create mode 100644 purchase_tier_validation/static/description/icon.png create mode 100644 purchase_tier_validation/static/description/index.html create mode 100644 purchase_tier_validation/tests/__init__.py create mode 100644 purchase_tier_validation/tests/test_tier_validation.py create mode 100644 purchase_tier_validation/tests/tier_validation_tester.py create mode 100644 purchase_tier_validation/views/purchase_order_view.xml create mode 120000 setup/base_tier_validation/odoo/addons/base_tier_validation create mode 100644 setup/base_tier_validation/setup.py create mode 120000 setup/purchase_tier_validation/odoo/addons/purchase_tier_validation create mode 100644 setup/purchase_tier_validation/setup.py diff --git a/base_tier_validation/README.rst b/base_tier_validation/README.rst new file mode 100644 index 00000000..93ee8097 --- /dev/null +++ b/base_tier_validation/README.rst @@ -0,0 +1,236 @@ +==================== +Base Tier Validation +==================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:9830ee56255d7af0c50c3f2ebbd6d11100fb137ab16413f00d5b5c2206d88967 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png + :target: https://odoo-community.org/page/development-status + :alt: Mature +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--ux-lightgray.png?logo=github + :target: https://github.com/OCA/server-ux/tree/16.0/base_tier_validation + :alt: OCA/server-ux +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/server-ux-16-0/server-ux-16-0-base_tier_validation + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/server-ux&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Validating some operations is a common need across different areas in a company +and sometimes it also involves several people and stages in the process. With +this module you will be able to define your custom validation workflows for +any Odoo document. + +This module does not provide a functionality by itself but an abstract model +to implement a validation process based on tiers on other models (e.g. +purchase orders, sales orders, budgets, expenses...). + +**Note:** To be able to use this module in a new model you will need some +development. + +See `purchase_tier_validation `_ as an example of implementation. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +To configure this module, you need to: + +#. Go to *Settings > Technical > Tier Validations > Tier Definition*. +#. Create as many tiers as you want for any model having tier validation + functionality. + +**Note:** + +* If check *Notify Reviewers on Creation*, all possible reviewers will be notified by email when this definition is triggered. +* If check *Comment*, reviewers can comment after click Validate or Reject. +* If check *Approve by sequence*, reviewers is forced to review by specified sequence. + +Known issues / Roadmap +====================== + +This is the list of known issues for this module. Any proposal for improvement will +be very valuable. + +* **Issue:** + + When using `approve_sequence` option in any tier.definition there can be inconsistencies + in the systray notifications. + + **Description:** + + Field `can_review` in tier.review is used to filter out, in the systray notifications, + the reviews a user can approve. This `can_review` field is updated **in the database** + in method `review_user_count`, this can make it very inconsistent for databases + with a lot of users and recurring updates that can change the expected behavior. + +* **Migration to 15.0:** + + The parameter _tier_validation_manual_config will become False, on 14.0, the default + value is True, as the change is applied after the migration. In order to use the new + behavior we need to modify the value on our expected model. + +Changelog +========= + +14.0.1.0.0 (2020-11-19) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migrated to Odoo 14. + +13.0.1.2.2 (2020-08-30) +~~~~~~~~~~~~~~~~~~~~~~~ + +Fixes: + +- When using approve_sequence option in any tier.definition there can be inconsistencies in the systray notifications +- When using approve_sequence, still not approve only the needed sequence, but also other sequence for the same approver + +12.0.3.3.1 (2019-12-02) +~~~~~~~~~~~~~~~~~~~~~~~ + +Fixes: + +- Show comment on Reviews Table. +- Edit notification with approve_sequence. + +12.0.3.3.0 (2019-11-27) +~~~~~~~~~~~~~~~~~~~~~~~ + +New features: + +- Add comment on Reviews Table. +- Approve by sequence. + +12.0.3.2.1 (2019-11-26) +~~~~~~~~~~~~~~~~~~~~~~~ + +Fixes: + +- Remove message_subscribe_users + +12.0.3.2.0 (2019-11-25) +~~~~~~~~~~~~~~~~~~~~~~~ + +New features: + +- Notify reviewers + +12.0.3.1.0 (2019-07-08) +~~~~~~~~~~~~~~~~~~~~~~~ + +Fixes: + +- Singleton error + +12.0.3.0.0 (2019-12-02) +~~~~~~~~~~~~~~~~~~~~~~~ + +Fixes: + +- Edit Reviews Table + +12.0.2.1.0 (2019-05-29) +~~~~~~~~~~~~~~~~~~~~~~~ + +Fixes: + +- Edit drop-down style width and position + +12.0.2.0.0 (2019-05-28) +~~~~~~~~~~~~~~~~~~~~~~~ + +New features: + +- Pass parameters as functions. +- Add Systray. + +12.0.1.0.0 (2019-02-18) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migrated to Odoo 12. + +11.0.1.0.0 (2018-05-09) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migrated to Odoo 11. + +10.0.1.0.0 (2018-03-26) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migrated to Odoo 10. + +9.0.1.0.0 (2017-12-02) +~~~~~~~~~~~~~~~~~~~~~~~ + +First version. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* ForgeFlow + +Contributors +~~~~~~~~~~~~ + +* Lois Rilo +* Naglis Jonaitis +* Adrià Gil Sorribes +* Pimolnat Suntian +* Pedro Gonzalez +* Kitti U. +* Saran Lim. + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-LoisRForgeFlow| image:: https://github.com/LoisRForgeFlow.png?size=40px + :target: https://github.com/LoisRForgeFlow + :alt: LoisRForgeFlow + +Current `maintainer `__: + +|maintainer-LoisRForgeFlow| + +This module is part of the `OCA/server-ux `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/base_tier_validation/__init__.py b/base_tier_validation/__init__.py new file mode 100644 index 00000000..93aa2c1f --- /dev/null +++ b/base_tier_validation/__init__.py @@ -0,0 +1,4 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import models +from . import wizard diff --git a/base_tier_validation/__manifest__.py b/base_tier_validation/__manifest__.py new file mode 100644 index 00000000..27833674 --- /dev/null +++ b/base_tier_validation/__manifest__.py @@ -0,0 +1,43 @@ +# Copyright 2017-19 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Base Tier Validation", + "summary": "Implement a validation process based on tiers.", + "version": "16.0.1.3.4", + "development_status": "Mature", + "maintainers": ["LoisRForgeFlow"], + "category": "Tools", + "website": "https://github.com/OCA/server-ux", + "author": "ForgeFlow, Odoo Community Association (OCA)", + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": ["mail"], + "data": [ + "data/mail_data.xml", + "security/ir.model.access.csv", + "security/tier_validation_security.xml", + "views/res_config_settings_views.xml", + "views/tier_definition_view.xml", + "views/tier_review_view.xml", + "wizard/comment_wizard_view.xml", + "templates/tier_validation_templates.xml", + ], + "assets": { + "web.assets_backend": [ + "/base_tier_validation/static/src/scss/systray.scss", + "/base_tier_validation/static/src/scss/review.scss", + "/base_tier_validation/static/src/js/main.esm.js", + "/base_tier_validation/static/src/js/ir_model.esm.js", + "/base_tier_validation/static/src/js/systray_service.esm.js", + "/base_tier_validation/static/src/js/systray.esm.js", + "/base_tier_validation/static/src/js/review_groups.esm.js", + "/base_tier_validation/static/src/js/reviewer_menu_view.esm.js", + "/base_tier_validation/static/src/js/tier_review_widget.esm.js", + "/base_tier_validation/static/src/js/review_group_view.esm.js", + "/base_tier_validation/static/src/js/reviewer_menu_container.esm.js", + "/base_tier_validation/static/src/js/review_notification_handler.esm.js", + "/base_tier_validation/static/src/xml/**/*", + ], + }, +} diff --git a/base_tier_validation/data/mail_data.xml b/base_tier_validation/data/mail_data.xml new file mode 100644 index 00000000..8207bc4c --- /dev/null +++ b/base_tier_validation/data/mail_data.xml @@ -0,0 +1,43 @@ + + + + Tier Validation Requested + + + + + + Tier Validation Accepted Notification + + + + + + Tier Validation Rejected Notification + + + + + + Tier Validation Restarted + + + + + diff --git a/base_tier_validation/i18n/base_tier_validation.pot b/base_tier_validation/i18n/base_tier_validation.pot new file mode 100644 index 00000000..a2b2c8ff --- /dev/null +++ b/base_tier_validation/i18n/base_tier_validation.pot @@ -0,0 +1,710 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_tier_validation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "0 Pending" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" This Record needs to be\n" +" validated." +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" Operation has been\n" +" rejected\n" +" ." +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" Operation has been\n" +" validated\n" +" !" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Name" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Bypassed, if previous tier was validated by same reviewer" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review has been requested by %s." +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was accepted" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was accepted. (%s)" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was rejected by %(user)s. (%(comment)s)" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was rejected by %s." +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A validation process is still open for at least one record." +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__active +msgid "Active" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "Activity" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "All" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__group +msgid "Any user in a specific group" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Apply On" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence +msgid "Approval order by the specified sequence number" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence_bypass +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence_bypass +msgid "Approve Sequence Bypass" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence +msgid "Approve by sequence" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__approved +msgid "Approved" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass +msgid "" +"Bypassed (auto validated), if previous tier was validated by same reviewer" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__can_review +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__can_review +msgid "Can Review" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__can_review +msgid "" +"Can review will be marked if the review is pending and the\n" +" approve sequence has been achieved" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard +msgid "Cancel" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#. odoo-javascript +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__comment +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__has_comment +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__has_comment +#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard +#, python-format +msgid "Comment" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_comment_wizard +msgid "Comment Wizard" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__comment +msgid "Comments" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__company_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__company_id +msgid "Company" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_uid +msgid "Created by" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_date +msgid "Created on" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_type +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__definition_id +msgid "Definition" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_domain +msgid "Definition Domain" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__name +#, python-format +msgid "Description" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__display_name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__display_name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__display_name +msgid "Display Name" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__definition_type__domain +msgid "Domain" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__done_by +msgid "Done By" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Done by" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__field +msgid "Field in related record" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_review.py:0 +#, python-format +msgid "Group %s" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "Group By" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__has_comment +msgid "Has Comment" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__id +msgid "ID" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_create +msgid "" +"If set, all possible reviewers will be notified by email when this " +"definition is triggered." +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard____last_update +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition____last_update +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review____last_update +msgid "Last Modified on" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_date +msgid "Last Updated on" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "Model" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "More Options" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__need_validation +msgid "Need Validation" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_definition.py:0 +#, python-format +msgid "New Tier Validation" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__next_review +msgid "Next Review" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Next: %s" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "No reviews to do." +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create +msgid "Notify Reviewers on Creation" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Operation has been rejected." +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Operation has been validated!" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Option to forward a tier validation to other reviewer, and backward" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Option to use python formula to get reviewers and find documents" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending +#, python-format +msgid "Pending" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id +msgid "Referenced Model" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "Reject" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected +msgid "Rejected" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected_message +msgid "Rejected Message" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__res_id +msgid "Related Document ID" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__model +msgid "Related Document Model" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons +msgid "Request Validation" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__requested_by +msgid "Requested By" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Requested by" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_id +msgid "Res" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_model +msgid "Res Model" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons +msgid "Restart Validation" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__review_ids +msgid "Review" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_id +msgid "Reviewer" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_field_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_field_id +msgid "Reviewer field" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_group_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_group_id +msgid "Reviewer group" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_ids +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__reviewer_ids +msgid "Reviewers" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_res_users__review_ids +#, python-format +msgid "Reviews" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__sequence +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__sequence +#, python-format +msgid "Sequence" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__individual +msgid "Specific user" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__status +#, python-format +msgid "Status" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "The operation is under validation." +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "The review has been reset by %s." +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_review.py:0 +#, python-format +msgid "There are no res.users in the selected field" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "This %s needs to be validated" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "" +"This action needs to be validated for at least one record. \n" +"Please request a validation." +msgstr "" + +#. module: base_tier_validation +#: model:ir.actions.act_window,name:base_tier_validation.tier_definition_action +#: model:ir.model,name:base_tier_validation.model_tier_definition +#: model:ir.ui.menu,name:base_tier_validation.menu_tier_definition +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Tier Definition" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_formula +msgid "Tier Formula" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_forward +msgid "Tier Forward & Backward" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_tier_review +msgid "Tier Review" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Tier Validation" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_tier_validation +msgid "Tier Validation (abstract)" +msgstr "" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_accepted +msgid "Tier Validation Accepted Notification" +msgstr "" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_rejected +msgid "Tier Validation Rejected Notification" +msgstr "" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested +msgid "Tier Validation Requested" +msgstr "" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_restarted +msgid "Tier Validation Restarted" +msgstr "" + +#. module: base_tier_validation +#: model:ir.ui.menu,name:base_tier_validation.menu_tier_confirmation +msgid "Tier Validations" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__to_validate_message +msgid "To Validate Message" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__todo_by +msgid "Todo By" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Todo by" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_res_users +msgid "User" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__valid_reviewer_field_ids +msgid "Valid Reviewer Field" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "Validate" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__validate_reject +msgid "Validate Reject" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated +msgid "Validated" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated_message +msgid "Validated Message" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__review_type +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__review_type +msgid "Validated by" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_date +#, python-format +msgid "Validation Date" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_formated_date +msgid "Validation Formated Date" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status +msgid "Validation Status" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids +msgid "Validations" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no +msgid "Without validation" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "e.g. Tier Validation for..." +msgstr "" diff --git a/base_tier_validation/i18n/es.po b/base_tier_validation/i18n/es.po new file mode 100644 index 00000000..bd8deffc --- /dev/null +++ b/base_tier_validation/i18n/es.po @@ -0,0 +1,737 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_tier_validation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-11-18 17:35+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "0 Pending" +msgstr "0 Pendientes" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" This Record needs to be\n" +" validated." +msgstr "" +"\n" +" Este registro debe ser\n" +" validado." + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" Operation has been\n" +" rejected\n" +" ." +msgstr "" +"\n" +" La operación ha sido\n" +" rechazada\n" +" ." + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" Operation has been\n" +" validated\n" +" !" +msgstr "" +"\n" +" La operación ha sido\n" +" validada\n" +" !" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Name" +msgstr "Nombre" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Bypassed, if previous tier was validated by same reviewer" +msgstr "" +"Omitido, si el nivel anterior fue validado por el mismo revisor" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review has been requested by %s." +msgstr "Una revisión fue solicitada por %s." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was accepted" +msgstr "Una revisión fue aceptada" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was accepted. (%s)" +msgstr "Una revisión fue aceptada. (%s)" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was rejected by %(user)s. (%(comment)s)" +msgstr "%(user)s rechazó una reseña. %(comment)s" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was rejected by %s." +msgstr "Una revisión fue rechaza por %s." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A validation process is still open for at least one record." +msgstr "Un proceso de validación está aún abierto para al menos un registro." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__active +msgid "Active" +msgstr "Activo" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "Activity" +msgstr "Actividades" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "All" +msgstr "Todos" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__group +msgid "Any user in a specific group" +msgstr "Cualquier usuario de un grupo específico" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Apply On" +msgstr "Aplicar en" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence +msgid "Approval order by the specified sequence number" +msgstr "Orden de aprobación por el número de secuencia especificado" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence_bypass +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence_bypass +msgid "Approve Sequence Bypass" +msgstr "Aprobar Omisión de Secuencia" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence +msgid "Approve by sequence" +msgstr "Aprobar por secuencia" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__approved +msgid "Approved" +msgstr "Aprobado" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass +msgid "" +"Bypassed (auto validated), if previous tier was validated by same reviewer" +msgstr "" +"Omitido (validado automático), si el mismo revisor validó el nivel anterior" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__can_review +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__can_review +msgid "Can Review" +msgstr "Puede revisar" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__can_review +msgid "" +"Can review will be marked if the review is pending and the\n" +" approve sequence has been achieved" +msgstr "" +"Puede revisar será establecido si la revisión está pendiente y la\n" +" secuencia de aprobación se ha alcanzado" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard +msgid "Cancel" +msgstr "Cancelar" + +#. module: base_tier_validation +#. odoo-python +#. odoo-javascript +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__comment +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__has_comment +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__has_comment +#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard +#, python-format +msgid "Comment" +msgstr "Comentar" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_comment_wizard +msgid "Comment Wizard" +msgstr "Wizard Comentario" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__comment +msgid "Comments" +msgstr "Comentarios" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__company_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__company_id +msgid "Company" +msgstr "Compañía" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_res_config_settings +msgid "Config Settings" +msgstr "Configuración de Ajustes" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_type +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__definition_id +msgid "Definition" +msgstr "Definición" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_domain +msgid "Definition Domain" +msgstr "Dominio de definición" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__name +#, python-format +msgid "Description" +msgstr "Descripción" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__display_name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__display_name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__definition_type__domain +msgid "Domain" +msgstr "Dominio" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__done_by +msgid "Done By" +msgstr "Hecho Por" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Done by" +msgstr "Hecho Por" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__field +msgid "Field in related record" +msgstr "Campo en el registro relacionado" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_review.py:0 +#, python-format +msgid "Group %s" +msgstr "Grupo %s" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "Group By" +msgstr "Agrupar por" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__has_comment +msgid "Has Comment" +msgstr "Ha comentado" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__id +msgid "ID" +msgstr "ID" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_create +msgid "" +"If set, all possible reviewers will be notified by email when this " +"definition is triggered." +msgstr "" +"Si se establece, todos los posibles revisores serán notificados por correo " +"electrónico cuando se active esta definición." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard____last_update +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition____last_update +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_uid +msgid "Last Updated by" +msgstr "Última actualización de" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "Model" +msgstr "Modelo" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "More Options" +msgstr "Más opciones" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__need_validation +msgid "Need Validation" +msgstr "Necesita validación" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_definition.py:0 +#, python-format +msgid "New Tier Validation" +msgstr "Nueva Validación de Nivel" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__next_review +msgid "Next Review" +msgstr "Siguiente Revisión" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Next: %s" +msgstr "Siguiente: %s" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "No reviews to do." +msgstr "No hay revisiones a realizar." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create +msgid "Notify Reviewers on Creation" +msgstr "Notificar a los revisores en la creación" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Operation has been rejected." +msgstr "La operación ha sido rechazada." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Operation has been validated!" +msgstr "¡La operación ha sido validada!" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Option to forward a tier validation to other reviewer, and backward" +msgstr "" +"Opción de reenviar una validación de nivel a otro revisor, y hacia atrás" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Option to use python formula to get reviewers and find documents" +msgstr "" +"Opción de utilizar una fórmula python para obtener revisores y encontrar " +"documentos" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending +#, python-format +msgid "Pending" +msgstr "Pendiente" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id +msgid "Referenced Model" +msgstr "Modelo referenciado" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "Reject" +msgstr "Rechazar" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected +msgid "Rejected" +msgstr "Rechazado" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected_message +msgid "Rejected Message" +msgstr "Mensaje rechazado" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__res_id +msgid "Related Document ID" +msgstr "ID del Documento Relacionado" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__model +msgid "Related Document Model" +msgstr "Modelo del Documento Relacionado" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons +msgid "Request Validation" +msgstr "Solicitar validación" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__requested_by +msgid "Requested By" +msgstr "Solicitado Por" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Requested by" +msgstr "Solicitado Por" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_id +msgid "Res" +msgstr "Recurso" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_model +msgid "Res Model" +msgstr "Modelo Res" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons +msgid "Restart Validation" +msgstr "Reiniciar la Validación" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__review_ids +msgid "Review" +msgstr "Revisor" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_id +msgid "Reviewer" +msgstr "Revisor" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_field_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_field_id +msgid "Reviewer field" +msgstr "Campo revisor" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_group_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_group_id +msgid "Reviewer group" +msgstr "Grupo revisor" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_ids +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__reviewer_ids +msgid "Reviewers" +msgstr "Revisores" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_res_users__review_ids +#, python-format +msgid "Reviews" +msgstr "Revisiones" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__sequence +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__sequence +#, python-format +msgid "Sequence" +msgstr "Secuencia" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__individual +msgid "Specific user" +msgstr "Usuario específico" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__status +#, python-format +msgid "Status" +msgstr "Estado" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "The operation is under validation." +msgstr "Esta operación está en proceso de validación." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "The review has been reset by %s." +msgstr "La revisión ha sido reiniciada por %s." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_review.py:0 +#, python-format +msgid "There are no res.users in the selected field" +msgstr "No hay res.usuarios en el campo seleccionado" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "This %s needs to be validated" +msgstr "Este %s necesita ser validado" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "" +"This action needs to be validated for at least one record. \n" +"Please request a validation." +msgstr "" +"Esta acción necesita ser validada para algún registro.\n" +"Por favor, solicita una validación." + +#. module: base_tier_validation +#: model:ir.actions.act_window,name:base_tier_validation.tier_definition_action +#: model:ir.model,name:base_tier_validation.model_tier_definition +#: model:ir.ui.menu,name:base_tier_validation.menu_tier_definition +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Tier Definition" +msgstr "Definición de Nivel" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_formula +msgid "Tier Formula" +msgstr "Fórmula de niveles" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_forward +msgid "Tier Forward & Backward" +msgstr "Nivel hacia delante y hacia atrás" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_tier_review +msgid "Tier Review" +msgstr "Revisión de Nivel" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Tier Validation" +msgstr "Validación por niveles" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_tier_validation +msgid "Tier Validation (abstract)" +msgstr "Validaciones de Nivel (abstracto)" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_accepted +msgid "Tier Validation Accepted Notification" +msgstr "Notificación de Validación de Nivel Aceptada" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_rejected +msgid "Tier Validation Rejected Notification" +msgstr "Validación de nivel Notificación rechazada" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested +msgid "Tier Validation Requested" +msgstr "Validación de nivel solicitada" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_restarted +msgid "Tier Validation Restarted" +msgstr "Validación de nivel reiniciada" + +#. module: base_tier_validation +#: model:ir.ui.menu,name:base_tier_validation.menu_tier_confirmation +msgid "Tier Validations" +msgstr "Validaciones de Nivel" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__to_validate_message +msgid "To Validate Message" +msgstr "Para validar el mensaje" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__todo_by +msgid "Todo By" +msgstr "Por hacer por" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Todo by" +msgstr "Para hacer por" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_res_users +msgid "User" +msgstr "usuario" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__valid_reviewer_field_ids +msgid "Valid Reviewer Field" +msgstr "Campo Revisor válido" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "Validate" +msgstr "Validar" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__validate_reject +msgid "Validate Reject" +msgstr "Validar Rechazar" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated +msgid "Validated" +msgstr "Validado" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated_message +msgid "Validated Message" +msgstr "Mensaje Validado" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__review_type +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__review_type +msgid "Validated by" +msgstr "Validado por" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_date +#, python-format +msgid "Validation Date" +msgstr "Fecha de Validación" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_formated_date +msgid "Validation Formated Date" +msgstr "Fecha de Validación Formateada" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status +msgid "Validation Status" +msgstr "Estado de validación" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids +msgid "Validations" +msgstr "Validaciones" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no +msgid "Without validation" +msgstr "Sin validación" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "e.g. Tier Validation for..." +msgstr "ej. Validación de Nivel por..." + +#~ msgid "Tier" +#~ msgstr "Nivel" diff --git a/base_tier_validation/i18n/es_MX.po b/base_tier_validation/i18n/es_MX.po new file mode 100644 index 00000000..c7132948 --- /dev/null +++ b/base_tier_validation/i18n/es_MX.po @@ -0,0 +1,740 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_tier_validation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-08-16 22:50+0000\n" +"Last-Translator: Jesús Alan Ramos Rodríguez \n" +"Language-Team: none\n" +"Language: es_MX\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3.2\n" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "0 Pending" +msgstr "0 Pendientes" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" This Record needs to be\n" +" validated." +msgstr "" +"\n" +" Este registro necesita ser\n" +" validado." + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" Operation has been\n" +" rejected\n" +" ." +msgstr "" +"\n" +" La operación ha sido\n" +" rechazada\n" +" ." + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" Operation has been\n" +" validated\n" +" !" +msgstr "" +"\n" +" ¡La operación ha sido\n" +" validada\n" +" !" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Name" +msgstr "Nombre" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Bypassed, if previous tier was validated by same reviewer" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review has been requested by %s." +msgstr "%s ha solicitado una revisión." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was accepted" +msgstr "Se aceptó una revisión" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was accepted. (%s)" +msgstr "Se aceptó una revisión. (%s)" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was rejected by %(user)s. (%(comment)s)" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was rejected by %s." +msgstr "%s rechazó una revisión." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A validation process is still open for at least one record." +msgstr "" +"Todavía hay un proceso de validación abierto para al menos un registro." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__active +msgid "Active" +msgstr "Activo" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "Activity" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "All" +msgstr "Todos" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__group +msgid "Any user in a specific group" +msgstr "Cualquier usuario de un grupo específico" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Apply On" +msgstr "Aplicar en" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence +msgid "Approval order by the specified sequence number" +msgstr "Orden de aprobación por el número de secuencia especificado" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence_bypass +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence_bypass +msgid "Approve Sequence Bypass" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence +msgid "Approve by sequence" +msgstr "Aprobar por secuencia" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__approved +msgid "Approved" +msgstr "Aprobado" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass +msgid "" +"Bypassed (auto validated), if previous tier was validated by same reviewer" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__can_review +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__can_review +msgid "Can Review" +msgstr "Puede revisar" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__can_review +msgid "" +"Can review will be marked if the review is pending and the\n" +" approve sequence has been achieved" +msgstr "" +"Puede revisar se marcará si la revisión está pendiente y\n" +" se ha logrado aprobar la secuencia" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard +msgid "Cancel" +msgstr "Cancelado" + +#. module: base_tier_validation +#. odoo-python +#. odoo-javascript +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__comment +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__has_comment +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__has_comment +#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard +#, python-format +msgid "Comment" +msgstr "Comentario" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_comment_wizard +msgid "Comment Wizard" +msgstr "Asistente de comentarios" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__comment +msgid "Comments" +msgstr "Comentarios" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__company_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__company_id +msgid "Company" +msgstr "Empresa" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_type +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__definition_id +msgid "Definition" +msgstr "Definición de Nivel" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_domain +msgid "Definition Domain" +msgstr "Dominio de definición" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__name +#, python-format +msgid "Description" +msgstr "Descripción" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__display_name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__display_name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__definition_type__domain +msgid "Domain" +msgstr "Dominio" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__done_by +msgid "Done By" +msgstr "Realizado por" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Done by" +msgstr "Realizado por" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__field +msgid "Field in related record" +msgstr "Campo en registro relacionado" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_review.py:0 +#, python-format +msgid "Group %s" +msgstr "Grupo %s" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "Group By" +msgstr "Agrupar por" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__has_comment +msgid "Has Comment" +msgstr "Tiene comentario" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__id +msgid "ID" +msgstr "Identificación" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_create +msgid "" +"If set, all possible reviewers will be notified by email when this " +"definition is triggered." +msgstr "" +"Si se establece, todos los posibles revisores serán notificados por correo " +"electrónico cuando se active esta definición." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard____last_update +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition____last_update +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review____last_update +msgid "Last Modified on" +msgstr "Última modificación el" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_uid +msgid "Last Updated by" +msgstr "Última modificación por" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_date +msgid "Last Updated on" +msgstr "Última modificación en" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "Model" +msgstr "Modelo" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "More Options" +msgstr "Más opciones" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__need_validation +msgid "Need Validation" +msgstr "Necesita validación" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_definition.py:0 +#, python-format +msgid "New Tier Validation" +msgstr "Nueva Definición de Nivel" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__next_review +msgid "Next Review" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Next: %s" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "No reviews to do." +msgstr "No hay revisiones que hacer." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create +msgid "Notify Reviewers on Creation" +msgstr "Notificar a los revisores sobre la creación" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Operation has been rejected." +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Operation has been validated!" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Option to forward a tier validation to other reviewer, and backward" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Option to use python formula to get reviewers and find documents" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending +#, python-format +msgid "Pending" +msgstr "Pendiente" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id +msgid "Referenced Model" +msgstr "Modelo referenciado" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "Reject" +msgstr "Rechazar" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected +msgid "Rejected" +msgstr "Rechazado" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected_message +msgid "Rejected Message" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__res_id +msgid "Related Document ID" +msgstr "ID de documento relacionado" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__model +msgid "Related Document Model" +msgstr "Modelo de documento relacionado" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons +msgid "Request Validation" +msgstr "Solicitar Validación" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__requested_by +msgid "Requested By" +msgstr "Solicitado por" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Requested by" +msgstr "Solicitado por" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_id +msgid "Res" +msgstr "Res" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_model +msgid "Res Model" +msgstr "Modelo Res" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons +msgid "Restart Validation" +msgstr "Reiniciar la validación" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__review_ids +msgid "Review" +msgstr "Revisión" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_id +msgid "Reviewer" +msgstr "Evaluador" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_field_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_field_id +msgid "Reviewer field" +msgstr "Campo de revisor" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_group_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_group_id +msgid "Reviewer group" +msgstr "Grupo de revisores" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_ids +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__reviewer_ids +msgid "Reviewers" +msgstr "Revisores" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_res_users__review_ids +#, python-format +msgid "Reviews" +msgstr "Comentarios" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__sequence +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__sequence +#, python-format +msgid "Sequence" +msgstr "Secuencia" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__individual +msgid "Specific user" +msgstr "Usuario específico" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__status +#, python-format +msgid "Status" +msgstr "Estatus" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "The operation is under validation." +msgstr "La operación está en proceso de validación." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "The review has been reset by %s." +msgstr "%s ha restablecido la revisión." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_review.py:0 +#, python-format +msgid "There are no res.users in the selected field" +msgstr "No hay res.users en el campo seleccionado" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "This %s needs to be validated" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "" +"This action needs to be validated for at least one record. \n" +"Please request a validation." +msgstr "" +"Esta acción debe validarse para al menos un registro.\n" +"Solicite una validación." + +#. module: base_tier_validation +#: model:ir.actions.act_window,name:base_tier_validation.tier_definition_action +#: model:ir.model,name:base_tier_validation.model_tier_definition +#: model:ir.ui.menu,name:base_tier_validation.menu_tier_definition +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Tier Definition" +msgstr "Definición de Nivel" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_formula +msgid "Tier Formula" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_forward +msgid "Tier Forward & Backward" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_tier_review +msgid "Tier Review" +msgstr "Revisión de niveles" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Tier Validation" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_tier_validation +msgid "Tier Validation (abstract)" +msgstr "Validación de nivel (resumen)" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_accepted +msgid "Tier Validation Accepted Notification" +msgstr "Notificación de validación de nivel aceptada" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_rejected +msgid "Tier Validation Rejected Notification" +msgstr "Notificación de rechazo de validación de nivel" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested +msgid "Tier Validation Requested" +msgstr "Validación de nivel solicitada" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_restarted +msgid "Tier Validation Restarted" +msgstr "Se reinició la validación de nivel" + +#. module: base_tier_validation +#: model:ir.ui.menu,name:base_tier_validation.menu_tier_confirmation +msgid "Tier Validations" +msgstr "Validaciones de nivel" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__to_validate_message +msgid "To Validate Message" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__todo_by +msgid "Todo By" +msgstr "Por Hacer por" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Todo by" +msgstr "Por Hacer por" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_res_users +msgid "User" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__valid_reviewer_field_ids +msgid "Valid Reviewer Field" +msgstr "Campo de revisor válido" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "Validate" +msgstr "Validar" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__validate_reject +msgid "Validate Reject" +msgstr "Validar Rechazar" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated +msgid "Validated" +msgstr "Validado" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated_message +msgid "Validated Message" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__review_type +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__review_type +msgid "Validated by" +msgstr "Validado por" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_date +#, python-format +msgid "Validation Date" +msgstr "Fecha de validación" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_formated_date +msgid "Validation Formated Date" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status +msgid "Validation Status" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids +msgid "Validations" +msgstr "Validaciones" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no +msgid "Without validation" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "e.g. Tier Validation for..." +msgstr "p.ej. Validación de nivel para ..." + +#, python-format +#~ msgid "Activities" +#~ msgstr "Actividades" + +#~ msgid "Users" +#~ msgstr "Usuarios" + +#~ msgid "A review was rejected by {}. ({})" +#~ msgstr "{} rechazó una revisión. ({})" diff --git a/base_tier_validation/i18n/fr.po b/base_tier_validation/i18n/fr.po new file mode 100644 index 00000000..ae3dea25 --- /dev/null +++ b/base_tier_validation/i18n/fr.po @@ -0,0 +1,748 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_tier_validation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-10-19 12:51+0000\n" +"Last-Translator: Houzéfa Abbasbhay \n" +"Language-Team: none\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "0 Pending" +msgstr "0 en attente" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" This Record needs to be\n" +" validated." +msgstr "" +"\n" +" Cet enregistrement.\n" +" requiert une validation" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" Operation has been\n" +" rejected\n" +" ." +msgstr "" +"\n" +" L'opération a été\n" +" rejetée\n" +" ." + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" Operation has been\n" +" validated\n" +" !" +msgstr "" +"\n" +" L'opération a été\n" +" validée\n" +" !" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Name" +msgstr "Nom" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Bypassed, if previous tier was validated by same reviewer" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review has been requested by %s." +msgstr "Une revue a été demandée par %s." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was accepted" +msgstr "Une revue a été acceptée" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was accepted. (%s)" +msgstr "Une revue a été acceptée. (%s)" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was rejected by %(user)s. (%(comment)s)" +msgstr "Une revue a été refusée par %(user)s. (%(comment)s)" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was rejected by %s." +msgstr "Une revue a été refusée par %s." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A validation process is still open for at least one record." +msgstr "" +"Un processus de validation est toujours en cours pour au moins un " +"enregistrement." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__active +msgid "Active" +msgstr "Actif" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "Activity" +msgstr "Activité" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "All" +msgstr "Tout" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__group +msgid "Any user in a specific group" +msgstr "Tout utilisateur d'un groupe spécifique" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Apply On" +msgstr "Appliquer sur" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence +msgid "Approval order by the specified sequence number" +msgstr "Ordre d'approbation suivant le numéro de séquence spécifié" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence_bypass +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence_bypass +msgid "Approve Sequence Bypass" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence +msgid "Approve by sequence" +msgstr "Approuver dans l'ordre" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__approved +msgid "Approved" +msgstr "Approuvé" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass +msgid "" +"Bypassed (auto validated), if previous tier was validated by same reviewer" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__can_review +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__can_review +msgid "Can Review" +msgstr "Revue possible" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__can_review +msgid "" +"Can review will be marked if the review is pending and the\n" +" approve sequence has been achieved" +msgstr "" +"La revue est marquée possible lorsqu'elle est en attente et\n" +" qu'une séquence d'approbation a été effectuée" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard +msgid "Cancel" +msgstr "Annuler" + +#. module: base_tier_validation +#. odoo-python +#. odoo-javascript +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__comment +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__has_comment +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__has_comment +#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard +#, python-format +msgid "Comment" +msgstr "Commentaire" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_comment_wizard +msgid "Comment Wizard" +msgstr "Assistant de saisie de commentaire" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__comment +msgid "Comments" +msgstr "Commentaires" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__company_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__company_id +msgid "Company" +msgstr "Société" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_res_config_settings +msgid "Config Settings" +msgstr "Paramètres de configuration" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_date +msgid "Created on" +msgstr "Créé le" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_type +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__definition_id +msgid "Definition" +msgstr "Définition" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_domain +msgid "Definition Domain" +msgstr "Domaine de la définition" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__name +#, python-format +msgid "Description" +msgstr "Description" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__display_name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__display_name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__display_name +msgid "Display Name" +msgstr "Nom d'affichage" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__definition_type__domain +msgid "Domain" +msgstr "Domaine" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__done_by +msgid "Done By" +msgstr "Fait par" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Done by" +msgstr "Fait par" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__field +msgid "Field in related record" +msgstr "Champ dans l'enregistrement rattaché" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_review.py:0 +#, python-format +msgid "Group %s" +msgstr "Groupe %s" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "Group By" +msgstr "Regrouper par" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__has_comment +msgid "Has Comment" +msgstr "Avec commentaire" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__id +msgid "ID" +msgstr "ID" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_create +msgid "" +"If set, all possible reviewers will be notified by email when this " +"definition is triggered." +msgstr "" +"Avec cette option, tous les réviseurs autorisés seront notifiés par email " +"lors du déclenchement de cette définition." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard____last_update +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition____last_update +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_uid +msgid "Last Updated by" +msgstr "Dernière mise à jour par" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "Model" +msgstr "Modèle" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "More Options" +msgstr "Plus d'options" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__need_validation +msgid "Need Validation" +msgstr "Validation requise" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_definition.py:0 +#, python-format +msgid "New Tier Validation" +msgstr "Nouveau niveau de validation" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__next_review +msgid "Next Review" +msgstr "Revue suivante" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Next: %s" +msgstr "Suivante : %s" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "No reviews to do." +msgstr "Aucune revue n'est nécessaire." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create +msgid "Notify Reviewers on Creation" +msgstr "Notifier les réviseurs à la création" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Operation has been rejected." +msgstr "L'opération a été rejetée." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Operation has been validated!" +msgstr "L'opération a été validée !" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Option to forward a tier validation to other reviewer, and backward" +msgstr "" +"Option pour transmettre le niveau de validation à un autre réviseur, et " +"inversement" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Option to use python formula to get reviewers and find documents" +msgstr "" +"Option pour utiliser une formule python pour calculer les réviseurs et " +"déterminer les enregistrements" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending +#, python-format +msgid "Pending" +msgstr "En attente" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id +msgid "Referenced Model" +msgstr "Modèle rattaché" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "Reject" +msgstr "Rejeter" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected +msgid "Rejected" +msgstr "Rejeté" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected_message +msgid "Rejected Message" +msgstr "Message de rejet" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__res_id +msgid "Related Document ID" +msgstr "ID de l'enregistrement rattaché" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__model +msgid "Related Document Model" +msgstr "Modèle de l'enregistrement rattaché" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons +msgid "Request Validation" +msgstr "Demander validation" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__requested_by +msgid "Requested By" +msgstr "Demandé par" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Requested by" +msgstr "Demandé par" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_id +msgid "Res" +msgstr "Enregistrement" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_model +msgid "Res Model" +msgstr "Modèle de l'enregistrement" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons +msgid "Restart Validation" +msgstr "Recommencer la validation" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__review_ids +msgid "Review" +msgstr "Revue" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_id +msgid "Reviewer" +msgstr "Réviseur" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_field_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_field_id +msgid "Reviewer field" +msgstr "Champ du réviseur" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_group_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_group_id +msgid "Reviewer group" +msgstr "Groupe des réviseurs" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_ids +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__reviewer_ids +msgid "Reviewers" +msgstr "Réviseurs" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_res_users__review_ids +#, python-format +msgid "Reviews" +msgstr "Revues" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__sequence +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__sequence +#, python-format +msgid "Sequence" +msgstr "Séquence" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__individual +msgid "Specific user" +msgstr "Utilisateur spécifique" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__status +#, python-format +msgid "Status" +msgstr "Statut" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "The operation is under validation." +msgstr "Cette opération est en cours de validation." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "The review has been reset by %s." +msgstr "Cette revue a été réinitialisée par %s." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_review.py:0 +#, python-format +msgid "There are no res.users in the selected field" +msgstr "Le champ sélectionné ne référence pas des res.users" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "This %s needs to be validated" +msgstr "%s : Cet enregistrement requiert une validation" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "" +"This action needs to be validated for at least one record. \n" +"Please request a validation." +msgstr "" +"Cette action requiert une validation pour au moins un des enregistrements. \n" +"Veuillez demander cette validation." + +#. module: base_tier_validation +#: model:ir.actions.act_window,name:base_tier_validation.tier_definition_action +#: model:ir.model,name:base_tier_validation.model_tier_definition +#: model:ir.ui.menu,name:base_tier_validation.menu_tier_definition +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Tier Definition" +msgstr "Définition de niveau" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_formula +msgid "Tier Formula" +msgstr "Formules sur les niveaux" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_forward +msgid "Tier Forward & Backward" +msgstr "Délégation des niveaux" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_tier_review +msgid "Tier Review" +msgstr "Revue d'un niveau" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Tier Validation" +msgstr "Validation par niveau" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_tier_validation +msgid "Tier Validation (abstract)" +msgstr "Validation d'un niveau (modèle abstrait)" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_accepted +msgid "Tier Validation Accepted Notification" +msgstr "Validation par niveau - Notification - Acceptée" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_rejected +msgid "Tier Validation Rejected Notification" +msgstr "Validation par niveau - Notification - Rejetée" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested +msgid "Tier Validation Requested" +msgstr "Validation par niveau - Demandée" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_restarted +msgid "Tier Validation Restarted" +msgstr "Validation par niveau - Redémarrée" + +#. module: base_tier_validation +#: model:ir.ui.menu,name:base_tier_validation.menu_tier_confirmation +msgid "Tier Validations" +msgstr "Validations par niveau" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__to_validate_message +msgid "To Validate Message" +msgstr "Message de demande de validation" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__todo_by +msgid "Todo By" +msgstr "À faire par" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Todo by" +msgstr "À faire par" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_res_users +msgid "User" +msgstr "Utilisateur" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__valid_reviewer_field_ids +msgid "Valid Reviewer Field" +msgstr "Champs réviseur valides" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "Validate" +msgstr "Valider" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__validate_reject +msgid "Validate Reject" +msgstr "Validation / Rejet" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated +msgid "Validated" +msgstr "Validé" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated_message +msgid "Validated Message" +msgstr "Message de validation" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__review_type +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__review_type +msgid "Validated by" +msgstr "Validé par" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_date +#, python-format +msgid "Validation Date" +msgstr "Date de validation" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_formated_date +msgid "Validation Formated Date" +msgstr "Date de validation formatée" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status +msgid "Validation Status" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids +msgid "Validations" +msgstr "Validations" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no +msgid "Without validation" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "e.g. Tier Validation for..." +msgstr "par ex Niveau de validation pour..." + +#, python-format +#~ msgid "Activities" +#~ msgstr "Activités" + +#~ msgid "Users" +#~ msgstr "Utilisateurs" + +#~ msgid "A review was rejected by {}. ({})" +#~ msgstr "Une vérification a été refusée par {}. ({})" + +#~ msgid "Any user in a specific group." +#~ msgstr "Tout utilisateur d'un groupe spécifique." diff --git a/base_tier_validation/i18n/it.po b/base_tier_validation/i18n/it.po new file mode 100644 index 00000000..250630b7 --- /dev/null +++ b/base_tier_validation/i18n/it.po @@ -0,0 +1,739 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_tier_validation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-12-06 13:35+0000\n" +"Last-Translator: mymage \n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "0 Pending" +msgstr "0 In attesa" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" This Record needs to be\n" +" validated." +msgstr "" +"\n" +" Questo Record necessita di\n" +" approvazione." + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" Operation has been\n" +" rejected\n" +" ." +msgstr "" +"\n" +" L'operazione è stata\n" +" rifiutata\n" +" ." + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" Operation has been\n" +" validated\n" +" !" +msgstr "" +"\n" +" L'operazione è stata\n" +" approvata\n" +" !" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Name" +msgstr "Nome" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Bypassed, if previous tier was validated by same reviewer" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review has been requested by %s." +msgstr "Un'approvazione è stata richiesta da %s." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was accepted" +msgstr "Un'approvazione è stata accettata" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was accepted. (%s)" +msgstr "Un'approvazione è stata accettata. (%s)" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was rejected by %(user)s. (%(comment)s)" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was rejected by %s." +msgstr "Un'approvazione è stata rifiutata da %s." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A validation process is still open for at least one record." +msgstr "Un processo di approvazione è ancora aperto per almeno un record." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__active +msgid "Active" +msgstr "Attivo" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "Activity" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "All" +msgstr "Tutto" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__group +msgid "Any user in a specific group" +msgstr "Qualunque utente in un gruppo specifico" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Apply On" +msgstr "Applica a" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence +msgid "Approval order by the specified sequence number" +msgstr "Ordine di approvazione specificato da numero sequenza" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence_bypass +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence_bypass +msgid "Approve Sequence Bypass" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence +msgid "Approve by sequence" +msgstr "Approva in sequenza" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__approved +msgid "Approved" +msgstr "Approvato" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass +msgid "" +"Bypassed (auto validated), if previous tier was validated by same reviewer" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__can_review +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__can_review +msgid "Can Review" +msgstr "Può revisionare" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__can_review +msgid "" +"Can review will be marked if the review is pending and the\n" +" approve sequence has been achieved" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard +msgid "Cancel" +msgstr "Annulla" + +#. module: base_tier_validation +#. odoo-python +#. odoo-javascript +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__comment +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__has_comment +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__has_comment +#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard +#, python-format +msgid "Comment" +msgstr "Commento" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_comment_wizard +msgid "Comment Wizard" +msgstr "Wizard Commento" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__comment +msgid "Comments" +msgstr "Commenti" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__company_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__company_id +msgid "Company" +msgstr "Azienda" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_type +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__definition_id +msgid "Definition" +msgstr "Definizione" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_domain +msgid "Definition Domain" +msgstr "Dominio Definizione" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__name +#, python-format +msgid "Description" +msgstr "Descrizione" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__display_name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__display_name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__definition_type__domain +msgid "Domain" +msgstr "Dominio" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__done_by +msgid "Done By" +msgstr "Eseguito Da" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Done by" +msgstr "Eseguito da" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__field +msgid "Field in related record" +msgstr "Campo in record collegato" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_review.py:0 +#, python-format +msgid "Group %s" +msgstr "Gruppo %s" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "Group By" +msgstr "Raggruppa per" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__has_comment +msgid "Has Comment" +msgstr "Ha commenti" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__id +msgid "ID" +msgstr "ID" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_create +msgid "" +"If set, all possible reviewers will be notified by email when this " +"definition is triggered." +msgstr "" +"Se impostato, tutti i possibili approvatori saranno notificati via email " +"quando la definizione è attivata." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard____last_update +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition____last_update +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review____last_update +msgid "Last Modified on" +msgstr "Ultima Modifica il" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "Model" +msgstr "Modello" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "More Options" +msgstr "Più Opzioni" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__need_validation +msgid "Need Validation" +msgstr "Richiede conferma" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_definition.py:0 +#, python-format +msgid "New Tier Validation" +msgstr "Nuovo Livello Approvazione" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__next_review +msgid "Next Review" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Next: %s" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "No reviews to do." +msgstr "Nessuna approvazione da fare." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create +msgid "Notify Reviewers on Creation" +msgstr "Notifica Approvatori su Creazione" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Operation has been rejected." +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Operation has been validated!" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Option to forward a tier validation to other reviewer, and backward" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Option to use python formula to get reviewers and find documents" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending +#, python-format +msgid "Pending" +msgstr "In attesa" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id +msgid "Referenced Model" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "Reject" +msgstr "Rifiuta" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected +msgid "Rejected" +msgstr "Rifiutato" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected_message +msgid "Rejected Message" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__res_id +msgid "Related Document ID" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__model +msgid "Related Document Model" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons +msgid "Request Validation" +msgstr "Richiedi validazione" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__requested_by +msgid "Requested By" +msgstr "Richiesta Da" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Requested by" +msgstr "Richiesta da" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_id +#, fuzzy +msgid "Res" +msgstr "Res" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_model +#, fuzzy +msgid "Res Model" +msgstr "Res Model" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons +msgid "Restart Validation" +msgstr "Riavvia validazione" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__review_ids +msgid "Review" +msgstr "Approvazione" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_id +msgid "Reviewer" +msgstr "Revisore" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_field_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_field_id +msgid "Reviewer field" +msgstr "Campo approvatore" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_group_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_group_id +msgid "Reviewer group" +msgstr "Gruppo approvatore" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_ids +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__reviewer_ids +msgid "Reviewers" +msgstr "Revisori" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_res_users__review_ids +#, python-format +msgid "Reviews" +msgstr "Revisioni" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__sequence +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__sequence +#, python-format +msgid "Sequence" +msgstr "Sequenza" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__individual +msgid "Specific user" +msgstr "Utente specifico" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__status +#, python-format +msgid "Status" +msgstr "Stato" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "The operation is under validation." +msgstr "L'operazione è sotto approvazione." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "The review has been reset by %s." +msgstr "L'approvazione è stata riavviata da %s." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_review.py:0 +#, python-format +msgid "There are no res.users in the selected field" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "This %s needs to be validated" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "" +"This action needs to be validated for at least one record. \n" +"Please request a validation." +msgstr "" +"Questa azione richiede di essere approvata per almeno un record.\n" +"Prego richiedere un'approvazione." + +#. module: base_tier_validation +#: model:ir.actions.act_window,name:base_tier_validation.tier_definition_action +#: model:ir.model,name:base_tier_validation.model_tier_definition +#: model:ir.ui.menu,name:base_tier_validation.menu_tier_definition +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Tier Definition" +msgstr "Definizione livello" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_formula +msgid "Tier Formula" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_forward +msgid "Tier Forward & Backward" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_tier_review +msgid "Tier Review" +msgstr "Livello Approvazione" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Tier Validation" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_tier_validation +msgid "Tier Validation (abstract)" +msgstr "" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_accepted +msgid "Tier Validation Accepted Notification" +msgstr "Notifica accettazione livello approvazione" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_rejected +msgid "Tier Validation Rejected Notification" +msgstr "Notifica accettazione livello approvazione" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested +msgid "Tier Validation Requested" +msgstr "Approvazione livello richiesta" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_restarted +msgid "Tier Validation Restarted" +msgstr "Approvazione Riavviata" + +#. module: base_tier_validation +#: model:ir.ui.menu,name:base_tier_validation.menu_tier_confirmation +msgid "Tier Validations" +msgstr "Livelli di Approvazione" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__to_validate_message +msgid "To Validate Message" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__todo_by +msgid "Todo By" +msgstr "Incaricati" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Todo by" +msgstr "Incaricati" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_res_users +msgid "User" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__valid_reviewer_field_ids +msgid "Valid Reviewer Field" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "Validate" +msgstr "Approva" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__validate_reject +msgid "Validate Reject" +msgstr "Rifiuta Approvazione" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated +msgid "Validated" +msgstr "Approvato" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated_message +msgid "Validated Message" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__review_type +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__review_type +msgid "Validated by" +msgstr "Approvato da" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_date +#, python-format +msgid "Validation Date" +msgstr "Data approvazione" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_formated_date +msgid "Validation Formated Date" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status +msgid "Validation Status" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids +msgid "Validations" +msgstr "Validazioni" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no +msgid "Without validation" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "e.g. Tier Validation for..." +msgstr "" + +#, python-format +#~ msgid "Activities" +#~ msgstr "Attività" + +#~ msgid "Users" +#~ msgstr "Utenti" + +#~ msgid "A review was rejected by {}. ({})" +#~ msgstr "Un'approvazione è stata rifiutata da {}. ({})" diff --git a/base_tier_validation/i18n/nl_NL.po b/base_tier_validation/i18n/nl_NL.po new file mode 100644 index 00000000..c475e43d --- /dev/null +++ b/base_tier_validation/i18n/nl_NL.po @@ -0,0 +1,740 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_tier_validation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-01-15 11:13+0000\n" +"Last-Translator: Cas Vissers \n" +"Language-Team: none\n" +"Language: nl_NL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.10\n" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "0 Pending" +msgstr "0 In afwachting" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" This Record needs to be\n" +" validated." +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" Operation has been\n" +" rejected\n" +" ." +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" Operation has been\n" +" validated\n" +" !" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Name" +msgstr "Naam" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Bypassed, if previous tier was validated by same reviewer" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review has been requested by %s." +msgstr "Een beoordeling is aangevraagd door %s." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was accepted" +msgstr "Een beoordeling is geaccepteerd" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was accepted. (%s)" +msgstr "Een beoordeling is geaccepteerd. (%s)" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was rejected by %(user)s. (%(comment)s)" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was rejected by %s." +msgstr "Een beoordeling is afgewezen door %s." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A validation process is still open for at least one record." +msgstr "Er is nog steeds een validatieproces open voor ten minste één record." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__active +msgid "Active" +msgstr "Actief" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "Activity" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "All" +msgstr "Alle" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__group +msgid "Any user in a specific group" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Apply On" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence +msgid "Approval order by the specified sequence number" +msgstr "Goedkeuringsvolgorde op basis van het opgegeven volgnummer" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence_bypass +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence_bypass +msgid "Approve Sequence Bypass" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence +msgid "Approve by sequence" +msgstr "Goedkeuren op volgorde" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__approved +msgid "Approved" +msgstr "Goedgekeurd" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass +msgid "" +"Bypassed (auto validated), if previous tier was validated by same reviewer" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__can_review +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__can_review +msgid "Can Review" +msgstr "Kan beoordelen" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__can_review +msgid "" +"Can review will be marked if the review is pending and the\n" +" approve sequence has been achieved" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard +msgid "Cancel" +msgstr "Annuleer" + +#. module: base_tier_validation +#. odoo-python +#. odoo-javascript +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__comment +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__has_comment +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__has_comment +#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard +#, python-format +msgid "Comment" +msgstr "Opmerking" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_comment_wizard +msgid "Comment Wizard" +msgstr "Opmerking Wizard" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__comment +msgid "Comments" +msgstr "Opmerkingen" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__company_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__company_id +msgid "Company" +msgstr "Bedrijf" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_uid +msgid "Created by" +msgstr "Bedrijf" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_date +msgid "Created on" +msgstr "Aangemaakt door" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_type +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__definition_id +msgid "Definition" +msgstr "Definitie" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_domain +msgid "Definition Domain" +msgstr "Definitiedomein" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__name +#, python-format +msgid "Description" +msgstr "Omschrijving" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__display_name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__display_name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__display_name +msgid "Display Name" +msgstr "Weergavenaam" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__definition_type__domain +msgid "Domain" +msgstr "Domein" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__done_by +msgid "Done By" +msgstr "Gedaan door" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Done by" +msgstr "Gedaan door" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__field +msgid "Field in related record" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_review.py:0 +#, python-format +msgid "Group %s" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "Group By" +msgstr "Groeperen op" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__has_comment +msgid "Has Comment" +msgstr "Heeft commentaar" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__id +msgid "ID" +msgstr "ID" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_create +msgid "" +"If set, all possible reviewers will be notified by email when this " +"definition is triggered." +msgstr "" +"Indien ingesteld, worden alle mogelijke reviewers per e-mail op de hoogte " +"gebracht wanneer deze definitie wordt geactiveerd." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard____last_update +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition____last_update +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review____last_update +msgid "Last Modified on" +msgstr "Laatst gewijzigd op" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_uid +msgid "Last Updated by" +msgstr "Laatst bijgewerkt door" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_date +msgid "Last Updated on" +msgstr "Laatst bijgewerkt op" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "Model" +msgstr "Model" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "More Options" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__need_validation +msgid "Need Validation" +msgstr "Validatie nodig" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_definition.py:0 +#, python-format +msgid "New Tier Validation" +msgstr "Nieuwe Tier-validatie" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__next_review +msgid "Next Review" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Next: %s" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "No reviews to do." +msgstr "Geen beoordelingen te doen." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create +msgid "Notify Reviewers on Creation" +msgstr "Informeer beoordelaar bij het maken" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Operation has been rejected." +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Operation has been validated!" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Option to forward a tier validation to other reviewer, and backward" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Option to use python formula to get reviewers and find documents" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending +#, python-format +msgid "Pending" +msgstr "In afwachting" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id +msgid "Referenced Model" +msgstr "Referentiemodel" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "Reject" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected +msgid "Rejected" +msgstr "Afgekeurd" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected_message +msgid "Rejected Message" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__res_id +msgid "Related Document ID" +msgstr "Gerelateerde document-ID" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__model +msgid "Related Document Model" +msgstr "Verwant documentmodel" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons +msgid "Request Validation" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__requested_by +msgid "Requested By" +msgstr "Aangevraagd door" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Requested by" +msgstr "Aangevraagd door" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_id +msgid "Res" +msgstr "Res" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_model +msgid "Res Model" +msgstr "Res model" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons +msgid "Restart Validation" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__review_ids +msgid "Review" +msgstr "Beoordeling" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_id +msgid "Reviewer" +msgstr "Beoordelaar" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_field_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_field_id +msgid "Reviewer field" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_group_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_group_id +msgid "Reviewer group" +msgstr "Beoordeel groep" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_ids +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__reviewer_ids +msgid "Reviewers" +msgstr "Beoordelaars" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_res_users__review_ids +#, python-format +msgid "Reviews" +msgstr "Beoordelingen" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__sequence +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__sequence +#, python-format +msgid "Sequence" +msgstr "Volgorde" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__individual +msgid "Specific user" +msgstr "Specifieke gebruiker" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__status +#, python-format +msgid "Status" +msgstr "Status" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "The operation is under validation." +msgstr "De bewerking is onder validatie." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "The review has been reset by %s." +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_review.py:0 +#, python-format +msgid "There are no res.users in the selected field" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "This %s needs to be validated" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "" +"This action needs to be validated for at least one record. \n" +"Please request a validation." +msgstr "" +"Deze actie moet voor ten minste één record gevalideerd worden.\n" +"Vraag een validatie aan." + +#. module: base_tier_validation +#: model:ir.actions.act_window,name:base_tier_validation.tier_definition_action +#: model:ir.model,name:base_tier_validation.model_tier_definition +#: model:ir.ui.menu,name:base_tier_validation.menu_tier_definition +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Tier Definition" +msgstr "Tier definitie" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_formula +msgid "Tier Formula" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_forward +msgid "Tier Forward & Backward" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_tier_review +msgid "Tier Review" +msgstr "Tier beoordeling" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Tier Validation" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_tier_validation +msgid "Tier Validation (abstract)" +msgstr "Tier-validatie (abstract)" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_accepted +#, fuzzy +msgid "Tier Validation Accepted Notification" +msgstr "Tier-validatie (abstract)" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_rejected +#, fuzzy +msgid "Tier Validation Rejected Notification" +msgstr "Tier-validatie (abstract)" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested +msgid "Tier Validation Requested" +msgstr "" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_restarted +msgid "Tier Validation Restarted" +msgstr "" + +#. module: base_tier_validation +#: model:ir.ui.menu,name:base_tier_validation.menu_tier_confirmation +msgid "Tier Validations" +msgstr "Tier-validaties" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__to_validate_message +msgid "To Validate Message" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__todo_by +msgid "Todo By" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Todo by" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_res_users +msgid "User" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__valid_reviewer_field_ids +msgid "Valid Reviewer Field" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "Validate" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__validate_reject +msgid "Validate Reject" +msgstr "Valideren weigeren" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated +msgid "Validated" +msgstr "Gevalideerd" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated_message +msgid "Validated Message" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__review_type +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__review_type +msgid "Validated by" +msgstr "Gevalideerd door" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_date +#, python-format +msgid "Validation Date" +msgstr "Validatie datum" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_formated_date +msgid "Validation Formated Date" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status +msgid "Validation Status" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids +msgid "Validations" +msgstr "Validaties" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no +msgid "Without validation" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "e.g. Tier Validation for..." +msgstr "bijv. Tier validatie voor..." + +#~ msgid "Tier" +#~ msgstr "Tier" + +#, fuzzy, python-format +#~ msgid "Activities" +#~ msgstr "Actief" + +#~ msgid "Users" +#~ msgstr "Gebruikers" + +#~ msgid "A review was rejected by {}. ({})" +#~ msgstr "Een beoordeling is afgewezen door {}. ({})" + +#~ msgid "Any user in a specific group." +#~ msgstr "Elke gebruiker in een specifieke groep." + +#~ msgid "Object" +#~ msgstr "Object" + +#~ msgid "Approve Sequence" +#~ msgstr "Volgorde goedkeuren" diff --git a/base_tier_validation/i18n/sv.po b/base_tier_validation/i18n/sv.po new file mode 100644 index 00000000..71f65732 --- /dev/null +++ b/base_tier_validation/i18n/sv.po @@ -0,0 +1,758 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_tier_validation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-11-24 12:20+0000\n" +"Last-Translator: Simon S \n" +"Language-Team: none\n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3.2\n" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "0 Pending" +msgstr "0 väntande" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" This Record needs to be\n" +" validated." +msgstr "" +"\n" +" Den här posten måste\n" +" valideras." + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" Operation has been\n" +" rejected\n" +" ." +msgstr "" +"\n" +" Åtgärden har\n" +" nekats\n" +" ." + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" Operation has been\n" +" validated\n" +" !" +msgstr "" +"\n" +" Åtgärden har\n" +" validerats\n" +" !" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Name" +msgstr "Namn" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Bypassed, if previous tier was validated by same reviewer" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review has been requested by %s." +msgstr "En granskning har begärts av %s." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was accepted" +msgstr "En granskning accepterades" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was accepted. (%s)" +msgstr "En granskning accepterades. (%s)" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was rejected by %(user)s. (%(comment)s)" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was rejected by %s." +msgstr "En granskning nekades av %s." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A validation process is still open for at least one record." +msgstr "En valideringsprocess är fortfarande öppen för minst en post." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__active +msgid "Active" +msgstr "Aktiv" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "Activity" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "All" +msgstr "Alla" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__group +msgid "Any user in a specific group" +msgstr "Alla användare i en specifik grupp" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Apply On" +msgstr "Applicera på" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence +msgid "Approval order by the specified sequence number" +msgstr "Godkännandeordning enligt angivet sekvensnummer" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence_bypass +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence_bypass +msgid "Approve Sequence Bypass" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence +msgid "Approve by sequence" +msgstr "Godkänn efter sekvens" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__approved +msgid "Approved" +msgstr "Godkänd" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass +msgid "" +"Bypassed (auto validated), if previous tier was validated by same reviewer" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__can_review +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__can_review +msgid "Can Review" +msgstr "Kan granska" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__can_review +msgid "" +"Can review will be marked if the review is pending and the\n" +" approve sequence has been achieved" +msgstr "" +"Kan granska kommer att vara ikryssad om granskningen är väntande och\n" +" godkännandesekvensen har uppnåtts" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard +msgid "Cancel" +msgstr "Avbryt" + +#. module: base_tier_validation +#. odoo-python +#. odoo-javascript +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__comment +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__has_comment +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__has_comment +#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard +#, python-format +msgid "Comment" +msgstr "Kommentar" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_comment_wizard +msgid "Comment Wizard" +msgstr "Kommentarsguide" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__comment +msgid "Comments" +msgstr "Kommentarer" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__company_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__company_id +msgid "Company" +msgstr "Bolag" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_res_config_settings +msgid "Config Settings" +msgstr "Konfigurationsinställningar" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_uid +msgid "Created by" +msgstr "Skapad av" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_date +msgid "Created on" +msgstr "Skapad den" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_type +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__definition_id +msgid "Definition" +msgstr "Definition" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_domain +msgid "Definition Domain" +msgstr "Definitionsdomän" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__name +#, python-format +msgid "Description" +msgstr "Beskrivning" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__display_name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__display_name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__display_name +msgid "Display Name" +msgstr "Visningsnamn" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__definition_type__domain +msgid "Domain" +msgstr "Domän" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__done_by +msgid "Done By" +msgstr "Gjord av" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Done by" +msgstr "Gjord av" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__field +msgid "Field in related record" +msgstr "Fält i relaterad post" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_review.py:0 +#, python-format +msgid "Group %s" +msgstr "Grupp %s" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "Group By" +msgstr "Gruppera efter" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__has_comment +msgid "Has Comment" +msgstr "Har kommentar" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__id +msgid "ID" +msgstr "ID" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_create +msgid "" +"If set, all possible reviewers will be notified by email when this " +"definition is triggered." +msgstr "" +"Om den är inställd kommer alla möjliga granskare att meddelas via e-post när " +"denna definition aktiveras." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard____last_update +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition____last_update +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review____last_update +msgid "Last Modified on" +msgstr "Senast ändrad den" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_uid +msgid "Last Updated by" +msgstr "Senast uppdaterad av" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_date +msgid "Last Updated on" +msgstr "Senast uppdaterad den" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "Model" +msgstr "Modell" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "More Options" +msgstr "Fler alternativ" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__need_validation +msgid "Need Validation" +msgstr "Behöver validering" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_definition.py:0 +#, python-format +msgid "New Tier Validation" +msgstr "Ny attestering" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__next_review +msgid "Next Review" +msgstr "Nästa granskning" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Next: %s" +msgstr "Nästa: %s" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "No reviews to do." +msgstr "Inga granskningar att göra." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create +msgid "Notify Reviewers on Creation" +msgstr "Meddela granskare vid skapande" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Operation has been rejected." +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Operation has been validated!" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Option to forward a tier validation to other reviewer, and backward" +msgstr "" +"Alternativ för att vidarebefordra en attestering till en annan granskare och " +"bakåt" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Option to use python formula to get reviewers and find documents" +msgstr "" +"Alternativ för att använda python-formel för att få fram granskare och hitta " +"dokument" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending +#, python-format +msgid "Pending" +msgstr "Väntande" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id +msgid "Referenced Model" +msgstr "Refererad modell" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "Reject" +msgstr "Neka" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected +msgid "Rejected" +msgstr "Nekad" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected_message +msgid "Rejected Message" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__res_id +msgid "Related Document ID" +msgstr "ID för relaterat dokument" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__model +msgid "Related Document Model" +msgstr "Modell för relaterat dokument" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons +msgid "Request Validation" +msgstr "Begär validering" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__requested_by +msgid "Requested By" +msgstr "Begärd av" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Requested by" +msgstr "Begärd av" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_id +msgid "Res" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_model +msgid "Res Model" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons +msgid "Restart Validation" +msgstr "Starta om validering" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__review_ids +msgid "Review" +msgstr "Granska" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_id +msgid "Reviewer" +msgstr "Granskare" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_field_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_field_id +msgid "Reviewer field" +msgstr "Granskarfält" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_group_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_group_id +msgid "Reviewer group" +msgstr "Granskargrupp" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_ids +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__reviewer_ids +msgid "Reviewers" +msgstr "Granskare" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_res_users__review_ids +#, python-format +msgid "Reviews" +msgstr "Granskningar" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__sequence +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__sequence +#, python-format +msgid "Sequence" +msgstr "Sekvens" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__individual +msgid "Specific user" +msgstr "Specifik användare" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__status +#, python-format +msgid "Status" +msgstr "Status" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "The operation is under validation." +msgstr "Åtgärden håller på att valideras." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "The review has been reset by %s." +msgstr "Granskningen har återställts av %s." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_review.py:0 +#, python-format +msgid "There are no res.users in the selected field" +msgstr "Det finns inga res.users i det valda fältet" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "This %s needs to be validated" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "" +"This action needs to be validated for at least one record. \n" +"Please request a validation." +msgstr "" +"Denna åtgärd måste valideras för minst en post.\n" +"Vänligen begär en validering." + +#. module: base_tier_validation +#: model:ir.actions.act_window,name:base_tier_validation.tier_definition_action +#: model:ir.model,name:base_tier_validation.model_tier_definition +#: model:ir.ui.menu,name:base_tier_validation.menu_tier_definition +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Tier Definition" +msgstr "Attestdefinition" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_formula +msgid "Tier Formula" +msgstr "Attestformel" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_forward +msgid "Tier Forward & Backward" +msgstr "Attest framåt och bakåt" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_tier_review +msgid "Tier Review" +msgstr "Attestgranskning" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Tier Validation" +msgstr "Attestering" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_tier_validation +msgid "Tier Validation (abstract)" +msgstr "Attestering (sammanfattning)" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_accepted +msgid "Tier Validation Accepted Notification" +msgstr "Meddelande vid accepterad attestering" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_rejected +msgid "Tier Validation Rejected Notification" +msgstr "Meddelande vid nekad attestering" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested +msgid "Tier Validation Requested" +msgstr "Attestering begärd" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_restarted +msgid "Tier Validation Restarted" +msgstr "Attestering omstartad" + +#. module: base_tier_validation +#: model:ir.ui.menu,name:base_tier_validation.menu_tier_confirmation +msgid "Tier Validations" +msgstr "Attesteringar" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__to_validate_message +msgid "To Validate Message" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__todo_by +msgid "Todo By" +msgstr "Att göra av" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Todo by" +msgstr "Att göra av" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_res_users +msgid "User" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__valid_reviewer_field_ids +msgid "Valid Reviewer Field" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "Validate" +msgstr "Validera" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__validate_reject +msgid "Validate Reject" +msgstr "Validera Neka" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated +msgid "Validated" +msgstr "Validerad" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated_message +msgid "Validated Message" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__review_type +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__review_type +msgid "Validated by" +msgstr "Validerad av" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_date +#, python-format +msgid "Validation Date" +msgstr "Valideringsdatum" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_formated_date +msgid "Validation Formated Date" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status +msgid "Validation Status" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids +msgid "Validations" +msgstr "Valideringar" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no +msgid "Without validation" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "e.g. Tier Validation for..." +msgstr "t.ex. attestvalidering för..." + +#, python-format +#~ msgid "Activities" +#~ msgstr "Aktiviteter" + +#~ msgid "More reports about tier validations, i.e., summary of all my reviews" +#~ msgstr "" +#~ "Fler rapporter om attesteringar, dvs. en sammanfattning av alla mina " +#~ "granskningar" + +#~ msgid "Option to trigger server actions on completion of tier reviews" +#~ msgstr "" +#~ "Alternativ för att utlösa serveråtgärder när attesteringar har slutförts" + +#~ msgid "Tier Reports" +#~ msgstr "Attestrapporter" + +#~ msgid "Tier Server Action" +#~ msgstr "Attestserveråtgärd" + +#~ msgid "Users" +#~ msgstr "Användare" + +#~ msgid "A review was rejected by {}. ({})" +#~ msgstr "En granskning nekades av {}. ({})" diff --git a/base_tier_validation/i18n/tr.po b/base_tier_validation/i18n/tr.po new file mode 100644 index 00000000..7334fd97 --- /dev/null +++ b/base_tier_validation/i18n/tr.po @@ -0,0 +1,732 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_tier_validation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-02-08 06:14+0000\n" +"Last-Translator: Ediz Duman \n" +"Language-Team: none\n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.14.1\n" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "0 Pending" +msgstr "0 Bekleyen" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" This Record needs to be\n" +" validated." +msgstr "" +"\n" +" Bu kaydın olması gerekiyor\n" +" doğrulandı." + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" Operation has been\n" +" rejected\n" +" ." +msgstr "" +"\n" +" operasyon yapıldı\n" +" reddedildi\n" +" ." + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" Operation has been\n" +" validated\n" +" !" +msgstr "" +"\n" +" operasyon yapıldı\n" +" doğrulandı\n" +" !" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Name" +msgstr "Adı" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Bypassed, if previous tier was validated by same reviewer" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review has been requested by %s." +msgstr "%s tarafından bir inceleme istendi." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was accepted" +msgstr "Bir inceleme kabul edildi" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was accepted. (%s)" +msgstr "Bir inceleme kabul edildi. (%s)" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was rejected by %(user)s. (%(comment)s)" +msgstr "Bir inceleme %(user)s tarafından reddedildi. (%(comment)s)" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was rejected by %s." +msgstr "Bir inceleme %s tarafından reddedildi." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A validation process is still open for at least one record." +msgstr "En az bir kayıt için hala bir doğrulama süreci açık." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__active +msgid "Active" +msgstr "Etkin" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "Activity" +msgstr "Aktivite" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "All" +msgstr "Bütün" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__group +msgid "Any user in a specific group" +msgstr "Belirli bir gruptaki herhangi bir kullanıcı" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Apply On" +msgstr "Uygula" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence +msgid "Approval order by the specified sequence number" +msgstr "Belirtilen sıra numarasına göre onay sırası" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence_bypass +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence_bypass +msgid "Approve Sequence Bypass" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence +msgid "Approve by sequence" +msgstr "Sıraya göre onayla" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__approved +msgid "Approved" +msgstr "Onaylı" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass +msgid "" +"Bypassed (auto validated), if previous tier was validated by same reviewer" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__can_review +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__can_review +msgid "Can Review" +msgstr "Gözden Geçirebilir" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__can_review +msgid "" +"Can review will be marked if the review is pending and the\n" +" approve sequence has been achieved" +msgstr "" +"İnceleme beklemedeyse ve gözden geçirilebilirse işaretlenebilir.\n" +" onay dizisi elde edildi" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard +msgid "Cancel" +msgstr "İptal" + +#. module: base_tier_validation +#. odoo-python +#. odoo-javascript +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__comment +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__has_comment +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__has_comment +#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard +#, python-format +msgid "Comment" +msgstr "Yorum" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_comment_wizard +msgid "Comment Wizard" +msgstr "Yorum Sihirbazı" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__comment +msgid "Comments" +msgstr "Yorumlar" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__company_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__company_id +msgid "Company" +msgstr "Şirket" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_res_config_settings +msgid "Config Settings" +msgstr "Yapılandırma Ayarları" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_uid +msgid "Created by" +msgstr "Oluşturan" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_date +msgid "Created on" +msgstr "Oluşturulma" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_type +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__definition_id +msgid "Definition" +msgstr "Tanım" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_domain +msgid "Definition Domain" +msgstr "Tanım Etki Alanı" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__name +#, python-format +msgid "Description" +msgstr "Açıklama" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__display_name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__display_name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__display_name +msgid "Display Name" +msgstr "Görünüm Adı" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__definition_type__domain +msgid "Domain" +msgstr "Etki Alanı" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__done_by +msgid "Done By" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Done by" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__field +msgid "Field in related record" +msgstr "İlgili kayıttaki alan" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_review.py:0 +#, python-format +msgid "Group %s" +msgstr "Grup %s" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "Group By" +msgstr "Grupla" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__has_comment +msgid "Has Comment" +msgstr "Yorum Var" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__id +msgid "ID" +msgstr "ID" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_create +msgid "" +"If set, all possible reviewers will be notified by email when this " +"definition is triggered." +msgstr "" +"Ayarlanırsa, bu tanım tetiklendiğinde tüm olası gözden geçirenler e-posta " +"ile bilgilendirilecektir." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard____last_update +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition____last_update +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review____last_update +msgid "Last Modified on" +msgstr "Son Düzenleme" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_uid +msgid "Last Updated by" +msgstr "Son Güncelleyen" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_date +msgid "Last Updated on" +msgstr "Son Güncelleme" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "Model" +msgstr "Modeli" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "More Options" +msgstr "Daha Fazla Seçenek" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__need_validation +msgid "Need Validation" +msgstr "Doğrulama Gerekiyor" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_definition.py:0 +#, python-format +msgid "New Tier Validation" +msgstr "Yeni Seviye Doğrulama" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__next_review +msgid "Next Review" +msgstr "Sonraki İnceleme" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Next: %s" +msgstr "Sonraki: %s" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "No reviews to do." +msgstr "Yapacak inceleme yok." + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create +msgid "Notify Reviewers on Creation" +msgstr "İncelemeleri Oluşturma Hakkında Bilgilendir" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Operation has been rejected." +msgstr "İşlem reddedildi." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Operation has been validated!" +msgstr "İşlem doğrulandı!" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Option to forward a tier validation to other reviewer, and backward" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Option to use python formula to get reviewers and find documents" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending +#, python-format +msgid "Pending" +msgstr "Bekleyen" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id +msgid "Referenced Model" +msgstr "Referans Model" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "Reject" +msgstr "Reddet" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected +msgid "Rejected" +msgstr "Reddedildi" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected_message +msgid "Rejected Message" +msgstr "Reddedilen Mesaj" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__res_id +msgid "Related Document ID" +msgstr "İlgili Belge ID" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__model +msgid "Related Document Model" +msgstr "İlgili Belge Modeli" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons +msgid "Request Validation" +msgstr "Doğrulama İste" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__requested_by +msgid "Requested By" +msgstr "İsteyen" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Requested by" +msgstr "İsteyen" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_id +msgid "Res" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_model +msgid "Res Model" +msgstr "Res Model" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons +msgid "Restart Validation" +msgstr "Yeniden Doğrulama İste" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__review_ids +msgid "Review" +msgstr "İncele" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_id +msgid "Reviewer" +msgstr "İnceleyen" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_field_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_field_id +msgid "Reviewer field" +msgstr "İnceleme alanı" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_group_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_group_id +msgid "Reviewer group" +msgstr "İnceleme grubu" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_ids +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__reviewer_ids +msgid "Reviewers" +msgstr "İnceleyenler" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_res_users__review_ids +#, python-format +msgid "Reviews" +msgstr "İncelemeler" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__sequence +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__sequence +#, python-format +msgid "Sequence" +msgstr "Sıra" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__individual +msgid "Specific user" +msgstr "Belirli kullanıcı" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__status +#, python-format +msgid "Status" +msgstr "Durumu" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "The operation is under validation." +msgstr "İşlem doğrulama aşamasındadır." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "The review has been reset by %s." +msgstr "İnceleme %s tarafından sıfırlandı." + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_review.py:0 +#, python-format +msgid "There are no res.users in the selected field" +msgstr "Seçili alanda res.kullanıcı yok" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "This %s needs to be validated" +msgstr "Bu %s 'nin doğrulanması gerekiyor" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "" +"This action needs to be validated for at least one record. \n" +"Please request a validation." +msgstr "" +"Bu eylemin en az bir kayıt için doğrulanması gerekir.\n" +"Lütfen doğrulama isteğinde bulunun." + +#. module: base_tier_validation +#: model:ir.actions.act_window,name:base_tier_validation.tier_definition_action +#: model:ir.model,name:base_tier_validation.model_tier_definition +#: model:ir.ui.menu,name:base_tier_validation.menu_tier_definition +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Tier Definition" +msgstr "Seviye Tanımı" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_formula +msgid "Tier Formula" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_forward +msgid "Tier Forward & Backward" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_tier_review +msgid "Tier Review" +msgstr "Seviye İncelemesi" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Tier Validation" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_tier_validation +msgid "Tier Validation (abstract)" +msgstr "Seviye Doğrulaması (özet)" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_accepted +msgid "Tier Validation Accepted Notification" +msgstr "Seviye Doğrulama Kabul Bildirimi" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_rejected +msgid "Tier Validation Rejected Notification" +msgstr "Seviye Doğrulaması Reddedildi Bildirimi" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested +msgid "Tier Validation Requested" +msgstr "Seviye Doğrulaması İstendi" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_restarted +msgid "Tier Validation Restarted" +msgstr "Seviye Doğrulaması Yeniden Başlatıldı" + +#. module: base_tier_validation +#: model:ir.ui.menu,name:base_tier_validation.menu_tier_confirmation +msgid "Tier Validations" +msgstr "Seviye Doğrulamaları" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__to_validate_message +msgid "To Validate Message" +msgstr "Mesajı Doğrulamak İçin" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__todo_by +msgid "Todo By" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Todo by" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_res_users +msgid "User" +msgstr "Kullanıcı" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__valid_reviewer_field_ids +msgid "Valid Reviewer Field" +msgstr "Geçerli İnceleme Alanı" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "Validate" +msgstr "Doğrula" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__validate_reject +msgid "Validate Reject" +msgstr "Reddetmeyi Doğrula" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated +msgid "Validated" +msgstr "Doğrulandı" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated_message +msgid "Validated Message" +msgstr "Doğrulanmış Mesaj" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__review_type +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__review_type +msgid "Validated by" +msgstr "Doğrulayan" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_date +#, python-format +msgid "Validation Date" +msgstr "Doğrulama Tarihi" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_formated_date +msgid "Validation Formated Date" +msgstr "Doğrulama Format Tarihi" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status +msgid "Validation Status" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids +msgid "Validations" +msgstr "Doğrulamalar" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no +msgid "Without validation" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "e.g. Tier Validation for..." +msgstr "ör. Şunun için Seviye Doğrulaması..." + +#~ msgid "Tier" +#~ msgstr "Seviye" diff --git a/base_tier_validation/i18n/zh_CN.po b/base_tier_validation/i18n/zh_CN.po new file mode 100644 index 00000000..f04ca9d3 --- /dev/null +++ b/base_tier_validation/i18n/zh_CN.po @@ -0,0 +1,744 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_tier_validation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-09-24 18:00+0000\n" +"Last-Translator: Dong \n" +"Language-Team: none\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.10\n" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "0 Pending" +msgstr "0 待审批" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" This Record needs to be\n" +" validated." +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" Operation has been\n" +" rejected\n" +" ." +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "" +"\n" +" Operation has been\n" +" validated\n" +" !" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Name" +msgstr "名称" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Bypassed, if previous tier was validated by same reviewer" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review has been requested by %s." +msgstr "%s 发起审批请求。" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was accepted" +msgstr "审批已通过" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was accepted. (%s)" +msgstr "审批已通过。 ( %s )" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was rejected by %(user)s. (%(comment)s)" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A review was rejected by %s." +msgstr "%s 驳回了审批。" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "A validation process is still open for at least one record." +msgstr "当前记录存在待批复的审批流程。" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__active +msgid "Active" +msgstr "有效" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "Activity" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "All" +msgstr "所有" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__group +msgid "Any user in a specific group" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Apply On" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence +msgid "Approval order by the specified sequence number" +msgstr "审批按指定序号排序" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence_bypass +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence_bypass +msgid "Approve Sequence Bypass" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence +msgid "Approve by sequence" +msgstr "按顺序审批" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__approved +msgid "Approved" +msgstr "已批准" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass +msgid "" +"Bypassed (auto validated), if previous tier was validated by same reviewer" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__can_review +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__can_review +msgid "Can Review" +msgstr "可审批" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_review__can_review +msgid "" +"Can review will be marked if the review is pending and the\n" +" approve sequence has been achieved" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard +msgid "Cancel" +msgstr "取消" + +#. module: base_tier_validation +#. odoo-python +#. odoo-javascript +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__comment +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__has_comment +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__has_comment +#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard +#, python-format +msgid "Comment" +msgstr "审批意见" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_comment_wizard +msgid "Comment Wizard" +msgstr "审批意见向导" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__comment +msgid "Comments" +msgstr "审批意见" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__company_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__company_id +msgid "Company" +msgstr "公司" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_uid +msgid "Created by" +msgstr "创建人" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_date +msgid "Created on" +msgstr "创建时间" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_type +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__definition_id +msgid "Definition" +msgstr "定义类型" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_domain +msgid "Definition Domain" +msgstr "定义域" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__name +#, python-format +msgid "Description" +msgstr "说明" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__display_name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__display_name +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__display_name +msgid "Display Name" +msgstr "显示名称" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__definition_type__domain +msgid "Domain" +msgstr "域" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__done_by +msgid "Done By" +msgstr "审批人" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Done by" +msgstr "审批人" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__field +msgid "Field in related record" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_review.py:0 +#, python-format +msgid "Group %s" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "Group By" +msgstr "分组" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__has_comment +msgid "Has Comment" +msgstr "含审批意见" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__id +msgid "ID" +msgstr "ID" + +#. module: base_tier_validation +#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_create +msgid "" +"If set, all possible reviewers will be notified by email when this " +"definition is triggered." +msgstr "如果设置,则触发此定义规则时将通过电子邮件通知所有的审批人。" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard____last_update +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition____last_update +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review____last_update +msgid "Last Modified on" +msgstr "最近修改时间" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_uid +msgid "Last Updated by" +msgstr "最近更新人" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_date +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_date +msgid "Last Updated on" +msgstr "最近更新时间" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search +msgid "Model" +msgstr "模型" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "More Options" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__need_validation +msgid "Need Validation" +msgstr "需要审批" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_definition.py:0 +#, python-format +msgid "New Tier Validation" +msgstr "新建多层级审批" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__next_review +msgid "Next Review" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Next: %s" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#, python-format +msgid "No reviews to do." +msgstr "没有待审批的项目。" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create +msgid "Notify Reviewers on Creation" +msgstr "创建时通知审批人" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Operation has been rejected." +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "Operation has been validated!" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Option to forward a tier validation to other reviewer, and backward" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Option to use python formula to get reviewers and find documents" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending +#, python-format +msgid "Pending" +msgstr "待审批" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id +msgid "Referenced Model" +msgstr "引用模型" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "Reject" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected +msgid "Rejected" +msgstr "已驳回" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected_message +msgid "Rejected Message" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__res_id +msgid "Related Document ID" +msgstr "关联文档 ID" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__model +msgid "Related Document Model" +msgstr "关联文档模型" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons +msgid "Request Validation" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__requested_by +msgid "Requested By" +msgstr "发起人" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Requested by" +msgstr "发起人" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_id +msgid "Res" +msgstr "资源" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_model +msgid "Res Model" +msgstr "资源模型" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons +msgid "Restart Validation" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__review_ids +msgid "Review" +msgstr "审批" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_id +msgid "Reviewer" +msgstr "审批人" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_field_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_field_id +msgid "Reviewer field" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_group_id +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_group_id +msgid "Reviewer group" +msgstr "审批组" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_ids +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__reviewer_ids +msgid "Reviewers" +msgstr "审批者" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_res_users__review_ids +#, python-format +msgid "Reviews" +msgstr "审批" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__sequence +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__sequence +#, python-format +msgid "Sequence" +msgstr "序号" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__individual +msgid "Specific user" +msgstr "指定用户" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__status +#, python-format +msgid "Status" +msgstr "状态" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "The operation is under validation." +msgstr "该操作正在审批中。" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "The review has been reset by %s." +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_review.py:0 +#, python-format +msgid "There are no res.users in the selected field" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "This %s needs to be validated" +msgstr "" + +#. module: base_tier_validation +#. odoo-python +#: code:addons/base_tier_validation/models/tier_validation.py:0 +#, python-format +msgid "" +"This action needs to be validated for at least one record. \n" +"Please request a validation." +msgstr "" +"此操作需要至少对一条记录进行审批。\n" +"请发起审批申请。" + +#. module: base_tier_validation +#: model:ir.actions.act_window,name:base_tier_validation.tier_definition_action +#: model:ir.model,name:base_tier_validation.model_tier_definition +#: model:ir.ui.menu,name:base_tier_validation.menu_tier_definition +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "Tier Definition" +msgstr "层级定义" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_formula +msgid "Tier Formula" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_forward +msgid "Tier Forward & Backward" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_tier_review +msgid "Tier Review" +msgstr "多层级审批" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget +msgid "Tier Validation" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_tier_validation +msgid "Tier Validation (abstract)" +msgstr "多层级审批(抽象)" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_accepted +#, fuzzy +msgid "Tier Validation Accepted Notification" +msgstr "多层级审批(抽象)" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_rejected +#, fuzzy +msgid "Tier Validation Rejected Notification" +msgstr "多层级审批(抽象)" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested +msgid "Tier Validation Requested" +msgstr "" + +#. module: base_tier_validation +#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_restarted +msgid "Tier Validation Restarted" +msgstr "" + +#. module: base_tier_validation +#: model:ir.ui.menu,name:base_tier_validation.menu_tier_confirmation +msgid "Tier Validations" +msgstr "多层级审批" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__to_validate_message +msgid "To Validate Message" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__todo_by +msgid "Todo By" +msgstr "" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#, python-format +msgid "Todo by" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model,name:base_tier_validation.model_res_users +msgid "User" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__valid_reviewer_field_ids +msgid "Valid Reviewer Field" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label +msgid "Validate" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__validate_reject +msgid "Validate Reject" +msgstr "驳回" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated +msgid "Validated" +msgstr "已批准" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated_message +msgid "Validated Message" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__review_type +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__review_type +msgid "Validated by" +msgstr "审批人" + +#. module: base_tier_validation +#. odoo-javascript +#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_date +#, python-format +msgid "Validation Date" +msgstr "审批日期" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_formated_date +msgid "Validation Formated Date" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status +msgid "Validation Status" +msgstr "" + +#. module: base_tier_validation +#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids +msgid "Validations" +msgstr "审批" + +#. module: base_tier_validation +#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no +msgid "Without validation" +msgstr "" + +#. module: base_tier_validation +#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form +msgid "e.g. Tier Validation for..." +msgstr "例如:审批层级用于..." + +#~ msgid "Tier" +#~ msgstr "层级" + +#, python-format +#~ msgid "Activities" +#~ msgstr "活动项目" + +#~ msgid "Users" +#~ msgstr "用户" + +#~ msgid "A review was rejected by {}. ({})" +#~ msgstr "{} 驳回了审批。 ( {} )" + +#~ msgid "Any user in a specific group." +#~ msgstr "指定权限组" + +#~ msgid "Object" +#~ msgstr "对象" + +#~ msgid "Approve Sequence" +#~ msgstr "批准顺序" + +#~ msgid "Formula" +#~ msgstr "公式" + +#~ msgid "Python Expression" +#~ msgstr "Python表达式" diff --git a/base_tier_validation/models/__init__.py b/base_tier_validation/models/__init__.py new file mode 100644 index 00000000..45227c21 --- /dev/null +++ b/base_tier_validation/models/__init__.py @@ -0,0 +1,7 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import tier_definition +from . import tier_review +from . import tier_validation +from . import res_users +from . import res_config_settings diff --git a/base_tier_validation/models/res_config_settings.py b/base_tier_validation/models/res_config_settings.py new file mode 100644 index 00000000..c848cdc4 --- /dev/null +++ b/base_tier_validation/models/res_config_settings.py @@ -0,0 +1,14 @@ +# Copyright 2021 Ecosoft Co., Ltd. (http://ecosoft.co.th) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = "res.config.settings" + + # Activate me back when modules are migrated + + module_base_tier_validation_formula = fields.Boolean(string="Tier Formula") + module_base_tier_validation_forward = fields.Boolean("Tier Forward & Backward") + # module_base_tier_validation_server_action = fields.Boolean("Tier Server Action") + # module_base_tier_validation_report = fields.Boolean("Tier Reports") diff --git a/base_tier_validation/models/res_users.py b/base_tier_validation/models/res_users.py new file mode 100644 index 00000000..59b456e4 --- /dev/null +++ b/base_tier_validation/models/res_users.py @@ -0,0 +1,64 @@ +# Copyright 2019 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models, modules + + +class Users(models.Model): + _inherit = "res.users" + + review_ids = fields.Many2many(string="Reviews", comodel_name="tier.review") + + @api.model + def review_user_count(self): + user_reviews = {} + domain = [ + ("status", "=", "pending"), + ("can_review", "=", True), + ("id", "in", self.env.user.review_ids.ids), + ] + review_groups = self.env["tier.review"].read_group(domain, ["model"], ["model"]) + for review_group in review_groups: + model = review_group["model"] + reviews = self.env["tier.review"].search(review_group.get("__domain")) + if reviews: + records = ( + self.env[model] + .with_user(self.env.user) + .search([("id", "in", reviews.mapped("res_id"))]) + .filtered(lambda x: not x.rejected and x.can_review) + ) + # Excludes any cancelled records depending on the structure of the model + if self.env[model]._state_field in self.env[model]._fields: + records = records.filtered( + lambda x: x[x._state_field] != x._cancel_state + ) + # if len(records): + for rec in records: + record = self.env[model] + user_reviews[model] = { + "id": rec.id, + "name": record._description, + "model": model, + "active_field": "active" in record._fields, + "icon": modules.module.get_module_icon(record._original_module), + "type": "tier_review", + "pending_count": len(records), + } + return list(user_reviews.values()) + + @api.model + def get_reviews(self, data): + review_obj = self.env["tier.review"].with_context(lang=self.env.user.lang) + res = review_obj.search_read([("id", "in", data.get("res_ids"))]) + for r in res: + # Get the translated status value. + r["display_status"] = dict( + review_obj.fields_get("status")["status"]["selection"] + ).get(r.get("status")) + # Convert to datetime timezone + if r["reviewed_date"]: + r["reviewed_date"] = fields.Datetime.context_timestamp( + self, r["reviewed_date"] + ) + return res diff --git a/base_tier_validation/models/tier_definition.py b/base_tier_validation/models/tier_definition.py new file mode 100644 index 00000000..7ef44040 --- /dev/null +++ b/base_tier_validation/models/tier_definition.py @@ -0,0 +1,90 @@ +# Copyright 2017 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models + + +class TierDefinition(models.Model): + _name = "tier.definition" + _description = "Tier Definition" + + @api.model + def _get_default_name(self): + return _("New Tier Validation") + + @api.model + def _get_tier_validation_model_names(self): + res = [] + return res + + name = fields.Char( + string="Description", + required=True, + default=lambda self: self._get_default_name(), + translate=True, + ) + model_id = fields.Many2one( + comodel_name="ir.model", + string="Referenced Model", + domain=lambda self: [("model", "in", self._get_tier_validation_model_names())], + ) + model = fields.Char(related="model_id.model", index=True, store=True) + review_type = fields.Selection( + string="Validated by", + default="individual", + selection=[ + ("individual", "Specific user"), + ("group", "Any user in a specific group"), + ("field", "Field in related record"), + ], + ) + reviewer_id = fields.Many2one(comodel_name="res.users", string="Reviewer") + reviewer_group_id = fields.Many2one( + comodel_name="res.groups", string="Reviewer group" + ) + reviewer_field_id = fields.Many2one( + comodel_name="ir.model.fields", + string="Reviewer field", + domain="[('id', 'in', valid_reviewer_field_ids)]", + ) + valid_reviewer_field_ids = fields.One2many( + comodel_name="ir.model.fields", + compute="_compute_domain_reviewer_field", + ) + definition_type = fields.Selection( + string="Definition", selection=[("domain", "Domain")], default="domain" + ) + definition_domain = fields.Char() + active = fields.Boolean(default=True) + sequence = fields.Integer(default=30) + company_id = fields.Many2one( + comodel_name="res.company", + string="Company", + default=lambda self: self.env.company, + ) + notify_on_create = fields.Boolean( + string="Notify Reviewers on Creation", + help="If set, all possible reviewers will be notified by email when " + "this definition is triggered.", + ) + has_comment = fields.Boolean(string="Comment", default=False) + approve_sequence = fields.Boolean( + string="Approve by sequence", + default=False, + help="Approval order by the specified sequence number", + ) + approve_sequence_bypass = fields.Boolean( + help="Bypassed (auto validated), if previous tier was validated by same reviewer", + ) + + @api.onchange("review_type") + def onchange_review_type(self): + self.reviewer_id = None + self.reviewer_group_id = None + + @api.depends("review_type", "model_id") + def _compute_domain_reviewer_field(self): + for rec in self: + rec.valid_reviewer_field_ids = self.env["ir.model.fields"].search( + [("model", "=", rec.model), ("relation", "=", "res.users")] + ) diff --git a/base_tier_validation/models/tier_review.py b/base_tier_validation/models/tier_review.py new file mode 100644 index 00000000..fa56d86b --- /dev/null +++ b/base_tier_validation/models/tier_review.py @@ -0,0 +1,128 @@ +# Copyright 2017-19 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +import pytz + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class TierReview(models.Model): + _name = "tier.review" + _description = "Tier Review" + + name = fields.Char(related="definition_id.name", readonly=True) + status = fields.Selection( + selection=[ + ("pending", "Pending"), + ("rejected", "Rejected"), + ("approved", "Approved"), + ], + default="pending", + ) + model = fields.Char(string="Related Document Model", index=True) + res_id = fields.Integer(string="Related Document ID", index=True) + definition_id = fields.Many2one(comodel_name="tier.definition") + company_id = fields.Many2one( + related="definition_id.company_id", + store=True, + ) + review_type = fields.Selection(related="definition_id.review_type", readonly=True) + reviewer_id = fields.Many2one(related="definition_id.reviewer_id", readonly=True) + reviewer_group_id = fields.Many2one( + related="definition_id.reviewer_group_id", readonly=True + ) + reviewer_field_id = fields.Many2one( + related="definition_id.reviewer_field_id", readonly=True + ) + reviewer_ids = fields.Many2many( + string="Reviewers", + comodel_name="res.users", + compute="_compute_reviewer_ids", + store=True, + ) + sequence = fields.Integer(string="Tier") + todo_by = fields.Char(compute="_compute_todo_by", store=True) + done_by = fields.Many2one(comodel_name="res.users") + requested_by = fields.Many2one(comodel_name="res.users") + reviewed_date = fields.Datetime(string="Validation Date") + reviewed_formated_date = fields.Char( + string="Validation Formated Date", compute="_compute_reviewed_formated_date" + ) + has_comment = fields.Boolean(related="definition_id.has_comment", readonly=True) + comment = fields.Char(string="Comments") + can_review = fields.Boolean( + compute="_compute_can_review", + store=True, + help="""Can review will be marked if the review is pending and the + approve sequence has been achieved""", + ) + approve_sequence = fields.Boolean( + related="definition_id.approve_sequence", readonly=True + ) + approve_sequence_bypass = fields.Boolean( + related="definition_id.approve_sequence_bypass", readonly=True + ) + + @api.depends_context("tz") + def _compute_reviewed_formated_date(self): + timezone = self._context.get("tz") or self.env.user.partner_id.tz or "UTC" + for review in self: + if not review.reviewed_date: + review.reviewed_formated_date = False + continue + requested_date_utc = pytz.timezone(timezone).localize(review.reviewed_date) + requested_date = requested_date_utc.astimezone(pytz.timezone(timezone)) + review.reviewed_formated_date = requested_date.replace(tzinfo=None) + + @api.depends("definition_id.approve_sequence") + def _compute_can_review(self): + for record in self: + record.can_review = record._can_review_value() + + def _can_review_value(self): + if self.status != "pending": + return False + if not self.approve_sequence: + return True + resource = self.env[self.model].browse(self.res_id) + reviews = resource.review_ids.filtered(lambda r: r.status == "pending") + if not reviews: + return True + sequence = min(reviews.mapped("sequence")) + return self.sequence == sequence + + @api.model + def _get_reviewer_fields(self): + return ["reviewer_id", "reviewer_group_id", "reviewer_group_id.users"] + + @api.depends(lambda self: self._get_reviewer_fields()) + def _compute_reviewer_ids(self): + for rec in self: + rec.reviewer_ids = rec._get_reviewers() + + @api.depends("reviewer_ids") + def _compute_todo_by(self): + """Show by group or by abbrev list of names""" + num_show = 3 # Max number of users to display + for rec in self: + todo_by = False + if rec.reviewer_group_id: + todo_by = _("Group %s") % rec.reviewer_group_id.name + else: + todo_by = ", ".join(rec.reviewer_ids[:num_show].mapped("display_name")) + num_users = len(rec.reviewer_ids) + if num_users > num_show: + todo_by = "{} (and {} more)".format(todo_by, num_users - num_show) + rec.todo_by = todo_by + + def _get_reviewers(self): + if self.reviewer_id or self.reviewer_group_id.users: + return self.reviewer_id + self.reviewer_group_id.users + reviewer_field = self.env["res.users"] + if self.reviewer_field_id: + resource = self.env[self.model].browse(self.res_id) + reviewer_field = getattr(resource, self.reviewer_field_id.name, False) + if not reviewer_field or not reviewer_field._name == "res.users": + raise ValidationError(_("There are no res.users in the selected field")) + return reviewer_field diff --git a/base_tier_validation/models/tier_validation.py b/base_tier_validation/models/tier_validation.py new file mode 100644 index 00000000..e371a185 --- /dev/null +++ b/base_tier_validation/models/tier_validation.py @@ -0,0 +1,594 @@ +# Copyright 2017-19 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from ast import literal_eval + +from lxml import etree + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError +from odoo.tools.misc import frozendict + + +class TierValidation(models.AbstractModel): + _name = "tier.validation" + _description = "Tier Validation (abstract)" + + _tier_validation_buttons_xpath = "/form/header/button[last()]" + _tier_validation_manual_config = True + + _state_field = "state" + _state_from = ["draft"] + _state_to = ["confirmed"] + _cancel_state = "cancel" + + # TODO: step by step validation? + + review_ids = fields.One2many( + comodel_name="tier.review", + inverse_name="res_id", + string="Validations", + domain=lambda self: [("model", "=", self._name)], + auto_join=True, + ) + to_validate_message = fields.Html(compute="_compute_validated_rejected") + # TODO: Delete in v17 in favor of validation_status field + validated = fields.Boolean( + compute="_compute_validated_rejected", search="_search_validated" + ) + validated_message = fields.Html(compute="_compute_validated_rejected") + need_validation = fields.Boolean(compute="_compute_need_validation") + # TODO: Delete in v17 in favor of validation_status field + rejected = fields.Boolean( + compute="_compute_validated_rejected", search="_search_rejected" + ) + rejected_message = fields.Html(compute="_compute_validated_rejected") + # Informative field (used in purchase_tier_validation), will be reliable as of v17 + validation_status = fields.Selection( + selection=[ + ("no", "Without validation"), + ("pending", "Pending"), + ("rejected", "Rejected"), + ("validated", "Validated"), + ], + default="no", + compute="_compute_validation_status", + ) + reviewer_ids = fields.Many2many( + string="Reviewers", + comodel_name="res.users", + compute="_compute_reviewer_ids", + search="_search_reviewer_ids", + ) + can_review = fields.Boolean( + compute="_compute_can_review", search="_search_can_review" + ) + has_comment = fields.Boolean(compute="_compute_has_comment") + next_review = fields.Char(compute="_compute_next_review") + + def _compute_has_comment(self): + for rec in self: + has_comment = rec.review_ids.filtered( + lambda r: r.status == "pending" and (self.env.user in r.reviewer_ids) + ).mapped("has_comment") + rec.has_comment = True in has_comment + + def _get_sequences_to_approve(self, user): + all_reviews = self.review_ids.filtered(lambda r: r.status == "pending") + my_reviews = all_reviews.filtered(lambda r: user in r.reviewer_ids) + # Include all my_reviews with approve_sequence = False + sequences = my_reviews.filtered(lambda r: not r.approve_sequence).mapped( + "sequence" + ) + # Include only my_reviews with approve_sequence = True + approve_sequences = my_reviews.filtered("approve_sequence").mapped("sequence") + if approve_sequences: + my_sequence = min(approve_sequences) + min_sequence = min(all_reviews.mapped("sequence")) + if my_sequence <= min_sequence: + sequences.append(my_sequence) + return sequences + + def _compute_can_review(self): + for rec in self: + rec.can_review = rec._get_sequences_to_approve(self.env.user) + + @api.model + def _search_can_review(self, operator, value): + domain = [ + ("review_ids.reviewer_ids", "=", self.env.user.id), + ("review_ids.status", "=", "pending"), + ("review_ids.can_review", "=", True), + ("rejected", "=", False), + ] + if "active" in self._fields: + domain.append(("active", "in", [True, False])) + res_ids = self.search(domain).filtered("can_review").ids + return [("id", "in", res_ids)] + + @api.depends("review_ids") + def _compute_reviewer_ids(self): + for rec in self: + rec.reviewer_ids = rec.review_ids.filtered( + lambda r: r.status == "pending" + ).mapped("reviewer_ids") + + @api.model + def _search_validated(self, operator, value): + assert operator in ("=", "!="), "Invalid domain operator" + assert value in (True, False), "Invalid domain value" + pos = self.search( + [(self._state_field, "in", self._state_from), ("review_ids", "!=", False)] + ).filtered(lambda r: r.validated == value) + return [("id", "in", pos.ids)] + + @api.model + def _search_rejected(self, operator, value): + assert operator in ("=", "!="), "Invalid domain operator" + assert value in (True, False), "Invalid domain value" + pos = self.search( + [(self._state_field, "in", self._state_from), ("review_ids", "!=", False)] + ).filtered(lambda r: r.rejected == value) + return [("id", "in", pos.ids)] + + @api.model + def _search_reviewer_ids(self, operator, value): + model_operator = "in" + if operator == "=" and value in ("[]", False): + # Search for records that have not yet been through a validation + # process. + operator = "!=" + model_operator = "not in" + reviews = self.env["tier.review"].search( + [ + ("model", "=", self._name), + ("reviewer_ids", operator, value), + ("can_review", "=", True), + ("status", "=", "pending"), + ] + ) + return [("id", model_operator, list(set(reviews.mapped("res_id"))))] + + def _get_to_validate_message_name(self): + return self._description + + def _get_to_validate_message(self): + return ( + """ %s""" + % _("This %s needs to be validated") + % self._get_to_validate_message_name() + ) + + def _get_validated_message(self): + msg = """ %s""" % _( + """Operation has been validated!""" + ) + return self.validated and msg or "" + + def _get_rejected_message(self): + msg = """ %s""" % _( + """Operation has been rejected.""" + ) + return self.rejected and msg or "" + + def _compute_validated_rejected(self): + for rec in self: + rec.validated = self._calc_reviews_validated(rec.review_ids) + rec.validated_message = rec._get_validated_message() + rec.rejected = self._calc_reviews_rejected(rec.review_ids) + rec.rejected_message = rec._get_rejected_message() + rec.to_validate_message = rec._get_to_validate_message() + + def _compute_validation_status(self): + for item in self: + if item.validated and not item.rejected: + item.validation_status = "validated" + elif not item.validated and item.rejected: + item.validation_status = "rejected" + elif ( + not item.validated + and not item.rejected + and any(item.review_ids.filtered(lambda x: x.status == "pending")) + ): + item.validation_status = "pending" + else: + item.validation_status = "no" + + def _compute_next_review(self): + for rec in self: + review = rec.review_ids.sorted("sequence").filtered( + lambda l: l.status == "pending" + )[:1] + rec.next_review = review and _("Next: %s") % review.name or "" + + @api.model + def _calc_reviews_validated(self, reviews): + """Override for different validation policy.""" + if not reviews: + return False + return not any([s != "approved" for s in reviews.mapped("status")]) + + @api.model + def _calc_reviews_rejected(self, reviews): + """Override for different rejection policy.""" + return any([s == "rejected" for s in reviews.mapped("status")]) + + def _compute_need_validation(self): + for rec in self: + if isinstance(rec.id, models.NewId): + rec.need_validation = False + continue + tiers = self.env["tier.definition"].search( + [ + ("model", "=", self._name), + ("company_id", "in", [False] + self.env.company.ids), + ] + ) + valid_tiers = any([rec.evaluate_tier(tier) for tier in tiers]) + rec.need_validation = ( + not rec.review_ids and valid_tiers and rec._check_state_from_condition() + ) + + def evaluate_tier(self, tier): + if tier.definition_domain: + domain = literal_eval(tier.definition_domain) + return self.filtered_domain(domain) + else: + return self + + @api.model + def _get_under_validation_exceptions(self): + """Extend for more field exceptions.""" + return ["message_follower_ids", "access_token"] + + def _check_allow_write_under_validation(self, vals): + """Allow to add exceptions for fields that are allowed to be written + even when the record is under validation.""" + exceptions = self._get_under_validation_exceptions() + for val in vals: + if val not in exceptions: + return False + return True + + def write(self, vals): + for rec in self: + if rec._check_state_conditions(vals): + if rec.need_validation: + # try to validate operation + reviews = rec.request_validation() + rec._validate_tier(reviews) + if not self._calc_reviews_validated(reviews): + raise ValidationError( + _( + "This action needs to be validated for at least " + "one record. \nPlease request a validation." + ) + ) + if rec.review_ids and not rec.validated: + raise ValidationError( + _( + "A validation process is still open for at least " + "one record." + ) + ) + if ( + rec.review_ids + and getattr(rec, self._state_field) in self._state_from + and not vals.get(self._state_field) + in (self._state_to + [self._cancel_state]) + and not rec._check_allow_write_under_validation(vals) + and not rec._context.get("skip_validation_check") + ): + raise ValidationError(_("The operation is under validation.")) + if rec._allow_to_remove_reviews(vals): + rec.mapped("review_ids").unlink() + return super(TierValidation, self).write(vals) + + def _allow_to_remove_reviews(self, values): + """Method for deciding whether the elimination of revisions is necessary.""" + self.ensure_one() + state_to = values.get(self._state_field) + if not state_to: + return False + state_from = self[self._state_field] + # If you change to _cancel_state + if state_to in (self._cancel_state): + return True + # If it is changed to _state_from and it was not in _state_from + if state_to in self._state_from and state_from not in self._state_from: + return True + return False + + def _check_state_from_condition(self): + return self.env.context.get("skip_check_state_condition") or ( + self._state_field in self._fields + and getattr(self, self._state_field) in self._state_from + ) + + def _check_state_conditions(self, vals): + self.ensure_one() + return ( + self._check_state_from_condition() + and vals.get(self._state_field) in self._state_to + ) + + def _validate_tier(self, tiers=False): + self.ensure_one() + tier_reviews = tiers or self.review_ids + user_reviews = tier_reviews.filtered( + lambda r: r.status == "pending" and (self.env.user in r.reviewer_ids) + ) + user_reviews.write( + { + "status": "approved", + "done_by": self.env.user.id, + "reviewed_date": fields.Datetime.now(), + } + ) + for review in user_reviews: + rec = self.env[review.model].browse(review.res_id) + rec._notify_accepted_reviews() + + def _get_requested_notification_subtype(self): + return "base_tier_validation.mt_tier_validation_requested" + + def _get_accepted_notification_subtype(self): + return "base_tier_validation.mt_tier_validation_accepted" + + def _get_rejected_notification_subtype(self): + return "base_tier_validation.mt_tier_validation_rejected" + + def _get_restarted_notification_subtype(self): + return "base_tier_validation.mt_tier_validation_restarted" + + def _notify_accepted_reviews(self): + post = "message_post" + if hasattr(self, post): + # Notify state change + getattr(self.sudo(), post)( + subtype_xmlid=self._get_accepted_notification_subtype(), + body=self._notify_accepted_reviews_body(), + ) + + def _notify_accepted_reviews_body(self): + has_comment = self.review_ids.filtered( + lambda r: (self.env.user in r.reviewer_ids) and r.comment + ) + if has_comment: + comment = has_comment.mapped("comment")[0] + return _("A review was accepted. (%s)") % comment + return _("A review was accepted") + + def _add_comment(self, validate_reject, reviews): + wizard = self.env.ref("base_tier_validation.view_comment_wizard") + return { + "name": _("Comment"), + "type": "ir.actions.act_window", + "view_mode": "form", + "res_model": "comment.wizard", + "views": [(wizard.id, "form")], + "view_id": wizard.id, + "target": "new", + "context": { + "default_res_id": self.id, + "default_res_model": self._name, + "default_review_ids": reviews.ids, + "default_validate_reject": validate_reject, + }, + } + + def validate_tier(self): + self.ensure_one() + sequences = self._get_sequences_to_approve(self.env.user) + reviews = self.review_ids.filtered( + lambda l: l.sequence in sequences or l.approve_sequence_bypass + ) + if self.has_comment: + return self._add_comment("validate", reviews) + self._validate_tier(reviews) + self._update_counter({"review_deleted": True}) + + def reject_tier(self): + self.ensure_one() + sequences = self._get_sequences_to_approve(self.env.user) + reviews = self.review_ids.filtered(lambda l: l.sequence in sequences) + if self.has_comment: + return self._add_comment("reject", reviews) + self._rejected_tier(reviews) + self._update_counter({"review_deleted": True}) + + def _notify_rejected_review_body(self): + has_comment = self.review_ids.filtered( + lambda r: (self.env.user in r.reviewer_ids) and r.comment + ) + if has_comment: + comment = has_comment.mapped("comment")[0] + return _("A review was rejected by %(user)s. (%(comment)s)") % { + "user": self.env.user.name, + "comment": comment, + } + return _("A review was rejected by %s.") % (self.env.user.name) + + def _notify_rejected_review(self): + post = "message_post" + if hasattr(self, post): + # Notify state change + getattr(self.sudo(), post)( + subtype_xmlid=self._get_rejected_notification_subtype(), + body=self._notify_rejected_review_body(), + ) + + def _rejected_tier(self, tiers=False): + self.ensure_one() + tier_reviews = tiers or self.review_ids + user_reviews = tier_reviews.filtered( + lambda r: r.status == "pending" and (self.env.user in r.reviewer_ids) + ) + user_reviews.write( + { + "status": "rejected", + "done_by": self.env.user.id, + "reviewed_date": fields.Datetime.now(), + } + ) + for review in user_reviews: + rec = self.env[review.model].browse(review.res_id) + rec._notify_rejected_review() + + def _notify_requested_review_body(self): + return _("A review has been requested by %s.") % (self.env.user.name) + + def _notify_review_requested(self, tier_reviews): + subscribe = "message_subscribe" + post = "message_post" + if hasattr(self, post) and hasattr(self, subscribe): + for rec in self.sudo(): + users_to_notify = tier_reviews.filtered( + lambda r: r.definition_id.notify_on_create and r.res_id == rec.id + ).mapped("reviewer_ids") + # Subscribe reviewers and notify + if len(users_to_notify) > 0: + getattr(rec, subscribe)( + partner_ids=users_to_notify.mapped("partner_id").ids + ) + getattr(rec, post)( + subtype_xmlid=self._get_requested_notification_subtype(), + body=rec._notify_requested_review_body(), + ) + + def _prepare_tier_review_vals(self, definition, sequence): + return { + "model": self._name, + "res_id": self.id, + "definition_id": definition.id, + "requested_by": self.env.uid, + "sequence": sequence, + } + + def request_validation(self): + td_obj = self.env["tier.definition"] + tr_obj = self.env["tier.review"] + vals_list = [] + for rec in self: + if rec._check_state_from_condition() and rec.need_validation: + tier_definitions = td_obj.search( + [ + ("model", "=", self._name), + ("company_id", "in", [False] + self.env.company.ids), + ], + order="sequence desc", + ) + sequence = 0 + for td in tier_definitions: + if rec.evaluate_tier(td): + sequence += 1 + vals_list.append(rec._prepare_tier_review_vals(td, sequence)) + self._update_counter({"review_created": True}) + created_trs = tr_obj.create(vals_list) + self._notify_review_requested(created_trs) + return created_trs + + def _notify_restarted_review_body(self): + return _("The review has been reset by %s.") % (self.env.user.name) + + def _notify_restarted_review(self): + post = "message_post" + if hasattr(self, post): + getattr(self.sudo(), post)( + subtype_xmlid=self._get_restarted_notification_subtype(), + body=self._notify_restarted_review_body(), + ) + + def restart_validation(self): + for rec in self: + if getattr(rec, self._state_field) in self._state_from: + to_update_counter = ( + rec.mapped("review_ids").filtered(lambda a: a.status == "pending") + and True + or False + ) + rec.mapped("review_ids").unlink() + if to_update_counter: + self._update_counter({"review_deleted": True}) + rec._notify_restarted_review() + + @api.model + def _update_counter(self, review_counter): + self.review_ids._compute_can_review() + notifications = [] + channel = "base.tier.validation/updated" + notifications.append([self.env.user.partner_id, channel, review_counter]) + self.env["bus.bus"]._sendmany(notifications) + + def unlink(self): + self.mapped("review_ids").unlink() + return super().unlink() + + def _add_tier_validation_buttons(self, node, params): + str_element = self.env["ir.qweb"]._render( + "base_tier_validation.tier_validation_buttons", params + ) + new_node = etree.fromstring(str_element) + return new_node + + def _add_tier_validation_label(self, node, params): + str_element = self.env["ir.qweb"]._render( + "base_tier_validation.tier_validation_label", params + ) + new_node = etree.fromstring(str_element) + return new_node + + def _add_tier_validation_reviews(self, node, params): + str_element = self.env["ir.qweb"]._render( + "base_tier_validation.tier_validation_reviews", params + ) + new_node = etree.fromstring(str_element) + return new_node + + @api.model + def get_view(self, view_id=None, view_type="form", **options): + res = super().get_view(view_id=view_id, view_type=view_type, **options) + + View = self.env["ir.ui.view"] + + # Override context for postprocessing + if view_id and res.get("base_model", self._name) != self._name: + View = View.with_context(base_model_name=res["base_model"]) + if view_type == "form" and not self._tier_validation_manual_config: + doc = etree.XML(res["arch"]) + params = { + "state_field": self._state_field, + "state_operator": "not in", + "state_value": self._state_from, + } + all_models = res["models"].copy() + for node in doc.xpath(self._tier_validation_buttons_xpath): + # By default, after the last button of the header + # _add_tier_validation_buttons process + new_node = self._add_tier_validation_buttons(node, params) + new_arch, new_models = View.postprocess_and_fields(new_node, self._name) + new_node = etree.fromstring(new_arch) + for new_element in new_node: + node.addnext(new_element) + for node in doc.xpath("/form/sheet"): + # _add_tier_validation_label process + new_node = self._add_tier_validation_label(node, params) + new_arch, new_models = View.postprocess_and_fields(new_node, self._name) + new_node = etree.fromstring(new_arch) + for new_element in new_node: + node.addprevious(new_element) + # _add_tier_validation_reviews process + new_node = self._add_tier_validation_reviews(node, params) + new_arch, new_models = View.postprocess_and_fields(new_node, self._name) + for model in new_models: + if model in all_models: + continue + if model not in res["models"]: + all_models[model] = new_models[model] + else: + all_models[model] = res["models"][model] + new_node = etree.fromstring(new_arch) + node.append(new_node) + res["arch"] = etree.tostring(doc) + res["models"] = frozendict(all_models) + return res diff --git a/base_tier_validation/readme/CONFIGURE.rst b/base_tier_validation/readme/CONFIGURE.rst new file mode 100644 index 00000000..425bfa0c --- /dev/null +++ b/base_tier_validation/readme/CONFIGURE.rst @@ -0,0 +1,11 @@ +To configure this module, you need to: + +#. Go to *Settings > Technical > Tier Validations > Tier Definition*. +#. Create as many tiers as you want for any model having tier validation + functionality. + +**Note:** + +* If check *Notify Reviewers on Creation*, all possible reviewers will be notified by email when this definition is triggered. +* If check *Comment*, reviewers can comment after click Validate or Reject. +* If check *Approve by sequence*, reviewers is forced to review by specified sequence. diff --git a/base_tier_validation/readme/CONTRIBUTORS.rst b/base_tier_validation/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..4fd44dfa --- /dev/null +++ b/base_tier_validation/readme/CONTRIBUTORS.rst @@ -0,0 +1,7 @@ +* Lois Rilo +* Naglis Jonaitis +* Adrià Gil Sorribes +* Pimolnat Suntian +* Pedro Gonzalez +* Kitti U. +* Saran Lim. diff --git a/base_tier_validation/readme/DESCRIPTION.rst b/base_tier_validation/readme/DESCRIPTION.rst new file mode 100644 index 00000000..5758782c --- /dev/null +++ b/base_tier_validation/readme/DESCRIPTION.rst @@ -0,0 +1,13 @@ +Validating some operations is a common need across different areas in a company +and sometimes it also involves several people and stages in the process. With +this module you will be able to define your custom validation workflows for +any Odoo document. + +This module does not provide a functionality by itself but an abstract model +to implement a validation process based on tiers on other models (e.g. +purchase orders, sales orders, budgets, expenses...). + +**Note:** To be able to use this module in a new model you will need some +development. + +See `purchase_tier_validation `_ as an example of implementation. diff --git a/base_tier_validation/readme/HISTORY.rst b/base_tier_validation/readme/HISTORY.rst new file mode 100644 index 00000000..2443029e --- /dev/null +++ b/base_tier_validation/readme/HISTORY.rst @@ -0,0 +1,91 @@ +14.0.1.0.0 (2020-11-19) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migrated to Odoo 14. + +13.0.1.2.2 (2020-08-30) +~~~~~~~~~~~~~~~~~~~~~~~ + +Fixes: + +- When using approve_sequence option in any tier.definition there can be inconsistencies in the systray notifications +- When using approve_sequence, still not approve only the needed sequence, but also other sequence for the same approver + +12.0.3.3.1 (2019-12-02) +~~~~~~~~~~~~~~~~~~~~~~~ + +Fixes: + +- Show comment on Reviews Table. +- Edit notification with approve_sequence. + +12.0.3.3.0 (2019-11-27) +~~~~~~~~~~~~~~~~~~~~~~~ + +New features: + +- Add comment on Reviews Table. +- Approve by sequence. + +12.0.3.2.1 (2019-11-26) +~~~~~~~~~~~~~~~~~~~~~~~ + +Fixes: + +- Remove message_subscribe_users + +12.0.3.2.0 (2019-11-25) +~~~~~~~~~~~~~~~~~~~~~~~ + +New features: + +- Notify reviewers + +12.0.3.1.0 (2019-07-08) +~~~~~~~~~~~~~~~~~~~~~~~ + +Fixes: + +- Singleton error + +12.0.3.0.0 (2019-12-02) +~~~~~~~~~~~~~~~~~~~~~~~ + +Fixes: + +- Edit Reviews Table + +12.0.2.1.0 (2019-05-29) +~~~~~~~~~~~~~~~~~~~~~~~ + +Fixes: + +- Edit drop-down style width and position + +12.0.2.0.0 (2019-05-28) +~~~~~~~~~~~~~~~~~~~~~~~ + +New features: + +- Pass parameters as functions. +- Add Systray. + +12.0.1.0.0 (2019-02-18) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migrated to Odoo 12. + +11.0.1.0.0 (2018-05-09) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migrated to Odoo 11. + +10.0.1.0.0 (2018-03-26) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migrated to Odoo 10. + +9.0.1.0.0 (2017-12-02) +~~~~~~~~~~~~~~~~~~~~~~~ + +First version. diff --git a/base_tier_validation/readme/ROADMAP.rst b/base_tier_validation/readme/ROADMAP.rst new file mode 100644 index 00000000..767b9b5b --- /dev/null +++ b/base_tier_validation/readme/ROADMAP.rst @@ -0,0 +1,20 @@ +This is the list of known issues for this module. Any proposal for improvement will +be very valuable. + +* **Issue:** + + When using `approve_sequence` option in any tier.definition there can be inconsistencies + in the systray notifications. + + **Description:** + + Field `can_review` in tier.review is used to filter out, in the systray notifications, + the reviews a user can approve. This `can_review` field is updated **in the database** + in method `review_user_count`, this can make it very inconsistent for databases + with a lot of users and recurring updates that can change the expected behavior. + +* **Migration to 15.0:** + + The parameter _tier_validation_manual_config will become False, on 14.0, the default + value is True, as the change is applied after the migration. In order to use the new + behavior we need to modify the value on our expected model. diff --git a/base_tier_validation/security/ir.model.access.csv b/base_tier_validation/security/ir.model.access.csv new file mode 100644 index 00000000..d2427d5a --- /dev/null +++ b/base_tier_validation/security/ir.model.access.csv @@ -0,0 +1,5 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_tier_review,access.tier.review,model_tier_review,,1,1,1,1 +access_tier_definition_all,tier.definition.all,model_tier_definition,,1,0,0,0 +access_tier_definition_settings,tier.definition.settings,model_tier_definition,base.group_system,1,1,1,1 +access_comment_wizard,access.comment.wizard,model_comment_wizard,,1,1,1,1 diff --git a/base_tier_validation/security/tier_validation_security.xml b/base_tier_validation/security/tier_validation_security.xml new file mode 100644 index 00000000..2ad71f57 --- /dev/null +++ b/base_tier_validation/security/tier_validation_security.xml @@ -0,0 +1,19 @@ + + + + Tier Definition multi-company + + + + ['|',('company_id','=',False),('company_id', 'in', company_ids)] + + + + Tier Review multi-company + + + + ['|',('company_id','=',False),('company_id', 'in', company_ids)] + + + diff --git a/base_tier_validation/static/description/icon.png b/base_tier_validation/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 zcmW++2RxMjAAjx~&dlBk9S+%}OXg)AGE&Cb*&}d0jUxM@u(PQx^-s)697TX`ehR4?GS^qbkof1cslKgkU)h65qZ9Oc=ml_0temigYLJfnz{IDzUf>bGs4N!v3=Z3jMq&A#7%rM5eQ#dc?k~! zVpnB`o+K7|Al`Q_U;eD$B zfJtP*jH`siUq~{KE)`jP2|#TUEFGRryE2`i0**z#*^6~AI|YzIWy$Cu#CSLW3q=GA z6`?GZymC;dCPk~rBS%eCb`5OLr;RUZ;D`}um=H)BfVIq%7VhiMr)_#G0N#zrNH|__ zc+blN2UAB0=617@>_u;MPHN;P;N#YoE=)R#i$k_`UAA>WWCcEVMh~L_ zj--gtp&|K1#58Yz*AHCTMziU1Jzt_jG0I@qAOHsk$2}yTmVkBp_eHuY$A9)>P6o~I z%aQ?!(GqeQ-Y+b0I(m9pwgi(IIZZzsbMv+9w{PFtd_<_(LA~0H(xz{=FhLB@(1&qHA5EJw1>>=%q2f&^X>IQ{!GJ4e9U z&KlB)z(84HmNgm2hg2C0>WM{E(DdPr+EeU_N@57;PC2&DmGFW_9kP&%?X4}+xWi)( z;)z%wI5>D4a*5XwD)P--sPkoY(a~WBw;E~AW`Yue4kFa^LM3X`8x|}ZUeMnqr}>kH zG%WWW>3ml$Yez?i%)2pbKPI7?5o?hydokgQyZsNEr{a|mLdt;X2TX(#B1j35xPnPW z*bMSSOauW>o;*=kO8ojw91VX!qoOQb)zHJ!odWB}d+*K?#sY_jqPdg{Sm2HdYzdEx zOGVPhVRTGPtv0o}RfVP;Nd(|CB)I;*t&QO8h zFfekr30S!-LHmV_Su-W+rEwYXJ^;6&3|L$mMC8*bQptyOo9;>Qb9Q9`ySe3%V$A*9 zeKEe+b0{#KWGp$F+tga)0RtI)nhMa-K@JS}2krK~n8vJ=Ngm?R!9G<~RyuU0d?nz# z-5EK$o(!F?hmX*2Yt6+coY`6jGbb7tF#6nHA zuKk=GGJ;ZwON1iAfG$E#Y7MnZVmrY|j0eVI(DN_MNFJmyZ|;w4tf@=CCDZ#5N_0K= z$;R~bbk?}TpfDjfB&aiQ$VA}s?P}xPERJG{kxk5~R`iRS(SK5d+Xs9swCozZISbnS zk!)I0>t=A<-^z(cmSFz3=jZ23u13X><0b)P)^1T_))Kr`e!-pb#q&J*Q`p+B6la%C zuVl&0duN<;uOsB3%T9Fp8t{ED108<+W(nOZd?gDnfNBC3>M8WE61$So|P zVvqH0SNtDTcsUdzaMDpT=Ty0pDHHNL@Z0w$Y`XO z2M-_r1S+GaH%pz#Uy0*w$Vdl=X=rQXEzO}d6J^R6zjM1u&c9vYLvLp?W7w(?np9x1 zE_0JSAJCPB%i7p*Wvg)pn5T`8k3-uR?*NT|J`eS#_#54p>!p(mLDvmc-3o0mX*mp_ zN*AeS<>#^-{S%W<*mz^!X$w_2dHWpcJ6^j64qFBft-o}o_Vx80o0>}Du;>kLts;$8 zC`7q$QI(dKYG`Wa8#wl@V4jVWBRGQ@1dr-hstpQL)Tl+aqVpGpbSfN>5i&QMXfiZ> zaA?T1VGe?rpQ@;+pkrVdd{klI&jVS@I5_iz!=UMpTsa~mBga?1r}aRBm1WS;TT*s0f0lY=JBl66Upy)-k4J}lh=P^8(SXk~0xW=T9v*B|gzIhN z>qsO7dFd~mgxAy4V?&)=5ieYq?zi?ZEoj)&2o)RLy=@hbCRcfT5jigwtQGE{L*8<@Yd{zg;CsL5mvzfDY}P-wos_6PfprFVaeqNE%h zKZhLtcQld;ZD+>=nqN~>GvROfueSzJD&BE*}XfU|H&(FssBqY=hPCt`d zH?@s2>I(|;fcW&YM6#V#!kUIP8$Nkdh0A(bEVj``-AAyYgwY~jB zT|I7Bf@%;7aL7Wf4dZ%VqF$eiaC38OV6oy3Z#TER2G+fOCd9Iaoy6aLYbPTN{XRPz z;U!V|vBf%H!}52L2gH_+j;`bTcQRXB+y9onc^wLm5wi3-Be}U>k_u>2Eg$=k!(l@I zcCg+flakT2Nej3i0yn+g+}%NYb?ta;R?(g5SnwsQ49U8Wng8d|{B+lyRcEDvR3+`O{zfmrmvFrL6acVP%yG98X zo&+VBg@px@i)%o?dG(`T;n*$S5*rnyiR#=wW}}GsAcfyQpE|>a{=$Hjg=-*_K;UtD z#z-)AXwSRY?OPefw^iI+ z)AXz#PfEjlwTes|_{sB?4(O@fg0AJ^g8gP}ex9Ucf*@_^J(s_5jJV}c)s$`Myn|Kd z$6>}#q^n{4vN@+Os$m7KV+`}c%4)4pv@06af4-x5#wj!KKb%caK{A&Y#Rfs z-po?Dcb1({W=6FKIUirH&(yg=*6aLCekcKwyfK^JN5{wcA3nhO(o}SK#!CINhI`-I z1)6&n7O&ZmyFMuNwvEic#IiOAwNkR=u5it{B9n2sAJV5pNhar=j5`*N!Na;c7g!l$ z3aYBqUkqqTJ=Re-;)s!EOeij=7SQZ3Hq}ZRds%IM*PtM$wV z@;rlc*NRK7i3y5BETSKuumEN`Xu_8GP1Ri=OKQ$@I^ko8>H6)4rjiG5{VBM>B|%`&&s^)jS|-_95&yc=GqjNo{zFkw%%HHhS~e=s zD#sfS+-?*t|J!+ozP6KvtOl!R)@@-z24}`9{QaVLD^9VCSR2b`b!KC#o;Ki<+wXB6 zx3&O0LOWcg4&rv4QG0)4yb}7BFSEg~=IR5#ZRj8kg}dS7_V&^%#Do==#`u zpy6{ox?jWuR(;pg+f@mT>#HGWHAJRRDDDv~@(IDw&R>9643kK#HN`!1vBJHnC+RM&yIh8{gG2q zA%e*U3|N0XSRa~oX-3EAneep)@{h2vvd3Xvy$7og(sayr@95+e6~Xvi1tUqnIxoIH zVWo*OwYElb#uyW{Imam6f2rGbjR!Y3`#gPqkv57dB6K^wRGxc9B(t|aYDGS=m$&S!NmCtrMMaUg(c zc2qC=2Z`EEFMW-me5B)24AqF*bV5Dr-M5ig(l-WPS%CgaPzs6p_gnCIvTJ=Y<6!gT zVt@AfYCzjjsMEGi=rDQHo0yc;HqoRNnNFeWZgcm?f;cp(6CNylj36DoL(?TS7eU#+ z7&mfr#y))+CJOXQKUMZ7QIdS9@#-}7y2K1{8)cCt0~-X0O!O?Qx#E4Og+;A2SjalQ zs7r?qn0H044=sDN$SRG$arw~n=+T_DNdSrarmu)V6@|?1-ZB#hRn`uilTGPJ@fqEy zGt(f0B+^JDP&f=r{#Y_wi#AVDf-y!RIXU^0jXsFpf>=Ji*TeqSY!H~AMbJdCGLhC) zn7Rx+sXw6uYj;WRYrLd^5IZq@6JI1C^YkgnedZEYy<&4(z%Q$5yv#Boo{AH8n$a zhb4Y3PWdr269&?V%uI$xMcUrMzl=;w<_nm*qr=c3Rl@i5wWB;e-`t7D&c-mcQl7x! zZWB`UGcw=Y2=}~wzrfLx=uet<;m3~=8I~ZRuzvMQUQdr+yTV|ATf1Uuomr__nDf=X zZ3WYJtHp_ri(}SQAPjv+Y+0=fH4krOP@S&=zZ-t1jW1o@}z;xk8 z(Nz1co&El^HK^NrhVHa-_;&88vTU>_J33=%{if;BEY*J#1n59=07jrGQ#IP>@u#3A z;!q+E1Rj3ZJ+!4bq9F8PXJ@yMgZL;>&gYA0%_Kbi8?S=XGM~dnQZQ!yBSgcZhY96H zrWnU;k)qy`rX&&xlDyA%(a1Hhi5CWkmg(`Gb%m(HKi-7Z!LKGRP_B8@`7&hdDy5n= z`OIxqxiVfX@OX1p(mQu>0Ai*v_cTMiw4qRt3~NBvr9oBy0)r>w3p~V0SCm=An6@3n)>@z!|o-$HvDK z|3D2ZMJkLE5loMKl6R^ez@Zz%S$&mbeoqH5`Bb){Ei21q&VP)hWS2tjShfFtGE+$z zzCR$P#uktu+#!w)cX!lWN1XU%K-r=s{|j?)Akf@q#3b#{6cZCuJ~gCxuMXRmI$nGtnH+-h z+GEi!*X=AP<|fG`1>MBdTb?28JYc=fGvAi2I<$B(rs$;eoJCyR6_bc~p!XR@O-+sD z=eH`-ye})I5ic1eL~TDmtfJ|8`0VJ*Yr=hNCd)G1p2MMz4C3^Mj?7;!w|Ly%JqmuW zlIEW^Ft%z?*|fpXda>Jr^1noFZEwFgVV%|*XhH@acv8rdGxeEX{M$(vG{Zw+x(ei@ zmfXb22}8-?Fi`vo-YVrTH*C?a8%M=Hv9MqVH7H^J$KsD?>!SFZ;ZsvnHr_gn=7acz z#W?0eCdVhVMWN12VV^$>WlQ?f;P^{(&pYTops|btm6aj>_Uz+hqpGwB)vWp0Cf5y< zft8-je~nn?W11plq}N)4A{l8I7$!ks_x$PXW-2XaRFswX_BnF{R#6YIwMhAgd5F9X zGmwdadS6(a^fjHtXg8=l?Rc0Sm%hk6E9!5cLVloEy4eh(=FwgP`)~I^5~pBEWo+F6 zSf2ncyMurJN91#cJTy_u8Y}@%!bq1RkGC~-bV@SXRd4F{R-*V`bS+6;W5vZ(&+I<9$;-V|eNfLa5n-6% z2(}&uGRF;p92eS*sE*oR$@pexaqr*meB)VhmIg@h{uzkk$9~qh#cHhw#>O%)b@+(| z^IQgqzuj~Sk(J;swEM-3TrJAPCq9k^^^`q{IItKBRXYe}e0Tdr=Huf7da3$l4PdpwWDop%^}n;dD#K4s#DYA8SHZ z&1!riV4W4R7R#C))JH1~axJ)RYnM$$lIR%6fIVA@zV{XVyx}C+a-Dt8Y9M)^KU0+H zR4IUb2CJ{Hg>CuaXtD50jB(_Tcx=Z$^WYu2u5kubqmwp%drJ6 z?Fo40g!Qd<-l=TQxqHEOuPX0;^z7iX?Ke^a%XT<13TA^5`4Xcw6D@Ur&VT&CUe0d} z1GjOVF1^L@>O)l@?bD~$wzgf(nxX1OGD8fEV?TdJcZc2KoUe|oP1#=$$7ee|xbY)A zDZq+cuTpc(fFdj^=!;{k03C69lMQ(|>uhRfRu%+!k&YOi-3|1QKB z z?n?eq1XP>p-IM$Z^C;2L3itnbJZAip*Zo0aw2bs8@(s^~*8T9go!%dHcAz2lM;`yp zD=7&xjFV$S&5uDaiScyD?B-i1ze`+CoRtz`Wn+Zl&#s4&}MO{@N!ufrzjG$B79)Y2d3tBk&)TxUTw@QS0TEL_?njX|@vq?Uz(nBFK5Pq7*xj#u*R&i|?7+6# z+|r_n#SW&LXhtheZdah{ZVoqwyT{D>MC3nkFF#N)xLi{p7J1jXlmVeb;cP5?e(=f# zuT7fvjSbjS781v?7{)-X3*?>tq?)Yd)~|1{BDS(pqC zC}~H#WXlkUW*H5CDOo<)#x7%RY)A;ShGhI5s*#cRDA8YgqG(HeKDx+#(ZQ?386dv! zlXCO)w91~Vw4AmOcATuV653fa9R$fyK8ul%rG z-wfS zihugoZyr38Im?Zuh6@RcF~t1anQu7>#lPpb#}4cOA!EM11`%f*07RqOVkmX{p~KJ9 z^zP;K#|)$`^Rb{rnHGH{~>1(fawV0*Z#)}M`m8-?ZJV<+e}s9wE# z)l&az?w^5{)`S(%MRzxdNqrs1n*-=jS^_jqE*5XDrA0+VE`5^*p3CuM<&dZEeCjoz zR;uu_H9ZPZV|fQq`Cyw4nscrVwi!fE6ciMmX$!_hN7uF;jjKG)d2@aC4ropY)8etW=xJvni)8eHi`H$%#zn^WJ5NLc-rqk|u&&4Z6fD_m&JfSI1Bvb?b<*n&sfl0^t z=HnmRl`XrFvMKB%9}>PaA`m-fK6a0(8=qPkWS5bb4=v?XcWi&hRY?O5HdulRi4?fN zlsJ*N-0Qw+Yic@s0(2uy%F@ib;GjXt01Fmx5XbRo6+n|pP(&nodMoap^z{~q ziEeaUT@Mxe3vJSfI6?uLND(CNr=#^W<1b}jzW58bIfyWTDle$mmS(|x-0|2UlX+9k zQ^EX7Nw}?EzVoBfT(-LT|=9N@^hcn-_p&sqG z&*oVs2JSU+N4ZD`FhCAWaS;>|wH2G*Id|?pa#@>tyxX`+4HyIArWDvVrX)2WAOQff z0qyHu&-S@i^MS-+j--!pr4fPBj~_8({~e1bfcl0wI1kaoN>mJL6KUPQm5N7lB(ui1 zE-o%kq)&djzWJ}ob<-GfDlkB;F31j-VHKvQUGQ3sp`CwyGJk_i!y^sD0fqC@$9|jO zOqN!r!8-p==F@ZVP=U$qSpY(gQ0)59P1&t@y?5rvg<}E+GB}26NYPp4f2YFQrQtot5mn3wu_qprZ=>Ig-$ zbW26Ws~IgY>}^5w`vTB(G`PTZaDiGBo5o(tp)qli|NeV( z@H_=R8V39rt5J5YB2Ky?4eJJ#b`_iBe2ot~6%7mLt5t8Vwi^Jy7|jWXqa3amOIoRb zOr}WVFP--DsS`1WpN%~)t3R!arKF^Q$e12KEqU36AWwnCBICpH4XCsfnyrHr>$I$4 z!DpKX$OKLWarN7nv@!uIA+~RNO)l$$w}p(;b>mx8pwYvu;dD_unryX_NhT8*Tj>BTrTTL&!?O+%Rv;b?B??gSzdp?6Uug9{ zd@V08Z$BdI?fpoCS$)t4mg4rT8Q_I}h`0d-vYZ^|dOB*Q^S|xqTV*vIg?@fVFSmMpaw0qtTRbx} z({Pg?#{2`sc9)M5N$*N|4;^t$+QP?#mov zGVC@I*lBVrOU-%2y!7%)fAKjpEFsgQc4{amtiHb95KQEwvf<(3T<9-Zm$xIew#P22 zc2Ix|App^>v6(3L_MCU0d3W##AB0M~3D00EWoKZqsJYT(#@w$Y_H7G22M~ApVFTRHMI_3be)Lkn#0F*V8Pq zc}`Cjy$bE;FJ6H7p=0y#R>`}-m4(0F>%@P|?7fx{=R^uFdISRnZ2W_xQhD{YuR3t< z{6yxu=4~JkeA;|(J6_nv#>Nvs&FuLA&PW^he@t(UwFFE8)|a!R{`E`K`i^ZnyE4$k z;(749Ix|oi$c3QbEJ3b~D_kQsPz~fIUKym($a_7dJ?o+40*OLl^{=&oq$<#Q(yyrp z{J-FAniyAw9tPbe&IhQ|a`DqFTVQGQ&Gq3!C2==4x{6EJwiPZ8zub-iXoUtkJiG{} zPaR&}_fn8_z~(=;5lD-aPWD3z8PZS@AaUiomF!G8I}Mf>e~0g#BelA-5#`cj;O5>N Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/base_tier_validation/static/description/index.html b/base_tier_validation/static/description/index.html new file mode 100644 index 00000000..9e3770f0 --- /dev/null +++ b/base_tier_validation/static/description/index.html @@ -0,0 +1,583 @@ + + + + + + +Base Tier Validation + + + +
+

Base Tier Validation

+ + +

Mature License: AGPL-3 OCA/server-ux Translate me on Weblate Try me on Runboat

+

Validating some operations is a common need across different areas in a company +and sometimes it also involves several people and stages in the process. With +this module you will be able to define your custom validation workflows for +any Odoo document.

+

This module does not provide a functionality by itself but an abstract model +to implement a validation process based on tiers on other models (e.g. +purchase orders, sales orders, budgets, expenses…).

+

Note: To be able to use this module in a new model you will need some +development.

+

See purchase_tier_validation as an example of implementation.

+

Table of contents

+ +
+

Configuration

+

To configure this module, you need to:

+
    +
  1. Go to Settings > Technical > Tier Validations > Tier Definition.
  2. +
  3. Create as many tiers as you want for any model having tier validation +functionality.
  4. +
+

Note:

+
    +
  • If check Notify Reviewers on Creation, all possible reviewers will be notified by email when this definition is triggered.
  • +
  • If check Comment, reviewers can comment after click Validate or Reject.
  • +
  • If check Approve by sequence, reviewers is forced to review by specified sequence.
  • +
+
+
+

Known issues / Roadmap

+

This is the list of known issues for this module. Any proposal for improvement will +be very valuable.

+
    +
  • Issue:

    +

    When using approve_sequence option in any tier.definition there can be inconsistencies +in the systray notifications.

    +

    Description:

    +

    Field can_review in tier.review is used to filter out, in the systray notifications, +the reviews a user can approve. This can_review field is updated in the database +in method review_user_count, this can make it very inconsistent for databases +with a lot of users and recurring updates that can change the expected behavior.

    +
  • +
  • Migration to 15.0:

    +

    The parameter _tier_validation_manual_config will become False, on 14.0, the default +value is True, as the change is applied after the migration. In order to use the new +behavior we need to modify the value on our expected model.

    +
  • +
+
+
+

Changelog

+
+

14.0.1.0.0 (2020-11-19)

+

Migrated to Odoo 14.

+
+
+

13.0.1.2.2 (2020-08-30)

+

Fixes:

+
    +
  • When using approve_sequence option in any tier.definition there can be inconsistencies in the systray notifications
  • +
  • When using approve_sequence, still not approve only the needed sequence, but also other sequence for the same approver
  • +
+
+
+

12.0.3.3.1 (2019-12-02)

+

Fixes:

+
    +
  • Show comment on Reviews Table.
  • +
  • Edit notification with approve_sequence.
  • +
+
+
+

12.0.3.3.0 (2019-11-27)

+

New features:

+
    +
  • Add comment on Reviews Table.
  • +
  • Approve by sequence.
  • +
+
+
+

12.0.3.2.1 (2019-11-26)

+

Fixes:

+
    +
  • Remove message_subscribe_users
  • +
+
+
+

12.0.3.2.0 (2019-11-25)

+

New features:

+
    +
  • Notify reviewers
  • +
+
+
+

12.0.3.1.0 (2019-07-08)

+

Fixes:

+
    +
  • Singleton error
  • +
+
+
+

12.0.3.0.0 (2019-12-02)

+

Fixes:

+
    +
  • Edit Reviews Table
  • +
+
+
+

12.0.2.1.0 (2019-05-29)

+

Fixes:

+
    +
  • Edit drop-down style width and position
  • +
+
+
+

12.0.2.0.0 (2019-05-28)

+

New features:

+
    +
  • Pass parameters as functions.
  • +
  • Add Systray.
  • +
+
+
+

12.0.1.0.0 (2019-02-18)

+

Migrated to Odoo 12.

+
+
+

11.0.1.0.0 (2018-05-09)

+

Migrated to Odoo 11.

+
+
+

10.0.1.0.0 (2018-03-26)

+

Migrated to Odoo 10.

+
+
+

9.0.1.0.0 (2017-12-02)

+

First version.

+
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • ForgeFlow
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

LoisRForgeFlow

+

This module is part of the OCA/server-ux project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/base_tier_validation/static/src/js/ir_model.esm.js b/base_tier_validation/static/src/js/ir_model.esm.js new file mode 100644 index 00000000..fdc278f0 --- /dev/null +++ b/base_tier_validation/static/src/js/ir_model.esm.js @@ -0,0 +1,29 @@ +/** @odoo-module **/ + +import {attr, one} from "@mail/model/model_field"; +import {registerModel} from "@mail/model/model_core"; + +registerModel({ + name: "ir.model.review", + fields: { + /** + * Determines the name of the views that are available for this model. + */ + availableWebViews: attr({ + compute() { + return ["kanban", "list", "form", "activity"]; + }, + }), + reviewGroup: one("ReviewGroup", { + inverse: "irModel", + }), + iconUrl: attr(), + id: attr({ + identifying: true, + }), + model: attr({ + required: true, + }), + name: attr(), + }, +}); diff --git a/base_tier_validation/static/src/js/main.esm.js b/base_tier_validation/static/src/js/main.esm.js new file mode 100644 index 00000000..c0247713 --- /dev/null +++ b/base_tier_validation/static/src/js/main.esm.js @@ -0,0 +1,7 @@ +/** @odoo-module **/ + +import {registry} from "@web/core/registry"; +import {systrayService} from "@base_tier_validation/js/systray_service.esm"; + +const serviceRegistry = registry.category("services"); +serviceRegistry.add("review_systray_service", systrayService); diff --git a/base_tier_validation/static/src/js/review_group_view.esm.js b/base_tier_validation/static/src/js/review_group_view.esm.js new file mode 100644 index 00000000..8266813d --- /dev/null +++ b/base_tier_validation/static/src/js/review_group_view.esm.js @@ -0,0 +1,51 @@ +/** @odoo-module **/ + +import {one} from "@mail/model/model_field"; +import {registerModel} from "@mail/model/model_core"; + +registerModel({ + name: "ReviewGroupView", + recordMethods: { + /** + * @param {MouseEvent} ev + */ + onClickFilterButton(ev) { + this.reviewMenuViewOwner.update({isOpen: false}); + // Fetch the data from the button otherwise fetch the ones from the parent (.o_ActivityMenuView_activityGroup). + const data = _.extend({}, $(ev.currentTarget).data(), $(ev.target).data()); + const context = {}; + var domain = [["can_review", "=", true]]; + console.log(data); + if (data.active_field) { + domain.push(["active", "in", [true, false]]); + } + + this.env.services.action.doAction( + { + context, + name: data.model_name, + res_model: data.res_model, + search_view_id: [false], + type: "ir.actions.act_window", + domain: domain, + views: this.reviewGroup.irModel.availableWebViews.map( + (viewName) => [false, viewName] + ), + }, + { + clearBreadcrumbs: true, + } + ); + }, + }, + fields: { + reviewGroup: one("ReviewGroup", { + identifying: true, + inverse: "reviewGroupViews", + }), + reviewMenuViewOwner: one("ReviewerMenuView", { + identifying: true, + inverse: "reviewGroupViews", + }), + }, +}); diff --git a/base_tier_validation/static/src/js/review_groups.esm.js b/base_tier_validation/static/src/js/review_groups.esm.js new file mode 100644 index 00000000..1bee17b2 --- /dev/null +++ b/base_tier_validation/static/src/js/review_groups.esm.js @@ -0,0 +1,52 @@ +/** @odoo-module **/ + +import {attr, many, one} from "@mail/model/model_field"; +import {registerModel} from "@mail/model/model_core"; + +registerModel({ + name: "ReviewGroup", + modelMethods: { + convertData(data) { + return { + domain: data.domain, + irModel: { + iconUrl: data.icon, + id: data.id, + model: data.model, + name: data.name, + }, + pending_count: data.pending_count, + }; + }, + }, + recordMethods: { + /** + * @private + */ + _onChangePendingCount() { + if (this.type === "tier_review" && this.pending_count === 0) { + this.delete(); + } + }, + }, + fields: { + reviewGroupViews: many("ReviewGroupView", { + inverse: "reviewGroup", + }), + domain: attr(), + irModel: one("ir.model.review", { + identifying: true, + inverse: "reviewGroup", + }), + pending_count: attr({ + default: 0, + }), + type: attr(), + }, + onChanges: [ + { + dependencies: ["pending_count", "type"], + methodName: "_onChangePendingCount", + }, + ], +}); diff --git a/base_tier_validation/static/src/js/review_notification_handler.esm.js b/base_tier_validation/static/src/js/review_notification_handler.esm.js new file mode 100644 index 00000000..c7f98bb2 --- /dev/null +++ b/base_tier_validation/static/src/js/review_notification_handler.esm.js @@ -0,0 +1,26 @@ +/** @odoo-module **/ + +import {decrement, increment} from "@mail/model/model_field_command"; +import {registerPatch} from "@mail/model/model_core"; + +registerPatch({ + name: "MessagingNotificationHandler", + recordMethods: { + /** + * @override + */ + async _handleNotification(message) { + if (message.type === "base.tier.validation/updated") { + for (const reviewMenuView of this.messaging.models.ReviewerMenuView.all()) { + if (message.payload.review_created) { + reviewMenuView.update({extraCount: increment()}); + } + if (message.payload.review_deleted) { + reviewMenuView.update({extraCount: decrement()}); + } + } + } + return this._super(message); + }, + }, +}); diff --git a/base_tier_validation/static/src/js/reviewer_menu_container.esm.js b/base_tier_validation/static/src/js/reviewer_menu_container.esm.js new file mode 100644 index 00000000..cfe23bd9 --- /dev/null +++ b/base_tier_validation/static/src/js/reviewer_menu_container.esm.js @@ -0,0 +1,25 @@ +/** @odoo-module **/ + +// ensure components are registered beforehand. +import {getMessagingComponent} from "@mail/utils/messaging_component"; + +const {Component} = owl; + +export class ReviewerMenuContainer extends Component { + /** + * @override + */ + setup() { + super.setup(); + this.env.services.messaging.modelManager.messagingCreatedPromise.then(() => { + this.reviewerMenuView = + this.env.services.messaging.modelManager.messaging.models.ReviewerMenuView.insert(); + this.render(); + }); + } +} + +Object.assign(ReviewerMenuContainer, { + components: {ReviewerMenuView: getMessagingComponent("ReviewerMenuView")}, + template: "base_tier_validation.ReviewerMenuContainer", +}); diff --git a/base_tier_validation/static/src/js/reviewer_menu_view.esm.js b/base_tier_validation/static/src/js/reviewer_menu_view.esm.js new file mode 100644 index 00000000..17931141 --- /dev/null +++ b/base_tier_validation/static/src/js/reviewer_menu_view.esm.js @@ -0,0 +1,29 @@ +/** @odoo-module **/ + +import {registerMessagingComponent} from "@mail/utils/messaging_component"; +import {useComponentToModel} from "@mail/component_hooks/use_component_to_model"; + +const {Component} = owl; + +export class ReviewerMenuView extends Component { + /** + * @override + */ + setup() { + super.setup(); + useComponentToModel({fieldName: "component"}); + } + /** + * @returns {ReviewerMenuView} + */ + get reviewerMenuView() { + return this.props.record; + } +} + +Object.assign(ReviewerMenuView, { + props: {record: Object}, + template: "base_tier_validation.ReviewerMenuView", +}); + +registerMessagingComponent(ReviewerMenuView); diff --git a/base_tier_validation/static/src/js/systray.esm.js b/base_tier_validation/static/src/js/systray.esm.js new file mode 100644 index 00000000..5380adb0 --- /dev/null +++ b/base_tier_validation/static/src/js/systray.esm.js @@ -0,0 +1,104 @@ +/** @odoo-module **/ + +import {attr, many} from "@mail/model/model_field"; +import {registerModel} from "@mail/model/model_core"; + +import session from "web.session"; + +registerModel({ + name: "ReviewerMenuView", + lifecycleHooks: { + _created() { + this.fetchData(); + document.addEventListener("click", this._onClickCaptureGlobal, true); + }, + _willDelete() { + document.removeEventListener("click", this._onClickCaptureGlobal, true); + }, + }, + recordMethods: { + close() { + this.update({isOpen: false}); + }, + async fetchData() { + const data = await this.messaging.rpc({ + model: "res.users", + method: "review_user_count", + args: [], + kwargs: {context: session.user_context}, + }); + + this.update({ + reviewGroups: data.map((vals) => + this.messaging.models.ReviewGroup.convertData(vals) + ), + extraCount: 0, + }); + }, + /** + * @param {MouseEvent} ev + */ + onClickDropdownToggle(ev) { + ev.preventDefault(); + if (this.isOpen) { + this.update({isOpen: false}); + } else { + this.update({isOpen: true}); + this.fetchData(); + } + }, + /** + * Closes the menu when clicking outside, if appropriate. + * + * @private + * @param {MouseEvent} ev + */ + _onClickCaptureGlobal(ev) { + if (!this.exists()) { + return; + } + if (!this.component || !this.component.root.el) { + return; + } + if (this.component.root.el.contains(ev.target)) { + return; + } + this.close(); + }, + }, + fields: { + reviewGroups: many("ReviewGroup", { + sort: [["smaller-first", "irModel.id"]], + }), + reviewGroupViews: many("ReviewGroupView", { + compute() { + return this.reviewGroups.map((reviewGroup) => { + return { + reviewGroup, + }; + }); + }, + inverse: "reviewMenuViewOwner", + }), + component: attr(), + counter: attr({ + compute() { + return this.reviewGroups.reduce( + (total, group) => total + group.pending_count, + this.extraCount + ); + }, + }), + /** + * Determines the number of activities that have been added in the + * system but not yet taken into account in each activity group counter. + * + * @deprecated this field should be replaced by directly updating the + * counter of each group. + */ + extraCount: attr(), + isOpen: attr({ + default: false, + }), + }, +}); diff --git a/base_tier_validation/static/src/js/systray_service.esm.js b/base_tier_validation/static/src/js/systray_service.esm.js new file mode 100644 index 00000000..78a1101c --- /dev/null +++ b/base_tier_validation/static/src/js/systray_service.esm.js @@ -0,0 +1,17 @@ +/** @odoo-module **/ + +import {ReviewerMenuContainer} from "./reviewer_menu_container.esm"; + +import {registry} from "@web/core/registry"; + +const systrayRegistry = registry.category("systray"); + +export const systrayService = { + start() { + systrayRegistry.add( + "base_tier_validation.ReviewerMenu", + {Component: ReviewerMenuContainer}, + {sequence: 99} + ); + }, +}; diff --git a/base_tier_validation/static/src/js/tier_review_widget.esm.js b/base_tier_validation/static/src/js/tier_review_widget.esm.js new file mode 100644 index 00000000..a5ab0aa5 --- /dev/null +++ b/base_tier_validation/static/src/js/tier_review_widget.esm.js @@ -0,0 +1,36 @@ +/** @odoo-module **/ + +import {registry} from "@web/core/registry"; + +import {useService} from "@web/core/utils/hooks"; + +const {Component, useState} = owl; + +export class ReviewsTable extends Component { + setup() { + this.docs = useState({}); + this.collapse = false; + this.orm = useService("orm"); + this.reviews = []; + } + _getReviewData() { + const records = this.env.model.root.data.review_ids.records; + const reviews = []; + for (var i = 0; i < records.length; i++) { + reviews.push(records[i].data); + } + return reviews; + } + onToggleCollapse(ev) { + var $panelHeading = $(ev.currentTarget).closest(".panel-heading"); + if (this.collapse) { + $panelHeading.next("div#collapse1").hide(); + } else { + $panelHeading.next("div#collapse1").show(); + } + this.collapse = !this.collapse; + } +} + +ReviewsTable.template = "base_tier_validation.Collapse"; +registry.category("fields").add("form.tier_validation", ReviewsTable); diff --git a/base_tier_validation/static/src/scss/review.scss b/base_tier_validation/static/src/scss/review.scss new file mode 100644 index 00000000..4342206d --- /dev/null +++ b/base_tier_validation/static/src/scss/review.scss @@ -0,0 +1,41 @@ +ul.o_review { + min-width: 600px; + max-width: 800px; +} + +.panel-group { + min-height: auto !important; + margin-top: -6px !important; + padding: 16px 16px 8px 16px !important; +} + +.panel-heading { + background-color: initial !important; +} + +.panel { + border: 0px !important; +} + +.panel-body { + overflow-y: hidden; + overflow-x: auto; +} + +.panel-title > a, +.panel-title > a:active { + display: block; +} + +.panel-heading a:before { + font-family: FontAwesome; + content: "\f0d7"; + float: right; + transition: all 0.5s; +} + +.panel-heading.active a:before { + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + transform: rotate(180deg); +} diff --git a/base_tier_validation/static/src/scss/systray.scss b/base_tier_validation/static/src/scss/systray.scss new file mode 100644 index 00000000..82fd85e5 --- /dev/null +++ b/base_tier_validation/static/src/scss/systray.scss @@ -0,0 +1,143 @@ +// Navbar icon and dropdown +.o_tier_navbar_item { + > a { + opacity: 1; + > i { + font-size: larger; + } + } + &.o_no_notification > a { + opacity: 0.5; + > i { + transform: translateY(0px); + } + .o_notification_counter { + display: none; + } + } + &.show .o_tier_systray_dropdown { + display: flex; + flex-flow: column nowrap; + } + .o_notification_counter { + margin-top: -0.8rem; + margin-right: 0; + margin-left: -0.6rem; + background: #00a09d; + color: white; + vertical-align: super; + font-size: 0.7em; + } + .o_tier_systray_dropdown { + direction: ltr; + width: 350px; + padding: 0; + + .o_spinner { + display: flex; + align-items: center; + justify-content: center; + color: $o-main-text-color; + height: 50px; + } + + .o_tier_systray_dropdown_top { + display: flex; + flex: 0 0 auto; + justify-content: space-between; + border-bottom: 1px solid gray("400"); + box-shadow: 0 0 2px gray("400"); + .o_filter_button, + .o_new_message { + padding: 5px; + } + .o_filter_button { + color: $o-main-color-muted; + &:hover, + &.active { + color: $o-brand-primary; + } + &.active { + cursor: default; + font-weight: bold; + } + } + } + + .o_tier_systray_dropdown_items { + flex: 0 1 auto; + max-height: 400px; + min-height: 50px; + overflow-y: auto; + + @include media-breakpoint-up(md) { + .o_tier_preview { + min-height: 50px; + padding: 5px; + .o_tier_preview_image { + width: 40px; + height: 40px; + } + .o_preview_info { + margin-left: 10px; + .o_preview_title { + .o_last_message_date { + padding-top: 2px; + font-size: x-small; + margin-left: 10px; + } + } + } + } + } + } + .o_activity_filter_button { + padding: 2px; + } + .o_no_activity { + cursor: initial; + align-items: center; + color: grey; + opacity: 0.5; + padding: 3px; + } + } +} + +.o_no_thread_window .o_tier_systray_dropdown .o_new_message { + display: none; // hide 'new message' button if chat windows are disabled +} + +// Mobile rules +// Goal: mock the design of Discuss in mobile +@include media-breakpoint-down(sm) { + .o_tier_systray_item { + .o_notification_counter { + top: 10%; + } + .o_tier_systray_dropdown { + position: relative; + .o_tier_systray_dropdown_top { + padding: 5px; + } + .o_tier_systray_mobile_header { + padding: 5px; + height: 44px; + border-bottom: 1px solid #ebebeb; + box-shadow: 0 0 2px gray("400"); + } + .o_tier_systray_dropdown_items { + max-height: none; + padding-bottom: 52px; // leave space for tabs + } + .o_tier_mobile_tabs { + position: fixed; + bottom: 0px; + left: 0px; + right: 0px; + background-color: white; + color: $o-main-text-color; + } + } + } +} diff --git a/base_tier_validation/static/src/xml/reviewer_menu_container.xml b/base_tier_validation/static/src/xml/reviewer_menu_container.xml new file mode 100644 index 00000000..358ff6bc --- /dev/null +++ b/base_tier_validation/static/src/xml/reviewer_menu_container.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/base_tier_validation/static/src/xml/systray.xml b/base_tier_validation/static/src/xml/systray.xml new file mode 100644 index 00000000..9ceac43b --- /dev/null +++ b/base_tier_validation/static/src/xml/systray.xml @@ -0,0 +1,97 @@ + + + + + + diff --git a/base_tier_validation/static/src/xml/tier_review_template.xml b/base_tier_validation/static/src/xml/tier_review_template.xml new file mode 100644 index 00000000..75da99fb --- /dev/null +++ b/base_tier_validation/static/src/xml/tier_review_template.xml @@ -0,0 +1,119 @@ + + + +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SequenceRequested byDescriptionStatusTodo byDone byValidation DateComment
+ + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
diff --git a/base_tier_validation/templates/tier_validation_templates.xml b/base_tier_validation/templates/tier_validation_templates.xml new file mode 100644 index 00000000..cac5c2f2 --- /dev/null +++ b/base_tier_validation/templates/tier_validation_templates.xml @@ -0,0 +1,105 @@ + + + + + + diff --git a/base_tier_validation/tests/__init__.py b/base_tier_validation/tests/__init__.py new file mode 100644 index 00000000..c5d19b19 --- /dev/null +++ b/base_tier_validation/tests/__init__.py @@ -0,0 +1,4 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import common +from . import test_tier_validation diff --git a/base_tier_validation/tests/common.py b/base_tier_validation/tests/common.py new file mode 100644 index 00000000..b1258c39 --- /dev/null +++ b/base_tier_validation/tests/common.py @@ -0,0 +1,92 @@ +# Copyright 2018-19 ForgeFlow S.L. (https://www.forgeflow.com) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). + +from odoo_test_helper import FakeModelLoader + +from odoo.tests import common + +from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT + + +class CommonTierValidation(common.TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) + cls.loader = FakeModelLoader(cls.env, cls.__module__) + cls.loader.backup_registry() + from .tier_validation_tester import ( + TierDefinition, + TierValidationTester, + TierValidationTester2, + ) + + cls.loader.update_registry( + (TierValidationTester, TierValidationTester2, TierDefinition) + ) + + cls.test_model = cls.env[TierValidationTester._name] + cls.test_model_2 = cls.env[TierValidationTester2._name] + + cls.tester_model = cls.env["ir.model"].search( + [("model", "=", "tier.validation.tester")] + ) + cls.tester_model_2 = cls.env["ir.model"].search( + [("model", "=", "tier.validation.tester2")] + ) + + # Access record: + cls.env["ir.model.access"].create( + { + "name": "access.tester", + "model_id": cls.tester_model.id, + "perm_read": 1, + "perm_write": 1, + "perm_create": 1, + "perm_unlink": 1, + } + ) + cls.env["ir.model.access"].create( + { + "name": "access.tester2", + "model_id": cls.tester_model_2.id, + "perm_read": 1, + "perm_write": 1, + "perm_create": 1, + "perm_unlink": 1, + } + ) + + # Create users: + group_ids = cls.env.ref("base.group_system").ids + cls.test_user_1 = cls.env["res.users"].create( + { + "name": "John", + "login": "test1", + "email": "john@yourcompany.example.com", + "groups_id": [(6, 0, group_ids)], + } + ) + cls.test_user_2 = cls.env["res.users"].create( + {"name": "Mike", "login": "test2", "email": "mike@yourcompany.example.com"} + ) + + # Create tier definitions: + cls.tier_def_obj = cls.env["tier.definition"] + cls.tier_def_obj.create( + { + "model_id": cls.tester_model.id, + "review_type": "individual", + "reviewer_id": cls.test_user_1.id, + "definition_domain": "[('test_field', '>', 1.0)]", + "sequence": 30, + } + ) + + cls.test_record = cls.test_model.create({"test_field": 2.5}) + cls.test_record_2 = cls.test_model_2.create({"test_field": 2.5}) + + @classmethod + def tearDownClass(cls): + cls.loader.restore_registry() + return super(CommonTierValidation, cls).tearDownClass() diff --git a/base_tier_validation/tests/test_tier_validation.py b/base_tier_validation/tests/test_tier_validation.py new file mode 100644 index 00000000..4cbd9613 --- /dev/null +++ b/base_tier_validation/tests/test_tier_validation.py @@ -0,0 +1,535 @@ +# Copyright 2018-19 ForgeFlow S.L. (https://www.forgeflow.com) +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). + +from lxml import etree + +from odoo.exceptions import ValidationError +from odoo.tests.common import Form, tagged + +from .common import CommonTierValidation + + +@tagged("post_install", "-at_install") +class TierTierValidation(CommonTierValidation): + def test_01_auto_validation(self): + """When the user can validate all future reviews, it is not needed + to request a validation, the action can be done straight forward.""" + self.test_record.with_user(self.test_user_1.id).action_confirm() + self.assertEqual(self.test_record.state, "confirmed") + + def test_02_no_auto_validation(self): + """User with no right to validate future reviews must request a + validation.""" + with self.assertRaises(ValidationError): + self.test_record.with_user(self.test_user_2.id).action_confirm() + + def test_03_request_validation_approved(self): + """User 2 request a validation and user 1 approves it.""" + self.assertFalse(self.test_record.review_ids) + reviews = self.test_record.with_user(self.test_user_2.id).request_validation() + self.assertTrue(reviews) + record = self.test_record.with_user(self.test_user_1.id) + record.invalidate_model() + record.validate_tier() + self.assertTrue(record.validated) + + def test_04_request_validation_rejected(self): + """Request validation, rejection and reset.""" + self.assertFalse(self.test_record.review_ids) + reviews = self.test_record.with_user(self.test_user_2.id).request_validation() + self.assertTrue(reviews) + record = self.test_record.with_user(self.test_user_1.id) + record.invalidate_model() + record.reject_tier() + self.assertTrue(record.review_ids) + self.assertTrue(record.rejected) + record.restart_validation() + self.assertFalse(record.review_ids) + + def test_05_under_validation(self): + """Write is forbidden in a record under validation.""" + self.assertFalse(self.test_record.review_ids) + reviews = self.test_record.with_user(self.test_user_2.id).request_validation() + self.assertTrue(reviews) + record = self.test_record.with_user(self.test_user_1.id) + record.invalidate_model() + with self.assertRaises(ValidationError): + record.write({"test_field": 0.5}) + + def test_06_validation_process_open(self): + """Operation forbidden while a validation process is open.""" + self.assertFalse(self.test_record.review_ids) + reviews = self.test_record.with_user(self.test_user_2.id).request_validation() + self.assertTrue(reviews) + record = self.test_record.with_user(self.test_user_1.id) + record.invalidate_model() + with self.assertRaises(ValidationError): + record.action_confirm() + + def test_07_search_reviewers(self): + """Test search methods.""" + reviews = self.test_record.with_user(self.test_user_2.id).request_validation() + self.assertTrue(reviews) + record = self.test_record.with_user(self.test_user_1.id) + record.invalidate_model() + self.assertIn(self.test_user_1, record.reviewer_ids) + res = self.test_model.search([("reviewer_ids", "in", self.test_user_1.id)]) + self.assertTrue(res) + + def test_08_search_validated(self): + """Test for the validated search method.""" + self.test_record.with_user(self.test_user_2.id).request_validation() + self.test_record.invalidate_model() + res = self.test_model.with_user(self.test_user_1.id).search( + [("validated", "=", False)] + ) + self.assertTrue(res) + + def test_09_search_rejected(self): + """Test for the rejected search method.""" + self.test_record.with_user(self.test_user_2.id).request_validation() + self.test_record.invalidate_model() + res = self.test_model.with_user(self.test_user_1.id).search( + [("rejected", "=", False)] + ) + self.assertTrue(res) + + def test_10_systray_counter(self): + # Create new test record + test_record = self.test_model.create({"test_field": 2.5}) + # Create tier definitions for both tester models + self.tier_def_obj.create( + { + "model_id": self.tester_model.id, + "review_type": "individual", + "reviewer_id": self.test_user_1.id, + "definition_domain": "[('test_field', '>', 1.0)]", + } + ) + self.tier_def_obj.create( + { + "model_id": self.tester_model.id, + "review_type": "individual", + "reviewer_id": self.test_user_1.id, + "definition_domain": "[('test_field', '>', 1.0)]", + } + ) + self.tier_def_obj.create( + { + "model_id": self.tester_model_2.id, + "review_type": "individual", + "reviewer_id": self.test_user_1.id, + "definition_domain": "[('test_field', '>', 1.0)]", + } + ) + # Request validation + self.test_record.with_user(self.test_user_2.id).request_validation() + self.test_record.invalidate_model() + test_record.with_user(self.test_user_2.id).request_validation() + test_record.invalidate_model() + self.test_record_2.with_user(self.test_user_2.id).request_validation() + self.test_record_2.invalidate_model() + # Get review user count as systray icon would do and check count value + docs = self.test_user_1.with_user(self.test_user_1).review_user_count() + for doc in docs: + if doc.get("name") == "tier.validation.tester2": + self.assertEqual(doc.get("pending_count"), 1) + else: + self.assertEqual(doc.get("pending_count"), 2) + + def test_11_add_comment(self): + # Create new test record + test_record = self.test_model.create({"test_field": 2.5}) + # Create tier definitions + self.tier_def_obj.create( + { + "model_id": self.tester_model.id, + "review_type": "individual", + "reviewer_id": self.test_user_1.id, + "definition_domain": "[('test_field', '>', 1.0)]", + "has_comment": True, + } + ) + # Request validation + review = test_record.with_user(self.test_user_2.id).request_validation() + self.assertTrue(review) + record = test_record.with_user(self.test_user_1.id) + record.invalidate_model() + res = record.validate_tier() + ctx = res.get("context") + wizard = Form(self.env["comment.wizard"].with_context(**ctx)) + wizard.comment = "Test Comment" + wiz = wizard.save() + wiz.add_comment() + self.assertTrue(test_record.review_ids.mapped("comment")) + # Check notify + comment = test_record.with_user( + self.test_user_1.id + )._notify_accepted_reviews_body() + self.assertEqual(comment, "A review was accepted. (Test Comment)") + comment = test_record.with_user( + self.test_user_1.id + )._notify_rejected_review_body() + self.assertEqual(comment, "A review was rejected by John. (Test Comment)") + + def test_11_add_comment_rejection(self): + # Create new test record + test_record = self.test_model.create({"test_field": 2.5}) + # Create tier definitions + self.tier_def_obj.create( + { + "model_id": self.tester_model.id, + "review_type": "individual", + "reviewer_id": self.test_user_1.id, + "definition_domain": "[('test_field', '>', 1.0)]", + "has_comment": True, + } + ) + # Request validation + review = test_record.with_user(self.test_user_2.id).request_validation() + self.assertTrue(review) + record = test_record.with_user(self.test_user_1.id) + record.invalidate_model() + res = record.reject_tier() # Rejection + ctx = res.get("context") + wizard = Form(self.env["comment.wizard"].with_context(**ctx)) + wizard.comment = "Test Comment" + wiz = wizard.save() + wiz.add_comment() + self.assertTrue(test_record.review_ids.mapped("comment")) + # Check notify + comment = test_record.with_user( + self.test_user_1.id + )._notify_accepted_reviews_body() + self.assertEqual(comment, "A review was accepted. (Test Comment)") + comment = test_record.with_user( + self.test_user_1.id + )._notify_rejected_review_body() + self.assertEqual(comment, "A review was rejected by John. (Test Comment)") + + def test_12_approve_sequence(self): + # Create new test record + test_record = self.test_model.create({"test_field": 2.5}) + # Create tier definitions + self.tier_def_obj.create( + { + "model_id": self.tester_model.id, + "review_type": "individual", + "reviewer_id": self.test_user_1.id, + "definition_domain": "[('test_field', '>', 1.0)]", + "approve_sequence": True, + "sequence": 30, + } + ) + self.tier_def_obj.create( + { + "model_id": self.tester_model.id, + "review_type": "individual", + "reviewer_id": self.test_user_2.id, + "definition_domain": "[('test_field', '>', 1.0)]", + "approve_sequence": True, + "sequence": 10, + } + ) + # Request validation + self.assertFalse(self.test_record.review_ids) + reviews = test_record.with_user(self.test_user_2.id).request_validation() + self.assertTrue(reviews) + + docs1 = self.test_user_2.with_user(self.test_user_1).review_user_count() + for doc in docs1: + self.assertEqual(doc.get("pending_count"), 1) + docs2 = self.test_user_2.with_user(self.test_user_2).review_user_count() + for doc in docs2: + self.assertEqual(doc.get("pending_count"), 0) + + record1 = test_record.with_user(self.test_user_1.id) + record1.invalidate_model() + self.assertTrue(record1.can_review) + record2 = test_record.with_user(self.test_user_2.id) + record2.invalidate_model() + self.assertFalse(record2.can_review) + # User 1 validates the record, 2 review should be approved. + self.assertFalse(any(r.status == "approved" for r in record1.review_ids)) + record1.validate_tier() + self.assertTrue(any(r.status == "approved" for r in record1.review_ids)) + + def test_12_approve_sequence_same_user(self): + """Similar to test_12_approve_sequence, but all same users, + the approve_sequence still apply correctly""" + # Create new test record + test_record = self.test_model.create({"test_field": 2.5}) + # Create tier definitions + self.tier_def_obj.create( + { + "model_id": self.tester_model.id, + "review_type": "individual", + "reviewer_id": self.test_user_1.id, + "definition_domain": "[('test_field', '>', 1.0)]", + "approve_sequence": True, + "sequence": 20, + } + ) + self.tier_def_obj.create( + { + "model_id": self.tester_model.id, + "review_type": "individual", + "reviewer_id": self.test_user_1.id, + "definition_domain": "[('test_field', '>', 1.0)]", + "approve_sequence": True, + "sequence": 10, + } + ) + # Request validation + self.assertFalse(self.test_record.review_ids) + reviews = test_record.with_user(self.test_user_1.id).request_validation() + self.assertTrue(reviews) + + record1 = test_record.with_user(self.test_user_1.id) + record1.invalidate_model() + self.assertTrue(record1.can_review) + # Validation will be all by sequence + self.assertEqual( + 3, len(record1.review_ids.filtered(lambda l: l.status == "pending")) + ) + record1.validate_tier() + self.assertEqual( + 2, len(record1.review_ids.filtered(lambda l: l.status == "pending")) + ) + record1.validate_tier() + self.assertEqual( + 1, len(record1.review_ids.filtered(lambda l: l.status == "pending")) + ) + record1.validate_tier() + self.assertEqual( + 0, len(record1.review_ids.filtered(lambda l: l.status == "pending")) + ) + + def test_12_approve_sequence_same_user_bypassed(self): + """Similar to test_12_approve_sequence, with all same users, + but approve_sequence_bypass is True""" + # Create new test record + test_record = self.test_model.create({"test_field": 2.5}) + # Create tier definitions + self.tier_def_obj.create( + { + "model_id": self.tester_model.id, + "review_type": "individual", + "reviewer_id": self.test_user_1.id, + "definition_domain": "[('test_field', '>', 1.0)]", + "approve_sequence": True, + "approve_sequence_bypass": True, + "sequence": 20, + } + ) + self.tier_def_obj.create( + { + "model_id": self.tester_model.id, + "review_type": "individual", + "reviewer_id": self.test_user_1.id, + "definition_domain": "[('test_field', '>', 1.0)]", + "approve_sequence": True, + "approve_sequence_bypass": True, + "sequence": 10, + } + ) + # Request validation + self.assertFalse(self.test_record.review_ids) + reviews = test_record.with_user(self.test_user_1.id).request_validation() + self.assertTrue(reviews) + + record1 = test_record.with_user(self.test_user_1.id) + record1.invalidate_model() + self.assertTrue(record1.can_review) + # When the first tier is validated, all the rest will be approved. + self.assertEqual( + 3, len(record1.review_ids.filtered(lambda l: l.status == "pending")) + ) + record1.validate_tier() + self.assertEqual( + 0, len(record1.review_ids.filtered(lambda l: l.status == "pending")) + ) + + def test_13_onchange_review_type(self): + tier_def_id = self.tier_def_obj.create( + { + "model_id": self.tester_model.id, + "review_type": "individual", + "reviewer_id": self.test_user_1.id, + "definition_domain": "[('test_field', '>', 1.0)]", + "approve_sequence": True, + } + ) + self.assertTrue(tier_def_id.reviewer_id) + tier_def_id.review_type = "group" + tier_def_id.onchange_review_type() + self.assertFalse(tier_def_id.reviewer_id) + + def test_14_onchange_review_type(self): + tier_def_id = self.tier_def_obj.create( + { + "model_id": self.tester_model.id, + "review_type": "individual", + "reviewer_id": self.test_user_1.id, + "definition_domain": "[('test_field', '>', 1.0)]", + "approve_sequence": True, + } + ) + self.assertTrue(tier_def_id.reviewer_id) + tier_def_id.review_type = "group" + tier_def_id.onchange_review_type() + self.assertFalse(tier_def_id.reviewer_id) + + def test_15_review_user_count(self): + # Create new test record + test_record = self.test_model.create({"test_field": 2.5}) + # Create tier definitions + self.tier_def_obj.create( + { + "model_id": self.tester_model.id, + "review_type": "individual", + "reviewer_id": self.test_user_1.id, + "definition_domain": "[('test_field', '>', 1.0)]", + "has_comment": True, + } + ) + # Request validation + review = test_record.with_user(self.test_user_2).request_validation() + self.assertTrue(review) + self.assertTrue(self.test_user_1.get_reviews({"res_ids": review.ids})) + self.assertTrue(self.test_user_1.review_ids) + test_record.invalidate_model() + self.assertTrue(test_record.review_ids) + # Used by front-end + count = self.test_user_1.with_user(self.test_user_1).review_user_count() + self.assertEqual(len(count), 1) + # False Review + self.assertFalse(self.test_record._calc_reviews_validated(False)) + self.assertIn("requested", self.test_record._notify_requested_review_body()) + self.assertIn("rejected", self.test_record._notify_rejected_review_body()) + self.assertIn("accepted", self.test_record._notify_accepted_reviews_body()) + + def test_16_review_user_count_on_rejected(self): + """If document is rejected, it should always removed from tray""" + # Create new test record + test_record = self.test_model.create({"test_field": 2.5}) + # Create tier definitions + self.tier_def_obj.create( + { + "model_id": self.tester_model.id, + "review_type": "individual", + "reviewer_id": self.test_user_2.id, + "definition_domain": "[('test_field', '>', 1.0)]", + } + ) + test_record.with_user(self.test_user_2).request_validation() + record1 = test_record.with_user(self.test_user_1) + record1.invalidate_model() + self.assertTrue(record1.can_review) + self.assertTrue( + self.test_user_1.with_user(self.test_user_1).review_user_count() + ) + self.assertTrue( + self.test_user_2.with_user(self.test_user_2).review_user_count() + ) + # user 1 reject first tier + record1.reject_tier() + record1.invalidate_model() + self.assertFalse(record1.can_review) + # both user 1 and 2 has nothing left in tray + self.assertFalse( + self.test_user_1.with_user(self.test_user_1).review_user_count() + ) + self.assertFalse( + self.test_user_2.with_user(self.test_user_2).review_user_count() + ) + + def test_17_search_records_no_validation(self): + """Search for records that have no validation process started""" + records = self.env["tier.validation.tester"].search( + [("reviewer_ids", "=", False)] + ) + self.assertEqual(len(records), 1) + self.test_record.with_user(self.test_user_2.id).request_validation() + record = self.test_record.with_user(self.test_user_1.id) + record.invalidate_model() + records = self.env["tier.validation.tester"].search( + [("reviewer_ids", "=", False)] + ) + self.assertEqual(len(records), 0) + + def test_18_test_review_by_res_users_field(self): + selected_field = self.env["ir.model.fields"].search( + [("model", "=", self.test_model._name), ("name", "=", "user_id")] + ) + test_record = self.test_model.create( + {"test_field": 2.5, "user_id": self.test_user_2.id} + ) + + definition = self.env["tier.definition"].create( + { + "model_id": self.tester_model.id, + "review_type": "field", + "reviewer_field_id": selected_field.id, + "definition_domain": "[('test_field', '>', 1.0)]", + "approve_sequence": True, + } + ) + + reviews = test_record.request_validation() + review = reviews.filtered(lambda r: r.definition_id == definition) + self.assertTrue(review) + self.assertEqual(review.reviewer_ids, self.test_user_2) + + +@tagged("at_install") +class TierTierValidationView(CommonTierValidation): + def test_view_manual(self): + # We need to add a view in order to ensure that an automatic view with all + # fields is not created + self.env["ir.ui.view"].create( + { + "model": self.test_record._name, + "name": "Demo view", + "arch": """
+
+
+ + + +
""", + } + ) + with Form(self.test_record) as f: + self.assertNotIn("review_ids", f._values) + form = etree.fromstring(f._view["arch"]) + self.assertFalse(form.xpath("//field[@name='review_ids']")) + self.assertFalse(form.xpath("//field[@name='can_review']")) + self.assertFalse(form.xpath("//button[@name='request_validation']")) + + def test_view_automatic(self): + # We need to add a view in order to ensure that an automatic view with all + # fields is not created + self.env["ir.ui.view"].create( + { + "model": self.test_record_2._name, + "name": "Demo view", + "arch": """
+
+
+ + + +
""", + } + ) + with Form(self.test_record_2) as f: + self.assertIn("review_ids", f._values) + form = etree.fromstring(f._view["arch"]) + self.assertTrue(form.xpath("//field[@name='review_ids']")) + self.assertTrue(form.xpath("//field[@name='can_review']")) + self.assertTrue(form.xpath("//button[@name='request_validation']")) diff --git a/base_tier_validation/tests/tier_validation_tester.py b/base_tier_validation/tests/tier_validation_tester.py new file mode 100644 index 00000000..f93c8983 --- /dev/null +++ b/base_tier_validation/tests/tier_validation_tester.py @@ -0,0 +1,57 @@ +# Copyright 2018-19 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class TierValidationTester(models.Model): + _name = "tier.validation.tester" + _description = "Tier Validation Tester" + _inherit = ["tier.validation", "mail.thread"] + _tier_validation_manual_config = True + + state = fields.Selection( + selection=[ + ("draft", "Draft"), + ("confirmed", "Confirmed"), + ("cancel", "Cancel"), + ], + default="draft", + ) + test_field = fields.Float() + user_id = fields.Many2one(string="Assigned to:", comodel_name="res.users") + + def action_confirm(self): + self.write({"state": "confirmed"}) + + +class TierValidationTester2(models.Model): + _name = "tier.validation.tester2" + _description = "Tier Validation Tester 2" + _inherit = ["tier.validation"] + _tier_validation_manual_config = False + + state = fields.Selection( + selection=[ + ("draft", "Draft"), + ("confirmed", "Confirmed"), + ("cancel", "Cancel"), + ], + default="draft", + ) + test_field = fields.Float() + user_id = fields.Many2one(string="Assigned to:", comodel_name="res.users") + + def action_confirm(self): + self.write({"state": "confirmed"}) + + +class TierDefinition(models.Model): + _inherit = "tier.definition" + + @api.model + def _get_tier_validation_model_names(self): + res = super()._get_tier_validation_model_names() + res.append("tier.validation.tester") + res.append("tier.validation.tester2") + return res diff --git a/base_tier_validation/views/res_config_settings_views.xml b/base_tier_validation/views/res_config_settings_views.xml new file mode 100644 index 00000000..1dccc519 --- /dev/null +++ b/base_tier_validation/views/res_config_settings_views.xml @@ -0,0 +1,83 @@ + + + + + + res.config.settings.view.form.budget + res.config.settings + + + + +
+

Tier Validation

+
+
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+
+
diff --git a/base_tier_validation/views/tier_definition_view.xml b/base_tier_validation/views/tier_definition_view.xml new file mode 100644 index 00000000..64e0227a --- /dev/null +++ b/base_tier_validation/views/tier_definition_view.xml @@ -0,0 +1,154 @@ + + + + + tier.definition.tree + tier.definition + + + + + + + + + + + + + + + + tier.definition.form + tier.definition + +
+ +
+ +
+ Name +

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + tier.definition.search + tier.definition + + + + + + + + + + + + + + + + Tier Definition + ir.actions.act_window + tier.definition + tree,form + {'search_default_all': 1} + + + + diff --git a/base_tier_validation/views/tier_review_view.xml b/base_tier_validation/views/tier_review_view.xml new file mode 100644 index 00000000..2c9fa538 --- /dev/null +++ b/base_tier_validation/views/tier_review_view.xml @@ -0,0 +1,25 @@ + + + + + tier.review.tree + tier.review + + + + + + + + + + + + + + + diff --git a/base_tier_validation/wizard/__init__.py b/base_tier_validation/wizard/__init__.py new file mode 100644 index 00000000..92bd0df5 --- /dev/null +++ b/base_tier_validation/wizard/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import comment_wizard diff --git a/base_tier_validation/wizard/comment_wizard.py b/base_tier_validation/wizard/comment_wizard.py new file mode 100644 index 00000000..5c5a6c93 --- /dev/null +++ b/base_tier_validation/wizard/comment_wizard.py @@ -0,0 +1,25 @@ +# Copyright 2019 Ecosoft Co., Ltd. (http://ecosoft.co.th) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class CommentWizard(models.TransientModel): + _name = "comment.wizard" + _description = "Comment Wizard" + + validate_reject = fields.Char() + res_model = fields.Char() + res_id = fields.Integer() + review_ids = fields.Many2many(comodel_name="tier.review") + comment = fields.Char(required=True) + + def add_comment(self): + self.ensure_one() + rec = self.env[self.res_model].browse(self.res_id) + self.review_ids.write({"comment": self.comment}) + if self.validate_reject == "validate": + rec._validate_tier(self.review_ids) + if self.validate_reject == "reject": + rec._rejected_tier(self.review_ids) + rec._update_counter({"review_deleted": True}) diff --git a/base_tier_validation/wizard/comment_wizard_view.xml b/base_tier_validation/wizard/comment_wizard_view.xml new file mode 100644 index 00000000..70c1a928 --- /dev/null +++ b/base_tier_validation/wizard/comment_wizard_view.xml @@ -0,0 +1,26 @@ + + + + + Comment Wizard + comment.wizard + form + +
+ + + +
+
+
+
+
+
diff --git a/purchase_tier_validation/README.rst b/purchase_tier_validation/README.rst new file mode 100644 index 00000000..c953e48a --- /dev/null +++ b/purchase_tier_validation/README.rst @@ -0,0 +1,112 @@ +======================== +Purchase Tier Validation +======================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:3dc314140ca3ea9bbb3a38f1ad55df27e47d0e297a67a97b8b3b3f15ce5c6e99 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github + :target: https://github.com/OCA/purchase-workflow/tree/16.0/purchase_tier_validation + :alt: OCA/purchase-workflow +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_tier_validation + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/purchase-workflow&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends the functionality of Purchase Orders to support a tier +validation process. + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +This module depends on ``base_tier_validation``. You can find it at +`OCA/server-ux `_ + +Configuration +============= + +To configure this module, you need to: + +#. Go to *Settings > Technical > Tier Validations > Tier Definition*. +#. Create as many tiers as you want for Purchase Order model. + +Usage +===== + +To use this module, you need to: + +#. Create a Purchase Order triggering at least one "Tier Definition". +#. Click on *Request Validation* button. +#. Under the tab *Reviews* have a look to pending reviews and their statuses. +#. Once all reviews are validated click on *Confirm Order*. + +Additional features: + +* You can filter the POs requesting your review through the filter *Needs my + Review*. +* User with rights to confirm the PO (validate all tiers that would + be generated) can directly do the operation, this is, there is no need for + her/him to request a validation. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* ForgeFlow + +Contributors +~~~~~~~~~~~~ + +* Lois Rilo +* Naglis Jonaitis +* Pedro Gonzalez +* Kitti U. (migrate to v14) + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/purchase-workflow `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_tier_validation/__init__.py b/purchase_tier_validation/__init__.py new file mode 100644 index 00000000..31660d6a --- /dev/null +++ b/purchase_tier_validation/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import models diff --git a/purchase_tier_validation/__manifest__.py b/purchase_tier_validation/__manifest__.py new file mode 100644 index 00000000..3af18837 --- /dev/null +++ b/purchase_tier_validation/__manifest__.py @@ -0,0 +1,16 @@ +# Copyright 2017 ForgeFlow S.L. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Purchase Tier Validation", + "summary": "Extends the functionality of Purchase Orders to " + "support a tier validation process.", + "version": "16.0.1.1.0", + "category": "Purchases", + "website": "https://github.com/OCA/purchase-workflow", + "author": "ForgeFlow, Odoo Community Association (OCA)", + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": ["purchase", "base_tier_validation"], + "data": ["views/purchase_order_view.xml"], +} diff --git a/purchase_tier_validation/i18n/es.po b/purchase_tier_validation/i18n/es.po new file mode 100644 index 00000000..435eeb27 --- /dev/null +++ b/purchase_tier_validation/i18n/es.po @@ -0,0 +1,132 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_tier_validation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-11-06 21:37+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__can_review +msgid "Can Review" +msgstr "Puede Revisar" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__has_comment +msgid "Has Comment" +msgstr "Tiene Comentario" + +#. module: purchase_tier_validation +#: model_terms:ir.ui.view,arch_db:purchase_tier_validation.view_purchase_order_filter +msgid "My Purchases to review" +msgstr "Mis Compras a revisar" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__need_validation +msgid "Need Validation" +msgstr "Necesita validación" + +#. module: purchase_tier_validation +#: model_terms:ir.ui.view,arch_db:purchase_tier_validation.view_purchase_order_filter +msgid "Needs my Review" +msgstr "Necesita mi Revisión" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__next_review +msgid "Next Review" +msgstr "Siguiente revisión" + +#. module: purchase_tier_validation +#: model_terms:ir.ui.view,arch_db:purchase_tier_validation.view_purchase_order_filter +msgid "POs validated and ready to be confirmed" +msgstr "POs validadas y preparadas para ser confirmadas" + +#. module: purchase_tier_validation +#: model:ir.model,name:purchase_tier_validation.model_purchase_order +msgid "Purchase Order" +msgstr "Orden de Compra" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__rejected +msgid "Rejected" +msgstr "Rechazado" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__rejected_message +msgid "Rejected Message" +msgstr "Mensaje rechazado" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__reviewer_ids +msgid "Reviewers" +msgstr "Revisores" + +#. module: purchase_tier_validation +#: model:ir.model,name:purchase_tier_validation.model_tier_definition +msgid "Tier Definition" +msgstr "Definición del nivel" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__to_validate_message +msgid "To Validate Message" +msgstr "Para validar el mensaje" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__validated +#: model_terms:ir.ui.view,arch_db:purchase_tier_validation.view_purchase_order_filter +msgid "Validated" +msgstr "Validada" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__validated_message +msgid "Validated Message" +msgstr "Mensaje validado" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__validation_status +msgid "Validation Status" +msgstr "Estado de validación" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__review_ids +msgid "Validations" +msgstr "Validaciones" + +#~ msgid "" +#~ "This PO needs to be\n" +#~ " validated." +#~ msgstr "" +#~ "Esta PO debe ser\n" +#~ " validada." + +#~ msgid " Operation has been rejected." +#~ msgstr "" +#~ "La operación ha sido rechazada." + +#~ msgid " Operation has been validated!" +#~ msgstr "La operación ha sido validada!" + +#~ msgid "Reject" +#~ msgstr "Rechazar" + +#~ msgid "Request Validation" +#~ msgstr "Solicitar Validación" + +#~ msgid "Restart Validation" +#~ msgstr "Reiniciar Validación" + +#~ msgid "Validate" +#~ msgstr "Validar" + +#~ msgid "Reviews" +#~ msgstr "Revisiones" diff --git a/purchase_tier_validation/i18n/purchase_tier_validation.pot b/purchase_tier_validation/i18n/purchase_tier_validation.pot new file mode 100644 index 00000000..e3a4f2f2 --- /dev/null +++ b/purchase_tier_validation/i18n/purchase_tier_validation.pot @@ -0,0 +1,100 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_tier_validation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__can_review +msgid "Can Review" +msgstr "" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__has_comment +msgid "Has Comment" +msgstr "" + +#. module: purchase_tier_validation +#: model_terms:ir.ui.view,arch_db:purchase_tier_validation.view_purchase_order_filter +msgid "My Purchases to review" +msgstr "" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__need_validation +msgid "Need Validation" +msgstr "" + +#. module: purchase_tier_validation +#: model_terms:ir.ui.view,arch_db:purchase_tier_validation.view_purchase_order_filter +msgid "Needs my Review" +msgstr "" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__next_review +msgid "Next Review" +msgstr "" + +#. module: purchase_tier_validation +#: model_terms:ir.ui.view,arch_db:purchase_tier_validation.view_purchase_order_filter +msgid "POs validated and ready to be confirmed" +msgstr "" + +#. module: purchase_tier_validation +#: model:ir.model,name:purchase_tier_validation.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__rejected +msgid "Rejected" +msgstr "" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__rejected_message +msgid "Rejected Message" +msgstr "" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__reviewer_ids +msgid "Reviewers" +msgstr "" + +#. module: purchase_tier_validation +#: model:ir.model,name:purchase_tier_validation.model_tier_definition +msgid "Tier Definition" +msgstr "" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__to_validate_message +msgid "To Validate Message" +msgstr "" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__validated +#: model_terms:ir.ui.view,arch_db:purchase_tier_validation.view_purchase_order_filter +msgid "Validated" +msgstr "" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__validated_message +msgid "Validated Message" +msgstr "" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__validation_status +msgid "Validation Status" +msgstr "" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__review_ids +msgid "Validations" +msgstr "" diff --git a/purchase_tier_validation/i18n/zh_CN.po b/purchase_tier_validation/i18n/zh_CN.po new file mode 100644 index 00000000..d0853920 --- /dev/null +++ b/purchase_tier_validation/i18n/zh_CN.po @@ -0,0 +1,126 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_tier_validation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-03-28 16:13+0000\n" +"Last-Translator: Dong \n" +"Language-Team: none\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.10\n" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__can_review +msgid "Can Review" +msgstr "" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__has_comment +msgid "Has Comment" +msgstr "" + +#. module: purchase_tier_validation +#: model_terms:ir.ui.view,arch_db:purchase_tier_validation.view_purchase_order_filter +msgid "My Purchases to review" +msgstr "等待我审核的采购" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__need_validation +msgid "Need Validation" +msgstr "" + +#. module: purchase_tier_validation +#: model_terms:ir.ui.view,arch_db:purchase_tier_validation.view_purchase_order_filter +msgid "Needs my Review" +msgstr "需要我审核" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__next_review +msgid "Next Review" +msgstr "" + +#. module: purchase_tier_validation +#: model_terms:ir.ui.view,arch_db:purchase_tier_validation.view_purchase_order_filter +msgid "POs validated and ready to be confirmed" +msgstr "采购订单已批准并等待确认" + +#. module: purchase_tier_validation +#: model:ir.model,name:purchase_tier_validation.model_purchase_order +msgid "Purchase Order" +msgstr "采购订单" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__rejected +msgid "Rejected" +msgstr "" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__rejected_message +msgid "Rejected Message" +msgstr "" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__reviewer_ids +msgid "Reviewers" +msgstr "" + +#. module: purchase_tier_validation +#: model:ir.model,name:purchase_tier_validation.model_tier_definition +msgid "Tier Definition" +msgstr "层级定义" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__to_validate_message +msgid "To Validate Message" +msgstr "" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__validated +#: model_terms:ir.ui.view,arch_db:purchase_tier_validation.view_purchase_order_filter +msgid "Validated" +msgstr "已批准" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__validated_message +msgid "Validated Message" +msgstr "" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__validation_status +msgid "Validation Status" +msgstr "" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__review_ids +msgid "Validations" +msgstr "" + +#~ msgid "" +#~ "This PO needs to be\n" +#~ " validated." +#~ msgstr "这个采购订单需要审批。" + +#~ msgid " Operation has been rejected." +#~ msgstr " 操作已被驳回。" + +#~ msgid " Operation has been validated!" +#~ msgstr " 操作已 批准!" + +#~ msgid "Reject" +#~ msgstr "驳回" + +#~ msgid "Request Validation" +#~ msgstr "请求审批" + +#~ msgid "Restart Validation" +#~ msgstr "撤回审批" + +#~ msgid "Validate" +#~ msgstr "批准" diff --git a/purchase_tier_validation/models/__init__.py b/purchase_tier_validation/models/__init__.py new file mode 100644 index 00000000..a426f80d --- /dev/null +++ b/purchase_tier_validation/models/__init__.py @@ -0,0 +1,4 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import purchase_order +from . import tier_definition diff --git a/purchase_tier_validation/models/purchase_order.py b/purchase_tier_validation/models/purchase_order.py new file mode 100644 index 00000000..a82eb494 --- /dev/null +++ b/purchase_tier_validation/models/purchase_order.py @@ -0,0 +1,13 @@ +# Copyright 2017 ForgeFlow S.L. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import models + + +class PurchaseOrder(models.Model): + _name = "purchase.order" + _inherit = ["purchase.order", "tier.validation"] + _state_from = ["draft", "sent", "to approve"] + _state_to = ["purchase", "approved"] + + _tier_validation_manual_config = False diff --git a/purchase_tier_validation/models/tier_definition.py b/purchase_tier_validation/models/tier_definition.py new file mode 100644 index 00000000..606d5689 --- /dev/null +++ b/purchase_tier_validation/models/tier_definition.py @@ -0,0 +1,14 @@ +# Copyright 2017 ForgeFlow S.L. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class TierDefinition(models.Model): + _inherit = "tier.definition" + + @api.model + def _get_tier_validation_model_names(self): + res = super(TierDefinition, self)._get_tier_validation_model_names() + res.append("purchase.order") + return res diff --git a/purchase_tier_validation/readme/CONFIGURE.rst b/purchase_tier_validation/readme/CONFIGURE.rst new file mode 100644 index 00000000..b7c0ef30 --- /dev/null +++ b/purchase_tier_validation/readme/CONFIGURE.rst @@ -0,0 +1,4 @@ +To configure this module, you need to: + +#. Go to *Settings > Technical > Tier Validations > Tier Definition*. +#. Create as many tiers as you want for Purchase Order model. diff --git a/purchase_tier_validation/readme/CONTRIBUTORS.rst b/purchase_tier_validation/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..01d24644 --- /dev/null +++ b/purchase_tier_validation/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* Lois Rilo +* Naglis Jonaitis +* Pedro Gonzalez +* Kitti U. (migrate to v14) diff --git a/purchase_tier_validation/readme/DESCRIPTION.rst b/purchase_tier_validation/readme/DESCRIPTION.rst new file mode 100644 index 00000000..9e217e4d --- /dev/null +++ b/purchase_tier_validation/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module extends the functionality of Purchase Orders to support a tier +validation process. diff --git a/purchase_tier_validation/readme/INSTALL.rst b/purchase_tier_validation/readme/INSTALL.rst new file mode 100644 index 00000000..638fbd2d --- /dev/null +++ b/purchase_tier_validation/readme/INSTALL.rst @@ -0,0 +1,2 @@ +This module depends on ``base_tier_validation``. You can find it at +`OCA/server-ux `_ diff --git a/purchase_tier_validation/readme/USAGE.rst b/purchase_tier_validation/readme/USAGE.rst new file mode 100644 index 00000000..31a17ed5 --- /dev/null +++ b/purchase_tier_validation/readme/USAGE.rst @@ -0,0 +1,14 @@ +To use this module, you need to: + +#. Create a Purchase Order triggering at least one "Tier Definition". +#. Click on *Request Validation* button. +#. Under the tab *Reviews* have a look to pending reviews and their statuses. +#. Once all reviews are validated click on *Confirm Order*. + +Additional features: + +* You can filter the POs requesting your review through the filter *Needs my + Review*. +* User with rights to confirm the PO (validate all tiers that would + be generated) can directly do the operation, this is, there is no need for + her/him to request a validation. diff --git a/purchase_tier_validation/static/description/icon.png b/purchase_tier_validation/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 zcmW++2RxMjAAjx~&dlBk9S+%}OXg)AGE&Cb*&}d0jUxM@u(PQx^-s)697TX`ehR4?GS^qbkof1cslKgkU)h65qZ9Oc=ml_0temigYLJfnz{IDzUf>bGs4N!v3=Z3jMq&A#7%rM5eQ#dc?k~! zVpnB`o+K7|Al`Q_U;eD$B zfJtP*jH`siUq~{KE)`jP2|#TUEFGRryE2`i0**z#*^6~AI|YzIWy$Cu#CSLW3q=GA z6`?GZymC;dCPk~rBS%eCb`5OLr;RUZ;D`}um=H)BfVIq%7VhiMr)_#G0N#zrNH|__ zc+blN2UAB0=617@>_u;MPHN;P;N#YoE=)R#i$k_`UAA>WWCcEVMh~L_ zj--gtp&|K1#58Yz*AHCTMziU1Jzt_jG0I@qAOHsk$2}yTmVkBp_eHuY$A9)>P6o~I z%aQ?!(GqeQ-Y+b0I(m9pwgi(IIZZzsbMv+9w{PFtd_<_(LA~0H(xz{=FhLB@(1&qHA5EJw1>>=%q2f&^X>IQ{!GJ4e9U z&KlB)z(84HmNgm2hg2C0>WM{E(DdPr+EeU_N@57;PC2&DmGFW_9kP&%?X4}+xWi)( z;)z%wI5>D4a*5XwD)P--sPkoY(a~WBw;E~AW`Yue4kFa^LM3X`8x|}ZUeMnqr}>kH zG%WWW>3ml$Yez?i%)2pbKPI7?5o?hydokgQyZsNEr{a|mLdt;X2TX(#B1j35xPnPW z*bMSSOauW>o;*=kO8ojw91VX!qoOQb)zHJ!odWB}d+*K?#sY_jqPdg{Sm2HdYzdEx zOGVPhVRTGPtv0o}RfVP;Nd(|CB)I;*t&QO8h zFfekr30S!-LHmV_Su-W+rEwYXJ^;6&3|L$mMC8*bQptyOo9;>Qb9Q9`ySe3%V$A*9 zeKEe+b0{#KWGp$F+tga)0RtI)nhMa-K@JS}2krK~n8vJ=Ngm?R!9G<~RyuU0d?nz# z-5EK$o(!F?hmX*2Yt6+coY`6jGbb7tF#6nHA zuKk=GGJ;ZwON1iAfG$E#Y7MnZVmrY|j0eVI(DN_MNFJmyZ|;w4tf@=CCDZ#5N_0K= z$;R~bbk?}TpfDjfB&aiQ$VA}s?P}xPERJG{kxk5~R`iRS(SK5d+Xs9swCozZISbnS zk!)I0>t=A<-^z(cmSFz3=jZ23u13X><0b)P)^1T_))Kr`e!-pb#q&J*Q`p+B6la%C zuVl&0duN<;uOsB3%T9Fp8t{ED108<+W(nOZd?gDnfNBC3>M8WE61$So|P zVvqH0SNtDTcsUdzaMDpT=Ty0pDHHNL@Z0w$Y`XO z2M-_r1S+GaH%pz#Uy0*w$Vdl=X=rQXEzO}d6J^R6zjM1u&c9vYLvLp?W7w(?np9x1 zE_0JSAJCPB%i7p*Wvg)pn5T`8k3-uR?*NT|J`eS#_#54p>!p(mLDvmc-3o0mX*mp_ zN*AeS<>#^-{S%W<*mz^!X$w_2dHWpcJ6^j64qFBft-o}o_Vx80o0>}Du;>kLts;$8 zC`7q$QI(dKYG`Wa8#wl@V4jVWBRGQ@1dr-hstpQL)Tl+aqVpGpbSfN>5i&QMXfiZ> zaA?T1VGe?rpQ@;+pkrVdd{klI&jVS@I5_iz!=UMpTsa~mBga?1r}aRBm1WS;TT*s0f0lY=JBl66Upy)-k4J}lh=P^8(SXk~0xW=T9v*B|gzIhN z>qsO7dFd~mgxAy4V?&)=5ieYq?zi?ZEoj)&2o)RLy=@hbCRcfT5jigwtQGE{L*8<@Yd{zg;CsL5mvzfDY}P-wos_6PfprFVaeqNE%h zKZhLtcQld;ZD+>=nqN~>GvROfueSzJD&BE*}XfU|H&(FssBqY=hPCt`d zH?@s2>I(|;fcW&YM6#V#!kUIP8$Nkdh0A(bEVj``-AAyYgwY~jB zT|I7Bf@%;7aL7Wf4dZ%VqF$eiaC38OV6oy3Z#TER2G+fOCd9Iaoy6aLYbPTN{XRPz z;U!V|vBf%H!}52L2gH_+j;`bTcQRXB+y9onc^wLm5wi3-Be}U>k_u>2Eg$=k!(l@I zcCg+flakT2Nej3i0yn+g+}%NYb?ta;R?(g5SnwsQ49U8Wng8d|{B+lyRcEDvR3+`O{zfmrmvFrL6acVP%yG98X zo&+VBg@px@i)%o?dG(`T;n*$S5*rnyiR#=wW}}GsAcfyQpE|>a{=$Hjg=-*_K;UtD z#z-)AXwSRY?OPefw^iI+ z)AXz#PfEjlwTes|_{sB?4(O@fg0AJ^g8gP}ex9Ucf*@_^J(s_5jJV}c)s$`Myn|Kd z$6>}#q^n{4vN@+Os$m7KV+`}c%4)4pv@06af4-x5#wj!KKb%caK{A&Y#Rfs z-po?Dcb1({W=6FKIUirH&(yg=*6aLCekcKwyfK^JN5{wcA3nhO(o}SK#!CINhI`-I z1)6&n7O&ZmyFMuNwvEic#IiOAwNkR=u5it{B9n2sAJV5pNhar=j5`*N!Na;c7g!l$ z3aYBqUkqqTJ=Re-;)s!EOeij=7SQZ3Hq}ZRds%IM*PtM$wV z@;rlc*NRK7i3y5BETSKuumEN`Xu_8GP1Ri=OKQ$@I^ko8>H6)4rjiG5{VBM>B|%`&&s^)jS|-_95&yc=GqjNo{zFkw%%HHhS~e=s zD#sfS+-?*t|J!+ozP6KvtOl!R)@@-z24}`9{QaVLD^9VCSR2b`b!KC#o;Ki<+wXB6 zx3&O0LOWcg4&rv4QG0)4yb}7BFSEg~=IR5#ZRj8kg}dS7_V&^%#Do==#`u zpy6{ox?jWuR(;pg+f@mT>#HGWHAJRRDDDv~@(IDw&R>9643kK#HN`!1vBJHnC+RM&yIh8{gG2q zA%e*U3|N0XSRa~oX-3EAneep)@{h2vvd3Xvy$7og(sayr@95+e6~Xvi1tUqnIxoIH zVWo*OwYElb#uyW{Imam6f2rGbjR!Y3`#gPqkv57dB6K^wRGxc9B(t|aYDGS=m$&S!NmCtrMMaUg(c zc2qC=2Z`EEFMW-me5B)24AqF*bV5Dr-M5ig(l-WPS%CgaPzs6p_gnCIvTJ=Y<6!gT zVt@AfYCzjjsMEGi=rDQHo0yc;HqoRNnNFeWZgcm?f;cp(6CNylj36DoL(?TS7eU#+ z7&mfr#y))+CJOXQKUMZ7QIdS9@#-}7y2K1{8)cCt0~-X0O!O?Qx#E4Og+;A2SjalQ zs7r?qn0H044=sDN$SRG$arw~n=+T_DNdSrarmu)V6@|?1-ZB#hRn`uilTGPJ@fqEy zGt(f0B+^JDP&f=r{#Y_wi#AVDf-y!RIXU^0jXsFpf>=Ji*TeqSY!H~AMbJdCGLhC) zn7Rx+sXw6uYj;WRYrLd^5IZq@6JI1C^YkgnedZEYy<&4(z%Q$5yv#Boo{AH8n$a zhb4Y3PWdr269&?V%uI$xMcUrMzl=;w<_nm*qr=c3Rl@i5wWB;e-`t7D&c-mcQl7x! zZWB`UGcw=Y2=}~wzrfLx=uet<;m3~=8I~ZRuzvMQUQdr+yTV|ATf1Uuomr__nDf=X zZ3WYJtHp_ri(}SQAPjv+Y+0=fH4krOP@S&=zZ-t1jW1o@}z;xk8 z(Nz1co&El^HK^NrhVHa-_;&88vTU>_J33=%{if;BEY*J#1n59=07jrGQ#IP>@u#3A z;!q+E1Rj3ZJ+!4bq9F8PXJ@yMgZL;>&gYA0%_Kbi8?S=XGM~dnQZQ!yBSgcZhY96H zrWnU;k)qy`rX&&xlDyA%(a1Hhi5CWkmg(`Gb%m(HKi-7Z!LKGRP_B8@`7&hdDy5n= z`OIxqxiVfX@OX1p(mQu>0Ai*v_cTMiw4qRt3~NBvr9oBy0)r>w3p~V0SCm=An6@3n)>@z!|o-$HvDK z|3D2ZMJkLE5loMKl6R^ez@Zz%S$&mbeoqH5`Bb){Ei21q&VP)hWS2tjShfFtGE+$z zzCR$P#uktu+#!w)cX!lWN1XU%K-r=s{|j?)Akf@q#3b#{6cZCuJ~gCxuMXRmI$nGtnH+-h z+GEi!*X=AP<|fG`1>MBdTb?28JYc=fGvAi2I<$B(rs$;eoJCyR6_bc~p!XR@O-+sD z=eH`-ye})I5ic1eL~TDmtfJ|8`0VJ*Yr=hNCd)G1p2MMz4C3^Mj?7;!w|Ly%JqmuW zlIEW^Ft%z?*|fpXda>Jr^1noFZEwFgVV%|*XhH@acv8rdGxeEX{M$(vG{Zw+x(ei@ zmfXb22}8-?Fi`vo-YVrTH*C?a8%M=Hv9MqVH7H^J$KsD?>!SFZ;ZsvnHr_gn=7acz z#W?0eCdVhVMWN12VV^$>WlQ?f;P^{(&pYTops|btm6aj>_Uz+hqpGwB)vWp0Cf5y< zft8-je~nn?W11plq}N)4A{l8I7$!ks_x$PXW-2XaRFswX_BnF{R#6YIwMhAgd5F9X zGmwdadS6(a^fjHtXg8=l?Rc0Sm%hk6E9!5cLVloEy4eh(=FwgP`)~I^5~pBEWo+F6 zSf2ncyMurJN91#cJTy_u8Y}@%!bq1RkGC~-bV@SXRd4F{R-*V`bS+6;W5vZ(&+I<9$;-V|eNfLa5n-6% z2(}&uGRF;p92eS*sE*oR$@pexaqr*meB)VhmIg@h{uzkk$9~qh#cHhw#>O%)b@+(| z^IQgqzuj~Sk(J;swEM-3TrJAPCq9k^^^`q{IItKBRXYe}e0Tdr=Huf7da3$l4PdpwWDop%^}n;dD#K4s#DYA8SHZ z&1!riV4W4R7R#C))JH1~axJ)RYnM$$lIR%6fIVA@zV{XVyx}C+a-Dt8Y9M)^KU0+H zR4IUb2CJ{Hg>CuaXtD50jB(_Tcx=Z$^WYu2u5kubqmwp%drJ6 z?Fo40g!Qd<-l=TQxqHEOuPX0;^z7iX?Ke^a%XT<13TA^5`4Xcw6D@Ur&VT&CUe0d} z1GjOVF1^L@>O)l@?bD~$wzgf(nxX1OGD8fEV?TdJcZc2KoUe|oP1#=$$7ee|xbY)A zDZq+cuTpc(fFdj^=!;{k03C69lMQ(|>uhRfRu%+!k&YOi-3|1QKB z z?n?eq1XP>p-IM$Z^C;2L3itnbJZAip*Zo0aw2bs8@(s^~*8T9go!%dHcAz2lM;`yp zD=7&xjFV$S&5uDaiScyD?B-i1ze`+CoRtz`Wn+Zl&#s4&}MO{@N!ufrzjG$B79)Y2d3tBk&)TxUTw@QS0TEL_?njX|@vq?Uz(nBFK5Pq7*xj#u*R&i|?7+6# z+|r_n#SW&LXhtheZdah{ZVoqwyT{D>MC3nkFF#N)xLi{p7J1jXlmVeb;cP5?e(=f# zuT7fvjSbjS781v?7{)-X3*?>tq?)Yd)~|1{BDS(pqC zC}~H#WXlkUW*H5CDOo<)#x7%RY)A;ShGhI5s*#cRDA8YgqG(HeKDx+#(ZQ?386dv! zlXCO)w91~Vw4AmOcATuV653fa9R$fyK8ul%rG z-wfS zihugoZyr38Im?Zuh6@RcF~t1anQu7>#lPpb#}4cOA!EM11`%f*07RqOVkmX{p~KJ9 z^zP;K#|)$`^Rb{rnHGH{~>1(fawV0*Z#)}M`m8-?ZJV<+e}s9wE# z)l&az?w^5{)`S(%MRzxdNqrs1n*-=jS^_jqE*5XDrA0+VE`5^*p3CuM<&dZEeCjoz zR;uu_H9ZPZV|fQq`Cyw4nscrVwi!fE6ciMmX$!_hN7uF;jjKG)d2@aC4ropY)8etW=xJvni)8eHi`H$%#zn^WJ5NLc-rqk|u&&4Z6fD_m&JfSI1Bvb?b<*n&sfl0^t z=HnmRl`XrFvMKB%9}>PaA`m-fK6a0(8=qPkWS5bb4=v?XcWi&hRY?O5HdulRi4?fN zlsJ*N-0Qw+Yic@s0(2uy%F@ib;GjXt01Fmx5XbRo6+n|pP(&nodMoap^z{~q ziEeaUT@Mxe3vJSfI6?uLND(CNr=#^W<1b}jzW58bIfyWTDle$mmS(|x-0|2UlX+9k zQ^EX7Nw}?EzVoBfT(-LT|=9N@^hcn-_p&sqG z&*oVs2JSU+N4ZD`FhCAWaS;>|wH2G*Id|?pa#@>tyxX`+4HyIArWDvVrX)2WAOQff z0qyHu&-S@i^MS-+j--!pr4fPBj~_8({~e1bfcl0wI1kaoN>mJL6KUPQm5N7lB(ui1 zE-o%kq)&djzWJ}ob<-GfDlkB;F31j-VHKvQUGQ3sp`CwyGJk_i!y^sD0fqC@$9|jO zOqN!r!8-p==F@ZVP=U$qSpY(gQ0)59P1&t@y?5rvg<}E+GB}26NYPp4f2YFQrQtot5mn3wu_qprZ=>Ig-$ zbW26Ws~IgY>}^5w`vTB(G`PTZaDiGBo5o(tp)qli|NeV( z@H_=R8V39rt5J5YB2Ky?4eJJ#b`_iBe2ot~6%7mLt5t8Vwi^Jy7|jWXqa3amOIoRb zOr}WVFP--DsS`1WpN%~)t3R!arKF^Q$e12KEqU36AWwnCBICpH4XCsfnyrHr>$I$4 z!DpKX$OKLWarN7nv@!uIA+~RNO)l$$w}p(;b>mx8pwYvu;dD_unryX_NhT8*Tj>BTrTTL&!?O+%Rv;b?B??gSzdp?6Uug9{ zd@V08Z$BdI?fpoCS$)t4mg4rT8Q_I}h`0d-vYZ^|dOB*Q^S|xqTV*vIg?@fVFSmMpaw0qtTRbx} z({Pg?#{2`sc9)M5N$*N|4;^t$+QP?#mov zGVC@I*lBVrOU-%2y!7%)fAKjpEFsgQc4{amtiHb95KQEwvf<(3T<9-Zm$xIew#P22 zc2Ix|App^>v6(3L_MCU0d3W##AB0M~3D00EWoKZqsJYT(#@w$Y_H7G22M~ApVFTRHMI_3be)Lkn#0F*V8Pq zc}`Cjy$bE;FJ6H7p=0y#R>`}-m4(0F>%@P|?7fx{=R^uFdISRnZ2W_xQhD{YuR3t< z{6yxu=4~JkeA;|(J6_nv#>Nvs&FuLA&PW^he@t(UwFFE8)|a!R{`E`K`i^ZnyE4$k z;(749Ix|oi$c3QbEJ3b~D_kQsPz~fIUKym($a_7dJ?o+40*OLl^{=&oq$<#Q(yyrp z{J-FAniyAw9tPbe&IhQ|a`DqFTVQGQ&Gq3!C2==4x{6EJwiPZ8zub-iXoUtkJiG{} zPaR&}_fn8_z~(=;5lD-aPWD3z8PZS@AaUiomF!G8I}Mf>e~0g#BelA-5#`cj;O5>N Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/purchase_tier_validation/static/description/index.html b/purchase_tier_validation/static/description/index.html new file mode 100644 index 00000000..019c2f8b --- /dev/null +++ b/purchase_tier_validation/static/description/index.html @@ -0,0 +1,459 @@ + + + + + + +Purchase Tier Validation + + + +
+

Purchase Tier Validation

+ + +

Beta License: AGPL-3 OCA/purchase-workflow Translate me on Weblate Try me on Runboat

+

This module extends the functionality of Purchase Orders to support a tier +validation process.

+

Table of contents

+ +
+

Installation

+

This module depends on base_tier_validation. You can find it at +OCA/server-ux

+
+
+

Configuration

+

To configure this module, you need to:

+
    +
  1. Go to Settings > Technical > Tier Validations > Tier Definition.
  2. +
  3. Create as many tiers as you want for Purchase Order model.
  4. +
+
+
+

Usage

+

To use this module, you need to:

+
    +
  1. Create a Purchase Order triggering at least one “Tier Definition”.
  2. +
  3. Click on Request Validation button.
  4. +
  5. Under the tab Reviews have a look to pending reviews and their statuses.
  6. +
  7. Once all reviews are validated click on Confirm Order.
  8. +
+

Additional features:

+
    +
  • You can filter the POs requesting your review through the filter Needs my +Review.
  • +
  • User with rights to confirm the PO (validate all tiers that would +be generated) can directly do the operation, this is, there is no need for +her/him to request a validation.
  • +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • ForgeFlow
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/purchase-workflow project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/purchase_tier_validation/tests/__init__.py b/purchase_tier_validation/tests/__init__.py new file mode 100644 index 00000000..f3959641 --- /dev/null +++ b/purchase_tier_validation/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import test_tier_validation diff --git a/purchase_tier_validation/tests/test_tier_validation.py b/purchase_tier_validation/tests/test_tier_validation.py new file mode 100644 index 00000000..512282a3 --- /dev/null +++ b/purchase_tier_validation/tests/test_tier_validation.py @@ -0,0 +1,69 @@ +# Copyright 2018 ForgeFlow S.L. +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). + +from odoo_test_helper import FakeModelLoader + +from odoo.tests import common +from odoo.tests.common import tagged + + +@tagged("post_install", "-at_install") +class TestPurchaseTierValidation(common.TransactionCase): + @classmethod + def setUpClass(cls): + super(TestPurchaseTierValidation, cls).setUpClass() + cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) + cls.loader = FakeModelLoader(cls.env, cls.__module__) + cls.loader.backup_registry() + + from .tier_validation_tester import TierValidationTester + + cls.loader.update_registry((TierValidationTester,)) + + cls.test_model = cls.env[TierValidationTester._name] + + cls.tester_model = cls.env["ir.model"].search( + [("model", "=", "tier.validation.tester")] + ) + + # Access record: + cls.env["ir.model.access"].create( + { + "name": "access.tester", + "model_id": cls.tester_model.id, + "perm_read": 1, + "perm_write": 1, + "perm_create": 1, + "perm_unlink": 1, + } + ) + + # Create users: + group_ids = cls.env.ref("base.group_system").ids + cls.test_user_1 = cls.env["res.users"].create( + {"name": "John", "login": "test1", "groups_id": [(6, 0, group_ids)]} + ) + + # Create tier definitions: + cls.tier_def_obj = cls.env["tier.definition"] + cls.tier_def_obj.create( + { + "model_id": cls.tester_model.id, + "review_type": "individual", + "reviewer_id": cls.test_user_1.id, + "definition_domain": "[('test_field', '>', 1.0)]", + } + ) + + cls.test_record = cls.test_model.create({"test_field": 2.5}) + + @classmethod + def tearDownClass(cls): + cls.loader.restore_registry() + return super(TestPurchaseTierValidation, cls).tearDownClass() + + def test_01_tier_definition_models(self): + """When the user can validate all future reviews, it is not needed + to request a validation, the action can be done straight forward.""" + res = self.tier_def_obj._get_tier_validation_model_names() + self.assertIn("purchase.order", res) diff --git a/purchase_tier_validation/tests/tier_validation_tester.py b/purchase_tier_validation/tests/tier_validation_tester.py new file mode 100644 index 00000000..21bb4fef --- /dev/null +++ b/purchase_tier_validation/tests/tier_validation_tester.py @@ -0,0 +1,24 @@ +# Copyright 2018 ForgeFlow S.L. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class TierValidationTester(models.Model): + _name = "tier.validation.tester" + _description = "Tier Validation Tester" + _inherit = ["tier.validation"] + + state = fields.Selection( + selection=[ + ("draft", "Draft"), + ("confirmed", "Confirmed"), + ("cancel", "Cancel"), + ], + default="draft", + ) + test_field = fields.Float() + user_id = fields.Many2one(string="Assigned to:", comodel_name="res.users") + + def action_confirm(self): + self.write({"state": "confirmed"}) diff --git a/purchase_tier_validation/views/purchase_order_view.xml b/purchase_tier_validation/views/purchase_order_view.xml new file mode 100644 index 00000000..e1ec3873 --- /dev/null +++ b/purchase_tier_validation/views/purchase_order_view.xml @@ -0,0 +1,44 @@ + + + + + purchase.order.select - purchase_tier_validation + purchase.order + + + + + + + + + + + purchase.order.inherit.purchase.order.tree + purchase.order + + + + + + + + diff --git a/setup/base_tier_validation/odoo/addons/base_tier_validation b/setup/base_tier_validation/odoo/addons/base_tier_validation new file mode 120000 index 00000000..d48caa19 --- /dev/null +++ b/setup/base_tier_validation/odoo/addons/base_tier_validation @@ -0,0 +1 @@ +../../../../base_tier_validation \ No newline at end of file diff --git a/setup/base_tier_validation/setup.py b/setup/base_tier_validation/setup.py new file mode 100644 index 00000000..28c57bb6 --- /dev/null +++ b/setup/base_tier_validation/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/purchase_tier_validation/odoo/addons/purchase_tier_validation b/setup/purchase_tier_validation/odoo/addons/purchase_tier_validation new file mode 120000 index 00000000..deeb6f8e --- /dev/null +++ b/setup/purchase_tier_validation/odoo/addons/purchase_tier_validation @@ -0,0 +1 @@ +../../../../purchase_tier_validation \ No newline at end of file diff --git a/setup/purchase_tier_validation/setup.py b/setup/purchase_tier_validation/setup.py new file mode 100644 index 00000000..28c57bb6 --- /dev/null +++ b/setup/purchase_tier_validation/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) From 617c74c03838f08aa3aee67f19df3392d671f694 Mon Sep 17 00:00:00 2001 From: Yoshi Tashiro Date: Thu, 18 Jul 2024 15:00:34 +0000 Subject: [PATCH 2/3] remove base_tier_validation --- base_tier_validation/README.rst | 236 ------ base_tier_validation/__init__.py | 4 - base_tier_validation/__manifest__.py | 43 - base_tier_validation/data/mail_data.xml | 43 - .../i18n/base_tier_validation.pot | 710 ---------------- base_tier_validation/i18n/es.po | 737 ----------------- base_tier_validation/i18n/es_MX.po | 740 ----------------- base_tier_validation/i18n/fr.po | 748 ----------------- base_tier_validation/i18n/it.po | 739 ----------------- base_tier_validation/i18n/nl_NL.po | 740 ----------------- base_tier_validation/i18n/sv.po | 758 ------------------ base_tier_validation/i18n/tr.po | 732 ----------------- base_tier_validation/i18n/zh_CN.po | 744 ----------------- base_tier_validation/models/__init__.py | 7 - .../models/res_config_settings.py | 14 - base_tier_validation/models/res_users.py | 64 -- .../models/tier_definition.py | 90 --- base_tier_validation/models/tier_review.py | 128 --- .../models/tier_validation.py | 594 -------------- base_tier_validation/readme/CONFIGURE.rst | 11 - base_tier_validation/readme/CONTRIBUTORS.rst | 7 - base_tier_validation/readme/DESCRIPTION.rst | 13 - base_tier_validation/readme/HISTORY.rst | 91 --- base_tier_validation/readme/ROADMAP.rst | 20 - .../security/ir.model.access.csv | 5 - .../security/tier_validation_security.xml | 19 - .../static/description/icon.png | Bin 9455 -> 0 bytes .../static/description/index.html | 583 -------------- .../static/src/js/ir_model.esm.js | 29 - .../static/src/js/main.esm.js | 7 - .../static/src/js/review_group_view.esm.js | 51 -- .../static/src/js/review_groups.esm.js | 52 -- .../src/js/review_notification_handler.esm.js | 26 - .../src/js/reviewer_menu_container.esm.js | 25 - .../static/src/js/reviewer_menu_view.esm.js | 29 - .../static/src/js/systray.esm.js | 104 --- .../static/src/js/systray_service.esm.js | 17 - .../static/src/js/tier_review_widget.esm.js | 36 - .../static/src/scss/review.scss | 41 - .../static/src/scss/systray.scss | 143 ---- .../src/xml/reviewer_menu_container.xml | 8 - .../static/src/xml/systray.xml | 97 --- .../static/src/xml/tier_review_template.xml | 119 --- .../templates/tier_validation_templates.xml | 105 --- base_tier_validation/tests/__init__.py | 4 - base_tier_validation/tests/common.py | 92 --- .../tests/test_tier_validation.py | 535 ------------ .../tests/tier_validation_tester.py | 57 -- .../views/res_config_settings_views.xml | 83 -- .../views/tier_definition_view.xml | 154 ---- .../views/tier_review_view.xml | 25 - base_tier_validation/wizard/__init__.py | 3 - base_tier_validation/wizard/comment_wizard.py | 25 - .../wizard/comment_wizard_view.xml | 26 - .../odoo/addons/base_tier_validation | 1 - setup/base_tier_validation/setup.py | 6 - 56 files changed, 10520 deletions(-) delete mode 100644 base_tier_validation/README.rst delete mode 100644 base_tier_validation/__init__.py delete mode 100644 base_tier_validation/__manifest__.py delete mode 100644 base_tier_validation/data/mail_data.xml delete mode 100644 base_tier_validation/i18n/base_tier_validation.pot delete mode 100644 base_tier_validation/i18n/es.po delete mode 100644 base_tier_validation/i18n/es_MX.po delete mode 100644 base_tier_validation/i18n/fr.po delete mode 100644 base_tier_validation/i18n/it.po delete mode 100644 base_tier_validation/i18n/nl_NL.po delete mode 100644 base_tier_validation/i18n/sv.po delete mode 100644 base_tier_validation/i18n/tr.po delete mode 100644 base_tier_validation/i18n/zh_CN.po delete mode 100644 base_tier_validation/models/__init__.py delete mode 100644 base_tier_validation/models/res_config_settings.py delete mode 100644 base_tier_validation/models/res_users.py delete mode 100644 base_tier_validation/models/tier_definition.py delete mode 100644 base_tier_validation/models/tier_review.py delete mode 100644 base_tier_validation/models/tier_validation.py delete mode 100644 base_tier_validation/readme/CONFIGURE.rst delete mode 100644 base_tier_validation/readme/CONTRIBUTORS.rst delete mode 100644 base_tier_validation/readme/DESCRIPTION.rst delete mode 100644 base_tier_validation/readme/HISTORY.rst delete mode 100644 base_tier_validation/readme/ROADMAP.rst delete mode 100644 base_tier_validation/security/ir.model.access.csv delete mode 100644 base_tier_validation/security/tier_validation_security.xml delete mode 100644 base_tier_validation/static/description/icon.png delete mode 100644 base_tier_validation/static/description/index.html delete mode 100644 base_tier_validation/static/src/js/ir_model.esm.js delete mode 100644 base_tier_validation/static/src/js/main.esm.js delete mode 100644 base_tier_validation/static/src/js/review_group_view.esm.js delete mode 100644 base_tier_validation/static/src/js/review_groups.esm.js delete mode 100644 base_tier_validation/static/src/js/review_notification_handler.esm.js delete mode 100644 base_tier_validation/static/src/js/reviewer_menu_container.esm.js delete mode 100644 base_tier_validation/static/src/js/reviewer_menu_view.esm.js delete mode 100644 base_tier_validation/static/src/js/systray.esm.js delete mode 100644 base_tier_validation/static/src/js/systray_service.esm.js delete mode 100644 base_tier_validation/static/src/js/tier_review_widget.esm.js delete mode 100644 base_tier_validation/static/src/scss/review.scss delete mode 100644 base_tier_validation/static/src/scss/systray.scss delete mode 100644 base_tier_validation/static/src/xml/reviewer_menu_container.xml delete mode 100644 base_tier_validation/static/src/xml/systray.xml delete mode 100644 base_tier_validation/static/src/xml/tier_review_template.xml delete mode 100644 base_tier_validation/templates/tier_validation_templates.xml delete mode 100644 base_tier_validation/tests/__init__.py delete mode 100644 base_tier_validation/tests/common.py delete mode 100644 base_tier_validation/tests/test_tier_validation.py delete mode 100644 base_tier_validation/tests/tier_validation_tester.py delete mode 100644 base_tier_validation/views/res_config_settings_views.xml delete mode 100644 base_tier_validation/views/tier_definition_view.xml delete mode 100644 base_tier_validation/views/tier_review_view.xml delete mode 100644 base_tier_validation/wizard/__init__.py delete mode 100644 base_tier_validation/wizard/comment_wizard.py delete mode 100644 base_tier_validation/wizard/comment_wizard_view.xml delete mode 120000 setup/base_tier_validation/odoo/addons/base_tier_validation delete mode 100644 setup/base_tier_validation/setup.py diff --git a/base_tier_validation/README.rst b/base_tier_validation/README.rst deleted file mode 100644 index 93ee8097..00000000 --- a/base_tier_validation/README.rst +++ /dev/null @@ -1,236 +0,0 @@ -==================== -Base Tier Validation -==================== - -.. - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! This file is generated by oca-gen-addon-readme !! - !! changes will be overwritten. !! - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:9830ee56255d7af0c50c3f2ebbd6d11100fb137ab16413f00d5b5c2206d88967 - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png - :target: https://odoo-community.org/page/development-status - :alt: Mature -.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png - :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html - :alt: License: AGPL-3 -.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--ux-lightgray.png?logo=github - :target: https://github.com/OCA/server-ux/tree/16.0/base_tier_validation - :alt: OCA/server-ux -.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/server-ux-16-0/server-ux-16-0-base_tier_validation - :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/server-ux&target_branch=16.0 - :alt: Try me on Runboat - -|badge1| |badge2| |badge3| |badge4| |badge5| - -Validating some operations is a common need across different areas in a company -and sometimes it also involves several people and stages in the process. With -this module you will be able to define your custom validation workflows for -any Odoo document. - -This module does not provide a functionality by itself but an abstract model -to implement a validation process based on tiers on other models (e.g. -purchase orders, sales orders, budgets, expenses...). - -**Note:** To be able to use this module in a new model you will need some -development. - -See `purchase_tier_validation `_ as an example of implementation. - -**Table of contents** - -.. contents:: - :local: - -Configuration -============= - -To configure this module, you need to: - -#. Go to *Settings > Technical > Tier Validations > Tier Definition*. -#. Create as many tiers as you want for any model having tier validation - functionality. - -**Note:** - -* If check *Notify Reviewers on Creation*, all possible reviewers will be notified by email when this definition is triggered. -* If check *Comment*, reviewers can comment after click Validate or Reject. -* If check *Approve by sequence*, reviewers is forced to review by specified sequence. - -Known issues / Roadmap -====================== - -This is the list of known issues for this module. Any proposal for improvement will -be very valuable. - -* **Issue:** - - When using `approve_sequence` option in any tier.definition there can be inconsistencies - in the systray notifications. - - **Description:** - - Field `can_review` in tier.review is used to filter out, in the systray notifications, - the reviews a user can approve. This `can_review` field is updated **in the database** - in method `review_user_count`, this can make it very inconsistent for databases - with a lot of users and recurring updates that can change the expected behavior. - -* **Migration to 15.0:** - - The parameter _tier_validation_manual_config will become False, on 14.0, the default - value is True, as the change is applied after the migration. In order to use the new - behavior we need to modify the value on our expected model. - -Changelog -========= - -14.0.1.0.0 (2020-11-19) -~~~~~~~~~~~~~~~~~~~~~~~ - -Migrated to Odoo 14. - -13.0.1.2.2 (2020-08-30) -~~~~~~~~~~~~~~~~~~~~~~~ - -Fixes: - -- When using approve_sequence option in any tier.definition there can be inconsistencies in the systray notifications -- When using approve_sequence, still not approve only the needed sequence, but also other sequence for the same approver - -12.0.3.3.1 (2019-12-02) -~~~~~~~~~~~~~~~~~~~~~~~ - -Fixes: - -- Show comment on Reviews Table. -- Edit notification with approve_sequence. - -12.0.3.3.0 (2019-11-27) -~~~~~~~~~~~~~~~~~~~~~~~ - -New features: - -- Add comment on Reviews Table. -- Approve by sequence. - -12.0.3.2.1 (2019-11-26) -~~~~~~~~~~~~~~~~~~~~~~~ - -Fixes: - -- Remove message_subscribe_users - -12.0.3.2.0 (2019-11-25) -~~~~~~~~~~~~~~~~~~~~~~~ - -New features: - -- Notify reviewers - -12.0.3.1.0 (2019-07-08) -~~~~~~~~~~~~~~~~~~~~~~~ - -Fixes: - -- Singleton error - -12.0.3.0.0 (2019-12-02) -~~~~~~~~~~~~~~~~~~~~~~~ - -Fixes: - -- Edit Reviews Table - -12.0.2.1.0 (2019-05-29) -~~~~~~~~~~~~~~~~~~~~~~~ - -Fixes: - -- Edit drop-down style width and position - -12.0.2.0.0 (2019-05-28) -~~~~~~~~~~~~~~~~~~~~~~~ - -New features: - -- Pass parameters as functions. -- Add Systray. - -12.0.1.0.0 (2019-02-18) -~~~~~~~~~~~~~~~~~~~~~~~ - -Migrated to Odoo 12. - -11.0.1.0.0 (2018-05-09) -~~~~~~~~~~~~~~~~~~~~~~~ - -Migrated to Odoo 11. - -10.0.1.0.0 (2018-03-26) -~~~~~~~~~~~~~~~~~~~~~~~ - -Migrated to Odoo 10. - -9.0.1.0.0 (2017-12-02) -~~~~~~~~~~~~~~~~~~~~~~~ - -First version. - -Bug Tracker -=========== - -Bugs are tracked on `GitHub Issues `_. -In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us to smash it by providing a detailed and welcomed -`feedback `_. - -Do not contact contributors directly about support or help with technical issues. - -Credits -======= - -Authors -~~~~~~~ - -* ForgeFlow - -Contributors -~~~~~~~~~~~~ - -* Lois Rilo -* Naglis Jonaitis -* Adrià Gil Sorribes -* Pimolnat Suntian -* Pedro Gonzalez -* Kitti U. -* Saran Lim. - -Maintainers -~~~~~~~~~~~ - -This module is maintained by the OCA. - -.. image:: https://odoo-community.org/logo.png - :alt: Odoo Community Association - :target: https://odoo-community.org - -OCA, or the Odoo Community Association, is a nonprofit organization whose -mission is to support the collaborative development of Odoo features and -promote its widespread use. - -.. |maintainer-LoisRForgeFlow| image:: https://github.com/LoisRForgeFlow.png?size=40px - :target: https://github.com/LoisRForgeFlow - :alt: LoisRForgeFlow - -Current `maintainer `__: - -|maintainer-LoisRForgeFlow| - -This module is part of the `OCA/server-ux `_ project on GitHub. - -You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/base_tier_validation/__init__.py b/base_tier_validation/__init__.py deleted file mode 100644 index 93aa2c1f..00000000 --- a/base_tier_validation/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from . import models -from . import wizard diff --git a/base_tier_validation/__manifest__.py b/base_tier_validation/__manifest__.py deleted file mode 100644 index 27833674..00000000 --- a/base_tier_validation/__manifest__.py +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright 2017-19 ForgeFlow S.L. (https://www.forgeflow.com) -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -{ - "name": "Base Tier Validation", - "summary": "Implement a validation process based on tiers.", - "version": "16.0.1.3.4", - "development_status": "Mature", - "maintainers": ["LoisRForgeFlow"], - "category": "Tools", - "website": "https://github.com/OCA/server-ux", - "author": "ForgeFlow, Odoo Community Association (OCA)", - "license": "AGPL-3", - "application": False, - "installable": True, - "depends": ["mail"], - "data": [ - "data/mail_data.xml", - "security/ir.model.access.csv", - "security/tier_validation_security.xml", - "views/res_config_settings_views.xml", - "views/tier_definition_view.xml", - "views/tier_review_view.xml", - "wizard/comment_wizard_view.xml", - "templates/tier_validation_templates.xml", - ], - "assets": { - "web.assets_backend": [ - "/base_tier_validation/static/src/scss/systray.scss", - "/base_tier_validation/static/src/scss/review.scss", - "/base_tier_validation/static/src/js/main.esm.js", - "/base_tier_validation/static/src/js/ir_model.esm.js", - "/base_tier_validation/static/src/js/systray_service.esm.js", - "/base_tier_validation/static/src/js/systray.esm.js", - "/base_tier_validation/static/src/js/review_groups.esm.js", - "/base_tier_validation/static/src/js/reviewer_menu_view.esm.js", - "/base_tier_validation/static/src/js/tier_review_widget.esm.js", - "/base_tier_validation/static/src/js/review_group_view.esm.js", - "/base_tier_validation/static/src/js/reviewer_menu_container.esm.js", - "/base_tier_validation/static/src/js/review_notification_handler.esm.js", - "/base_tier_validation/static/src/xml/**/*", - ], - }, -} diff --git a/base_tier_validation/data/mail_data.xml b/base_tier_validation/data/mail_data.xml deleted file mode 100644 index 8207bc4c..00000000 --- a/base_tier_validation/data/mail_data.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - Tier Validation Requested - - - - - - Tier Validation Accepted Notification - - - - - - Tier Validation Rejected Notification - - - - - - Tier Validation Restarted - - - - - diff --git a/base_tier_validation/i18n/base_tier_validation.pot b/base_tier_validation/i18n/base_tier_validation.pot deleted file mode 100644 index a2b2c8ff..00000000 --- a/base_tier_validation/i18n/base_tier_validation.pot +++ /dev/null @@ -1,710 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * base_tier_validation -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 16.0\n" -"Report-Msgid-Bugs-To: \n" -"Last-Translator: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "0 Pending" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" This Record needs to be\n" -" validated." -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" Operation has been\n" -" rejected\n" -" ." -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" Operation has been\n" -" validated\n" -" !" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Name" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Bypassed, if previous tier was validated by same reviewer" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review has been requested by %s." -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was accepted" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was accepted. (%s)" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was rejected by %(user)s. (%(comment)s)" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was rejected by %s." -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A validation process is still open for at least one record." -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__active -msgid "Active" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "Activity" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "All" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__group -msgid "Any user in a specific group" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Apply On" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence -msgid "Approval order by the specified sequence number" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence_bypass -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence_bypass -msgid "Approve Sequence Bypass" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence -msgid "Approve by sequence" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__approved -msgid "Approved" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass -msgid "" -"Bypassed (auto validated), if previous tier was validated by same reviewer" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__can_review -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__can_review -msgid "Can Review" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__can_review -msgid "" -"Can review will be marked if the review is pending and the\n" -" approve sequence has been achieved" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard -msgid "Cancel" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#. odoo-javascript -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__comment -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__has_comment -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__has_comment -#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard -#, python-format -msgid "Comment" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_comment_wizard -msgid "Comment Wizard" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__comment -msgid "Comments" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__company_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__company_id -msgid "Company" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_res_config_settings -msgid "Config Settings" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_uid -msgid "Created by" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_date -msgid "Created on" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_type -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__definition_id -msgid "Definition" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_domain -msgid "Definition Domain" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__name -#, python-format -msgid "Description" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__display_name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__display_name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__display_name -msgid "Display Name" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__definition_type__domain -msgid "Domain" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__done_by -msgid "Done By" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Done by" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__field -msgid "Field in related record" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_review.py:0 -#, python-format -msgid "Group %s" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "Group By" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__has_comment -msgid "Has Comment" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__id -msgid "ID" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_create -msgid "" -"If set, all possible reviewers will be notified by email when this " -"definition is triggered." -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard____last_update -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition____last_update -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review____last_update -msgid "Last Modified on" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_uid -msgid "Last Updated by" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_date -msgid "Last Updated on" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "Model" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "More Options" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__need_validation -msgid "Need Validation" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_definition.py:0 -#, python-format -msgid "New Tier Validation" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__next_review -msgid "Next Review" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Next: %s" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "No reviews to do." -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create -msgid "Notify Reviewers on Creation" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Operation has been rejected." -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Operation has been validated!" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Option to forward a tier validation to other reviewer, and backward" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Option to use python formula to get reviewers and find documents" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending -#, python-format -msgid "Pending" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id -msgid "Referenced Model" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "Reject" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected -msgid "Rejected" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected_message -msgid "Rejected Message" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__res_id -msgid "Related Document ID" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__model -msgid "Related Document Model" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons -msgid "Request Validation" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__requested_by -msgid "Requested By" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Requested by" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_id -msgid "Res" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_model -msgid "Res Model" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons -msgid "Restart Validation" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__review_ids -msgid "Review" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_id -msgid "Reviewer" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_field_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_field_id -msgid "Reviewer field" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_group_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_group_id -msgid "Reviewer group" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_ids -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__reviewer_ids -msgid "Reviewers" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_res_users__review_ids -#, python-format -msgid "Reviews" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__sequence -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__sequence -#, python-format -msgid "Sequence" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__individual -msgid "Specific user" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__status -#, python-format -msgid "Status" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "The operation is under validation." -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "The review has been reset by %s." -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_review.py:0 -#, python-format -msgid "There are no res.users in the selected field" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "This %s needs to be validated" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "" -"This action needs to be validated for at least one record. \n" -"Please request a validation." -msgstr "" - -#. module: base_tier_validation -#: model:ir.actions.act_window,name:base_tier_validation.tier_definition_action -#: model:ir.model,name:base_tier_validation.model_tier_definition -#: model:ir.ui.menu,name:base_tier_validation.menu_tier_definition -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Tier Definition" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_formula -msgid "Tier Formula" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_forward -msgid "Tier Forward & Backward" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_tier_review -msgid "Tier Review" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Tier Validation" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_tier_validation -msgid "Tier Validation (abstract)" -msgstr "" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_accepted -msgid "Tier Validation Accepted Notification" -msgstr "" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_rejected -msgid "Tier Validation Rejected Notification" -msgstr "" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested -msgid "Tier Validation Requested" -msgstr "" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_restarted -msgid "Tier Validation Restarted" -msgstr "" - -#. module: base_tier_validation -#: model:ir.ui.menu,name:base_tier_validation.menu_tier_confirmation -msgid "Tier Validations" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__to_validate_message -msgid "To Validate Message" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__todo_by -msgid "Todo By" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Todo by" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_res_users -msgid "User" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__valid_reviewer_field_ids -msgid "Valid Reviewer Field" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "Validate" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__validate_reject -msgid "Validate Reject" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated -msgid "Validated" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated_message -msgid "Validated Message" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__review_type -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__review_type -msgid "Validated by" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_date -#, python-format -msgid "Validation Date" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_formated_date -msgid "Validation Formated Date" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status -msgid "Validation Status" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids -msgid "Validations" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no -msgid "Without validation" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "e.g. Tier Validation for..." -msgstr "" diff --git a/base_tier_validation/i18n/es.po b/base_tier_validation/i18n/es.po deleted file mode 100644 index bd8deffc..00000000 --- a/base_tier_validation/i18n/es.po +++ /dev/null @@ -1,737 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * base_tier_validation -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 13.0\n" -"Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2023-11-18 17:35+0000\n" -"Last-Translator: Ivorra78 \n" -"Language-Team: none\n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.17\n" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "0 Pending" -msgstr "0 Pendientes" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" This Record needs to be\n" -" validated." -msgstr "" -"\n" -" Este registro debe ser\n" -" validado." - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" Operation has been\n" -" rejected\n" -" ." -msgstr "" -"\n" -" La operación ha sido\n" -" rechazada\n" -" ." - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" Operation has been\n" -" validated\n" -" !" -msgstr "" -"\n" -" La operación ha sido\n" -" validada\n" -" !" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Name" -msgstr "Nombre" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Bypassed, if previous tier was validated by same reviewer" -msgstr "" -"Omitido, si el nivel anterior fue validado por el mismo revisor" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review has been requested by %s." -msgstr "Una revisión fue solicitada por %s." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was accepted" -msgstr "Una revisión fue aceptada" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was accepted. (%s)" -msgstr "Una revisión fue aceptada. (%s)" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was rejected by %(user)s. (%(comment)s)" -msgstr "%(user)s rechazó una reseña. %(comment)s" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was rejected by %s." -msgstr "Una revisión fue rechaza por %s." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A validation process is still open for at least one record." -msgstr "Un proceso de validación está aún abierto para al menos un registro." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__active -msgid "Active" -msgstr "Activo" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "Activity" -msgstr "Actividades" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "All" -msgstr "Todos" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__group -msgid "Any user in a specific group" -msgstr "Cualquier usuario de un grupo específico" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Apply On" -msgstr "Aplicar en" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence -msgid "Approval order by the specified sequence number" -msgstr "Orden de aprobación por el número de secuencia especificado" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence_bypass -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence_bypass -msgid "Approve Sequence Bypass" -msgstr "Aprobar Omisión de Secuencia" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence -msgid "Approve by sequence" -msgstr "Aprobar por secuencia" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__approved -msgid "Approved" -msgstr "Aprobado" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass -msgid "" -"Bypassed (auto validated), if previous tier was validated by same reviewer" -msgstr "" -"Omitido (validado automático), si el mismo revisor validó el nivel anterior" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__can_review -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__can_review -msgid "Can Review" -msgstr "Puede revisar" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__can_review -msgid "" -"Can review will be marked if the review is pending and the\n" -" approve sequence has been achieved" -msgstr "" -"Puede revisar será establecido si la revisión está pendiente y la\n" -" secuencia de aprobación se ha alcanzado" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard -msgid "Cancel" -msgstr "Cancelar" - -#. module: base_tier_validation -#. odoo-python -#. odoo-javascript -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__comment -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__has_comment -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__has_comment -#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard -#, python-format -msgid "Comment" -msgstr "Comentar" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_comment_wizard -msgid "Comment Wizard" -msgstr "Wizard Comentario" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__comment -msgid "Comments" -msgstr "Comentarios" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__company_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__company_id -msgid "Company" -msgstr "Compañía" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_res_config_settings -msgid "Config Settings" -msgstr "Configuración de Ajustes" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_uid -msgid "Created by" -msgstr "Creado por" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_date -msgid "Created on" -msgstr "Creado en" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_type -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__definition_id -msgid "Definition" -msgstr "Definición" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_domain -msgid "Definition Domain" -msgstr "Dominio de definición" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__name -#, python-format -msgid "Description" -msgstr "Descripción" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__display_name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__display_name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__display_name -msgid "Display Name" -msgstr "Nombre mostrado" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__definition_type__domain -msgid "Domain" -msgstr "Dominio" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__done_by -msgid "Done By" -msgstr "Hecho Por" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Done by" -msgstr "Hecho Por" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__field -msgid "Field in related record" -msgstr "Campo en el registro relacionado" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_review.py:0 -#, python-format -msgid "Group %s" -msgstr "Grupo %s" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "Group By" -msgstr "Agrupar por" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__has_comment -msgid "Has Comment" -msgstr "Ha comentado" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__id -msgid "ID" -msgstr "ID" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_create -msgid "" -"If set, all possible reviewers will be notified by email when this " -"definition is triggered." -msgstr "" -"Si se establece, todos los posibles revisores serán notificados por correo " -"electrónico cuando se active esta definición." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard____last_update -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition____last_update -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review____last_update -msgid "Last Modified on" -msgstr "Última modificación en" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_uid -msgid "Last Updated by" -msgstr "Última actualización de" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_date -msgid "Last Updated on" -msgstr "Última actualización en" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "Model" -msgstr "Modelo" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "More Options" -msgstr "Más opciones" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__need_validation -msgid "Need Validation" -msgstr "Necesita validación" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_definition.py:0 -#, python-format -msgid "New Tier Validation" -msgstr "Nueva Validación de Nivel" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__next_review -msgid "Next Review" -msgstr "Siguiente Revisión" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Next: %s" -msgstr "Siguiente: %s" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "No reviews to do." -msgstr "No hay revisiones a realizar." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create -msgid "Notify Reviewers on Creation" -msgstr "Notificar a los revisores en la creación" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Operation has been rejected." -msgstr "La operación ha sido rechazada." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Operation has been validated!" -msgstr "¡La operación ha sido validada!" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Option to forward a tier validation to other reviewer, and backward" -msgstr "" -"Opción de reenviar una validación de nivel a otro revisor, y hacia atrás" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Option to use python formula to get reviewers and find documents" -msgstr "" -"Opción de utilizar una fórmula python para obtener revisores y encontrar " -"documentos" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending -#, python-format -msgid "Pending" -msgstr "Pendiente" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id -msgid "Referenced Model" -msgstr "Modelo referenciado" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "Reject" -msgstr "Rechazar" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected -msgid "Rejected" -msgstr "Rechazado" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected_message -msgid "Rejected Message" -msgstr "Mensaje rechazado" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__res_id -msgid "Related Document ID" -msgstr "ID del Documento Relacionado" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__model -msgid "Related Document Model" -msgstr "Modelo del Documento Relacionado" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons -msgid "Request Validation" -msgstr "Solicitar validación" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__requested_by -msgid "Requested By" -msgstr "Solicitado Por" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Requested by" -msgstr "Solicitado Por" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_id -msgid "Res" -msgstr "Recurso" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_model -msgid "Res Model" -msgstr "Modelo Res" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons -msgid "Restart Validation" -msgstr "Reiniciar la Validación" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__review_ids -msgid "Review" -msgstr "Revisor" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_id -msgid "Reviewer" -msgstr "Revisor" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_field_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_field_id -msgid "Reviewer field" -msgstr "Campo revisor" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_group_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_group_id -msgid "Reviewer group" -msgstr "Grupo revisor" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_ids -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__reviewer_ids -msgid "Reviewers" -msgstr "Revisores" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_res_users__review_ids -#, python-format -msgid "Reviews" -msgstr "Revisiones" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__sequence -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__sequence -#, python-format -msgid "Sequence" -msgstr "Secuencia" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__individual -msgid "Specific user" -msgstr "Usuario específico" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__status -#, python-format -msgid "Status" -msgstr "Estado" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "The operation is under validation." -msgstr "Esta operación está en proceso de validación." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "The review has been reset by %s." -msgstr "La revisión ha sido reiniciada por %s." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_review.py:0 -#, python-format -msgid "There are no res.users in the selected field" -msgstr "No hay res.usuarios en el campo seleccionado" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "This %s needs to be validated" -msgstr "Este %s necesita ser validado" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "" -"This action needs to be validated for at least one record. \n" -"Please request a validation." -msgstr "" -"Esta acción necesita ser validada para algún registro.\n" -"Por favor, solicita una validación." - -#. module: base_tier_validation -#: model:ir.actions.act_window,name:base_tier_validation.tier_definition_action -#: model:ir.model,name:base_tier_validation.model_tier_definition -#: model:ir.ui.menu,name:base_tier_validation.menu_tier_definition -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Tier Definition" -msgstr "Definición de Nivel" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_formula -msgid "Tier Formula" -msgstr "Fórmula de niveles" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_forward -msgid "Tier Forward & Backward" -msgstr "Nivel hacia delante y hacia atrás" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_tier_review -msgid "Tier Review" -msgstr "Revisión de Nivel" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Tier Validation" -msgstr "Validación por niveles" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_tier_validation -msgid "Tier Validation (abstract)" -msgstr "Validaciones de Nivel (abstracto)" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_accepted -msgid "Tier Validation Accepted Notification" -msgstr "Notificación de Validación de Nivel Aceptada" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_rejected -msgid "Tier Validation Rejected Notification" -msgstr "Validación de nivel Notificación rechazada" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested -msgid "Tier Validation Requested" -msgstr "Validación de nivel solicitada" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_restarted -msgid "Tier Validation Restarted" -msgstr "Validación de nivel reiniciada" - -#. module: base_tier_validation -#: model:ir.ui.menu,name:base_tier_validation.menu_tier_confirmation -msgid "Tier Validations" -msgstr "Validaciones de Nivel" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__to_validate_message -msgid "To Validate Message" -msgstr "Para validar el mensaje" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__todo_by -msgid "Todo By" -msgstr "Por hacer por" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Todo by" -msgstr "Para hacer por" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_res_users -msgid "User" -msgstr "usuario" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__valid_reviewer_field_ids -msgid "Valid Reviewer Field" -msgstr "Campo Revisor válido" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "Validate" -msgstr "Validar" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__validate_reject -msgid "Validate Reject" -msgstr "Validar Rechazar" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated -msgid "Validated" -msgstr "Validado" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated_message -msgid "Validated Message" -msgstr "Mensaje Validado" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__review_type -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__review_type -msgid "Validated by" -msgstr "Validado por" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_date -#, python-format -msgid "Validation Date" -msgstr "Fecha de Validación" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_formated_date -msgid "Validation Formated Date" -msgstr "Fecha de Validación Formateada" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status -msgid "Validation Status" -msgstr "Estado de validación" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids -msgid "Validations" -msgstr "Validaciones" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no -msgid "Without validation" -msgstr "Sin validación" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "e.g. Tier Validation for..." -msgstr "ej. Validación de Nivel por..." - -#~ msgid "Tier" -#~ msgstr "Nivel" diff --git a/base_tier_validation/i18n/es_MX.po b/base_tier_validation/i18n/es_MX.po deleted file mode 100644 index c7132948..00000000 --- a/base_tier_validation/i18n/es_MX.po +++ /dev/null @@ -1,740 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * base_tier_validation -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" -"Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2021-08-16 22:50+0000\n" -"Last-Translator: Jesús Alan Ramos Rodríguez \n" -"Language-Team: none\n" -"Language: es_MX\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.3.2\n" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "0 Pending" -msgstr "0 Pendientes" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" This Record needs to be\n" -" validated." -msgstr "" -"\n" -" Este registro necesita ser\n" -" validado." - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" Operation has been\n" -" rejected\n" -" ." -msgstr "" -"\n" -" La operación ha sido\n" -" rechazada\n" -" ." - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" Operation has been\n" -" validated\n" -" !" -msgstr "" -"\n" -" ¡La operación ha sido\n" -" validada\n" -" !" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Name" -msgstr "Nombre" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Bypassed, if previous tier was validated by same reviewer" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review has been requested by %s." -msgstr "%s ha solicitado una revisión." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was accepted" -msgstr "Se aceptó una revisión" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was accepted. (%s)" -msgstr "Se aceptó una revisión. (%s)" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was rejected by %(user)s. (%(comment)s)" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was rejected by %s." -msgstr "%s rechazó una revisión." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A validation process is still open for at least one record." -msgstr "" -"Todavía hay un proceso de validación abierto para al menos un registro." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__active -msgid "Active" -msgstr "Activo" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "Activity" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "All" -msgstr "Todos" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__group -msgid "Any user in a specific group" -msgstr "Cualquier usuario de un grupo específico" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Apply On" -msgstr "Aplicar en" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence -msgid "Approval order by the specified sequence number" -msgstr "Orden de aprobación por el número de secuencia especificado" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence_bypass -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence_bypass -msgid "Approve Sequence Bypass" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence -msgid "Approve by sequence" -msgstr "Aprobar por secuencia" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__approved -msgid "Approved" -msgstr "Aprobado" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass -msgid "" -"Bypassed (auto validated), if previous tier was validated by same reviewer" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__can_review -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__can_review -msgid "Can Review" -msgstr "Puede revisar" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__can_review -msgid "" -"Can review will be marked if the review is pending and the\n" -" approve sequence has been achieved" -msgstr "" -"Puede revisar se marcará si la revisión está pendiente y\n" -" se ha logrado aprobar la secuencia" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard -msgid "Cancel" -msgstr "Cancelado" - -#. module: base_tier_validation -#. odoo-python -#. odoo-javascript -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__comment -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__has_comment -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__has_comment -#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard -#, python-format -msgid "Comment" -msgstr "Comentario" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_comment_wizard -msgid "Comment Wizard" -msgstr "Asistente de comentarios" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__comment -msgid "Comments" -msgstr "Comentarios" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__company_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__company_id -msgid "Company" -msgstr "Empresa" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_res_config_settings -msgid "Config Settings" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_uid -msgid "Created by" -msgstr "Creado por" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_date -msgid "Created on" -msgstr "Creado en" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_type -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__definition_id -msgid "Definition" -msgstr "Definición de Nivel" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_domain -msgid "Definition Domain" -msgstr "Dominio de definición" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__name -#, python-format -msgid "Description" -msgstr "Descripción" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__display_name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__display_name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__display_name -msgid "Display Name" -msgstr "Nombre mostrado" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__definition_type__domain -msgid "Domain" -msgstr "Dominio" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__done_by -msgid "Done By" -msgstr "Realizado por" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Done by" -msgstr "Realizado por" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__field -msgid "Field in related record" -msgstr "Campo en registro relacionado" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_review.py:0 -#, python-format -msgid "Group %s" -msgstr "Grupo %s" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "Group By" -msgstr "Agrupar por" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__has_comment -msgid "Has Comment" -msgstr "Tiene comentario" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__id -msgid "ID" -msgstr "Identificación" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_create -msgid "" -"If set, all possible reviewers will be notified by email when this " -"definition is triggered." -msgstr "" -"Si se establece, todos los posibles revisores serán notificados por correo " -"electrónico cuando se active esta definición." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard____last_update -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition____last_update -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review____last_update -msgid "Last Modified on" -msgstr "Última modificación el" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_uid -msgid "Last Updated by" -msgstr "Última modificación por" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_date -msgid "Last Updated on" -msgstr "Última modificación en" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "Model" -msgstr "Modelo" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "More Options" -msgstr "Más opciones" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__need_validation -msgid "Need Validation" -msgstr "Necesita validación" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_definition.py:0 -#, python-format -msgid "New Tier Validation" -msgstr "Nueva Definición de Nivel" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__next_review -msgid "Next Review" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Next: %s" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "No reviews to do." -msgstr "No hay revisiones que hacer." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create -msgid "Notify Reviewers on Creation" -msgstr "Notificar a los revisores sobre la creación" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Operation has been rejected." -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Operation has been validated!" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Option to forward a tier validation to other reviewer, and backward" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Option to use python formula to get reviewers and find documents" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending -#, python-format -msgid "Pending" -msgstr "Pendiente" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id -msgid "Referenced Model" -msgstr "Modelo referenciado" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "Reject" -msgstr "Rechazar" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected -msgid "Rejected" -msgstr "Rechazado" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected_message -msgid "Rejected Message" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__res_id -msgid "Related Document ID" -msgstr "ID de documento relacionado" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__model -msgid "Related Document Model" -msgstr "Modelo de documento relacionado" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons -msgid "Request Validation" -msgstr "Solicitar Validación" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__requested_by -msgid "Requested By" -msgstr "Solicitado por" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Requested by" -msgstr "Solicitado por" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_id -msgid "Res" -msgstr "Res" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_model -msgid "Res Model" -msgstr "Modelo Res" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons -msgid "Restart Validation" -msgstr "Reiniciar la validación" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__review_ids -msgid "Review" -msgstr "Revisión" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_id -msgid "Reviewer" -msgstr "Evaluador" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_field_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_field_id -msgid "Reviewer field" -msgstr "Campo de revisor" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_group_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_group_id -msgid "Reviewer group" -msgstr "Grupo de revisores" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_ids -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__reviewer_ids -msgid "Reviewers" -msgstr "Revisores" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_res_users__review_ids -#, python-format -msgid "Reviews" -msgstr "Comentarios" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__sequence -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__sequence -#, python-format -msgid "Sequence" -msgstr "Secuencia" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__individual -msgid "Specific user" -msgstr "Usuario específico" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__status -#, python-format -msgid "Status" -msgstr "Estatus" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "The operation is under validation." -msgstr "La operación está en proceso de validación." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "The review has been reset by %s." -msgstr "%s ha restablecido la revisión." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_review.py:0 -#, python-format -msgid "There are no res.users in the selected field" -msgstr "No hay res.users en el campo seleccionado" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "This %s needs to be validated" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "" -"This action needs to be validated for at least one record. \n" -"Please request a validation." -msgstr "" -"Esta acción debe validarse para al menos un registro.\n" -"Solicite una validación." - -#. module: base_tier_validation -#: model:ir.actions.act_window,name:base_tier_validation.tier_definition_action -#: model:ir.model,name:base_tier_validation.model_tier_definition -#: model:ir.ui.menu,name:base_tier_validation.menu_tier_definition -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Tier Definition" -msgstr "Definición de Nivel" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_formula -msgid "Tier Formula" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_forward -msgid "Tier Forward & Backward" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_tier_review -msgid "Tier Review" -msgstr "Revisión de niveles" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Tier Validation" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_tier_validation -msgid "Tier Validation (abstract)" -msgstr "Validación de nivel (resumen)" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_accepted -msgid "Tier Validation Accepted Notification" -msgstr "Notificación de validación de nivel aceptada" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_rejected -msgid "Tier Validation Rejected Notification" -msgstr "Notificación de rechazo de validación de nivel" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested -msgid "Tier Validation Requested" -msgstr "Validación de nivel solicitada" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_restarted -msgid "Tier Validation Restarted" -msgstr "Se reinició la validación de nivel" - -#. module: base_tier_validation -#: model:ir.ui.menu,name:base_tier_validation.menu_tier_confirmation -msgid "Tier Validations" -msgstr "Validaciones de nivel" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__to_validate_message -msgid "To Validate Message" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__todo_by -msgid "Todo By" -msgstr "Por Hacer por" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Todo by" -msgstr "Por Hacer por" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_res_users -msgid "User" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__valid_reviewer_field_ids -msgid "Valid Reviewer Field" -msgstr "Campo de revisor válido" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "Validate" -msgstr "Validar" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__validate_reject -msgid "Validate Reject" -msgstr "Validar Rechazar" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated -msgid "Validated" -msgstr "Validado" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated_message -msgid "Validated Message" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__review_type -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__review_type -msgid "Validated by" -msgstr "Validado por" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_date -#, python-format -msgid "Validation Date" -msgstr "Fecha de validación" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_formated_date -msgid "Validation Formated Date" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status -msgid "Validation Status" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids -msgid "Validations" -msgstr "Validaciones" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no -msgid "Without validation" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "e.g. Tier Validation for..." -msgstr "p.ej. Validación de nivel para ..." - -#, python-format -#~ msgid "Activities" -#~ msgstr "Actividades" - -#~ msgid "Users" -#~ msgstr "Usuarios" - -#~ msgid "A review was rejected by {}. ({})" -#~ msgstr "{} rechazó una revisión. ({})" diff --git a/base_tier_validation/i18n/fr.po b/base_tier_validation/i18n/fr.po deleted file mode 100644 index ae3dea25..00000000 --- a/base_tier_validation/i18n/fr.po +++ /dev/null @@ -1,748 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * base_tier_validation -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" -"Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2023-10-19 12:51+0000\n" -"Last-Translator: Houzéfa Abbasbhay \n" -"Language-Team: none\n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.17\n" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "0 Pending" -msgstr "0 en attente" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" This Record needs to be\n" -" validated." -msgstr "" -"\n" -" Cet enregistrement.\n" -" requiert une validation" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" Operation has been\n" -" rejected\n" -" ." -msgstr "" -"\n" -" L'opération a été\n" -" rejetée\n" -" ." - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" Operation has been\n" -" validated\n" -" !" -msgstr "" -"\n" -" L'opération a été\n" -" validée\n" -" !" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Name" -msgstr "Nom" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Bypassed, if previous tier was validated by same reviewer" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review has been requested by %s." -msgstr "Une revue a été demandée par %s." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was accepted" -msgstr "Une revue a été acceptée" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was accepted. (%s)" -msgstr "Une revue a été acceptée. (%s)" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was rejected by %(user)s. (%(comment)s)" -msgstr "Une revue a été refusée par %(user)s. (%(comment)s)" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was rejected by %s." -msgstr "Une revue a été refusée par %s." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A validation process is still open for at least one record." -msgstr "" -"Un processus de validation est toujours en cours pour au moins un " -"enregistrement." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__active -msgid "Active" -msgstr "Actif" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "Activity" -msgstr "Activité" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "All" -msgstr "Tout" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__group -msgid "Any user in a specific group" -msgstr "Tout utilisateur d'un groupe spécifique" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Apply On" -msgstr "Appliquer sur" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence -msgid "Approval order by the specified sequence number" -msgstr "Ordre d'approbation suivant le numéro de séquence spécifié" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence_bypass -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence_bypass -msgid "Approve Sequence Bypass" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence -msgid "Approve by sequence" -msgstr "Approuver dans l'ordre" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__approved -msgid "Approved" -msgstr "Approuvé" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass -msgid "" -"Bypassed (auto validated), if previous tier was validated by same reviewer" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__can_review -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__can_review -msgid "Can Review" -msgstr "Revue possible" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__can_review -msgid "" -"Can review will be marked if the review is pending and the\n" -" approve sequence has been achieved" -msgstr "" -"La revue est marquée possible lorsqu'elle est en attente et\n" -" qu'une séquence d'approbation a été effectuée" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard -msgid "Cancel" -msgstr "Annuler" - -#. module: base_tier_validation -#. odoo-python -#. odoo-javascript -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__comment -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__has_comment -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__has_comment -#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard -#, python-format -msgid "Comment" -msgstr "Commentaire" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_comment_wizard -msgid "Comment Wizard" -msgstr "Assistant de saisie de commentaire" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__comment -msgid "Comments" -msgstr "Commentaires" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__company_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__company_id -msgid "Company" -msgstr "Société" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_res_config_settings -msgid "Config Settings" -msgstr "Paramètres de configuration" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_uid -msgid "Created by" -msgstr "Créé par" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_date -msgid "Created on" -msgstr "Créé le" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_type -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__definition_id -msgid "Definition" -msgstr "Définition" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_domain -msgid "Definition Domain" -msgstr "Domaine de la définition" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__name -#, python-format -msgid "Description" -msgstr "Description" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__display_name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__display_name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__display_name -msgid "Display Name" -msgstr "Nom d'affichage" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__definition_type__domain -msgid "Domain" -msgstr "Domaine" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__done_by -msgid "Done By" -msgstr "Fait par" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Done by" -msgstr "Fait par" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__field -msgid "Field in related record" -msgstr "Champ dans l'enregistrement rattaché" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_review.py:0 -#, python-format -msgid "Group %s" -msgstr "Groupe %s" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "Group By" -msgstr "Regrouper par" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__has_comment -msgid "Has Comment" -msgstr "Avec commentaire" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__id -msgid "ID" -msgstr "ID" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_create -msgid "" -"If set, all possible reviewers will be notified by email when this " -"definition is triggered." -msgstr "" -"Avec cette option, tous les réviseurs autorisés seront notifiés par email " -"lors du déclenchement de cette définition." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard____last_update -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition____last_update -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review____last_update -msgid "Last Modified on" -msgstr "Dernière modification le" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_uid -msgid "Last Updated by" -msgstr "Dernière mise à jour par" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_date -msgid "Last Updated on" -msgstr "Dernière mise à jour le" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "Model" -msgstr "Modèle" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "More Options" -msgstr "Plus d'options" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__need_validation -msgid "Need Validation" -msgstr "Validation requise" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_definition.py:0 -#, python-format -msgid "New Tier Validation" -msgstr "Nouveau niveau de validation" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__next_review -msgid "Next Review" -msgstr "Revue suivante" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Next: %s" -msgstr "Suivante : %s" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "No reviews to do." -msgstr "Aucune revue n'est nécessaire." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create -msgid "Notify Reviewers on Creation" -msgstr "Notifier les réviseurs à la création" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Operation has been rejected." -msgstr "L'opération a été rejetée." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Operation has been validated!" -msgstr "L'opération a été validée !" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Option to forward a tier validation to other reviewer, and backward" -msgstr "" -"Option pour transmettre le niveau de validation à un autre réviseur, et " -"inversement" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Option to use python formula to get reviewers and find documents" -msgstr "" -"Option pour utiliser une formule python pour calculer les réviseurs et " -"déterminer les enregistrements" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending -#, python-format -msgid "Pending" -msgstr "En attente" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id -msgid "Referenced Model" -msgstr "Modèle rattaché" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "Reject" -msgstr "Rejeter" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected -msgid "Rejected" -msgstr "Rejeté" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected_message -msgid "Rejected Message" -msgstr "Message de rejet" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__res_id -msgid "Related Document ID" -msgstr "ID de l'enregistrement rattaché" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__model -msgid "Related Document Model" -msgstr "Modèle de l'enregistrement rattaché" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons -msgid "Request Validation" -msgstr "Demander validation" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__requested_by -msgid "Requested By" -msgstr "Demandé par" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Requested by" -msgstr "Demandé par" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_id -msgid "Res" -msgstr "Enregistrement" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_model -msgid "Res Model" -msgstr "Modèle de l'enregistrement" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons -msgid "Restart Validation" -msgstr "Recommencer la validation" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__review_ids -msgid "Review" -msgstr "Revue" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_id -msgid "Reviewer" -msgstr "Réviseur" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_field_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_field_id -msgid "Reviewer field" -msgstr "Champ du réviseur" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_group_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_group_id -msgid "Reviewer group" -msgstr "Groupe des réviseurs" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_ids -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__reviewer_ids -msgid "Reviewers" -msgstr "Réviseurs" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_res_users__review_ids -#, python-format -msgid "Reviews" -msgstr "Revues" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__sequence -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__sequence -#, python-format -msgid "Sequence" -msgstr "Séquence" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__individual -msgid "Specific user" -msgstr "Utilisateur spécifique" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__status -#, python-format -msgid "Status" -msgstr "Statut" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "The operation is under validation." -msgstr "Cette opération est en cours de validation." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "The review has been reset by %s." -msgstr "Cette revue a été réinitialisée par %s." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_review.py:0 -#, python-format -msgid "There are no res.users in the selected field" -msgstr "Le champ sélectionné ne référence pas des res.users" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "This %s needs to be validated" -msgstr "%s : Cet enregistrement requiert une validation" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "" -"This action needs to be validated for at least one record. \n" -"Please request a validation." -msgstr "" -"Cette action requiert une validation pour au moins un des enregistrements. \n" -"Veuillez demander cette validation." - -#. module: base_tier_validation -#: model:ir.actions.act_window,name:base_tier_validation.tier_definition_action -#: model:ir.model,name:base_tier_validation.model_tier_definition -#: model:ir.ui.menu,name:base_tier_validation.menu_tier_definition -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Tier Definition" -msgstr "Définition de niveau" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_formula -msgid "Tier Formula" -msgstr "Formules sur les niveaux" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_forward -msgid "Tier Forward & Backward" -msgstr "Délégation des niveaux" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_tier_review -msgid "Tier Review" -msgstr "Revue d'un niveau" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Tier Validation" -msgstr "Validation par niveau" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_tier_validation -msgid "Tier Validation (abstract)" -msgstr "Validation d'un niveau (modèle abstrait)" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_accepted -msgid "Tier Validation Accepted Notification" -msgstr "Validation par niveau - Notification - Acceptée" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_rejected -msgid "Tier Validation Rejected Notification" -msgstr "Validation par niveau - Notification - Rejetée" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested -msgid "Tier Validation Requested" -msgstr "Validation par niveau - Demandée" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_restarted -msgid "Tier Validation Restarted" -msgstr "Validation par niveau - Redémarrée" - -#. module: base_tier_validation -#: model:ir.ui.menu,name:base_tier_validation.menu_tier_confirmation -msgid "Tier Validations" -msgstr "Validations par niveau" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__to_validate_message -msgid "To Validate Message" -msgstr "Message de demande de validation" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__todo_by -msgid "Todo By" -msgstr "À faire par" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Todo by" -msgstr "À faire par" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_res_users -msgid "User" -msgstr "Utilisateur" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__valid_reviewer_field_ids -msgid "Valid Reviewer Field" -msgstr "Champs réviseur valides" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "Validate" -msgstr "Valider" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__validate_reject -msgid "Validate Reject" -msgstr "Validation / Rejet" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated -msgid "Validated" -msgstr "Validé" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated_message -msgid "Validated Message" -msgstr "Message de validation" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__review_type -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__review_type -msgid "Validated by" -msgstr "Validé par" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_date -#, python-format -msgid "Validation Date" -msgstr "Date de validation" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_formated_date -msgid "Validation Formated Date" -msgstr "Date de validation formatée" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status -msgid "Validation Status" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids -msgid "Validations" -msgstr "Validations" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no -msgid "Without validation" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "e.g. Tier Validation for..." -msgstr "par ex Niveau de validation pour..." - -#, python-format -#~ msgid "Activities" -#~ msgstr "Activités" - -#~ msgid "Users" -#~ msgstr "Utilisateurs" - -#~ msgid "A review was rejected by {}. ({})" -#~ msgstr "Une vérification a été refusée par {}. ({})" - -#~ msgid "Any user in a specific group." -#~ msgstr "Tout utilisateur d'un groupe spécifique." diff --git a/base_tier_validation/i18n/it.po b/base_tier_validation/i18n/it.po deleted file mode 100644 index 250630b7..00000000 --- a/base_tier_validation/i18n/it.po +++ /dev/null @@ -1,739 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * base_tier_validation -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" -"Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2023-12-06 13:35+0000\n" -"Last-Translator: mymage \n" -"Language-Team: none\n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.17\n" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "0 Pending" -msgstr "0 In attesa" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" This Record needs to be\n" -" validated." -msgstr "" -"\n" -" Questo Record necessita di\n" -" approvazione." - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" Operation has been\n" -" rejected\n" -" ." -msgstr "" -"\n" -" L'operazione è stata\n" -" rifiutata\n" -" ." - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" Operation has been\n" -" validated\n" -" !" -msgstr "" -"\n" -" L'operazione è stata\n" -" approvata\n" -" !" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Name" -msgstr "Nome" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Bypassed, if previous tier was validated by same reviewer" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review has been requested by %s." -msgstr "Un'approvazione è stata richiesta da %s." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was accepted" -msgstr "Un'approvazione è stata accettata" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was accepted. (%s)" -msgstr "Un'approvazione è stata accettata. (%s)" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was rejected by %(user)s. (%(comment)s)" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was rejected by %s." -msgstr "Un'approvazione è stata rifiutata da %s." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A validation process is still open for at least one record." -msgstr "Un processo di approvazione è ancora aperto per almeno un record." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__active -msgid "Active" -msgstr "Attivo" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "Activity" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "All" -msgstr "Tutto" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__group -msgid "Any user in a specific group" -msgstr "Qualunque utente in un gruppo specifico" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Apply On" -msgstr "Applica a" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence -msgid "Approval order by the specified sequence number" -msgstr "Ordine di approvazione specificato da numero sequenza" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence_bypass -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence_bypass -msgid "Approve Sequence Bypass" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence -msgid "Approve by sequence" -msgstr "Approva in sequenza" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__approved -msgid "Approved" -msgstr "Approvato" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass -msgid "" -"Bypassed (auto validated), if previous tier was validated by same reviewer" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__can_review -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__can_review -msgid "Can Review" -msgstr "Può revisionare" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__can_review -msgid "" -"Can review will be marked if the review is pending and the\n" -" approve sequence has been achieved" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard -msgid "Cancel" -msgstr "Annulla" - -#. module: base_tier_validation -#. odoo-python -#. odoo-javascript -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__comment -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__has_comment -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__has_comment -#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard -#, python-format -msgid "Comment" -msgstr "Commento" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_comment_wizard -msgid "Comment Wizard" -msgstr "Wizard Commento" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__comment -msgid "Comments" -msgstr "Commenti" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__company_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__company_id -msgid "Company" -msgstr "Azienda" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_res_config_settings -msgid "Config Settings" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_uid -msgid "Created by" -msgstr "Creato da" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_date -msgid "Created on" -msgstr "Creato il" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_type -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__definition_id -msgid "Definition" -msgstr "Definizione" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_domain -msgid "Definition Domain" -msgstr "Dominio Definizione" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__name -#, python-format -msgid "Description" -msgstr "Descrizione" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__display_name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__display_name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__display_name -msgid "Display Name" -msgstr "Nome visualizzato" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__definition_type__domain -msgid "Domain" -msgstr "Dominio" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__done_by -msgid "Done By" -msgstr "Eseguito Da" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Done by" -msgstr "Eseguito da" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__field -msgid "Field in related record" -msgstr "Campo in record collegato" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_review.py:0 -#, python-format -msgid "Group %s" -msgstr "Gruppo %s" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "Group By" -msgstr "Raggruppa per" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__has_comment -msgid "Has Comment" -msgstr "Ha commenti" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__id -msgid "ID" -msgstr "ID" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_create -msgid "" -"If set, all possible reviewers will be notified by email when this " -"definition is triggered." -msgstr "" -"Se impostato, tutti i possibili approvatori saranno notificati via email " -"quando la definizione è attivata." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard____last_update -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition____last_update -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review____last_update -msgid "Last Modified on" -msgstr "Ultima Modifica il" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_uid -msgid "Last Updated by" -msgstr "Ultimo aggiornamento di" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_date -msgid "Last Updated on" -msgstr "Ultimo aggiornamento il" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "Model" -msgstr "Modello" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "More Options" -msgstr "Più Opzioni" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__need_validation -msgid "Need Validation" -msgstr "Richiede conferma" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_definition.py:0 -#, python-format -msgid "New Tier Validation" -msgstr "Nuovo Livello Approvazione" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__next_review -msgid "Next Review" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Next: %s" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "No reviews to do." -msgstr "Nessuna approvazione da fare." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create -msgid "Notify Reviewers on Creation" -msgstr "Notifica Approvatori su Creazione" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Operation has been rejected." -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Operation has been validated!" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Option to forward a tier validation to other reviewer, and backward" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Option to use python formula to get reviewers and find documents" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending -#, python-format -msgid "Pending" -msgstr "In attesa" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id -msgid "Referenced Model" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "Reject" -msgstr "Rifiuta" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected -msgid "Rejected" -msgstr "Rifiutato" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected_message -msgid "Rejected Message" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__res_id -msgid "Related Document ID" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__model -msgid "Related Document Model" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons -msgid "Request Validation" -msgstr "Richiedi validazione" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__requested_by -msgid "Requested By" -msgstr "Richiesta Da" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Requested by" -msgstr "Richiesta da" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_id -#, fuzzy -msgid "Res" -msgstr "Res" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_model -#, fuzzy -msgid "Res Model" -msgstr "Res Model" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons -msgid "Restart Validation" -msgstr "Riavvia validazione" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__review_ids -msgid "Review" -msgstr "Approvazione" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_id -msgid "Reviewer" -msgstr "Revisore" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_field_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_field_id -msgid "Reviewer field" -msgstr "Campo approvatore" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_group_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_group_id -msgid "Reviewer group" -msgstr "Gruppo approvatore" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_ids -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__reviewer_ids -msgid "Reviewers" -msgstr "Revisori" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_res_users__review_ids -#, python-format -msgid "Reviews" -msgstr "Revisioni" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__sequence -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__sequence -#, python-format -msgid "Sequence" -msgstr "Sequenza" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__individual -msgid "Specific user" -msgstr "Utente specifico" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__status -#, python-format -msgid "Status" -msgstr "Stato" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "The operation is under validation." -msgstr "L'operazione è sotto approvazione." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "The review has been reset by %s." -msgstr "L'approvazione è stata riavviata da %s." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_review.py:0 -#, python-format -msgid "There are no res.users in the selected field" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "This %s needs to be validated" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "" -"This action needs to be validated for at least one record. \n" -"Please request a validation." -msgstr "" -"Questa azione richiede di essere approvata per almeno un record.\n" -"Prego richiedere un'approvazione." - -#. module: base_tier_validation -#: model:ir.actions.act_window,name:base_tier_validation.tier_definition_action -#: model:ir.model,name:base_tier_validation.model_tier_definition -#: model:ir.ui.menu,name:base_tier_validation.menu_tier_definition -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Tier Definition" -msgstr "Definizione livello" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_formula -msgid "Tier Formula" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_forward -msgid "Tier Forward & Backward" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_tier_review -msgid "Tier Review" -msgstr "Livello Approvazione" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Tier Validation" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_tier_validation -msgid "Tier Validation (abstract)" -msgstr "" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_accepted -msgid "Tier Validation Accepted Notification" -msgstr "Notifica accettazione livello approvazione" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_rejected -msgid "Tier Validation Rejected Notification" -msgstr "Notifica accettazione livello approvazione" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested -msgid "Tier Validation Requested" -msgstr "Approvazione livello richiesta" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_restarted -msgid "Tier Validation Restarted" -msgstr "Approvazione Riavviata" - -#. module: base_tier_validation -#: model:ir.ui.menu,name:base_tier_validation.menu_tier_confirmation -msgid "Tier Validations" -msgstr "Livelli di Approvazione" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__to_validate_message -msgid "To Validate Message" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__todo_by -msgid "Todo By" -msgstr "Incaricati" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Todo by" -msgstr "Incaricati" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_res_users -msgid "User" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__valid_reviewer_field_ids -msgid "Valid Reviewer Field" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "Validate" -msgstr "Approva" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__validate_reject -msgid "Validate Reject" -msgstr "Rifiuta Approvazione" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated -msgid "Validated" -msgstr "Approvato" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated_message -msgid "Validated Message" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__review_type -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__review_type -msgid "Validated by" -msgstr "Approvato da" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_date -#, python-format -msgid "Validation Date" -msgstr "Data approvazione" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_formated_date -msgid "Validation Formated Date" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status -msgid "Validation Status" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids -msgid "Validations" -msgstr "Validazioni" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no -msgid "Without validation" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "e.g. Tier Validation for..." -msgstr "" - -#, python-format -#~ msgid "Activities" -#~ msgstr "Attività" - -#~ msgid "Users" -#~ msgstr "Utenti" - -#~ msgid "A review was rejected by {}. ({})" -#~ msgstr "Un'approvazione è stata rifiutata da {}. ({})" diff --git a/base_tier_validation/i18n/nl_NL.po b/base_tier_validation/i18n/nl_NL.po deleted file mode 100644 index c475e43d..00000000 --- a/base_tier_validation/i18n/nl_NL.po +++ /dev/null @@ -1,740 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * base_tier_validation -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 13.0\n" -"Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2020-01-15 11:13+0000\n" -"Last-Translator: Cas Vissers \n" -"Language-Team: none\n" -"Language: nl_NL\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10\n" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "0 Pending" -msgstr "0 In afwachting" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" This Record needs to be\n" -" validated." -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" Operation has been\n" -" rejected\n" -" ." -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" Operation has been\n" -" validated\n" -" !" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Name" -msgstr "Naam" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Bypassed, if previous tier was validated by same reviewer" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review has been requested by %s." -msgstr "Een beoordeling is aangevraagd door %s." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was accepted" -msgstr "Een beoordeling is geaccepteerd" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was accepted. (%s)" -msgstr "Een beoordeling is geaccepteerd. (%s)" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was rejected by %(user)s. (%(comment)s)" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was rejected by %s." -msgstr "Een beoordeling is afgewezen door %s." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A validation process is still open for at least one record." -msgstr "Er is nog steeds een validatieproces open voor ten minste één record." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__active -msgid "Active" -msgstr "Actief" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "Activity" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "All" -msgstr "Alle" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__group -msgid "Any user in a specific group" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Apply On" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence -msgid "Approval order by the specified sequence number" -msgstr "Goedkeuringsvolgorde op basis van het opgegeven volgnummer" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence_bypass -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence_bypass -msgid "Approve Sequence Bypass" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence -msgid "Approve by sequence" -msgstr "Goedkeuren op volgorde" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__approved -msgid "Approved" -msgstr "Goedgekeurd" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass -msgid "" -"Bypassed (auto validated), if previous tier was validated by same reviewer" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__can_review -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__can_review -msgid "Can Review" -msgstr "Kan beoordelen" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__can_review -msgid "" -"Can review will be marked if the review is pending and the\n" -" approve sequence has been achieved" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard -msgid "Cancel" -msgstr "Annuleer" - -#. module: base_tier_validation -#. odoo-python -#. odoo-javascript -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__comment -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__has_comment -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__has_comment -#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard -#, python-format -msgid "Comment" -msgstr "Opmerking" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_comment_wizard -msgid "Comment Wizard" -msgstr "Opmerking Wizard" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__comment -msgid "Comments" -msgstr "Opmerkingen" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__company_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__company_id -msgid "Company" -msgstr "Bedrijf" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_res_config_settings -msgid "Config Settings" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_uid -msgid "Created by" -msgstr "Bedrijf" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_date -msgid "Created on" -msgstr "Aangemaakt door" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_type -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__definition_id -msgid "Definition" -msgstr "Definitie" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_domain -msgid "Definition Domain" -msgstr "Definitiedomein" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__name -#, python-format -msgid "Description" -msgstr "Omschrijving" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__display_name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__display_name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__display_name -msgid "Display Name" -msgstr "Weergavenaam" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__definition_type__domain -msgid "Domain" -msgstr "Domein" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__done_by -msgid "Done By" -msgstr "Gedaan door" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Done by" -msgstr "Gedaan door" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__field -msgid "Field in related record" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_review.py:0 -#, python-format -msgid "Group %s" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "Group By" -msgstr "Groeperen op" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__has_comment -msgid "Has Comment" -msgstr "Heeft commentaar" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__id -msgid "ID" -msgstr "ID" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_create -msgid "" -"If set, all possible reviewers will be notified by email when this " -"definition is triggered." -msgstr "" -"Indien ingesteld, worden alle mogelijke reviewers per e-mail op de hoogte " -"gebracht wanneer deze definitie wordt geactiveerd." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard____last_update -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition____last_update -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review____last_update -msgid "Last Modified on" -msgstr "Laatst gewijzigd op" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_uid -msgid "Last Updated by" -msgstr "Laatst bijgewerkt door" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_date -msgid "Last Updated on" -msgstr "Laatst bijgewerkt op" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "Model" -msgstr "Model" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "More Options" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__need_validation -msgid "Need Validation" -msgstr "Validatie nodig" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_definition.py:0 -#, python-format -msgid "New Tier Validation" -msgstr "Nieuwe Tier-validatie" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__next_review -msgid "Next Review" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Next: %s" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "No reviews to do." -msgstr "Geen beoordelingen te doen." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create -msgid "Notify Reviewers on Creation" -msgstr "Informeer beoordelaar bij het maken" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Operation has been rejected." -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Operation has been validated!" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Option to forward a tier validation to other reviewer, and backward" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Option to use python formula to get reviewers and find documents" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending -#, python-format -msgid "Pending" -msgstr "In afwachting" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id -msgid "Referenced Model" -msgstr "Referentiemodel" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "Reject" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected -msgid "Rejected" -msgstr "Afgekeurd" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected_message -msgid "Rejected Message" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__res_id -msgid "Related Document ID" -msgstr "Gerelateerde document-ID" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__model -msgid "Related Document Model" -msgstr "Verwant documentmodel" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons -msgid "Request Validation" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__requested_by -msgid "Requested By" -msgstr "Aangevraagd door" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Requested by" -msgstr "Aangevraagd door" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_id -msgid "Res" -msgstr "Res" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_model -msgid "Res Model" -msgstr "Res model" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons -msgid "Restart Validation" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__review_ids -msgid "Review" -msgstr "Beoordeling" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_id -msgid "Reviewer" -msgstr "Beoordelaar" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_field_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_field_id -msgid "Reviewer field" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_group_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_group_id -msgid "Reviewer group" -msgstr "Beoordeel groep" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_ids -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__reviewer_ids -msgid "Reviewers" -msgstr "Beoordelaars" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_res_users__review_ids -#, python-format -msgid "Reviews" -msgstr "Beoordelingen" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__sequence -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__sequence -#, python-format -msgid "Sequence" -msgstr "Volgorde" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__individual -msgid "Specific user" -msgstr "Specifieke gebruiker" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__status -#, python-format -msgid "Status" -msgstr "Status" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "The operation is under validation." -msgstr "De bewerking is onder validatie." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "The review has been reset by %s." -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_review.py:0 -#, python-format -msgid "There are no res.users in the selected field" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "This %s needs to be validated" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "" -"This action needs to be validated for at least one record. \n" -"Please request a validation." -msgstr "" -"Deze actie moet voor ten minste één record gevalideerd worden.\n" -"Vraag een validatie aan." - -#. module: base_tier_validation -#: model:ir.actions.act_window,name:base_tier_validation.tier_definition_action -#: model:ir.model,name:base_tier_validation.model_tier_definition -#: model:ir.ui.menu,name:base_tier_validation.menu_tier_definition -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Tier Definition" -msgstr "Tier definitie" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_formula -msgid "Tier Formula" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_forward -msgid "Tier Forward & Backward" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_tier_review -msgid "Tier Review" -msgstr "Tier beoordeling" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Tier Validation" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_tier_validation -msgid "Tier Validation (abstract)" -msgstr "Tier-validatie (abstract)" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_accepted -#, fuzzy -msgid "Tier Validation Accepted Notification" -msgstr "Tier-validatie (abstract)" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_rejected -#, fuzzy -msgid "Tier Validation Rejected Notification" -msgstr "Tier-validatie (abstract)" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested -msgid "Tier Validation Requested" -msgstr "" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_restarted -msgid "Tier Validation Restarted" -msgstr "" - -#. module: base_tier_validation -#: model:ir.ui.menu,name:base_tier_validation.menu_tier_confirmation -msgid "Tier Validations" -msgstr "Tier-validaties" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__to_validate_message -msgid "To Validate Message" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__todo_by -msgid "Todo By" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Todo by" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_res_users -msgid "User" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__valid_reviewer_field_ids -msgid "Valid Reviewer Field" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "Validate" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__validate_reject -msgid "Validate Reject" -msgstr "Valideren weigeren" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated -msgid "Validated" -msgstr "Gevalideerd" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated_message -msgid "Validated Message" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__review_type -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__review_type -msgid "Validated by" -msgstr "Gevalideerd door" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_date -#, python-format -msgid "Validation Date" -msgstr "Validatie datum" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_formated_date -msgid "Validation Formated Date" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status -msgid "Validation Status" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids -msgid "Validations" -msgstr "Validaties" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no -msgid "Without validation" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "e.g. Tier Validation for..." -msgstr "bijv. Tier validatie voor..." - -#~ msgid "Tier" -#~ msgstr "Tier" - -#, fuzzy, python-format -#~ msgid "Activities" -#~ msgstr "Actief" - -#~ msgid "Users" -#~ msgstr "Gebruikers" - -#~ msgid "A review was rejected by {}. ({})" -#~ msgstr "Een beoordeling is afgewezen door {}. ({})" - -#~ msgid "Any user in a specific group." -#~ msgstr "Elke gebruiker in een specifieke groep." - -#~ msgid "Object" -#~ msgstr "Object" - -#~ msgid "Approve Sequence" -#~ msgstr "Volgorde goedkeuren" diff --git a/base_tier_validation/i18n/sv.po b/base_tier_validation/i18n/sv.po deleted file mode 100644 index 71f65732..00000000 --- a/base_tier_validation/i18n/sv.po +++ /dev/null @@ -1,758 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * base_tier_validation -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" -"Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2021-11-24 12:20+0000\n" -"Last-Translator: Simon S \n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.3.2\n" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "0 Pending" -msgstr "0 väntande" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" This Record needs to be\n" -" validated." -msgstr "" -"\n" -" Den här posten måste\n" -" valideras." - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" Operation has been\n" -" rejected\n" -" ." -msgstr "" -"\n" -" Åtgärden har\n" -" nekats\n" -" ." - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" Operation has been\n" -" validated\n" -" !" -msgstr "" -"\n" -" Åtgärden har\n" -" validerats\n" -" !" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Name" -msgstr "Namn" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Bypassed, if previous tier was validated by same reviewer" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review has been requested by %s." -msgstr "En granskning har begärts av %s." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was accepted" -msgstr "En granskning accepterades" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was accepted. (%s)" -msgstr "En granskning accepterades. (%s)" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was rejected by %(user)s. (%(comment)s)" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was rejected by %s." -msgstr "En granskning nekades av %s." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A validation process is still open for at least one record." -msgstr "En valideringsprocess är fortfarande öppen för minst en post." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__active -msgid "Active" -msgstr "Aktiv" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "Activity" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "All" -msgstr "Alla" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__group -msgid "Any user in a specific group" -msgstr "Alla användare i en specifik grupp" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Apply On" -msgstr "Applicera på" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence -msgid "Approval order by the specified sequence number" -msgstr "Godkännandeordning enligt angivet sekvensnummer" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence_bypass -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence_bypass -msgid "Approve Sequence Bypass" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence -msgid "Approve by sequence" -msgstr "Godkänn efter sekvens" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__approved -msgid "Approved" -msgstr "Godkänd" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass -msgid "" -"Bypassed (auto validated), if previous tier was validated by same reviewer" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__can_review -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__can_review -msgid "Can Review" -msgstr "Kan granska" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__can_review -msgid "" -"Can review will be marked if the review is pending and the\n" -" approve sequence has been achieved" -msgstr "" -"Kan granska kommer att vara ikryssad om granskningen är väntande och\n" -" godkännandesekvensen har uppnåtts" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard -msgid "Cancel" -msgstr "Avbryt" - -#. module: base_tier_validation -#. odoo-python -#. odoo-javascript -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__comment -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__has_comment -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__has_comment -#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard -#, python-format -msgid "Comment" -msgstr "Kommentar" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_comment_wizard -msgid "Comment Wizard" -msgstr "Kommentarsguide" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__comment -msgid "Comments" -msgstr "Kommentarer" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__company_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__company_id -msgid "Company" -msgstr "Bolag" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_res_config_settings -msgid "Config Settings" -msgstr "Konfigurationsinställningar" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_uid -msgid "Created by" -msgstr "Skapad av" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_date -msgid "Created on" -msgstr "Skapad den" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_type -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__definition_id -msgid "Definition" -msgstr "Definition" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_domain -msgid "Definition Domain" -msgstr "Definitionsdomän" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__name -#, python-format -msgid "Description" -msgstr "Beskrivning" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__display_name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__display_name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__display_name -msgid "Display Name" -msgstr "Visningsnamn" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__definition_type__domain -msgid "Domain" -msgstr "Domän" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__done_by -msgid "Done By" -msgstr "Gjord av" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Done by" -msgstr "Gjord av" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__field -msgid "Field in related record" -msgstr "Fält i relaterad post" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_review.py:0 -#, python-format -msgid "Group %s" -msgstr "Grupp %s" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "Group By" -msgstr "Gruppera efter" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__has_comment -msgid "Has Comment" -msgstr "Har kommentar" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__id -msgid "ID" -msgstr "ID" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_create -msgid "" -"If set, all possible reviewers will be notified by email when this " -"definition is triggered." -msgstr "" -"Om den är inställd kommer alla möjliga granskare att meddelas via e-post när " -"denna definition aktiveras." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard____last_update -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition____last_update -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review____last_update -msgid "Last Modified on" -msgstr "Senast ändrad den" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_uid -msgid "Last Updated by" -msgstr "Senast uppdaterad av" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_date -msgid "Last Updated on" -msgstr "Senast uppdaterad den" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "Model" -msgstr "Modell" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "More Options" -msgstr "Fler alternativ" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__need_validation -msgid "Need Validation" -msgstr "Behöver validering" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_definition.py:0 -#, python-format -msgid "New Tier Validation" -msgstr "Ny attestering" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__next_review -msgid "Next Review" -msgstr "Nästa granskning" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Next: %s" -msgstr "Nästa: %s" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "No reviews to do." -msgstr "Inga granskningar att göra." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create -msgid "Notify Reviewers on Creation" -msgstr "Meddela granskare vid skapande" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Operation has been rejected." -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Operation has been validated!" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Option to forward a tier validation to other reviewer, and backward" -msgstr "" -"Alternativ för att vidarebefordra en attestering till en annan granskare och " -"bakåt" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Option to use python formula to get reviewers and find documents" -msgstr "" -"Alternativ för att använda python-formel för att få fram granskare och hitta " -"dokument" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending -#, python-format -msgid "Pending" -msgstr "Väntande" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id -msgid "Referenced Model" -msgstr "Refererad modell" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "Reject" -msgstr "Neka" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected -msgid "Rejected" -msgstr "Nekad" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected_message -msgid "Rejected Message" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__res_id -msgid "Related Document ID" -msgstr "ID för relaterat dokument" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__model -msgid "Related Document Model" -msgstr "Modell för relaterat dokument" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons -msgid "Request Validation" -msgstr "Begär validering" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__requested_by -msgid "Requested By" -msgstr "Begärd av" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Requested by" -msgstr "Begärd av" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_id -msgid "Res" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_model -msgid "Res Model" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons -msgid "Restart Validation" -msgstr "Starta om validering" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__review_ids -msgid "Review" -msgstr "Granska" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_id -msgid "Reviewer" -msgstr "Granskare" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_field_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_field_id -msgid "Reviewer field" -msgstr "Granskarfält" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_group_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_group_id -msgid "Reviewer group" -msgstr "Granskargrupp" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_ids -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__reviewer_ids -msgid "Reviewers" -msgstr "Granskare" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_res_users__review_ids -#, python-format -msgid "Reviews" -msgstr "Granskningar" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__sequence -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__sequence -#, python-format -msgid "Sequence" -msgstr "Sekvens" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__individual -msgid "Specific user" -msgstr "Specifik användare" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__status -#, python-format -msgid "Status" -msgstr "Status" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "The operation is under validation." -msgstr "Åtgärden håller på att valideras." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "The review has been reset by %s." -msgstr "Granskningen har återställts av %s." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_review.py:0 -#, python-format -msgid "There are no res.users in the selected field" -msgstr "Det finns inga res.users i det valda fältet" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "This %s needs to be validated" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "" -"This action needs to be validated for at least one record. \n" -"Please request a validation." -msgstr "" -"Denna åtgärd måste valideras för minst en post.\n" -"Vänligen begär en validering." - -#. module: base_tier_validation -#: model:ir.actions.act_window,name:base_tier_validation.tier_definition_action -#: model:ir.model,name:base_tier_validation.model_tier_definition -#: model:ir.ui.menu,name:base_tier_validation.menu_tier_definition -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Tier Definition" -msgstr "Attestdefinition" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_formula -msgid "Tier Formula" -msgstr "Attestformel" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_forward -msgid "Tier Forward & Backward" -msgstr "Attest framåt och bakåt" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_tier_review -msgid "Tier Review" -msgstr "Attestgranskning" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Tier Validation" -msgstr "Attestering" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_tier_validation -msgid "Tier Validation (abstract)" -msgstr "Attestering (sammanfattning)" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_accepted -msgid "Tier Validation Accepted Notification" -msgstr "Meddelande vid accepterad attestering" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_rejected -msgid "Tier Validation Rejected Notification" -msgstr "Meddelande vid nekad attestering" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested -msgid "Tier Validation Requested" -msgstr "Attestering begärd" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_restarted -msgid "Tier Validation Restarted" -msgstr "Attestering omstartad" - -#. module: base_tier_validation -#: model:ir.ui.menu,name:base_tier_validation.menu_tier_confirmation -msgid "Tier Validations" -msgstr "Attesteringar" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__to_validate_message -msgid "To Validate Message" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__todo_by -msgid "Todo By" -msgstr "Att göra av" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Todo by" -msgstr "Att göra av" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_res_users -msgid "User" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__valid_reviewer_field_ids -msgid "Valid Reviewer Field" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "Validate" -msgstr "Validera" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__validate_reject -msgid "Validate Reject" -msgstr "Validera Neka" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated -msgid "Validated" -msgstr "Validerad" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated_message -msgid "Validated Message" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__review_type -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__review_type -msgid "Validated by" -msgstr "Validerad av" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_date -#, python-format -msgid "Validation Date" -msgstr "Valideringsdatum" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_formated_date -msgid "Validation Formated Date" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status -msgid "Validation Status" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids -msgid "Validations" -msgstr "Valideringar" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no -msgid "Without validation" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "e.g. Tier Validation for..." -msgstr "t.ex. attestvalidering för..." - -#, python-format -#~ msgid "Activities" -#~ msgstr "Aktiviteter" - -#~ msgid "More reports about tier validations, i.e., summary of all my reviews" -#~ msgstr "" -#~ "Fler rapporter om attesteringar, dvs. en sammanfattning av alla mina " -#~ "granskningar" - -#~ msgid "Option to trigger server actions on completion of tier reviews" -#~ msgstr "" -#~ "Alternativ för att utlösa serveråtgärder när attesteringar har slutförts" - -#~ msgid "Tier Reports" -#~ msgstr "Attestrapporter" - -#~ msgid "Tier Server Action" -#~ msgstr "Attestserveråtgärd" - -#~ msgid "Users" -#~ msgstr "Användare" - -#~ msgid "A review was rejected by {}. ({})" -#~ msgstr "En granskning nekades av {}. ({})" diff --git a/base_tier_validation/i18n/tr.po b/base_tier_validation/i18n/tr.po deleted file mode 100644 index 7334fd97..00000000 --- a/base_tier_validation/i18n/tr.po +++ /dev/null @@ -1,732 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * base_tier_validation -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 16.0\n" -"Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2023-02-08 06:14+0000\n" -"Last-Translator: Ediz Duman \n" -"Language-Team: none\n" -"Language: tr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.14.1\n" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "0 Pending" -msgstr "0 Bekleyen" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" This Record needs to be\n" -" validated." -msgstr "" -"\n" -" Bu kaydın olması gerekiyor\n" -" doğrulandı." - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" Operation has been\n" -" rejected\n" -" ." -msgstr "" -"\n" -" operasyon yapıldı\n" -" reddedildi\n" -" ." - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" Operation has been\n" -" validated\n" -" !" -msgstr "" -"\n" -" operasyon yapıldı\n" -" doğrulandı\n" -" !" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Name" -msgstr "Adı" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Bypassed, if previous tier was validated by same reviewer" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review has been requested by %s." -msgstr "%s tarafından bir inceleme istendi." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was accepted" -msgstr "Bir inceleme kabul edildi" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was accepted. (%s)" -msgstr "Bir inceleme kabul edildi. (%s)" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was rejected by %(user)s. (%(comment)s)" -msgstr "Bir inceleme %(user)s tarafından reddedildi. (%(comment)s)" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was rejected by %s." -msgstr "Bir inceleme %s tarafından reddedildi." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A validation process is still open for at least one record." -msgstr "En az bir kayıt için hala bir doğrulama süreci açık." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__active -msgid "Active" -msgstr "Etkin" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "Activity" -msgstr "Aktivite" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "All" -msgstr "Bütün" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__group -msgid "Any user in a specific group" -msgstr "Belirli bir gruptaki herhangi bir kullanıcı" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Apply On" -msgstr "Uygula" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence -msgid "Approval order by the specified sequence number" -msgstr "Belirtilen sıra numarasına göre onay sırası" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence_bypass -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence_bypass -msgid "Approve Sequence Bypass" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence -msgid "Approve by sequence" -msgstr "Sıraya göre onayla" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__approved -msgid "Approved" -msgstr "Onaylı" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass -msgid "" -"Bypassed (auto validated), if previous tier was validated by same reviewer" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__can_review -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__can_review -msgid "Can Review" -msgstr "Gözden Geçirebilir" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__can_review -msgid "" -"Can review will be marked if the review is pending and the\n" -" approve sequence has been achieved" -msgstr "" -"İnceleme beklemedeyse ve gözden geçirilebilirse işaretlenebilir.\n" -" onay dizisi elde edildi" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard -msgid "Cancel" -msgstr "İptal" - -#. module: base_tier_validation -#. odoo-python -#. odoo-javascript -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__comment -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__has_comment -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__has_comment -#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard -#, python-format -msgid "Comment" -msgstr "Yorum" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_comment_wizard -msgid "Comment Wizard" -msgstr "Yorum Sihirbazı" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__comment -msgid "Comments" -msgstr "Yorumlar" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__company_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__company_id -msgid "Company" -msgstr "Şirket" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_res_config_settings -msgid "Config Settings" -msgstr "Yapılandırma Ayarları" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_uid -msgid "Created by" -msgstr "Oluşturan" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_date -msgid "Created on" -msgstr "Oluşturulma" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_type -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__definition_id -msgid "Definition" -msgstr "Tanım" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_domain -msgid "Definition Domain" -msgstr "Tanım Etki Alanı" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__name -#, python-format -msgid "Description" -msgstr "Açıklama" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__display_name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__display_name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__display_name -msgid "Display Name" -msgstr "Görünüm Adı" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__definition_type__domain -msgid "Domain" -msgstr "Etki Alanı" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__done_by -msgid "Done By" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Done by" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__field -msgid "Field in related record" -msgstr "İlgili kayıttaki alan" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_review.py:0 -#, python-format -msgid "Group %s" -msgstr "Grup %s" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "Group By" -msgstr "Grupla" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__has_comment -msgid "Has Comment" -msgstr "Yorum Var" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__id -msgid "ID" -msgstr "ID" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_create -msgid "" -"If set, all possible reviewers will be notified by email when this " -"definition is triggered." -msgstr "" -"Ayarlanırsa, bu tanım tetiklendiğinde tüm olası gözden geçirenler e-posta " -"ile bilgilendirilecektir." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard____last_update -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition____last_update -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review____last_update -msgid "Last Modified on" -msgstr "Son Düzenleme" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_uid -msgid "Last Updated by" -msgstr "Son Güncelleyen" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_date -msgid "Last Updated on" -msgstr "Son Güncelleme" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "Model" -msgstr "Modeli" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "More Options" -msgstr "Daha Fazla Seçenek" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__need_validation -msgid "Need Validation" -msgstr "Doğrulama Gerekiyor" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_definition.py:0 -#, python-format -msgid "New Tier Validation" -msgstr "Yeni Seviye Doğrulama" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__next_review -msgid "Next Review" -msgstr "Sonraki İnceleme" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Next: %s" -msgstr "Sonraki: %s" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "No reviews to do." -msgstr "Yapacak inceleme yok." - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create -msgid "Notify Reviewers on Creation" -msgstr "İncelemeleri Oluşturma Hakkında Bilgilendir" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Operation has been rejected." -msgstr "İşlem reddedildi." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Operation has been validated!" -msgstr "İşlem doğrulandı!" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Option to forward a tier validation to other reviewer, and backward" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Option to use python formula to get reviewers and find documents" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending -#, python-format -msgid "Pending" -msgstr "Bekleyen" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id -msgid "Referenced Model" -msgstr "Referans Model" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "Reject" -msgstr "Reddet" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected -msgid "Rejected" -msgstr "Reddedildi" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected_message -msgid "Rejected Message" -msgstr "Reddedilen Mesaj" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__res_id -msgid "Related Document ID" -msgstr "İlgili Belge ID" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__model -msgid "Related Document Model" -msgstr "İlgili Belge Modeli" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons -msgid "Request Validation" -msgstr "Doğrulama İste" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__requested_by -msgid "Requested By" -msgstr "İsteyen" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Requested by" -msgstr "İsteyen" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_id -msgid "Res" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_model -msgid "Res Model" -msgstr "Res Model" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons -msgid "Restart Validation" -msgstr "Yeniden Doğrulama İste" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__review_ids -msgid "Review" -msgstr "İncele" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_id -msgid "Reviewer" -msgstr "İnceleyen" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_field_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_field_id -msgid "Reviewer field" -msgstr "İnceleme alanı" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_group_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_group_id -msgid "Reviewer group" -msgstr "İnceleme grubu" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_ids -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__reviewer_ids -msgid "Reviewers" -msgstr "İnceleyenler" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_res_users__review_ids -#, python-format -msgid "Reviews" -msgstr "İncelemeler" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__sequence -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__sequence -#, python-format -msgid "Sequence" -msgstr "Sıra" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__individual -msgid "Specific user" -msgstr "Belirli kullanıcı" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__status -#, python-format -msgid "Status" -msgstr "Durumu" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "The operation is under validation." -msgstr "İşlem doğrulama aşamasındadır." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "The review has been reset by %s." -msgstr "İnceleme %s tarafından sıfırlandı." - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_review.py:0 -#, python-format -msgid "There are no res.users in the selected field" -msgstr "Seçili alanda res.kullanıcı yok" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "This %s needs to be validated" -msgstr "Bu %s 'nin doğrulanması gerekiyor" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "" -"This action needs to be validated for at least one record. \n" -"Please request a validation." -msgstr "" -"Bu eylemin en az bir kayıt için doğrulanması gerekir.\n" -"Lütfen doğrulama isteğinde bulunun." - -#. module: base_tier_validation -#: model:ir.actions.act_window,name:base_tier_validation.tier_definition_action -#: model:ir.model,name:base_tier_validation.model_tier_definition -#: model:ir.ui.menu,name:base_tier_validation.menu_tier_definition -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Tier Definition" -msgstr "Seviye Tanımı" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_formula -msgid "Tier Formula" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_forward -msgid "Tier Forward & Backward" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_tier_review -msgid "Tier Review" -msgstr "Seviye İncelemesi" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Tier Validation" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_tier_validation -msgid "Tier Validation (abstract)" -msgstr "Seviye Doğrulaması (özet)" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_accepted -msgid "Tier Validation Accepted Notification" -msgstr "Seviye Doğrulama Kabul Bildirimi" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_rejected -msgid "Tier Validation Rejected Notification" -msgstr "Seviye Doğrulaması Reddedildi Bildirimi" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested -msgid "Tier Validation Requested" -msgstr "Seviye Doğrulaması İstendi" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_restarted -msgid "Tier Validation Restarted" -msgstr "Seviye Doğrulaması Yeniden Başlatıldı" - -#. module: base_tier_validation -#: model:ir.ui.menu,name:base_tier_validation.menu_tier_confirmation -msgid "Tier Validations" -msgstr "Seviye Doğrulamaları" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__to_validate_message -msgid "To Validate Message" -msgstr "Mesajı Doğrulamak İçin" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__todo_by -msgid "Todo By" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Todo by" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_res_users -msgid "User" -msgstr "Kullanıcı" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__valid_reviewer_field_ids -msgid "Valid Reviewer Field" -msgstr "Geçerli İnceleme Alanı" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "Validate" -msgstr "Doğrula" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__validate_reject -msgid "Validate Reject" -msgstr "Reddetmeyi Doğrula" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated -msgid "Validated" -msgstr "Doğrulandı" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated_message -msgid "Validated Message" -msgstr "Doğrulanmış Mesaj" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__review_type -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__review_type -msgid "Validated by" -msgstr "Doğrulayan" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_date -#, python-format -msgid "Validation Date" -msgstr "Doğrulama Tarihi" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_formated_date -msgid "Validation Formated Date" -msgstr "Doğrulama Format Tarihi" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status -msgid "Validation Status" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids -msgid "Validations" -msgstr "Doğrulamalar" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no -msgid "Without validation" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "e.g. Tier Validation for..." -msgstr "ör. Şunun için Seviye Doğrulaması..." - -#~ msgid "Tier" -#~ msgstr "Seviye" diff --git a/base_tier_validation/i18n/zh_CN.po b/base_tier_validation/i18n/zh_CN.po deleted file mode 100644 index f04ca9d3..00000000 --- a/base_tier_validation/i18n/zh_CN.po +++ /dev/null @@ -1,744 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * base_tier_validation -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 13.0\n" -"Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2020-09-24 18:00+0000\n" -"Last-Translator: Dong \n" -"Language-Team: none\n" -"Language: zh_CN\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.10\n" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "0 Pending" -msgstr "0 待审批" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" This Record needs to be\n" -" validated." -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" Operation has been\n" -" rejected\n" -" ." -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "" -"\n" -" Operation has been\n" -" validated\n" -" !" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Name" -msgstr "名称" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Bypassed, if previous tier was validated by same reviewer" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review has been requested by %s." -msgstr "%s 发起审批请求。" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was accepted" -msgstr "审批已通过" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was accepted. (%s)" -msgstr "审批已通过。 ( %s )" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was rejected by %(user)s. (%(comment)s)" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A review was rejected by %s." -msgstr "%s 驳回了审批。" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "A validation process is still open for at least one record." -msgstr "当前记录存在待批复的审批流程。" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__active -msgid "Active" -msgstr "有效" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "Activity" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "All" -msgstr "所有" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__group -msgid "Any user in a specific group" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Apply On" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence -msgid "Approval order by the specified sequence number" -msgstr "审批按指定序号排序" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence_bypass -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence_bypass -msgid "Approve Sequence Bypass" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__approve_sequence -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__approve_sequence -msgid "Approve by sequence" -msgstr "按顺序审批" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__approved -msgid "Approved" -msgstr "已批准" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__approve_sequence_bypass -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__approve_sequence_bypass -msgid "" -"Bypassed (auto validated), if previous tier was validated by same reviewer" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__can_review -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__can_review -msgid "Can Review" -msgstr "可审批" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_review__can_review -msgid "" -"Can review will be marked if the review is pending and the\n" -" approve sequence has been achieved" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard -msgid "Cancel" -msgstr "取消" - -#. module: base_tier_validation -#. odoo-python -#. odoo-javascript -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__comment -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__has_comment -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__has_comment -#: model_terms:ir.ui.view,arch_db:base_tier_validation.view_comment_wizard -#, python-format -msgid "Comment" -msgstr "审批意见" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_comment_wizard -msgid "Comment Wizard" -msgstr "审批意见向导" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__comment -msgid "Comments" -msgstr "审批意见" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__company_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__company_id -msgid "Company" -msgstr "公司" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_res_config_settings -msgid "Config Settings" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_uid -msgid "Created by" -msgstr "创建人" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__create_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__create_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__create_date -msgid "Created on" -msgstr "创建时间" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_type -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__definition_id -msgid "Definition" -msgstr "定义类型" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__definition_domain -msgid "Definition Domain" -msgstr "定义域" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__name -#, python-format -msgid "Description" -msgstr "说明" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__display_name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__display_name -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__display_name -msgid "Display Name" -msgstr "显示名称" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__definition_type__domain -msgid "Domain" -msgstr "域" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__done_by -msgid "Done By" -msgstr "审批人" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Done by" -msgstr "审批人" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__field -msgid "Field in related record" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_review.py:0 -#, python-format -msgid "Group %s" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "Group By" -msgstr "分组" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__has_comment -msgid "Has Comment" -msgstr "含审批意见" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__id -msgid "ID" -msgstr "ID" - -#. module: base_tier_validation -#: model:ir.model.fields,help:base_tier_validation.field_tier_definition__notify_on_create -msgid "" -"If set, all possible reviewers will be notified by email when this " -"definition is triggered." -msgstr "如果设置,则触发此定义规则时将通过电子邮件通知所有的审批人。" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard____last_update -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition____last_update -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review____last_update -msgid "Last Modified on" -msgstr "最近修改时间" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_uid -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_uid -msgid "Last Updated by" -msgstr "最近更新人" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__write_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__write_date -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__write_date -msgid "Last Updated on" -msgstr "最近更新时间" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_search -msgid "Model" -msgstr "模型" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "More Options" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__need_validation -msgid "Need Validation" -msgstr "需要审批" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_definition.py:0 -#, python-format -msgid "New Tier Validation" -msgstr "新建多层级审批" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__next_review -msgid "Next Review" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Next: %s" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#, python-format -msgid "No reviews to do." -msgstr "没有待审批的项目。" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__notify_on_create -msgid "Notify Reviewers on Creation" -msgstr "创建时通知审批人" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Operation has been rejected." -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "Operation has been validated!" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Option to forward a tier validation to other reviewer, and backward" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Option to use python formula to get reviewers and find documents" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__pending -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__pending -#, python-format -msgid "Pending" -msgstr "待审批" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__model_id -msgid "Referenced Model" -msgstr "引用模型" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "Reject" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_review__status__rejected -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__rejected -msgid "Rejected" -msgstr "已驳回" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__rejected_message -msgid "Rejected Message" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__res_id -msgid "Related Document ID" -msgstr "关联文档 ID" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__model -msgid "Related Document Model" -msgstr "关联文档模型" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons -msgid "Request Validation" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__requested_by -msgid "Requested By" -msgstr "发起人" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Requested by" -msgstr "发起人" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_id -msgid "Res" -msgstr "资源" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__res_model -msgid "Res Model" -msgstr "资源模型" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_buttons -msgid "Restart Validation" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__review_ids -msgid "Review" -msgstr "审批" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_id -msgid "Reviewer" -msgstr "审批人" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_field_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_field_id -msgid "Reviewer field" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__reviewer_group_id -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_group_id -msgid "Reviewer group" -msgstr "审批组" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewer_ids -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__reviewer_ids -msgid "Reviewers" -msgstr "审批者" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/systray.xml:0 -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_res_users__review_ids -#, python-format -msgid "Reviews" -msgstr "审批" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__sequence -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__sequence -#, python-format -msgid "Sequence" -msgstr "序号" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_definition__review_type__individual -msgid "Specific user" -msgstr "指定用户" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__status -#, python-format -msgid "Status" -msgstr "状态" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "The operation is under validation." -msgstr "该操作正在审批中。" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "The review has been reset by %s." -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_review.py:0 -#, python-format -msgid "There are no res.users in the selected field" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "This %s needs to be validated" -msgstr "" - -#. module: base_tier_validation -#. odoo-python -#: code:addons/base_tier_validation/models/tier_validation.py:0 -#, python-format -msgid "" -"This action needs to be validated for at least one record. \n" -"Please request a validation." -msgstr "" -"此操作需要至少对一条记录进行审批。\n" -"请发起审批申请。" - -#. module: base_tier_validation -#: model:ir.actions.act_window,name:base_tier_validation.tier_definition_action -#: model:ir.model,name:base_tier_validation.model_tier_definition -#: model:ir.ui.menu,name:base_tier_validation.menu_tier_definition -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "Tier Definition" -msgstr "层级定义" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_formula -msgid "Tier Formula" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_res_config_settings__module_base_tier_validation_forward -msgid "Tier Forward & Backward" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_tier_review -msgid "Tier Review" -msgstr "多层级审批" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.res_config_settings_view_form_budget -msgid "Tier Validation" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_tier_validation -msgid "Tier Validation (abstract)" -msgstr "多层级审批(抽象)" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_accepted -#, fuzzy -msgid "Tier Validation Accepted Notification" -msgstr "多层级审批(抽象)" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_rejected -#, fuzzy -msgid "Tier Validation Rejected Notification" -msgstr "多层级审批(抽象)" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_requested -msgid "Tier Validation Requested" -msgstr "" - -#. module: base_tier_validation -#: model:mail.message.subtype,name:base_tier_validation.mt_tier_validation_restarted -msgid "Tier Validation Restarted" -msgstr "" - -#. module: base_tier_validation -#: model:ir.ui.menu,name:base_tier_validation.menu_tier_confirmation -msgid "Tier Validations" -msgstr "多层级审批" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__to_validate_message -msgid "To Validate Message" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__todo_by -msgid "Todo By" -msgstr "" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#, python-format -msgid "Todo by" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model,name:base_tier_validation.model_res_users -msgid "User" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__valid_reviewer_field_ids -msgid "Valid Reviewer Field" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_validation_label -msgid "Validate" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_comment_wizard__validate_reject -msgid "Validate Reject" -msgstr "驳回" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__validated -msgid "Validated" -msgstr "已批准" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validated_message -msgid "Validated Message" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_definition__review_type -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__review_type -msgid "Validated by" -msgstr "审批人" - -#. module: base_tier_validation -#. odoo-javascript -#: code:addons/base_tier_validation/static/src/xml/tier_review_template.xml:0 -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_date -#, python-format -msgid "Validation Date" -msgstr "审批日期" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_review__reviewed_formated_date -msgid "Validation Formated Date" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__validation_status -msgid "Validation Status" -msgstr "" - -#. module: base_tier_validation -#: model:ir.model.fields,field_description:base_tier_validation.field_tier_validation__review_ids -msgid "Validations" -msgstr "审批" - -#. module: base_tier_validation -#: model:ir.model.fields.selection,name:base_tier_validation.selection__tier_validation__validation_status__no -msgid "Without validation" -msgstr "" - -#. module: base_tier_validation -#: model_terms:ir.ui.view,arch_db:base_tier_validation.tier_definition_view_form -msgid "e.g. Tier Validation for..." -msgstr "例如:审批层级用于..." - -#~ msgid "Tier" -#~ msgstr "层级" - -#, python-format -#~ msgid "Activities" -#~ msgstr "活动项目" - -#~ msgid "Users" -#~ msgstr "用户" - -#~ msgid "A review was rejected by {}. ({})" -#~ msgstr "{} 驳回了审批。 ( {} )" - -#~ msgid "Any user in a specific group." -#~ msgstr "指定权限组" - -#~ msgid "Object" -#~ msgstr "对象" - -#~ msgid "Approve Sequence" -#~ msgstr "批准顺序" - -#~ msgid "Formula" -#~ msgstr "公式" - -#~ msgid "Python Expression" -#~ msgstr "Python表达式" diff --git a/base_tier_validation/models/__init__.py b/base_tier_validation/models/__init__.py deleted file mode 100644 index 45227c21..00000000 --- a/base_tier_validation/models/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from . import tier_definition -from . import tier_review -from . import tier_validation -from . import res_users -from . import res_config_settings diff --git a/base_tier_validation/models/res_config_settings.py b/base_tier_validation/models/res_config_settings.py deleted file mode 100644 index c848cdc4..00000000 --- a/base_tier_validation/models/res_config_settings.py +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright 2021 Ecosoft Co., Ltd. (http://ecosoft.co.th) -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import fields, models - - -class ResConfigSettings(models.TransientModel): - _inherit = "res.config.settings" - - # Activate me back when modules are migrated - - module_base_tier_validation_formula = fields.Boolean(string="Tier Formula") - module_base_tier_validation_forward = fields.Boolean("Tier Forward & Backward") - # module_base_tier_validation_server_action = fields.Boolean("Tier Server Action") - # module_base_tier_validation_report = fields.Boolean("Tier Reports") diff --git a/base_tier_validation/models/res_users.py b/base_tier_validation/models/res_users.py deleted file mode 100644 index 59b456e4..00000000 --- a/base_tier_validation/models/res_users.py +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright 2019 ForgeFlow S.L. (https://www.forgeflow.com) -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from odoo import api, fields, models, modules - - -class Users(models.Model): - _inherit = "res.users" - - review_ids = fields.Many2many(string="Reviews", comodel_name="tier.review") - - @api.model - def review_user_count(self): - user_reviews = {} - domain = [ - ("status", "=", "pending"), - ("can_review", "=", True), - ("id", "in", self.env.user.review_ids.ids), - ] - review_groups = self.env["tier.review"].read_group(domain, ["model"], ["model"]) - for review_group in review_groups: - model = review_group["model"] - reviews = self.env["tier.review"].search(review_group.get("__domain")) - if reviews: - records = ( - self.env[model] - .with_user(self.env.user) - .search([("id", "in", reviews.mapped("res_id"))]) - .filtered(lambda x: not x.rejected and x.can_review) - ) - # Excludes any cancelled records depending on the structure of the model - if self.env[model]._state_field in self.env[model]._fields: - records = records.filtered( - lambda x: x[x._state_field] != x._cancel_state - ) - # if len(records): - for rec in records: - record = self.env[model] - user_reviews[model] = { - "id": rec.id, - "name": record._description, - "model": model, - "active_field": "active" in record._fields, - "icon": modules.module.get_module_icon(record._original_module), - "type": "tier_review", - "pending_count": len(records), - } - return list(user_reviews.values()) - - @api.model - def get_reviews(self, data): - review_obj = self.env["tier.review"].with_context(lang=self.env.user.lang) - res = review_obj.search_read([("id", "in", data.get("res_ids"))]) - for r in res: - # Get the translated status value. - r["display_status"] = dict( - review_obj.fields_get("status")["status"]["selection"] - ).get(r.get("status")) - # Convert to datetime timezone - if r["reviewed_date"]: - r["reviewed_date"] = fields.Datetime.context_timestamp( - self, r["reviewed_date"] - ) - return res diff --git a/base_tier_validation/models/tier_definition.py b/base_tier_validation/models/tier_definition.py deleted file mode 100644 index 7ef44040..00000000 --- a/base_tier_validation/models/tier_definition.py +++ /dev/null @@ -1,90 +0,0 @@ -# Copyright 2017 ForgeFlow S.L. (https://www.forgeflow.com) -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from odoo import _, api, fields, models - - -class TierDefinition(models.Model): - _name = "tier.definition" - _description = "Tier Definition" - - @api.model - def _get_default_name(self): - return _("New Tier Validation") - - @api.model - def _get_tier_validation_model_names(self): - res = [] - return res - - name = fields.Char( - string="Description", - required=True, - default=lambda self: self._get_default_name(), - translate=True, - ) - model_id = fields.Many2one( - comodel_name="ir.model", - string="Referenced Model", - domain=lambda self: [("model", "in", self._get_tier_validation_model_names())], - ) - model = fields.Char(related="model_id.model", index=True, store=True) - review_type = fields.Selection( - string="Validated by", - default="individual", - selection=[ - ("individual", "Specific user"), - ("group", "Any user in a specific group"), - ("field", "Field in related record"), - ], - ) - reviewer_id = fields.Many2one(comodel_name="res.users", string="Reviewer") - reviewer_group_id = fields.Many2one( - comodel_name="res.groups", string="Reviewer group" - ) - reviewer_field_id = fields.Many2one( - comodel_name="ir.model.fields", - string="Reviewer field", - domain="[('id', 'in', valid_reviewer_field_ids)]", - ) - valid_reviewer_field_ids = fields.One2many( - comodel_name="ir.model.fields", - compute="_compute_domain_reviewer_field", - ) - definition_type = fields.Selection( - string="Definition", selection=[("domain", "Domain")], default="domain" - ) - definition_domain = fields.Char() - active = fields.Boolean(default=True) - sequence = fields.Integer(default=30) - company_id = fields.Many2one( - comodel_name="res.company", - string="Company", - default=lambda self: self.env.company, - ) - notify_on_create = fields.Boolean( - string="Notify Reviewers on Creation", - help="If set, all possible reviewers will be notified by email when " - "this definition is triggered.", - ) - has_comment = fields.Boolean(string="Comment", default=False) - approve_sequence = fields.Boolean( - string="Approve by sequence", - default=False, - help="Approval order by the specified sequence number", - ) - approve_sequence_bypass = fields.Boolean( - help="Bypassed (auto validated), if previous tier was validated by same reviewer", - ) - - @api.onchange("review_type") - def onchange_review_type(self): - self.reviewer_id = None - self.reviewer_group_id = None - - @api.depends("review_type", "model_id") - def _compute_domain_reviewer_field(self): - for rec in self: - rec.valid_reviewer_field_ids = self.env["ir.model.fields"].search( - [("model", "=", rec.model), ("relation", "=", "res.users")] - ) diff --git a/base_tier_validation/models/tier_review.py b/base_tier_validation/models/tier_review.py deleted file mode 100644 index fa56d86b..00000000 --- a/base_tier_validation/models/tier_review.py +++ /dev/null @@ -1,128 +0,0 @@ -# Copyright 2017-19 ForgeFlow S.L. (https://www.forgeflow.com) -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -import pytz - -from odoo import _, api, fields, models -from odoo.exceptions import ValidationError - - -class TierReview(models.Model): - _name = "tier.review" - _description = "Tier Review" - - name = fields.Char(related="definition_id.name", readonly=True) - status = fields.Selection( - selection=[ - ("pending", "Pending"), - ("rejected", "Rejected"), - ("approved", "Approved"), - ], - default="pending", - ) - model = fields.Char(string="Related Document Model", index=True) - res_id = fields.Integer(string="Related Document ID", index=True) - definition_id = fields.Many2one(comodel_name="tier.definition") - company_id = fields.Many2one( - related="definition_id.company_id", - store=True, - ) - review_type = fields.Selection(related="definition_id.review_type", readonly=True) - reviewer_id = fields.Many2one(related="definition_id.reviewer_id", readonly=True) - reviewer_group_id = fields.Many2one( - related="definition_id.reviewer_group_id", readonly=True - ) - reviewer_field_id = fields.Many2one( - related="definition_id.reviewer_field_id", readonly=True - ) - reviewer_ids = fields.Many2many( - string="Reviewers", - comodel_name="res.users", - compute="_compute_reviewer_ids", - store=True, - ) - sequence = fields.Integer(string="Tier") - todo_by = fields.Char(compute="_compute_todo_by", store=True) - done_by = fields.Many2one(comodel_name="res.users") - requested_by = fields.Many2one(comodel_name="res.users") - reviewed_date = fields.Datetime(string="Validation Date") - reviewed_formated_date = fields.Char( - string="Validation Formated Date", compute="_compute_reviewed_formated_date" - ) - has_comment = fields.Boolean(related="definition_id.has_comment", readonly=True) - comment = fields.Char(string="Comments") - can_review = fields.Boolean( - compute="_compute_can_review", - store=True, - help="""Can review will be marked if the review is pending and the - approve sequence has been achieved""", - ) - approve_sequence = fields.Boolean( - related="definition_id.approve_sequence", readonly=True - ) - approve_sequence_bypass = fields.Boolean( - related="definition_id.approve_sequence_bypass", readonly=True - ) - - @api.depends_context("tz") - def _compute_reviewed_formated_date(self): - timezone = self._context.get("tz") or self.env.user.partner_id.tz or "UTC" - for review in self: - if not review.reviewed_date: - review.reviewed_formated_date = False - continue - requested_date_utc = pytz.timezone(timezone).localize(review.reviewed_date) - requested_date = requested_date_utc.astimezone(pytz.timezone(timezone)) - review.reviewed_formated_date = requested_date.replace(tzinfo=None) - - @api.depends("definition_id.approve_sequence") - def _compute_can_review(self): - for record in self: - record.can_review = record._can_review_value() - - def _can_review_value(self): - if self.status != "pending": - return False - if not self.approve_sequence: - return True - resource = self.env[self.model].browse(self.res_id) - reviews = resource.review_ids.filtered(lambda r: r.status == "pending") - if not reviews: - return True - sequence = min(reviews.mapped("sequence")) - return self.sequence == sequence - - @api.model - def _get_reviewer_fields(self): - return ["reviewer_id", "reviewer_group_id", "reviewer_group_id.users"] - - @api.depends(lambda self: self._get_reviewer_fields()) - def _compute_reviewer_ids(self): - for rec in self: - rec.reviewer_ids = rec._get_reviewers() - - @api.depends("reviewer_ids") - def _compute_todo_by(self): - """Show by group or by abbrev list of names""" - num_show = 3 # Max number of users to display - for rec in self: - todo_by = False - if rec.reviewer_group_id: - todo_by = _("Group %s") % rec.reviewer_group_id.name - else: - todo_by = ", ".join(rec.reviewer_ids[:num_show].mapped("display_name")) - num_users = len(rec.reviewer_ids) - if num_users > num_show: - todo_by = "{} (and {} more)".format(todo_by, num_users - num_show) - rec.todo_by = todo_by - - def _get_reviewers(self): - if self.reviewer_id or self.reviewer_group_id.users: - return self.reviewer_id + self.reviewer_group_id.users - reviewer_field = self.env["res.users"] - if self.reviewer_field_id: - resource = self.env[self.model].browse(self.res_id) - reviewer_field = getattr(resource, self.reviewer_field_id.name, False) - if not reviewer_field or not reviewer_field._name == "res.users": - raise ValidationError(_("There are no res.users in the selected field")) - return reviewer_field diff --git a/base_tier_validation/models/tier_validation.py b/base_tier_validation/models/tier_validation.py deleted file mode 100644 index e371a185..00000000 --- a/base_tier_validation/models/tier_validation.py +++ /dev/null @@ -1,594 +0,0 @@ -# Copyright 2017-19 ForgeFlow S.L. (https://www.forgeflow.com) -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from ast import literal_eval - -from lxml import etree - -from odoo import _, api, fields, models -from odoo.exceptions import ValidationError -from odoo.tools.misc import frozendict - - -class TierValidation(models.AbstractModel): - _name = "tier.validation" - _description = "Tier Validation (abstract)" - - _tier_validation_buttons_xpath = "/form/header/button[last()]" - _tier_validation_manual_config = True - - _state_field = "state" - _state_from = ["draft"] - _state_to = ["confirmed"] - _cancel_state = "cancel" - - # TODO: step by step validation? - - review_ids = fields.One2many( - comodel_name="tier.review", - inverse_name="res_id", - string="Validations", - domain=lambda self: [("model", "=", self._name)], - auto_join=True, - ) - to_validate_message = fields.Html(compute="_compute_validated_rejected") - # TODO: Delete in v17 in favor of validation_status field - validated = fields.Boolean( - compute="_compute_validated_rejected", search="_search_validated" - ) - validated_message = fields.Html(compute="_compute_validated_rejected") - need_validation = fields.Boolean(compute="_compute_need_validation") - # TODO: Delete in v17 in favor of validation_status field - rejected = fields.Boolean( - compute="_compute_validated_rejected", search="_search_rejected" - ) - rejected_message = fields.Html(compute="_compute_validated_rejected") - # Informative field (used in purchase_tier_validation), will be reliable as of v17 - validation_status = fields.Selection( - selection=[ - ("no", "Without validation"), - ("pending", "Pending"), - ("rejected", "Rejected"), - ("validated", "Validated"), - ], - default="no", - compute="_compute_validation_status", - ) - reviewer_ids = fields.Many2many( - string="Reviewers", - comodel_name="res.users", - compute="_compute_reviewer_ids", - search="_search_reviewer_ids", - ) - can_review = fields.Boolean( - compute="_compute_can_review", search="_search_can_review" - ) - has_comment = fields.Boolean(compute="_compute_has_comment") - next_review = fields.Char(compute="_compute_next_review") - - def _compute_has_comment(self): - for rec in self: - has_comment = rec.review_ids.filtered( - lambda r: r.status == "pending" and (self.env.user in r.reviewer_ids) - ).mapped("has_comment") - rec.has_comment = True in has_comment - - def _get_sequences_to_approve(self, user): - all_reviews = self.review_ids.filtered(lambda r: r.status == "pending") - my_reviews = all_reviews.filtered(lambda r: user in r.reviewer_ids) - # Include all my_reviews with approve_sequence = False - sequences = my_reviews.filtered(lambda r: not r.approve_sequence).mapped( - "sequence" - ) - # Include only my_reviews with approve_sequence = True - approve_sequences = my_reviews.filtered("approve_sequence").mapped("sequence") - if approve_sequences: - my_sequence = min(approve_sequences) - min_sequence = min(all_reviews.mapped("sequence")) - if my_sequence <= min_sequence: - sequences.append(my_sequence) - return sequences - - def _compute_can_review(self): - for rec in self: - rec.can_review = rec._get_sequences_to_approve(self.env.user) - - @api.model - def _search_can_review(self, operator, value): - domain = [ - ("review_ids.reviewer_ids", "=", self.env.user.id), - ("review_ids.status", "=", "pending"), - ("review_ids.can_review", "=", True), - ("rejected", "=", False), - ] - if "active" in self._fields: - domain.append(("active", "in", [True, False])) - res_ids = self.search(domain).filtered("can_review").ids - return [("id", "in", res_ids)] - - @api.depends("review_ids") - def _compute_reviewer_ids(self): - for rec in self: - rec.reviewer_ids = rec.review_ids.filtered( - lambda r: r.status == "pending" - ).mapped("reviewer_ids") - - @api.model - def _search_validated(self, operator, value): - assert operator in ("=", "!="), "Invalid domain operator" - assert value in (True, False), "Invalid domain value" - pos = self.search( - [(self._state_field, "in", self._state_from), ("review_ids", "!=", False)] - ).filtered(lambda r: r.validated == value) - return [("id", "in", pos.ids)] - - @api.model - def _search_rejected(self, operator, value): - assert operator in ("=", "!="), "Invalid domain operator" - assert value in (True, False), "Invalid domain value" - pos = self.search( - [(self._state_field, "in", self._state_from), ("review_ids", "!=", False)] - ).filtered(lambda r: r.rejected == value) - return [("id", "in", pos.ids)] - - @api.model - def _search_reviewer_ids(self, operator, value): - model_operator = "in" - if operator == "=" and value in ("[]", False): - # Search for records that have not yet been through a validation - # process. - operator = "!=" - model_operator = "not in" - reviews = self.env["tier.review"].search( - [ - ("model", "=", self._name), - ("reviewer_ids", operator, value), - ("can_review", "=", True), - ("status", "=", "pending"), - ] - ) - return [("id", model_operator, list(set(reviews.mapped("res_id"))))] - - def _get_to_validate_message_name(self): - return self._description - - def _get_to_validate_message(self): - return ( - """ %s""" - % _("This %s needs to be validated") - % self._get_to_validate_message_name() - ) - - def _get_validated_message(self): - msg = """ %s""" % _( - """Operation has been validated!""" - ) - return self.validated and msg or "" - - def _get_rejected_message(self): - msg = """ %s""" % _( - """Operation has been rejected.""" - ) - return self.rejected and msg or "" - - def _compute_validated_rejected(self): - for rec in self: - rec.validated = self._calc_reviews_validated(rec.review_ids) - rec.validated_message = rec._get_validated_message() - rec.rejected = self._calc_reviews_rejected(rec.review_ids) - rec.rejected_message = rec._get_rejected_message() - rec.to_validate_message = rec._get_to_validate_message() - - def _compute_validation_status(self): - for item in self: - if item.validated and not item.rejected: - item.validation_status = "validated" - elif not item.validated and item.rejected: - item.validation_status = "rejected" - elif ( - not item.validated - and not item.rejected - and any(item.review_ids.filtered(lambda x: x.status == "pending")) - ): - item.validation_status = "pending" - else: - item.validation_status = "no" - - def _compute_next_review(self): - for rec in self: - review = rec.review_ids.sorted("sequence").filtered( - lambda l: l.status == "pending" - )[:1] - rec.next_review = review and _("Next: %s") % review.name or "" - - @api.model - def _calc_reviews_validated(self, reviews): - """Override for different validation policy.""" - if not reviews: - return False - return not any([s != "approved" for s in reviews.mapped("status")]) - - @api.model - def _calc_reviews_rejected(self, reviews): - """Override for different rejection policy.""" - return any([s == "rejected" for s in reviews.mapped("status")]) - - def _compute_need_validation(self): - for rec in self: - if isinstance(rec.id, models.NewId): - rec.need_validation = False - continue - tiers = self.env["tier.definition"].search( - [ - ("model", "=", self._name), - ("company_id", "in", [False] + self.env.company.ids), - ] - ) - valid_tiers = any([rec.evaluate_tier(tier) for tier in tiers]) - rec.need_validation = ( - not rec.review_ids and valid_tiers and rec._check_state_from_condition() - ) - - def evaluate_tier(self, tier): - if tier.definition_domain: - domain = literal_eval(tier.definition_domain) - return self.filtered_domain(domain) - else: - return self - - @api.model - def _get_under_validation_exceptions(self): - """Extend for more field exceptions.""" - return ["message_follower_ids", "access_token"] - - def _check_allow_write_under_validation(self, vals): - """Allow to add exceptions for fields that are allowed to be written - even when the record is under validation.""" - exceptions = self._get_under_validation_exceptions() - for val in vals: - if val not in exceptions: - return False - return True - - def write(self, vals): - for rec in self: - if rec._check_state_conditions(vals): - if rec.need_validation: - # try to validate operation - reviews = rec.request_validation() - rec._validate_tier(reviews) - if not self._calc_reviews_validated(reviews): - raise ValidationError( - _( - "This action needs to be validated for at least " - "one record. \nPlease request a validation." - ) - ) - if rec.review_ids and not rec.validated: - raise ValidationError( - _( - "A validation process is still open for at least " - "one record." - ) - ) - if ( - rec.review_ids - and getattr(rec, self._state_field) in self._state_from - and not vals.get(self._state_field) - in (self._state_to + [self._cancel_state]) - and not rec._check_allow_write_under_validation(vals) - and not rec._context.get("skip_validation_check") - ): - raise ValidationError(_("The operation is under validation.")) - if rec._allow_to_remove_reviews(vals): - rec.mapped("review_ids").unlink() - return super(TierValidation, self).write(vals) - - def _allow_to_remove_reviews(self, values): - """Method for deciding whether the elimination of revisions is necessary.""" - self.ensure_one() - state_to = values.get(self._state_field) - if not state_to: - return False - state_from = self[self._state_field] - # If you change to _cancel_state - if state_to in (self._cancel_state): - return True - # If it is changed to _state_from and it was not in _state_from - if state_to in self._state_from and state_from not in self._state_from: - return True - return False - - def _check_state_from_condition(self): - return self.env.context.get("skip_check_state_condition") or ( - self._state_field in self._fields - and getattr(self, self._state_field) in self._state_from - ) - - def _check_state_conditions(self, vals): - self.ensure_one() - return ( - self._check_state_from_condition() - and vals.get(self._state_field) in self._state_to - ) - - def _validate_tier(self, tiers=False): - self.ensure_one() - tier_reviews = tiers or self.review_ids - user_reviews = tier_reviews.filtered( - lambda r: r.status == "pending" and (self.env.user in r.reviewer_ids) - ) - user_reviews.write( - { - "status": "approved", - "done_by": self.env.user.id, - "reviewed_date": fields.Datetime.now(), - } - ) - for review in user_reviews: - rec = self.env[review.model].browse(review.res_id) - rec._notify_accepted_reviews() - - def _get_requested_notification_subtype(self): - return "base_tier_validation.mt_tier_validation_requested" - - def _get_accepted_notification_subtype(self): - return "base_tier_validation.mt_tier_validation_accepted" - - def _get_rejected_notification_subtype(self): - return "base_tier_validation.mt_tier_validation_rejected" - - def _get_restarted_notification_subtype(self): - return "base_tier_validation.mt_tier_validation_restarted" - - def _notify_accepted_reviews(self): - post = "message_post" - if hasattr(self, post): - # Notify state change - getattr(self.sudo(), post)( - subtype_xmlid=self._get_accepted_notification_subtype(), - body=self._notify_accepted_reviews_body(), - ) - - def _notify_accepted_reviews_body(self): - has_comment = self.review_ids.filtered( - lambda r: (self.env.user in r.reviewer_ids) and r.comment - ) - if has_comment: - comment = has_comment.mapped("comment")[0] - return _("A review was accepted. (%s)") % comment - return _("A review was accepted") - - def _add_comment(self, validate_reject, reviews): - wizard = self.env.ref("base_tier_validation.view_comment_wizard") - return { - "name": _("Comment"), - "type": "ir.actions.act_window", - "view_mode": "form", - "res_model": "comment.wizard", - "views": [(wizard.id, "form")], - "view_id": wizard.id, - "target": "new", - "context": { - "default_res_id": self.id, - "default_res_model": self._name, - "default_review_ids": reviews.ids, - "default_validate_reject": validate_reject, - }, - } - - def validate_tier(self): - self.ensure_one() - sequences = self._get_sequences_to_approve(self.env.user) - reviews = self.review_ids.filtered( - lambda l: l.sequence in sequences or l.approve_sequence_bypass - ) - if self.has_comment: - return self._add_comment("validate", reviews) - self._validate_tier(reviews) - self._update_counter({"review_deleted": True}) - - def reject_tier(self): - self.ensure_one() - sequences = self._get_sequences_to_approve(self.env.user) - reviews = self.review_ids.filtered(lambda l: l.sequence in sequences) - if self.has_comment: - return self._add_comment("reject", reviews) - self._rejected_tier(reviews) - self._update_counter({"review_deleted": True}) - - def _notify_rejected_review_body(self): - has_comment = self.review_ids.filtered( - lambda r: (self.env.user in r.reviewer_ids) and r.comment - ) - if has_comment: - comment = has_comment.mapped("comment")[0] - return _("A review was rejected by %(user)s. (%(comment)s)") % { - "user": self.env.user.name, - "comment": comment, - } - return _("A review was rejected by %s.") % (self.env.user.name) - - def _notify_rejected_review(self): - post = "message_post" - if hasattr(self, post): - # Notify state change - getattr(self.sudo(), post)( - subtype_xmlid=self._get_rejected_notification_subtype(), - body=self._notify_rejected_review_body(), - ) - - def _rejected_tier(self, tiers=False): - self.ensure_one() - tier_reviews = tiers or self.review_ids - user_reviews = tier_reviews.filtered( - lambda r: r.status == "pending" and (self.env.user in r.reviewer_ids) - ) - user_reviews.write( - { - "status": "rejected", - "done_by": self.env.user.id, - "reviewed_date": fields.Datetime.now(), - } - ) - for review in user_reviews: - rec = self.env[review.model].browse(review.res_id) - rec._notify_rejected_review() - - def _notify_requested_review_body(self): - return _("A review has been requested by %s.") % (self.env.user.name) - - def _notify_review_requested(self, tier_reviews): - subscribe = "message_subscribe" - post = "message_post" - if hasattr(self, post) and hasattr(self, subscribe): - for rec in self.sudo(): - users_to_notify = tier_reviews.filtered( - lambda r: r.definition_id.notify_on_create and r.res_id == rec.id - ).mapped("reviewer_ids") - # Subscribe reviewers and notify - if len(users_to_notify) > 0: - getattr(rec, subscribe)( - partner_ids=users_to_notify.mapped("partner_id").ids - ) - getattr(rec, post)( - subtype_xmlid=self._get_requested_notification_subtype(), - body=rec._notify_requested_review_body(), - ) - - def _prepare_tier_review_vals(self, definition, sequence): - return { - "model": self._name, - "res_id": self.id, - "definition_id": definition.id, - "requested_by": self.env.uid, - "sequence": sequence, - } - - def request_validation(self): - td_obj = self.env["tier.definition"] - tr_obj = self.env["tier.review"] - vals_list = [] - for rec in self: - if rec._check_state_from_condition() and rec.need_validation: - tier_definitions = td_obj.search( - [ - ("model", "=", self._name), - ("company_id", "in", [False] + self.env.company.ids), - ], - order="sequence desc", - ) - sequence = 0 - for td in tier_definitions: - if rec.evaluate_tier(td): - sequence += 1 - vals_list.append(rec._prepare_tier_review_vals(td, sequence)) - self._update_counter({"review_created": True}) - created_trs = tr_obj.create(vals_list) - self._notify_review_requested(created_trs) - return created_trs - - def _notify_restarted_review_body(self): - return _("The review has been reset by %s.") % (self.env.user.name) - - def _notify_restarted_review(self): - post = "message_post" - if hasattr(self, post): - getattr(self.sudo(), post)( - subtype_xmlid=self._get_restarted_notification_subtype(), - body=self._notify_restarted_review_body(), - ) - - def restart_validation(self): - for rec in self: - if getattr(rec, self._state_field) in self._state_from: - to_update_counter = ( - rec.mapped("review_ids").filtered(lambda a: a.status == "pending") - and True - or False - ) - rec.mapped("review_ids").unlink() - if to_update_counter: - self._update_counter({"review_deleted": True}) - rec._notify_restarted_review() - - @api.model - def _update_counter(self, review_counter): - self.review_ids._compute_can_review() - notifications = [] - channel = "base.tier.validation/updated" - notifications.append([self.env.user.partner_id, channel, review_counter]) - self.env["bus.bus"]._sendmany(notifications) - - def unlink(self): - self.mapped("review_ids").unlink() - return super().unlink() - - def _add_tier_validation_buttons(self, node, params): - str_element = self.env["ir.qweb"]._render( - "base_tier_validation.tier_validation_buttons", params - ) - new_node = etree.fromstring(str_element) - return new_node - - def _add_tier_validation_label(self, node, params): - str_element = self.env["ir.qweb"]._render( - "base_tier_validation.tier_validation_label", params - ) - new_node = etree.fromstring(str_element) - return new_node - - def _add_tier_validation_reviews(self, node, params): - str_element = self.env["ir.qweb"]._render( - "base_tier_validation.tier_validation_reviews", params - ) - new_node = etree.fromstring(str_element) - return new_node - - @api.model - def get_view(self, view_id=None, view_type="form", **options): - res = super().get_view(view_id=view_id, view_type=view_type, **options) - - View = self.env["ir.ui.view"] - - # Override context for postprocessing - if view_id and res.get("base_model", self._name) != self._name: - View = View.with_context(base_model_name=res["base_model"]) - if view_type == "form" and not self._tier_validation_manual_config: - doc = etree.XML(res["arch"]) - params = { - "state_field": self._state_field, - "state_operator": "not in", - "state_value": self._state_from, - } - all_models = res["models"].copy() - for node in doc.xpath(self._tier_validation_buttons_xpath): - # By default, after the last button of the header - # _add_tier_validation_buttons process - new_node = self._add_tier_validation_buttons(node, params) - new_arch, new_models = View.postprocess_and_fields(new_node, self._name) - new_node = etree.fromstring(new_arch) - for new_element in new_node: - node.addnext(new_element) - for node in doc.xpath("/form/sheet"): - # _add_tier_validation_label process - new_node = self._add_tier_validation_label(node, params) - new_arch, new_models = View.postprocess_and_fields(new_node, self._name) - new_node = etree.fromstring(new_arch) - for new_element in new_node: - node.addprevious(new_element) - # _add_tier_validation_reviews process - new_node = self._add_tier_validation_reviews(node, params) - new_arch, new_models = View.postprocess_and_fields(new_node, self._name) - for model in new_models: - if model in all_models: - continue - if model not in res["models"]: - all_models[model] = new_models[model] - else: - all_models[model] = res["models"][model] - new_node = etree.fromstring(new_arch) - node.append(new_node) - res["arch"] = etree.tostring(doc) - res["models"] = frozendict(all_models) - return res diff --git a/base_tier_validation/readme/CONFIGURE.rst b/base_tier_validation/readme/CONFIGURE.rst deleted file mode 100644 index 425bfa0c..00000000 --- a/base_tier_validation/readme/CONFIGURE.rst +++ /dev/null @@ -1,11 +0,0 @@ -To configure this module, you need to: - -#. Go to *Settings > Technical > Tier Validations > Tier Definition*. -#. Create as many tiers as you want for any model having tier validation - functionality. - -**Note:** - -* If check *Notify Reviewers on Creation*, all possible reviewers will be notified by email when this definition is triggered. -* If check *Comment*, reviewers can comment after click Validate or Reject. -* If check *Approve by sequence*, reviewers is forced to review by specified sequence. diff --git a/base_tier_validation/readme/CONTRIBUTORS.rst b/base_tier_validation/readme/CONTRIBUTORS.rst deleted file mode 100644 index 4fd44dfa..00000000 --- a/base_tier_validation/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1,7 +0,0 @@ -* Lois Rilo -* Naglis Jonaitis -* Adrià Gil Sorribes -* Pimolnat Suntian -* Pedro Gonzalez -* Kitti U. -* Saran Lim. diff --git a/base_tier_validation/readme/DESCRIPTION.rst b/base_tier_validation/readme/DESCRIPTION.rst deleted file mode 100644 index 5758782c..00000000 --- a/base_tier_validation/readme/DESCRIPTION.rst +++ /dev/null @@ -1,13 +0,0 @@ -Validating some operations is a common need across different areas in a company -and sometimes it also involves several people and stages in the process. With -this module you will be able to define your custom validation workflows for -any Odoo document. - -This module does not provide a functionality by itself but an abstract model -to implement a validation process based on tiers on other models (e.g. -purchase orders, sales orders, budgets, expenses...). - -**Note:** To be able to use this module in a new model you will need some -development. - -See `purchase_tier_validation `_ as an example of implementation. diff --git a/base_tier_validation/readme/HISTORY.rst b/base_tier_validation/readme/HISTORY.rst deleted file mode 100644 index 2443029e..00000000 --- a/base_tier_validation/readme/HISTORY.rst +++ /dev/null @@ -1,91 +0,0 @@ -14.0.1.0.0 (2020-11-19) -~~~~~~~~~~~~~~~~~~~~~~~ - -Migrated to Odoo 14. - -13.0.1.2.2 (2020-08-30) -~~~~~~~~~~~~~~~~~~~~~~~ - -Fixes: - -- When using approve_sequence option in any tier.definition there can be inconsistencies in the systray notifications -- When using approve_sequence, still not approve only the needed sequence, but also other sequence for the same approver - -12.0.3.3.1 (2019-12-02) -~~~~~~~~~~~~~~~~~~~~~~~ - -Fixes: - -- Show comment on Reviews Table. -- Edit notification with approve_sequence. - -12.0.3.3.0 (2019-11-27) -~~~~~~~~~~~~~~~~~~~~~~~ - -New features: - -- Add comment on Reviews Table. -- Approve by sequence. - -12.0.3.2.1 (2019-11-26) -~~~~~~~~~~~~~~~~~~~~~~~ - -Fixes: - -- Remove message_subscribe_users - -12.0.3.2.0 (2019-11-25) -~~~~~~~~~~~~~~~~~~~~~~~ - -New features: - -- Notify reviewers - -12.0.3.1.0 (2019-07-08) -~~~~~~~~~~~~~~~~~~~~~~~ - -Fixes: - -- Singleton error - -12.0.3.0.0 (2019-12-02) -~~~~~~~~~~~~~~~~~~~~~~~ - -Fixes: - -- Edit Reviews Table - -12.0.2.1.0 (2019-05-29) -~~~~~~~~~~~~~~~~~~~~~~~ - -Fixes: - -- Edit drop-down style width and position - -12.0.2.0.0 (2019-05-28) -~~~~~~~~~~~~~~~~~~~~~~~ - -New features: - -- Pass parameters as functions. -- Add Systray. - -12.0.1.0.0 (2019-02-18) -~~~~~~~~~~~~~~~~~~~~~~~ - -Migrated to Odoo 12. - -11.0.1.0.0 (2018-05-09) -~~~~~~~~~~~~~~~~~~~~~~~ - -Migrated to Odoo 11. - -10.0.1.0.0 (2018-03-26) -~~~~~~~~~~~~~~~~~~~~~~~ - -Migrated to Odoo 10. - -9.0.1.0.0 (2017-12-02) -~~~~~~~~~~~~~~~~~~~~~~~ - -First version. diff --git a/base_tier_validation/readme/ROADMAP.rst b/base_tier_validation/readme/ROADMAP.rst deleted file mode 100644 index 767b9b5b..00000000 --- a/base_tier_validation/readme/ROADMAP.rst +++ /dev/null @@ -1,20 +0,0 @@ -This is the list of known issues for this module. Any proposal for improvement will -be very valuable. - -* **Issue:** - - When using `approve_sequence` option in any tier.definition there can be inconsistencies - in the systray notifications. - - **Description:** - - Field `can_review` in tier.review is used to filter out, in the systray notifications, - the reviews a user can approve. This `can_review` field is updated **in the database** - in method `review_user_count`, this can make it very inconsistent for databases - with a lot of users and recurring updates that can change the expected behavior. - -* **Migration to 15.0:** - - The parameter _tier_validation_manual_config will become False, on 14.0, the default - value is True, as the change is applied after the migration. In order to use the new - behavior we need to modify the value on our expected model. diff --git a/base_tier_validation/security/ir.model.access.csv b/base_tier_validation/security/ir.model.access.csv deleted file mode 100644 index d2427d5a..00000000 --- a/base_tier_validation/security/ir.model.access.csv +++ /dev/null @@ -1,5 +0,0 @@ -id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_tier_review,access.tier.review,model_tier_review,,1,1,1,1 -access_tier_definition_all,tier.definition.all,model_tier_definition,,1,0,0,0 -access_tier_definition_settings,tier.definition.settings,model_tier_definition,base.group_system,1,1,1,1 -access_comment_wizard,access.comment.wizard,model_comment_wizard,,1,1,1,1 diff --git a/base_tier_validation/security/tier_validation_security.xml b/base_tier_validation/security/tier_validation_security.xml deleted file mode 100644 index 2ad71f57..00000000 --- a/base_tier_validation/security/tier_validation_security.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - Tier Definition multi-company - - - - ['|',('company_id','=',False),('company_id', 'in', company_ids)] - - - - Tier Review multi-company - - - - ['|',('company_id','=',False),('company_id', 'in', company_ids)] - - - diff --git a/base_tier_validation/static/description/icon.png b/base_tier_validation/static/description/icon.png deleted file mode 100644 index 3a0328b516c4980e8e44cdb63fd945757ddd132d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9455 zcmW++2RxMjAAjx~&dlBk9S+%}OXg)AGE&Cb*&}d0jUxM@u(PQx^-s)697TX`ehR4?GS^qbkof1cslKgkU)h65qZ9Oc=ml_0temigYLJfnz{IDzUf>bGs4N!v3=Z3jMq&A#7%rM5eQ#dc?k~! zVpnB`o+K7|Al`Q_U;eD$B zfJtP*jH`siUq~{KE)`jP2|#TUEFGRryE2`i0**z#*^6~AI|YzIWy$Cu#CSLW3q=GA z6`?GZymC;dCPk~rBS%eCb`5OLr;RUZ;D`}um=H)BfVIq%7VhiMr)_#G0N#zrNH|__ zc+blN2UAB0=617@>_u;MPHN;P;N#YoE=)R#i$k_`UAA>WWCcEVMh~L_ zj--gtp&|K1#58Yz*AHCTMziU1Jzt_jG0I@qAOHsk$2}yTmVkBp_eHuY$A9)>P6o~I z%aQ?!(GqeQ-Y+b0I(m9pwgi(IIZZzsbMv+9w{PFtd_<_(LA~0H(xz{=FhLB@(1&qHA5EJw1>>=%q2f&^X>IQ{!GJ4e9U z&KlB)z(84HmNgm2hg2C0>WM{E(DdPr+EeU_N@57;PC2&DmGFW_9kP&%?X4}+xWi)( z;)z%wI5>D4a*5XwD)P--sPkoY(a~WBw;E~AW`Yue4kFa^LM3X`8x|}ZUeMnqr}>kH zG%WWW>3ml$Yez?i%)2pbKPI7?5o?hydokgQyZsNEr{a|mLdt;X2TX(#B1j35xPnPW z*bMSSOauW>o;*=kO8ojw91VX!qoOQb)zHJ!odWB}d+*K?#sY_jqPdg{Sm2HdYzdEx zOGVPhVRTGPtv0o}RfVP;Nd(|CB)I;*t&QO8h zFfekr30S!-LHmV_Su-W+rEwYXJ^;6&3|L$mMC8*bQptyOo9;>Qb9Q9`ySe3%V$A*9 zeKEe+b0{#KWGp$F+tga)0RtI)nhMa-K@JS}2krK~n8vJ=Ngm?R!9G<~RyuU0d?nz# z-5EK$o(!F?hmX*2Yt6+coY`6jGbb7tF#6nHA zuKk=GGJ;ZwON1iAfG$E#Y7MnZVmrY|j0eVI(DN_MNFJmyZ|;w4tf@=CCDZ#5N_0K= z$;R~bbk?}TpfDjfB&aiQ$VA}s?P}xPERJG{kxk5~R`iRS(SK5d+Xs9swCozZISbnS zk!)I0>t=A<-^z(cmSFz3=jZ23u13X><0b)P)^1T_))Kr`e!-pb#q&J*Q`p+B6la%C zuVl&0duN<;uOsB3%T9Fp8t{ED108<+W(nOZd?gDnfNBC3>M8WE61$So|P zVvqH0SNtDTcsUdzaMDpT=Ty0pDHHNL@Z0w$Y`XO z2M-_r1S+GaH%pz#Uy0*w$Vdl=X=rQXEzO}d6J^R6zjM1u&c9vYLvLp?W7w(?np9x1 zE_0JSAJCPB%i7p*Wvg)pn5T`8k3-uR?*NT|J`eS#_#54p>!p(mLDvmc-3o0mX*mp_ zN*AeS<>#^-{S%W<*mz^!X$w_2dHWpcJ6^j64qFBft-o}o_Vx80o0>}Du;>kLts;$8 zC`7q$QI(dKYG`Wa8#wl@V4jVWBRGQ@1dr-hstpQL)Tl+aqVpGpbSfN>5i&QMXfiZ> zaA?T1VGe?rpQ@;+pkrVdd{klI&jVS@I5_iz!=UMpTsa~mBga?1r}aRBm1WS;TT*s0f0lY=JBl66Upy)-k4J}lh=P^8(SXk~0xW=T9v*B|gzIhN z>qsO7dFd~mgxAy4V?&)=5ieYq?zi?ZEoj)&2o)RLy=@hbCRcfT5jigwtQGE{L*8<@Yd{zg;CsL5mvzfDY}P-wos_6PfprFVaeqNE%h zKZhLtcQld;ZD+>=nqN~>GvROfueSzJD&BE*}XfU|H&(FssBqY=hPCt`d zH?@s2>I(|;fcW&YM6#V#!kUIP8$Nkdh0A(bEVj``-AAyYgwY~jB zT|I7Bf@%;7aL7Wf4dZ%VqF$eiaC38OV6oy3Z#TER2G+fOCd9Iaoy6aLYbPTN{XRPz z;U!V|vBf%H!}52L2gH_+j;`bTcQRXB+y9onc^wLm5wi3-Be}U>k_u>2Eg$=k!(l@I zcCg+flakT2Nej3i0yn+g+}%NYb?ta;R?(g5SnwsQ49U8Wng8d|{B+lyRcEDvR3+`O{zfmrmvFrL6acVP%yG98X zo&+VBg@px@i)%o?dG(`T;n*$S5*rnyiR#=wW}}GsAcfyQpE|>a{=$Hjg=-*_K;UtD z#z-)AXwSRY?OPefw^iI+ z)AXz#PfEjlwTes|_{sB?4(O@fg0AJ^g8gP}ex9Ucf*@_^J(s_5jJV}c)s$`Myn|Kd z$6>}#q^n{4vN@+Os$m7KV+`}c%4)4pv@06af4-x5#wj!KKb%caK{A&Y#Rfs z-po?Dcb1({W=6FKIUirH&(yg=*6aLCekcKwyfK^JN5{wcA3nhO(o}SK#!CINhI`-I z1)6&n7O&ZmyFMuNwvEic#IiOAwNkR=u5it{B9n2sAJV5pNhar=j5`*N!Na;c7g!l$ z3aYBqUkqqTJ=Re-;)s!EOeij=7SQZ3Hq}ZRds%IM*PtM$wV z@;rlc*NRK7i3y5BETSKuumEN`Xu_8GP1Ri=OKQ$@I^ko8>H6)4rjiG5{VBM>B|%`&&s^)jS|-_95&yc=GqjNo{zFkw%%HHhS~e=s zD#sfS+-?*t|J!+ozP6KvtOl!R)@@-z24}`9{QaVLD^9VCSR2b`b!KC#o;Ki<+wXB6 zx3&O0LOWcg4&rv4QG0)4yb}7BFSEg~=IR5#ZRj8kg}dS7_V&^%#Do==#`u zpy6{ox?jWuR(;pg+f@mT>#HGWHAJRRDDDv~@(IDw&R>9643kK#HN`!1vBJHnC+RM&yIh8{gG2q zA%e*U3|N0XSRa~oX-3EAneep)@{h2vvd3Xvy$7og(sayr@95+e6~Xvi1tUqnIxoIH zVWo*OwYElb#uyW{Imam6f2rGbjR!Y3`#gPqkv57dB6K^wRGxc9B(t|aYDGS=m$&S!NmCtrMMaUg(c zc2qC=2Z`EEFMW-me5B)24AqF*bV5Dr-M5ig(l-WPS%CgaPzs6p_gnCIvTJ=Y<6!gT zVt@AfYCzjjsMEGi=rDQHo0yc;HqoRNnNFeWZgcm?f;cp(6CNylj36DoL(?TS7eU#+ z7&mfr#y))+CJOXQKUMZ7QIdS9@#-}7y2K1{8)cCt0~-X0O!O?Qx#E4Og+;A2SjalQ zs7r?qn0H044=sDN$SRG$arw~n=+T_DNdSrarmu)V6@|?1-ZB#hRn`uilTGPJ@fqEy zGt(f0B+^JDP&f=r{#Y_wi#AVDf-y!RIXU^0jXsFpf>=Ji*TeqSY!H~AMbJdCGLhC) zn7Rx+sXw6uYj;WRYrLd^5IZq@6JI1C^YkgnedZEYy<&4(z%Q$5yv#Boo{AH8n$a zhb4Y3PWdr269&?V%uI$xMcUrMzl=;w<_nm*qr=c3Rl@i5wWB;e-`t7D&c-mcQl7x! zZWB`UGcw=Y2=}~wzrfLx=uet<;m3~=8I~ZRuzvMQUQdr+yTV|ATf1Uuomr__nDf=X zZ3WYJtHp_ri(}SQAPjv+Y+0=fH4krOP@S&=zZ-t1jW1o@}z;xk8 z(Nz1co&El^HK^NrhVHa-_;&88vTU>_J33=%{if;BEY*J#1n59=07jrGQ#IP>@u#3A z;!q+E1Rj3ZJ+!4bq9F8PXJ@yMgZL;>&gYA0%_Kbi8?S=XGM~dnQZQ!yBSgcZhY96H zrWnU;k)qy`rX&&xlDyA%(a1Hhi5CWkmg(`Gb%m(HKi-7Z!LKGRP_B8@`7&hdDy5n= z`OIxqxiVfX@OX1p(mQu>0Ai*v_cTMiw4qRt3~NBvr9oBy0)r>w3p~V0SCm=An6@3n)>@z!|o-$HvDK z|3D2ZMJkLE5loMKl6R^ez@Zz%S$&mbeoqH5`Bb){Ei21q&VP)hWS2tjShfFtGE+$z zzCR$P#uktu+#!w)cX!lWN1XU%K-r=s{|j?)Akf@q#3b#{6cZCuJ~gCxuMXRmI$nGtnH+-h z+GEi!*X=AP<|fG`1>MBdTb?28JYc=fGvAi2I<$B(rs$;eoJCyR6_bc~p!XR@O-+sD z=eH`-ye})I5ic1eL~TDmtfJ|8`0VJ*Yr=hNCd)G1p2MMz4C3^Mj?7;!w|Ly%JqmuW zlIEW^Ft%z?*|fpXda>Jr^1noFZEwFgVV%|*XhH@acv8rdGxeEX{M$(vG{Zw+x(ei@ zmfXb22}8-?Fi`vo-YVrTH*C?a8%M=Hv9MqVH7H^J$KsD?>!SFZ;ZsvnHr_gn=7acz z#W?0eCdVhVMWN12VV^$>WlQ?f;P^{(&pYTops|btm6aj>_Uz+hqpGwB)vWp0Cf5y< zft8-je~nn?W11plq}N)4A{l8I7$!ks_x$PXW-2XaRFswX_BnF{R#6YIwMhAgd5F9X zGmwdadS6(a^fjHtXg8=l?Rc0Sm%hk6E9!5cLVloEy4eh(=FwgP`)~I^5~pBEWo+F6 zSf2ncyMurJN91#cJTy_u8Y}@%!bq1RkGC~-bV@SXRd4F{R-*V`bS+6;W5vZ(&+I<9$;-V|eNfLa5n-6% z2(}&uGRF;p92eS*sE*oR$@pexaqr*meB)VhmIg@h{uzkk$9~qh#cHhw#>O%)b@+(| z^IQgqzuj~Sk(J;swEM-3TrJAPCq9k^^^`q{IItKBRXYe}e0Tdr=Huf7da3$l4PdpwWDop%^}n;dD#K4s#DYA8SHZ z&1!riV4W4R7R#C))JH1~axJ)RYnM$$lIR%6fIVA@zV{XVyx}C+a-Dt8Y9M)^KU0+H zR4IUb2CJ{Hg>CuaXtD50jB(_Tcx=Z$^WYu2u5kubqmwp%drJ6 z?Fo40g!Qd<-l=TQxqHEOuPX0;^z7iX?Ke^a%XT<13TA^5`4Xcw6D@Ur&VT&CUe0d} z1GjOVF1^L@>O)l@?bD~$wzgf(nxX1OGD8fEV?TdJcZc2KoUe|oP1#=$$7ee|xbY)A zDZq+cuTpc(fFdj^=!;{k03C69lMQ(|>uhRfRu%+!k&YOi-3|1QKB z z?n?eq1XP>p-IM$Z^C;2L3itnbJZAip*Zo0aw2bs8@(s^~*8T9go!%dHcAz2lM;`yp zD=7&xjFV$S&5uDaiScyD?B-i1ze`+CoRtz`Wn+Zl&#s4&}MO{@N!ufrzjG$B79)Y2d3tBk&)TxUTw@QS0TEL_?njX|@vq?Uz(nBFK5Pq7*xj#u*R&i|?7+6# z+|r_n#SW&LXhtheZdah{ZVoqwyT{D>MC3nkFF#N)xLi{p7J1jXlmVeb;cP5?e(=f# zuT7fvjSbjS781v?7{)-X3*?>tq?)Yd)~|1{BDS(pqC zC}~H#WXlkUW*H5CDOo<)#x7%RY)A;ShGhI5s*#cRDA8YgqG(HeKDx+#(ZQ?386dv! zlXCO)w91~Vw4AmOcATuV653fa9R$fyK8ul%rG z-wfS zihugoZyr38Im?Zuh6@RcF~t1anQu7>#lPpb#}4cOA!EM11`%f*07RqOVkmX{p~KJ9 z^zP;K#|)$`^Rb{rnHGH{~>1(fawV0*Z#)}M`m8-?ZJV<+e}s9wE# z)l&az?w^5{)`S(%MRzxdNqrs1n*-=jS^_jqE*5XDrA0+VE`5^*p3CuM<&dZEeCjoz zR;uu_H9ZPZV|fQq`Cyw4nscrVwi!fE6ciMmX$!_hN7uF;jjKG)d2@aC4ropY)8etW=xJvni)8eHi`H$%#zn^WJ5NLc-rqk|u&&4Z6fD_m&JfSI1Bvb?b<*n&sfl0^t z=HnmRl`XrFvMKB%9}>PaA`m-fK6a0(8=qPkWS5bb4=v?XcWi&hRY?O5HdulRi4?fN zlsJ*N-0Qw+Yic@s0(2uy%F@ib;GjXt01Fmx5XbRo6+n|pP(&nodMoap^z{~q ziEeaUT@Mxe3vJSfI6?uLND(CNr=#^W<1b}jzW58bIfyWTDle$mmS(|x-0|2UlX+9k zQ^EX7Nw}?EzVoBfT(-LT|=9N@^hcn-_p&sqG z&*oVs2JSU+N4ZD`FhCAWaS;>|wH2G*Id|?pa#@>tyxX`+4HyIArWDvVrX)2WAOQff z0qyHu&-S@i^MS-+j--!pr4fPBj~_8({~e1bfcl0wI1kaoN>mJL6KUPQm5N7lB(ui1 zE-o%kq)&djzWJ}ob<-GfDlkB;F31j-VHKvQUGQ3sp`CwyGJk_i!y^sD0fqC@$9|jO zOqN!r!8-p==F@ZVP=U$qSpY(gQ0)59P1&t@y?5rvg<}E+GB}26NYPp4f2YFQrQtot5mn3wu_qprZ=>Ig-$ zbW26Ws~IgY>}^5w`vTB(G`PTZaDiGBo5o(tp)qli|NeV( z@H_=R8V39rt5J5YB2Ky?4eJJ#b`_iBe2ot~6%7mLt5t8Vwi^Jy7|jWXqa3amOIoRb zOr}WVFP--DsS`1WpN%~)t3R!arKF^Q$e12KEqU36AWwnCBICpH4XCsfnyrHr>$I$4 z!DpKX$OKLWarN7nv@!uIA+~RNO)l$$w}p(;b>mx8pwYvu;dD_unryX_NhT8*Tj>BTrTTL&!?O+%Rv;b?B??gSzdp?6Uug9{ zd@V08Z$BdI?fpoCS$)t4mg4rT8Q_I}h`0d-vYZ^|dOB*Q^S|xqTV*vIg?@fVFSmMpaw0qtTRbx} z({Pg?#{2`sc9)M5N$*N|4;^t$+QP?#mov zGVC@I*lBVrOU-%2y!7%)fAKjpEFsgQc4{amtiHb95KQEwvf<(3T<9-Zm$xIew#P22 zc2Ix|App^>v6(3L_MCU0d3W##AB0M~3D00EWoKZqsJYT(#@w$Y_H7G22M~ApVFTRHMI_3be)Lkn#0F*V8Pq zc}`Cjy$bE;FJ6H7p=0y#R>`}-m4(0F>%@P|?7fx{=R^uFdISRnZ2W_xQhD{YuR3t< z{6yxu=4~JkeA;|(J6_nv#>Nvs&FuLA&PW^he@t(UwFFE8)|a!R{`E`K`i^ZnyE4$k z;(749Ix|oi$c3QbEJ3b~D_kQsPz~fIUKym($a_7dJ?o+40*OLl^{=&oq$<#Q(yyrp z{J-FAniyAw9tPbe&IhQ|a`DqFTVQGQ&Gq3!C2==4x{6EJwiPZ8zub-iXoUtkJiG{} zPaR&}_fn8_z~(=;5lD-aPWD3z8PZS@AaUiomF!G8I}Mf>e~0g#BelA-5#`cj;O5>N Xviia!U7SGha1wx#SCgwmn*{w2TRX*I diff --git a/base_tier_validation/static/description/index.html b/base_tier_validation/static/description/index.html deleted file mode 100644 index 9e3770f0..00000000 --- a/base_tier_validation/static/description/index.html +++ /dev/null @@ -1,583 +0,0 @@ - - - - - - -Base Tier Validation - - - -
-

Base Tier Validation

- - -

Mature License: AGPL-3 OCA/server-ux Translate me on Weblate Try me on Runboat

-

Validating some operations is a common need across different areas in a company -and sometimes it also involves several people and stages in the process. With -this module you will be able to define your custom validation workflows for -any Odoo document.

-

This module does not provide a functionality by itself but an abstract model -to implement a validation process based on tiers on other models (e.g. -purchase orders, sales orders, budgets, expenses…).

-

Note: To be able to use this module in a new model you will need some -development.

-

See purchase_tier_validation as an example of implementation.

-

Table of contents

- -
-

Configuration

-

To configure this module, you need to:

-
    -
  1. Go to Settings > Technical > Tier Validations > Tier Definition.
  2. -
  3. Create as many tiers as you want for any model having tier validation -functionality.
  4. -
-

Note:

-
    -
  • If check Notify Reviewers on Creation, all possible reviewers will be notified by email when this definition is triggered.
  • -
  • If check Comment, reviewers can comment after click Validate or Reject.
  • -
  • If check Approve by sequence, reviewers is forced to review by specified sequence.
  • -
-
-
-

Known issues / Roadmap

-

This is the list of known issues for this module. Any proposal for improvement will -be very valuable.

-
    -
  • Issue:

    -

    When using approve_sequence option in any tier.definition there can be inconsistencies -in the systray notifications.

    -

    Description:

    -

    Field can_review in tier.review is used to filter out, in the systray notifications, -the reviews a user can approve. This can_review field is updated in the database -in method review_user_count, this can make it very inconsistent for databases -with a lot of users and recurring updates that can change the expected behavior.

    -
  • -
  • Migration to 15.0:

    -

    The parameter _tier_validation_manual_config will become False, on 14.0, the default -value is True, as the change is applied after the migration. In order to use the new -behavior we need to modify the value on our expected model.

    -
  • -
-
-
-

Changelog

-
-

14.0.1.0.0 (2020-11-19)

-

Migrated to Odoo 14.

-
-
-

13.0.1.2.2 (2020-08-30)

-

Fixes:

-
    -
  • When using approve_sequence option in any tier.definition there can be inconsistencies in the systray notifications
  • -
  • When using approve_sequence, still not approve only the needed sequence, but also other sequence for the same approver
  • -
-
-
-

12.0.3.3.1 (2019-12-02)

-

Fixes:

-
    -
  • Show comment on Reviews Table.
  • -
  • Edit notification with approve_sequence.
  • -
-
-
-

12.0.3.3.0 (2019-11-27)

-

New features:

-
    -
  • Add comment on Reviews Table.
  • -
  • Approve by sequence.
  • -
-
-
-

12.0.3.2.1 (2019-11-26)

-

Fixes:

-
    -
  • Remove message_subscribe_users
  • -
-
-
-

12.0.3.2.0 (2019-11-25)

-

New features:

-
    -
  • Notify reviewers
  • -
-
-
-

12.0.3.1.0 (2019-07-08)

-

Fixes:

-
    -
  • Singleton error
  • -
-
-
-

12.0.3.0.0 (2019-12-02)

-

Fixes:

-
    -
  • Edit Reviews Table
  • -
-
-
-

12.0.2.1.0 (2019-05-29)

-

Fixes:

-
    -
  • Edit drop-down style width and position
  • -
-
-
-

12.0.2.0.0 (2019-05-28)

-

New features:

-
    -
  • Pass parameters as functions.
  • -
  • Add Systray.
  • -
-
-
-

12.0.1.0.0 (2019-02-18)

-

Migrated to Odoo 12.

-
-
-

11.0.1.0.0 (2018-05-09)

-

Migrated to Odoo 11.

-
-
-

10.0.1.0.0 (2018-03-26)

-

Migrated to Odoo 10.

-
-
-

9.0.1.0.0 (2017-12-02)

-

First version.

-
-
-
-

Bug Tracker

-

Bugs are tracked on GitHub Issues. -In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us to smash it by providing a detailed and welcomed -feedback.

-

Do not contact contributors directly about support or help with technical issues.

-
-
-

Credits

-
-

Authors

-
    -
  • ForgeFlow
  • -
-
-
-

Contributors

- -
-
-

Maintainers

-

This module is maintained by the OCA.

-Odoo Community Association -

OCA, or the Odoo Community Association, is a nonprofit organization whose -mission is to support the collaborative development of Odoo features and -promote its widespread use.

-

Current maintainer:

-

LoisRForgeFlow

-

This module is part of the OCA/server-ux project on GitHub.

-

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

-
-
-
- - diff --git a/base_tier_validation/static/src/js/ir_model.esm.js b/base_tier_validation/static/src/js/ir_model.esm.js deleted file mode 100644 index fdc278f0..00000000 --- a/base_tier_validation/static/src/js/ir_model.esm.js +++ /dev/null @@ -1,29 +0,0 @@ -/** @odoo-module **/ - -import {attr, one} from "@mail/model/model_field"; -import {registerModel} from "@mail/model/model_core"; - -registerModel({ - name: "ir.model.review", - fields: { - /** - * Determines the name of the views that are available for this model. - */ - availableWebViews: attr({ - compute() { - return ["kanban", "list", "form", "activity"]; - }, - }), - reviewGroup: one("ReviewGroup", { - inverse: "irModel", - }), - iconUrl: attr(), - id: attr({ - identifying: true, - }), - model: attr({ - required: true, - }), - name: attr(), - }, -}); diff --git a/base_tier_validation/static/src/js/main.esm.js b/base_tier_validation/static/src/js/main.esm.js deleted file mode 100644 index c0247713..00000000 --- a/base_tier_validation/static/src/js/main.esm.js +++ /dev/null @@ -1,7 +0,0 @@ -/** @odoo-module **/ - -import {registry} from "@web/core/registry"; -import {systrayService} from "@base_tier_validation/js/systray_service.esm"; - -const serviceRegistry = registry.category("services"); -serviceRegistry.add("review_systray_service", systrayService); diff --git a/base_tier_validation/static/src/js/review_group_view.esm.js b/base_tier_validation/static/src/js/review_group_view.esm.js deleted file mode 100644 index 8266813d..00000000 --- a/base_tier_validation/static/src/js/review_group_view.esm.js +++ /dev/null @@ -1,51 +0,0 @@ -/** @odoo-module **/ - -import {one} from "@mail/model/model_field"; -import {registerModel} from "@mail/model/model_core"; - -registerModel({ - name: "ReviewGroupView", - recordMethods: { - /** - * @param {MouseEvent} ev - */ - onClickFilterButton(ev) { - this.reviewMenuViewOwner.update({isOpen: false}); - // Fetch the data from the button otherwise fetch the ones from the parent (.o_ActivityMenuView_activityGroup). - const data = _.extend({}, $(ev.currentTarget).data(), $(ev.target).data()); - const context = {}; - var domain = [["can_review", "=", true]]; - console.log(data); - if (data.active_field) { - domain.push(["active", "in", [true, false]]); - } - - this.env.services.action.doAction( - { - context, - name: data.model_name, - res_model: data.res_model, - search_view_id: [false], - type: "ir.actions.act_window", - domain: domain, - views: this.reviewGroup.irModel.availableWebViews.map( - (viewName) => [false, viewName] - ), - }, - { - clearBreadcrumbs: true, - } - ); - }, - }, - fields: { - reviewGroup: one("ReviewGroup", { - identifying: true, - inverse: "reviewGroupViews", - }), - reviewMenuViewOwner: one("ReviewerMenuView", { - identifying: true, - inverse: "reviewGroupViews", - }), - }, -}); diff --git a/base_tier_validation/static/src/js/review_groups.esm.js b/base_tier_validation/static/src/js/review_groups.esm.js deleted file mode 100644 index 1bee17b2..00000000 --- a/base_tier_validation/static/src/js/review_groups.esm.js +++ /dev/null @@ -1,52 +0,0 @@ -/** @odoo-module **/ - -import {attr, many, one} from "@mail/model/model_field"; -import {registerModel} from "@mail/model/model_core"; - -registerModel({ - name: "ReviewGroup", - modelMethods: { - convertData(data) { - return { - domain: data.domain, - irModel: { - iconUrl: data.icon, - id: data.id, - model: data.model, - name: data.name, - }, - pending_count: data.pending_count, - }; - }, - }, - recordMethods: { - /** - * @private - */ - _onChangePendingCount() { - if (this.type === "tier_review" && this.pending_count === 0) { - this.delete(); - } - }, - }, - fields: { - reviewGroupViews: many("ReviewGroupView", { - inverse: "reviewGroup", - }), - domain: attr(), - irModel: one("ir.model.review", { - identifying: true, - inverse: "reviewGroup", - }), - pending_count: attr({ - default: 0, - }), - type: attr(), - }, - onChanges: [ - { - dependencies: ["pending_count", "type"], - methodName: "_onChangePendingCount", - }, - ], -}); diff --git a/base_tier_validation/static/src/js/review_notification_handler.esm.js b/base_tier_validation/static/src/js/review_notification_handler.esm.js deleted file mode 100644 index c7f98bb2..00000000 --- a/base_tier_validation/static/src/js/review_notification_handler.esm.js +++ /dev/null @@ -1,26 +0,0 @@ -/** @odoo-module **/ - -import {decrement, increment} from "@mail/model/model_field_command"; -import {registerPatch} from "@mail/model/model_core"; - -registerPatch({ - name: "MessagingNotificationHandler", - recordMethods: { - /** - * @override - */ - async _handleNotification(message) { - if (message.type === "base.tier.validation/updated") { - for (const reviewMenuView of this.messaging.models.ReviewerMenuView.all()) { - if (message.payload.review_created) { - reviewMenuView.update({extraCount: increment()}); - } - if (message.payload.review_deleted) { - reviewMenuView.update({extraCount: decrement()}); - } - } - } - return this._super(message); - }, - }, -}); diff --git a/base_tier_validation/static/src/js/reviewer_menu_container.esm.js b/base_tier_validation/static/src/js/reviewer_menu_container.esm.js deleted file mode 100644 index cfe23bd9..00000000 --- a/base_tier_validation/static/src/js/reviewer_menu_container.esm.js +++ /dev/null @@ -1,25 +0,0 @@ -/** @odoo-module **/ - -// ensure components are registered beforehand. -import {getMessagingComponent} from "@mail/utils/messaging_component"; - -const {Component} = owl; - -export class ReviewerMenuContainer extends Component { - /** - * @override - */ - setup() { - super.setup(); - this.env.services.messaging.modelManager.messagingCreatedPromise.then(() => { - this.reviewerMenuView = - this.env.services.messaging.modelManager.messaging.models.ReviewerMenuView.insert(); - this.render(); - }); - } -} - -Object.assign(ReviewerMenuContainer, { - components: {ReviewerMenuView: getMessagingComponent("ReviewerMenuView")}, - template: "base_tier_validation.ReviewerMenuContainer", -}); diff --git a/base_tier_validation/static/src/js/reviewer_menu_view.esm.js b/base_tier_validation/static/src/js/reviewer_menu_view.esm.js deleted file mode 100644 index 17931141..00000000 --- a/base_tier_validation/static/src/js/reviewer_menu_view.esm.js +++ /dev/null @@ -1,29 +0,0 @@ -/** @odoo-module **/ - -import {registerMessagingComponent} from "@mail/utils/messaging_component"; -import {useComponentToModel} from "@mail/component_hooks/use_component_to_model"; - -const {Component} = owl; - -export class ReviewerMenuView extends Component { - /** - * @override - */ - setup() { - super.setup(); - useComponentToModel({fieldName: "component"}); - } - /** - * @returns {ReviewerMenuView} - */ - get reviewerMenuView() { - return this.props.record; - } -} - -Object.assign(ReviewerMenuView, { - props: {record: Object}, - template: "base_tier_validation.ReviewerMenuView", -}); - -registerMessagingComponent(ReviewerMenuView); diff --git a/base_tier_validation/static/src/js/systray.esm.js b/base_tier_validation/static/src/js/systray.esm.js deleted file mode 100644 index 5380adb0..00000000 --- a/base_tier_validation/static/src/js/systray.esm.js +++ /dev/null @@ -1,104 +0,0 @@ -/** @odoo-module **/ - -import {attr, many} from "@mail/model/model_field"; -import {registerModel} from "@mail/model/model_core"; - -import session from "web.session"; - -registerModel({ - name: "ReviewerMenuView", - lifecycleHooks: { - _created() { - this.fetchData(); - document.addEventListener("click", this._onClickCaptureGlobal, true); - }, - _willDelete() { - document.removeEventListener("click", this._onClickCaptureGlobal, true); - }, - }, - recordMethods: { - close() { - this.update({isOpen: false}); - }, - async fetchData() { - const data = await this.messaging.rpc({ - model: "res.users", - method: "review_user_count", - args: [], - kwargs: {context: session.user_context}, - }); - - this.update({ - reviewGroups: data.map((vals) => - this.messaging.models.ReviewGroup.convertData(vals) - ), - extraCount: 0, - }); - }, - /** - * @param {MouseEvent} ev - */ - onClickDropdownToggle(ev) { - ev.preventDefault(); - if (this.isOpen) { - this.update({isOpen: false}); - } else { - this.update({isOpen: true}); - this.fetchData(); - } - }, - /** - * Closes the menu when clicking outside, if appropriate. - * - * @private - * @param {MouseEvent} ev - */ - _onClickCaptureGlobal(ev) { - if (!this.exists()) { - return; - } - if (!this.component || !this.component.root.el) { - return; - } - if (this.component.root.el.contains(ev.target)) { - return; - } - this.close(); - }, - }, - fields: { - reviewGroups: many("ReviewGroup", { - sort: [["smaller-first", "irModel.id"]], - }), - reviewGroupViews: many("ReviewGroupView", { - compute() { - return this.reviewGroups.map((reviewGroup) => { - return { - reviewGroup, - }; - }); - }, - inverse: "reviewMenuViewOwner", - }), - component: attr(), - counter: attr({ - compute() { - return this.reviewGroups.reduce( - (total, group) => total + group.pending_count, - this.extraCount - ); - }, - }), - /** - * Determines the number of activities that have been added in the - * system but not yet taken into account in each activity group counter. - * - * @deprecated this field should be replaced by directly updating the - * counter of each group. - */ - extraCount: attr(), - isOpen: attr({ - default: false, - }), - }, -}); diff --git a/base_tier_validation/static/src/js/systray_service.esm.js b/base_tier_validation/static/src/js/systray_service.esm.js deleted file mode 100644 index 78a1101c..00000000 --- a/base_tier_validation/static/src/js/systray_service.esm.js +++ /dev/null @@ -1,17 +0,0 @@ -/** @odoo-module **/ - -import {ReviewerMenuContainer} from "./reviewer_menu_container.esm"; - -import {registry} from "@web/core/registry"; - -const systrayRegistry = registry.category("systray"); - -export const systrayService = { - start() { - systrayRegistry.add( - "base_tier_validation.ReviewerMenu", - {Component: ReviewerMenuContainer}, - {sequence: 99} - ); - }, -}; diff --git a/base_tier_validation/static/src/js/tier_review_widget.esm.js b/base_tier_validation/static/src/js/tier_review_widget.esm.js deleted file mode 100644 index a5ab0aa5..00000000 --- a/base_tier_validation/static/src/js/tier_review_widget.esm.js +++ /dev/null @@ -1,36 +0,0 @@ -/** @odoo-module **/ - -import {registry} from "@web/core/registry"; - -import {useService} from "@web/core/utils/hooks"; - -const {Component, useState} = owl; - -export class ReviewsTable extends Component { - setup() { - this.docs = useState({}); - this.collapse = false; - this.orm = useService("orm"); - this.reviews = []; - } - _getReviewData() { - const records = this.env.model.root.data.review_ids.records; - const reviews = []; - for (var i = 0; i < records.length; i++) { - reviews.push(records[i].data); - } - return reviews; - } - onToggleCollapse(ev) { - var $panelHeading = $(ev.currentTarget).closest(".panel-heading"); - if (this.collapse) { - $panelHeading.next("div#collapse1").hide(); - } else { - $panelHeading.next("div#collapse1").show(); - } - this.collapse = !this.collapse; - } -} - -ReviewsTable.template = "base_tier_validation.Collapse"; -registry.category("fields").add("form.tier_validation", ReviewsTable); diff --git a/base_tier_validation/static/src/scss/review.scss b/base_tier_validation/static/src/scss/review.scss deleted file mode 100644 index 4342206d..00000000 --- a/base_tier_validation/static/src/scss/review.scss +++ /dev/null @@ -1,41 +0,0 @@ -ul.o_review { - min-width: 600px; - max-width: 800px; -} - -.panel-group { - min-height: auto !important; - margin-top: -6px !important; - padding: 16px 16px 8px 16px !important; -} - -.panel-heading { - background-color: initial !important; -} - -.panel { - border: 0px !important; -} - -.panel-body { - overflow-y: hidden; - overflow-x: auto; -} - -.panel-title > a, -.panel-title > a:active { - display: block; -} - -.panel-heading a:before { - font-family: FontAwesome; - content: "\f0d7"; - float: right; - transition: all 0.5s; -} - -.panel-heading.active a:before { - -webkit-transform: rotate(180deg); - -moz-transform: rotate(180deg); - transform: rotate(180deg); -} diff --git a/base_tier_validation/static/src/scss/systray.scss b/base_tier_validation/static/src/scss/systray.scss deleted file mode 100644 index 82fd85e5..00000000 --- a/base_tier_validation/static/src/scss/systray.scss +++ /dev/null @@ -1,143 +0,0 @@ -// Navbar icon and dropdown -.o_tier_navbar_item { - > a { - opacity: 1; - > i { - font-size: larger; - } - } - &.o_no_notification > a { - opacity: 0.5; - > i { - transform: translateY(0px); - } - .o_notification_counter { - display: none; - } - } - &.show .o_tier_systray_dropdown { - display: flex; - flex-flow: column nowrap; - } - .o_notification_counter { - margin-top: -0.8rem; - margin-right: 0; - margin-left: -0.6rem; - background: #00a09d; - color: white; - vertical-align: super; - font-size: 0.7em; - } - .o_tier_systray_dropdown { - direction: ltr; - width: 350px; - padding: 0; - - .o_spinner { - display: flex; - align-items: center; - justify-content: center; - color: $o-main-text-color; - height: 50px; - } - - .o_tier_systray_dropdown_top { - display: flex; - flex: 0 0 auto; - justify-content: space-between; - border-bottom: 1px solid gray("400"); - box-shadow: 0 0 2px gray("400"); - .o_filter_button, - .o_new_message { - padding: 5px; - } - .o_filter_button { - color: $o-main-color-muted; - &:hover, - &.active { - color: $o-brand-primary; - } - &.active { - cursor: default; - font-weight: bold; - } - } - } - - .o_tier_systray_dropdown_items { - flex: 0 1 auto; - max-height: 400px; - min-height: 50px; - overflow-y: auto; - - @include media-breakpoint-up(md) { - .o_tier_preview { - min-height: 50px; - padding: 5px; - .o_tier_preview_image { - width: 40px; - height: 40px; - } - .o_preview_info { - margin-left: 10px; - .o_preview_title { - .o_last_message_date { - padding-top: 2px; - font-size: x-small; - margin-left: 10px; - } - } - } - } - } - } - .o_activity_filter_button { - padding: 2px; - } - .o_no_activity { - cursor: initial; - align-items: center; - color: grey; - opacity: 0.5; - padding: 3px; - } - } -} - -.o_no_thread_window .o_tier_systray_dropdown .o_new_message { - display: none; // hide 'new message' button if chat windows are disabled -} - -// Mobile rules -// Goal: mock the design of Discuss in mobile -@include media-breakpoint-down(sm) { - .o_tier_systray_item { - .o_notification_counter { - top: 10%; - } - .o_tier_systray_dropdown { - position: relative; - .o_tier_systray_dropdown_top { - padding: 5px; - } - .o_tier_systray_mobile_header { - padding: 5px; - height: 44px; - border-bottom: 1px solid #ebebeb; - box-shadow: 0 0 2px gray("400"); - } - .o_tier_systray_dropdown_items { - max-height: none; - padding-bottom: 52px; // leave space for tabs - } - .o_tier_mobile_tabs { - position: fixed; - bottom: 0px; - left: 0px; - right: 0px; - background-color: white; - color: $o-main-text-color; - } - } - } -} diff --git a/base_tier_validation/static/src/xml/reviewer_menu_container.xml b/base_tier_validation/static/src/xml/reviewer_menu_container.xml deleted file mode 100644 index 358ff6bc..00000000 --- a/base_tier_validation/static/src/xml/reviewer_menu_container.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/base_tier_validation/static/src/xml/systray.xml b/base_tier_validation/static/src/xml/systray.xml deleted file mode 100644 index 9ceac43b..00000000 --- a/base_tier_validation/static/src/xml/systray.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - diff --git a/base_tier_validation/static/src/xml/tier_review_template.xml b/base_tier_validation/static/src/xml/tier_review_template.xml deleted file mode 100644 index 75da99fb..00000000 --- a/base_tier_validation/static/src/xml/tier_review_template.xml +++ /dev/null @@ -1,119 +0,0 @@ - - - -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SequenceRequested byDescriptionStatusTodo byDone byValidation DateComment
- - - - - - - - - - - - - - - - - - - -
-
-
-
-
-
-
diff --git a/base_tier_validation/templates/tier_validation_templates.xml b/base_tier_validation/templates/tier_validation_templates.xml deleted file mode 100644 index cac5c2f2..00000000 --- a/base_tier_validation/templates/tier_validation_templates.xml +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - diff --git a/base_tier_validation/tests/__init__.py b/base_tier_validation/tests/__init__.py deleted file mode 100644 index c5d19b19..00000000 --- a/base_tier_validation/tests/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from . import common -from . import test_tier_validation diff --git a/base_tier_validation/tests/common.py b/base_tier_validation/tests/common.py deleted file mode 100644 index b1258c39..00000000 --- a/base_tier_validation/tests/common.py +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright 2018-19 ForgeFlow S.L. (https://www.forgeflow.com) -# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). - -from odoo_test_helper import FakeModelLoader - -from odoo.tests import common - -from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT - - -class CommonTierValidation(common.TransactionCase): - @classmethod - def setUpClass(cls): - super().setUpClass() - cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT)) - cls.loader = FakeModelLoader(cls.env, cls.__module__) - cls.loader.backup_registry() - from .tier_validation_tester import ( - TierDefinition, - TierValidationTester, - TierValidationTester2, - ) - - cls.loader.update_registry( - (TierValidationTester, TierValidationTester2, TierDefinition) - ) - - cls.test_model = cls.env[TierValidationTester._name] - cls.test_model_2 = cls.env[TierValidationTester2._name] - - cls.tester_model = cls.env["ir.model"].search( - [("model", "=", "tier.validation.tester")] - ) - cls.tester_model_2 = cls.env["ir.model"].search( - [("model", "=", "tier.validation.tester2")] - ) - - # Access record: - cls.env["ir.model.access"].create( - { - "name": "access.tester", - "model_id": cls.tester_model.id, - "perm_read": 1, - "perm_write": 1, - "perm_create": 1, - "perm_unlink": 1, - } - ) - cls.env["ir.model.access"].create( - { - "name": "access.tester2", - "model_id": cls.tester_model_2.id, - "perm_read": 1, - "perm_write": 1, - "perm_create": 1, - "perm_unlink": 1, - } - ) - - # Create users: - group_ids = cls.env.ref("base.group_system").ids - cls.test_user_1 = cls.env["res.users"].create( - { - "name": "John", - "login": "test1", - "email": "john@yourcompany.example.com", - "groups_id": [(6, 0, group_ids)], - } - ) - cls.test_user_2 = cls.env["res.users"].create( - {"name": "Mike", "login": "test2", "email": "mike@yourcompany.example.com"} - ) - - # Create tier definitions: - cls.tier_def_obj = cls.env["tier.definition"] - cls.tier_def_obj.create( - { - "model_id": cls.tester_model.id, - "review_type": "individual", - "reviewer_id": cls.test_user_1.id, - "definition_domain": "[('test_field', '>', 1.0)]", - "sequence": 30, - } - ) - - cls.test_record = cls.test_model.create({"test_field": 2.5}) - cls.test_record_2 = cls.test_model_2.create({"test_field": 2.5}) - - @classmethod - def tearDownClass(cls): - cls.loader.restore_registry() - return super(CommonTierValidation, cls).tearDownClass() diff --git a/base_tier_validation/tests/test_tier_validation.py b/base_tier_validation/tests/test_tier_validation.py deleted file mode 100644 index 4cbd9613..00000000 --- a/base_tier_validation/tests/test_tier_validation.py +++ /dev/null @@ -1,535 +0,0 @@ -# Copyright 2018-19 ForgeFlow S.L. (https://www.forgeflow.com) -# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). - -from lxml import etree - -from odoo.exceptions import ValidationError -from odoo.tests.common import Form, tagged - -from .common import CommonTierValidation - - -@tagged("post_install", "-at_install") -class TierTierValidation(CommonTierValidation): - def test_01_auto_validation(self): - """When the user can validate all future reviews, it is not needed - to request a validation, the action can be done straight forward.""" - self.test_record.with_user(self.test_user_1.id).action_confirm() - self.assertEqual(self.test_record.state, "confirmed") - - def test_02_no_auto_validation(self): - """User with no right to validate future reviews must request a - validation.""" - with self.assertRaises(ValidationError): - self.test_record.with_user(self.test_user_2.id).action_confirm() - - def test_03_request_validation_approved(self): - """User 2 request a validation and user 1 approves it.""" - self.assertFalse(self.test_record.review_ids) - reviews = self.test_record.with_user(self.test_user_2.id).request_validation() - self.assertTrue(reviews) - record = self.test_record.with_user(self.test_user_1.id) - record.invalidate_model() - record.validate_tier() - self.assertTrue(record.validated) - - def test_04_request_validation_rejected(self): - """Request validation, rejection and reset.""" - self.assertFalse(self.test_record.review_ids) - reviews = self.test_record.with_user(self.test_user_2.id).request_validation() - self.assertTrue(reviews) - record = self.test_record.with_user(self.test_user_1.id) - record.invalidate_model() - record.reject_tier() - self.assertTrue(record.review_ids) - self.assertTrue(record.rejected) - record.restart_validation() - self.assertFalse(record.review_ids) - - def test_05_under_validation(self): - """Write is forbidden in a record under validation.""" - self.assertFalse(self.test_record.review_ids) - reviews = self.test_record.with_user(self.test_user_2.id).request_validation() - self.assertTrue(reviews) - record = self.test_record.with_user(self.test_user_1.id) - record.invalidate_model() - with self.assertRaises(ValidationError): - record.write({"test_field": 0.5}) - - def test_06_validation_process_open(self): - """Operation forbidden while a validation process is open.""" - self.assertFalse(self.test_record.review_ids) - reviews = self.test_record.with_user(self.test_user_2.id).request_validation() - self.assertTrue(reviews) - record = self.test_record.with_user(self.test_user_1.id) - record.invalidate_model() - with self.assertRaises(ValidationError): - record.action_confirm() - - def test_07_search_reviewers(self): - """Test search methods.""" - reviews = self.test_record.with_user(self.test_user_2.id).request_validation() - self.assertTrue(reviews) - record = self.test_record.with_user(self.test_user_1.id) - record.invalidate_model() - self.assertIn(self.test_user_1, record.reviewer_ids) - res = self.test_model.search([("reviewer_ids", "in", self.test_user_1.id)]) - self.assertTrue(res) - - def test_08_search_validated(self): - """Test for the validated search method.""" - self.test_record.with_user(self.test_user_2.id).request_validation() - self.test_record.invalidate_model() - res = self.test_model.with_user(self.test_user_1.id).search( - [("validated", "=", False)] - ) - self.assertTrue(res) - - def test_09_search_rejected(self): - """Test for the rejected search method.""" - self.test_record.with_user(self.test_user_2.id).request_validation() - self.test_record.invalidate_model() - res = self.test_model.with_user(self.test_user_1.id).search( - [("rejected", "=", False)] - ) - self.assertTrue(res) - - def test_10_systray_counter(self): - # Create new test record - test_record = self.test_model.create({"test_field": 2.5}) - # Create tier definitions for both tester models - self.tier_def_obj.create( - { - "model_id": self.tester_model.id, - "review_type": "individual", - "reviewer_id": self.test_user_1.id, - "definition_domain": "[('test_field', '>', 1.0)]", - } - ) - self.tier_def_obj.create( - { - "model_id": self.tester_model.id, - "review_type": "individual", - "reviewer_id": self.test_user_1.id, - "definition_domain": "[('test_field', '>', 1.0)]", - } - ) - self.tier_def_obj.create( - { - "model_id": self.tester_model_2.id, - "review_type": "individual", - "reviewer_id": self.test_user_1.id, - "definition_domain": "[('test_field', '>', 1.0)]", - } - ) - # Request validation - self.test_record.with_user(self.test_user_2.id).request_validation() - self.test_record.invalidate_model() - test_record.with_user(self.test_user_2.id).request_validation() - test_record.invalidate_model() - self.test_record_2.with_user(self.test_user_2.id).request_validation() - self.test_record_2.invalidate_model() - # Get review user count as systray icon would do and check count value - docs = self.test_user_1.with_user(self.test_user_1).review_user_count() - for doc in docs: - if doc.get("name") == "tier.validation.tester2": - self.assertEqual(doc.get("pending_count"), 1) - else: - self.assertEqual(doc.get("pending_count"), 2) - - def test_11_add_comment(self): - # Create new test record - test_record = self.test_model.create({"test_field": 2.5}) - # Create tier definitions - self.tier_def_obj.create( - { - "model_id": self.tester_model.id, - "review_type": "individual", - "reviewer_id": self.test_user_1.id, - "definition_domain": "[('test_field', '>', 1.0)]", - "has_comment": True, - } - ) - # Request validation - review = test_record.with_user(self.test_user_2.id).request_validation() - self.assertTrue(review) - record = test_record.with_user(self.test_user_1.id) - record.invalidate_model() - res = record.validate_tier() - ctx = res.get("context") - wizard = Form(self.env["comment.wizard"].with_context(**ctx)) - wizard.comment = "Test Comment" - wiz = wizard.save() - wiz.add_comment() - self.assertTrue(test_record.review_ids.mapped("comment")) - # Check notify - comment = test_record.with_user( - self.test_user_1.id - )._notify_accepted_reviews_body() - self.assertEqual(comment, "A review was accepted. (Test Comment)") - comment = test_record.with_user( - self.test_user_1.id - )._notify_rejected_review_body() - self.assertEqual(comment, "A review was rejected by John. (Test Comment)") - - def test_11_add_comment_rejection(self): - # Create new test record - test_record = self.test_model.create({"test_field": 2.5}) - # Create tier definitions - self.tier_def_obj.create( - { - "model_id": self.tester_model.id, - "review_type": "individual", - "reviewer_id": self.test_user_1.id, - "definition_domain": "[('test_field', '>', 1.0)]", - "has_comment": True, - } - ) - # Request validation - review = test_record.with_user(self.test_user_2.id).request_validation() - self.assertTrue(review) - record = test_record.with_user(self.test_user_1.id) - record.invalidate_model() - res = record.reject_tier() # Rejection - ctx = res.get("context") - wizard = Form(self.env["comment.wizard"].with_context(**ctx)) - wizard.comment = "Test Comment" - wiz = wizard.save() - wiz.add_comment() - self.assertTrue(test_record.review_ids.mapped("comment")) - # Check notify - comment = test_record.with_user( - self.test_user_1.id - )._notify_accepted_reviews_body() - self.assertEqual(comment, "A review was accepted. (Test Comment)") - comment = test_record.with_user( - self.test_user_1.id - )._notify_rejected_review_body() - self.assertEqual(comment, "A review was rejected by John. (Test Comment)") - - def test_12_approve_sequence(self): - # Create new test record - test_record = self.test_model.create({"test_field": 2.5}) - # Create tier definitions - self.tier_def_obj.create( - { - "model_id": self.tester_model.id, - "review_type": "individual", - "reviewer_id": self.test_user_1.id, - "definition_domain": "[('test_field', '>', 1.0)]", - "approve_sequence": True, - "sequence": 30, - } - ) - self.tier_def_obj.create( - { - "model_id": self.tester_model.id, - "review_type": "individual", - "reviewer_id": self.test_user_2.id, - "definition_domain": "[('test_field', '>', 1.0)]", - "approve_sequence": True, - "sequence": 10, - } - ) - # Request validation - self.assertFalse(self.test_record.review_ids) - reviews = test_record.with_user(self.test_user_2.id).request_validation() - self.assertTrue(reviews) - - docs1 = self.test_user_2.with_user(self.test_user_1).review_user_count() - for doc in docs1: - self.assertEqual(doc.get("pending_count"), 1) - docs2 = self.test_user_2.with_user(self.test_user_2).review_user_count() - for doc in docs2: - self.assertEqual(doc.get("pending_count"), 0) - - record1 = test_record.with_user(self.test_user_1.id) - record1.invalidate_model() - self.assertTrue(record1.can_review) - record2 = test_record.with_user(self.test_user_2.id) - record2.invalidate_model() - self.assertFalse(record2.can_review) - # User 1 validates the record, 2 review should be approved. - self.assertFalse(any(r.status == "approved" for r in record1.review_ids)) - record1.validate_tier() - self.assertTrue(any(r.status == "approved" for r in record1.review_ids)) - - def test_12_approve_sequence_same_user(self): - """Similar to test_12_approve_sequence, but all same users, - the approve_sequence still apply correctly""" - # Create new test record - test_record = self.test_model.create({"test_field": 2.5}) - # Create tier definitions - self.tier_def_obj.create( - { - "model_id": self.tester_model.id, - "review_type": "individual", - "reviewer_id": self.test_user_1.id, - "definition_domain": "[('test_field', '>', 1.0)]", - "approve_sequence": True, - "sequence": 20, - } - ) - self.tier_def_obj.create( - { - "model_id": self.tester_model.id, - "review_type": "individual", - "reviewer_id": self.test_user_1.id, - "definition_domain": "[('test_field', '>', 1.0)]", - "approve_sequence": True, - "sequence": 10, - } - ) - # Request validation - self.assertFalse(self.test_record.review_ids) - reviews = test_record.with_user(self.test_user_1.id).request_validation() - self.assertTrue(reviews) - - record1 = test_record.with_user(self.test_user_1.id) - record1.invalidate_model() - self.assertTrue(record1.can_review) - # Validation will be all by sequence - self.assertEqual( - 3, len(record1.review_ids.filtered(lambda l: l.status == "pending")) - ) - record1.validate_tier() - self.assertEqual( - 2, len(record1.review_ids.filtered(lambda l: l.status == "pending")) - ) - record1.validate_tier() - self.assertEqual( - 1, len(record1.review_ids.filtered(lambda l: l.status == "pending")) - ) - record1.validate_tier() - self.assertEqual( - 0, len(record1.review_ids.filtered(lambda l: l.status == "pending")) - ) - - def test_12_approve_sequence_same_user_bypassed(self): - """Similar to test_12_approve_sequence, with all same users, - but approve_sequence_bypass is True""" - # Create new test record - test_record = self.test_model.create({"test_field": 2.5}) - # Create tier definitions - self.tier_def_obj.create( - { - "model_id": self.tester_model.id, - "review_type": "individual", - "reviewer_id": self.test_user_1.id, - "definition_domain": "[('test_field', '>', 1.0)]", - "approve_sequence": True, - "approve_sequence_bypass": True, - "sequence": 20, - } - ) - self.tier_def_obj.create( - { - "model_id": self.tester_model.id, - "review_type": "individual", - "reviewer_id": self.test_user_1.id, - "definition_domain": "[('test_field', '>', 1.0)]", - "approve_sequence": True, - "approve_sequence_bypass": True, - "sequence": 10, - } - ) - # Request validation - self.assertFalse(self.test_record.review_ids) - reviews = test_record.with_user(self.test_user_1.id).request_validation() - self.assertTrue(reviews) - - record1 = test_record.with_user(self.test_user_1.id) - record1.invalidate_model() - self.assertTrue(record1.can_review) - # When the first tier is validated, all the rest will be approved. - self.assertEqual( - 3, len(record1.review_ids.filtered(lambda l: l.status == "pending")) - ) - record1.validate_tier() - self.assertEqual( - 0, len(record1.review_ids.filtered(lambda l: l.status == "pending")) - ) - - def test_13_onchange_review_type(self): - tier_def_id = self.tier_def_obj.create( - { - "model_id": self.tester_model.id, - "review_type": "individual", - "reviewer_id": self.test_user_1.id, - "definition_domain": "[('test_field', '>', 1.0)]", - "approve_sequence": True, - } - ) - self.assertTrue(tier_def_id.reviewer_id) - tier_def_id.review_type = "group" - tier_def_id.onchange_review_type() - self.assertFalse(tier_def_id.reviewer_id) - - def test_14_onchange_review_type(self): - tier_def_id = self.tier_def_obj.create( - { - "model_id": self.tester_model.id, - "review_type": "individual", - "reviewer_id": self.test_user_1.id, - "definition_domain": "[('test_field', '>', 1.0)]", - "approve_sequence": True, - } - ) - self.assertTrue(tier_def_id.reviewer_id) - tier_def_id.review_type = "group" - tier_def_id.onchange_review_type() - self.assertFalse(tier_def_id.reviewer_id) - - def test_15_review_user_count(self): - # Create new test record - test_record = self.test_model.create({"test_field": 2.5}) - # Create tier definitions - self.tier_def_obj.create( - { - "model_id": self.tester_model.id, - "review_type": "individual", - "reviewer_id": self.test_user_1.id, - "definition_domain": "[('test_field', '>', 1.0)]", - "has_comment": True, - } - ) - # Request validation - review = test_record.with_user(self.test_user_2).request_validation() - self.assertTrue(review) - self.assertTrue(self.test_user_1.get_reviews({"res_ids": review.ids})) - self.assertTrue(self.test_user_1.review_ids) - test_record.invalidate_model() - self.assertTrue(test_record.review_ids) - # Used by front-end - count = self.test_user_1.with_user(self.test_user_1).review_user_count() - self.assertEqual(len(count), 1) - # False Review - self.assertFalse(self.test_record._calc_reviews_validated(False)) - self.assertIn("requested", self.test_record._notify_requested_review_body()) - self.assertIn("rejected", self.test_record._notify_rejected_review_body()) - self.assertIn("accepted", self.test_record._notify_accepted_reviews_body()) - - def test_16_review_user_count_on_rejected(self): - """If document is rejected, it should always removed from tray""" - # Create new test record - test_record = self.test_model.create({"test_field": 2.5}) - # Create tier definitions - self.tier_def_obj.create( - { - "model_id": self.tester_model.id, - "review_type": "individual", - "reviewer_id": self.test_user_2.id, - "definition_domain": "[('test_field', '>', 1.0)]", - } - ) - test_record.with_user(self.test_user_2).request_validation() - record1 = test_record.with_user(self.test_user_1) - record1.invalidate_model() - self.assertTrue(record1.can_review) - self.assertTrue( - self.test_user_1.with_user(self.test_user_1).review_user_count() - ) - self.assertTrue( - self.test_user_2.with_user(self.test_user_2).review_user_count() - ) - # user 1 reject first tier - record1.reject_tier() - record1.invalidate_model() - self.assertFalse(record1.can_review) - # both user 1 and 2 has nothing left in tray - self.assertFalse( - self.test_user_1.with_user(self.test_user_1).review_user_count() - ) - self.assertFalse( - self.test_user_2.with_user(self.test_user_2).review_user_count() - ) - - def test_17_search_records_no_validation(self): - """Search for records that have no validation process started""" - records = self.env["tier.validation.tester"].search( - [("reviewer_ids", "=", False)] - ) - self.assertEqual(len(records), 1) - self.test_record.with_user(self.test_user_2.id).request_validation() - record = self.test_record.with_user(self.test_user_1.id) - record.invalidate_model() - records = self.env["tier.validation.tester"].search( - [("reviewer_ids", "=", False)] - ) - self.assertEqual(len(records), 0) - - def test_18_test_review_by_res_users_field(self): - selected_field = self.env["ir.model.fields"].search( - [("model", "=", self.test_model._name), ("name", "=", "user_id")] - ) - test_record = self.test_model.create( - {"test_field": 2.5, "user_id": self.test_user_2.id} - ) - - definition = self.env["tier.definition"].create( - { - "model_id": self.tester_model.id, - "review_type": "field", - "reviewer_field_id": selected_field.id, - "definition_domain": "[('test_field', '>', 1.0)]", - "approve_sequence": True, - } - ) - - reviews = test_record.request_validation() - review = reviews.filtered(lambda r: r.definition_id == definition) - self.assertTrue(review) - self.assertEqual(review.reviewer_ids, self.test_user_2) - - -@tagged("at_install") -class TierTierValidationView(CommonTierValidation): - def test_view_manual(self): - # We need to add a view in order to ensure that an automatic view with all - # fields is not created - self.env["ir.ui.view"].create( - { - "model": self.test_record._name, - "name": "Demo view", - "arch": """
-
-
- - - -
""", - } - ) - with Form(self.test_record) as f: - self.assertNotIn("review_ids", f._values) - form = etree.fromstring(f._view["arch"]) - self.assertFalse(form.xpath("//field[@name='review_ids']")) - self.assertFalse(form.xpath("//field[@name='can_review']")) - self.assertFalse(form.xpath("//button[@name='request_validation']")) - - def test_view_automatic(self): - # We need to add a view in order to ensure that an automatic view with all - # fields is not created - self.env["ir.ui.view"].create( - { - "model": self.test_record_2._name, - "name": "Demo view", - "arch": """
-
-
- - - -
""", - } - ) - with Form(self.test_record_2) as f: - self.assertIn("review_ids", f._values) - form = etree.fromstring(f._view["arch"]) - self.assertTrue(form.xpath("//field[@name='review_ids']")) - self.assertTrue(form.xpath("//field[@name='can_review']")) - self.assertTrue(form.xpath("//button[@name='request_validation']")) diff --git a/base_tier_validation/tests/tier_validation_tester.py b/base_tier_validation/tests/tier_validation_tester.py deleted file mode 100644 index f93c8983..00000000 --- a/base_tier_validation/tests/tier_validation_tester.py +++ /dev/null @@ -1,57 +0,0 @@ -# Copyright 2018-19 ForgeFlow S.L. (https://www.forgeflow.com) -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from odoo import api, fields, models - - -class TierValidationTester(models.Model): - _name = "tier.validation.tester" - _description = "Tier Validation Tester" - _inherit = ["tier.validation", "mail.thread"] - _tier_validation_manual_config = True - - state = fields.Selection( - selection=[ - ("draft", "Draft"), - ("confirmed", "Confirmed"), - ("cancel", "Cancel"), - ], - default="draft", - ) - test_field = fields.Float() - user_id = fields.Many2one(string="Assigned to:", comodel_name="res.users") - - def action_confirm(self): - self.write({"state": "confirmed"}) - - -class TierValidationTester2(models.Model): - _name = "tier.validation.tester2" - _description = "Tier Validation Tester 2" - _inherit = ["tier.validation"] - _tier_validation_manual_config = False - - state = fields.Selection( - selection=[ - ("draft", "Draft"), - ("confirmed", "Confirmed"), - ("cancel", "Cancel"), - ], - default="draft", - ) - test_field = fields.Float() - user_id = fields.Many2one(string="Assigned to:", comodel_name="res.users") - - def action_confirm(self): - self.write({"state": "confirmed"}) - - -class TierDefinition(models.Model): - _inherit = "tier.definition" - - @api.model - def _get_tier_validation_model_names(self): - res = super()._get_tier_validation_model_names() - res.append("tier.validation.tester") - res.append("tier.validation.tester2") - return res diff --git a/base_tier_validation/views/res_config_settings_views.xml b/base_tier_validation/views/res_config_settings_views.xml deleted file mode 100644 index 1dccc519..00000000 --- a/base_tier_validation/views/res_config_settings_views.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - res.config.settings.view.form.budget - res.config.settings - - - - -
-

Tier Validation

-
-
-
- -
-
-
-
- -
-
- -
-
-
-
- -
-
-
-
-
-
diff --git a/base_tier_validation/views/tier_definition_view.xml b/base_tier_validation/views/tier_definition_view.xml deleted file mode 100644 index 64e0227a..00000000 --- a/base_tier_validation/views/tier_definition_view.xml +++ /dev/null @@ -1,154 +0,0 @@ - - - - - tier.definition.tree - tier.definition - - - - - - - - - - - - - - - - tier.definition.form - tier.definition - -
- -
- -
- Name -

- -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - tier.definition.search - tier.definition - - - - - - - - - - - - - - - - Tier Definition - ir.actions.act_window - tier.definition - tree,form - {'search_default_all': 1} - - - - diff --git a/base_tier_validation/views/tier_review_view.xml b/base_tier_validation/views/tier_review_view.xml deleted file mode 100644 index 2c9fa538..00000000 --- a/base_tier_validation/views/tier_review_view.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - tier.review.tree - tier.review - - - - - - - - - - - - - - - diff --git a/base_tier_validation/wizard/__init__.py b/base_tier_validation/wizard/__init__.py deleted file mode 100644 index 92bd0df5..00000000 --- a/base_tier_validation/wizard/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from . import comment_wizard diff --git a/base_tier_validation/wizard/comment_wizard.py b/base_tier_validation/wizard/comment_wizard.py deleted file mode 100644 index 5c5a6c93..00000000 --- a/base_tier_validation/wizard/comment_wizard.py +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2019 Ecosoft Co., Ltd. (http://ecosoft.co.th) -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from odoo import fields, models - - -class CommentWizard(models.TransientModel): - _name = "comment.wizard" - _description = "Comment Wizard" - - validate_reject = fields.Char() - res_model = fields.Char() - res_id = fields.Integer() - review_ids = fields.Many2many(comodel_name="tier.review") - comment = fields.Char(required=True) - - def add_comment(self): - self.ensure_one() - rec = self.env[self.res_model].browse(self.res_id) - self.review_ids.write({"comment": self.comment}) - if self.validate_reject == "validate": - rec._validate_tier(self.review_ids) - if self.validate_reject == "reject": - rec._rejected_tier(self.review_ids) - rec._update_counter({"review_deleted": True}) diff --git a/base_tier_validation/wizard/comment_wizard_view.xml b/base_tier_validation/wizard/comment_wizard_view.xml deleted file mode 100644 index 70c1a928..00000000 --- a/base_tier_validation/wizard/comment_wizard_view.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - Comment Wizard - comment.wizard - form - -
- - - -
-
-
-
-
-
diff --git a/setup/base_tier_validation/odoo/addons/base_tier_validation b/setup/base_tier_validation/odoo/addons/base_tier_validation deleted file mode 120000 index d48caa19..00000000 --- a/setup/base_tier_validation/odoo/addons/base_tier_validation +++ /dev/null @@ -1 +0,0 @@ -../../../../base_tier_validation \ No newline at end of file diff --git a/setup/base_tier_validation/setup.py b/setup/base_tier_validation/setup.py deleted file mode 100644 index 28c57bb6..00000000 --- a/setup/base_tier_validation/setup.py +++ /dev/null @@ -1,6 +0,0 @@ -import setuptools - -setuptools.setup( - setup_requires=['setuptools-odoo'], - odoo_addon=True, -) From fe6d5bb0698e4572f420f4a1c3d788e3d107b78b Mon Sep 17 00:00:00 2001 From: nobuQuartile Date: Tue, 12 Aug 2025 04:16:18 +0000 Subject: [PATCH 3/3] reflect oca changes --- purchase_tier_validation/README.rst | 8 +- purchase_tier_validation/__manifest__.py | 2 +- purchase_tier_validation/i18n/es.po | 5 + purchase_tier_validation/i18n/it.po | 108 ++++++++++++++++++ .../i18n/purchase_tier_validation.pot | 5 + purchase_tier_validation/i18n/zh_CN.po | 5 + .../static/description/index.html | 44 ++++--- .../views/purchase_order_view.xml | 2 +- 8 files changed, 157 insertions(+), 22 deletions(-) create mode 100644 purchase_tier_validation/i18n/it.po diff --git a/purchase_tier_validation/README.rst b/purchase_tier_validation/README.rst index c953e48a..2383f55a 100644 --- a/purchase_tier_validation/README.rst +++ b/purchase_tier_validation/README.rst @@ -1,3 +1,7 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + ======================== Purchase Tier Validation ======================== @@ -7,13 +11,13 @@ Purchase Tier Validation !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:3dc314140ca3ea9bbb3a38f1ad55df27e47d0e297a67a97b8b3b3f15ce5c6e99 + !! source digest: sha256:927bc3c6c050ec8b4fc60f280f504bfdf4f7b9ea662e35042231aa73fc73fae2 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status :alt: Beta -.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png +.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github diff --git a/purchase_tier_validation/__manifest__.py b/purchase_tier_validation/__manifest__.py index 3af18837..0d7d6407 100644 --- a/purchase_tier_validation/__manifest__.py +++ b/purchase_tier_validation/__manifest__.py @@ -4,7 +4,7 @@ "name": "Purchase Tier Validation", "summary": "Extends the functionality of Purchase Orders to " "support a tier validation process.", - "version": "16.0.1.1.0", + "version": "16.0.1.1.1", "category": "Purchases", "website": "https://github.com/OCA/purchase-workflow", "author": "ForgeFlow, Odoo Community Association (OCA)", diff --git a/purchase_tier_validation/i18n/es.po b/purchase_tier_validation/i18n/es.po index 435eeb27..dd579cde 100644 --- a/purchase_tier_validation/i18n/es.po +++ b/purchase_tier_validation/i18n/es.po @@ -26,6 +26,11 @@ msgstr "Puede Revisar" msgid "Has Comment" msgstr "Tiene Comentario" +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__is_reevaluation_required +msgid "Is Reevaluation Required" +msgstr "" + #. module: purchase_tier_validation #: model_terms:ir.ui.view,arch_db:purchase_tier_validation.view_purchase_order_filter msgid "My Purchases to review" diff --git a/purchase_tier_validation/i18n/it.po b/purchase_tier_validation/i18n/it.po new file mode 100644 index 00000000..9c97179b --- /dev/null +++ b/purchase_tier_validation/i18n/it.po @@ -0,0 +1,108 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_tier_validation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-01-11 13:06+0000\n" +"Last-Translator: mymage \n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.6.2\n" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__can_review +msgid "Can Review" +msgstr "Può revisionare" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__has_comment +msgid "Has Comment" +msgstr "Ha commenti" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__is_reevaluation_required +msgid "Is Reevaluation Required" +msgstr "È richiesta la rivalutazione" + +#. module: purchase_tier_validation +#: model_terms:ir.ui.view,arch_db:purchase_tier_validation.view_purchase_order_filter +msgid "My Purchases to review" +msgstr "I miei acquisti da revisionare" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__need_validation +msgid "Need Validation" +msgstr "Richiede conferma" + +#. module: purchase_tier_validation +#: model_terms:ir.ui.view,arch_db:purchase_tier_validation.view_purchase_order_filter +msgid "Needs my Review" +msgstr "Richiede la mia revisione" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__next_review +msgid "Next Review" +msgstr "Prossima revisione" + +#. module: purchase_tier_validation +#: model_terms:ir.ui.view,arch_db:purchase_tier_validation.view_purchase_order_filter +msgid "POs validated and ready to be confirmed" +msgstr "Ordini di acquisto approvati e pronti da confermare" + +#. module: purchase_tier_validation +#: model:ir.model,name:purchase_tier_validation.model_purchase_order +msgid "Purchase Order" +msgstr "Ordine di acquisto" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__rejected +msgid "Rejected" +msgstr "Rifiutata" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__rejected_message +msgid "Rejected Message" +msgstr "Messaggio di rifiuto" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__reviewer_ids +msgid "Reviewers" +msgstr "Revisori" + +#. module: purchase_tier_validation +#: model:ir.model,name:purchase_tier_validation.model_tier_definition +msgid "Tier Definition" +msgstr "Definizione livello" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__to_validate_message +msgid "To Validate Message" +msgstr "Messaggio per 'Da validare'" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__validated +#: model_terms:ir.ui.view,arch_db:purchase_tier_validation.view_purchase_order_filter +msgid "Validated" +msgstr "Approvata" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__validated_message +msgid "Validated Message" +msgstr "Messaggio per 'Validato'" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__validation_status +msgid "Validation Status" +msgstr "Stato validazione" + +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__review_ids +msgid "Validations" +msgstr "Validazioni" diff --git a/purchase_tier_validation/i18n/purchase_tier_validation.pot b/purchase_tier_validation/i18n/purchase_tier_validation.pot index e3a4f2f2..c570b568 100644 --- a/purchase_tier_validation/i18n/purchase_tier_validation.pot +++ b/purchase_tier_validation/i18n/purchase_tier_validation.pot @@ -23,6 +23,11 @@ msgstr "" msgid "Has Comment" msgstr "" +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__is_reevaluation_required +msgid "Is Reevaluation Required" +msgstr "" + #. module: purchase_tier_validation #: model_terms:ir.ui.view,arch_db:purchase_tier_validation.view_purchase_order_filter msgid "My Purchases to review" diff --git a/purchase_tier_validation/i18n/zh_CN.po b/purchase_tier_validation/i18n/zh_CN.po index d0853920..e534f990 100644 --- a/purchase_tier_validation/i18n/zh_CN.po +++ b/purchase_tier_validation/i18n/zh_CN.po @@ -26,6 +26,11 @@ msgstr "" msgid "Has Comment" msgstr "" +#. module: purchase_tier_validation +#: model:ir.model.fields,field_description:purchase_tier_validation.field_purchase_order__is_reevaluation_required +msgid "Is Reevaluation Required" +msgstr "" + #. module: purchase_tier_validation #: model_terms:ir.ui.view,arch_db:purchase_tier_validation.view_purchase_order_filter msgid "My Purchases to review" diff --git a/purchase_tier_validation/static/description/index.html b/purchase_tier_validation/static/description/index.html index 019c2f8b..863528a3 100644 --- a/purchase_tier_validation/static/description/index.html +++ b/purchase_tier_validation/static/description/index.html @@ -1,18 +1,18 @@ - -Purchase Tier Validation +README.rst -
-

Purchase Tier Validation

+
+ + +Odoo Community Association + +
+

Purchase Tier Validation

-

Beta License: AGPL-3 OCA/purchase-workflow Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/purchase-workflow Translate me on Weblate Try me on Runboat

This module extends the functionality of Purchase Orders to support a tier validation process.

Table of contents

@@ -388,12 +393,12 @@

Purchase Tier Validation

-

Installation

+

Installation

This module depends on base_tier_validation. You can find it at OCA/server-ux

-

Configuration

+

Configuration

To configure this module, you need to:

  1. Go to Settings > Technical > Tier Validations > Tier Definition.
  2. @@ -401,7 +406,7 @@

    Configuration

-

Usage

+

Usage

To use this module, you need to:

  1. Create a Purchase Order triggering at least one “Tier Definition”.
  2. @@ -419,7 +424,7 @@

    Usage

-

Bug Tracker

+

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed @@ -427,15 +432,15 @@

Bug Tracker

Do not contact contributors directly about support or help with technical issues.

-

Credits

+

Credits

-

Authors

+

Authors

  • ForgeFlow
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

-Odoo Community Association + +Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

@@ -455,5 +462,6 @@

Maintainers

+
diff --git a/purchase_tier_validation/views/purchase_order_view.xml b/purchase_tier_validation/views/purchase_order_view.xml index e1ec3873..916d6665 100644 --- a/purchase_tier_validation/views/purchase_order_view.xml +++ b/purchase_tier_validation/views/purchase_order_view.xml @@ -18,7 +18,7 @@