From f597f4cca8782ab936cf69f5288d546cce9d9e89 Mon Sep 17 00:00:00 2001 From: Yves Goldberg Date: Fri, 29 Mar 2019 17:06:57 +0100 Subject: [PATCH 01/62] [ADD] agreement_legal migration [FIX] flake8(2) --- agreement_legal/README.rst | 130 ++ agreement_legal/__init__.py | 4 + agreement_legal/__manifest__.py | 41 + agreement_legal/data/agreement_stage.xml | 49 + agreement_legal/data/agreement_type.xml | 16 + agreement_legal/data/ir_sequence.xml | 13 + agreement_legal/data/module_category.xml | 9 + agreement_legal/i18n/agreement_legal.pot | 1782 ++++++++++++++++ agreement_legal/i18n/fr.po | 1800 +++++++++++++++++ agreement_legal/models/__init__.py | 18 + agreement_legal/models/agreement.py | 438 ++++ agreement_legal/models/agreement_appendix.py | 101 + agreement_legal/models/agreement_clause.py | 103 + .../models/agreement_increasetype.py | 27 + agreement_legal/models/agreement_line.py | 30 + agreement_legal/models/agreement_recital.py | 100 + .../models/agreement_renewaltype.py | 23 + agreement_legal/models/agreement_section.py | 102 + agreement_legal/models/agreement_stage.py | 28 + agreement_legal/models/agreement_status.py | 12 + agreement_legal/models/agreement_subtype.py | 14 + agreement_legal/models/agreement_type.py | 16 + agreement_legal/models/product_template.py | 12 + agreement_legal/models/res_config_settings.py | 38 + agreement_legal/models/res_partner.py | 13 + agreement_legal/readme/CONFIGURE.rst | 6 + agreement_legal/readme/CONTRIBUTORS.rst | 6 + agreement_legal/readme/CREDITS.rst | 5 + agreement_legal/readme/DESCRIPTION.rst | 9 + agreement_legal/readme/ROADMAP.rst | 3 + agreement_legal/readme/USAGE.rst | 7 + agreement_legal/report/agreement.xml | 144 ++ agreement_legal/security/ir.model.access.csv | 23 + agreement_legal/security/res_groups.xml | 22 + agreement_legal/static/description/icon.png | Bin 0 -> 6755 bytes agreement_legal/static/description/index.html | 473 +++++ agreement_legal/views/agreement.xml | 368 ++++ agreement_legal/views/agreement_appendix.xml | 95 + agreement_legal/views/agreement_clause.xml | 97 + .../views/agreement_increasetype.xml | 45 + agreement_legal/views/agreement_recital.xml | 94 + .../views/agreement_renewaltype.xml | 41 + agreement_legal/views/agreement_section.xml | 109 + agreement_legal/views/agreement_stages.xml | 43 + agreement_legal/views/agreement_subtype.xml | 45 + agreement_legal/views/agreement_type.xml | 45 + agreement_legal/views/menu.xml | 147 ++ agreement_legal/views/res_config_settings.xml | 161 ++ agreement_legal/views/res_partner.xml | 17 + 49 files changed, 6924 insertions(+) create mode 100644 agreement_legal/README.rst create mode 100644 agreement_legal/__init__.py create mode 100644 agreement_legal/__manifest__.py create mode 100644 agreement_legal/data/agreement_stage.xml create mode 100644 agreement_legal/data/agreement_type.xml create mode 100644 agreement_legal/data/ir_sequence.xml create mode 100644 agreement_legal/data/module_category.xml create mode 100644 agreement_legal/i18n/agreement_legal.pot create mode 100644 agreement_legal/i18n/fr.po create mode 100644 agreement_legal/models/__init__.py create mode 100644 agreement_legal/models/agreement.py create mode 100644 agreement_legal/models/agreement_appendix.py create mode 100644 agreement_legal/models/agreement_clause.py create mode 100644 agreement_legal/models/agreement_increasetype.py create mode 100644 agreement_legal/models/agreement_line.py create mode 100644 agreement_legal/models/agreement_recital.py create mode 100644 agreement_legal/models/agreement_renewaltype.py create mode 100644 agreement_legal/models/agreement_section.py create mode 100644 agreement_legal/models/agreement_stage.py create mode 100644 agreement_legal/models/agreement_status.py create mode 100644 agreement_legal/models/agreement_subtype.py create mode 100644 agreement_legal/models/agreement_type.py create mode 100644 agreement_legal/models/product_template.py create mode 100644 agreement_legal/models/res_config_settings.py create mode 100644 agreement_legal/models/res_partner.py create mode 100644 agreement_legal/readme/CONFIGURE.rst create mode 100644 agreement_legal/readme/CONTRIBUTORS.rst create mode 100644 agreement_legal/readme/CREDITS.rst create mode 100644 agreement_legal/readme/DESCRIPTION.rst create mode 100644 agreement_legal/readme/ROADMAP.rst create mode 100644 agreement_legal/readme/USAGE.rst create mode 100644 agreement_legal/report/agreement.xml create mode 100644 agreement_legal/security/ir.model.access.csv create mode 100644 agreement_legal/security/res_groups.xml create mode 100644 agreement_legal/static/description/icon.png create mode 100644 agreement_legal/static/description/index.html create mode 100644 agreement_legal/views/agreement.xml create mode 100644 agreement_legal/views/agreement_appendix.xml create mode 100644 agreement_legal/views/agreement_clause.xml create mode 100644 agreement_legal/views/agreement_increasetype.xml create mode 100644 agreement_legal/views/agreement_recital.xml create mode 100644 agreement_legal/views/agreement_renewaltype.xml create mode 100644 agreement_legal/views/agreement_section.xml create mode 100644 agreement_legal/views/agreement_stages.xml create mode 100644 agreement_legal/views/agreement_subtype.xml create mode 100644 agreement_legal/views/agreement_type.xml create mode 100644 agreement_legal/views/menu.xml create mode 100644 agreement_legal/views/res_config_settings.xml create mode 100644 agreement_legal/views/res_partner.xml diff --git a/agreement_legal/README.rst b/agreement_legal/README.rst new file mode 100644 index 0000000000..8a2f630795 --- /dev/null +++ b/agreement_legal/README.rst @@ -0,0 +1,130 @@ +========== +Agreements +========== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fcontract-lightgray.png?logo=github + :target: https://github.com/OCA/contract/tree/11.0/agreement + :alt: OCA/contract +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/contract-11-0/contract-11-0-agreement + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/110/11.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows you to manage agreements, letter of intent and contract content. +The module is meant to be used by the legal team of a company and to allow them +to define sections, clauses and templates with their respective content that can +be dynamic. + +Based on the template, an agreement can be created and the pdf document generated. + +The agreement would go through a workflow to finally become a contract with the +customer signature. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +To configure this module: + +* Go to Agreement > Configuration > Templates +* Create a new template with sections and clauses and their respective content +* Go to Agreement > Configuration > Stages +* Create and reorder stages to match your process + +Usage +===== + +To use this module: + +* Go to Agreement > Agrements +* Create a new agreement +* Select a template +* Follow the process to get the required approval +* Send the invitation to the customer to review and sign the agreement + +Known issues / Roadmap +====================== + +* Split the module to remove the dependencies on sale and account and provide + the same feature in extra modules (agreement_sale, agreement_account, + agreement_purchase) + +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 smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Pavlov Media +* Open Source Integrators + +Contributors +~~~~~~~~~~~~ + +* Patrick Wilson +* Bhavesh Odedra +* Wolfgang Hall +* Maxime Chambreuil +* Sandip Mangukiya + +Other credits +~~~~~~~~~~~~~ + +The development of this module has been financially supported by: + +* Pavlov Media +* Open Source Integrators + +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-max3903| image:: https://github.com/max3903.png?size=40px + :target: https://github.com/max3903 + :alt: max3903 + +Current `maintainer `__: + +|maintainer-max3903| + +This module is part of the `OCA/contract `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/agreement_legal/__init__.py b/agreement_legal/__init__.py new file mode 100644 index 0000000000..073035d164 --- /dev/null +++ b/agreement_legal/__init__.py @@ -0,0 +1,4 @@ +# Copyright (C) 2018 - TODAY, Pavlov Media +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import models diff --git a/agreement_legal/__manifest__.py b/agreement_legal/__manifest__.py new file mode 100644 index 0000000000..543d9b9aac --- /dev/null +++ b/agreement_legal/__manifest__.py @@ -0,0 +1,41 @@ +# Copyright (C) 2018 - TODAY, Pavlov Media +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Agreements Legal", + "summary": "Manage Agreements, LOI and Contracts", + "author": "Pavlov Media, " + "Open Source Integrators, " + "Yves Goldberg (Ygol Internetwork), " + "Odoo Community Association (OCA)", + "website": "https://github.com/OCA/contract", + "category": "Partner", + "license": "AGPL-3", + "version": "12.0.1.0.0", + "depends": ["contacts", "agreement", "mail", "product"], + "data": [ + "data/ir_sequence.xml", + "data/module_category.xml", + "data/agreement_stage.xml", + "data/agreement_type.xml", + "security/res_groups.xml", + "security/ir.model.access.csv", + "report/agreement.xml", + "views/res_config_settings.xml", + "views/agreement_appendix.xml", + "views/agreement_clause.xml", + "views/agreement_recital.xml", + "views/agreement_section.xml", + "views/agreement_stages.xml", + "views/agreement_type.xml", + "views/agreement_subtype.xml", + "views/agreement_renewaltype.xml", + "views/agreement_increasetype.xml", + "views/res_partner.xml", + "views/agreement.xml", + "views/menu.xml", + ], + "application": True, + "development_status": "Beta", + "maintainers": ["max3903", "ygol"], +} diff --git a/agreement_legal/data/agreement_stage.xml b/agreement_legal/data/agreement_stage.xml new file mode 100644 index 0000000000..cef2b25e68 --- /dev/null +++ b/agreement_legal/data/agreement_stage.xml @@ -0,0 +1,49 @@ + + + + + New + 10 + + + + Draft + 20 + + + + Reviewed + 30 + + + + Negotiation + 40 + + + + Out for Customer Signature + 50 + + + + Waiting Internal Signature + 60 + + + + Active + 70 + + + + Expired + 80 + + + + Cancelled + 100 + True + + diff --git a/agreement_legal/data/agreement_type.xml b/agreement_legal/data/agreement_type.xml new file mode 100644 index 0000000000..4cdf676186 --- /dev/null +++ b/agreement_legal/data/agreement_type.xml @@ -0,0 +1,16 @@ + + + + + Agreement + + + + Contract + + + + Letter of Intent + + + diff --git a/agreement_legal/data/ir_sequence.xml b/agreement_legal/data/ir_sequence.xml new file mode 100644 index 0000000000..d2104c559e --- /dev/null +++ b/agreement_legal/data/ir_sequence.xml @@ -0,0 +1,13 @@ + + + + + + Agreements + agreement + AG + 3 + + + + diff --git a/agreement_legal/data/module_category.xml b/agreement_legal/data/module_category.xml new file mode 100644 index 0000000000..d3c2ee7a7a --- /dev/null +++ b/agreement_legal/data/module_category.xml @@ -0,0 +1,9 @@ + + + + + Agreement + 80 + + + diff --git a/agreement_legal/i18n/agreement_legal.pot b/agreement_legal/i18n/agreement_legal.pot new file mode 100644 index 0000000000..9b03a8d670 --- /dev/null +++ b/agreement_legal/i18n/agreement_legal.pot @@ -0,0 +1,1782 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * agreement_legal +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-03-24 16:53+0000\n" +"PO-Revision-Date: 2019-03-24 16:53+0000\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: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: agreement_legal +#: selection:agreement,state:0 +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__active +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__active +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__active +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__active +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__active +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__active +msgid "Active" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Administration" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Advanced Features" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_account_analytic_line__agreement_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__agreement_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__agreement_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__agreement_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__agreement_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__agreement_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__agreement_id +#: model:ir.module.category,name:agreement_legal.agreement +#: model:ir.module.category,name:agreement_legal.module_agreement_legal_category +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Agreement" +msgstr "" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_agreement_appendix +msgid "Agreement Appendices" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_clause_search_view +msgid "Agreement Clause Search" +msgstr "" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_agreement_clause +msgid "Agreement Clauses" +msgstr "" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.partner_agreement_action_increasetype +msgid "Agreement Increase Type" +msgstr "" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_agreement_line +msgid "Agreement Lines" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Agreement Name" +msgstr "" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_agreement_recital +msgid "Agreement Recitals" +msgstr "" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.partner_agreement_action_renewaltype +msgid "Agreement Renewal Type" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_search_view +msgid "Agreement Search" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_search_view +msgid "Agreement Section Search" +msgstr "" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.partner_agreement_action_section +#: model:ir.model,name:agreement_legal.model_agreement_section +msgid "Agreement Sections" +msgstr "" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_agreement_serviceprofile +msgid "Agreement Service Profiles" +msgstr "" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.partner_agreement_action_stage +msgid "Agreement Stage" +msgstr "" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_agreement_stage +msgid "Agreement Stages" +msgstr "" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.partner_agreement_action_subtype +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_subtype_form_view +msgid "Agreement Sub-Types" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__agreement_subtype_id +msgid "Agreement Sub-type" +msgstr "" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_agreement_subtype +msgid "Agreement Subtypes" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__agreement_type_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__agreement_type_id +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_subtype_list_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_type_form_view +msgid "Agreement Type" +msgstr "" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.partner_agreement_action_type +#: model:ir.model,name:agreement_legal.model_agreement_type +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_type_list_view +msgid "Agreement Types" +msgstr "" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.action_agreement_report_order +#: model:ir.actions.act_window,name:agreement_legal.agreement_dashboard_agreement +#: model:ir.actions.act_window,name:agreement_legal.agreement_operations_agreement +#: model:ir.model.fields,field_description:agreement_legal.field_product_template__agreements_ids +#: model:ir.model.fields,field_description:agreement_legal.field_res_partner__agreement_ids +#: model:ir.ui.menu,name:agreement_legal.agreement_agreement_reporting +#: model:ir.ui.menu,name:agreement_legal.agreement_root +#: model:ir.ui.menu,name:agreement_legal.dashboard_agreements +#: model:ir.ui.menu,name:agreement_legal.operations_agreements +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_graph_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_pivot_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_list_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_search_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_form +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Agreements" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Agreements Form" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_stage_form_view +msgid "Agreements Stage Form" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_increasetype_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_renewaltype_form_view +msgid "Agreements Type Form" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__analytic_id +msgid "Analytic Account" +msgstr "" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_account_analytic_line +msgid "Analytic Line" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__special_terms +msgid "Any terms that you have agreed to and want to track on the agreement/contract." +msgstr "" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.agreement_appendix_action +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__appendix_ids +#: model:ir.ui.menu,name:agreement_legal.agreement_appendices +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_appendix_tree +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Appendices" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_appendix_form +msgid "Appendix" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__approved_user_id +msgid "Approved By" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__approved_date +msgid "Approved Date" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Approved by" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_search_view +msgid "Archived" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__assigned_user_id +msgid "Assigned To" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "By:" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__change_notice +msgid "Change Notice (Days)" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__child_agreements_ids +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__previous_version_agreements_ids +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Child Agreements" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_clause_form_view +msgid "Clause" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__content +msgid "Clause Content" +msgstr "" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.partner_agreement_action_clause +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__clauses_ids +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__clauses_ids +#: model:ir.ui.menu,name:agreement_legal.agreement_clauses +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_clause_list_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_form_view +msgid "Clauses" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__color +msgid "Color" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__company_partner_id +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Company" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__company_contact_id +msgid "Company Contact" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Company Information" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__total_company_mrc +msgid "Company MRC" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__total_company_nrc +msgid "Company NRC" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__dynamic_description +msgid "Compute dynamic description" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__dynamic_special_terms +msgid "Compute dynamic special terms" +msgstr "" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_configuration +msgid "Configuration" +msgstr "" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_res_partner +msgid "Contact" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__partner_signed_user_id +msgid "Contact on the account that signed the agreement/contract." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__content +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__content +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_form_view +msgid "Content" +msgstr "" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_data_contents +msgid "Contents" +msgstr "" + +#. module: agreement_legal +#: model:ir.actions.report,name:agreement_legal.partner_agreement_contract_document +msgid "Contract Document" +msgstr "" + +#. module: agreement_legal +#: model:ir.actions.report,name:agreement_legal.partner_agreement_contract_document_preview +msgid "Contract Document Preview" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__contract_value +msgid "Contract Value" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_appendix_form +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_recital_form +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_clause_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_form_view +msgid "Copy and paste the placeholder expression in the content" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Copy and paste the placeholder expression in the description or the special terms" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_agreement_sale +msgid "Create an agreement when the sale order is confirmed." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Create an agreement when the sales order is confirmed" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__create_uid +msgid "Created by" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__create_date +msgid "Created on" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__currency_id +msgid "Currency" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__total_customer_mrc +msgid "Customer MRC" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__total_customer_nrc +msgid "Customer NRC" +msgstr "" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_dashboard +msgid "Dashboard" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__termination_requested +msgid "Date that a request for termination was received." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__termination_date +msgid "Date that the contract was terminated." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__company_signed_date +msgid "Date the contract was signed by Company." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__partner_signed_date +msgid "Date the contract was signed by the Partner." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Date:" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__default_value +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__default_value +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__default_value +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__default_value +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__default_value +msgid "Default Value" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__renewal_type_id +msgid "Describes what happens after the contract expires." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__description +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__description +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__description +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__description +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_increasetype_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_renewaltype_form_view +msgid "Description" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__description +msgid "Description of the agreement" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_increasetype__description +#: model:ir.model.fields,help:agreement_legal.field_agreement_renewaltype__description +msgid "Description of the renewal type." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__display_name +msgid "Display Name" +msgstr "" + +#. module: agreement_legal +#: selection:agreement,state:0 +msgid "Draft" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__dynamic_content +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__dynamic_content +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__dynamic_content +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__dynamic_content +msgid "Dynamic Content" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__dynamic_description +msgid "Dynamic Description" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__dynamic_special_terms +msgid "Dynamic Special Terms" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.view_project_agreement_kanban +msgid "Edit" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__company_contact_email +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__partner_contact_email +msgid "Email" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__end_date +msgid "End Date" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_appendix_form +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_recital_form +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_clause_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_form_view +msgid "Enter the default value if the field is empty" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__expiration_notice +msgid "Exp. Notice (Days)" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__field_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__field_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__field_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__field_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__field_id +msgid "Field" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Field Service" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__signed_contract_filename +msgid "Filename" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__copyvalue +#: model:ir.model.fields,help:agreement_legal.field_agreement_appendix__copyvalue +#: model:ir.model.fields,help:agreement_legal.field_agreement_clause__copyvalue +#: model:ir.model.fields,help:agreement_legal.field_agreement_recital__copyvalue +#: model:ir.model.fields,help:agreement_legal.field_agreement_section__copyvalue +msgid "Final placeholder expression, to be copy-pasted in the desired\n" +" template field." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Financials" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_channel_ids +msgid "Followers (Channels)" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "General" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Helpdesk" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__id +msgid "ID" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__reference +msgid "ID used for internal contract tracking." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__message_unread +msgid "If checked new messages require your attention." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_section__active +msgid "If unchecked, it will allow you to hide the\n" +" agreement without removing it." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__active +#: model:ir.model.fields,help:agreement_legal.field_agreement_clause__active +msgid "If unchecked, it will allow you to hide the agreement without removing it." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_appendix__active +msgid "If unchecked, it will allow you to hide this appendix without removing it." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_recital__active +msgid "If unchecked, it will allow you to hide this recital without removing it." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_serviceprofile__active +msgid "If unchecked, it will allow you to hide this service profile without removing it." +msgstr "" + +#. module: agreement_legal +#: selection:agreement,state:0 +msgid "Inactive" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__increase_percent +msgid "Increase Percentage" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__increase_type_id +msgid "Increase Type" +msgstr "" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_increamenttypes +msgid "Increase Types" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_increasetype__name +msgid "Increase types describe any increases that may happen during the contract." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Inventory" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__fold +msgid "Is Folded" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__is_template +msgid "Is a Template?" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_type____last_update +msgid "Last Modified on" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__write_date +msgid "Last Updated on" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__parent_agreement_id +msgid "Link this agreement to a parent agreement. For example if this agreement is an amendment to another agreement. This list will only show other agreements related to the same account." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Link your Field Service orders and equipments to an agreement" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_fieldservice_agreement +msgid "Link your Field Service orders and equipments to an agreement." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Link your Helpdesk tickets to an agreement" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_helpdesk_agreement +msgid "Link your Helpdesk tickets to an agreement." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_agreement_rma +msgid "Link your RMAs to an agreement." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Link your manufacturing orders to an agreement" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_agreement_mrp +msgid "Link your manufacturing orders to an agreement." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_agreement_stock +msgid "Link your pickings to an agreement." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Link your projects and tasks to an agreement" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_agreement_project +msgid "Link your projects and tasks to an agreement." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Link your repair orders to an agreement" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_agreement_repair +msgid "Link your repair orders to an agreement." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Link your returns to an agreement" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Link your subscriptions to an agreement" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_agreement_sale_subscription +msgid "Link your subscriptions to an agreement." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Link your transfers to an agreement" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_main_attachment_id +msgid "Main Attachment" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Maintenance" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__is_template +msgid "Make this agreement a template." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Manage maintenance agreements and contracts" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_agreement_maintenance +msgid "Manage maintenance agreements and contracts." +msgstr "" + +#. module: agreement_legal +#: model:res.groups,name:agreement_legal.group_agreement_manager +msgid "Manager" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Manufacturing" +msgstr "" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_masterdata +msgid "Master Data" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_ids +msgid "Messages" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__name +msgid "Name" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Name:" +msgstr "" + +#. module: agreement_legal +#: code:addons/agreement_legal/models/agreement.py:108 +#: code:addons/agreement_legal/models/agreement.py:444 +#: code:addons/agreement_legal/models/agreement.py:445 +#, python-format +msgid "New" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "New Agreement" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "New Version" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_search_view +msgid "Non-Templates" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__notification_address_id +msgid "Notification Address" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__expiration_notice +msgid "Number of Days before expiration to be notified." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__change_notice +msgid "Number of Days to be notified before changes." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_has_error_counter +msgid "Number of error" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__message_needaction_counter +msgid "Number of messages which requires an action" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__term +msgid "Number of months this agreement/contract is in effect with the partner." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__message_unread_counter +msgid "Number of unread messages" +msgstr "" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_operations +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Operations" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__default_value +#: model:ir.model.fields,help:agreement_legal.field_agreement_appendix__default_value +#: model:ir.model.fields,help:agreement_legal.field_agreement_clause__default_value +#: model:ir.model.fields,help:agreement_legal.field_agreement_recital__default_value +#: model:ir.model.fields,help:agreement_legal.field_agreement_section__default_value +msgid "Optional value to use if the target field is empty." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__parent_agreement_id +msgid "Parent Agreement" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Parties" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__partner_id +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Partner" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__partner_contact_id +msgid "Partner Contact" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Partner Information" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_search_view +msgid "Partners" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__payment_term_id +msgid "Payment Term" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Payment Terms" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_increasetype__increase_percent +msgid "Percentage that the amount will increase." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Performance" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Perhaps include invoices with total vs costs?" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__company_contact_phone +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__partner_contact_phone +msgid "Phone" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__copyvalue +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__copyvalue +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__copyvalue +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__copyvalue +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__copyvalue +msgid "Placeholder Expression" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Preview" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Previouse Versions" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Primary Contact" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Print" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__product_id +msgid "Product" +msgstr "" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_product_template +msgid "Product Template" +msgstr "" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_products +msgid "Products" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__product_ids +msgid "Products & Services" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__line_ids +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Products/Services" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Project" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__qty +msgid "Quantity" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_recital_form +msgid "Recital" +msgstr "" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.agreement_recital_action +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__recital_ids +#: model:ir.ui.menu,name:agreement_legal.agreement_recitals +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_recital_tree +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Recitals" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.view_project_agreement_kanban +msgid "Record's Colour" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__reference +msgid "Reference" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__renewal_type_id +msgid "Renewal Type" +msgstr "" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_renewaltype +msgid "Renewal Types" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_renewaltype__name +msgid "Renewal types describe what happens after the agreement/contract expires." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Repair" +msgstr "" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_reporting +msgid "Reporting" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Represented by" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Returns" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__analytic_line_ids +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Revenues and Costs" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__reviewed_user_id +msgid "Reviewed By" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__reviewed_date +msgid "Reviewed Date" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Reviewed by" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__revision +msgid "Revision" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Revisions" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Sale Subscriptions" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Sales" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__sale_order_id +msgid "Sales Order" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__section_id +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_form_view +msgid "Section" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__content +msgid "Section Content" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__sections_ids +#: model:ir.ui.menu,name:agreement_legal.agreement_sections +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_list_view +msgid "Sections" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__field_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_appendix__field_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_clause__field_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_recital__field_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_section__field_id +msgid "Select target field from the related document model. If it is a\n" +" relationship field you will be able to select a target field at the\n" +" destination of the relationship." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__sale_order_id +msgid "Select the Sales Order that this agreement is related to." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Select the agreement field" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_appendix_form +msgid "Select the appendix field" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_clause_form_view +msgid "Select the clause field" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__stage_id +msgid "Select the current stage of the agreement." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_recital_form +msgid "Select the recital field" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_form_view +msgid "Select the section field" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_appendix_form +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_recital_form +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_clause_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_form_view +msgid "Select the sub-field" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__agreement_subtype_id +msgid "Select the sub-type of this agreement. Sub-Types are related to agreement types." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__agreement_type_id +msgid "Select the type of agreement." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__assigned_user_id +msgid "Select the user who manages this agreement." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Sell and purchase products in different units of measure" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__sequence +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__sequence +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__sequence +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__sequence +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__sequence +msgid "Sequence" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__order_lines_services_ids +msgid "Service Order Lines" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_serviceprofile_form +msgid "Service Profile" +msgstr "" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.agreement_serviceprofile_action +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__serviceprofile_ids +#: model:ir.ui.menu,name:agreement_legal.agreement_serviceprofiles +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_serviceprofile_tree +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Service Profiles" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.order_lines_search_view +msgid "Service Type" +msgstr "" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.action_agreement_config +#: model:ir.ui.menu,name:agreement_legal.agreement_settings +msgid "Settings" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Signatures" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__company_signed_user_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__partner_signed_user_id +msgid "Signed By" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__signed_contract +msgid "Signed Document" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__company_signed_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__partner_signed_date +msgid "Signed on" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__special_terms +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Special Terms" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__stage_id +msgid "Stage" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__name +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_stage_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_stage_list_view +msgid "Stage Name" +msgstr "" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_stages +msgid "Stages" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__start_date +msgid "Start Date" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__state +msgid "State" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_search_view +msgid "Status" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Structure" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_subtype_list_view +msgid "Sub-Type Name" +msgstr "" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_subtypes +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_type_list_view +msgid "Sub-Types" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__sub_model_object_field_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__sub_model_object_field_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__sub_model_object_field_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__sub_model_object_field_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__sub_model_object_field_id +msgid "Sub-field" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__sub_object_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__sub_object_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__sub_object_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__sub_object_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__sub_object_id +msgid "Sub-model" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__agreement_subtypes_ids +msgid "Subtypes" +msgstr "" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.partner_agreement_agreement_templates +#: model:ir.ui.menu,name:agreement_legal.template +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_search_view +msgid "Templates" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__term +msgid "Term (Months)" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Term Dates" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__termination_date +msgid "Termination Date" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__termination_requested +msgid "Termination Requested Date" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__payment_term_id +msgid "Terms of payments." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__notification_address_id +msgid "The address to send notificaitons to, if different from customer address.(Address Type = Other)" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__increase_type_id +msgid "The amount that certain rates may increase." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__partner_id +msgid "The customer or vendor this agreement is related to." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__company_contact_id +msgid "The primary contact in the company." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__partner_contact_id +msgid "The primary partner contact (If Applicable)." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__revision +msgid "The revision will increase with every save event." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_appendix__title +#: model:ir.model.fields,help:agreement_legal.field_agreement_clause__title +#: model:ir.model.fields,help:agreement_legal.field_agreement_recital__title +#: model:ir.model.fields,help:agreement_legal.field_agreement_section__title +msgid "The title is displayed on the PDF.The name is not." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__company_signed_user_id +msgid "The user at our company who authorized/signed the agreement or contract." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__version +msgid "The versions are used to keep track of document history and previous versions can be referenced." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_appendix_form +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_recital_form +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_clause_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_form_view +msgid "This section (on the left) allows you to add dynamic fields inside the content." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "This section (on the left) allows you to add dynamic fields inside the description and special terms." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "This section is a place where financial records will show the current performance of this agreement." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_stage__fold +msgid "This stage is folded in the kanban view by deafault." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__title +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__title +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__title +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__title +msgid "Title" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Title:" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__total_company_mrc +msgid "Total company monthly recurring costs." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__total_company_nrc +msgid "Total company non-recurring costs." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__total_customer_mrc +msgid "Total custemer monthly recurring costs." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__total_customer_nrc +msgid "Total custemer non-monthly recurring costs." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__contract_value +msgid "Total value of the contract over ther entire term." +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_type_list_view +msgid "Type Name" +msgstr "" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_types +msgid "Types" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__uom_id +msgid "Unit of Measure" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Units Of Measure" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_unread +msgid "Unread Messages" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_unread_counter +msgid "Unread Messages Counter" +msgstr "" + +#. module: agreement_legal +#: model:res.groups,name:agreement_legal.group_agreement_user +msgid "User" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__version +msgid "Version" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Version:" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__website_message_ids +msgid "Website communication history" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__sub_model_object_field_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_appendix__sub_model_object_field_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_clause__sub_model_object_field_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_recital__sub_model_object_field_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_section__sub_model_object_field_id +msgid "When a relationship field is selected as first field, this\n" +" field lets you select the target field within the destination document\n" +" model (sub-model)." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__sub_object_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_appendix__sub_object_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_clause__sub_object_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_recital__sub_object_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_section__sub_object_id +msgid "When a relationship field is selected as first field, this\n" +" field shows the document model the relationship goes to." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__end_date +msgid "When the agreement ends." +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__start_date +msgid "When the agreement starts." +msgstr "" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_agreement +msgid "agreement" +msgstr "" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_agreement_increasetype +msgid "agreement.increasetype" +msgstr "" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_agreement_renewaltype +msgid "agreement.renewaltype" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_appendix__dynamic_content +#: model:ir.model.fields,help:agreement_legal.field_agreement_clause__dynamic_content +#: model:ir.model.fields,help:agreement_legal.field_agreement_recital__dynamic_content +#: model:ir.model.fields,help:agreement_legal.field_agreement_section__dynamic_content +msgid "compute dynamic Content" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.view_project_agreement_kanban +msgid "oe_kanban_text_red" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "on" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.view_project_agreement_kanban +msgid "user & picture" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "| Created By:" +msgstr "" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "| Created On:" +msgstr "" + diff --git a/agreement_legal/i18n/fr.po b/agreement_legal/i18n/fr.po new file mode 100644 index 0000000000..47c00033fc --- /dev/null +++ b/agreement_legal/i18n/fr.po @@ -0,0 +1,1800 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * agreement_legal +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-03-24 16:40+0000\n" +"PO-Revision-Date: 2019-03-24 18:18+0100\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: \n" +"Language: fr\n" +"X-Generator: Poedit 1.8.6\n" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_needaction +msgid "Action Needed" +msgstr "Nécessite une action" + +#. module: agreement_legal +#: selection:agreement,state:0 +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__active +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__active +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__active +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__active +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__active +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__active +msgid "Active" +msgstr "Actif" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Administration" +msgstr "Administration" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Advanced Features" +msgstr "Fonctionnalités avancées" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_account_analytic_line__agreement_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__agreement_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__agreement_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__agreement_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__agreement_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__agreement_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__agreement_id +#: model:ir.module.category,name:agreement_legal.agreement +#: model:ir.module.category,name:agreement_legal.module_agreement_legal_category +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Agreement" +msgstr "Accord" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_agreement_appendix +msgid "Agreement Appendices" +msgstr "Annexes de l'accord" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_clause_search_view +msgid "Agreement Clause Search" +msgstr "Recherche de clause d'accord" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_agreement_clause +msgid "Agreement Clauses" +msgstr "Clause de l'accord" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.partner_agreement_action_increasetype +msgid "Agreement Increase Type" +msgstr "Type d'augmentation d'accord" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_agreement_line +msgid "Agreement Lines" +msgstr "Lignes de l'accord" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Agreement Name" +msgstr "Nom de l'accord" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_agreement_recital +msgid "Agreement Recitals" +msgstr "Préambules de l'accord" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.partner_agreement_action_renewaltype +msgid "Agreement Renewal Type" +msgstr "Type de renouvellement de l'accord" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_search_view +msgid "Agreement Search" +msgstr "Recherche d'accord" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_search_view +msgid "Agreement Section Search" +msgstr "Recherche de section d'accord" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.partner_agreement_action_section +#: model:ir.model,name:agreement_legal.model_agreement_section +msgid "Agreement Sections" +msgstr "Sections de l'accord" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_agreement_serviceprofile +msgid "Agreement Service Profiles" +msgstr "Profils de service d'accord" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.partner_agreement_action_stage +msgid "Agreement Stage" +msgstr "Étape de l'accord" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_agreement_stage +msgid "Agreement Stages" +msgstr "Étapes de l'accord" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.partner_agreement_action_subtype +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_subtype_form_view +msgid "Agreement Sub-Types" +msgstr "Sous-types de l'accord" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__agreement_subtype_id +msgid "Agreement Sub-type" +msgstr "Sous-type de l'accord" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_agreement_subtype +msgid "Agreement Subtypes" +msgstr "Sous-types de l'accord" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__agreement_type_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__agreement_type_id +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_subtype_list_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_type_form_view +msgid "Agreement Type" +msgstr "Type de l'accord" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.partner_agreement_action_type +#: model:ir.model,name:agreement_legal.model_agreement_type +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_type_list_view +msgid "Agreement Types" +msgstr "Types de l'accord" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.action_agreement_report_order +#: model:ir.actions.act_window,name:agreement_legal.agreement_dashboard_agreement +#: model:ir.actions.act_window,name:agreement_legal.agreement_operations_agreement +#: model:ir.model.fields,field_description:agreement_legal.field_product_template__agreements_ids +#: model:ir.model.fields,field_description:agreement_legal.field_res_partner__agreement_ids +#: model:ir.ui.menu,name:agreement_legal.agreement_agreement_reporting +#: model:ir.ui.menu,name:agreement_legal.agreement_root +#: model:ir.ui.menu,name:agreement_legal.dashboard_agreements +#: model:ir.ui.menu,name:agreement_legal.operations_agreements +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_graph_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_pivot_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_list_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_search_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_form +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Agreements" +msgstr "Accords" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Agreements Form" +msgstr "Formulaire des accords" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_stage_form_view +msgid "Agreements Stage Form" +msgstr "Formulaire d'étape des accords" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_increasetype_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_renewaltype_form_view +msgid "Agreements Type Form" +msgstr "Formulaire du type d'accords" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__analytic_id +msgid "Analytic Account" +msgstr "Compte analytique" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_account_analytic_line +msgid "Analytic Line" +msgstr "Ligne analytique" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__special_terms +msgid "Any terms that you have agreed to and want to track on the agreement/contract." +msgstr "Toutes les conditions que vous avez acceptées et que vous souhaitez suivre sur l’accord / contrat." + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.agreement_appendix_action +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__appendix_ids +#: model:ir.ui.menu,name:agreement_legal.agreement_appendices +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_appendix_tree +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Appendices" +msgstr "Annexes" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_appendix_form +msgid "Appendix" +msgstr "Annexe" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__approved_user_id +msgid "Approved By" +msgstr "Approuvé par" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__approved_date +msgid "Approved Date" +msgstr "Date d'approbation" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Approved by" +msgstr "Approuvé par" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_search_view +msgid "Archived" +msgstr "Archivé" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__assigned_user_id +msgid "Assigned To" +msgstr "Assigné à" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_attachment_count +msgid "Attachment Count" +msgstr "Nombre de pièces jointes" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "By:" +msgstr "Par :" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__change_notice +msgid "Change Notice (Days)" +msgstr "Avis de modification (Jours)" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__child_agreements_ids +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__previous_version_agreements_ids +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Child Agreements" +msgstr "Sous-Accords" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_clause_form_view +msgid "Clause" +msgstr "Clause" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__content +msgid "Clause Content" +msgstr "Contenu de la clause" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.partner_agreement_action_clause +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__clauses_ids +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__clauses_ids +#: model:ir.ui.menu,name:agreement_legal.agreement_clauses +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_clause_list_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_form_view +msgid "Clauses" +msgstr "Clauses" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__color +msgid "Color" +msgstr "Couleur" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__company_partner_id +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Company" +msgstr "Société" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__company_contact_id +msgid "Company Contact" +msgstr "Contact de la société" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Company Information" +msgstr "Informations sur la société" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__total_company_mrc +msgid "Company MRC" +msgstr "Société MRC" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__total_company_nrc +msgid "Company NRC" +msgstr "Société NRC" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__dynamic_description +msgid "Compute dynamic description" +msgstr "Générer description dynamique" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__dynamic_special_terms +msgid "Compute dynamic special terms" +msgstr "Générer les termes spéciaux dynamiques" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_res_config_settings +msgid "Config Settings" +msgstr "Paramètres de config" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_configuration +msgid "Configuration" +msgstr "Configuration" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_res_partner +msgid "Contact" +msgstr "Contact" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__partner_signed_user_id +msgid "Contact on the account that signed the agreement/contract." +msgstr "Contact du compte qui a signé l'accord / contrat." + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__content +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__content +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_form_view +msgid "Content" +msgstr "Contenu" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_data_contents +msgid "Contents" +msgstr "Contenu" + +#. module: agreement_legal +#: model:ir.actions.report,name:agreement_legal.partner_agreement_contract_document +msgid "Contract Document" +msgstr "Document contractuel" + +#. module: agreement_legal +#: model:ir.actions.report,name:agreement_legal.partner_agreement_contract_document_preview +msgid "Contract Document Preview" +msgstr "Aperçu du contrat" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__contract_value +msgid "Contract Value" +msgstr "Valeur du contrat" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_appendix_form +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_recital_form +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_clause_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_form_view +msgid "Copy and paste the placeholder expression in the content" +msgstr "Copiez et collez l'expression dans le contenu." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Copy and paste the placeholder expression in the description or the special terms" +msgstr "Copiez et collez l'expression dans la description ou les conditions spéciales" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_agreement_sale +msgid "Create an agreement when the sale order is confirmed." +msgstr "Créez un contrat lorsque la commande est confirmée." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Create an agreement when the sales order is confirmed" +msgstr "Créer un contrat lorsque la commande client est confirmée" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__create_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__create_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__create_date +msgid "Created on" +msgstr "Créé le" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__currency_id +msgid "Currency" +msgstr "Devise" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__total_customer_mrc +msgid "Customer MRC" +msgstr "MRC client" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__total_customer_nrc +msgid "Customer NRC" +msgstr "NRC client" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_dashboard +msgid "Dashboard" +msgstr "Tableau de bord" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__termination_requested +msgid "Date that a request for termination was received." +msgstr "Date à laquelle la demande de résiliation a été reçue." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__termination_date +msgid "Date that the contract was terminated." +msgstr "Date à laquelle le contrat a été résilié." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__company_signed_date +msgid "Date the contract was signed by Company." +msgstr "Date à laquelle le contrat a été signé par la société." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__partner_signed_date +msgid "Date the contract was signed by the Partner." +msgstr "Date de signature du contrat par le partenaire." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Date:" +msgstr "Date :" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__default_value +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__default_value +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__default_value +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__default_value +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__default_value +msgid "Default Value" +msgstr "Valeur par défaut" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__renewal_type_id +msgid "Describes what happens after the contract expires." +msgstr "Description de ce qui se passe après l'expiration du contrat." + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__description +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__description +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__description +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__description +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_increasetype_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_renewaltype_form_view +msgid "Description" +msgstr "Description" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__description +msgid "Description of the agreement" +msgstr "Description de l'accord" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_increasetype__description +#: model:ir.model.fields,help:agreement_legal.field_agreement_renewaltype__description +msgid "Description of the renewal type." +msgstr "Description du type de renouvellement." + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__display_name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: agreement_legal +#: selection:agreement,state:0 +msgid "Draft" +msgstr "Bozza" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__dynamic_content +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__dynamic_content +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__dynamic_content +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__dynamic_content +msgid "Dynamic Content" +msgstr "Contenu dynamique" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__dynamic_description +msgid "Dynamic Description" +msgstr "Description dynamique" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__dynamic_special_terms +msgid "Dynamic Special Terms" +msgstr "Conditions spéciales dynamiques" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.view_project_agreement_kanban +msgid "Edit" +msgstr "Modifier" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__company_contact_email +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__partner_contact_email +msgid "Email" +msgstr "Courriel" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__end_date +msgid "End Date" +msgstr "Date de fin" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_appendix_form +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_recital_form +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_clause_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_form_view +msgid "Enter the default value if the field is empty" +msgstr "Entrez la valeur par défaut si le champ est vide" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__expiration_notice +msgid "Exp. Notice (Days)" +msgstr "Préavis (Jours)" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__field_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__field_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__field_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__field_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__field_id +msgid "Field" +msgstr "Champ" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Field Service" +msgstr "Service sur site" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__signed_contract_filename +msgid "Filename" +msgstr "Nom du fichier" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__copyvalue +#: model:ir.model.fields,help:agreement_legal.field_agreement_appendix__copyvalue +#: model:ir.model.fields,help:agreement_legal.field_agreement_clause__copyvalue +#: model:ir.model.fields,help:agreement_legal.field_agreement_recital__copyvalue +#: model:ir.model.fields,help:agreement_legal.field_agreement_section__copyvalue +msgid "" +"Final placeholder expression, to be copy-pasted in the desired\n" +" template field." +msgstr "" +"Expression de substitution finale, à copier-coller dans\n" +" le champ du modèle." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Financials" +msgstr "Finance" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_follower_ids +msgid "Followers" +msgstr "Abonnés" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_channel_ids +msgid "Followers (Channels)" +msgstr "Abonnés (Canaux)" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_partner_ids +msgid "Followers (Partners)" +msgstr "Abonnés (Partenaires)" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "General" +msgstr "Général" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Helpdesk" +msgstr "Assistance" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__id +msgid "ID" +msgstr "ID" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__reference +msgid "ID used for internal contract tracking." +msgstr "ID utilisé pour le suivi interne des contrats." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__message_unread +msgid "If checked new messages require your attention." +msgstr "Si coché, de nouveaux messages demandent votre attention." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Si coché, de nouveaux messages demandent votre attention." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Si actif, certains messages ont une erreur de livraison." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_section__active +msgid "" +"If unchecked, it will allow you to hide the\n" +" agreement without removing it." +msgstr "" +"Si décoché, cela vous permettra de cacher l'\n" +" accord sans l'enlever." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__active +#: model:ir.model.fields,help:agreement_legal.field_agreement_clause__active +msgid "If unchecked, it will allow you to hide the agreement without removing it." +msgstr "Si cette case est décochée, cela vous permettra de cacher l'accord sans le supprimer." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_appendix__active +msgid "If unchecked, it will allow you to hide this appendix without removing it." +msgstr "Si cette case est décochée, cela vous permettra de masquer cette annexe sans la supprimer." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_recital__active +msgid "If unchecked, it will allow you to hide this recital without removing it." +msgstr "Si cette case est décochée, cela vous permettra de masquer ce préambule sans le supprimer." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_serviceprofile__active +msgid "If unchecked, it will allow you to hide this service profile without removing it." +msgstr "Si cette case est décochée, cela vous permettra de masquer ce profil de service sans le supprimer." + +#. module: agreement_legal +#: selection:agreement,state:0 +msgid "Inactive" +msgstr "Inattivo" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__increase_percent +msgid "Increase Percentage" +msgstr "Augmentation (en pourcentage)" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__increase_type_id +msgid "Increase Type" +msgstr "Type de l'augmentation" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_increamenttypes +msgid "Increase Types" +msgstr "Types de l'augmentation" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_increasetype__name +msgid "Increase types describe any increases that may happen during the contract." +msgstr "Les types d'augmentation décrivent les augmentations éventuelles en cours de contrat." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Inventory" +msgstr "Inventaire" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__fold +msgid "Is Folded" +msgstr "Est replié" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_is_follower +msgid "Is Follower" +msgstr "Est un abonné" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__is_template +msgid "Is a Template?" +msgstr "Est un modèle?" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype____last_update +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_type____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__write_uid +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__write_uid +msgid "Last Updated by" +msgstr "Dernière mise à jour par" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__write_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__parent_agreement_id +msgid "Link this agreement to a parent agreement. For example if this agreement is an amendment to another agreement. This list will only show other agreements related to the same account." +msgstr "Liez cet accord à un accord parent. Par exemple, dans le cas d'amendement à un accord. Cette liste ne montrera que les autres accords liés au même compte." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Link your Field Service orders and equipments to an agreement" +msgstr "Liez vos commandes de service après-vente et équipements pour le contrat" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_fieldservice_agreement +msgid "Link your Field Service orders and equipments to an agreement." +msgstr "Liez vos commandes de service après-vente et vos équipements à un contrat." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Link your Helpdesk tickets to an agreement" +msgstr "Liez vos tickets de support à un contrat" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_helpdesk_agreement +msgid "Link your Helpdesk tickets to an agreement." +msgstr "Liez vos tickets de support à un contrat." + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_agreement_rma +msgid "Link your RMAs to an agreement." +msgstr "Liez vos RMA à un accord." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Link your manufacturing orders to an agreement" +msgstr "Liez vos ordres de fabrication à un contrat" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_agreement_mrp +msgid "Link your manufacturing orders to an agreement." +msgstr "Liez vos ordres de fabrication à un accord." + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_agreement_stock +msgid "Link your pickings to an agreement." +msgstr "Liez vos prélèvements d'inventaire à un accord." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Link your projects and tasks to an agreement" +msgstr "Liez vos projets et tâches à un accord" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_agreement_project +msgid "Link your projects and tasks to an agreement." +msgstr "Liez vos projets et tâches à un accord." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Link your repair orders to an agreement" +msgstr "Liez vos commandes de réparation à un contrat" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_agreement_repair +msgid "Link your repair orders to an agreement." +msgstr "Liez vos commandes de réparation à un contrat." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Link your returns to an agreement" +msgstr "Liez vos retours à un accord" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Link your subscriptions to an agreement" +msgstr "Liez vos abonnements à un contrat" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_agreement_sale_subscription +msgid "Link your subscriptions to an agreement." +msgstr "Liez vos abonnements à un contrat." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Link your transfers to an agreement" +msgstr "Liez vos transferts à un accord" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_main_attachment_id +msgid "Main Attachment" +msgstr "Pièce jointe principale" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Maintenance" +msgstr "Entretien" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__is_template +msgid "Make this agreement a template." +msgstr "Faites de cet accord un modèle." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Manage maintenance agreements and contracts" +msgstr "Gérer les contrats de maintenance et les contrats" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_agreement_maintenance +msgid "Manage maintenance agreements and contracts." +msgstr "Gérer les contrats de maintenance et les contrats." + +#. module: agreement_legal +#: model:res.groups,name:agreement_legal.group_agreement_manager +msgid "Manager" +msgstr "Responsable" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Manufacturing" +msgstr "Fabrication" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_masterdata +msgid "Master Data" +msgstr "Données de base" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_has_error +msgid "Message Delivery error" +msgstr "Erreur d'envoi du message" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_ids +msgid "Messages" +msgstr "Messages" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__name +msgid "Name" +msgstr "Nom" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Name:" +msgstr "Nom :" + +#. module: agreement_legal +#: code:addons/agreement_legal/models/agreement.py:108 +#: code:addons/agreement_legal/models/agreement.py:444 +#: code:addons/agreement_legal/models/agreement.py:445 +#, python-format +msgid "New" +msgstr "Nouveau" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "New Agreement" +msgstr "Nouvel accord" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "New Version" +msgstr "Nouvelle version" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_search_view +msgid "Non-Templates" +msgstr "Non-modèles" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__notification_address_id +msgid "Notification Address" +msgstr "Adresse de notification" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_needaction_counter +msgid "Number of Actions" +msgstr "Nombre d'actions" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__expiration_notice +msgid "Number of Days before expiration to be notified." +msgstr "Nombre de jours avant expiration à notifier." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__change_notice +msgid "Number of Days to be notified before changes." +msgstr "Nombre de jours à notifier avant les modifications." + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_has_error_counter +msgid "Number of error" +msgstr "Nombre d'erreurs" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__message_needaction_counter +msgid "Number of messages which requires an action" +msgstr "Nombre de messages exigeant une action" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Nombre de messages avec des erreurs d'envoi" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__term +msgid "Number of months this agreement/contract is in effect with the partner." +msgstr "Nombre de mois de validité de cet accord / contrat avec le partenaire." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__message_unread_counter +msgid "Number of unread messages" +msgstr "Nombre de messages non lus" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_operations +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Operations" +msgstr "Opérations" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__default_value +#: model:ir.model.fields,help:agreement_legal.field_agreement_appendix__default_value +#: model:ir.model.fields,help:agreement_legal.field_agreement_clause__default_value +#: model:ir.model.fields,help:agreement_legal.field_agreement_recital__default_value +#: model:ir.model.fields,help:agreement_legal.field_agreement_section__default_value +msgid "Optional value to use if the target field is empty." +msgstr "Valeur facultative à utiliser si le champ cible est vide." + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__parent_agreement_id +msgid "Parent Agreement" +msgstr "Contrat parent" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Parties" +msgstr "Parties de l'accord" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__partner_id +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Partner" +msgstr "Partenaire" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__partner_contact_id +msgid "Partner Contact" +msgstr "Contact partenaire" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Partner Information" +msgstr "Information partenaire" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_search_view +msgid "Partners" +msgstr "Partenaires" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__payment_term_id +msgid "Payment Term" +msgstr "Modalité de paiement" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Payment Terms" +msgstr "Conditions de paiement" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_increasetype__increase_percent +msgid "Percentage that the amount will increase." +msgstr "Pourcentage que le montant va augmenter." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Performance" +msgstr "Performance" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Perhaps include invoices with total vs costs?" +msgstr "Peut-être inclure le total des factures vs coûts?" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__company_contact_phone +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__partner_contact_phone +msgid "Phone" +msgstr "Téléphone" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__copyvalue +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__copyvalue +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__copyvalue +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__copyvalue +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__copyvalue +msgid "Placeholder Expression" +msgstr "Expression fictive" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Preview" +msgstr "Prévisualiser" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Previouse Versions" +msgstr "Versions précédentes" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Primary Contact" +msgstr "Contact principal" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Print" +msgstr "Imprimer" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__product_id +msgid "Product" +msgstr "Article" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_product_template +msgid "Product Template" +msgstr "Modèle d'article" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_products +msgid "Products" +msgstr "Articles" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__product_ids +msgid "Products & Services" +msgstr "Produits & Services" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__line_ids +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Products/Services" +msgstr "Produits/Services" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Project" +msgstr "Projet" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__qty +msgid "Quantity" +msgstr "Quantité" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_recital_form +msgid "Recital" +msgstr "Préambule" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.agreement_recital_action +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__recital_ids +#: model:ir.ui.menu,name:agreement_legal.agreement_recitals +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_recital_tree +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Recitals" +msgstr "Préambules" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.view_project_agreement_kanban +msgid "Record's Colour" +msgstr "Couleur de l'enregistrement" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__reference +msgid "Reference" +msgstr "Référence" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__renewal_type_id +msgid "Renewal Type" +msgstr "Type de renouvellement" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_renewaltype +msgid "Renewal Types" +msgstr "Types de renouvellement" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_renewaltype__name +msgid "Renewal types describe what happens after the agreement/contract expires." +msgstr "Les types de renouvellement décrivent ce qui se passe après l'expiration de l'accord / du contrat." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Repair" +msgstr "Réparation" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_reporting +msgid "Reporting" +msgstr "Rapport" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Represented by" +msgstr "Représenté par" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Returns" +msgstr "Retours" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__analytic_line_ids +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Revenues and Costs" +msgstr "Revenus et Coûts" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__reviewed_user_id +msgid "Reviewed By" +msgstr "Révisée par" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__reviewed_date +msgid "Reviewed Date" +msgstr "Date de révision" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Reviewed by" +msgstr "Révisée par" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__revision +msgid "Revision" +msgstr "Révision" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Revisions" +msgstr "Révisions" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Sale Subscriptions" +msgstr "Abonnements" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Sales" +msgstr "Vente" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__sale_order_id +msgid "Sales Order" +msgstr "Bon de commande" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__section_id +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_form_view +msgid "Section" +msgstr "Section" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__content +msgid "Section Content" +msgstr "Contenu de la section" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__sections_ids +#: model:ir.ui.menu,name:agreement_legal.agreement_sections +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_list_view +msgid "Sections" +msgstr "Sections" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__field_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_appendix__field_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_clause__field_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_recital__field_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_section__field_id +msgid "" +"Select target field from the related document model. If it is a\n" +" relationship field you will be able to select a target field at the\n" +" destination of the relationship." +msgstr "" +"Sélectionnez le champ cible dans le modèle de document associé. Dans le cas d'un\n" +" champ relationnel, vous serez en mesure de sélectionner un champ cible à la\n" +" destination de la relation." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__sale_order_id +msgid "Select the Sales Order that this agreement is related to." +msgstr "Sélectionnez la commande à laquelle cet accord se rapporte." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Select the agreement field" +msgstr "Sélectionnez le champ \"accord\"" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_appendix_form +msgid "Select the appendix field" +msgstr "Sélectionnez le champ \"annexe\"" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_clause_form_view +msgid "Select the clause field" +msgstr "Sélectionnez le champ \"clause\"" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__stage_id +msgid "Select the current stage of the agreement." +msgstr "Sélectionnez le stade actuel de l'accord." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_recital_form +msgid "Select the recital field" +msgstr "Sélectionnez le champ \"préambule\"" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_form_view +msgid "Select the section field" +msgstr "Sélectionnez le champ \"section\"" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_appendix_form +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_recital_form +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_clause_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_form_view +msgid "Select the sub-field" +msgstr "Sélectionnez le sous-champ" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__agreement_subtype_id +msgid "Select the sub-type of this agreement. Sub-Types are related to agreement types." +msgstr "Sélectionnez le sous-type de cet accord. Les sous-types sont liés aux types d'accord." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__agreement_type_id +msgid "Select the type of agreement." +msgstr "Sélectionnez le type d'accord." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__assigned_user_id +msgid "Select the user who manages this agreement." +msgstr "Sélectionnez l'utilisateur qui gère cet accord." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Sell and purchase products in different units of measure" +msgstr "Acheter et vendre dans des unités de mesure différentes" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__sequence +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__sequence +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__sequence +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__sequence +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__sequence +msgid "Sequence" +msgstr "Séquence" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__order_lines_services_ids +msgid "Service Order Lines" +msgstr "Lignes de commande de service" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_serviceprofile_form +msgid "Service Profile" +msgstr "Profil de service" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.agreement_serviceprofile_action +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__serviceprofile_ids +#: model:ir.ui.menu,name:agreement_legal.agreement_serviceprofiles +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_serviceprofile_tree +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Service Profiles" +msgstr "Profils de service" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.order_lines_search_view +msgid "Service Type" +msgstr "Type de service" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.action_agreement_config +#: model:ir.ui.menu,name:agreement_legal.agreement_settings +msgid "Settings" +msgstr "Configuration" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Signatures" +msgstr "Signatures" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__company_signed_user_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__partner_signed_user_id +msgid "Signed By" +msgstr "Signé par" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__signed_contract +msgid "Signed Document" +msgstr "Document signé" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__company_signed_date +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__partner_signed_date +msgid "Signed on" +msgstr "Signé le" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__special_terms +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Special Terms" +msgstr "Conditions spéciales" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__stage_id +msgid "Stage" +msgstr "Étape" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__name +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_stage_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_stage_list_view +msgid "Stage Name" +msgstr "Nom de l'étape" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_stages +msgid "Stages" +msgstr "Étapes" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__start_date +msgid "Start Date" +msgstr "Date de début" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__state +msgid "State" +msgstr "État" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_search_view +msgid "Status" +msgstr "Statut" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Structure" +msgstr "Structure" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_subtype_list_view +msgid "Sub-Type Name" +msgstr "Nom du sous-type" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_subtypes +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_type_list_view +msgid "Sub-Types" +msgstr "Sous-types" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__sub_model_object_field_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__sub_model_object_field_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__sub_model_object_field_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__sub_model_object_field_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__sub_model_object_field_id +msgid "Sub-field" +msgstr "Sous champ" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__sub_object_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__sub_object_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__sub_object_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__sub_object_id +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__sub_object_id +msgid "Sub-model" +msgstr "Sous-modèle" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__agreement_subtypes_ids +msgid "Subtypes" +msgstr "Sous-types" + +#. module: agreement_legal +#: model:ir.actions.act_window,name:agreement_legal.partner_agreement_agreement_templates +#: model:ir.ui.menu,name:agreement_legal.template +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_search_view +msgid "Templates" +msgstr "Modèles" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__term +msgid "Term (Months)" +msgstr "Terme (mois)" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Term Dates" +msgstr "Dates d'expiration" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__termination_date +msgid "Termination Date" +msgstr "Date de résiliation" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__termination_requested +msgid "Termination Requested Date" +msgstr "Date de résiliation demandée" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__payment_term_id +msgid "Terms of payments." +msgstr "Conditions de paiements." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__notification_address_id +msgid "The address to send notificaitons to, if different from customer address.(Address Type = Other)" +msgstr "Adresse à laquelle envoyer les notifications, si différente de l'adresse du client. (Type d'adresse = Autre)" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__increase_type_id +msgid "The amount that certain rates may increase." +msgstr "Le montant que certains taux peuvent augmenter." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__partner_id +msgid "The customer or vendor this agreement is related to." +msgstr "Le client ou le fournisseur auquel cet accord est lié." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__company_contact_id +msgid "The primary contact in the company." +msgstr "Le contact principal dans l'entreprise." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__partner_contact_id +msgid "The primary partner contact (If Applicable)." +msgstr "Le contact principal du partenaire (le cas échéant)." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__revision +msgid "The revision will increase with every save event." +msgstr "Le numéro de révision augmentera à chaque sauvegarde." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_appendix__title +#: model:ir.model.fields,help:agreement_legal.field_agreement_clause__title +#: model:ir.model.fields,help:agreement_legal.field_agreement_recital__title +#: model:ir.model.fields,help:agreement_legal.field_agreement_section__title +msgid "The title is displayed on the PDF.The name is not." +msgstr "Le titre est affiché sur le PDF. Le nom ne l’est pas." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__company_signed_user_id +msgid "The user at our company who authorized/signed the agreement or contract." +msgstr "L'utilisateur de notre société qui a autorisé / signé l'accord ou le contrat." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__version +msgid "The versions are used to keep track of document history and previous versions can be referenced." +msgstr "Les versions permettent de suivre l'historique des documents et les versions précédentes peuvent être référencées." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_appendix_form +#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_recital_form +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_clause_form_view +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_form_view +msgid "This section (on the left) allows you to add dynamic fields inside the content." +msgstr "Cette section (à gauche) vous permet d'ajouter des champs dynamiques à l'intérieur du contenu." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "This section (on the left) allows you to add dynamic fields inside the description and special terms." +msgstr "Cette section (à gauche) vous permet d'ajouter des champs dynamiques à l'intérieur de la description et des termes spéciaux." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "This section is a place where financial records will show the current performance of this agreement." +msgstr "Cette section est un endroit où les registres financiers montreront la performance actuelle de cet accord." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_stage__fold +msgid "This stage is folded in the kanban view by deafault." +msgstr "Cette étape est repliée dans la vue kanban par défaut." + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__title +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__title +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__title +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__name +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__title +msgid "Title" +msgstr "Titre" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document +msgid "Title:" +msgstr "Titre:" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__total_company_mrc +msgid "Total company monthly recurring costs." +msgstr "Total des coûts récurrents mensuels de la société." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__total_company_nrc +msgid "Total company non-recurring costs." +msgstr "Total des coûts non récurrents de la société." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__total_customer_mrc +msgid "Total custemer monthly recurring costs." +msgstr "Total des coûts récurrents mensuels du client." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__total_customer_nrc +msgid "Total custemer non-monthly recurring costs." +msgstr "Total des coûts client mensuels non-récurrents." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__contract_value +msgid "Total value of the contract over ther entire term." +msgstr "Valeur totale du contrat sur toute la durée." + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_type_list_view +msgid "Type Name" +msgstr "Nom du type" + +#. module: agreement_legal +#: model:ir.ui.menu,name:agreement_legal.agreement_types +msgid "Types" +msgstr "Types" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__uom_id +msgid "Unit of Measure" +msgstr "Unité de mesure" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form +msgid "Units Of Measure" +msgstr "Unités de mesure" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_unread +msgid "Unread Messages" +msgstr "Messages non lus" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_unread_counter +msgid "Unread Messages Counter" +msgstr "Compteur de messages non lus" + +#. module: agreement_legal +#: model:res.groups,name:agreement_legal.group_agreement_user +msgid "User" +msgstr "Utilisateur" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__version +msgid "Version" +msgstr "Version" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Version:" +msgstr "Version:" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__website_message_ids +msgid "Website Messages" +msgstr "Messages du site web" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__website_message_ids +msgid "Website communication history" +msgstr "Historique de communication du site web" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__sub_model_object_field_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_appendix__sub_model_object_field_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_clause__sub_model_object_field_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_recital__sub_model_object_field_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_section__sub_model_object_field_id +msgid "" +"When a relationship field is selected as first field, this\n" +" field lets you select the target field within the destination document\n" +" model (sub-model)." +msgstr "" +"Lorsqu'un champ relationnel est sélectionné en premier, cela\n" +" vous permet de sélectionner le champ cible dans le document de destination\n" +" modèle (sous-modèle)." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__sub_object_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_appendix__sub_object_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_clause__sub_object_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_recital__sub_object_id +#: model:ir.model.fields,help:agreement_legal.field_agreement_section__sub_object_id +msgid "" +"When a relationship field is selected as first field, this\n" +" field shows the document model the relationship goes to." +msgstr "" +"Lorsqu'un champ relationnel est sélectionné, ce\n" +" champ indique le modèle de document cible." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__end_date +msgid "When the agreement ends." +msgstr "Quand l'accord se termine." + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__start_date +msgid "When the agreement starts." +msgstr "Quand l'accord commence" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_agreement +msgid "agreement" +msgstr "accord" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_agreement_increasetype +msgid "agreement.increasetype" +msgstr "agreement.increasetype" + +#. module: agreement_legal +#: model:ir.model,name:agreement_legal.model_agreement_renewaltype +msgid "agreement.renewaltype" +msgstr "agreement.renewaltype" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement_appendix__dynamic_content +#: model:ir.model.fields,help:agreement_legal.field_agreement_clause__dynamic_content +#: model:ir.model.fields,help:agreement_legal.field_agreement_recital__dynamic_content +#: model:ir.model.fields,help:agreement_legal.field_agreement_section__dynamic_content +msgid "compute dynamic Content" +msgstr "Générer le contenu dynamique" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.view_project_agreement_kanban +msgid "oe_kanban_text_red" +msgstr "oe_kanban_text_red" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "on" +msgstr "le" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.view_project_agreement_kanban +msgid "user & picture" +msgstr "utilisateur et image" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "| Created By:" +msgstr "| Créé par:" + +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "| Created On:" +msgstr "| Créé le:" diff --git a/agreement_legal/models/__init__.py b/agreement_legal/models/__init__.py new file mode 100644 index 0000000000..c24e38c080 --- /dev/null +++ b/agreement_legal/models/__init__.py @@ -0,0 +1,18 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import ( + res_config_settings, + agreement_stage, + agreement, + agreement_appendix, + agreement_clause, + agreement_line, + agreement_recital, + agreement_section, + agreement_type, + agreement_subtype, + res_partner, + product_template, + agreement_renewaltype, + agreement_increasetype, +) diff --git a/agreement_legal/models/agreement.py b/agreement_legal/models/agreement.py new file mode 100644 index 0000000000..1046d6f03b --- /dev/null +++ b/agreement_legal/models/agreement.py @@ -0,0 +1,438 @@ +# Copyright (C) 2018 - TODAY, Pavlov Media +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models + + +class Agreement(models.Model): + _name = "agreement" + _inherit = ["agreement", "mail.thread"] + + def _default_stage_id(self): + return self.env.ref("agreement_legal.agreement_stage_new") + + # General + name = fields.Char(string="Title", required=True) + is_template = fields.Boolean( + string="Is a Template?", + default=False, + copy=False, + help="Make this agreement a template.", + ) + version = fields.Integer( + string="Version", + default=1, + copy=False, + help="The versions are used to keep track of document history and " + "previous versions can be referenced.", + ) + revision = fields.Integer( + string="Revision", + default=0, + copy=False, + help="The revision will increase with every save event.", + ) + description = fields.Text( + string="Description", + track_visibility="onchange", + help="Description of the agreement", + ) + dynamic_description = fields.Text( + compute="_compute_dynamic_description", + string="Dynamic Description", + help="Compute dynamic description", + ) + start_date = fields.Date( + string="Start Date", + track_visibility="onchange", + help="When the agreement starts.", + ) + end_date = fields.Date( + string="End Date", + track_visibility="onchange", + help="When the agreement ends." + ) + color = fields.Integer() + active = fields.Boolean( + string="Active", + default=True, + help="If unchecked, it will allow you to hide the agreement without " + "removing it.", + ) + company_signed_date = fields.Date( + string="Signed on", + track_visibility="onchange", + help="Date the contract was signed by Company.", + ) + partner_signed_date = fields.Date( + string="Signed on", + track_visibility="onchange", + help="Date the contract was signed by the Partner.", + ) + term = fields.Integer( + string="Term (Months)", + track_visibility="onchange", + help="Number of months this agreement/contract is in effect with the " + "partner.", + ) + expiration_notice = fields.Integer( + string="Exp. Notice (Days)", + track_visibility="onchange", + help="Number of Days before expiration to be notified.", + ) + change_notice = fields.Integer( + string="Change Notice (Days)", + track_visibility="onchange", + help="Number of Days to be notified before changes.", + ) + special_terms = fields.Text( + string="Special Terms", + track_visibility="onchange", + help="Any terms that you have agreed to and want to track on the " + "agreement/contract.", + ) + dynamic_special_terms = fields.Text( + compute="_compute_dynamic_special_terms", + string="Dynamic Special Terms", + help="Compute dynamic special terms", + ) + reference = fields.Char( + string="Reference", + copy=False, + required=True, + default=lambda self: _("New"), + track_visibility="onchange", + help="ID used for internal contract tracking.", + ) + increase_type_id = fields.Many2one( + "agreement.increasetype", + string="Increase Type", + track_visibility="onchange", + help="The amount that certain rates may increase.", + ) + termination_requested = fields.Date( + string="Termination Requested Date", + track_visibility="onchange", + help="Date that a request for termination was received.", + ) + termination_date = fields.Date( + string="Termination Date", + track_visibility="onchange", + help="Date that the contract was terminated.", + ) + reviewed_date = fields.Date( + string="Reviewed Date", + track_visibility="onchange") + reviewed_user_id = fields.Many2one( + "res.users", + string="Reviewed By", + track_visibility="onchange" + ) + approved_date = fields.Date( + string="Approved Date", + track_visibility="onchange") + approved_user_id = fields.Many2one( + "res.users", + string="Approved By", + track_visibility="onchange" + ) + currency_id = fields.Many2one( + "res.currency", + string="Currency") + partner_id = fields.Many2one( + "res.partner", + string="Partner", + copy=True, + help="The customer or vendor this agreement is related to.", + ) + company_partner_id = fields.Many2one( + "res.partner", + string="Company", + copy=True, + default=lambda self: self.env.user.company_id.partner_id, + ) + partner_contact_id = fields.Many2one( + "res.partner", + string="Partner Contact", + copy=True, + help="The primary partner contact (If Applicable).", + ) + partner_contact_phone = fields.Char( + related="partner_contact_id.phone", + string="Phone" + ) + partner_contact_email = fields.Char( + related="partner_contact_id.email", + string="Email" + ) + company_contact_id = fields.Many2one( + "res.partner", + string="Company Contact", + copy=True, + help="The primary contact in the company.", + ) + company_contact_phone = fields.Char( + related="company_contact_id.phone", + string="Phone" + ) + company_contact_email = fields.Char( + related="company_contact_id.email", + string="Email" + ) + agreement_type_id = fields.Many2one( + "agreement.type", + string="Agreement Type", + track_visibility="onchange", + help="Select the type of agreement.", + ) + agreement_subtype_id = fields.Many2one( + "agreement.subtype", + string="Agreement Sub-type", + track_visibility="onchange", + help="Select the sub-type of this agreement. Sub-Types are related to " + "agreement types.", + ) + product_ids = fields.Many2many( + "product.template", + string="Products & Services") + payment_term_id = fields.Many2one( + "account.payment.term", + string="Payment Term", + track_visibility="onchange", + help="Terms of payments.", + ) + assigned_user_id = fields.Many2one( + "res.users", + string="Assigned To", + track_visibility="onchange", + help="Select the user who manages this agreement.", + ) + company_signed_user_id = fields.Many2one( + "res.users", + string="Signed By", + track_visibility="onchange", + help="The user at our company who authorized/signed the agreement or " + "contract.", + ) + partner_signed_user_id = fields.Many2one( + "res.partner", + string="Signed By", + track_visibility="onchange", + help="Contact on the account that signed the agreement/contract.", + ) + parent_agreement_id = fields.Many2one( + "agreement", + string="Parent Agreement", + help="Link this agreement to a parent agreement. For example if this " + "agreement is an amendment to another agreement. This list will " + "only show other agreements related to the same account.", + ) + renewal_type_id = fields.Many2one( + "agreement.renewaltype", + string="Renewal Type", + track_visibility="onchange", + help="Describes what happens after the contract expires.", + ) + recital_ids = fields.One2many( + "agreement.recital", + "agreement_id", + string="Recitals", + copy=True + ) + sections_ids = fields.One2many( + "agreement.section", + "agreement_id", + string="Sections", + copy=True + ) + clauses_ids = fields.One2many( + "agreement.clause", + "agreement_id", + string="Clauses", + copy=True + ) + appendix_ids = fields.One2many( + "agreement.appendix", + "agreement_id", + string="Appendices", + copy=True + ) + previous_version_agreements_ids = fields.One2many( + "agreement", + "parent_agreement_id", + string="Child Agreements", + copy=False, + domain=[("active", "=", False)], + ) + child_agreements_ids = fields.One2many( + "agreement", + "parent_agreement_id", + string="Child Agreements", + copy=False, + domain=[("active", "=", True)], + ) + line_ids = fields.One2many( + "agreement.line", + "agreement_id", + string="Products/Services", + copy=False + ) + state = fields.Selection( + [("draft", "Draft"), + ("active", "Active"), + ("inactive", "Inactive")], + default="draft", + track_visibility="always", + ) + notification_address_id = fields.Many2one( + "res.partner", + string="Notification Address", + help="The address to send notificaitons to, if different from " + "customer address.(Address Type = Other)", + ) + signed_contract_filename = fields.Char(string="Filename") + signed_contract = fields.Binary( + string="Signed Document", + track_visibility="always") + field_id = fields.Many2one( + "ir.model.fields", + string="Field", + help="""Select target field from the related document model. If it is a + relationship field you will be able to select a target field at the + destination of the relationship.""", + ) + sub_object_id = fields.Many2one( + "ir.model", + string="Sub-model", + help="""When a relationship field is selected as first field, this + field shows the document model the relationship goes to.""", + ) + sub_model_object_field_id = fields.Many2one( + "ir.model.fields", + string="Sub-field", + help="""When a relationship field is selected as first field, this + field lets you select the target field within the destination document + model (sub-model).""", + ) + default_value = fields.Char( + string="Default Value", + help="Optional value to use if the target field is empty.", + ) + copyvalue = fields.Char( + string="Placeholder Expression", + help="""Final placeholder expression, to be copy-pasted in the desired + template field.""", + ) + + # compute the dynamic content for mako expression + @api.multi + def _compute_dynamic_description(self): + MailTemplates = self.env["mail.template"] + for agreement in self: + lang = agreement.partner_id.lang or "en_US" + description = MailTemplates.with_context( + lang=lang)._render_template( + agreement.description, "agreement", agreement.id + ) + agreement.dynamic_description = description + + @api.multi + def _compute_dynamic_special_terms(self): + MailTemplates = self.env["mail.template"] + for agreement in self: + lang = agreement.partner_id.lang or "en_US" + special_terms = MailTemplates.with_context( + lang=lang)._render_template( + agreement.special_terms, "agreement", agreement.id + ) + agreement.dynamic_special_terms = special_terms + + @api.onchange("field_id", "sub_model_object_field_id", "default_value") + def onchange_copyvalue(self): + self.sub_object_id = False + self.copyvalue = False + self.sub_object_id = False + if self.field_id and not self.field_id.relation: + self.copyvalue = "${{object.{} or {}}}".format( + self.field_id.name, + self.default_value or "''", + ) + self.sub_model_object_field_id = False + if self.field_id and self.field_id.relation: + self.sub_object_id = self.env["ir.model"].search( + [("model", "=", self.field_id.relation)] + )[0] + if self.sub_model_object_field_id: + self.copyvalue = "${{object.{}.{} or {}}}".format( + self.field_id.name, + self.sub_model_object_field_id.name, + self.default_value or "''", + ) + + # Used for Kanban grouped_by view + @api.model + def _read_group_stage_ids(self, stages, domain, order): + stage_ids = self.env["agreement.stage"].search([]) + return stage_ids + + stage_id = fields.Many2one( + "agreement.stage", + string="Stage", + group_expand="_read_group_stage_ids", + help="Select the current stage of the agreement.", + track_visibility="onchange", + index=True, + # default=lambda self: self._default_stage_id(), + ) + + # Create New Version Button + @api.multi + def create_new_version(self, vals): + for rec in self: + if not rec.state == "draft": + # Make sure status is draft + rec.state = "draft" + default_vals = { + "name": "{} - OLD VERSION".format(rec.name), + "active": False, + "parent_agreement_id": rec.id, + } + # Make a current copy and mark it as old + rec.copy(default=default_vals) + # Increment the Version + rec.version = rec.version + 1 + # Reset revision to 0 since it's a new version + vals["revision"] = 0 + return super(Agreement, self).write(vals) + + def create_new_agreement(self): + default_vals = { + "name": "NEW", + "active": True, + "version": 1, + "revision": 0, + "state": "draft", + } + res = self.copy(default=default_vals) + return { + "res_model": "agreement", + "type": "ir.actions.act_window", + "view_mode": "form", + "view_type": "form", + "res_id": res.id, + } + + @api.model + def create(self, vals): + if vals.get("reference", _("New")) == _("New"): + vals["reference"] = self.env[ + "ir.sequence"].next_by_code("agreement") or _( + "New" + ) + return super(Agreement, self).create(vals) + + # Increments the revision on each save action + @api.multi + def write(self, vals): + vals["revision"] = self.revision + 1 + return super(Agreement, self).write(vals) diff --git a/agreement_legal/models/agreement_appendix.py b/agreement_legal/models/agreement_appendix.py new file mode 100644 index 0000000000..e81bd53cd6 --- /dev/null +++ b/agreement_legal/models/agreement_appendix.py @@ -0,0 +1,101 @@ +# Copyright (C) 2018 - TODAY, Pavlov Media +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class AgreementAppendix(models.Model): + _name = "agreement.appendix" + _description = "Agreement Appendices" + _order = "sequence" + + name = fields.Char(string="Name", required=True) + title = fields.Char( + string="Title", + required=True, + help="The title is displayed on the PDF." "The name is not.", + ) + sequence = fields.Integer( + string="Sequence", + default=10) + content = fields.Html(string="Content") + dynamic_content = fields.Html( + compute="_compute_dynamic_content", + string="Dynamic Content", + help="compute dynamic Content", + ) + agreement_id = fields.Many2one( + "agreement", + string="Agreement", + ondelete="cascade") + active = fields.Boolean( + string="Active", + default=True, + help="If unchecked, it will allow you to hide this appendix without " + "removing it.", + ) + + # Dynamic field editor + field_id = fields.Many2one( + "ir.model.fields", + string="Field", + help="""Select target field from the related document model. If it is a + relationship field you will be able to select a target field at the + destination of the relationship.""", + ) + sub_object_id = fields.Many2one( + "ir.model", + string="Sub-model", + help="""When a relationship field is selected as first field, this + field shows the document model the relationship goes to.""", + ) + sub_model_object_field_id = fields.Many2one( + "ir.model.fields", + string="Sub-field", + help="""When a relationship field is selected as first field, this + field lets you select the target field within the destination document + model (sub-model).""", + ) + default_value = fields.Char( + string="Default Value", + help="Optional value to use if the target field is empty.", + ) + copyvalue = fields.Char( + string="Placeholder Expression", + help="""Final placeholder expression, to be copy-pasted in the desired + template field.""", + ) + + @api.onchange('field_id', 'sub_model_object_field_id', 'default_value') + def onchange_copyvalue(self): + self.sub_object_id = False + self.copyvalue = False + self.sub_object_id = False + if self.field_id and not self.field_id.relation: + self.copyvalue = "${object.%s or %s}" % \ + (self.field_id.name, + self.default_value or '\'\'') + self.sub_model_object_field_id = False + if self.field_id and self.field_id.relation: + self.sub_object_id = self.env['ir.model'].search( + [('model', '=', self.field_id.relation)])[0] + if self.sub_model_object_field_id: + self.copyvalue = "${object.%s.%s or %s}" %\ + (self.field_id.name, + self.sub_model_object_field_id.name, + self.default_value or '\'\'') + + # compute the dynamic content for mako expression + @api.multi + def _compute_dynamic_content(self): + MailTemplates = self.env["mail.template"] + for appendix in self: + lang = ( + appendix.agreement_id + and appendix.agreement_id.partner_id.lang + or "en_US" + ) + content = MailTemplates.with_context(lang=lang)._render_template( + appendix.content, "agreement.appendix", appendix.id + ) + appendix.dynamic_content = content diff --git a/agreement_legal/models/agreement_clause.py b/agreement_legal/models/agreement_clause.py new file mode 100644 index 0000000000..2c2debadd2 --- /dev/null +++ b/agreement_legal/models/agreement_clause.py @@ -0,0 +1,103 @@ +# Copyright (C) 2018 - TODAY, Pavlov Media +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class AgreementClause(models.Model): + _name = "agreement.clause" + _description = "Agreement Clauses" + _order = "sequence" + + name = fields.Char(string="Name", required=True) + title = fields.Char( + string="Title", + help="The title is displayed on the PDF." "The name is not." + ) + sequence = fields.Integer(string="Sequence") + agreement_id = fields.Many2one( + "agreement", + string="Agreement", + ondelete="cascade") + section_id = fields.Many2one( + "agreement.section", + string="Section", + ondelete="cascade" + ) + content = fields.Html(string="Clause Content") + dynamic_content = fields.Html( + compute="_compute_dynamic_content", + string="Dynamic Content", + help="compute dynamic Content", + ) + active = fields.Boolean( + string="Active", + default=True, + help="If unchecked, it will allow you to hide the agreement without " + "removing it.", + ) + + # Dynamic field editor + field_id = fields.Many2one( + "ir.model.fields", + string="Field", + help="""Select target field from the related document model. If it is a + relationship field you will be able to select a target field at the + destination of the relationship.""", + ) + sub_object_id = fields.Many2one( + "ir.model", + string="Sub-model", + help="""When a relationship field is selected as first field, this + field shows the document model the relationship goes to.""", + ) + sub_model_object_field_id = fields.Many2one( + "ir.model.fields", + string="Sub-field", + help="""When a relationship field is selected as first field, this + field lets you select the target field within the destination document + model (sub-model).""", + ) + default_value = fields.Char( + string="Default Value", + help="Optional value to use if the target field is empty.", + ) + copyvalue = fields.Char( + string="Placeholder Expression", + help="""Final placeholder expression, to be copy-pasted in the desired + template field.""", + ) + + @api.onchange('field_id', 'sub_model_object_field_id', 'default_value') + def onchange_copyvalue(self): + self.sub_object_id = False + self.copyvalue = False + self.sub_object_id = False + if self.field_id and not self.field_id.relation: + self.copyvalue = "${object.%s or %s}" % \ + (self.field_id.name, + self.default_value or '\'\'') + self.sub_model_object_field_id = False + if self.field_id and self.field_id.relation: + self.sub_object_id = self.env['ir.model'].search( + [('model', '=', self.field_id.relation)])[0] + if self.sub_model_object_field_id: + self.copyvalue = "${object.%s.%s or %s}" %\ + (self.field_id.name, + self.sub_model_object_field_id.name, + self.default_value or '\'\'') + + # compute the dynamic content for mako expression + @api.multi + def _compute_dynamic_content(self): + MailTemplates = self.env["mail.template"] + for clause in self: + lang = ( + clause.agreement_id + and clause.agreement_id.partner_id.lang + or "en_US" + ) + content = MailTemplates.with_context(lang=lang)._render_template( + clause.content, "agreement.clause", clause.id + ) + clause.dynamic_content = content diff --git a/agreement_legal/models/agreement_increasetype.py b/agreement_legal/models/agreement_increasetype.py new file mode 100644 index 0000000000..094168c159 --- /dev/null +++ b/agreement_legal/models/agreement_increasetype.py @@ -0,0 +1,27 @@ +# Copyright (C) 2018 - TODAY, Pavlov Media +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +# Main Agreement Increase Type Records Model +class AgreementIncreaseType(models.Model): + _name = "agreement.increasetype" + _description = "Agreement Increase Type" + + # General + name = fields.Char( + string="Title", + required=True, + help="Increase types describe any increases that may happen during " + "the contract.", + ) + description = fields.Text( + string="Description", + required=True, + help="Description of the renewal type." + ) + increase_percent = fields.Integer( + string="Increase Percentage", + help="Percentage that the amount will increase." + ) diff --git a/agreement_legal/models/agreement_line.py b/agreement_legal/models/agreement_line.py new file mode 100644 index 0000000000..3960681f37 --- /dev/null +++ b/agreement_legal/models/agreement_line.py @@ -0,0 +1,30 @@ +# Copyright (C) 2018 - TODAY, Pavlov Media +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class AgreementLine(models.Model): + _name = "agreement.line" + _description = "Agreement Lines" + + product_id = fields.Many2one( + "product.product", + string="Product") + name = fields.Char( + string="Description", + required=True) + agreement_id = fields.Many2one( + "agreement", + string="Agreement", + ondelete="cascade") + qty = fields.Float(string="Quantity") + uom_id = fields.Many2one( + "uom.uom", + string="Unit of Measure", + required=True) + + @api.onchange("product_id") + def _onchange_product_id(self): + self.name = self.product_id.name + self.uom_id = self.product_id.uom_id.id diff --git a/agreement_legal/models/agreement_recital.py b/agreement_legal/models/agreement_recital.py new file mode 100644 index 0000000000..ec65c29e4d --- /dev/null +++ b/agreement_legal/models/agreement_recital.py @@ -0,0 +1,100 @@ +# Copyright (C) 2018 - TODAY, Pavlov Media +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class AgreementRecital(models.Model): + _name = "agreement.recital" + _description = "Agreement Recitals" + _order = "sequence" + + name = fields.Char(string="Name", required=True) + title = fields.Char( + string="Title", + help="The title is displayed on the PDF." "The name is not." + ) + sequence = fields.Integer( + string="Sequence", + default=10) + content = fields.Html(string="Content") + dynamic_content = fields.Html( + compute="_compute_dynamic_content", + string="Dynamic Content", + help="compute dynamic Content", + ) + agreement_id = fields.Many2one( + "agreement", + string="Agreement", + ondelete="cascade") + active = fields.Boolean( + string="Active", + default=True, + help="If unchecked, it will allow you to hide this recital without " + "removing it.", + ) + + # Dynamic field editor + field_id = fields.Many2one( + "ir.model.fields", + string="Field", + help="""Select target field from the related document model. If it is a + relationship field you will be able to select a target field at the + destination of the relationship.""", + ) + sub_object_id = fields.Many2one( + "ir.model", + string="Sub-model", + help="""When a relationship field is selected as first field, this + field shows the document model the relationship goes to.""", + ) + sub_model_object_field_id = fields.Many2one( + "ir.model.fields", + string="Sub-field", + help="""When a relationship field is selected as first field, this + field lets you select the target field within the destination document + model (sub-model).""", + ) + default_value = fields.Char( + string="Default Value", + help="Optional value to use if the target field is empty.", + ) + copyvalue = fields.Char( + string="Placeholder Expression", + help="""Final placeholder expression, to be copy-pasted in the desired + template field.""", + ) + + @api.onchange('field_id', 'sub_model_object_field_id', 'default_value') + def onchange_copyvalue(self): + self.sub_object_id = False + self.copyvalue = False + self.sub_object_id = False + if self.field_id and not self.field_id.relation: + self.copyvalue = "${object.%s or %s}" % \ + (self.field_id.name, + self.default_value or '\'\'') + self.sub_model_object_field_id = False + if self.field_id and self.field_id.relation: + self.sub_object_id = self.env['ir.model'].search( + [('model', '=', self.field_id.relation)])[0] + if self.sub_model_object_field_id: + self.copyvalue = "${object.%s.%s or %s}" %\ + (self.field_id.name, + self.sub_model_object_field_id.name, + self.default_value or '\'\'') + + # compute the dynamic content for mako expression + @api.multi + def _compute_dynamic_content(self): + MailTemplates = self.env["mail.template"] + for recital in self: + lang = ( + recital.agreement_id + and recital.agreement_id.partner_id.lang + or "en_US" + ) + content = MailTemplates.with_context(lang=lang)._render_template( + recital.content, "agreement.recital", recital.id + ) + recital.dynamic_content = content diff --git a/agreement_legal/models/agreement_renewaltype.py b/agreement_legal/models/agreement_renewaltype.py new file mode 100644 index 0000000000..ee03893c88 --- /dev/null +++ b/agreement_legal/models/agreement_renewaltype.py @@ -0,0 +1,23 @@ +# Copyright (C) 2018 - TODAY, Pavlov Media +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +# Main Agreement Section Records Model +class AgreementRenewalType(models.Model): + _name = "agreement.renewaltype" + _description = "Agreement Renewal Type" + + # General + name = fields.Char( + string="Title", + required=True, + help="Renewal types describe what happens after the " + "agreement/contract expires.", + ) + description = fields.Text( + string="Description", + required=True, + help="Description of the renewal type." + ) diff --git a/agreement_legal/models/agreement_section.py b/agreement_legal/models/agreement_section.py new file mode 100644 index 0000000000..f278aae8ce --- /dev/null +++ b/agreement_legal/models/agreement_section.py @@ -0,0 +1,102 @@ +# Copyright (C) 2018 - TODAY, Pavlov Media +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class AgreementSection(models.Model): + _name = "agreement.section" + _description = "Agreement Sections" + _order = "sequence" + + name = fields.Char(string="Name", required=True) + title = fields.Char( + string="Title", + help="The title is displayed on the PDF." "The name is not." + ) + sequence = fields.Integer(string="Sequence") + agreement_id = fields.Many2one( + "agreement", + string="Agreement", + ondelete="cascade") + clauses_ids = fields.One2many( + "agreement.clause", + "section_id", + string="Clauses") + content = fields.Html(string="Section Content") + dynamic_content = fields.Html( + compute="_compute_dynamic_content", + string="Dynamic Content", + help="compute dynamic Content", + ) + active = fields.Boolean( + string="Active", + default=True, + help="""If unchecked, it will allow you to hide the + agreement without removing it.""", + ) + + # Dynamic field editor + field_id = fields.Many2one( + "ir.model.fields", + string="Field", + help="""Select target field from the related document model. If it is a + relationship field you will be able to select a target field at the + destination of the relationship.""", + ) + sub_object_id = fields.Many2one( + "ir.model", + string="Sub-model", + help="""When a relationship field is selected as first field, this + field shows the document model the relationship goes to.""", + ) + sub_model_object_field_id = fields.Many2one( + "ir.model.fields", + string="Sub-field", + help="""When a relationship field is selected as first field, this + field lets you select the target field within the destination document + model (sub-model).""", + ) + default_value = fields.Char( + string="Default Value", + help="Optional value to use if the target field is empty.", + ) + copyvalue = fields.Char( + string="Placeholder Expression", + help="""Final placeholder expression, to be copy-pasted in the desired + template field.""", + ) + + @api.onchange('field_id', 'sub_model_object_field_id', 'default_value') + def onchange_copyvalue(self): + self.sub_object_id = False + self.copyvalue = False + self.sub_object_id = False + if self.field_id and not self.field_id.relation: + self.copyvalue = "${object.%s or %s}" % \ + (self.field_id.name, + self.default_value or '\'\'') + self.sub_model_object_field_id = False + if self.field_id and self.field_id.relation: + self.sub_object_id = self.env['ir.model'].search( + [('model', '=', self.field_id.relation)])[0] + if self.sub_model_object_field_id: + self.copyvalue = "${object.%s.%s or %s}" %\ + (self.field_id.name, + self.sub_model_object_field_id.name, + self.default_value or '\'\'') + + # compute the dynamic content for mako expression + @api.multi + def _compute_dynamic_content(self): + MailTemplates = self.env["mail.template"] + for section in self: + lang = ( + section.agreement_id + and section.agreement_id.partner_id.lang + or "en_US" + ) + content = MailTemplates.with_context(lang=lang)._render_template( + section.content, "agreement.section", section.id + ) + section.dynamic_content = content diff --git a/agreement_legal/models/agreement_stage.py b/agreement_legal/models/agreement_stage.py new file mode 100644 index 0000000000..05cbb459e7 --- /dev/null +++ b/agreement_legal/models/agreement_stage.py @@ -0,0 +1,28 @@ +# Copyright (C) 2018 - TODAY, Pavlov Media +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +# Main Agreement Section Records Model +class AgreementStage(models.Model): + _name = "agreement.stage" + _description = "Agreement Stages" + _order = "sequence" + + # General + name = fields.Char( + string="Stage Name", + required=True) + description = fields.Text( + string="Description", + required=False) + sequence = fields.Integer( + string="Sequence", + default="1", + required=False) + fold = fields.Boolean( + string="Is Folded", + required=False, + help="This stage is folded in the kanban view by deafault.", + ) diff --git a/agreement_legal/models/agreement_status.py b/agreement_legal/models/agreement_status.py new file mode 100644 index 0000000000..8d9ef3a2d0 --- /dev/null +++ b/agreement_legal/models/agreement_status.py @@ -0,0 +1,12 @@ +# Copyright (C) 2018 - TODAY, Pavlov Media +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +# Main Agreement Status Records Model +class AgreementStatus(models.Model): + _name = "agreement.type" + + # General + name = fields.Char(string="Title", required=True) diff --git a/agreement_legal/models/agreement_subtype.py b/agreement_legal/models/agreement_subtype.py new file mode 100644 index 0000000000..961be08838 --- /dev/null +++ b/agreement_legal/models/agreement_subtype.py @@ -0,0 +1,14 @@ +# Copyright (C) 2018 - TODAY, Pavlov Media +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class AgreementSubtype(models.Model): + _name = "agreement.subtype" + _description = "Agreement Subtypes" + + name = fields.Char(string="Name", required=True) + agreement_type_id = fields.Many2one( + "agreement.type", + string="Agreement Type") diff --git a/agreement_legal/models/agreement_type.py b/agreement_legal/models/agreement_type.py new file mode 100644 index 0000000000..3422ec93e0 --- /dev/null +++ b/agreement_legal/models/agreement_type.py @@ -0,0 +1,16 @@ +# Copyright (C) 2018 - TODAY, Pavlov Media +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class AgreementType(models.Model): + _name = "agreement.type" + _description = "Agreement Types" + + name = fields.Char(string="Name", required=True) + agreement_subtypes_ids = fields.One2many( + "agreement.subtype", + "agreement_type_id", + string="Subtypes" + ) diff --git a/agreement_legal/models/product_template.py b/agreement_legal/models/product_template.py new file mode 100644 index 0000000000..3c3b6e9ee2 --- /dev/null +++ b/agreement_legal/models/product_template.py @@ -0,0 +1,12 @@ +# Copyright (C) 2018 - TODAY, Pavlov Media +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class Product(models.Model): + _inherit = "product.template" + + agreements_ids = fields.Many2many( + "agreement", + string="Agreements") diff --git a/agreement_legal/models/res_config_settings.py b/agreement_legal/models/res_config_settings.py new file mode 100644 index 0000000000..7864ddc764 --- /dev/null +++ b/agreement_legal/models/res_config_settings.py @@ -0,0 +1,38 @@ +# Copyright (C) 2018 - TODAY, Open Source Integrators +# 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" + + module_agreement_maintenance = fields.Boolean( + string="Manage maintenance agreements and contracts." + ) + module_agreement_mrp = fields.Boolean( + string="Link your manufacturing orders to an agreement." + ) + module_agreement_project = fields.Boolean( + string="Link your projects and tasks to an agreement." + ) + module_agreement_repair = fields.Boolean( + string="Link your repair orders to an agreement." + ) + module_agreement_rma = fields.Boolean( + string="Link your RMAs to an agreement.") + module_agreement_sale = fields.Boolean( + string="Create an agreement when the sale order is confirmed." + ) + module_agreement_sale_subscription = fields.Boolean( + string="Link your subscriptions to an agreement." + ) + module_agreement_stock = fields.Boolean( + string="Link your pickings to an agreement." + ) + module_fieldservice_agreement = fields.Boolean( + string="Link your Field Service orders and equipments to an agreement." + ) + module_helpdesk_agreement = fields.Boolean( + string="Link your Helpdesk tickets to an agreement." + ) diff --git a/agreement_legal/models/res_partner.py b/agreement_legal/models/res_partner.py new file mode 100644 index 0000000000..66f42bce7f --- /dev/null +++ b/agreement_legal/models/res_partner.py @@ -0,0 +1,13 @@ +# Copyright (C) 2018 - TODAY, Pavlov Media +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class Partner(models.Model): + _inherit = "res.partner" + + agreement_ids = fields.One2many( + "agreement", + "partner_id", + string="Agreements") diff --git a/agreement_legal/readme/CONFIGURE.rst b/agreement_legal/readme/CONFIGURE.rst new file mode 100644 index 0000000000..3871fc34e2 --- /dev/null +++ b/agreement_legal/readme/CONFIGURE.rst @@ -0,0 +1,6 @@ +To configure this module: + +* Go to Agreement > Configuration > Templates +* Create a new template with sections and clauses and their respective content +* Go to Agreement > Configuration > Stages +* Create and reorder stages to match your process diff --git a/agreement_legal/readme/CONTRIBUTORS.rst b/agreement_legal/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..a0afb12314 --- /dev/null +++ b/agreement_legal/readme/CONTRIBUTORS.rst @@ -0,0 +1,6 @@ +* Patrick Wilson +* Bhavesh Odedra +* Wolfgang Hall +* Maxime Chambreuil +* Sandip Mangukiya +* Yves Goldberg diff --git a/agreement_legal/readme/CREDITS.rst b/agreement_legal/readme/CREDITS.rst new file mode 100644 index 0000000000..76f8e5a330 --- /dev/null +++ b/agreement_legal/readme/CREDITS.rst @@ -0,0 +1,5 @@ +The development of this module has been financially supported by: + +* Pavlov Media +* Open Source Integrators +* Yves Goldberg diff --git a/agreement_legal/readme/DESCRIPTION.rst b/agreement_legal/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..0680b36cf8 --- /dev/null +++ b/agreement_legal/readme/DESCRIPTION.rst @@ -0,0 +1,9 @@ +This module allows you to manage agreements, letter of intent and contract content. +The module is meant to be used by the legal team of a company and to allow them +to define sections, clauses and templates with their respective content that can +be dynamic. + +Based on the template, an agreement can be created and the pdf document generated. + +The agreement would go through a workflow to finally become a contract with the +customer signature. diff --git a/agreement_legal/readme/ROADMAP.rst b/agreement_legal/readme/ROADMAP.rst new file mode 100644 index 0000000000..58ac79c675 --- /dev/null +++ b/agreement_legal/readme/ROADMAP.rst @@ -0,0 +1,3 @@ +* Split the module to remove the dependencies on sale and account and provide + the same feature in extra modules (agreement_sale, agreement_account, + agreement_purchase) diff --git a/agreement_legal/readme/USAGE.rst b/agreement_legal/readme/USAGE.rst new file mode 100644 index 0000000000..7e89964818 --- /dev/null +++ b/agreement_legal/readme/USAGE.rst @@ -0,0 +1,7 @@ +To use this module: + +* Go to Agreement > Agreements +* Create a new agreement +* Select a template +* Follow the process to get the required approval +* Send the invitation to the customer to review and sign the agreement diff --git a/agreement_legal/report/agreement.xml b/agreement_legal/report/agreement.xml new file mode 100644 index 0000000000..f497e7a20d --- /dev/null +++ b/agreement_legal/report/agreement.xml @@ -0,0 +1,144 @@ + + + + + + + + + + diff --git a/agreement_legal/security/ir.model.access.csv b/agreement_legal/security/ir.model.access.csv new file mode 100644 index 0000000000..2126d36357 --- /dev/null +++ b/agreement_legal/security/ir.model.access.csv @@ -0,0 +1,23 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_agreement_allusers,agreement all users,model_agreement,group_agreement_user,1,1,1,0 +access_agreement_manager,agreement manager,model_agreement,group_agreement_manager,1,1,1,1 +access_agreement_recital_allusers,recital all users,model_agreement_recital,group_agreement_user,1,1,1,0 +access_agreement_recital_manager,recital manager,model_agreement_recital,group_agreement_manager,1,1,1,1 +access_agreement_section_allusers,section all users,model_agreement_section,group_agreement_user,1,1,1,0 +access_agreement_section_manager,section manager,model_agreement_section,group_agreement_manager,1,1,1,1 +access_agreement_clause_allusers,clause all users,model_agreement_clause,group_agreement_user,1,1,1,0 +access_agreement_clause_manager,clause manager,model_agreement_clause,group_agreement_manager,1,1,1,1 +access_agreement_appendix_allusers,appendix all users,model_agreement_appendix,group_agreement_user,1,1,1,0 +access_agreement_appendix_manager,appendix manager,model_agreement_appendix,group_agreement_manager,1,1,1,1 +access_agreement_line_allusers,agreement line all users,model_agreement_line,group_agreement_user,1,1,1,0 +access_agreement_line_manager,agreement line manager,model_agreement_line,group_agreement_manager,1,1,1,1 +access_agreement_stage_allusers,stage all users,model_agreement_stage,group_agreement_user,1,0,0,0 +access_agreement_stage_manager,stage manager,model_agreement_stage,group_agreement_manager,1,1,1,1 +access_agreement_type_allusers,type all users,model_agreement_type,group_agreement_user,1,0,0,0 +access_agreement_type_manager,type manager,model_agreement_type,group_agreement_manager,1,1,1,1 +access_agreement_subtype_allusers,subtype all users,model_agreement_subtype,group_agreement_user,1,0,0,0 +access_agreement_subtype_manager,subtype manager,model_agreement_subtype,group_agreement_manager,1,1,1,1 +access_agreement_renewaltype_allusers,renewaltype all users,model_agreement_renewaltype,group_agreement_user,1,0,0,0 +access_agreement_renewaltype_manager,renewaltype manager,model_agreement_renewaltype,group_agreement_manager,1,1,1,1 +access_agreement_increasetype_allusers,increasetype all users,model_agreement_increasetype,group_agreement_user,1,0,0,0 +access_agreement_increasetype_manager,increasetype manager,model_agreement_increasetype,group_agreement_manager,1,1,1,1 diff --git a/agreement_legal/security/res_groups.xml b/agreement_legal/security/res_groups.xml new file mode 100644 index 0000000000..5edde01492 --- /dev/null +++ b/agreement_legal/security/res_groups.xml @@ -0,0 +1,22 @@ + + + + Agreement + 17 + + + + User + + + + + + + Manager + + + + + + diff --git a/agreement_legal/static/description/icon.png b/agreement_legal/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..23ce93135053c48a74469807879f2805b12382ad GIT binary patch literal 6755 zcmV-p8l2^cP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vG&=l}pD=mCOb1snhX8Td&=K~#8N-CKFQ zBvp0(s=Io9`)n{X!YCjrLL4@uLLx?^7>Nlg;0OWKpNe}Tf-$lvB8s2}{h8qK3&9P6 zA)<*}0!9po;{xiS0)rw5Gt55ky?(Ek>Z-1M-??>PSHF1!0kiLh2wasDW7Mv0M0u zAiRJ^rHqA4zG5Ljk*y(xm+2{|26%Krt8`xQhXRsC)@DI(@bcpppYg!>v;++1pP(b zB62H-0kN3ksaS zR}aWD)l0;!XGCohU_SQS-CoR|NhIdH`PiGAGavhN=hn!rHy`_k8N??N6qOqcfEdVw zYK|$D#GZf7Gu%fHdYr?({Mo+@_XY!NOCXPXgWMR+(PN&k`H&?-_G#d?mP(6sE#^fQ20q0-8j1dCw}k zkNIsfAY={-+|HERRq|lXT!gdv#KlNdZY2*$l4K6eI%=noM#Knb7R#__Ub83iBR9sa zFLdiVCFRHD>9SKnDWkpcn%?@EO&5gVpby@rj9@?sHi^Q-qQSKUjyWwxW|ca#UuB0u zRG>iA2Tk&I&2eY0T1Cbf)pL%s{Ilq|(Hd)o!Q4DO^FtI$#ekTn?LZ?-MFvJyxORb_ z>t+tZ9t!Y8RHmF5#}bqqAx+Q;hf(QH(*?Vjj4BulV;sJs&UBLV$q{GRIwmk5wUTaI zPKj<^&w^?pE1F~K3_{l~y0WhELE1URYE6NS;p8;#;^$jB*xl)2=}?K=p}@_W(I;w+ zfU*gTRDkHrhv0w@`Rni?$knwyx?Sx)Em}l5YM@yh!_LMGKJX_)IODm?c{&tPQ6zQr zD6zX}$Tg)BJEH7KpxapPc;Ycd^QPUjg>B6Q*PSqoV-Gz9 zjme!Tb7~TnjA5-|1*P(0n=&M21_gw)Mu3UYAr4M3Iol=;hCz*!Vr-O@t~$4!d|frI z&7;^9M~JDYv`|9Cp--uI@a>He&iwjTEE$pkoH$|Vyh=GikyreM6yRWS#xeV$ zIm0+WCgh%Fx|Uun*b5a-DN&_m)=R|->ctR4oL8j_4pRZkN2*x9bPQ*H;;SguM^UYW zc+KVCz`o0hSUy(Aa5=zGjSA-))e^T>DYW&=^!<|Pu-(&2RWH#jRJ34friC;9DG<-;`cUSOSg-~W5bx3 z7_oKb!X=@U!7{&ok^Q#S$P@L9I4F@fa@~u`J3S!jn&6KI?i9!!BPrd-1ZQrq-QUxh z97iZJ^6!{#Vf%&0;?Y)@`a*73!Z$u2mEtHKnQo#?#*~UTvJH=Ho5n+1rtt9gY5accZalbUlJ!a4_q$1~zjqV9@zYnCnW2IbQCleq zY8Yjr@SKD8$K9KzG0LQBtjLQng(@+67s+gik$>NjGS=PtORRm%OEAkZ&0Yy%Qs5W` zTmQ;lG(7nG?k||}1Hd5P794-t6f7%U#KMEOelo4{JfER-xQCO5R zobUp(f=4x}6j_!rx6IQfD%dvN#`dk7@PX^^!g)9S0w2He`?!?&k+0v0OTKgmF8|tX zxc1!F;KMhq$Mx?%9^F*&eXn3!*U-`QV9#0A1SZdt-%IVr_Q%f$_dZ~tpABl8 z135bdR&cZc=@zzcR1BPJx~J@!U5dJCSfL<1!ir2$t0Nd2ZD27^hOyC6j172o?`ml*;~!Y!`u$0Z`i@ut?0d90Se^8Td4qZSoo^N5QMyV;A)2&-CMd*04maX|1vsm~nuBmutIOCtbNg`ZFX*R)9@;RCkPR}v| z>yBgFf^+g_WWBNW1}+nP94%=9%LsGobPV-TxkUfj5!Ge0}|0_~u1#Ws>B)$z_vHxhaEeo5$bg zZ5^!Ke;I!KlMQ&+NiQWsEvDYQ_@vAh&C#hA-ca?PBBJ8D^q82rN)kmF9SU*qyKlhQ zqGf2;hmi83rc~NIlG{dniI(#U2YY=b)(4W*BrA9l(3(nu$e9VL{qCka%{l`1Xzgm1 zn{~)!kAd);>wk@}uKyKo`q8g(`uYF)&vkW3EUrS>wgm}aMv>+`;i+8&YJKdBia>R?#4(ziJ^8*Td{p}mE>Wyphstc~d z5ANS$?-2Y}Fq&EE);CfHyd79wA<;a`D!Bn{&qKCboe&x zsewwzl>@sY*=hn#khRpU7+~IEH6a&ury#+*xhw55m4PWH2O8Gn^;to1tXjrt7hi*u zFZnl|{88d1H?q7Dr(ALaUUA7S_{H5Dam{;9z$I%|BdsmQ&Injk>S58y2)=*kJ#ImQ zx4b~gH!Ef>y00(=bBCb#H<{$S&PaZo2j>CCGe1<}CbHMj0+Z5XADktmbuMbpj}3Nz zpaQ0vE!_JrXXD<_y&W6ZzJvHq!~5303lCp)Ca!$%8vOM|*WpLp3OAp9EDk$pKXkZN zbiDSMOzjC`+?i+&$iH5Q=)Hi=8W(GKpLk`nTMA2h$^-OP+2sb@|MuQO*Wt`)99JODd1!_n1}{TmoC8e&P0&Q5wX@V- zR(wcEAQn;H*!*iLYiC``5Mw)fS!#GaY>Xt_QJo zQ-W7rycQ>Z`Zly14cD5yZUQ@Ng9w~d~ZL7G|Jod!AuSn4q|pvgcW zr~Gs>3NxQ~bo8a8b*M>hEbWl@9<`}I2@vrdk2AtjLZ?GyTf|_cy3X~O&k;Rjyi&%7 ztKN%8cTDm+J%cTsDmv{+Y-j&yt&104cnxm&_D@l&GovfiFH#PLpg!@kA~C{=`j0d$bBoL z7oZ|z->zyg?xRvPi?F#HK{So29Sz*|sWp}g>)h5`+X{vBDX@~2BHILdho?X}S`YET z>wk#djSgz%0%{CsNyM7=1yfqkzUW}9;!KMN_p>G{Soiad*!*Y{Eed??*)PX` z{P-cf;bn(m`N%L@+!AvCh$*m?okShds^ExozJ$f&`=DDLMz=fylq=}*!sXL*9of2} z%E%T2>9rLsQtF zUW#+CxgBf2dpBNr!8K?ybEL!>Z3=JOk+jLHoK`Mxu1)r72lEE!+5D4d=fGWts2$63 zI7r{^>p1L@0P|Lq;}$(&8ifw;@H?mQgO8t#MyrdEH#5Dma_BA`4&5Ae8bJScYA}L9AWchiVI$I z6ej8=3ePyh^+i`Fl4wLUnEn2Uo*>UPi%TB1N4x-DNBnl3{uK)c43Tru&6BWzlC&A+`nVd{-k;f2JjUC=akURrN^^ zVDyd5!gOz8n@1Kc*=n_{%%iL>%qzyXt1aTTh$D{aMEK42-8lWv4#w|4a~c*6RdDt9 zHewND!mc>LA0N0F7oGAvY@%}7JaXHl>DP41blXwKxbgs##d~iiiiykzpEi5Qwt$NP zHYg9K1YIta0jf7J!pa17^hlUir%mCT6vCBKL>?uq%4V~PX4bDZ)mtn(j1?^^0_|CB z-LezE-QGlxYo!dVvz-`+OoaIKsYm0Xt=rIPHs;oK^Rdsd8 zuFfgZE=X*bx2P}R+S0n6{Q9Rx5w>w8Ws21eG$hhuMIO0~-0SXq5F2^wocH4AprdV+ zbZG>gPA<5~TkX!l`B4`5>eUKPzw#E0O)N!Ft|Mh05LX#c^}7Rop(C2gS;&ZckH9B= zIm(*WvBh0lOD*zjFD4W|Y9MIOpwOarCwJn~Q;tS6o<>5I>g#cBAqngi;E^9DxClyk zy+%`EpT*4X&G_g^hoiydgl6J`q)Z0%^;sZ|iV-_s*_EoF!pj51@H_>W_t-^5!jq)l zIH@KcI7hjCi4DD2w^V@>))c@oDxEUKHx*2ttMxiATz4l%#ulSg8$qkS3_)cGagjMe zMY#Y~PCk|2%V6?c^8ia<$&j{yk|4eM2^e5{;9WfKAfzG`MI)Z!FMQfCPXz`XqCgI% z?*h&3C7j79+p?bR~!Gtq|H&EY!0ST(6H8_VwOLkeSnlgioS-oQA}qt+B;g@JzL@;O!O!#kbt5Cu@>3 zS<+fqT3;rZR!J31OzTb&Zea)6D2~r0BDg2lL)Q8e{9r+D5n0lMoig^MPqjNE^@p$~ zA*EpQsO-|sm$$h-H_Mt#5ek~-3H)dAM(BPGo=xN;4yg!flKaQ@u9aDx3+q{^aUN|P z(adDlAp^=S6kt`xZoZ+OJ^D6V+pS@*p;B*!1Qrt*G`%M}58wz5vH-@4Tto(AicN#)*iZ~mu;Cdk z)Xj^Q)v@V!mIvEw^UyT!=aR5T`%b|WCdK#B+?GNKxxj+x`wdk$;^Nm1$4qMH8M-N^ zl0gBIt{&SlPM&0JodR0G5#~Ha{~TDLQlFVosJi|Qj(aSywHJT^&zJ||$;!Qu+1uQK z@iH8ZotBskyO+;?2zG`Ek5i zvg+&nlgn#KZ+$6E?+eZC%}qsz9U5e4ooq9$s&r_58NvK`17FFZmdPtYgbn#DvgT#> z=cX7@Ln)9&hOY2*`>1yDC3zL)J=%Qst5nT^)&7 + + + + + +Agreements + + + +
+

Agreements

+ + +

Beta License: AGPL-3 OCA/contract Translate me on Weblate Try me on Runbot

+

This module allows you to manage agreements, letter of intent and contract content. +The module is meant to be used by the legal team of a company and to allow them +to define sections, clauses and templates with their respective content that can +be dynamic.

+

Based on the template, an agreement can be created and the pdf document generated.

+

The agreement would go through a workflow to finally become a contract with the +customer signature.

+

Table of contents

+ +
+

Configuration

+

To configure this module:

+
    +
  • Go to Agreement > Configuration > Templates
  • +
  • Create a new template with sections and clauses and their respective content
  • +
  • Go to Agreement > Configuration > Stages
  • +
  • Create and reorder stages to match your process
  • +
+
+
+

Usage

+

To use this module:

+
    +
  • Go to Agreement > Agrements
  • +
  • Create a new agreement
  • +
  • Select a template
  • +
  • Follow the process to get the required approval
  • +
  • Send the invitation to the customer to review and sign the agreement
  • +
+
+
+

Known issues / Roadmap

+
    +
  • Split the module to remove the dependencies on sale and account and provide +the same feature in extra modules (agreement_sale, agreement_account, +agreement_purchase)
  • +
+
+
+

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 smashing it by providing a detailed and welcomed +feedback.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Pavlov Media
  • +
  • Open Source Integrators
  • +
+
+ +
+

Other credits

+

The development of this module has been financially supported by:

+
    +
  • Pavlov Media
  • +
  • Open Source Integrators
  • +
+
+
+

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:

+

max3903

+

This module is part of the OCA/contract project on GitHub.

+

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

+
+
+
+ + diff --git a/agreement_legal/views/agreement.xml b/agreement_legal/views/agreement.xml new file mode 100644 index 0000000000..83d229df8e --- /dev/null +++ b/agreement_legal/views/agreement.xml @@ -0,0 +1,368 @@ + + + + + + Agreement List + agreement + + + + + + + + + + + + + + + + Agreement Form + agreement + +
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+ This section (on the left) allows you to add dynamic fields inside the description and special terms. +

    +
  1. Select the agreement field
  2. +
  3. Select the sub-field
  4. +
  5. Enter the default value if the field is empty
  6. +
  7. Copy and paste the placeholder expression in the description or the special terms
  8. +
+

+
+ + +
+ +
+
+ +
+ +
+
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

This section is a place where financial records will show the current performance of this agreement.

+

Perhaps include invoices with total vs costs?

+
+
+ +
+

Reviewed by on .

+

Approved by on .

+
+
+
+ Version: . + | Created By: + | Created On: +
+
+
+ + +
+
+
+
+ + + + Agreement Kanban + agreement + + + + + + +
+
+
+
+ + +
+
+ + oe_kanban_text_red +
+ +
+
+
+ +
+
+ - +
+
+
+ V: +
+
+ user & picture +
+
+
+
+
+ + + + + + + + + Agreement Search + agreement + + + + + + + + + + + + + + + + + + agreement.graph + agreement + + + + + + + + + agreement.pivot + agreement + + + + + + + + + Agreements + agreement + form + graph,pivot + + + + + + Agreements + agreement + [('is_template', '=', False)] + kanban,tree,form + + + + Agreements + agreement + [('is_template', '=', False)] + tree,form + + + + Templates + agreement + [('is_template', '=', True)] + + tree,kanban,form + + + diff --git a/agreement_legal/views/agreement_appendix.xml b/agreement_legal/views/agreement_appendix.xml new file mode 100644 index 0000000000..2d52292843 --- /dev/null +++ b/agreement_legal/views/agreement_appendix.xml @@ -0,0 +1,95 @@ + + + + + + + Agreement Appendix Tree + agreement.appendix + + + + + + + + + + + + + + Agreement Appendix Form + agreement.appendix + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + +

+ This section (on the left) allows you to add dynamic fields inside the content. +

    +
  1. Select the appendix field
  2. +
  3. Select the sub-field
  4. +
  5. Enter the default value if the field is empty
  6. +
  7. Copy and paste the placeholder expression in the content
  8. +
+

+
+
+
+
+
+ + + + Agreement Appendix Search + agreement.appendix + + + + + + + + + + Appendices + agreement.appendix + tree,form + + +
diff --git a/agreement_legal/views/agreement_clause.xml b/agreement_legal/views/agreement_clause.xml new file mode 100644 index 0000000000..276947e764 --- /dev/null +++ b/agreement_legal/views/agreement_clause.xml @@ -0,0 +1,97 @@ + + + + + + Agreement Clause List + agreement.clause + + + + + + + + + + + + + + + Agreement clause Form + agreement.clause + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + + +

+ This section (on the left) allows you to add dynamic fields inside the content. +

    +
  1. Select the clause field
  2. +
  3. Select the sub-field
  4. +
  5. Enter the default value if the field is empty
  6. +
  7. Copy and paste the placeholder expression in the content
  8. +
+

+
+
+
+
+
+ + + + Agreement Clause Search + agreement.clause + + + + + + + + + + + Clauses + agreement.clause + tree,form + + +
diff --git a/agreement_legal/views/agreement_increasetype.xml b/agreement_legal/views/agreement_increasetype.xml new file mode 100644 index 0000000000..8ec1504d57 --- /dev/null +++ b/agreement_legal/views/agreement_increasetype.xml @@ -0,0 +1,45 @@ + + + + + + Agreement Increase Type List + agreement.increasetype + + + + + + + + + + + + Agreement Increase Type Form + agreement.increasetype + +
+ + + + + + + + + + + +
+
+
+ + + + Agreement Increase Type + agreement.increasetype + tree,form + + +
diff --git a/agreement_legal/views/agreement_recital.xml b/agreement_legal/views/agreement_recital.xml new file mode 100644 index 0000000000..008d63a32c --- /dev/null +++ b/agreement_legal/views/agreement_recital.xml @@ -0,0 +1,94 @@ + + + + + + Agreement Recital Tree + agreement.recital + + + + + + + + + + + + + + Agreement Recital Form + agreement.recital + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + +

+ This section (on the left) allows you to add dynamic fields inside the content. +

    +
  1. Select the recital field
  2. +
  3. Select the sub-field
  4. +
  5. Enter the default value if the field is empty
  6. +
  7. Copy and paste the placeholder expression in the content
  8. +
+

+
+
+
+
+
+ + + + Agreement Recital Search + agreement.recital + + + + + + + + + + Recitals + agreement.recital + tree,form + + +
diff --git a/agreement_legal/views/agreement_renewaltype.xml b/agreement_legal/views/agreement_renewaltype.xml new file mode 100644 index 0000000000..9dde1fe806 --- /dev/null +++ b/agreement_legal/views/agreement_renewaltype.xml @@ -0,0 +1,41 @@ + + + + + + Agreement Renewal Type List + agreement.renewaltype + + + + + + + + + + + Agreement Renewal Type Form + agreement.renewaltype + +
+ + + + + + + + +
+
+
+ + + + Agreement Renewal Type + agreement.renewaltype + tree,form + + +
diff --git a/agreement_legal/views/agreement_section.xml b/agreement_legal/views/agreement_section.xml new file mode 100644 index 0000000000..517197ae05 --- /dev/null +++ b/agreement_legal/views/agreement_section.xml @@ -0,0 +1,109 @@ + + + + + + Agreement Section List + agreement.section + + + + + + + + + + + + + + Agreement Section Form + agreement.section + +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + +

+ This section (on the left) allows you to add dynamic fields inside the content. +

    +
  1. Select the section field
  2. +
  3. Select the sub-field
  4. +
  5. Enter the default value if the field is empty
  6. +
  7. Copy and paste the placeholder expression in the content
  8. +
+

+
+
+ + + + + + + + + +
+
+
+
+
+ + + + Agreement Section Search + agreement.section + + + + + + + + + + Agreement Sections + agreement.section + tree,form + + +
diff --git a/agreement_legal/views/agreement_stages.xml b/agreement_legal/views/agreement_stages.xml new file mode 100644 index 0000000000..fdb413800b --- /dev/null +++ b/agreement_legal/views/agreement_stages.xml @@ -0,0 +1,43 @@ + + + + + + Agreement Stage List + agreement.stage + + + + + + + + + + + Agreement Stage Form + agreement.stage + +
+ +
+
+ + + + +
+
+
+
+ + + + Agreement Stage + agreement.stage + tree,form + + +
diff --git a/agreement_legal/views/agreement_subtype.xml b/agreement_legal/views/agreement_subtype.xml new file mode 100644 index 0000000000..a22063eb44 --- /dev/null +++ b/agreement_legal/views/agreement_subtype.xml @@ -0,0 +1,45 @@ + + + + + + Agreement Subtype List + agreement.subtype + + + + + + + + + + + Agreement Sub Type Form + agreement.subtype + +
+ +
+
+ + + + + + +
+
+
+
+ + + + Agreement Sub-Types + agreement.subtype + tree,form + + +
diff --git a/agreement_legal/views/agreement_type.xml b/agreement_legal/views/agreement_type.xml new file mode 100644 index 0000000000..1d86cab569 --- /dev/null +++ b/agreement_legal/views/agreement_type.xml @@ -0,0 +1,45 @@ + + + + + + Agreement Type List + agreement.type + + + + + + + + + + + Agreement Type Form + agreement.type + +
+ +
+
+ + + + + +
+
+
+
+ + + + Agreement Types + agreement.type + tree,form + + +
diff --git a/agreement_legal/views/menu.xml b/agreement_legal/views/menu.xml new file mode 100644 index 0000000000..7bf1631891 --- /dev/null +++ b/agreement_legal/views/menu.xml @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/agreement_legal/views/res_config_settings.xml b/agreement_legal/views/res_config_settings.xml new file mode 100644 index 0000000000..0d58c3d7a3 --- /dev/null +++ b/agreement_legal/views/res_config_settings.xml @@ -0,0 +1,161 @@ + + + + + res.config.settings.view.form.agreement + res.config.settings + + + + +
+

Operations

+
+
+
+ +
+
+
+
+
+

Advanced Features

+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+ + + +
diff --git a/agreement_legal/views/res_partner.xml b/agreement_legal/views/res_partner.xml new file mode 100644 index 0000000000..6b37099aa9 --- /dev/null +++ b/agreement_legal/views/res_partner.xml @@ -0,0 +1,17 @@ + + + + + res.partner + + + + + + + + + + + + From 2efe22ccf07612e1d4cdb8e34950dc1ba99a39c6 Mon Sep 17 00:00:00 2001 From: Yves Goldberg Date: Tue, 2 Apr 2019 10:59:30 +0200 Subject: [PATCH 02/62] [FIX] agreement_legal: remove account dependency [FIX] ooops [UPD] README.rst --- agreement_legal/README.rst | 30 ++++--- agreement_legal/__manifest__.py | 2 +- agreement_legal/models/agreement.py | 88 ++++++------------- agreement_legal/models/agreement_recital.py | 33 ++++--- agreement_legal/models/agreement_section.py | 34 +++---- agreement_legal/static/description/index.html | 21 +++-- agreement_legal/views/agreement.xml | 6 -- 7 files changed, 93 insertions(+), 121 deletions(-) diff --git a/agreement_legal/README.rst b/agreement_legal/README.rst index 8a2f630795..430176782b 100644 --- a/agreement_legal/README.rst +++ b/agreement_legal/README.rst @@ -1,6 +1,6 @@ -========== -Agreements -========== +================ +Agreements Legal +================ .. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! @@ -14,16 +14,16 @@ Agreements :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fcontract-lightgray.png?logo=github - :target: https://github.com/OCA/contract/tree/11.0/agreement + :target: https://github.com/OCA/contract/tree/12.0/agreement_legal :alt: OCA/contract .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/contract-11-0/contract-11-0-agreement + :target: https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-agreement_legal :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/110/11.0 + :target: https://runbot.odoo-community.org/runbot/110/12.0 :alt: Try me on Runbot -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module allows you to manage agreements, letter of intent and contract content. The module is meant to be used by the legal team of a company and to allow them @@ -55,7 +55,7 @@ Usage To use this module: -* Go to Agreement > Agrements +* Go to Agreement > Agreements * Create a new agreement * Select a template * Follow the process to get the required approval @@ -74,7 +74,7 @@ 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 smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -86,6 +86,7 @@ Authors * Pavlov Media * Open Source Integrators +* Yves Goldberg (Ygol Internetwork) Contributors ~~~~~~~~~~~~ @@ -95,6 +96,7 @@ Contributors * Wolfgang Hall * Maxime Chambreuil * Sandip Mangukiya +* Yves Goldberg Other credits ~~~~~~~~~~~~~ @@ -103,6 +105,7 @@ The development of this module has been financially supported by: * Pavlov Media * Open Source Integrators +* Yves Goldberg Maintainers ~~~~~~~~~~~ @@ -120,11 +123,14 @@ promote its widespread use. .. |maintainer-max3903| image:: https://github.com/max3903.png?size=40px :target: https://github.com/max3903 :alt: max3903 +.. |maintainer-ygol| image:: https://github.com/ygol.png?size=40px + :target: https://github.com/ygol + :alt: ygol -Current `maintainer `__: +Current `maintainers `__: -|maintainer-max3903| +|maintainer-max3903| |maintainer-ygol| -This module is part of the `OCA/contract `_ project on GitHub. +This module is part of the `OCA/contract `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/agreement_legal/__manifest__.py b/agreement_legal/__manifest__.py index 543d9b9aac..d519218a23 100644 --- a/agreement_legal/__manifest__.py +++ b/agreement_legal/__manifest__.py @@ -12,7 +12,7 @@ "category": "Partner", "license": "AGPL-3", "version": "12.0.1.0.0", - "depends": ["contacts", "agreement", "mail", "product"], + "depends": ["contacts", "agreement", "product"], "data": [ "data/ir_sequence.xml", "data/module_category.xml", diff --git a/agreement_legal/models/agreement.py b/agreement_legal/models/agreement.py index 1046d6f03b..4539024e2c 100644 --- a/agreement_legal/models/agreement.py +++ b/agreement_legal/models/agreement.py @@ -50,7 +50,7 @@ def _default_stage_id(self): end_date = fields.Date( string="End Date", track_visibility="onchange", - help="When the agreement ends." + help="When the agreement ends.", ) color = fields.Integer() active = fields.Boolean( @@ -121,24 +121,18 @@ def _default_stage_id(self): help="Date that the contract was terminated.", ) reviewed_date = fields.Date( - string="Reviewed Date", - track_visibility="onchange") + string="Reviewed Date", track_visibility="onchange" + ) reviewed_user_id = fields.Many2one( - "res.users", - string="Reviewed By", - track_visibility="onchange" + "res.users", string="Reviewed By", track_visibility="onchange" ) approved_date = fields.Date( - string="Approved Date", - track_visibility="onchange") + string="Approved Date", track_visibility="onchange" + ) approved_user_id = fields.Many2one( - "res.users", - string="Approved By", - track_visibility="onchange" + "res.users", string="Approved By", track_visibility="onchange" ) - currency_id = fields.Many2one( - "res.currency", - string="Currency") + currency_id = fields.Many2one("res.currency", string="Currency") partner_id = fields.Many2one( "res.partner", string="Partner", @@ -158,12 +152,10 @@ def _default_stage_id(self): help="The primary partner contact (If Applicable).", ) partner_contact_phone = fields.Char( - related="partner_contact_id.phone", - string="Phone" + related="partner_contact_id.phone", string="Phone" ) partner_contact_email = fields.Char( - related="partner_contact_id.email", - string="Email" + related="partner_contact_id.email", string="Email" ) company_contact_id = fields.Many2one( "res.partner", @@ -172,12 +164,10 @@ def _default_stage_id(self): help="The primary contact in the company.", ) company_contact_phone = fields.Char( - related="company_contact_id.phone", - string="Phone" + related="company_contact_id.phone", string="Phone" ) company_contact_email = fields.Char( - related="company_contact_id.email", - string="Email" + related="company_contact_id.email", string="Email" ) agreement_type_id = fields.Many2one( "agreement.type", @@ -193,13 +183,7 @@ def _default_stage_id(self): "agreement types.", ) product_ids = fields.Many2many( - "product.template", - string="Products & Services") - payment_term_id = fields.Many2one( - "account.payment.term", - string="Payment Term", - track_visibility="onchange", - help="Terms of payments.", + "product.template", string="Products & Services" ) assigned_user_id = fields.Many2one( "res.users", @@ -234,28 +218,16 @@ def _default_stage_id(self): help="Describes what happens after the contract expires.", ) recital_ids = fields.One2many( - "agreement.recital", - "agreement_id", - string="Recitals", - copy=True + "agreement.recital", "agreement_id", string="Recitals", copy=True ) sections_ids = fields.One2many( - "agreement.section", - "agreement_id", - string="Sections", - copy=True + "agreement.section", "agreement_id", string="Sections", copy=True ) clauses_ids = fields.One2many( - "agreement.clause", - "agreement_id", - string="Clauses", - copy=True + "agreement.clause", "agreement_id", string="Clauses", copy=True ) appendix_ids = fields.One2many( - "agreement.appendix", - "agreement_id", - string="Appendices", - copy=True + "agreement.appendix", "agreement_id", string="Appendices", copy=True ) previous_version_agreements_ids = fields.One2many( "agreement", @@ -275,12 +247,10 @@ def _default_stage_id(self): "agreement.line", "agreement_id", string="Products/Services", - copy=False + copy=False, ) state = fields.Selection( - [("draft", "Draft"), - ("active", "Active"), - ("inactive", "Inactive")], + [("draft", "Draft"), ("active", "Active"), ("inactive", "Inactive")], default="draft", track_visibility="always", ) @@ -292,8 +262,8 @@ def _default_stage_id(self): ) signed_contract_filename = fields.Char(string="Filename") signed_contract = fields.Binary( - string="Signed Document", - track_visibility="always") + string="Signed Document", track_visibility="always" + ) field_id = fields.Many2one( "ir.model.fields", string="Field", @@ -331,7 +301,8 @@ def _compute_dynamic_description(self): for agreement in self: lang = agreement.partner_id.lang or "en_US" description = MailTemplates.with_context( - lang=lang)._render_template( + lang=lang + )._render_template( agreement.description, "agreement", agreement.id ) agreement.dynamic_description = description @@ -342,7 +313,8 @@ def _compute_dynamic_special_terms(self): for agreement in self: lang = agreement.partner_id.lang or "en_US" special_terms = MailTemplates.with_context( - lang=lang)._render_template( + lang=lang + )._render_template( agreement.special_terms, "agreement", agreement.id ) agreement.dynamic_special_terms = special_terms @@ -354,8 +326,7 @@ def onchange_copyvalue(self): self.sub_object_id = False if self.field_id and not self.field_id.relation: self.copyvalue = "${{object.{} or {}}}".format( - self.field_id.name, - self.default_value or "''", + self.field_id.name, self.default_value or "''" ) self.sub_model_object_field_id = False if self.field_id and self.field_id.relation: @@ -425,10 +396,9 @@ def create_new_agreement(self): @api.model def create(self, vals): if vals.get("reference", _("New")) == _("New"): - vals["reference"] = self.env[ - "ir.sequence"].next_by_code("agreement") or _( - "New" - ) + vals["reference"] = self.env["ir.sequence"].next_by_code( + "agreement" + ) or _("New") return super(Agreement, self).create(vals) # Increments the revision on each save action diff --git a/agreement_legal/models/agreement_recital.py b/agreement_legal/models/agreement_recital.py index ec65c29e4d..15b0451704 100644 --- a/agreement_legal/models/agreement_recital.py +++ b/agreement_legal/models/agreement_recital.py @@ -12,11 +12,9 @@ class AgreementRecital(models.Model): name = fields.Char(string="Name", required=True) title = fields.Char( string="Title", - help="The title is displayed on the PDF." "The name is not." + help="The title is displayed on the PDF." "The name is not.", ) - sequence = fields.Integer( - string="Sequence", - default=10) + sequence = fields.Integer(string="Sequence", default=10) content = fields.Html(string="Content") dynamic_content = fields.Html( compute="_compute_dynamic_content", @@ -24,9 +22,8 @@ class AgreementRecital(models.Model): help="compute dynamic Content", ) agreement_id = fields.Many2one( - "agreement", - string="Agreement", - ondelete="cascade") + "agreement", string="Agreement", ondelete="cascade" + ) active = fields.Boolean( string="Active", default=True, @@ -65,24 +62,26 @@ class AgreementRecital(models.Model): template field.""", ) - @api.onchange('field_id', 'sub_model_object_field_id', 'default_value') + @api.onchange("field_id", "sub_model_object_field_id", "default_value") def onchange_copyvalue(self): self.sub_object_id = False self.copyvalue = False self.sub_object_id = False if self.field_id and not self.field_id.relation: - self.copyvalue = "${object.%s or %s}" % \ - (self.field_id.name, - self.default_value or '\'\'') + self.copyvalue = "${{object.{} or {}}}".format( + self.field_id.name, self.default_value or "''" + ) self.sub_model_object_field_id = False if self.field_id and self.field_id.relation: - self.sub_object_id = self.env['ir.model'].search( - [('model', '=', self.field_id.relation)])[0] + self.sub_object_id = self.env["ir.model"].search( + [("model", "=", self.field_id.relation)] + )[0] if self.sub_model_object_field_id: - self.copyvalue = "${object.%s.%s or %s}" %\ - (self.field_id.name, - self.sub_model_object_field_id.name, - self.default_value or '\'\'') + self.copyvalue = "${{object.{}.{} or {}}}".format( + self.field_id.name, + self.sub_model_object_field_id.name, + self.default_value or "''", + ) # compute the dynamic content for mako expression @api.multi diff --git a/agreement_legal/models/agreement_section.py b/agreement_legal/models/agreement_section.py index f278aae8ce..2fe67ea9bc 100644 --- a/agreement_legal/models/agreement_section.py +++ b/agreement_legal/models/agreement_section.py @@ -12,17 +12,15 @@ class AgreementSection(models.Model): name = fields.Char(string="Name", required=True) title = fields.Char( string="Title", - help="The title is displayed on the PDF." "The name is not." + help="The title is displayed on the PDF." "The name is not.", ) sequence = fields.Integer(string="Sequence") agreement_id = fields.Many2one( - "agreement", - string="Agreement", - ondelete="cascade") + "agreement", string="Agreement", ondelete="cascade" + ) clauses_ids = fields.One2many( - "agreement.clause", - "section_id", - string="Clauses") + "agreement.clause", "section_id", string="Clauses" + ) content = fields.Html(string="Section Content") dynamic_content = fields.Html( compute="_compute_dynamic_content", @@ -67,24 +65,26 @@ class AgreementSection(models.Model): template field.""", ) - @api.onchange('field_id', 'sub_model_object_field_id', 'default_value') + @api.onchange("field_id", "sub_model_object_field_id", "default_value") def onchange_copyvalue(self): self.sub_object_id = False self.copyvalue = False self.sub_object_id = False if self.field_id and not self.field_id.relation: - self.copyvalue = "${object.%s or %s}" % \ - (self.field_id.name, - self.default_value or '\'\'') + self.copyvalue = "${{object.{} or {}}}".format( + self.field_id.name, self.default_value or "''" + ) self.sub_model_object_field_id = False if self.field_id and self.field_id.relation: - self.sub_object_id = self.env['ir.model'].search( - [('model', '=', self.field_id.relation)])[0] + self.sub_object_id = self.env["ir.model"].search( + [("model", "=", self.field_id.relation)] + )[0] if self.sub_model_object_field_id: - self.copyvalue = "${object.%s.%s or %s}" %\ - (self.field_id.name, - self.sub_model_object_field_id.name, - self.default_value or '\'\'') + self.copyvalue = "${{object.{}.{} or {}}}".format( + self.field_id.name, + self.sub_model_object_field_id.name, + self.default_value or "''", + ) # compute the dynamic content for mako expression @api.multi diff --git a/agreement_legal/static/description/index.html b/agreement_legal/static/description/index.html index 7eb87fb0cf..f11b088120 100644 --- a/agreement_legal/static/description/index.html +++ b/agreement_legal/static/description/index.html @@ -4,7 +4,7 @@ -Agreements +Agreements Legal -
-

Agreements

+
@@ -435,6 +435,7 @@

Authors

  • Pavlov Media
  • Open Source Integrators
  • +
  • Yves Goldberg (Ygol Internetwork)
@@ -445,6 +446,7 @@

Contributors

  • Wolfgang Hall <whall@opensourceintegrators.com>
  • Maxime Chambreuil <mchambreuil@opensourceintegrators.com>
  • Sandip Mangukiya <smangukiya@opensourceintegrators.com>
  • +
  • Yves Goldberg <yves@ygol.com>
  • @@ -453,6 +455,7 @@

    Other credits

    • Pavlov Media
    • Open Source Integrators
    • +
    • Yves Goldberg
    @@ -462,9 +465,9 @@

    Maintainers

    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:

    -

    max3903

    -

    This module is part of the OCA/contract project on GitHub.

    +

    Current maintainers:

    +

    max3903 ygol

    +

    This module is part of the OCA/contract project on GitHub.

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

    diff --git a/agreement_legal/views/agreement.xml b/agreement_legal/views/agreement.xml index 83d229df8e..868308484f 100644 --- a/agreement_legal/views/agreement.xml +++ b/agreement_legal/views/agreement.xml @@ -130,12 +130,6 @@ - - - - - - Date: Tue, 2 Apr 2019 17:12:33 +0200 Subject: [PATCH 03/62] [FIX] handling code field + partner_id [UPD] Update agreement_legal.pot --- agreement_legal/i18n/agreement_legal.pot | 282 +---------------------- agreement_legal/models/agreement.py | 10 + 2 files changed, 18 insertions(+), 274 deletions(-) diff --git a/agreement_legal/i18n/agreement_legal.pot b/agreement_legal/i18n/agreement_legal.pot index 9b03a8d670..83d5dfd3d4 100644 --- a/agreement_legal/i18n/agreement_legal.pot +++ b/agreement_legal/i18n/agreement_legal.pot @@ -6,8 +6,6 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-03-24 16:53+0000\n" -"PO-Revision-Date: 2019-03-24 16:53+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -15,11 +13,6 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_needaction -msgid "Action Needed" -msgstr "" - #. module: agreement_legal #: selection:agreement,state:0 #: model:ir.model.fields,field_description:agreement_legal.field_agreement__active @@ -27,7 +20,6 @@ msgstr "" #: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__active #: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__active #: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__active -#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__active msgid "Active" msgstr "" @@ -42,13 +34,12 @@ msgid "Advanced Features" msgstr "" #. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_account_analytic_line__agreement_id +#: model:ir.model,name:agreement_legal.model_agreement #: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__agreement_id #: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__agreement_id #: model:ir.model.fields,field_description:agreement_legal.field_agreement_line__agreement_id #: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__agreement_id #: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__agreement_id -#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__agreement_id #: model:ir.module.category,name:agreement_legal.agreement #: model:ir.module.category,name:agreement_legal.module_agreement_legal_category #: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document @@ -72,6 +63,7 @@ msgstr "" #. module: agreement_legal #: model:ir.actions.act_window,name:agreement_legal.partner_agreement_action_increasetype +#: model:ir.model,name:agreement_legal.model_agreement_increasetype msgid "Agreement Increase Type" msgstr "" @@ -92,6 +84,7 @@ msgstr "" #. module: agreement_legal #: model:ir.actions.act_window,name:agreement_legal.partner_agreement_action_renewaltype +#: model:ir.model,name:agreement_legal.model_agreement_renewaltype msgid "Agreement Renewal Type" msgstr "" @@ -111,11 +104,6 @@ msgstr "" msgid "Agreement Sections" msgstr "" -#. module: agreement_legal -#: model:ir.model,name:agreement_legal.model_agreement_serviceprofile -msgid "Agreement Service Profiles" -msgstr "" - #. module: agreement_legal #: model:ir.actions.act_window,name:agreement_legal.partner_agreement_action_stage msgid "Agreement Stage" @@ -161,10 +149,11 @@ msgstr "" #: model:ir.actions.act_window,name:agreement_legal.action_agreement_report_order #: model:ir.actions.act_window,name:agreement_legal.agreement_dashboard_agreement #: model:ir.actions.act_window,name:agreement_legal.agreement_operations_agreement +#: model:ir.model.fields,field_description:agreement_legal.field_product_product__agreements_ids #: model:ir.model.fields,field_description:agreement_legal.field_product_template__agreements_ids #: model:ir.model.fields,field_description:agreement_legal.field_res_partner__agreement_ids +#: model:ir.model.fields,field_description:agreement_legal.field_res_users__agreement_ids #: model:ir.ui.menu,name:agreement_legal.agreement_agreement_reporting -#: model:ir.ui.menu,name:agreement_legal.agreement_root #: model:ir.ui.menu,name:agreement_legal.dashboard_agreements #: model:ir.ui.menu,name:agreement_legal.operations_agreements #: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_graph_view @@ -192,16 +181,6 @@ msgstr "" msgid "Agreements Type Form" msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__analytic_id -msgid "Analytic Account" -msgstr "" - -#. module: agreement_legal -#: model:ir.model,name:agreement_legal.model_account_analytic_line -msgid "Analytic Line" -msgstr "" - #. module: agreement_legal #: model:ir.model.fields,help:agreement_legal.field_agreement__special_terms msgid "Any terms that you have agreed to and want to track on the agreement/contract." @@ -246,11 +225,6 @@ msgstr "" msgid "Assigned To" msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_attachment_count -msgid "Attachment Count" -msgstr "" - #. module: agreement_legal #: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document msgid "By:" @@ -311,16 +285,6 @@ msgstr "" msgid "Company Information" msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__total_company_mrc -msgid "Company MRC" -msgstr "" - -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__total_company_nrc -msgid "Company NRC" -msgstr "" - #. module: agreement_legal #: model:ir.model.fields,help:agreement_legal.field_agreement__dynamic_description msgid "Compute dynamic description" @@ -373,11 +337,6 @@ msgstr "" msgid "Contract Document Preview" msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__contract_value -msgid "Contract Value" -msgstr "" - #. module: agreement_legal #: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_appendix_form #: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_recital_form @@ -402,7 +361,6 @@ msgid "Create an agreement when the sales order is confirmed" msgstr "" #. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__create_uid #: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__create_uid #: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__create_uid #: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__create_uid @@ -410,7 +368,6 @@ msgstr "" #: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__create_uid #: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__create_uid #: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__create_uid -#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__create_uid #: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__create_uid #: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__create_uid #: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__create_uid @@ -418,7 +375,6 @@ msgid "Created by" msgstr "" #. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__create_date #: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__create_date #: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__create_date #: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__create_date @@ -426,7 +382,6 @@ msgstr "" #: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__create_date #: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__create_date #: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__create_date -#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__create_date #: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__create_date #: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__create_date #: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__create_date @@ -438,16 +393,6 @@ msgstr "" msgid "Currency" msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__total_customer_mrc -msgid "Customer MRC" -msgstr "" - -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__total_customer_nrc -msgid "Customer NRC" -msgstr "" - #. module: agreement_legal #: model:ir.ui.menu,name:agreement_legal.agreement_dashboard msgid "Dashboard" @@ -516,7 +461,6 @@ msgid "Description of the renewal type." msgstr "" #. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__display_name #: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__display_name #: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__display_name #: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__display_name @@ -524,7 +468,6 @@ msgstr "" #: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__display_name #: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__display_name #: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__display_name -#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__display_name #: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__display_name #: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__display_name #: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__display_name @@ -613,26 +556,6 @@ msgid "Final placeholder expression, to be copy-pasted in the desired\n" " template field." msgstr "" -#. module: agreement_legal -#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view -msgid "Financials" -msgstr "" - -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_follower_ids -msgid "Followers" -msgstr "" - -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_channel_ids -msgid "Followers (Channels)" -msgstr "" - -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_partner_ids -msgid "Followers (Partners)" -msgstr "" - #. module: agreement_legal #: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view msgid "General" @@ -644,7 +567,6 @@ msgid "Helpdesk" msgstr "" #. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__id #: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__id #: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__id #: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__id @@ -652,7 +574,6 @@ msgstr "" #: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__id #: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__id #: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__id -#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__id #: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__id #: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__id #: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__id @@ -664,21 +585,6 @@ msgstr "" msgid "ID used for internal contract tracking." msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,help:agreement_legal.field_agreement__message_unread -msgid "If checked new messages require your attention." -msgstr "" - -#. module: agreement_legal -#: model:ir.model.fields,help:agreement_legal.field_agreement__message_needaction -msgid "If checked, new messages require your attention." -msgstr "" - -#. module: agreement_legal -#: model:ir.model.fields,help:agreement_legal.field_agreement__message_has_error -msgid "If checked, some messages have a delivery error." -msgstr "" - #. module: agreement_legal #: model:ir.model.fields,help:agreement_legal.field_agreement_section__active msgid "If unchecked, it will allow you to hide the\n" @@ -701,11 +607,6 @@ msgstr "" msgid "If unchecked, it will allow you to hide this recital without removing it." msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,help:agreement_legal.field_agreement_serviceprofile__active -msgid "If unchecked, it will allow you to hide this service profile without removing it." -msgstr "" - #. module: agreement_legal #: selection:agreement,state:0 msgid "Inactive" @@ -741,18 +642,12 @@ msgstr "" msgid "Is Folded" msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_is_follower -msgid "Is Follower" -msgstr "" - #. module: agreement_legal #: model:ir.model.fields,field_description:agreement_legal.field_agreement__is_template msgid "Is a Template?" msgstr "" #. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement____last_update #: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix____last_update #: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause____last_update #: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype____last_update @@ -760,7 +655,6 @@ msgstr "" #: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital____last_update #: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype____last_update #: model:ir.model.fields,field_description:agreement_legal.field_agreement_section____last_update -#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile____last_update #: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage____last_update #: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype____last_update #: model:ir.model.fields,field_description:agreement_legal.field_agreement_type____last_update @@ -768,7 +662,6 @@ msgid "Last Modified on" msgstr "" #. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__write_uid #: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__write_uid #: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__write_uid #: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__write_uid @@ -776,7 +669,6 @@ msgstr "" #: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__write_uid #: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__write_uid #: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__write_uid -#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__write_uid #: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__write_uid #: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__write_uid #: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__write_uid @@ -784,7 +676,6 @@ msgid "Last Updated by" msgstr "" #. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__write_date #: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__write_date #: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__write_date #: model:ir.model.fields,field_description:agreement_legal.field_agreement_increasetype__write_date @@ -792,7 +683,6 @@ msgstr "" #: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__write_date #: model:ir.model.fields,field_description:agreement_legal.field_agreement_renewaltype__write_date #: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__write_date -#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__write_date #: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__write_date #: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__write_date #: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__write_date @@ -884,11 +774,6 @@ msgstr "" msgid "Link your transfers to an agreement" msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_main_attachment_id -msgid "Main Attachment" -msgstr "" - #. module: agreement_legal #: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form msgid "Maintenance" @@ -924,22 +809,11 @@ msgstr "" msgid "Master Data" msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_has_error -msgid "Message Delivery error" -msgstr "" - -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_ids -msgid "Messages" -msgstr "" - #. module: agreement_legal #: model:ir.model.fields,field_description:agreement_legal.field_agreement_appendix__name #: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__name #: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__name #: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__name -#: model:ir.model.fields,field_description:agreement_legal.field_agreement_serviceprofile__name #: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__name #: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__name msgid "Name" @@ -951,9 +825,9 @@ msgid "Name:" msgstr "" #. module: agreement_legal -#: code:addons/agreement_legal/models/agreement.py:108 -#: code:addons/agreement_legal/models/agreement.py:444 -#: code:addons/agreement_legal/models/agreement.py:445 +#: code:addons/agreement_legal/models/agreement.py:103 +#: code:addons/agreement_legal/models/agreement.py:398 +#: code:addons/agreement_legal/models/agreement.py:401 #, python-format msgid "New" msgstr "" @@ -978,11 +852,6 @@ msgstr "" msgid "Notification Address" msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_needaction_counter -msgid "Number of Actions" -msgstr "" - #. module: agreement_legal #: model:ir.model.fields,help:agreement_legal.field_agreement__expiration_notice msgid "Number of Days before expiration to be notified." @@ -993,31 +862,11 @@ msgstr "" msgid "Number of Days to be notified before changes." msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_has_error_counter -msgid "Number of error" -msgstr "" - -#. module: agreement_legal -#: model:ir.model.fields,help:agreement_legal.field_agreement__message_needaction_counter -msgid "Number of messages which requires an action" -msgstr "" - -#. module: agreement_legal -#: model:ir.model.fields,help:agreement_legal.field_agreement__message_has_error_counter -msgid "Number of messages with delivery error" -msgstr "" - #. module: agreement_legal #: model:ir.model.fields,help:agreement_legal.field_agreement__term msgid "Number of months this agreement/contract is in effect with the partner." msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,help:agreement_legal.field_agreement__message_unread_counter -msgid "Number of unread messages" -msgstr "" - #. module: agreement_legal #: model:ir.ui.menu,name:agreement_legal.agreement_operations #: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form @@ -1066,16 +915,6 @@ msgstr "" msgid "Partners" msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__payment_term_id -msgid "Payment Term" -msgstr "" - -#. module: agreement_legal -#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view -msgid "Payment Terms" -msgstr "" - #. module: agreement_legal #: model:ir.model.fields,help:agreement_legal.field_agreement_increasetype__increase_percent msgid "Percentage that the amount will increase." @@ -1222,12 +1061,6 @@ msgstr "" msgid "Returns" msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__analytic_line_ids -#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view -msgid "Revenues and Costs" -msgstr "" - #. module: agreement_legal #: model:ir.model.fields,field_description:agreement_legal.field_agreement__reviewed_user_id msgid "Reviewed By" @@ -1263,11 +1096,6 @@ msgstr "" msgid "Sales" msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__sale_order_id -msgid "Sales Order" -msgstr "" - #. module: agreement_legal #: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__section_id #: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_form_view @@ -1298,11 +1126,6 @@ msgid "Select target field from the related document model. If it is a\n" " destination of the relationship." msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,help:agreement_legal.field_agreement__sale_order_id -msgid "Select the Sales Order that this agreement is related to." -msgstr "" - #. module: agreement_legal #: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view msgid "Select the agreement field" @@ -1371,30 +1194,6 @@ msgstr "" msgid "Sequence" msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__order_lines_services_ids -msgid "Service Order Lines" -msgstr "" - -#. module: agreement_legal -#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_serviceprofile_form -msgid "Service Profile" -msgstr "" - -#. module: agreement_legal -#: model:ir.actions.act_window,name:agreement_legal.agreement_serviceprofile_action -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__serviceprofile_ids -#: model:ir.ui.menu,name:agreement_legal.agreement_serviceprofiles -#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_serviceprofile_tree -#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view -msgid "Service Profiles" -msgstr "" - -#. module: agreement_legal -#: model_terms:ir.ui.view,arch_db:agreement_legal.order_lines_search_view -msgid "Service Type" -msgstr "" - #. module: agreement_legal #: model:ir.actions.act_window,name:agreement_legal.action_agreement_config #: model:ir.ui.menu,name:agreement_legal.agreement_settings @@ -1529,11 +1328,6 @@ msgstr "" msgid "Termination Requested Date" msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,help:agreement_legal.field_agreement__payment_term_id -msgid "Terms of payments." -msgstr "" - #. module: agreement_legal #: model:ir.model.fields,help:agreement_legal.field_agreement__notification_address_id msgid "The address to send notificaitons to, if different from customer address.(Address Type = Other)" @@ -1621,31 +1415,6 @@ msgstr "" msgid "Title:" msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,help:agreement_legal.field_agreement__total_company_mrc -msgid "Total company monthly recurring costs." -msgstr "" - -#. module: agreement_legal -#: model:ir.model.fields,help:agreement_legal.field_agreement__total_company_nrc -msgid "Total company non-recurring costs." -msgstr "" - -#. module: agreement_legal -#: model:ir.model.fields,help:agreement_legal.field_agreement__total_customer_mrc -msgid "Total custemer monthly recurring costs." -msgstr "" - -#. module: agreement_legal -#: model:ir.model.fields,help:agreement_legal.field_agreement__total_customer_nrc -msgid "Total custemer non-monthly recurring costs." -msgstr "" - -#. module: agreement_legal -#: model:ir.model.fields,help:agreement_legal.field_agreement__contract_value -msgid "Total value of the contract over ther entire term." -msgstr "" - #. module: agreement_legal #: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_type_list_view msgid "Type Name" @@ -1666,16 +1435,6 @@ msgstr "" msgid "Units Of Measure" msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_unread -msgid "Unread Messages" -msgstr "" - -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_unread_counter -msgid "Unread Messages Counter" -msgstr "" - #. module: agreement_legal #: model:res.groups,name:agreement_legal.group_agreement_user msgid "User" @@ -1691,16 +1450,6 @@ msgstr "" msgid "Version:" msgstr "" -#. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__website_message_ids -msgid "Website Messages" -msgstr "" - -#. module: agreement_legal -#: model:ir.model.fields,help:agreement_legal.field_agreement__website_message_ids -msgid "Website communication history" -msgstr "" - #. module: agreement_legal #: model:ir.model.fields,help:agreement_legal.field_agreement__sub_model_object_field_id #: model:ir.model.fields,help:agreement_legal.field_agreement_appendix__sub_model_object_field_id @@ -1732,21 +1481,6 @@ msgstr "" msgid "When the agreement starts." msgstr "" -#. module: agreement_legal -#: model:ir.model,name:agreement_legal.model_agreement -msgid "agreement" -msgstr "" - -#. module: agreement_legal -#: model:ir.model,name:agreement_legal.model_agreement_increasetype -msgid "agreement.increasetype" -msgstr "" - -#. module: agreement_legal -#: model:ir.model,name:agreement_legal.model_agreement_renewaltype -msgid "agreement.renewaltype" -msgstr "" - #. module: agreement_legal #: model:ir.model.fields,help:agreement_legal.field_agreement_appendix__dynamic_content #: model:ir.model.fields,help:agreement_legal.field_agreement_clause__dynamic_content diff --git a/agreement_legal/models/agreement.py b/agreement_legal/models/agreement.py index 4539024e2c..1784ea7442 100644 --- a/agreement_legal/models/agreement.py +++ b/agreement_legal/models/agreement.py @@ -104,6 +104,10 @@ def _default_stage_id(self): track_visibility="onchange", help="ID used for internal contract tracking.", ) + code = fields.Char( + required=True, + default=lambda self: _("New"), + copy=False) increase_type_id = fields.Many2one( "agreement.increasetype", string="Increase Type", @@ -136,6 +140,7 @@ def _default_stage_id(self): partner_id = fields.Many2one( "res.partner", string="Partner", + required=False, copy=True, help="The customer or vendor this agreement is related to.", ) @@ -367,11 +372,13 @@ def create_new_version(self, vals): "name": "{} - OLD VERSION".format(rec.name), "active": False, "parent_agreement_id": rec.id, + "code": "{} - OLD VERSION".format(rec.code), } # Make a current copy and mark it as old rec.copy(default=default_vals) # Increment the Version rec.version = rec.version + 1 + rec.code = rec.code + "v" + str(rec.version) # Reset revision to 0 since it's a new version vals["revision"] = 0 return super(Agreement, self).write(vals) @@ -379,6 +386,7 @@ def create_new_version(self, vals): def create_new_agreement(self): default_vals = { "name": "NEW", + "code": "NEW", "active": True, "version": 1, "revision": 0, @@ -399,6 +407,8 @@ def create(self, vals): vals["reference"] = self.env["ir.sequence"].next_by_code( "agreement" ) or _("New") + if vals.get("code", _("New")) == _("New"): + vals["code"] = vals["reference"] return super(Agreement, self).create(vals) # Increments the revision on each save action From b7aca0c0ffc45a5ce6fbc04a7b04ca45df436d22 Mon Sep 17 00:00:00 2001 From: Yves Goldberg Date: Tue, 2 Apr 2019 18:42:13 +0200 Subject: [PATCH 04/62] [UPD] remove field reference and use field code Translated using Weblate (French) Currently translated at 100.0% (301 of 301 strings) Translation: contract-12.0/contract-12.0-agreement_legal Translate-URL: https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-agreement_legal/fr/ [UPD] Update agreement_legal.pot --- agreement_legal/i18n/agreement_legal.pot | 10 ++++----- agreement_legal/i18n/fr.po | 26 ++++++++++++------------ agreement_legal/models/agreement.py | 17 ++++------------ agreement_legal/views/agreement.xml | 3 +-- 4 files changed, 23 insertions(+), 33 deletions(-) diff --git a/agreement_legal/i18n/agreement_legal.pot b/agreement_legal/i18n/agreement_legal.pot index 83d5dfd3d4..cd6c8a010f 100644 --- a/agreement_legal/i18n/agreement_legal.pot +++ b/agreement_legal/i18n/agreement_legal.pot @@ -581,7 +581,7 @@ msgid "ID" msgstr "" #. module: agreement_legal -#: model:ir.model.fields,help:agreement_legal.field_agreement__reference +#: model:ir.model.fields,help:agreement_legal.field_agreement__code msgid "ID used for internal contract tracking." msgstr "" @@ -825,9 +825,9 @@ msgid "Name:" msgstr "" #. module: agreement_legal -#: code:addons/agreement_legal/models/agreement.py:103 -#: code:addons/agreement_legal/models/agreement.py:398 -#: code:addons/agreement_legal/models/agreement.py:401 +#: code:addons/agreement_legal/models/agreement.py:102 +#: code:addons/agreement_legal/models/agreement.py:399 +#: code:addons/agreement_legal/models/agreement.py:402 #, python-format msgid "New" msgstr "" @@ -1022,7 +1022,7 @@ msgid "Record's Colour" msgstr "" #. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_agreement__reference +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__code msgid "Reference" msgstr "" diff --git a/agreement_legal/i18n/fr.po b/agreement_legal/i18n/fr.po index 47c00033fc..75a426bf2d 100644 --- a/agreement_legal/i18n/fr.po +++ b/agreement_legal/i18n/fr.po @@ -7,15 +7,15 @@ msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-03-24 16:40+0000\n" -"PO-Revision-Date: 2019-03-24 18:18+0100\n" -"Last-Translator: <>\n" +"PO-Revision-Date: 2019-04-04 10:14+0000\n" +"Last-Translator: Yves Goldberg \n" "Language-Team: \n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: \n" -"Language: fr\n" -"X-Generator: Poedit 1.8.6\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.5.1\n" #. module: agreement_legal #: model:ir.model.fields,field_description:agreement_legal.field_agreement__message_needaction @@ -386,7 +386,7 @@ msgstr "Valeur du contrat" #: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_clause_form_view #: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_form_view msgid "Copy and paste the placeholder expression in the content" -msgstr "Copiez et collez l'expression dans le contenu." +msgstr "Copiez et collez l'expression dans le contenu" #. module: agreement_legal #: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view @@ -757,7 +757,7 @@ msgstr "Est un abonné" #. module: agreement_legal #: model:ir.model.fields,field_description:agreement_legal.field_agreement__is_template msgid "Is a Template?" -msgstr "Est un modèle?" +msgstr "Modèle ?" #. module: agreement_legal #: model:ir.model.fields,field_description:agreement_legal.field_agreement____last_update @@ -1097,7 +1097,7 @@ msgstr "Performance" #. module: agreement_legal #: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view msgid "Perhaps include invoices with total vs costs?" -msgstr "Peut-être inclure le total des factures vs coûts?" +msgstr "Peut-être inclure le total des factures vs coûts ?" #. module: agreement_legal #: model:ir.model.fields,field_description:agreement_legal.field_agreement__company_contact_phone @@ -1631,7 +1631,7 @@ msgstr "Titre" #. module: agreement_legal #: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document msgid "Title:" -msgstr "Titre:" +msgstr "Titre :" #. module: agreement_legal #: model:ir.model.fields,help:agreement_legal.field_agreement__total_company_mrc @@ -1701,7 +1701,7 @@ msgstr "Version" #. module: agreement_legal #: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view msgid "Version:" -msgstr "Version:" +msgstr "Version :" #. module: agreement_legal #: model:ir.model.fields,field_description:agreement_legal.field_agreement__website_message_ids @@ -1749,7 +1749,7 @@ msgstr "Quand l'accord se termine." #. module: agreement_legal #: model:ir.model.fields,help:agreement_legal.field_agreement__start_date msgid "When the agreement starts." -msgstr "Quand l'accord commence" +msgstr "Quand l'accord commence." #. module: agreement_legal #: model:ir.model,name:agreement_legal.model_agreement @@ -1792,9 +1792,9 @@ msgstr "utilisateur et image" #. module: agreement_legal #: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view msgid "| Created By:" -msgstr "| Créé par:" +msgstr "| Créé par :" #. module: agreement_legal #: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view msgid "| Created On:" -msgstr "| Créé le:" +msgstr "| Créé le :" diff --git a/agreement_legal/models/agreement.py b/agreement_legal/models/agreement.py index 1784ea7442..32147ddb8a 100644 --- a/agreement_legal/models/agreement.py +++ b/agreement_legal/models/agreement.py @@ -96,18 +96,14 @@ def _default_stage_id(self): string="Dynamic Special Terms", help="Compute dynamic special terms", ) - reference = fields.Char( + code = fields.Char( string="Reference", - copy=False, required=True, default=lambda self: _("New"), track_visibility="onchange", + copy=False, help="ID used for internal contract tracking.", ) - code = fields.Char( - required=True, - default=lambda self: _("New"), - copy=False) increase_type_id = fields.Many2one( "agreement.increasetype", string="Increase Type", @@ -372,13 +368,11 @@ def create_new_version(self, vals): "name": "{} - OLD VERSION".format(rec.name), "active": False, "parent_agreement_id": rec.id, - "code": "{} - OLD VERSION".format(rec.code), } # Make a current copy and mark it as old rec.copy(default=default_vals) # Increment the Version rec.version = rec.version + 1 - rec.code = rec.code + "v" + str(rec.version) # Reset revision to 0 since it's a new version vals["revision"] = 0 return super(Agreement, self).write(vals) @@ -386,7 +380,6 @@ def create_new_version(self, vals): def create_new_agreement(self): default_vals = { "name": "NEW", - "code": "NEW", "active": True, "version": 1, "revision": 0, @@ -403,12 +396,10 @@ def create_new_agreement(self): @api.model def create(self, vals): - if vals.get("reference", _("New")) == _("New"): - vals["reference"] = self.env["ir.sequence"].next_by_code( + if vals.get("code", _("New")) == _("New"): + vals["code"] = self.env["ir.sequence"].next_by_code( "agreement" ) or _("New") - if vals.get("code", _("New")) == _("New"): - vals["code"] = vals["reference"] return super(Agreement, self).create(vals) # Increments the revision on each save action diff --git a/agreement_legal/views/agreement.xml b/agreement_legal/views/agreement.xml index 868308484f..e9d5612938 100644 --- a/agreement_legal/views/agreement.xml +++ b/agreement_legal/views/agreement.xml @@ -40,8 +40,7 @@
    - - + From 88dcc5ad196ba5a2ddd903d325ba1b0ed1272885 Mon Sep 17 00:00:00 2001 From: Yves Goldberg Date: Fri, 12 Apr 2019 00:19:23 +0200 Subject: [PATCH 05/62] [ADD] custom dynamic parties [FIX] flake8 [FIX] pylint --- agreement_legal/models/agreement.py | 25 ++++++++++++++++++ agreement_legal/report/agreement.xml | 39 ++++++++++++++++------------ agreement_legal/views/agreement.xml | 11 ++++++++ 3 files changed, 59 insertions(+), 16 deletions(-) diff --git a/agreement_legal/models/agreement.py b/agreement_legal/models/agreement.py index 32147ddb8a..fcd4d33b11 100644 --- a/agreement_legal/models/agreement.py +++ b/agreement_legal/models/agreement.py @@ -170,6 +170,19 @@ def _default_stage_id(self): company_contact_email = fields.Char( related="company_contact_id.email", string="Email" ) + use_parties_content = fields.Boolean( + string="Use parties content", + help="Use custom content for parties") + parties = fields.Html( + string="Parties", + track_visibility="onchange", + help="Parties of the agreement", + ) + dynamic_parties = fields.Html( + compute="_compute_dynamic_parties", + string="Dynamic Parties", + help="Compute dynamic parties", + ) agreement_type_id = fields.Many2one( "agreement.type", string="Agreement Type", @@ -308,6 +321,18 @@ def _compute_dynamic_description(self): ) agreement.dynamic_description = description + @api.multi + def _compute_dynamic_parties(self): + MailTemplates = self.env["mail.template"] + for agreement in self: + lang = agreement.partner_id.lang or "en_US" + parties = MailTemplates.with_context( + lang=lang + )._render_template( + agreement.parties, "agreement", agreement.id + ) + agreement.dynamic_parties = parties + @api.multi def _compute_dynamic_special_terms(self): MailTemplates = self.env["mail.template"] diff --git a/agreement_legal/report/agreement.xml b/agreement_legal/report/agreement.xml index f497e7a20d..546fa21214 100644 --- a/agreement_legal/report/agreement.xml +++ b/agreement_legal/report/agreement.xml @@ -25,25 +25,32 @@

    -

    +

    Parties

    -

    Company Information

    -
    -
    -
    -
    - Represented by . -
    -

    Partner Information

    -
    -
    -
    -
    - Represented by . +
    + +

    +

    + +

    Company Information

    +
    +
    +
    +
    + Represented by . +
    +

    Partner Information

    +
    +
    +
    +
    + Represented by . +
    +

    Agreement

    Recitals

    diff --git a/agreement_legal/views/agreement.xml b/agreement_legal/views/agreement.xml index e9d5612938..b400b10b49 100644 --- a/agreement_legal/views/agreement.xml +++ b/agreement_legal/views/agreement.xml @@ -90,6 +90,14 @@

    + + + + +

    + This section (on the left) allows you to replace the default listing of the parties with custom dynamic content. +

    +
    @@ -119,6 +127,9 @@ + + + From 412400536e8851e56f76cd6acb906b88b2472111 Mon Sep 17 00:00:00 2001 From: Yves Goldberg Date: Tue, 16 Apr 2019 15:11:54 +0200 Subject: [PATCH 06/62] [IMP] add default html value for parties [UPD] flake8 --- agreement_legal/models/agreement.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/agreement_legal/models/agreement.py b/agreement_legal/models/agreement.py index fcd4d33b11..8a87cf9656 100644 --- a/agreement_legal/models/agreement.py +++ b/agreement_legal/models/agreement.py @@ -173,9 +173,36 @@ def _default_stage_id(self): use_parties_content = fields.Boolean( string="Use parties content", help="Use custom content for parties") + + def _get_default_parties(self): + deftext = """ +

    Company Information

    +

    + ${object.company_partner_id.name or ''}.
    + ${object.company_partner_id.street or ''}
    + ${object.company_partner_id.state_id.code or ''} + ${object.company_partner_id.zip or ''} + ${object.company_partner_id.city or ''}
    + ${object.company_partner_id.country_id.name or ''}.

    + Represented by ${object.company_contact_id.name or ''}. +

    +

    +

    Partner Information

    +

    + ${object.partner_id.name or ''}.
    + ${object.partner_id.street or ''}
    + ${object.partner_id.state_id.code or ''} + ${object.partner_id.zip or ''} ${object.partner_id.city or ''}
    + ${object.partner_id.country_id.name or ''}.

    + Represented by ${object.partner_contact_id.name or ''}. +

    + """ + return deftext + parties = fields.Html( string="Parties", track_visibility="onchange", + default=_get_default_parties, help="Parties of the agreement", ) dynamic_parties = fields.Html( From d6acb70c664efc5559cf4edb9b6e32ef1570f973 Mon Sep 17 00:00:00 2001 From: Murtuza Saleh Date: Thu, 18 Apr 2019 21:07:34 +0530 Subject: [PATCH 07/62] [FIX][12.0] Menu Icon. [UPD] Update agreement_legal.pot --- agreement_legal/i18n/agreement_legal.pot | 45 ++++++++++++++++++++++-- agreement_legal/views/menu.xml | 2 +- 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/agreement_legal/i18n/agreement_legal.pot b/agreement_legal/i18n/agreement_legal.pot index cd6c8a010f..39a240325e 100644 --- a/agreement_legal/i18n/agreement_legal.pot +++ b/agreement_legal/i18n/agreement_legal.pot @@ -290,6 +290,11 @@ msgstr "" msgid "Compute dynamic description" msgstr "" +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__dynamic_parties +msgid "Compute dynamic parties" +msgstr "" + #. module: agreement_legal #: model:ir.model.fields,help:agreement_legal.field_agreement__dynamic_special_terms msgid "Compute dynamic special terms" @@ -492,6 +497,11 @@ msgstr "" msgid "Dynamic Description" msgstr "" +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__dynamic_parties +msgid "Dynamic Parties" +msgstr "" + #. module: agreement_legal #: model:ir.model.fields,field_description:agreement_legal.field_agreement__dynamic_special_terms msgid "Dynamic Special Terms" @@ -826,8 +836,8 @@ msgstr "" #. module: agreement_legal #: code:addons/agreement_legal/models/agreement.py:102 -#: code:addons/agreement_legal/models/agreement.py:399 -#: code:addons/agreement_legal/models/agreement.py:402 +#: code:addons/agreement_legal/models/agreement.py:451 +#: code:addons/agreement_legal/models/agreement.py:454 #, python-format msgid "New" msgstr "" @@ -888,11 +898,22 @@ msgid "Parent Agreement" msgstr "" #. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__parties #: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view #: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document msgid "Parties" msgstr "" +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Parties Content" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__parties +msgid "Parties of the agreement" +msgstr "" + #. module: agreement_legal #: model:ir.model.fields,field_description:agreement_legal.field_agreement__partner_id #: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view @@ -1389,6 +1410,11 @@ msgstr "" msgid "This section (on the left) allows you to add dynamic fields inside the description and special terms." msgstr "" +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "This section (on the left) allows you to replace the default listing of the parties with custom dynamic content." +msgstr "" + #. module: agreement_legal #: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view msgid "This section is a place where financial records will show the current performance of this agreement." @@ -1435,6 +1461,21 @@ msgstr "" msgid "Units Of Measure" msgstr "" +#. module: agreement_legal +#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view +msgid "Use custom content" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,help:agreement_legal.field_agreement__use_parties_content +msgid "Use custom content for parties" +msgstr "" + +#. module: agreement_legal +#: model:ir.model.fields,field_description:agreement_legal.field_agreement__use_parties_content +msgid "Use parties content" +msgstr "" + #. module: agreement_legal #: model:res.groups,name:agreement_legal.group_agreement_user msgid "User" diff --git a/agreement_legal/views/menu.xml b/agreement_legal/views/menu.xml index 7bf1631891..09d72b49a2 100644 --- a/agreement_legal/views/menu.xml +++ b/agreement_legal/views/menu.xml @@ -8,7 +8,7 @@ From 708811f0b2067952637fb5ba47f4af5f72784109 Mon Sep 17 00:00:00 2001 From: Maxime Chambreuil Date: Tue, 30 Apr 2019 09:14:38 -0500 Subject: [PATCH 08/62] [FIX] Icon in settings --- agreement_legal/views/res_config_settings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agreement_legal/views/res_config_settings.xml b/agreement_legal/views/res_config_settings.xml index 0d58c3d7a3..50e2a5c340 100644 --- a/agreement_legal/views/res_config_settings.xml +++ b/agreement_legal/views/res_config_settings.xml @@ -11,7 +11,7 @@

    Operations

    From df4ba87e548bbff788c2b51d47956f438791f989 Mon Sep 17 00:00:00 2001 From: Maxime Chambreuil Date: Wed, 1 May 2019 09:42:04 -0500 Subject: [PATCH 09/62] [FIX] agreement_legal: module name [UPD] Update agreement_legal.pot --- agreement_legal/i18n/agreement_legal.pot | 2 +- agreement_legal/models/res_config_settings.py | 2 +- agreement_legal/views/res_config_settings.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/agreement_legal/i18n/agreement_legal.pot b/agreement_legal/i18n/agreement_legal.pot index 39a240325e..4da173f968 100644 --- a/agreement_legal/i18n/agreement_legal.pot +++ b/agreement_legal/i18n/agreement_legal.pot @@ -720,7 +720,7 @@ msgid "Link your Helpdesk tickets to an agreement" msgstr "" #. module: agreement_legal -#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_helpdesk_agreement +#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__module_agreement_helpdesk msgid "Link your Helpdesk tickets to an agreement." msgstr "" diff --git a/agreement_legal/models/res_config_settings.py b/agreement_legal/models/res_config_settings.py index 7864ddc764..63b9205b32 100644 --- a/agreement_legal/models/res_config_settings.py +++ b/agreement_legal/models/res_config_settings.py @@ -33,6 +33,6 @@ class ResConfigSettings(models.TransientModel): module_fieldservice_agreement = fields.Boolean( string="Link your Field Service orders and equipments to an agreement." ) - module_helpdesk_agreement = fields.Boolean( + module_agreement_helpdesk = fields.Boolean( string="Link your Helpdesk tickets to an agreement." ) diff --git a/agreement_legal/views/res_config_settings.xml b/agreement_legal/views/res_config_settings.xml index 50e2a5c340..8cf3ccf1ae 100644 --- a/agreement_legal/views/res_config_settings.xml +++ b/agreement_legal/views/res_config_settings.xml @@ -136,7 +136,7 @@
    - +
    -

    +

    By:

    Name: diff --git a/agreement_legal/views/agreement.xml b/agreement_legal/views/agreement.xml index b400b10b49..df0232062e 100644 --- a/agreement_legal/views/agreement.xml +++ b/agreement_legal/views/agreement.xml @@ -9,7 +9,7 @@ - + @@ -110,7 +110,7 @@

    - @@ -122,7 +122,7 @@ - + @@ -136,7 +136,7 @@ - + From 67456086b16aa451db8cca95cb49611a6ffe3eb4 Mon Sep 17 00:00:00 2001 From: Maxime Chambreuil Date: Wed, 8 May 2019 09:07:16 -0500 Subject: [PATCH 14/62] [FIX] Clauses are copied from the sections --- agreement_legal/models/agreement.py | 180 ++++++++++------------------ 1 file changed, 60 insertions(+), 120 deletions(-) diff --git a/agreement_legal/models/agreement.py b/agreement_legal/models/agreement.py index c98f4e949d..c354144cc8 100644 --- a/agreement_legal/models/agreement.py +++ b/agreement_legal/models/agreement.py @@ -17,153 +17,123 @@ def _default_stage_id(self): string="Is a Template?", default=False, copy=False, - help="Make this agreement a template.", - ) + help="Make this agreement a template.") version = fields.Integer( string="Version", default=1, copy=False, help="The versions are used to keep track of document history and " - "previous versions can be referenced.", - ) + "previous versions can be referenced.") revision = fields.Integer( string="Revision", default=0, copy=False, - help="The revision will increase with every save event.", - ) + help="The revision will increase with every save event.") description = fields.Text( string="Description", track_visibility="onchange", - help="Description of the agreement", - ) + help="Description of the agreement") dynamic_description = fields.Text( compute="_compute_dynamic_description", string="Dynamic Description", - help="Compute dynamic description", - ) + help="Compute dynamic description") start_date = fields.Date( string="Start Date", track_visibility="onchange", - help="When the agreement starts.", - ) + help="When the agreement starts.") end_date = fields.Date( string="End Date", track_visibility="onchange", - help="When the agreement ends.", - ) - color = fields.Integer() + help="When the agreement ends.") + color = fields.Integer(string="Color") active = fields.Boolean( string="Active", default=True, help="If unchecked, it will allow you to hide the agreement without " - "removing it.", - ) + "removing it.") company_signed_date = fields.Date( string="Signed on", track_visibility="onchange", - help="Date the contract was signed by Company.", - ) + help="Date the contract was signed by Company.") partner_signed_date = fields.Date( string="Signed on (Partner)", track_visibility="onchange", - help="Date the contract was signed by the Partner.", - ) + help="Date the contract was signed by the Partner.") term = fields.Integer( string="Term (Months)", track_visibility="onchange", help="Number of months this agreement/contract is in effect with the " - "partner.", - ) + "partner.") expiration_notice = fields.Integer( string="Exp. Notice (Days)", track_visibility="onchange", - help="Number of Days before expiration to be notified.", - ) + help="Number of Days before expiration to be notified.") change_notice = fields.Integer( string="Change Notice (Days)", track_visibility="onchange", - help="Number of Days to be notified before changes.", - ) + help="Number of Days to be notified before changes.") special_terms = fields.Text( string="Special Terms", track_visibility="onchange", help="Any terms that you have agreed to and want to track on the " - "agreement/contract.", - ) + "agreement/contract.") dynamic_special_terms = fields.Text( compute="_compute_dynamic_special_terms", string="Dynamic Special Terms", - help="Compute dynamic special terms", - ) + help="Compute dynamic special terms") code = fields.Char( string="Reference", required=True, default=lambda self: _("New"), track_visibility="onchange", copy=False, - help="ID used for internal contract tracking.", - ) + help="ID used for internal contract tracking.") increase_type_id = fields.Many2one( "agreement.increasetype", string="Increase Type", track_visibility="onchange", - help="The amount that certain rates may increase.", - ) + help="The amount that certain rates may increase.") termination_requested = fields.Date( string="Termination Requested Date", track_visibility="onchange", - help="Date that a request for termination was received.", - ) + help="Date that a request for termination was received.") termination_date = fields.Date( string="Termination Date", track_visibility="onchange", - help="Date that the contract was terminated.", - ) + help="Date that the contract was terminated.") reviewed_date = fields.Date( - string="Reviewed Date", track_visibility="onchange" - ) + string="Reviewed Date", track_visibility="onchange") reviewed_user_id = fields.Many2one( - "res.users", string="Reviewed By", track_visibility="onchange" - ) + "res.users", string="Reviewed By", track_visibility="onchange") approved_date = fields.Date( - string="Approved Date", track_visibility="onchange" - ) + string="Approved Date", track_visibility="onchange") approved_user_id = fields.Many2one( - "res.users", string="Approved By", track_visibility="onchange" - ) + "res.users", string="Approved By", track_visibility="onchange") currency_id = fields.Many2one("res.currency", string="Currency") partner_id = fields.Many2one( "res.partner", string="Partner", required=False, copy=True, - help="The customer or vendor this agreement is related to.", - ) + help="The customer or vendor this agreement is related to.") partner_contact_id = fields.Many2one( "res.partner", string="Partner Contact", copy=True, - help="The primary partner contact (If Applicable).", - ) + help="The primary partner contact (If Applicable).") partner_contact_phone = fields.Char( - related="partner_contact_id.phone", string="Partner Phone" - ) + related="partner_contact_id.phone", string="Partner Phone") partner_contact_email = fields.Char( - related="partner_contact_id.email", string="Partner Email" - ) + related="partner_contact_id.email", string="Partner Email") company_contact_id = fields.Many2one( "res.partner", string="Company Contact", copy=True, - help="The primary contact in the company.", - ) + help="The primary contact in the company.") company_contact_phone = fields.Char( - related="company_contact_id.phone", string="Phone" - ) + related="company_contact_id.phone", string="Phone") company_contact_email = fields.Char( - related="company_contact_id.email", string="Email" - ) + related="company_contact_id.email", string="Email") use_parties_content = fields.Boolean( string="Use parties content", help="Use custom content for parties") @@ -197,137 +167,112 @@ def _get_default_parties(self): string="Parties", track_visibility="onchange", default=_get_default_parties, - help="Parties of the agreement", - ) + help="Parties of the agreement") dynamic_parties = fields.Html( compute="_compute_dynamic_parties", string="Dynamic Parties", - help="Compute dynamic parties", - ) + help="Compute dynamic parties") agreement_type_id = fields.Many2one( "agreement.type", string="Agreement Type", track_visibility="onchange", - help="Select the type of agreement.", - ) + help="Select the type of agreement.") agreement_subtype_id = fields.Many2one( "agreement.subtype", string="Agreement Sub-type", track_visibility="onchange", help="Select the sub-type of this agreement. Sub-Types are related to " - "agreement types.", - ) + "agreement types.") product_ids = fields.Many2many( - "product.template", string="Products & Services" - ) + "product.template", string="Products & Services") assigned_user_id = fields.Many2one( "res.users", string="Assigned To", track_visibility="onchange", - help="Select the user who manages this agreement.", - ) + help="Select the user who manages this agreement.") company_signed_user_id = fields.Many2one( "res.users", string="Signed By", track_visibility="onchange", help="The user at our company who authorized/signed the agreement or " - "contract.", - ) + "contract.") partner_signed_user_id = fields.Many2one( "res.partner", string="Signed By (Partner)", track_visibility="onchange", - help="Contact on the account that signed the agreement/contract.", - ) + help="Contact on the account that signed the agreement/contract.") parent_agreement_id = fields.Many2one( "agreement", string="Parent Agreement", help="Link this agreement to a parent agreement. For example if this " "agreement is an amendment to another agreement. This list will " - "only show other agreements related to the same account.", - ) + "only show other agreements related to the same account.") renewal_type_id = fields.Many2one( "agreement.renewaltype", string="Renewal Type", track_visibility="onchange", - help="Describes what happens after the contract expires.", - ) + help="Describes what happens after the contract expires.") recital_ids = fields.One2many( - "agreement.recital", "agreement_id", string="Recitals", copy=True - ) + "agreement.recital", "agreement_id", string="Recitals", copy=True) sections_ids = fields.One2many( - "agreement.section", "agreement_id", string="Sections", copy=True - ) + "agreement.section", "agreement_id", string="Sections", copy=True) clauses_ids = fields.One2many( - "agreement.clause", "agreement_id", string="Clauses", copy=True - ) + "agreement.clause", "agreement_id", string="Clauses") appendix_ids = fields.One2many( - "agreement.appendix", "agreement_id", string="Appendices", copy=True - ) + "agreement.appendix", "agreement_id", string="Appendices", copy=True) previous_version_agreements_ids = fields.One2many( "agreement", "parent_agreement_id", string="Previous Versions", copy=False, - domain=[("active", "=", False)], - ) + domain=[("active", "=", False)]) child_agreements_ids = fields.One2many( "agreement", "parent_agreement_id", string="Child Agreements", copy=False, - domain=[("active", "=", True)], - ) + domain=[("active", "=", True)]) line_ids = fields.One2many( "agreement.line", "agreement_id", string="Products/Services", - copy=False, - ) + copy=False) state = fields.Selection( [("draft", "Draft"), ("active", "Active"), ("inactive", "Inactive")], default="draft", - track_visibility="always", - ) + track_visibility="always") notification_address_id = fields.Many2one( "res.partner", string="Notification Address", help="The address to send notificaitons to, if different from " - "customer address.(Address Type = Other)", - ) + "customer address.(Address Type = Other)") signed_contract_filename = fields.Char(string="Filename") signed_contract = fields.Binary( - string="Signed Document", track_visibility="always" - ) + string="Signed Document", track_visibility="always") field_id = fields.Many2one( "ir.model.fields", string="Field", help="""Select target field from the related document model. If it is a relationship field you will be able to select a target field at the - destination of the relationship.""", - ) + destination of the relationship.""") sub_object_id = fields.Many2one( "ir.model", string="Sub-model", help="""When a relationship field is selected as first field, this - field shows the document model the relationship goes to.""", - ) + field shows the document model the relationship goes to.""") sub_model_object_field_id = fields.Many2one( "ir.model.fields", string="Sub-field", help="""When a relationship field is selected as first field, this field lets you select the target field within the destination document - model (sub-model).""", - ) + model (sub-model).""") default_value = fields.Char( string="Default Value", - help="Optional value to use if the target field is empty.", - ) + help="Optional value to use if the target field is empty.") copyvalue = fields.Char( string="Placeholder Expression", help="""Final placeholder expression, to be copy-pasted in the desired - template field.""", - ) + template field.""") # compute the dynamic content for mako expression @api.multi @@ -373,19 +318,16 @@ def onchange_copyvalue(self): self.sub_object_id = False if self.field_id and not self.field_id.relation: self.copyvalue = "${{object.{} or {}}}".format( - self.field_id.name, self.default_value or "''" - ) + self.field_id.name, self.default_value or "''") self.sub_model_object_field_id = False if self.field_id and self.field_id.relation: self.sub_object_id = self.env["ir.model"].search( - [("model", "=", self.field_id.relation)] - )[0] + [("model", "=", self.field_id.relation)])[0] if self.sub_model_object_field_id: self.copyvalue = "${{object.{}.{} or {}}}".format( self.field_id.name, self.sub_model_object_field_id.name, - self.default_value or "''", - ) + self.default_value or "''") # Used for Kanban grouped_by view @api.model @@ -399,9 +341,7 @@ def _read_group_stage_ids(self, stages, domain, order): group_expand="_read_group_stage_ids", help="Select the current stage of the agreement.", track_visibility="onchange", - index=True, - # default=lambda self: self._default_stage_id(), - ) + index=True) # Create New Version Button @api.multi From c6ce2e9b6d5fd933075ef31e80d939ddf04e6696 Mon Sep 17 00:00:00 2001 From: Maxime Chambreuil Date: Mon, 13 May 2019 10:59:33 -0500 Subject: [PATCH 15/62] [FIX] agreement_legal: Copy --- agreement_legal/models/agreement.py | 3 +++ agreement_legal/models/agreement_clause.py | 27 ++++++++-------------- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/agreement_legal/models/agreement.py b/agreement_legal/models/agreement.py index c354144cc8..0f78497654 100644 --- a/agreement_legal/models/agreement.py +++ b/agreement_legal/models/agreement.py @@ -339,6 +339,7 @@ def _read_group_stage_ids(self, stages, domain, order): "agreement.stage", string="Stage", group_expand="_read_group_stage_ids", + default=lambda self: self._default_stage_id(), help="Select the current stage of the agreement.", track_visibility="onchange", index=True) @@ -370,8 +371,10 @@ def create_new_agreement(self): "version": 1, "revision": 0, "state": "draft", + "stage_id": self.env.ref("agreement_legal.agreement_stage_new").id, } res = self.copy(default=default_vals) + res.sections_ids.clauses_ids.write({'agreement_id': res.id}) return { "res_model": "agreement", "type": "ir.actions.act_window", diff --git a/agreement_legal/models/agreement_clause.py b/agreement_legal/models/agreement_clause.py index 2c2debadd2..e7ab066fae 100644 --- a/agreement_legal/models/agreement_clause.py +++ b/agreement_legal/models/agreement_clause.py @@ -12,8 +12,7 @@ class AgreementClause(models.Model): name = fields.Char(string="Name", required=True) title = fields.Char( string="Title", - help="The title is displayed on the PDF." "The name is not." - ) + help="The title is displayed on the PDF." "The name is not.") sequence = fields.Integer(string="Sequence") agreement_id = fields.Many2one( "agreement", @@ -22,20 +21,17 @@ class AgreementClause(models.Model): section_id = fields.Many2one( "agreement.section", string="Section", - ondelete="cascade" - ) + ondelete="cascade") content = fields.Html(string="Clause Content") dynamic_content = fields.Html( compute="_compute_dynamic_content", string="Dynamic Content", - help="compute dynamic Content", - ) + help="compute dynamic Content") active = fields.Boolean( string="Active", default=True, help="If unchecked, it will allow you to hide the agreement without " - "removing it.", - ) + "removing it.") # Dynamic field editor field_id = fields.Many2one( @@ -43,30 +39,25 @@ class AgreementClause(models.Model): string="Field", help="""Select target field from the related document model. If it is a relationship field you will be able to select a target field at the - destination of the relationship.""", - ) + destination of the relationship.""") sub_object_id = fields.Many2one( "ir.model", string="Sub-model", help="""When a relationship field is selected as first field, this - field shows the document model the relationship goes to.""", - ) + field shows the document model the relationship goes to.""") sub_model_object_field_id = fields.Many2one( "ir.model.fields", string="Sub-field", help="""When a relationship field is selected as first field, this field lets you select the target field within the destination document - model (sub-model).""", - ) + model (sub-model).""") default_value = fields.Char( string="Default Value", - help="Optional value to use if the target field is empty.", - ) + help="Optional value to use if the target field is empty.") copyvalue = fields.Char( string="Placeholder Expression", help="""Final placeholder expression, to be copy-pasted in the desired - template field.""", - ) + template field.""") @api.onchange('field_id', 'sub_model_object_field_id', 'default_value') def onchange_copyvalue(self): From 3d68a84790ef64c973807585b14042a55271d3b4 Mon Sep 17 00:00:00 2001 From: Maxime Chambreuil Date: Tue, 14 May 2019 20:03:00 -0500 Subject: [PATCH 16/62] [FIX] View priority --- agreement_legal/views/agreement.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/agreement_legal/views/agreement.xml b/agreement_legal/views/agreement.xml index df0232062e..3a7e32048a 100644 --- a/agreement_legal/views/agreement.xml +++ b/agreement_legal/views/agreement.xml @@ -22,8 +22,9 @@ Agreement Form agreement + -
    +
    - +

    Special Terms

    diff --git a/agreement_legal/static/description/index.html b/agreement_legal/static/description/index.html index f11b088120..9feda578ad 100644 --- a/agreement_legal/static/description/index.html +++ b/agreement_legal/static/description/index.html @@ -410,6 +410,11 @@

    Usage

  • Select a template
  • Follow the process to get the required approval
  • Send the invitation to the customer to review and sign the agreement
  • +
  • Define Field using widget domain but having partial_use option true:
  • +
  • For Ex:
  • +
  • <field name=”field_domain” widget=”domain” nolabel=”1”
  • +
  • options=”{‘model’: ‘agreement.recital’,
  • +
  • ‘partial_use’: True}”/>
  • diff --git a/agreement_legal/static/src/js/domain_widget_ext.js b/agreement_legal/static/src/js/domain_widget_ext.js new file mode 100644 index 0000000000..11da12f667 --- /dev/null +++ b/agreement_legal/static/src/js/domain_widget_ext.js @@ -0,0 +1,77 @@ +odoo.define('agreement_legal.domain_widget_ext', function (require) { + 'use strict'; + + var basic_fields = require('web.basic_fields'); + var DomainSelector = require('web.DomainSelector'); + var session = require('web.session'); + var core = require('web.core'); + var qweb = core.qweb; + var _t = core._t; + + basic_fields.FieldDomain.include({ + /** + * Init + */ + init : function () { + this._super.apply(this, arguments); + // Add Additional options + this.partialUse = this.nodeOptions.partial_use || false; + }, + + //-------------------------------------------------------------------------- + // Private + //-------------------------------------------------------------------------- + + /** + * @private + * @override _render from AbstractField + * @returns {Deferred} + */ + _render: function () { + // If there is no model, only change the non-domain-selector content + if (!this._domainModel) { + this._replaceContent(); + return $.when(); + } + + // Convert char value to array value + var value = this.value || "[]"; + + // Create the domain selector or change the value of the current one... + var def; + if (!this.domainSelector) { + this.domainSelector = new DomainSelector(this, this._domainModel, value, { + readonly: this.mode === "readonly" || this.inDialog, + filters: this.fsFilters, + debugMode: session.debug, + partialUse: this.partialUse || false, + }); + def = this.domainSelector.prependTo(this.$el); + } else { + def = this.domainSelector.setDomain(value); + } + // ... then replace the other content (matched records, etc) + return def.then(this._replaceContent.bind(this)); + }, + /** + * Render the field DOM except for the domain selector part. The full field + * DOM is composed of a DIV which contains the domain selector widget, + * followed by other content. This other content is handled by this method. + * + * @private + */ + _replaceContent: function () { + if (this._$content) { + this._$content.remove(); + } + this._$content = $(qweb.render("FieldDomain.content", { + hasModel: !!this._domainModel, + isValid: !!this._isValidForModel, + nbRecords: this.record.specialData[this.name].nbRecords || 0, + inDialogEdit: this.inDialog && this.mode === "edit", + partialUse: this.partialUse || false, + })); + this._$content.appendTo(this.$el); + }, + }); +}); diff --git a/agreement_legal/static/src/xml/domain_widget_view.xml b/agreement_legal/static/src/xml/domain_widget_view.xml new file mode 100644 index 0000000000..580d1a2ec8 --- /dev/null +++ b/agreement_legal/static/src/xml/domain_widget_view.xml @@ -0,0 +1,179 @@ + + + + +
    + +
    +
    + +
    + + + + Invalid domain + + +
    +
    Select a model to add a filter.
    +
    +
    + +
    + + + SMatch all records + + + +
    + Please navigate below and select field: + + SSMatch records with + + of the following rules: + +
    + +
    + + + + + Match all records + + + +
    + Match records with the following rule: + + Match records with + + of the following rules: + +
    + +
    + + + + +
    + + + + + + + + +
    + + +
    + + +
    + +
    +
    + + + + + +
    + + + +
    +
    + +
    +
    + + + +
    +
    +
    +
    +
    + + + + "" + + + + + "" + or + + + + + + + + is + not + set + +
    +
    +
    +
    + +
    + +
    +
    +
    +
    + +
    + +
    +
    +
      +
    + +
    +
    + \ No newline at end of file diff --git a/agreement_legal/views/agreement.xml b/agreement_legal/views/agreement.xml index 3a7e32048a..727749952a 100644 --- a/agreement_legal/views/agreement.xml +++ b/agreement_legal/views/agreement.xml @@ -1,6 +1,14 @@ +