From f1c264760765c4e1338a8c9b648e1ad980b0f537 Mon Sep 17 00:00:00 2001
From: Yves Goldberg
Date: Fri, 29 Mar 2019 17:06:57 +0100
Subject: [PATCH 1/5] [ADD] agreement_legal migration
---
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 | 398 ++++
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 | 102 +
.../models/agreement_renewaltype.py | 23 +
agreement_legal/models/agreement_section.py | 104 +
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, 6888 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 00000000..8a2f6307
--- /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 00000000..073035d1
--- /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 00000000..543d9b9a
--- /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 00000000..cef2b25e
--- /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 00000000..4cdf6761
--- /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 00000000..d2104c55
--- /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 00000000..d3c2ee7a
--- /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 00000000..9b03a8d6
--- /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 00000000..47c00033
--- /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 00000000..c24e38c0
--- /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 00000000..0e6009cb
--- /dev/null
+++ b/agreement_legal/models/agreement.py
@@ -0,0 +1,398 @@
+# 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 00000000..e81bd53c
--- /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 00000000..2c2debad
--- /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 00000000..094168c1
--- /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 00000000..3960681f
--- /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 00000000..08aee172
--- /dev/null
+++ b/agreement_legal/models/agreement_recital.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 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 00000000..ee03893c
--- /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 00000000..0a1d00d4
--- /dev/null
+++ b/agreement_legal/models/agreement_section.py
@@ -0,0 +1,104 @@
+# 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 00000000..05cbb459
--- /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 00000000..8d9ef3a2
--- /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 00000000..961be088
--- /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 00000000..3422ec93
--- /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 00000000..3c3b6e9e
--- /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 00000000..7864ddc7
--- /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 00000000..66f42bce
--- /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 00000000..3871fc34
--- /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 00000000..a0afb123
--- /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 00000000..76f8e5a3
--- /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 00000000..0680b36c
--- /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 00000000..58ac79c6
--- /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 00000000..7e899648
--- /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 00000000..f497e7a2
--- /dev/null
+++ b/agreement_legal/report/agreement.xml
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Parties
+
Company Information
+
+
+ Represented by .
+
+
Partner Information
+
+
+ Represented by .
+
+
Agreement
+
Recitals
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Special Terms
+
+
+
Signatures
+
+
+
+ Partner
+ Company
+
+
+
+
+
+
+ By:
+
+ Name:
+
+
+ Title:
+
+ Date:
+
+
+
+ By:
+
+ Name:
+
+
+ Title:
+
+ Date:
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/agreement_legal/security/ir.model.access.csv b/agreement_legal/security/ir.model.access.csv
new file mode 100644
index 00000000..2126d363
--- /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 00000000..5edde014
--- /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
+
+
+
+
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
+
+
+
+
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
+
+
+
+
+
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
+
+
+
+
+
+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)
+
+
+
+
+
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.
+
+
+
+
+
+
+Pavlov Media
+Open Source Integrators
+
+
+
+
+
+
The development of this module has been financially supported by:
+
+Pavlov Media
+Open Source Integrators
+
+
+
+
+
This module is maintained by the OCA.
+
+
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 :
+
+
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 00000000..83d229df
--- /dev/null
+++ b/agreement_legal/views/agreement.xml
@@ -0,0 +1,368 @@
+
+
+
+
+
+ Agreement List
+ agreement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Agreement Form
+ agreement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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 00000000..2d522928
--- /dev/null
+++ b/agreement_legal/views/agreement_appendix.xml
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+ Agreement Appendix Tree
+ agreement.appendix
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Agreement Appendix Form
+ agreement.appendix
+
+
+
+
+
+
+
+ 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 00000000..276947e7
--- /dev/null
+++ b/agreement_legal/views/agreement_clause.xml
@@ -0,0 +1,97 @@
+
+
+
+
+
+ Agreement Clause List
+ agreement.clause
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Agreement clause Form
+ agreement.clause
+
+
+
+
+
+
+
+ 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 00000000..8ec1504d
--- /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 00000000..008d63a3
--- /dev/null
+++ b/agreement_legal/views/agreement_recital.xml
@@ -0,0 +1,94 @@
+
+
+
+
+
+ Agreement Recital Tree
+ agreement.recital
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Agreement Recital Form
+ agreement.recital
+
+
+
+
+
+
+
+ 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 00000000..9dde1fe8
--- /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 00000000..517197ae
--- /dev/null
+++ b/agreement_legal/views/agreement_section.xml
@@ -0,0 +1,109 @@
+
+
+
+
+
+ Agreement Section List
+ agreement.section
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Agreement Section Form
+ agreement.section
+
+
+
+
+
+
+
+ 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 00000000..fdb41380
--- /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 00000000..a22063eb
--- /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 00000000..1d86cab5
--- /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 00000000..7bf16318
--- /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 00000000..0d58c3d7
--- /dev/null
+++ b/agreement_legal/views/res_config_settings.xml
@@ -0,0 +1,161 @@
+
+
+
+
+ res.config.settings.view.form.agreement
+ res.config.settings
+
+
+
+
+
+
Operations
+
+
+
+
+
+
+
+
+ Sell and purchase products in different units of measure
+
+
+
+
+
+
Advanced Features
+
+
+
+
+
+
+
+
+ Create an agreement when the sales order is confirmed
+
+
+
+
+
+
+
+
+
+
+ Link your subscriptions to an agreement
+
+
+
+
+
+
+
+
+
+
+ Link your Field Service orders and equipments to an agreement
+
+
+
+
+
+
+
+
+
+
+ Link your transfers to an agreement
+
+
+
+
+
+
+
+
+
+
+ Link your returns to an agreement
+
+
+
+
+
+
+
+
+
+
+ Manage maintenance agreements and contracts
+
+
+
+
+
+
+
+
+
+
+ Link your manufacturing orders to an agreement
+
+
+
+
+
+
+
+
+
+
+ Link your repair orders to an agreement
+
+
+
+
+
+
+
+
+
+
+ Link your projects and tasks to an agreement
+
+
+
+
+
+
+
+
+
+
+ Link your Helpdesk tickets to an agreement
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/agreement_legal/views/res_partner.xml b/agreement_legal/views/res_partner.xml
new file mode 100644
index 00000000..6b37099a
--- /dev/null
+++ b/agreement_legal/views/res_partner.xml
@@ -0,0 +1,17 @@
+
+
+
+
+ res.partner
+
+
+
+
+
+
+
+
+
+
+
+
From 71e6c812a19d4a6b3af0cc5e7b077a634b990dd2 Mon Sep 17 00:00:00 2001
From: Yves Goldberg
Date: Fri, 29 Mar 2019 17:37:59 +0100
Subject: [PATCH 2/5] [FIX] flake8
---
agreement_legal/models/agreement.py | 82 +++++++++++++++------
agreement_legal/models/agreement_recital.py | 1 -
2 files changed, 61 insertions(+), 22 deletions(-)
diff --git a/agreement_legal/models/agreement.py b/agreement_legal/models/agreement.py
index 0e6009cb..1046d6f0 100644
--- a/agreement_legal/models/agreement.py
+++ b/agreement_legal/models/agreement.py
@@ -48,7 +48,9 @@ class Agreement(models.Model):
help="When the agreement starts.",
)
end_date = fields.Date(
- string="End Date", track_visibility="onchange", help="When the agreement ends."
+ string="End Date",
+ track_visibility="onchange",
+ help="When the agreement ends."
)
color = fields.Integer()
active = fields.Boolean(
@@ -118,15 +120,25 @@ class Agreement(models.Model):
track_visibility="onchange",
help="Date that the contract was terminated.",
)
- reviewed_date = fields.Date(string="Reviewed Date", track_visibility="onchange")
+ reviewed_date = fields.Date(
+ 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")
+ approved_date = fields.Date(
+ 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",
@@ -146,10 +158,12 @@ class Agreement(models.Model):
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",
@@ -158,10 +172,12 @@ class Agreement(models.Model):
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",
@@ -176,7 +192,9 @@ class Agreement(models.Model):
help="Select the sub-type of this agreement. Sub-Types are related to "
"agreement types.",
)
- product_ids = fields.Many2many("product.template", string="Products & Services")
+ product_ids = fields.Many2many(
+ "product.template",
+ string="Products & Services")
payment_term_id = fields.Many2one(
"account.payment.term",
string="Payment Term",
@@ -216,16 +234,28 @@ class Agreement(models.Model):
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",
@@ -242,10 +272,15 @@ class Agreement(models.Model):
domain=[("active", "=", True)],
)
line_ids = fields.One2many(
- "agreement.line", "agreement_id", string="Products/Services", copy=False
+ "agreement.line",
+ "agreement_id",
+ string="Products/Services",
+ copy=False
)
state = fields.Selection(
- [("draft", "Draft"), ("active", "Active"), ("inactive", "Inactive")],
+ [("draft", "Draft"),
+ ("active", "Active"),
+ ("inactive", "Inactive")],
default="draft",
track_visibility="always",
)
@@ -256,7 +291,9 @@ class Agreement(models.Model):
"customer address.(Address Type = Other)",
)
signed_contract_filename = fields.Char(string="Filename")
- signed_contract = fields.Binary(string="Signed Document", track_visibility="always")
+ signed_contract = fields.Binary(
+ string="Signed Document",
+ track_visibility="always")
field_id = fields.Many2one(
"ir.model.fields",
string="Field",
@@ -293,7 +330,8 @@ class Agreement(models.Model):
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(
+ description = MailTemplates.with_context(
+ lang=lang)._render_template(
agreement.description, "agreement", agreement.id
)
agreement.dynamic_description = description
@@ -303,7 +341,8 @@ class Agreement(models.Model):
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(
+ special_terms = MailTemplates.with_context(
+ lang=lang)._render_template(
agreement.special_terms, "agreement", agreement.id
)
agreement.dynamic_special_terms = special_terms
@@ -386,7 +425,8 @@ class Agreement(models.Model):
@api.model
def create(self, vals):
if vals.get("reference", _("New")) == _("New"):
- vals["reference"] = self.env["ir.sequence"].next_by_code("agreement") or _(
+ vals["reference"] = self.env[
+ "ir.sequence"].next_by_code("agreement") or _(
"New"
)
return super(Agreement, self).create(vals)
diff --git a/agreement_legal/models/agreement_recital.py b/agreement_legal/models/agreement_recital.py
index 08aee172..f380f167 100644
--- a/agreement_legal/models/agreement_recital.py
+++ b/agreement_legal/models/agreement_recital.py
@@ -3,7 +3,6 @@
from odoo import api, fields, models
-
class AgreementRecital(models.Model):
_name = "agreement.recital"
_description = "Agreement Recitals"
From ad81655ae66967fe15eb174a8c926a9b09939ae4 Mon Sep 17 00:00:00 2001
From: Yves Goldberg
Date: Fri, 29 Mar 2019 17:46:53 +0100
Subject: [PATCH 3/5] [FIX] flake8(2)
---
agreement_legal/models/agreement_recital.py | 3 +--
agreement_legal/models/agreement_section.py | 2 --
2 files changed, 1 insertion(+), 4 deletions(-)
diff --git a/agreement_legal/models/agreement_recital.py b/agreement_legal/models/agreement_recital.py
index f380f167..ec65c29e 100644
--- a/agreement_legal/models/agreement_recital.py
+++ b/agreement_legal/models/agreement_recital.py
@@ -3,6 +3,7 @@
from odoo import api, fields, models
+
class AgreementRecital(models.Model):
_name = "agreement.recital"
_description = "Agreement Recitals"
@@ -64,7 +65,6 @@ class AgreementRecital(models.Model):
template field.""",
)
-
@api.onchange('field_id', 'sub_model_object_field_id', 'default_value')
def onchange_copyvalue(self):
self.sub_object_id = False
@@ -84,7 +84,6 @@ class AgreementRecital(models.Model):
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):
diff --git a/agreement_legal/models/agreement_section.py b/agreement_legal/models/agreement_section.py
index 0a1d00d4..f278aae8 100644
--- a/agreement_legal/models/agreement_section.py
+++ b/agreement_legal/models/agreement_section.py
@@ -67,7 +67,6 @@ class AgreementSection(models.Model):
template field.""",
)
-
@api.onchange('field_id', 'sub_model_object_field_id', 'default_value')
def onchange_copyvalue(self):
self.sub_object_id = False
@@ -87,7 +86,6 @@ class AgreementSection(models.Model):
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):
From b7b7aa36fa2c89c4183b5eb51621e897921ab047 Mon Sep 17 00:00:00 2001
From: Yves Goldberg
Date: Tue, 2 Apr 2019 10:59:30 +0200
Subject: [PATCH 4/5] [FIX] agreement_legal: remove account dependency
---
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/views/agreement.xml | 7 --
5 files changed, 63 insertions(+), 101 deletions(-)
diff --git a/agreement_legal/__manifest__.py b/agreement_legal/__manifest__.py
index 543d9b9a..d519218a 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 1046d6f0..4539024e 100644
--- a/agreement_legal/models/agreement.py
+++ b/agreement_legal/models/agreement.py
@@ -50,7 +50,7 @@ class Agreement(models.Model):
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 @@ class Agreement(models.Model):
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 @@ class Agreement(models.Model):
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 @@ class Agreement(models.Model):
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 @@ class Agreement(models.Model):
"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 @@ class Agreement(models.Model):
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 @@ class Agreement(models.Model):
"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 @@ class Agreement(models.Model):
)
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 @@ class Agreement(models.Model):
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 @@ class Agreement(models.Model):
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 @@ class Agreement(models.Model):
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 @@ class Agreement(models.Model):
@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 ec65c29e..15b04517 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 f278aae8..2fe67ea9 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/views/agreement.xml b/agreement_legal/views/agreement.xml
index 83d229df..5bb9a09c 100644
--- a/agreement_legal/views/agreement.xml
+++ b/agreement_legal/views/agreement.xml
@@ -130,13 +130,6 @@
-
-
-
-
-
-
-
From 868830bd08f1f7f80e8785e4f2b707b53adb59ce Mon Sep 17 00:00:00 2001
From: Yves Goldberg
Date: Tue, 2 Apr 2019 11:16:12 +0200
Subject: [PATCH 5/5] [FIX] ooops
---
agreement_legal/views/agreement.xml | 1 +
1 file changed, 1 insertion(+)
diff --git a/agreement_legal/views/agreement.xml b/agreement_legal/views/agreement.xml
index 5bb9a09c..86830848 100644
--- a/agreement_legal/views/agreement.xml
+++ b/agreement_legal/views/agreement.xml
@@ -130,6 +130,7 @@
+