mirror of
https://github.com/OCA/contract.git
synced 2025-02-13 17:57:24 +02:00
Merge branch '14.0-mig-agreement_repair' of github.com:ursais/contract into 14.0-mig-agreement_repair
This commit is contained in:
21
README.md
21
README.md
@@ -17,15 +17,18 @@ TODO: add repo description.
|
||||
|
||||
Available addons
|
||||
----------------
|
||||
addon | version | summary
|
||||
--- | --- | ---
|
||||
[agreement](agreement/) | 14.0.1.0.0 | Adds an agreement object
|
||||
[agreement_legal](agreement_legal/) | 14.0.1.0.1 | Manage Agreements, LOI and Contracts
|
||||
[agreement_sale](agreement_sale/) | 14.0.1.0.0 | Agreement on sales
|
||||
[agreement_serviceprofile](agreement_serviceprofile/) | 14.0.1.0.0 | Adds an Agreement Service Profile object
|
||||
[contract](contract/) | 14.0.1.2.1 | Recurring - Contracts Management
|
||||
[contract_payment_mode](contract_payment_mode/) | 14.0.1.0.0 | Payment mode in contracts and their invoices
|
||||
[contract_sale](contract_sale/) | 14.0.1.0.0 | Contract from Sale
|
||||
addon | version | maintainers | summary
|
||||
--- | --- | --- | ---
|
||||
[agreement](agreement/) | 14.0.1.0.0 | [](https://github.com/ygol) [](https://github.com/alexis-via) | Adds an agreement object
|
||||
[agreement_legal](agreement_legal/) | 14.0.2.0.0 | [](https://github.com/max3903) [](https://github.com/ygol) | Manage Agreements, LOI and Contracts
|
||||
[agreement_project](agreement_project/) | 14.0.1.0.0 | [](https://github.com/smangukiya) [](https://github.com/ygol) [](https://github.com/max3903) | Link projects to an agreement
|
||||
[agreement_sale](agreement_sale/) | 14.0.1.0.0 | [](https://github.com/alexis-via) [](https://github.com/bealdav) | Agreement on sales
|
||||
[agreement_serviceprofile](agreement_serviceprofile/) | 14.0.1.0.0 | [](https://github.com/max3903) | Adds an Agreement Service Profile object
|
||||
[agreement_stock](agreement_stock/) | 14.0.1.0.1 | [](https://github.com/smangukiya) [](https://github.com/max3903) | Link picking to an agreement
|
||||
[contract](contract/) | 14.0.1.2.3 | | Recurring - Contracts Management
|
||||
[contract_mandate](contract_mandate/) | 14.0.1.0.0 | | Mandate in contracts and their invoices
|
||||
[contract_payment_mode](contract_payment_mode/) | 14.0.1.0.0 | | Payment mode in contracts and their invoices
|
||||
[contract_sale](contract_sale/) | 14.0.1.0.0 | | Contract from Sale
|
||||
|
||||
[//]: # (end addons)
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 12.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2021-01-05 13:44+0000\n"
|
||||
"Last-Translator: Dept. Técnico <tecnico@extrememicro.es>\n"
|
||||
"PO-Revision-Date: 2021-09-14 02:33+0000\n"
|
||||
"Last-Translator: pere-aquarian <pere@aquarian.tech>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: ca\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -25,51 +25,51 @@ msgstr "%s (copiar)"
|
||||
#. module: agreement
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement__message_needaction
|
||||
msgid "Action Needed"
|
||||
msgstr ""
|
||||
msgstr "Acció necessària"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement__active
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement_type__active
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
msgstr "Actiu"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement__activity_ids
|
||||
msgid "Activities"
|
||||
msgstr ""
|
||||
msgstr "Activitats"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement__activity_exception_decoration
|
||||
msgid "Activity Exception Decoration"
|
||||
msgstr ""
|
||||
msgstr "Decorador de l'excepció d'activitat"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement__activity_state
|
||||
msgid "Activity State"
|
||||
msgstr ""
|
||||
msgstr "Estat de l'activitat"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement__activity_type_icon
|
||||
msgid "Activity Type Icon"
|
||||
msgstr ""
|
||||
msgstr "Icona del tipus d'activitat"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.model,name:agreement.model_agreement
|
||||
#: model_terms:ir.ui.view,arch_db:agreement.agreement_form
|
||||
msgid "Agreement"
|
||||
msgstr ""
|
||||
msgstr "Acord"
|
||||
|
||||
#. module: agreement
|
||||
#: model_terms:ir.ui.view,arch_db:agreement.agreement_form
|
||||
msgid "Agreement Name"
|
||||
msgstr ""
|
||||
msgstr "Nom de l'acord"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement__agreement_type_id
|
||||
#: model_terms:ir.ui.view,arch_db:agreement.agreement_type_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:agreement.agreement_type_search
|
||||
msgid "Agreement Type"
|
||||
msgstr ""
|
||||
msgstr "Tipus d'acord"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.actions.act_window,name:agreement.agreement_type_action
|
||||
@@ -77,7 +77,7 @@ msgstr ""
|
||||
#: model:ir.ui.menu,name:agreement.agreement_type_menu
|
||||
#: model_terms:ir.ui.view,arch_db:agreement.agreement_type_list_view
|
||||
msgid "Agreement Types"
|
||||
msgstr ""
|
||||
msgstr "Tipus d'acord"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.actions.act_window,name:agreement.agreement_action
|
||||
@@ -85,7 +85,7 @@ msgstr ""
|
||||
#: model:ir.ui.menu,name:agreement.agreement_menu_root
|
||||
#: model_terms:ir.ui.view,arch_db:agreement.agreement_tree
|
||||
msgid "Agreements"
|
||||
msgstr ""
|
||||
msgstr "Acords"
|
||||
|
||||
#. module: agreement
|
||||
#: model_terms:ir.ui.view,arch_db:agreement.agreement_form
|
||||
@@ -93,40 +93,40 @@ msgstr ""
|
||||
#: model_terms:ir.ui.view,arch_db:agreement.agreement_type_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:agreement.agreement_type_search
|
||||
msgid "Archived"
|
||||
msgstr ""
|
||||
msgstr "Arxivat"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement__message_attachment_count
|
||||
msgid "Attachment Count"
|
||||
msgstr ""
|
||||
msgstr "Nombre d'annexes"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement__company_id
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
msgstr "Companyia"
|
||||
|
||||
#. module: agreement
|
||||
#: model_terms:ir.ui.view,arch_db:agreement.agreement_form
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
msgstr "Configuració"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement__create_uid
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement_type__create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
msgstr "Creat per"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement__create_date
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement_type__create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
msgstr "Creat el"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement__display_name
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement_type__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
msgstr "Nom a mostrar"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement__domain
|
||||
@@ -134,38 +134,38 @@ msgstr ""
|
||||
#: model_terms:ir.ui.view,arch_db:agreement.agreement_search
|
||||
#: model_terms:ir.ui.view,arch_db:agreement.agreement_type_search
|
||||
msgid "Domain"
|
||||
msgstr ""
|
||||
msgstr "Domini"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement__end_date
|
||||
msgid "End Date"
|
||||
msgstr ""
|
||||
msgstr "Data de fi"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement__message_follower_ids
|
||||
msgid "Followers"
|
||||
msgstr ""
|
||||
msgstr "Seguidors/res"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement__message_channel_ids
|
||||
msgid "Followers (Channels)"
|
||||
msgstr ""
|
||||
msgstr "Seguidors/res (canals)"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement__message_partner_ids
|
||||
msgid "Followers (Partners)"
|
||||
msgstr ""
|
||||
msgstr "Seguidors/res (Empreses)"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.model.fields,help:agreement.field_agreement__activity_type_icon
|
||||
msgid "Font awesome icon e.g. fa-tasks"
|
||||
msgstr ""
|
||||
msgstr "Icona Font awesome p.e. fa-tasks"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement__id
|
||||
#: model:ir.model.fields,field_description:agreement.field_agreement_type__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
msgstr "ID"
|
||||
|
||||
#. module: agreement
|
||||
#: model:ir.model.fields,help:agreement.field_agreement__code
|
||||
|
||||
@@ -97,6 +97,7 @@ Contributors
|
||||
* Maxime Chambreuil <mchambreuil@opensourceintegrators.com>
|
||||
* Sandip Mangukiya <smangukiya@opensourceintegrators.com>
|
||||
* Yves Goldberg <yves@ygol.com>
|
||||
* Tharathip Chaweewongphan <tharathipc@ecosoft.co.th>
|
||||
|
||||
Other credits
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
@@ -2,3 +2,4 @@
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from . import models
|
||||
from . import wizards
|
||||
|
||||
@@ -11,11 +11,10 @@
|
||||
"website": "https://github.com/OCA/contract",
|
||||
"category": "Partner",
|
||||
"license": "AGPL-3",
|
||||
"version": "14.0.1.0.1",
|
||||
"version": "14.0.2.0.0",
|
||||
"depends": ["contacts", "agreement", "product"],
|
||||
"data": [
|
||||
"data/ir_sequence.xml",
|
||||
"data/module_category.xml",
|
||||
"data/agreement_stage.xml",
|
||||
"data/agreement_type.xml",
|
||||
"security/res_groups.xml",
|
||||
@@ -29,13 +28,14 @@
|
||||
"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",
|
||||
"views/assets.xml",
|
||||
"wizards/create_agreement_wizard.xml",
|
||||
],
|
||||
"demo": ["demo/demo.xml"],
|
||||
"qweb": ["static/src/xml/agreement.xml"],
|
||||
"application": True,
|
||||
"development_status": "Beta",
|
||||
"maintainers": ["max3903", "ygol"],
|
||||
|
||||
@@ -48,6 +48,13 @@
|
||||
<field name="stage_type">agreement</field>
|
||||
</record>
|
||||
|
||||
<record id="agreement_stage_terminated" model="agreement.stage">
|
||||
<field name="name">Terminated</field>
|
||||
<field name="sequence">90</field>
|
||||
<field name="fold">True</field>
|
||||
<field name="stage_type">agreement</field>
|
||||
</record>
|
||||
|
||||
<record id="agreement_stage_cancelled" model="agreement.stage">
|
||||
<field name="name">Cancelled</field>
|
||||
<field name="sequence">100</field>
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
<odoo>
|
||||
|
||||
<record id="agreement" model="ir.module.category">
|
||||
<field name="name">Agreement</field>
|
||||
<field name="sequence">80</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
@@ -13,13 +13,6 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "# Code editor"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.view_project_agreement_kanban
|
||||
msgid "<span class=\"fa fa-ellipsis-v\" aria-hidden=\"true\" title=\"Icon\"/>"
|
||||
@@ -31,49 +24,12 @@ msgstr ""
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__active
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement_recital__active
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement_section__active
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__active
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__active
|
||||
#: model:ir.model.fields.selection,name:agreement_legal.selection__agreement__state__active
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "Add branch"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "Add filter"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "Add new value"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "Add node"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "Add tag"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view
|
||||
msgid "Administration"
|
||||
@@ -93,7 +49,6 @@ msgstr ""
|
||||
#: 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.selection,name:agreement_legal.selection__agreement_stage__stage_type__agreement
|
||||
#: 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.partner_agreement_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document
|
||||
@@ -110,12 +65,6 @@ msgstr ""
|
||||
msgid "Agreement Clauses"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.actions.act_window,name:agreement_legal.partner_agreement_action_increasetype
|
||||
#: model:ir.model,name:agreement_legal.model_agreement_increasetype
|
||||
msgid "Agreement Increase Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.model,name:agreement_legal.model_agreement_line
|
||||
msgid "Agreement Lines"
|
||||
@@ -136,12 +85,6 @@ msgstr ""
|
||||
msgid "Agreement Recitals"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.actions.act_window,name:agreement_legal.partner_agreement_action_renewaltype
|
||||
#: model:ir.model,name:agreement_legal.model_agreement_renewaltype
|
||||
msgid "Agreement Renewal Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_search_view
|
||||
msgid "Agreement Search"
|
||||
@@ -171,6 +114,7 @@ msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement__agreement_subtype_id
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_search_view
|
||||
msgid "Agreement Sub-type"
|
||||
msgstr ""
|
||||
|
||||
@@ -182,7 +126,8 @@ 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_search_view
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_subtype_search_view
|
||||
msgid "Agreement Type"
|
||||
msgstr ""
|
||||
|
||||
@@ -196,8 +141,6 @@ msgstr ""
|
||||
#: model:ir.actions.act_window,name:agreement_legal.action_agreement_report_order
|
||||
#: model:ir.actions.act_window,name:agreement_legal.agreement_dashboard_agreement
|
||||
#: model:ir.actions.act_window,name:agreement_legal.agreement_operations_agreement
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_product_product__agreements_ids
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_product_template__agreements_ids
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_res_partner__agreement_ids
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_res_users__agreement_ids
|
||||
#: model:ir.ui.menu,name:agreement_legal.agreement_agreement_reporting
|
||||
@@ -218,9 +161,13 @@ 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"
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_stage_search_view
|
||||
msgid "Agreements Stage Search"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_subtype_search_view
|
||||
msgid "Agreements Sub-Types Search"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
@@ -266,6 +213,10 @@ msgstr ""
|
||||
#: 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_search_view
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_section_form_view
|
||||
#: 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_search_view
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_subtype_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_subtype_search_view
|
||||
msgid "Archived"
|
||||
msgstr ""
|
||||
|
||||
@@ -279,6 +230,11 @@ msgstr ""
|
||||
msgid "By:"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.create_agreement_from_template_form_view
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement__change_notice
|
||||
msgid "Change Notice (Days)"
|
||||
@@ -312,14 +268,6 @@ msgstr ""
|
||||
msgid "Clauses"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement__color
|
||||
msgid "Color"
|
||||
@@ -408,6 +356,25 @@ msgid ""
|
||||
"terms"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.create_agreement_from_template_form_view
|
||||
msgid "Create Agreement"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.model,name:agreement_legal.model_create_agreement_wizard
|
||||
msgid "Create Agreement Wizard"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/agreement.xml:0
|
||||
#: code:addons/agreement_legal/static/src/xml/agreement.xml:0
|
||||
#: model:ir.actions.act_window,name:agreement_legal.create_agreement_from_template_action
|
||||
#, python-format
|
||||
msgid "Create From Template"
|
||||
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."
|
||||
@@ -418,37 +385,40 @@ msgstr ""
|
||||
msgid "Create an agreement when the sales order is confirmed"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement__created_by
|
||||
msgid "Created By"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement__date_created
|
||||
msgid "Created On"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: 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_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_create_agreement_wizard__create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: 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_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_create_agreement_wizard__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.ui.menu,name:agreement_legal.agreement_dashboard
|
||||
msgid "Dashboard"
|
||||
@@ -474,6 +444,11 @@ msgstr ""
|
||||
msgid "Date the contract was signed by the Partner."
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.model.fields,help:agreement_legal.field_agreement__date_created
|
||||
msgid "Date which create the agreement."
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.report_agreement_document
|
||||
msgid "Date:"
|
||||
@@ -488,28 +463,10 @@ msgstr ""
|
||||
msgid "Default Value"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "Delete node"
|
||||
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 ""
|
||||
|
||||
@@ -518,46 +475,22 @@ msgstr ""
|
||||
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_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
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_product_template__display_name
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_create_agreement_wizard__display_name
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__display_name
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_res_partner__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "Domain"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "Domain node"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.model.fields.selection,name:agreement_legal.selection__agreement__state__draft
|
||||
msgid "Draft"
|
||||
@@ -591,13 +524,6 @@ msgstr ""
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "Edit Domain"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement__company_contact_email
|
||||
msgid "Email"
|
||||
@@ -666,15 +592,13 @@ msgstr ""
|
||||
#: 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_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
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_product_template__id
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_create_agreement_wizard__id
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings__id
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_res_partner__id
|
||||
msgid "ID"
|
||||
@@ -710,42 +634,6 @@ msgstr ""
|
||||
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
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "Invalid domain"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "Invalid field chain"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form
|
||||
msgid "Inventory"
|
||||
@@ -760,15 +648,13 @@ msgstr ""
|
||||
#: 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_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
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_product_template____last_update
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_create_agreement_wizard____last_update
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_res_config_settings____last_update
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_res_partner____last_update
|
||||
msgid "Last Modified on"
|
||||
@@ -777,26 +663,24 @@ msgstr ""
|
||||
#. module: agreement_legal
|
||||
#: 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_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_create_agreement_wizard__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: 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_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_create_agreement_wizard__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
@@ -918,33 +802,11 @@ msgstr ""
|
||||
msgid "Master Data"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "Match"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "Match records with"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "Match records with the following rule:"
|
||||
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_subtype__name
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
@@ -958,6 +820,7 @@ msgstr ""
|
||||
#: code:addons/agreement_legal/models/agreement.py:0
|
||||
#: code:addons/agreement_legal/models/agreement.py:0
|
||||
#: code:addons/agreement_legal/models/agreement.py:0
|
||||
#: code:addons/agreement_legal/models/agreement.py:0
|
||||
#, python-format
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
@@ -992,12 +855,6 @@ msgstr ""
|
||||
msgid "Number of Days to be notified before changes."
|
||||
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.ui.menu,name:agreement_legal.agreement_operations
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form
|
||||
@@ -1067,11 +924,6 @@ msgstr ""
|
||||
msgid "Partners"
|
||||
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"
|
||||
@@ -1096,26 +948,11 @@ msgstr ""
|
||||
msgid "Placeholder Expression"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "Please navigate below and select field:"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view
|
||||
msgid "Preview"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "Previous"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement__previous_version_agreements_ids
|
||||
msgid "Previous Versions"
|
||||
@@ -1141,21 +978,11 @@ msgstr ""
|
||||
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
|
||||
@@ -1177,6 +1004,12 @@ msgstr ""
|
||||
msgid "Read-Only Users"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement__readonly
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__readonly
|
||||
msgid "Readonly"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.agreement_recital_form
|
||||
msgid "Recital"
|
||||
@@ -1203,30 +1036,6 @@ msgstr ""
|
||||
msgid "Reference"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "Remove tag"
|
||||
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"
|
||||
@@ -1272,20 +1081,6 @@ msgstr ""
|
||||
msgid "Revisions"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "SMatch"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "SSMatch records with"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.res_config_settings_view_form
|
||||
msgid "Sale Subscriptions"
|
||||
@@ -1316,13 +1111,6 @@ msgstr ""
|
||||
msgid "Sections"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "Select a model to add a filter."
|
||||
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
|
||||
@@ -1456,8 +1244,6 @@ 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 ""
|
||||
|
||||
@@ -1487,13 +1273,13 @@ msgid "Structure"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_subtype_list_view
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement_subtype__name
|
||||
msgid "Sub-Type Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__agreement_subtypes_ids
|
||||
#: 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 ""
|
||||
|
||||
@@ -1516,8 +1302,15 @@ msgid "Sub-model"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement_type__agreement_subtypes_ids
|
||||
msgid "Subtypes"
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement_clause__temp_agreement_id
|
||||
msgid "Temp Agreement"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement__template_id
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_create_agreement_wizard__template_id
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view
|
||||
msgid "Template"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
@@ -1527,11 +1320,6 @@ msgstr ""
|
||||
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"
|
||||
@@ -1555,8 +1343,9 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.model.fields,help:agreement_legal.field_agreement__increase_type_id
|
||||
msgid "The amount that certain rates may increase."
|
||||
#: model:ir.model.fields,help:agreement_legal.field_agreement__readonly
|
||||
#: model:ir.model.fields,help:agreement_legal.field_agreement_stage__readonly
|
||||
msgid "The agreement can not edit if set Readonly = True."
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
@@ -1582,15 +1371,11 @@ 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_recital__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 ""
|
||||
@@ -1604,6 +1389,11 @@ msgid ""
|
||||
"versions can be referenced."
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.model.fields,help:agreement_legal.field_agreement_clause__temp_agreement_id
|
||||
msgid "This field help to filter section."
|
||||
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
|
||||
@@ -1644,10 +1434,9 @@ msgstr ""
|
||||
#: 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
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_create_agreement_wizard__name
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
@@ -1658,6 +1447,7 @@ msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement_stage__stage_type
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_stage_search_view
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
@@ -1696,6 +1486,11 @@ msgstr ""
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.model.fields,help:agreement_legal.field_agreement__created_by
|
||||
msgid "User which create the agreement."
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model:ir.model.fields,field_description:agreement_legal.field_agreement__version
|
||||
msgid "Version"
|
||||
@@ -1706,14 +1501,6 @@ msgstr ""
|
||||
msgid "Version:"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "Warning"
|
||||
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
|
||||
@@ -1747,14 +1534,6 @@ msgstr ""
|
||||
msgid "When the agreement starts."
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "all records"
|
||||
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
|
||||
@@ -1763,59 +1542,16 @@ msgstr ""
|
||||
msgid "compute dynamic Content"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "is"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "not"
|
||||
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
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "of the following rules:"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.partner_agreement_form_view
|
||||
msgid "on"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "record(s)"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#. openerp-web
|
||||
#: code:addons/agreement_legal/static/src/xml/domain_widget_view.xml:0
|
||||
#, python-format
|
||||
msgid "set"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_legal
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_legal.view_project_agreement_kanban
|
||||
msgid "user & picture"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -12,7 +12,4 @@ from . import (
|
||||
agreement_type,
|
||||
agreement_subtype,
|
||||
res_partner,
|
||||
product_template,
|
||||
agreement_renewaltype,
|
||||
agreement_increasetype,
|
||||
)
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
# Copyright (C) 2018 - TODAY, Pavlov Media
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
import ast
|
||||
import json as simplejson
|
||||
|
||||
from lxml import etree
|
||||
|
||||
from odoo import _, api, fields, models
|
||||
|
||||
|
||||
@@ -52,12 +57,6 @@ class Agreement(models.Model):
|
||||
tracking=True,
|
||||
help="Date the contract was signed by the Partner.",
|
||||
)
|
||||
term = fields.Integer(
|
||||
string="Term (Months)",
|
||||
tracking=True,
|
||||
help="Number of months this agreement/contract is in effect with the "
|
||||
"partner.",
|
||||
)
|
||||
expiration_notice = fields.Integer(
|
||||
string="Exp. Notice (Days)",
|
||||
tracking=True,
|
||||
@@ -87,12 +86,6 @@ class Agreement(models.Model):
|
||||
copy=False,
|
||||
help="ID used for internal contract tracking.",
|
||||
)
|
||||
increase_type_id = fields.Many2one(
|
||||
"agreement.increasetype",
|
||||
string="Increase Type",
|
||||
tracking=True,
|
||||
help="The amount that certain rates may increase.",
|
||||
)
|
||||
termination_requested = fields.Date(
|
||||
string="Termination Requested Date",
|
||||
tracking=True,
|
||||
@@ -107,7 +100,6 @@ class Agreement(models.Model):
|
||||
reviewed_user_id = fields.Many2one("res.users", string="Reviewed By", tracking=True)
|
||||
approved_date = fields.Date(string="Approved Date", tracking=True)
|
||||
approved_user_id = fields.Many2one("res.users", string="Approved By", tracking=True)
|
||||
currency_id = fields.Many2one("res.currency", string="Currency")
|
||||
partner_id = fields.Many2one(
|
||||
"res.partner",
|
||||
string="Partner",
|
||||
@@ -192,7 +184,6 @@ 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")
|
||||
assigned_user_id = fields.Many2one(
|
||||
"res.users",
|
||||
string="Assigned To",
|
||||
@@ -219,12 +210,6 @@ class Agreement(models.Model):
|
||||
"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",
|
||||
tracking=True,
|
||||
help="Describes what happens after the contract expires.",
|
||||
)
|
||||
recital_ids = fields.One2many(
|
||||
"agreement.recital", "agreement_id", string="Recitals", copy=True
|
||||
)
|
||||
@@ -241,6 +226,7 @@ class Agreement(models.Model):
|
||||
string="Previous Versions",
|
||||
copy=False,
|
||||
domain=[("active", "=", False)],
|
||||
context={"active_test": False},
|
||||
)
|
||||
child_agreements_ids = fields.One2many(
|
||||
"agreement",
|
||||
@@ -294,19 +280,37 @@ class Agreement(models.Model):
|
||||
help="""Final placeholder expression, to be copy-pasted in the desired
|
||||
template field.""",
|
||||
)
|
||||
created_by = fields.Many2one(
|
||||
"res.users",
|
||||
string="Created By",
|
||||
copy=False,
|
||||
default=lambda self: self.env.user,
|
||||
help="User which create the agreement.",
|
||||
)
|
||||
date_created = fields.Datetime(
|
||||
string="Created On",
|
||||
copy=False,
|
||||
default=lambda self: fields.Datetime.now(),
|
||||
help="Date which create the agreement.",
|
||||
)
|
||||
template_id = fields.Many2one(
|
||||
"agreement",
|
||||
string="Template",
|
||||
domain=[("is_template", "=", True)],
|
||||
)
|
||||
readonly = fields.Boolean(
|
||||
related="stage_id.readonly",
|
||||
)
|
||||
|
||||
# compute the dynamic content for mako expression
|
||||
# compute the dynamic content for jinja expression
|
||||
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]
|
||||
)
|
||||
des = ""
|
||||
for i in description:
|
||||
des += description[i]
|
||||
agreement.dynamic_description = des
|
||||
)[agreement.id]
|
||||
agreement.dynamic_description = description
|
||||
|
||||
def _compute_dynamic_parties(self):
|
||||
MailTemplates = self.env["mail.template"]
|
||||
@@ -314,7 +318,7 @@ class Agreement(models.Model):
|
||||
lang = agreement.partner_id.lang or "en_US"
|
||||
parties = MailTemplates.with_context(lang=lang)._render_template(
|
||||
agreement.parties, "agreement", [agreement.id]
|
||||
)
|
||||
)[agreement.id]
|
||||
agreement.dynamic_parties = parties
|
||||
|
||||
def _compute_dynamic_special_terms(self):
|
||||
@@ -323,14 +327,13 @@ class Agreement(models.Model):
|
||||
lang = agreement.partner_id.lang or "en_US"
|
||||
special_terms = MailTemplates.with_context(lang=lang)._render_template(
|
||||
agreement.special_terms, "agreement", [agreement.id]
|
||||
)
|
||||
)[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 "''"
|
||||
@@ -360,29 +363,55 @@ class Agreement(models.Model):
|
||||
string="Stage",
|
||||
group_expand="_read_group_stage_ids",
|
||||
help="Select the current stage of the agreement.",
|
||||
default=lambda self: self._get_default_stage_id(),
|
||||
tracking=True,
|
||||
index=True,
|
||||
copy=False,
|
||||
)
|
||||
|
||||
@api.model
|
||||
def _get_default_stage_id(self):
|
||||
try:
|
||||
stage_id = self.env.ref("agreement_legal.agreement_stage_new").id
|
||||
except ValueError:
|
||||
stage_id = False
|
||||
return stage_id
|
||||
|
||||
def _get_old_version_default_vals(self):
|
||||
self.ensure_one()
|
||||
default_vals = {
|
||||
"name": "{} - OLD VERSION".format(self.name),
|
||||
"active": False,
|
||||
"parent_agreement_id": self.id,
|
||||
"version": self.version,
|
||||
"revision": self.revision,
|
||||
"created_by": self.created_by.id,
|
||||
"date_created": self.date_created,
|
||||
"code": "{}-V{}".format(self.code, str(self.version)),
|
||||
"stage_id": self.stage_id.id,
|
||||
}
|
||||
return default_vals
|
||||
|
||||
# Create New Version Button
|
||||
def create_new_version(self):
|
||||
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,
|
||||
"version": rec.version,
|
||||
"code": rec.code + "-V" + str(rec.version),
|
||||
}
|
||||
# Make a current copy and mark it as old
|
||||
rec.copy(default=default_vals)
|
||||
# Increment the Version
|
||||
rec.version = rec.version + 1
|
||||
rec.copy(default=rec._get_old_version_default_vals())
|
||||
# Update version, created by and created on
|
||||
rec.update(
|
||||
{
|
||||
"version": rec.version + 1,
|
||||
"created_by": self.env.user.id,
|
||||
"date_created": fields.Datetime.now(),
|
||||
}
|
||||
)
|
||||
# Reset revision to 0 since it's a new version
|
||||
rec.revision = 0
|
||||
|
||||
def create_new_agreement(self):
|
||||
def _get_new_agreement_default_vals(self):
|
||||
self.ensure_one()
|
||||
default_vals = {
|
||||
"name": "New",
|
||||
@@ -390,10 +419,13 @@ class Agreement(models.Model):
|
||||
"version": 1,
|
||||
"revision": 0,
|
||||
"state": "draft",
|
||||
"stage_id": self.env.ref("agreement_legal.agreement_stage_new").id,
|
||||
"is_template": False,
|
||||
}
|
||||
res = self.copy(default=default_vals)
|
||||
res.sections_ids.mapped("clauses_ids").write({"agreement_id": res.id})
|
||||
return default_vals
|
||||
|
||||
def create_new_agreement(self):
|
||||
self.ensure_one()
|
||||
res = self.copy(default=self._get_new_agreement_default_vals())
|
||||
return {
|
||||
"res_model": "agreement",
|
||||
"type": "ir.actions.act_window",
|
||||
@@ -407,10 +439,72 @@ class Agreement(models.Model):
|
||||
if vals.get("code", _("New")) == _("New"):
|
||||
vals["code"] = self.env["ir.sequence"].next_by_code("agreement") or _("New")
|
||||
if not vals.get("stage_id"):
|
||||
vals["stage_id"] = self.env.ref("agreement_legal.agreement_stage_new").id
|
||||
vals["stage_id"] = self._get_default_stage_id()
|
||||
return super().create(vals)
|
||||
|
||||
# Increments the revision on each save action
|
||||
def write(self, vals):
|
||||
vals["revision"] = self.revision + 1
|
||||
return super().write(vals)
|
||||
res = True
|
||||
for rec in self:
|
||||
has_revision = False
|
||||
if "revision" not in vals:
|
||||
vals["revision"] = rec.revision + 1
|
||||
has_revision = True
|
||||
res = super(Agreement, rec).write(vals)
|
||||
if has_revision:
|
||||
vals.pop("revision")
|
||||
return res
|
||||
|
||||
def copy(self, default=None):
|
||||
"""Assign a value for code is New"""
|
||||
default = dict(default or {})
|
||||
if not default.get("code", False):
|
||||
default.setdefault("code", _("New"))
|
||||
res = super().copy(default)
|
||||
res.sections_ids.mapped("clauses_ids").write({"agreement_id": res.id})
|
||||
return res
|
||||
|
||||
def _exclude_readonly_field(self):
|
||||
return ["stage_id"]
|
||||
|
||||
@api.model
|
||||
def fields_view_get(
|
||||
self, view_id=None, view_type=False, toolbar=False, submenu=False
|
||||
):
|
||||
res = super().fields_view_get(
|
||||
view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu
|
||||
)
|
||||
# Readonly fields
|
||||
doc = etree.XML(res["arch"])
|
||||
if view_type == "form":
|
||||
for node in doc.xpath("//field"):
|
||||
if node.attrib.get("name") in self._exclude_readonly_field():
|
||||
continue
|
||||
attrs = ast.literal_eval(node.attrib.get("attrs", "{}"))
|
||||
if attrs:
|
||||
if attrs.get("readonly"):
|
||||
attrs["readonly"] = ["|", ("readonly", "=", True)] + attrs[
|
||||
"readonly"
|
||||
]
|
||||
else:
|
||||
attrs["readonly"] = [("readonly", "=", True)]
|
||||
else:
|
||||
attrs["readonly"] = [("readonly", "=", True)]
|
||||
node.set("attrs", simplejson.dumps(attrs))
|
||||
modifiers = ast.literal_eval(
|
||||
node.attrib.get("modifiers", "{}")
|
||||
.replace("true", "True")
|
||||
.replace("false", "False")
|
||||
)
|
||||
readonly = modifiers.get("readonly")
|
||||
invisible = modifiers.get("invisible")
|
||||
required = modifiers.get("required")
|
||||
if isinstance(readonly, bool) and readonly:
|
||||
attrs["readonly"] = readonly
|
||||
if isinstance(invisible, bool) and invisible:
|
||||
attrs["invisible"] = invisible
|
||||
if isinstance(required, bool) and required:
|
||||
attrs["required"] = required
|
||||
node.set("modifiers", simplejson.dumps(attrs))
|
||||
res["arch"] = etree.tostring(doc)
|
||||
return res
|
||||
|
||||
@@ -65,7 +65,6 @@ class AgreementAppendix(models.Model):
|
||||
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,
|
||||
@@ -83,7 +82,7 @@ class AgreementAppendix(models.Model):
|
||||
self.default_value or "''",
|
||||
)
|
||||
|
||||
# compute the dynamic content for mako expression
|
||||
# compute the dynamic content for jinja expression
|
||||
def _compute_dynamic_content(self):
|
||||
MailTemplates = self.env["mail.template"]
|
||||
for appendix in self:
|
||||
@@ -94,5 +93,5 @@ class AgreementAppendix(models.Model):
|
||||
)
|
||||
content = MailTemplates.with_context(lang=lang)._render_template(
|
||||
appendix.content, "agreement.appendix", [appendix.id]
|
||||
)
|
||||
)[appendix.id]
|
||||
appendix.dynamic_content = content
|
||||
|
||||
@@ -15,6 +15,9 @@ class AgreementClause(models.Model):
|
||||
)
|
||||
sequence = fields.Integer(string="Sequence")
|
||||
agreement_id = fields.Many2one("agreement", string="Agreement", ondelete="cascade")
|
||||
temp_agreement_id = fields.Many2one(
|
||||
"agreement", string="Temp Agreement", help="This field help to filter section."
|
||||
)
|
||||
section_id = fields.Many2one(
|
||||
"agreement.section", string="Section", ondelete="cascade"
|
||||
)
|
||||
@@ -66,7 +69,6 @@ class AgreementClause(models.Model):
|
||||
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,
|
||||
@@ -84,7 +86,7 @@ class AgreementClause(models.Model):
|
||||
self.default_value or "''",
|
||||
)
|
||||
|
||||
# compute the dynamic content for mako expression
|
||||
# compute the dynamic content for jinja expression
|
||||
def _compute_dynamic_content(self):
|
||||
MailTemplates = self.env["mail.template"]
|
||||
for clause in self:
|
||||
@@ -93,5 +95,5 @@ class AgreementClause(models.Model):
|
||||
)
|
||||
content = MailTemplates.with_context(lang=lang)._render_template(
|
||||
clause.content, "agreement.clause", [clause.id]
|
||||
)
|
||||
)[clause.id]
|
||||
clause.dynamic_content = content
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
# 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."
|
||||
)
|
||||
@@ -12,7 +12,7 @@ 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)
|
||||
content = fields.Html(string="Content")
|
||||
@@ -64,7 +64,6 @@ class AgreementRecital(models.Model):
|
||||
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 "''"
|
||||
@@ -81,7 +80,7 @@ class AgreementRecital(models.Model):
|
||||
self.default_value or "''",
|
||||
)
|
||||
|
||||
# compute the dynamic content for mako expression
|
||||
# compute the dynamic content for jinja expression
|
||||
def _compute_dynamic_content(self):
|
||||
MailTemplates = self.env["mail.template"]
|
||||
for recital in self:
|
||||
@@ -90,5 +89,5 @@ class AgreementRecital(models.Model):
|
||||
)
|
||||
content = MailTemplates.with_context(lang=lang)._render_template(
|
||||
recital.content, "agreement.recital", [recital.id]
|
||||
)
|
||||
)[recital.id]
|
||||
recital.dynamic_content = content
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
# 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."
|
||||
)
|
||||
@@ -66,7 +66,6 @@ class AgreementSection(models.Model):
|
||||
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 "''"
|
||||
@@ -83,7 +82,7 @@ class AgreementSection(models.Model):
|
||||
self.default_value or "''",
|
||||
)
|
||||
|
||||
# compute the dynamic content for mako expression
|
||||
# compute the dynamic content for jinja expression
|
||||
def _compute_dynamic_content(self):
|
||||
MailTemplates = self.env["mail.template"]
|
||||
for section in self:
|
||||
@@ -92,5 +91,5 @@ class AgreementSection(models.Model):
|
||||
)
|
||||
content = MailTemplates.with_context(lang=lang)._render_template(
|
||||
section.content, "agreement.section", [section.id]
|
||||
)
|
||||
)[section.id]
|
||||
section.dynamic_content = content
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
# Main Agreement Section Records Model
|
||||
# Main Stage on the Agreement
|
||||
class AgreementStage(models.Model):
|
||||
_name = "agreement.stage"
|
||||
_description = "Agreement Stages"
|
||||
@@ -12,7 +12,6 @@ class AgreementStage(models.Model):
|
||||
|
||||
# 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",
|
||||
@@ -22,3 +21,9 @@ class AgreementStage(models.Model):
|
||||
stage_type = fields.Selection(
|
||||
[("agreement", "Agreement")], string="Type", required=True
|
||||
)
|
||||
active = fields.Boolean(string="Active", default=True)
|
||||
readonly = fields.Boolean(
|
||||
string="Readonly",
|
||||
default=False,
|
||||
help="The agreement can not edit if set Readonly = True.",
|
||||
)
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
# 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)
|
||||
@@ -8,5 +8,6 @@ class AgreementSubtype(models.Model):
|
||||
_name = "agreement.subtype"
|
||||
_description = "Agreement Subtypes"
|
||||
|
||||
name = fields.Char(string="Name", required=True)
|
||||
name = fields.Char(string="Sub-Type Name", required=True)
|
||||
agreement_type_id = fields.Many2one("agreement.type", string="Agreement Type")
|
||||
active = fields.Boolean(string="Active", default=True)
|
||||
|
||||
@@ -9,5 +9,5 @@ class AgreementType(models.Model):
|
||||
_description = "Agreement Types"
|
||||
|
||||
agreement_subtypes_ids = fields.One2many(
|
||||
"agreement.subtype", "agreement_type_id", string="Subtypes"
|
||||
"agreement.subtype", "agreement_type_id", string="Sub-Types"
|
||||
)
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
# 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")
|
||||
@@ -4,3 +4,4 @@
|
||||
* Maxime Chambreuil <mchambreuil@opensourceintegrators.com>
|
||||
* Sandip Mangukiya <smangukiya@opensourceintegrators.com>
|
||||
* Yves Goldberg <yves@ygol.com>
|
||||
* Tharathip Chaweewongphan <tharathipc@ecosoft.co.th>
|
||||
|
||||
@@ -3,17 +3,21 @@
|
||||
<record id="partner_agreement_contract_document" model="ir.actions.report">
|
||||
<field name="name">Agreement</field>
|
||||
<field name="model">agreement</field>
|
||||
<field name="binding_model_id" ref="model_agreement" />
|
||||
<field name="report_type">qweb-pdf</field>
|
||||
<field name="report_name">agreement_legal.report_agreement_document</field>
|
||||
<field name="report_file">agreement_legal.report_agreement_document</field>
|
||||
<field name="binding_view_types">list,form</field>
|
||||
</record>
|
||||
|
||||
<record id="partner_agreement_contract_document_preview" model="ir.actions.report">
|
||||
<field name="name">Agreement Preview</field>
|
||||
<field name="model">agreement</field>
|
||||
<field name="binding_model_id" ref="model_agreement" />
|
||||
<field name="report_type">qweb-html</field>
|
||||
<field name="report_name">agreement_legal.report_agreement_document</field>
|
||||
<field name="report_file">agreement_legal.report_agreement_document</field>
|
||||
<field name="binding_view_types">list,form</field>
|
||||
</record>
|
||||
|
||||
<template id="report_agreement_document">
|
||||
|
||||
@@ -3,19 +3,19 @@ access_agreement_readonly,agreement readonly,model_agreement,group_agreement_rea
|
||||
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_readonly,recital readonly,model_agreement_recital,group_agreement_readonly,1,0,0,0
|
||||
access_agreement_recital_allusers,recital all users,model_agreement_recital,group_agreement_user,1,1,1,0
|
||||
access_agreement_recital_allusers,recital all users,model_agreement_recital,group_agreement_user,1,1,1,1
|
||||
access_agreement_recital_manager,recital manager,model_agreement_recital,group_agreement_manager,1,1,1,1
|
||||
access_agreement_section_readonly,section readonly,model_agreement_section,group_agreement_readonly,1,0,0,0
|
||||
access_agreement_section_allusers,section all users,model_agreement_section,group_agreement_user,1,1,1,0
|
||||
access_agreement_section_allusers,section all users,model_agreement_section,group_agreement_user,1,1,1,1
|
||||
access_agreement_section_manager,section manager,model_agreement_section,group_agreement_manager,1,1,1,1
|
||||
access_agreement_clause_readonly,clause readonly,model_agreement_clause,group_agreement_readonly,1,0,0,0
|
||||
access_agreement_clause_allusers,clause all users,model_agreement_clause,group_agreement_user,1,1,1,0
|
||||
access_agreement_clause_allusers,clause all users,model_agreement_clause,group_agreement_user,1,1,1,1
|
||||
access_agreement_clause_manager,clause manager,model_agreement_clause,group_agreement_manager,1,1,1,1
|
||||
access_agreement_appendix_readonly,appendix readonly,model_agreement_appendix,group_agreement_readonly,1,0,0,0
|
||||
access_agreement_appendix_allusers,appendix all users,model_agreement_appendix,group_agreement_user,1,1,1,0
|
||||
access_agreement_appendix_allusers,appendix all users,model_agreement_appendix,group_agreement_user,1,1,1,1
|
||||
access_agreement_appendix_manager,appendix manager,model_agreement_appendix,group_agreement_manager,1,1,1,1
|
||||
access_agreement_line_readonly,agreement line readonly,model_agreement_line,group_agreement_readonly,1,0,0,0
|
||||
access_agreement_line_allusers,agreement line all users,model_agreement_line,group_agreement_user,1,1,1,0
|
||||
access_agreement_line_allusers,agreement line all users,model_agreement_line,group_agreement_user,1,1,1,1
|
||||
access_agreement_line_manager,agreement line manager,model_agreement_line,group_agreement_manager,1,1,1,1
|
||||
access_agreement_stage_readonly,stage readonly,model_agreement_stage,group_agreement_readonly,1,0,0,0
|
||||
access_agreement_stage_manager,stage manager,model_agreement_stage,group_agreement_manager,1,1,1,1
|
||||
@@ -23,7 +23,4 @@ access_agreement_type_readonly,type readonly,model_agreement_type,group_agreemen
|
||||
access_agreement_type_manager,type manager,model_agreement_type,group_agreement_manager,1,1,1,1
|
||||
access_agreement_subtype_readonly,subtype readonly,model_agreement_subtype,group_agreement_readonly,1,0,0,0
|
||||
access_agreement_subtype_manager,subtype manager,model_agreement_subtype,group_agreement_manager,1,1,1,1
|
||||
access_agreement_renewaltype_readonly,renewaltype readonly,model_agreement_renewaltype,group_agreement_readonly,1,0,0,0
|
||||
access_agreement_renewaltype_manager,renewaltype manager,model_agreement_renewaltype,group_agreement_manager,1,1,1,1
|
||||
access_agreement_increasetype_readonly,increasetype readonly,model_agreement_increasetype,group_agreement_readonly,1,0,0,0
|
||||
access_agreement_increasetype_manager,increasetype manager,model_agreement_increasetype,group_agreement_manager,1,1,1,1
|
||||
access_create_agreement_wizard_allusers,create agreement wizard users,model_create_agreement_wizard,group_agreement_user,1,1,1,1
|
||||
|
||||
|
@@ -1,4 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<odoo>
|
||||
<record id="module_agreement_legal_category" model="ir.module.category">
|
||||
<field name="name">Agreement</field>
|
||||
@@ -32,5 +31,4 @@
|
||||
eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"
|
||||
/>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
||||
@@ -447,6 +447,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
|
||||
<li>Maxime Chambreuil <<a class="reference external" href="mailto:mchambreuil@opensourceintegrators.com">mchambreuil@opensourceintegrators.com</a>></li>
|
||||
<li>Sandip Mangukiya <<a class="reference external" href="mailto:smangukiya@opensourceintegrators.com">smangukiya@opensourceintegrators.com</a>></li>
|
||||
<li>Yves Goldberg <<a class="reference external" href="mailto:yves@ygol.com">yves@ygol.com</a>></li>
|
||||
<li>Tharathip Chaweewongphan <<a class="reference external" href="mailto:tharathipc@ecosoft.co.th">tharathipc@ecosoft.co.th</a>></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="other-credits">
|
||||
|
||||
40
agreement_legal/static/src/js/agreement.js
Normal file
40
agreement_legal/static/src/js/agreement.js
Normal file
@@ -0,0 +1,40 @@
|
||||
odoo.define("agreement_legal.agreement", function (require) {
|
||||
"use strict";
|
||||
|
||||
var KanbanController = require("web.KanbanController");
|
||||
var ListController = require("web.ListController");
|
||||
var FormController = require("web.FormController");
|
||||
|
||||
var includeDict = {
|
||||
renderButtons: function () {
|
||||
this._super.apply(this, arguments);
|
||||
if (this.modelName === "agreement" && this.$buttons) {
|
||||
var self = this;
|
||||
var data = this.model.get(this.handle);
|
||||
if (data.context.default_is_template === true) {
|
||||
// Hide create from template
|
||||
this.$buttons.find(".create_agreement_from_template").hide();
|
||||
} else {
|
||||
// Hide create button
|
||||
this.$buttons.find(".o-kanban-button-new").hide();
|
||||
this.$buttons.find(".o_list_button_add").hide();
|
||||
this.$buttons.find(".o_form_button_create").hide();
|
||||
}
|
||||
this.$buttons
|
||||
.find(".create_agreement_from_template")
|
||||
.on("click", function () {
|
||||
self.do_action(
|
||||
"agreement_legal.create_agreement_from_template_action",
|
||||
{
|
||||
additional_context: {},
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
KanbanController.include(includeDict);
|
||||
ListController.include(includeDict);
|
||||
FormController.include(includeDict);
|
||||
});
|
||||
@@ -1,85 +0,0 @@
|
||||
odoo.define("agreement_legal.domain_widget_ext", function (require) {
|
||||
"use strict";
|
||||
|
||||
var basic_fields = require("web.basic_fields");
|
||||
var DomainSelector = require("web.DomainSelector");
|
||||
var session = require("web.session");
|
||||
var core = require("web.core");
|
||||
var qweb = core.qweb;
|
||||
|
||||
basic_fields.FieldDomain.include({
|
||||
/**
|
||||
* Init
|
||||
*/
|
||||
init: function () {
|
||||
this._super.apply(this, arguments);
|
||||
// Add Additional options
|
||||
this.partialUse = this.nodeOptions.partial_use || false;
|
||||
},
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// Private
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @override _render from AbstractField
|
||||
* @returns {Deferred}
|
||||
*/
|
||||
_render: function () {
|
||||
// If there is no model, only change the non-domain-selector content
|
||||
if (!this._domainModel) {
|
||||
this._replaceContent();
|
||||
return $.when();
|
||||
}
|
||||
|
||||
// Convert char value to array value
|
||||
var value = this.value || "[]";
|
||||
|
||||
// Create the domain selector or change the value of the current
|
||||
// one...
|
||||
var def = null;
|
||||
if (this.domainSelector) {
|
||||
def = this.domainSelector.setDomain(value);
|
||||
} else {
|
||||
this.domainSelector = new DomainSelector(
|
||||
this,
|
||||
this._domainModel,
|
||||
value,
|
||||
{
|
||||
readonly: this.mode === "readonly" || this.inDialog,
|
||||
filters: this.fsFilters,
|
||||
debugMode: session.debug,
|
||||
partialUse: this.partialUse || false,
|
||||
}
|
||||
);
|
||||
def = this.domainSelector.prependTo(this.$el);
|
||||
}
|
||||
// ... then replace the other content (matched records, etc)
|
||||
return def.then(this._replaceContent.bind(this));
|
||||
},
|
||||
/**
|
||||
* Render the field DOM except for the domain selector part. The full
|
||||
* field DOM is composed of a DIV which contains the domain selector
|
||||
* widget, followed by other content. This other content is handled by
|
||||
* this method.
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
_replaceContent: function () {
|
||||
if (this._$content) {
|
||||
this._$content.remove();
|
||||
}
|
||||
this._$content = $(
|
||||
qweb.render("FieldDomain.content", {
|
||||
hasModel: Boolean(this._domainModel),
|
||||
isValid: Boolean(this._isValidForModel),
|
||||
nbRecords: this.record.specialData[this.name].nbRecords || 0,
|
||||
inDialogEdit: this.inDialog && this.mode === "edit",
|
||||
partialUse: this.partialUse || false,
|
||||
})
|
||||
);
|
||||
this._$content.appendTo(this.$el);
|
||||
},
|
||||
});
|
||||
});
|
||||
22
agreement_legal/static/src/xml/agreement.xml
Normal file
22
agreement_legal/static/src/xml/agreement.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<templates>
|
||||
<t t-extend="ListView.buttons">
|
||||
<t t-jquery="button.o_list_button_add" t-operation="after">
|
||||
<button
|
||||
type="button"
|
||||
t-if="widget and widget.modelName and widget.modelName == 'agreement'"
|
||||
class="create_agreement_from_template btn btn-primary"
|
||||
>Create From Template
|
||||
</button>
|
||||
</t>
|
||||
</t>
|
||||
<t t-extend="KanbanView.buttons">
|
||||
<t t-jquery="button" t-operation="after">
|
||||
<button
|
||||
type="button"
|
||||
t-if="widget and widget.modelName and widget.modelName == 'agreement'"
|
||||
class="create_agreement_from_template btn btn-primary"
|
||||
>Create From Template
|
||||
</button>
|
||||
</t>
|
||||
</t>
|
||||
</templates>
|
||||
@@ -1,298 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<templates id="template" xml:space="preserve">
|
||||
<t t-name="FieldDomain.content">
|
||||
<t t-if="partialUse">
|
||||
<div t-if="hasModel" class="o_field_domain_panel">
|
||||
</div>
|
||||
</t>
|
||||
<t t-if="!partialUse">
|
||||
<div t-if="hasModel" class="o_field_domain_panel">
|
||||
<i
|
||||
class="fa fa-arrow-right"
|
||||
role="img"
|
||||
aria-label="Domain"
|
||||
title="Domain"
|
||||
/>
|
||||
|
||||
<button
|
||||
t-if="isValid"
|
||||
class="btn btn-sm btn-secondary o_domain_show_selection_button"
|
||||
type="button"
|
||||
>
|
||||
<t t-esc="nbRecords" /> record(s)
|
||||
</button>
|
||||
<span t-else="" class="text-warning" role="alert"><i
|
||||
class="fa fa-exclamation-triangle"
|
||||
role="img"
|
||||
aria-label="Warning"
|
||||
title="Warning"
|
||||
/> Invalid domain</span>
|
||||
|
||||
<button
|
||||
t-if="inDialogEdit"
|
||||
class="btn btn-sm btn-primary o_field_domain_dialog_button"
|
||||
>Edit Domain</button>
|
||||
</div>
|
||||
<div t-else="">Select a model to add a filter.</div>
|
||||
</t>
|
||||
</t>
|
||||
|
||||
<div
|
||||
aria-atomic="true"
|
||||
t-name="DomainSelector"
|
||||
t-attf-class="o_domain_node o_domain_tree o_domain_selector #{widget.readonly ? 'o_read_mode' : 'o_edit_mode'}"
|
||||
>
|
||||
<t t-if="widget.options.partialUse">
|
||||
<t t-if="widget.children.length === 0">
|
||||
<span>SMatch <strong>all records</strong></span>
|
||||
<button
|
||||
t-if="!widget.readonly"
|
||||
class="btn btn-sm btn-primary o_domain_add_first_node_button"
|
||||
><i class="fa fa-plus" /> Add filter</button>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<div class="o_domain_tree_header">
|
||||
<t
|
||||
t-if="widget.children.length === 1"
|
||||
>Please navigate below and select field:</t>
|
||||
<t t-else="">
|
||||
<span>SSMatch records with</span>
|
||||
<t t-call="DomainTree.OperatorSelector" />
|
||||
<span>of the following rules:</span>
|
||||
</t>
|
||||
</div>
|
||||
|
||||
<div class="o_domain_node_children_container" />
|
||||
</t>
|
||||
</t>
|
||||
<t t-if="!widget.options.partialUse">
|
||||
<t t-if="widget.children.length === 0">
|
||||
<span>Match <strong>all records</strong></span>
|
||||
<button
|
||||
t-if="!widget.readonly"
|
||||
class="btn btn-sm btn-primary o_domain_add_first_node_button"
|
||||
><i class="fa fa-plus" /> Add filter</button>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<div class="o_domain_tree_header">
|
||||
<t
|
||||
t-if="widget.children.length === 1"
|
||||
>Match records with the following rule:</t>
|
||||
<t t-else="">
|
||||
<span>Match records with</span>
|
||||
<t t-call="DomainTree.OperatorSelector" />
|
||||
<span>of the following rules:</span>
|
||||
</t>
|
||||
</div>
|
||||
|
||||
<div class="o_domain_node_children_container" />
|
||||
</t>
|
||||
|
||||
<label
|
||||
t-if="widget.debug && !widget.readonly"
|
||||
class="o_domain_debug_container"
|
||||
>
|
||||
<span class="small"># Code editor</span>
|
||||
<input type="text" class="o_domain_debug_input" />
|
||||
</label>
|
||||
</t>
|
||||
</div>
|
||||
<t t-name="DomainNode.ControlPanel">
|
||||
<t t-if="widget.options.partialUse">
|
||||
<div
|
||||
t-if="!widget.readonly && !widget.noControlPanel"
|
||||
class="o_domain_node_control_panel"
|
||||
role="toolbar"
|
||||
aria-label="Domain node"
|
||||
>
|
||||
</div>
|
||||
</t>
|
||||
<t t-if="!widget.options.partialUse">
|
||||
<div
|
||||
t-if="!widget.readonly && !widget.noControlPanel"
|
||||
class="o_domain_node_control_panel"
|
||||
role="toolbar"
|
||||
aria-label="Domain node"
|
||||
>
|
||||
<button
|
||||
class="btn o_domain_delete_node_button"
|
||||
title="Delete node"
|
||||
aria-label="Delete node"
|
||||
><i class="fa fa-times" /></button>
|
||||
<button
|
||||
class="btn o_domain_add_node_button"
|
||||
title="Add node"
|
||||
aria-label="Add node"
|
||||
><i class="fa fa-plus-circle" /></button>
|
||||
<button
|
||||
class="btn o_domain_add_node_button"
|
||||
title="Add branch"
|
||||
aria-label="Add branch"
|
||||
data-branch="1"
|
||||
><i class="fa fa-ellipsis-h" /></button>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
<div
|
||||
t-name="DomainLeaf"
|
||||
t-attf-class="o_domain_node o_domain_leaf o_domain_selector_row #{widget.readonly ? 'o_read_mode' : 'o_edit_mode'}"
|
||||
>
|
||||
<t t-call="DomainNode.ControlPanel" />
|
||||
|
||||
<div t-if="!widget.readonly" class="o_domain_leaf_edition">
|
||||
<!-- field selector will be instantiated here -->
|
||||
<t t-if="!widget.options.partialUse">
|
||||
<div> <!-- used for flex stretching -->
|
||||
<select class="o_domain_leaf_operator_select o_input">
|
||||
<option
|
||||
t-foreach="widget.operators"
|
||||
t-as="key"
|
||||
t-att-value="key"
|
||||
t-att-selected="widget.displayOperator === key ? 'selected' : None"
|
||||
>
|
||||
<t t-esc="key_value" />
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<div
|
||||
t-attf-class="o_ds_value_cell#{_.contains(['set', 'not set'], widget.displayOperator) ? ' d-none' : ''}"
|
||||
>
|
||||
<t t-if="widget.selectionChoices !== null">
|
||||
<select class="o_domain_leaf_value_input o_input">
|
||||
<option
|
||||
t-foreach="widget.selectionChoices"
|
||||
t-as="val"
|
||||
t-att-value="val[0]"
|
||||
t-att-selected="_.contains(val, widget.displayValue) ? 'selected' : None"
|
||||
>
|
||||
<t t-esc="val[1]" />
|
||||
</option>
|
||||
</select>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<t t-if="_.contains(['in', 'not in'], widget.operator)">
|
||||
<div class="o_domain_leaf_value_input">
|
||||
<span
|
||||
class="badge badge-pill"
|
||||
t-foreach="widget.displayValue"
|
||||
t-as="val"
|
||||
>
|
||||
<t t-esc="val" /> <i
|
||||
class="o_domain_leaf_value_remove_tag_button fa fa-times"
|
||||
t-att-data-value="val"
|
||||
role="img"
|
||||
aria-label="Remove tag"
|
||||
title="Remove tag"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<div class="o_domain_leaf_value_tags">
|
||||
<input
|
||||
placeholder="Add new value"
|
||||
type="text"
|
||||
class="o_input"
|
||||
/>
|
||||
<button
|
||||
class="btn btn-sm btn-primary fa fa-plus o_domain_leaf_value_add_tag_button"
|
||||
aria-label="Add tag"
|
||||
title="Add tag"
|
||||
/>
|
||||
</div>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<input
|
||||
class="o_domain_leaf_value_input o_input"
|
||||
type="text"
|
||||
t-att-value="widget.displayValue"
|
||||
/>
|
||||
</t>
|
||||
</t>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
<div t-else="" class="o_domain_leaf_info">
|
||||
<!-- field selector will be instantiated here -->
|
||||
<t t-if="_.isString(widget.value)">
|
||||
<span class="o_domain_leaf_operator"><t
|
||||
t-esc="widget.operator_mapping[widget.operator]"
|
||||
/></span>
|
||||
<span class="o_domain_leaf_value text-primary">"<t
|
||||
t-esc="widget.value"
|
||||
/>"</span>
|
||||
</t>
|
||||
<t t-if="_.isArray(widget.value)">
|
||||
<span class="o_domain_leaf_operator"><t
|
||||
t-esc="widget.operator_mapping[widget.operator]"
|
||||
/></span>
|
||||
<t t-foreach="widget.value" t-as="v">
|
||||
<span class="o_domain_leaf_value text-primary">"<t
|
||||
t-esc="v"
|
||||
/>"</span>
|
||||
<t t-if="!v_last"> or </t>
|
||||
</t>
|
||||
</t>
|
||||
<t t-if="_.isNumber(widget.value)">
|
||||
<span class="o_domain_leaf_operator"><t
|
||||
t-esc="widget.operator_mapping[widget.operator]"
|
||||
/></span>
|
||||
<span class="o_domain_leaf_value text-primary"><t
|
||||
t-esc="widget.value"
|
||||
/></span>
|
||||
</t>
|
||||
<t t-if="_.isBoolean(widget.value)">
|
||||
is
|
||||
<t
|
||||
t-if="widget.operator === '=' && widget.value === false || widget.operator === '!=' && widget.value === true"
|
||||
>not</t>
|
||||
set
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
aria-atomic="true"
|
||||
t-name="ModelFieldSelector"
|
||||
t-attf-class="o_field_selector#{!widget.options.readonly ? ' o_edit_mode o_input' : ''}"
|
||||
>
|
||||
<div class="o_field_selector_value" tabindex="0" />
|
||||
<t t-if="!widget.options.partialUse">
|
||||
<div class="o_field_selector_controls" tabindex="0">
|
||||
<i
|
||||
role="alert"
|
||||
class="fa fa-exclamation-triangle o_field_selector_warning d-none"
|
||||
title="Invalid field chain"
|
||||
aria-label="Invalid field chain"
|
||||
/>
|
||||
</div>
|
||||
</t>
|
||||
<div
|
||||
t-if="!widget.options.readonly"
|
||||
class="o_field_selector_popover d-none"
|
||||
tabindex="0"
|
||||
>
|
||||
<div class="o_field_selector_popover_header text-center">
|
||||
<i
|
||||
class="fa fa-arrow-left o_field_selector_popover_option o_field_selector_prev_page"
|
||||
title="Previous"
|
||||
role="img"
|
||||
aria-label="Previous"
|
||||
/>
|
||||
<div class="o_field_selector_title" />
|
||||
<i
|
||||
class="fa fa-times o_field_selector_popover_option o_field_selector_close"
|
||||
title="Close"
|
||||
role="img"
|
||||
aria-label="Close"
|
||||
/>
|
||||
</div>
|
||||
<div class="o_field_selector_popover_body">
|
||||
<ul class="o_field_selector_page" />
|
||||
</div>
|
||||
<div
|
||||
t-if="widget.options.debugMode"
|
||||
class="o_field_selector_popover_footer"
|
||||
>
|
||||
<input type="text" class="o_input" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</templates>
|
||||
@@ -6,3 +6,4 @@ from . import test_agreement_clause
|
||||
from . import test_agreement_line
|
||||
from . import test_agreement_recital
|
||||
from . import test_agreement_section
|
||||
from . import test_create_agreement_wizard
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
from datetime import timedelta
|
||||
|
||||
from lxml import etree
|
||||
|
||||
from odoo import fields
|
||||
from odoo.tests.common import TransactionCase
|
||||
|
||||
@@ -107,7 +109,7 @@ class TestAgreement(TransactionCase):
|
||||
agreement_01.parties = "${object.name}"
|
||||
self.assertEqual(
|
||||
agreement_01.dynamic_parties,
|
||||
"<p>{" + str(agreement_01.id) + ": '</p><p>TestAgreement</p>'}",
|
||||
"<p>TestAgreement</p>",
|
||||
)
|
||||
|
||||
# TEST 07: Test Special Terms Dynamic Field
|
||||
@@ -116,7 +118,7 @@ class TestAgreement(TransactionCase):
|
||||
agreement_01.special_terms = "${object.name}"
|
||||
self.assertEqual(
|
||||
agreement_01.dynamic_special_terms,
|
||||
"{" + str(agreement_01.id) + ": 'TestAgreement'}",
|
||||
"TestAgreement",
|
||||
)
|
||||
|
||||
# TEST 02: Check Read Stages
|
||||
@@ -129,3 +131,15 @@ class TestAgreement(TransactionCase):
|
||||
order="id",
|
||||
),
|
||||
)
|
||||
|
||||
# Test fields_view_get
|
||||
def test_agreement_fields_view_get(self):
|
||||
res = self.env["agreement"].fields_view_get(
|
||||
view_id=self.ref("agreement_legal.partner_agreement_form_view"),
|
||||
view_type="form",
|
||||
)
|
||||
doc = etree.XML(res["arch"])
|
||||
field = doc.xpath("//field[@name='partner_contact_id']")
|
||||
self.assertEqual(
|
||||
field[0].get("modifiers", ""), '{"readonly": [["readonly", "=", true]]}'
|
||||
)
|
||||
|
||||
@@ -77,5 +77,5 @@ class TestAgreementAppendices(TransactionCase):
|
||||
appendix_01.content = "${object.name}"
|
||||
self.assertEqual(
|
||||
appendix_01.dynamic_content,
|
||||
"<p>{" + str(appendix_01.id) + ": '</p><p>TestAppendices</p>'}",
|
||||
"<p>TestAppendices</p>",
|
||||
)
|
||||
|
||||
@@ -77,5 +77,5 @@ class TestAgreementClauses(TransactionCase):
|
||||
clause_01.content = "${object.name}"
|
||||
self.assertEqual(
|
||||
clause_01.dynamic_content,
|
||||
"<p>{" + str(clause_01.id) + ": '</p><p>TestClause</p>'}",
|
||||
"<p>TestClause</p>",
|
||||
)
|
||||
|
||||
@@ -77,5 +77,5 @@ class TestAgreementRectical(TransactionCase):
|
||||
recital_01.content = "${object.name}"
|
||||
self.assertEqual(
|
||||
recital_01.dynamic_content,
|
||||
"<p>{" + str(recital_01.id) + ": '</p><p>TestRecital</p>'}",
|
||||
"<p>TestRecital</p>",
|
||||
)
|
||||
|
||||
@@ -77,5 +77,5 @@ class TestAgreementSection(TransactionCase):
|
||||
section_01.content = "${object.name}"
|
||||
self.assertEqual(
|
||||
section_01.dynamic_content,
|
||||
"<p>{" + str(section_01.id) + ": '</p><p>TestSection</p>'}",
|
||||
"<p>TestSection</p>",
|
||||
)
|
||||
|
||||
80
agreement_legal/tests/test_create_agreement_wizard.py
Normal file
80
agreement_legal/tests/test_create_agreement_wizard.py
Normal file
@@ -0,0 +1,80 @@
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)
|
||||
|
||||
from odoo.tests.common import TransactionCase
|
||||
|
||||
|
||||
class TestCreateAgreementWizard(TransactionCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.agreement_type = self.env["agreement.type"].create(
|
||||
{
|
||||
"name": "Test Agreement Type",
|
||||
"domain": "sale",
|
||||
}
|
||||
)
|
||||
# Create Agreement Template
|
||||
self.agreement_template = self.env["agreement"].create(
|
||||
{
|
||||
"name": "Test Agreement Template",
|
||||
"description": "Test",
|
||||
"state": "active",
|
||||
"agreement_type_id": self.agreement_type.id,
|
||||
"is_template": True,
|
||||
}
|
||||
)
|
||||
# Create Recital
|
||||
self.env["agreement.recital"].create(
|
||||
{
|
||||
"name": "Test Recital",
|
||||
"title": "Test",
|
||||
"content": "Test",
|
||||
"agreement_id": self.agreement_template.id,
|
||||
}
|
||||
)
|
||||
# Create Section
|
||||
self.section = self.env["agreement.section"].create(
|
||||
{
|
||||
"name": "Test Section",
|
||||
"title": "Test",
|
||||
"content": "Test",
|
||||
"agreement_id": self.agreement_template.id,
|
||||
}
|
||||
)
|
||||
# Create Clause
|
||||
self.env["agreement.clause"].create(
|
||||
{
|
||||
"name": "Test Clause",
|
||||
"title": "Test",
|
||||
"content": "Test",
|
||||
"agreement_id": self.agreement_template.id,
|
||||
"section_id": self.section.id,
|
||||
}
|
||||
)
|
||||
# Create Appendix
|
||||
self.env["agreement.appendix"].create(
|
||||
{
|
||||
"name": "Test Appendices",
|
||||
"title": "Test",
|
||||
"content": "Test",
|
||||
"agreement_id": self.agreement_template.id,
|
||||
}
|
||||
)
|
||||
|
||||
# Test create agreement from template
|
||||
def test_create_agreement(self):
|
||||
template = self.agreement_template
|
||||
wizard = self.env["create.agreement.wizard"].create(
|
||||
{
|
||||
"template_id": self.agreement_template.id,
|
||||
"name": "Test Agreement",
|
||||
}
|
||||
)
|
||||
res = wizard.create_agreement()
|
||||
agreement = self.env[res["res_model"]].browse(res["res_id"])
|
||||
self.assertEqual(agreement.template_id, template)
|
||||
self.assertEqual(agreement.is_template, False)
|
||||
self.assertEqual(agreement.recital_ids.name, template.recital_ids.name)
|
||||
self.assertEqual(agreement.sections_ids.name, template.sections_ids.name)
|
||||
self.assertEqual(agreement.clauses_ids.name, template.clauses_ids.name)
|
||||
self.assertEqual(agreement.clauses_ids.section_id, agreement.sections_ids)
|
||||
self.assertEqual(agreement.appendix_ids.name, template.appendix_ids.name)
|
||||
@@ -5,13 +5,15 @@
|
||||
<field name="name">Agreement List</field>
|
||||
<field name="model">agreement</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Agreements" default_order='name'>
|
||||
<tree string="Agreements" default_order="code desc, name">
|
||||
<field name="code" />
|
||||
<field name="name" />
|
||||
<field name="partner_id" />
|
||||
<field name="company_id" />
|
||||
<field name="parent_agreement_id" />
|
||||
<field name="agreement_type_id" />
|
||||
<field name="agreement_subtype_id" />
|
||||
<field name="stage_id" />
|
||||
<field name="active" invisible="1" />
|
||||
</tree>
|
||||
</field>
|
||||
@@ -43,12 +45,18 @@
|
||||
name="stage_id"
|
||||
widget="statusbar"
|
||||
clickable="True"
|
||||
options="{'fold_field': 'fold'}"
|
||||
options="{'clickable': 1, 'fold_field': 'fold'}"
|
||||
domain="[('stage_type', '=', 'agreement')]"
|
||||
/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box" />
|
||||
<widget
|
||||
name="web_ribbon"
|
||||
title="Template"
|
||||
bg_color="bg-info"
|
||||
attrs="{'invisible': [('is_template', '=', False)]}"
|
||||
/>
|
||||
<div class="oe_title">
|
||||
<label
|
||||
for="name"
|
||||
@@ -66,7 +74,11 @@
|
||||
name="parent_agreement_id"
|
||||
domain="[('partner_id', '=', partner_id)]"
|
||||
/>
|
||||
<field name="is_template" />
|
||||
<field name="is_template" invisible="1" />
|
||||
<field
|
||||
name="template_id"
|
||||
attrs="{'invisible': [('is_template', '=', True)]}"
|
||||
/>
|
||||
</group>
|
||||
<group>
|
||||
<field
|
||||
@@ -85,6 +97,7 @@
|
||||
/>
|
||||
<field name="active" invisible="1" />
|
||||
<field name="state" invisible="1" />
|
||||
<field name="readonly" invisible="1" />
|
||||
</group>
|
||||
</group>
|
||||
<group string="Description">
|
||||
@@ -138,7 +151,7 @@
|
||||
<field
|
||||
name="partner_id"
|
||||
context="{'show_address': 1}"
|
||||
options="{"always_reload": True}"
|
||||
options="{'always_reload': True}"
|
||||
/>
|
||||
</div>
|
||||
</group>
|
||||
@@ -148,7 +161,7 @@
|
||||
name="company_id"
|
||||
readonly="1"
|
||||
context="{'show_address': 1}"
|
||||
options="{"always_reload": True}"
|
||||
options="{'always_reload': True}"
|
||||
/>
|
||||
</div>
|
||||
<field name="company_partner_id" invisible="1" />
|
||||
@@ -201,6 +214,10 @@
|
||||
</group>
|
||||
<group name="term_information">
|
||||
<group name="termdates_left" string="Term Dates">
|
||||
<field
|
||||
name="signature_date"
|
||||
attrs="{'invisible': [('is_template', '=', True)]}"
|
||||
/>
|
||||
<field
|
||||
name="start_date"
|
||||
attrs="{'required': [('is_template', '=', False)], 'invisible': [('is_template', '=', True)]}"
|
||||
@@ -241,30 +258,26 @@
|
||||
<separator string="Recitals" />
|
||||
<field
|
||||
name="recital_ids"
|
||||
default_order="sequence"
|
||||
nolabel="1"
|
||||
context="{'default_agreement': active_id}"
|
||||
context="{'tree_view_ref': 'agreement_legal.agreement_recital_tree2', 'form_view_ref': 'agreement_legal.agreement_recital_form2'}"
|
||||
/>
|
||||
<separator string="Sections" />
|
||||
<field
|
||||
name="sections_ids"
|
||||
default_order='sequence'
|
||||
nolabel="1"
|
||||
context="{'default_agreement': active_id}"
|
||||
context="{'tree_view_ref': 'agreement_legal.partner_agreement_section_list_view2', 'form_view_ref': 'agreement_legal.partner_agreement_section_form_view2'}"
|
||||
/>
|
||||
<separator string="Clauses" />
|
||||
<field
|
||||
name="clauses_ids"
|
||||
default_order='clause_id, sequence'
|
||||
nolabel="1"
|
||||
context="{'default_agreement': active_id}"
|
||||
context="{'tree_view_ref': 'agreement_legal.partner_agreement_clause_list_view2', 'form_view_ref': 'agreement_legal.partner_agreement_clause_form_view2', 'default_temp_agreement_id': active_id}"
|
||||
/>
|
||||
<separator string="Appendices" />
|
||||
<field
|
||||
name="appendix_ids"
|
||||
default_order='sequence'
|
||||
nolabel="1"
|
||||
context="{'default_agreement': active_id}"
|
||||
context="{'tree_view_ref': 'agreement_legal.agreement_appendix_tree2', 'form_view_ref': 'agreement_legal.agreement_appendix_form2'}"
|
||||
/>
|
||||
</page>
|
||||
<page name="signature" string="Signatures">
|
||||
@@ -302,7 +315,7 @@
|
||||
</page>
|
||||
<page name="child_agreements" string="Child Agreements">
|
||||
<field name="child_agreements_ids">
|
||||
<tree default_order='version desc'>
|
||||
<tree default_order="version desc">
|
||||
<field name="name" />
|
||||
<field name="version" />
|
||||
<field name="revision" />
|
||||
@@ -313,8 +326,9 @@
|
||||
<field
|
||||
name="previous_version_agreements_ids"
|
||||
string="Previouse Versions"
|
||||
readonly="1"
|
||||
>
|
||||
<tree default_order='version desc'>
|
||||
<tree default_order="version desc">
|
||||
<field name="name" />
|
||||
<field name="version" />
|
||||
<field name="revision" />
|
||||
@@ -345,14 +359,14 @@
|
||||
/>.</p>
|
||||
</div>
|
||||
</group>
|
||||
<footer>
|
||||
<p name="footer">
|
||||
Version: <field name="version" readonly="True" />.<field
|
||||
name="revision"
|
||||
readonly="True"
|
||||
/>
|
||||
| Created By: <field name="create_uid" readonly="True" />
|
||||
| Created On: <field name="create_date" readonly="True" />
|
||||
</footer>
|
||||
| Created By: <field name="created_by" readonly="True" />
|
||||
| Created On: <field name="date_created" readonly="True" />
|
||||
</p>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" widget="mail_followers" />
|
||||
@@ -467,6 +481,7 @@
|
||||
<field name="model">agreement</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Agreement Search">
|
||||
<field name="code" />
|
||||
<field name="name" />
|
||||
<field name="partner_id" />
|
||||
<field name="agreement_type_id" />
|
||||
@@ -492,11 +507,23 @@
|
||||
icon="terp-partner"
|
||||
context="{'group_by':'partner_id'}"
|
||||
/>
|
||||
<filter
|
||||
name="group_agreement_type_id"
|
||||
string="Agreement Type"
|
||||
icon="terp-partner"
|
||||
context="{'group_by':'agreement_type_id'}"
|
||||
/>
|
||||
<filter
|
||||
name="group_agreement_subtype_id"
|
||||
string="Agreement Sub-type"
|
||||
icon="terp-partner"
|
||||
context="{'group_by':'agreement_subtype_id'}"
|
||||
/>
|
||||
<filter
|
||||
name="group_status"
|
||||
string="Status"
|
||||
icon="terp-partner"
|
||||
context="{'group_by':'state'}"
|
||||
context="{'group_by':'stage_id'}"
|
||||
/>
|
||||
</search>
|
||||
</field>
|
||||
@@ -535,6 +562,7 @@
|
||||
<field name="name">Agreements</field>
|
||||
<field name="res_model">agreement</field>
|
||||
<field name="domain">[('is_template', '=', False)]</field>
|
||||
<field name="context">{'default_is_template': False}</field>
|
||||
<field name="view_mode">kanban,tree,form</field>
|
||||
</record>
|
||||
|
||||
@@ -542,6 +570,7 @@
|
||||
<field name="name">Agreements</field>
|
||||
<field name="res_model">agreement</field>
|
||||
<field name="domain">[('is_template', '=', False)]</field>
|
||||
<field name="context">{'default_is_template': False}</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
@@ -549,7 +578,7 @@
|
||||
<field name="name">Templates</field>
|
||||
<field name="res_model">agreement</field>
|
||||
<field name="domain">[('is_template', '=', True)]</field>
|
||||
<!-- <field name="context">[('is_template', '=', True)]</field> -->
|
||||
<field name="context">{'default_is_template': True}</field>
|
||||
<field name="view_mode">tree,kanban,form</field>
|
||||
</record>
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<field name="name">Agreement Appendix Tree</field>
|
||||
<field name="model">agreement.appendix</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Appendices" default_order='agreement_id, sequence'>
|
||||
<tree string="Appendices" default_order="agreement_id, sequence">
|
||||
<field name="sequence" widget="handle" />
|
||||
<field name="name" />
|
||||
<field name="title" />
|
||||
@@ -103,4 +103,35 @@
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
<!-- Agreement Appendix List View 2 (Call this view from agreement)-->
|
||||
<record model="ir.ui.view" id="agreement_appendix_tree2">
|
||||
<field name="name">Agreement Appendix Tree2</field>
|
||||
<field name="model">agreement.appendix</field>
|
||||
<field name="inherit_id" ref="agreement_appendix_tree" />
|
||||
<field name="mode">primary</field>
|
||||
<field name="priority">999</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree position="attributes">
|
||||
<attribute name="default_order">sequence</attribute>
|
||||
</tree>
|
||||
<field name="agreement_id" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Agreement Appendix Form View 2 (Call this view from agreement)-->
|
||||
<record model="ir.ui.view" id="agreement_appendix_form2">
|
||||
<field name="name">Agreement Appendix Form2</field>
|
||||
<field name="model">agreement.appendix</field>
|
||||
<field name="inherit_id" ref="agreement_appendix_form" />
|
||||
<field name="mode">primary</field>
|
||||
<field name="priority">999</field>
|
||||
<field name="arch" type="xml">
|
||||
<field name="agreement_id" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<field name="name">Agreement Clause List</field>
|
||||
<field name="model">agreement.clause</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Clauses" default_order='agreement_id, sequence'>
|
||||
<tree string="Clauses" default_order="agreement_id, sequence">
|
||||
<field name="sequence" widget="handle" />
|
||||
<field name="name" />
|
||||
<field name="title" />
|
||||
@@ -113,4 +113,43 @@
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
<!-- Agreement Clause List View 2 (Call this view from agreement)-->
|
||||
<record model="ir.ui.view" id="partner_agreement_clause_list_view2">
|
||||
<field name="name">Agreement Clause List2</field>
|
||||
<field name="model">agreement.clause</field>
|
||||
<field name="inherit_id" ref="partner_agreement_clause_list_view" />
|
||||
<field name="mode">primary</field>
|
||||
<field name="priority">999</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree position="attributes">
|
||||
<attribute name="default_order">sequence</attribute>
|
||||
</tree>
|
||||
<field name="agreement_id" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Agreement Clause Form View 2 (Call this view from agreement)-->
|
||||
<record model="ir.ui.view" id="partner_agreement_clause_form_view2">
|
||||
<field name="name">Agreement Clause Form2</field>
|
||||
<field name="model">agreement.clause</field>
|
||||
<field name="inherit_id" ref="partner_agreement_clause_form_view" />
|
||||
<field name="mode">primary</field>
|
||||
<field name="priority">999</field>
|
||||
<field name="arch" type="xml">
|
||||
<field name="agreement_id" position="after">
|
||||
<field name="temp_agreement_id" invisible="1" />
|
||||
</field>
|
||||
<field name="agreement_id" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
</field>
|
||||
<field name="section_id" position="attributes">
|
||||
<attribute
|
||||
name="domain"
|
||||
>[('agreement_id', '=', temp_agreement_id)]</attribute>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
<odoo>
|
||||
|
||||
<!-- Agreement Increase Type List View-->
|
||||
<record model="ir.ui.view" id="partner_agreement_increasetype_list_view">
|
||||
<field name="name">Agreement Increase Type List</field>
|
||||
<field name="model">agreement.increasetype</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree default_order='name'>
|
||||
<field name="name" />
|
||||
<field name="description" />
|
||||
<field name="increase_percent" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Agreement Increase Type Form View -->
|
||||
<record model="ir.ui.view" id="partner_agreement_increasetype_form_view">
|
||||
<field name="name">Agreement Increase Type Form</field>
|
||||
<field name="model">agreement.increasetype</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Agreements Type Form">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name" />
|
||||
</group>
|
||||
<group>
|
||||
<field name="increase_percent" />
|
||||
</group>
|
||||
<group string="Description">
|
||||
<field name="description" nolabel="1" />
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Actions opening views on models -->
|
||||
<record model="ir.actions.act_window" id="partner_agreement_action_increasetype">
|
||||
<field name="name">Agreement Increase Type</field>
|
||||
<field name="res_model">agreement.increasetype</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
@@ -5,7 +5,7 @@
|
||||
<field name="name">Agreement Recital Tree</field>
|
||||
<field name="model">agreement.recital</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Recitals" default_order='agreement_id, sequence'>
|
||||
<tree string="Recitals" default_order="agreement_id, sequence">
|
||||
<field name="sequence" widget="handle" />
|
||||
<field name="name" />
|
||||
<field name="title" />
|
||||
@@ -103,4 +103,35 @@
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
<!-- Agreement Recital List View 2 (Call this view from agreement)-->
|
||||
<record model="ir.ui.view" id="agreement_recital_tree2">
|
||||
<field name="name">Agreement Recital Tree2</field>
|
||||
<field name="model">agreement.recital</field>
|
||||
<field name="inherit_id" ref="agreement_recital_tree" />
|
||||
<field name="mode">primary</field>
|
||||
<field name="priority">999</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree position="attributes">
|
||||
<attribute name="default_order">sequence</attribute>
|
||||
</tree>
|
||||
<field name="agreement_id" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Agreement Recital Form View 2 (Call this view from agreement)-->
|
||||
<record model="ir.ui.view" id="agreement_recital_form2">
|
||||
<field name="name">Agreement Recital Form2</field>
|
||||
<field name="model">agreement.recital</field>
|
||||
<field name="inherit_id" ref="agreement_recital_form" />
|
||||
<field name="mode">primary</field>
|
||||
<field name="priority">999</field>
|
||||
<field name="arch" type="xml">
|
||||
<field name="agreement_id" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
<odoo>
|
||||
|
||||
<!-- Agreement Renewal Type List View-->
|
||||
<record model="ir.ui.view" id="partner_agreement_renewaltype_list_view">
|
||||
<field name="name">Agreement Renewal Type List</field>
|
||||
<field name="model">agreement.renewaltype</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree default_order='name'>
|
||||
<field name="name" />
|
||||
<field name="description" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Agreement Renewal Type Form View -->
|
||||
<record model="ir.ui.view" id="partner_agreement_renewaltype_form_view">
|
||||
<field name="name">Agreement Renewal Type Form</field>
|
||||
<field name="model">agreement.renewaltype</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Agreements Type Form">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name" />
|
||||
</group>
|
||||
<group string="Description">
|
||||
<field name="description" nolabel="1" />
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Actions opening views on models -->
|
||||
<record model="ir.actions.act_window" id="partner_agreement_action_renewaltype">
|
||||
<field name="name">Agreement Renewal Type</field>
|
||||
<field name="res_model">agreement.renewaltype</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
@@ -5,7 +5,7 @@
|
||||
<field name="name">Agreement Section List</field>
|
||||
<field name="model">agreement.section</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Sections" default_order='agreement_id, sequence'>
|
||||
<tree string="Sections" default_order="agreement_id, sequence">
|
||||
<field name="sequence" widget="handle" />
|
||||
<field name="name" />
|
||||
<field name="title" />
|
||||
@@ -122,4 +122,35 @@
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
<!-- Agreement Sections List View 2 (Call this view from agreement)-->
|
||||
<record model="ir.ui.view" id="partner_agreement_section_list_view2">
|
||||
<field name="name">Agreement Section List2</field>
|
||||
<field name="model">agreement.section</field>
|
||||
<field name="inherit_id" ref="partner_agreement_section_list_view" />
|
||||
<field name="mode">primary</field>
|
||||
<field name="priority">999</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree position="attributes">
|
||||
<attribute name="default_order">sequence</attribute>
|
||||
</tree>
|
||||
<field name="agreement_id" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Agreement Sections Form View 2 (Call this view from agreement)-->
|
||||
<record model="ir.ui.view" id="partner_agreement_section_form_view2">
|
||||
<field name="name">Agreement Section Form2</field>
|
||||
<field name="model">agreement.section</field>
|
||||
<field name="inherit_id" ref="partner_agreement_section_form_view" />
|
||||
<field name="mode">primary</field>
|
||||
<field name="priority">999</field>
|
||||
<field name="arch" type="xml">
|
||||
<field name="agreement_id" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
||||
@@ -5,10 +5,11 @@
|
||||
<field name="name">Agreement Stage List</field>
|
||||
<field name="model">agreement.stage</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree default_order='sequence, name'>
|
||||
<tree default_order="sequence, name">
|
||||
<field name="sequence" widget="handle" />
|
||||
<field name="name" string="Stage Name" />
|
||||
<field name="name" />
|
||||
<field name="stage_type" />
|
||||
<field name="active" widget="boolean_toggle" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -20,20 +21,52 @@
|
||||
<field name="arch" type="xml">
|
||||
<form string="Agreements Stage Form">
|
||||
<sheet>
|
||||
<widget
|
||||
name="web_ribbon"
|
||||
title="Archived"
|
||||
bg_color="bg-danger"
|
||||
attrs="{'invisible': [('active', '=', True)]}"
|
||||
/>
|
||||
<div class="oe_title">
|
||||
<label for="name" class="oe_edit_only" string="Stage Name" />
|
||||
<h1><field name="name" string="Stage Name" /></h1>
|
||||
<label for="name" class="oe_edit_only" />
|
||||
<h1><field name="name" /></h1>
|
||||
</div>
|
||||
<group>
|
||||
<field name="sequence" />
|
||||
<field name="stage_type" />
|
||||
<field name="fold" />
|
||||
<field name="readonly" />
|
||||
<field name="active" invisible="1" />
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Agreement Stage Search View -->
|
||||
<record model="ir.ui.view" id="partner_agreement_stage_search_view">
|
||||
<field name="name">Agreement Stage Search</field>
|
||||
<field name="model">agreement.stage</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Agreements Stage Search">
|
||||
<field name="name" />
|
||||
<separator />
|
||||
<filter
|
||||
name="archived"
|
||||
string="Archived"
|
||||
domain="[('active', '=', False)]"
|
||||
/>
|
||||
<group name="groupby">
|
||||
<filter
|
||||
name="type_groupby"
|
||||
string="Type"
|
||||
context="{'group_by': 'stage_type'}"
|
||||
/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Actions opening views on models -->
|
||||
<record model="ir.actions.act_window" id="partner_agreement_action_stage">
|
||||
<field name="name">Agreement Stage</field>
|
||||
|
||||
@@ -5,9 +5,10 @@
|
||||
<field name="name">Agreement Subtype List</field>
|
||||
<field name="model">agreement.subtype</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree default_order='name'>
|
||||
<field name="name" string="Sub-Type Name" />
|
||||
<field name="agreement_type_id" string="Agreement Type" />
|
||||
<tree default_order="name">
|
||||
<field name="name" />
|
||||
<field name="agreement_type_id" />
|
||||
<field name="active" widget="boolean_toggle" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -19,14 +20,21 @@
|
||||
<field name="arch" type="xml">
|
||||
<form string="Agreement Sub-Types">
|
||||
<sheet>
|
||||
<widget
|
||||
name="web_ribbon"
|
||||
title="Archived"
|
||||
bg_color="bg-danger"
|
||||
attrs="{'invisible': [('active', '=', True)]}"
|
||||
/>
|
||||
<div class="oe_title">
|
||||
<label for="name" class="oe_edit_only" />
|
||||
<h1><field name="name" /></h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="agreement_type_id" />
|
||||
</group>
|
||||
<field name="agreement_type_id" />
|
||||
<field name="active" invisible="1" />
|
||||
</group>
|
||||
<group />
|
||||
</group>
|
||||
</sheet>
|
||||
@@ -34,6 +42,31 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Agreement Sub Type Search View -->
|
||||
<record model="ir.ui.view" id="partner_agreement_subtype_search_view">
|
||||
<field name="name">Agreement Sub Type Search</field>
|
||||
<field name="model">agreement.subtype</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Agreements Sub-Types Search">
|
||||
<field name="name" />
|
||||
<field name="agreement_type_id" />
|
||||
<separator />
|
||||
<filter
|
||||
name="archived"
|
||||
string="Archived"
|
||||
domain="[('active', '=', False)]"
|
||||
/>
|
||||
<group name="groupby">
|
||||
<filter
|
||||
name="agreement_type_groupby"
|
||||
string="Agreement Type"
|
||||
context="{'group_by': 'agreement_type_id'}"
|
||||
/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Actions opening views on models -->
|
||||
<record model="ir.actions.act_window" id="partner_agreement_action_subtype">
|
||||
<field name="name">Agreement Sub-Types</field>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<field name="inherit_id" ref="agreement.agreement_type_list_view" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="name" position="after">
|
||||
<field name="agreement_subtypes_ids" string="Sub-Types" />
|
||||
<field name="agreement_subtypes_ids" widget="many2many_tags" />
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
14
agreement_legal/views/assets.xml
Normal file
14
agreement_legal/views/assets.xml
Normal file
@@ -0,0 +1,14 @@
|
||||
<odoo>
|
||||
<template
|
||||
id="assets_backend"
|
||||
name="agreement_legal assets"
|
||||
inherit_id="web.assets_backend"
|
||||
>
|
||||
<xpath expr="." position="inside">
|
||||
<script
|
||||
type="text/javascript"
|
||||
src="/agreement_legal/static/src/js/agreement.js"
|
||||
/>
|
||||
</xpath>
|
||||
</template>
|
||||
</odoo>
|
||||
@@ -129,39 +129,25 @@
|
||||
sequence="20"
|
||||
action="partner_agreement_agreement_templates"
|
||||
/>
|
||||
<menuitem
|
||||
name="Renewal Types"
|
||||
id="agreement_renewaltype"
|
||||
parent="agreement_configuration"
|
||||
sequence="30"
|
||||
action="partner_agreement_action_renewaltype"
|
||||
/>
|
||||
<menuitem
|
||||
name="Increase Types"
|
||||
id="agreement_increamenttypes"
|
||||
parent="agreement_configuration"
|
||||
sequence="31"
|
||||
action="partner_agreement_action_increasetype"
|
||||
/>
|
||||
<menuitem
|
||||
name="Stages"
|
||||
id="agreement_stages"
|
||||
parent="agreement_configuration"
|
||||
sequence="40"
|
||||
sequence="30"
|
||||
action="partner_agreement_action_stage"
|
||||
/>
|
||||
<menuitem
|
||||
name="Types"
|
||||
id="agreement_types"
|
||||
parent="agreement_configuration"
|
||||
sequence="50"
|
||||
sequence="40"
|
||||
action="partner_agreement_action_type"
|
||||
/>
|
||||
<menuitem
|
||||
name="Sub-Types"
|
||||
id="agreement_subtypes"
|
||||
parent="agreement_configuration"
|
||||
sequence="60"
|
||||
sequence="50"
|
||||
action="partner_agreement_action_subtype"
|
||||
/>
|
||||
</odoo>
|
||||
|
||||
3
agreement_legal/wizards/__init__.py
Normal file
3
agreement_legal/wizards/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from . import create_agreement_wizard
|
||||
31
agreement_legal/wizards/create_agreement_wizard.py
Normal file
31
agreement_legal/wizards/create_agreement_wizard.py
Normal file
@@ -0,0 +1,31 @@
|
||||
# Copyright 2021 Ecosoft Co., Ltd (http://ecosoft.co.th)
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class CreateAgreementWizard(models.TransientModel):
|
||||
_name = "create.agreement.wizard"
|
||||
_description = "Create Agreement Wizard"
|
||||
|
||||
template_id = fields.Many2one(
|
||||
"agreement",
|
||||
string="Template",
|
||||
required=True,
|
||||
domain=[("is_template", "=", True)],
|
||||
)
|
||||
name = fields.Char(string="Title", required=True)
|
||||
|
||||
def create_agreement(self):
|
||||
self.ensure_one()
|
||||
res = self.template_id.create_new_agreement()
|
||||
agreement = self.env[res["res_model"]].browse(res["res_id"])
|
||||
agreement.write(
|
||||
{
|
||||
"name": self.name,
|
||||
"description": self.name,
|
||||
"template_id": self.template_id.id,
|
||||
"revision": 0,
|
||||
}
|
||||
)
|
||||
return res
|
||||
34
agreement_legal/wizards/create_agreement_wizard.xml
Normal file
34
agreement_legal/wizards/create_agreement_wizard.xml
Normal file
@@ -0,0 +1,34 @@
|
||||
<odoo>
|
||||
<record id="create_agreement_from_template_form_view" model="ir.ui.view">
|
||||
<field name="name">Create Agreement From Template</field>
|
||||
<field name="model">create.agreement.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<group>
|
||||
<group>
|
||||
<field name="template_id" />
|
||||
</group>
|
||||
<group>
|
||||
<field name="name" />
|
||||
</group>
|
||||
</group>
|
||||
<footer>
|
||||
<button
|
||||
name="create_agreement"
|
||||
string="Create Agreement"
|
||||
class="btn-primary"
|
||||
type="object"
|
||||
/>
|
||||
<button string="Cancel" class="btn-default" special="cancel" />
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="create_agreement_from_template_action" model="ir.actions.act_window">
|
||||
<field name="name">Create From Template</field>
|
||||
<field name="res_model">create.agreement.wizard</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
</odoo>
|
||||
118
agreement_project/README.rst
Normal file
118
agreement_project/README.rst
Normal file
@@ -0,0 +1,118 @@
|
||||
===================
|
||||
Agreement - Project
|
||||
===================
|
||||
|
||||
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! 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/14.0/agreement_project
|
||||
:alt: OCA/contract
|
||||
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
|
||||
:target: https://translation.odoo-community.org/projects/contract-14-0/contract-14-0-agreement_project
|
||||
: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/14.0
|
||||
:alt: Try me on Runbot
|
||||
|
||||
|badge1| |badge2| |badge3| |badge4| |badge5|
|
||||
|
||||
Odoo Agreement App does not provide an easy way to access project tasks related to an agreement.
|
||||
Some organizations needs to have a quick access to project tasks to track the performance of an agreement.
|
||||
|
||||
This module allows you to link a project task to an agreement and
|
||||
adds a smart button on the agreement to look at the list of related project tasks.
|
||||
|
||||
**Table of contents**
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
To use this module, you need to:
|
||||
|
||||
* Go to Project > Configuration > Projects
|
||||
* Select or create a project and set the agreement
|
||||
* Go to Agreement > Agreements
|
||||
* Open the previous agreement
|
||||
* Click on the smart button "Tasks" to see the list of related project tasks
|
||||
|
||||
Known issues / Roadmap
|
||||
======================
|
||||
|
||||
The roadmap of the Agreement application is documented on
|
||||
`Github <https://github.com/OCA/contract/issues>`_.
|
||||
|
||||
Bug Tracker
|
||||
===========
|
||||
|
||||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/contract/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 <https://github.com/OCA/contract/issues/new?body=module:%20agreement_project%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
||||
|
||||
Do not contact contributors directly about support or help with technical issues.
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Authors
|
||||
~~~~~~~
|
||||
|
||||
* Open Source Integrators
|
||||
* Yves Goldberg (Ygol Internetwork)
|
||||
|
||||
Contributors
|
||||
~~~~~~~~~~~~
|
||||
|
||||
* Sandip Mangukiya <smangukiya@opensourceintegrators.com>
|
||||
* Yves Goldberg <yves@ygol.com>
|
||||
* Helly kapatel <helly.kapatel@initos.com>
|
||||
|
||||
Other credits
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
The development of this module has been financially supported by:
|
||||
|
||||
* Open Source Integrators <https://opensourceintegrators.com>
|
||||
|
||||
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-smangukiya| image:: https://github.com/smangukiya.png?size=40px
|
||||
:target: https://github.com/smangukiya
|
||||
:alt: smangukiya
|
||||
.. |maintainer-ygol| image:: https://github.com/ygol.png?size=40px
|
||||
:target: https://github.com/ygol
|
||||
:alt: ygol
|
||||
.. |maintainer-max3903| image:: https://github.com/max3903.png?size=40px
|
||||
:target: https://github.com/max3903
|
||||
:alt: max3903
|
||||
|
||||
Current `maintainers <https://odoo-community.org/page/maintainer-role>`__:
|
||||
|
||||
|maintainer-smangukiya| |maintainer-ygol| |maintainer-max3903|
|
||||
|
||||
This module is part of the `OCA/contract <https://github.com/OCA/contract/tree/14.0/agreement_project>`_ project on GitHub.
|
||||
|
||||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
||||
4
agreement_project/__init__.py
Normal file
4
agreement_project/__init__.py
Normal file
@@ -0,0 +1,4 @@
|
||||
# Copyright (C) 2018 - TODAY, Open Source Integrators
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from . import models
|
||||
26
agreement_project/__manifest__.py
Normal file
26
agreement_project/__manifest__.py
Normal file
@@ -0,0 +1,26 @@
|
||||
# Copyright (C) 2018 - TODAY, Open Source Integrators
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
{
|
||||
"name": "Agreement - Project",
|
||||
"summary": "Link projects to an agreement",
|
||||
"version": "14.0.1.0.0",
|
||||
"category": "Contract",
|
||||
"author": "Open Source Integrators, "
|
||||
"Yves Goldberg (Ygol Internetwork), "
|
||||
"Odoo Community Association (OCA)",
|
||||
"website": "https://github.com/OCA/contract",
|
||||
"depends": ["agreement_legal", "project"],
|
||||
"data": [
|
||||
"views/agreement_view.xml",
|
||||
"views/project_view.xml",
|
||||
],
|
||||
"installable": True,
|
||||
"license": "AGPL-3",
|
||||
"development_status": "Beta",
|
||||
"maintainers": [
|
||||
"smangukiya",
|
||||
"ygol",
|
||||
"max3903",
|
||||
],
|
||||
}
|
||||
72
agreement_project/i18n/agreement_project.pot
Normal file
72
agreement_project/i18n/agreement_project.pot
Normal file
@@ -0,0 +1,72 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * agreement_project
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 14.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_agreement__task_count
|
||||
msgid "# Tasks"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_project
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_project.partner_agreement_form_view_task
|
||||
msgid "<span class=\"o_stat_text\">Tasks</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_agreement
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_project_project__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_project_task__agreement_id
|
||||
msgid "Agreement"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_project
|
||||
#: model_terms:ir.actions.act_window,help:agreement_project.action_project_task_agreement_specific
|
||||
msgid "Create Tasks"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_agreement__display_name
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_project_project__display_name
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_project_task__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_agreement__id
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_project_project__id
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_project_task__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_agreement____last_update
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_project_project____last_update
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_project_task____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_project_project
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_project_task
|
||||
msgid "Task"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.actions.act_window,name:agreement_project.action_project_task_agreement_specific
|
||||
msgid "Tasks"
|
||||
msgstr ""
|
||||
60
agreement_project/i18n/de.po
Normal file
60
agreement_project/i18n/de.po
Normal file
@@ -0,0 +1,60 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * agreement_project
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 11.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2019-01-11 17:41+0000\n"
|
||||
"Last-Translator: Maria Sparenberg <maria.sparenberg@gmx.net>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 3.3\n"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_agreement__task_count
|
||||
msgid "# Tasks"
|
||||
msgstr "# Aufgaben"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_project.partner_agreement_form_view_task
|
||||
msgid "<span class=\"o_stat_text\">Tasks</span>"
|
||||
msgstr "<span class=\"o_stat_text\">Aufgaben</span>"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_agreement
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_project_project__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_project_task__agreement_id
|
||||
msgid "Agreement"
|
||||
msgstr "Vereinbarung"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model_terms:ir.actions.act_window,help:agreement_project.action_project_task_agreement_specific
|
||||
msgid "Create Tasks"
|
||||
msgstr "Aufgaben anlegen"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Projekt"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_project_task
|
||||
msgid "Task"
|
||||
msgstr "Aufgabe"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.actions.act_window,name:agreement_project.action_project_task_agreement_specific
|
||||
msgid "Tasks"
|
||||
msgstr "Aufgaben"
|
||||
|
||||
#~ msgid "Service Profile"
|
||||
#~ msgstr "Dienstleistungsprofil"
|
||||
|
||||
#~ msgid "agreement"
|
||||
#~ msgstr "Vereinbarung"
|
||||
54
agreement_project/i18n/es.po
Normal file
54
agreement_project/i18n/es.po
Normal file
@@ -0,0 +1,54 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * agreement_project
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 12.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2020-03-08 15:14+0000\n"
|
||||
"Last-Translator: Antonio Pérez Ruth <antonio.perez@makrin.es>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: es\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 3.10\n"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_agreement__task_count
|
||||
msgid "# Tasks"
|
||||
msgstr "# Tareas"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_project.partner_agreement_form_view_task
|
||||
msgid "<span class=\"o_stat_text\">Tasks</span>"
|
||||
msgstr "<span class=\"o_stat_text\">Tareas</span>"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_agreement
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_project_project__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_project_task__agreement_id
|
||||
msgid "Agreement"
|
||||
msgstr "Acuerdos"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model_terms:ir.actions.act_window,help:agreement_project.action_project_task_agreement_specific
|
||||
msgid "Create Tasks"
|
||||
msgstr "Crear tareas"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Proyecto"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_project_task
|
||||
msgid "Task"
|
||||
msgstr "Tarea"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.actions.act_window,name:agreement_project.action_project_task_agreement_specific
|
||||
msgid "Tasks"
|
||||
msgstr "Tareas"
|
||||
60
agreement_project/i18n/fr.po
Normal file
60
agreement_project/i18n/fr.po
Normal file
@@ -0,0 +1,60 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * agreement_project
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 11.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2019-03-18 22:14+0000\n"
|
||||
"Last-Translator: Yves Goldberg <admin@ygol.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 3.5.1\n"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_agreement__task_count
|
||||
msgid "# Tasks"
|
||||
msgstr "# Tâches"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_project.partner_agreement_form_view_task
|
||||
msgid "<span class=\"o_stat_text\">Tasks</span>"
|
||||
msgstr "<span class=\"o_stat_text\">Tâches</span>"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_agreement
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_project_project__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_project_task__agreement_id
|
||||
msgid "Agreement"
|
||||
msgstr "Accord"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model_terms:ir.actions.act_window,help:agreement_project.action_project_task_agreement_specific
|
||||
msgid "Create Tasks"
|
||||
msgstr "Créer des tâches"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Projet"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_project_task
|
||||
msgid "Task"
|
||||
msgstr "Tâche"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.actions.act_window,name:agreement_project.action_project_task_agreement_specific
|
||||
msgid "Tasks"
|
||||
msgstr "Tâches"
|
||||
|
||||
#~ msgid "Service Profile"
|
||||
#~ msgstr "Profil de service"
|
||||
|
||||
#~ msgid "agreement"
|
||||
#~ msgstr "accord"
|
||||
54
agreement_project/i18n/pt.po
Normal file
54
agreement_project/i18n/pt.po
Normal file
@@ -0,0 +1,54 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * agreement_project
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 12.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2020-02-17 19:13+0000\n"
|
||||
"Last-Translator: Pedro Castro Silva <pedrocs@exo.pt>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: pt\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 3.10\n"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_agreement__task_count
|
||||
msgid "# Tasks"
|
||||
msgstr "# Tarefas"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_project.partner_agreement_form_view_task
|
||||
msgid "<span class=\"o_stat_text\">Tasks</span>"
|
||||
msgstr "<span class=\"o_stat_text\">Tarefas</span>"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_agreement
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_project_project__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_project_task__agreement_id
|
||||
msgid "Agreement"
|
||||
msgstr "Acordo"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model_terms:ir.actions.act_window,help:agreement_project.action_project_task_agreement_specific
|
||||
msgid "Create Tasks"
|
||||
msgstr "Criar Tarefas"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Projeto"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_project_task
|
||||
msgid "Task"
|
||||
msgstr "Tarefa"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.actions.act_window,name:agreement_project.action_project_task_agreement_specific
|
||||
msgid "Tasks"
|
||||
msgstr "Tarefas"
|
||||
54
agreement_project/i18n/pt_BR.po
Normal file
54
agreement_project/i18n/pt_BR.po
Normal file
@@ -0,0 +1,54 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * agreement_project
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 12.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2020-02-12 05:03+0000\n"
|
||||
"Last-Translator: Marcel Savegnago <marcel.savegnago@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: pt_BR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 3.10\n"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_agreement__task_count
|
||||
msgid "# Tasks"
|
||||
msgstr "# Tarefas"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_project.partner_agreement_form_view_task
|
||||
msgid "<span class=\"o_stat_text\">Tasks</span>"
|
||||
msgstr "<span class=\"o_stat_text\">Tarefas</span>"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_agreement
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_project_project__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_project_task__agreement_id
|
||||
msgid "Agreement"
|
||||
msgstr "Acordo"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model_terms:ir.actions.act_window,help:agreement_project.action_project_task_agreement_specific
|
||||
msgid "Create Tasks"
|
||||
msgstr "Criar Tarefas"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "Projeto"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_project_task
|
||||
msgid "Task"
|
||||
msgstr "Tarefa"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.actions.act_window,name:agreement_project.action_project_task_agreement_specific
|
||||
msgid "Tasks"
|
||||
msgstr "Tarefas"
|
||||
54
agreement_project/i18n/zh_CN.po
Normal file
54
agreement_project/i18n/zh_CN.po
Normal file
@@ -0,0 +1,54 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * agreement_project
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 12.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2019-09-04 18:23+0000\n"
|
||||
"Last-Translator: 黎伟杰 <674416404@qq.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: zh_CN\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 3.8\n"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_agreement__task_count
|
||||
msgid "# Tasks"
|
||||
msgstr "# 任务"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_project.partner_agreement_form_view_task
|
||||
msgid "<span class=\"o_stat_text\">Tasks</span>"
|
||||
msgstr "<span class=\"o_stat_text\">任务</span>"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_agreement
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_project_project__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_project.field_project_task__agreement_id
|
||||
msgid "Agreement"
|
||||
msgstr "协议"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model_terms:ir.actions.act_window,help:agreement_project.action_project_task_agreement_specific
|
||||
msgid "Create Tasks"
|
||||
msgstr "创建任务"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_project_project
|
||||
msgid "Project"
|
||||
msgstr "项目"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.model,name:agreement_project.model_project_task
|
||||
msgid "Task"
|
||||
msgstr "任务"
|
||||
|
||||
#. module: agreement_project
|
||||
#: model:ir.actions.act_window,name:agreement_project.action_project_task_agreement_specific
|
||||
msgid "Tasks"
|
||||
msgstr "任务"
|
||||
7
agreement_project/models/__init__.py
Normal file
7
agreement_project/models/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Copyright (C) 2018 - TODAY, Open Source Integrators
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from . import (
|
||||
project,
|
||||
agreement,
|
||||
)
|
||||
17
agreement_project/models/agreement.py
Normal file
17
agreement_project/models/agreement.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# 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 Agreement(models.Model):
|
||||
_inherit = "agreement"
|
||||
|
||||
task_count = fields.Integer("# Tasks", compute="_compute_task_count")
|
||||
|
||||
def _compute_task_count(self):
|
||||
for ag in self:
|
||||
count = self.env["project.task"].search_count(
|
||||
[("agreement_id", "=", ag.id)]
|
||||
)
|
||||
ag.task_count = count
|
||||
18
agreement_project/models/project.py
Normal file
18
agreement_project/models/project.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# 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 ProjectProject(models.Model):
|
||||
_inherit = "project.project"
|
||||
|
||||
agreement_id = fields.Many2one("agreement", "Agreement")
|
||||
|
||||
|
||||
class ProjectTask(models.Model):
|
||||
_inherit = "project.task"
|
||||
|
||||
agreement_id = fields.Many2one(
|
||||
"agreement", related="project_id.agreement_id", string="Agreement", store=True
|
||||
)
|
||||
3
agreement_project/readme/CONTRIBUTORS.rst
Normal file
3
agreement_project/readme/CONTRIBUTORS.rst
Normal file
@@ -0,0 +1,3 @@
|
||||
* Sandip Mangukiya <smangukiya@opensourceintegrators.com>
|
||||
* Yves Goldberg <yves@ygol.com>
|
||||
* Helly kapatel <helly.kapatel@initos.com>
|
||||
3
agreement_project/readme/CREDITS.rst
Normal file
3
agreement_project/readme/CREDITS.rst
Normal file
@@ -0,0 +1,3 @@
|
||||
The development of this module has been financially supported by:
|
||||
|
||||
* Open Source Integrators <https://opensourceintegrators.com>
|
||||
5
agreement_project/readme/DESCRIPTION.rst
Normal file
5
agreement_project/readme/DESCRIPTION.rst
Normal file
@@ -0,0 +1,5 @@
|
||||
Odoo Agreement App does not provide an easy way to access project tasks related to an agreement.
|
||||
Some organizations needs to have a quick access to project tasks to track the performance of an agreement.
|
||||
|
||||
This module allows you to link a project task to an agreement and
|
||||
adds a smart button on the agreement to look at the list of related project tasks.
|
||||
2
agreement_project/readme/ROADMAP.rst
Normal file
2
agreement_project/readme/ROADMAP.rst
Normal file
@@ -0,0 +1,2 @@
|
||||
The roadmap of the Agreement application is documented on
|
||||
`Github <https://github.com/OCA/contract/issues>`_.
|
||||
7
agreement_project/readme/USAGE.rst
Normal file
7
agreement_project/readme/USAGE.rst
Normal file
@@ -0,0 +1,7 @@
|
||||
To use this module, you need to:
|
||||
|
||||
* Go to Project > Configuration > Projects
|
||||
* Select or create a project and set the agreement
|
||||
* Go to Agreement > Agreements
|
||||
* Open the previous agreement
|
||||
* Click on the smart button "Tasks" to see the list of related project tasks
|
||||
BIN
agreement_project/static/description/icon.png
Normal file
BIN
agreement_project/static/description/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
453
agreement_project/static/description/index.html
Normal file
453
agreement_project/static/description/index.html
Normal file
@@ -0,0 +1,453 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="generator" content="Docutils 0.15.1: http://docutils.sourceforge.net/" />
|
||||
<title>Agreement - Project</title>
|
||||
<style type="text/css">
|
||||
|
||||
/*
|
||||
:Author: David Goodger (goodger@python.org)
|
||||
:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
|
||||
:Copyright: This stylesheet has been placed in the public domain.
|
||||
|
||||
Default cascading style sheet for the HTML output of Docutils.
|
||||
|
||||
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
|
||||
customize this style sheet.
|
||||
*/
|
||||
|
||||
/* used to remove borders from tables and images */
|
||||
.borderless, table.borderless td, table.borderless th {
|
||||
border: 0 }
|
||||
|
||||
table.borderless td, table.borderless th {
|
||||
/* Override padding for "table.docutils td" with "! important".
|
||||
The right padding separates the table cells. */
|
||||
padding: 0 0.5em 0 0 ! important }
|
||||
|
||||
.first {
|
||||
/* Override more specific margin styles with "! important". */
|
||||
margin-top: 0 ! important }
|
||||
|
||||
.last, .with-subtitle {
|
||||
margin-bottom: 0 ! important }
|
||||
|
||||
.hidden {
|
||||
display: none }
|
||||
|
||||
.subscript {
|
||||
vertical-align: sub;
|
||||
font-size: smaller }
|
||||
|
||||
.superscript {
|
||||
vertical-align: super;
|
||||
font-size: smaller }
|
||||
|
||||
a.toc-backref {
|
||||
text-decoration: none ;
|
||||
color: black }
|
||||
|
||||
blockquote.epigraph {
|
||||
margin: 2em 5em ; }
|
||||
|
||||
dl.docutils dd {
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Uncomment (and remove this text!) to get bold-faced definition list terms
|
||||
dl.docutils dt {
|
||||
font-weight: bold }
|
||||
*/
|
||||
|
||||
div.abstract {
|
||||
margin: 2em 5em }
|
||||
|
||||
div.abstract p.topic-title {
|
||||
font-weight: bold ;
|
||||
text-align: center }
|
||||
|
||||
div.admonition, div.attention, div.caution, div.danger, div.error,
|
||||
div.hint, div.important, div.note, div.tip, div.warning {
|
||||
margin: 2em ;
|
||||
border: medium outset ;
|
||||
padding: 1em }
|
||||
|
||||
div.admonition p.admonition-title, div.hint p.admonition-title,
|
||||
div.important p.admonition-title, div.note p.admonition-title,
|
||||
div.tip p.admonition-title {
|
||||
font-weight: bold ;
|
||||
font-family: sans-serif }
|
||||
|
||||
div.attention p.admonition-title, div.caution p.admonition-title,
|
||||
div.danger p.admonition-title, div.error p.admonition-title,
|
||||
div.warning p.admonition-title, .code .error {
|
||||
color: red ;
|
||||
font-weight: bold ;
|
||||
font-family: sans-serif }
|
||||
|
||||
/* Uncomment (and remove this text!) to get reduced vertical space in
|
||||
compound paragraphs.
|
||||
div.compound .compound-first, div.compound .compound-middle {
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
div.compound .compound-last, div.compound .compound-middle {
|
||||
margin-top: 0.5em }
|
||||
*/
|
||||
|
||||
div.dedication {
|
||||
margin: 2em 5em ;
|
||||
text-align: center ;
|
||||
font-style: italic }
|
||||
|
||||
div.dedication p.topic-title {
|
||||
font-weight: bold ;
|
||||
font-style: normal }
|
||||
|
||||
div.figure {
|
||||
margin-left: 2em ;
|
||||
margin-right: 2em }
|
||||
|
||||
div.footer, div.header {
|
||||
clear: both;
|
||||
font-size: smaller }
|
||||
|
||||
div.line-block {
|
||||
display: block ;
|
||||
margin-top: 1em ;
|
||||
margin-bottom: 1em }
|
||||
|
||||
div.line-block div.line-block {
|
||||
margin-top: 0 ;
|
||||
margin-bottom: 0 ;
|
||||
margin-left: 1.5em }
|
||||
|
||||
div.sidebar {
|
||||
margin: 0 0 0.5em 1em ;
|
||||
border: medium outset ;
|
||||
padding: 1em ;
|
||||
background-color: #ffffee ;
|
||||
width: 40% ;
|
||||
float: right ;
|
||||
clear: right }
|
||||
|
||||
div.sidebar p.rubric {
|
||||
font-family: sans-serif ;
|
||||
font-size: medium }
|
||||
|
||||
div.system-messages {
|
||||
margin: 5em }
|
||||
|
||||
div.system-messages h1 {
|
||||
color: red }
|
||||
|
||||
div.system-message {
|
||||
border: medium outset ;
|
||||
padding: 1em }
|
||||
|
||||
div.system-message p.system-message-title {
|
||||
color: red ;
|
||||
font-weight: bold }
|
||||
|
||||
div.topic {
|
||||
margin: 2em }
|
||||
|
||||
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
|
||||
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
|
||||
margin-top: 0.4em }
|
||||
|
||||
h1.title {
|
||||
text-align: center }
|
||||
|
||||
h2.subtitle {
|
||||
text-align: center }
|
||||
|
||||
hr.docutils {
|
||||
width: 75% }
|
||||
|
||||
img.align-left, .figure.align-left, object.align-left, table.align-left {
|
||||
clear: left ;
|
||||
float: left ;
|
||||
margin-right: 1em }
|
||||
|
||||
img.align-right, .figure.align-right, object.align-right, table.align-right {
|
||||
clear: right ;
|
||||
float: right ;
|
||||
margin-left: 1em }
|
||||
|
||||
img.align-center, .figure.align-center, object.align-center {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table.align-center {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.align-left {
|
||||
text-align: left }
|
||||
|
||||
.align-center {
|
||||
clear: both ;
|
||||
text-align: center }
|
||||
|
||||
.align-right {
|
||||
text-align: right }
|
||||
|
||||
/* reset inner alignment in figures */
|
||||
div.align-right {
|
||||
text-align: inherit }
|
||||
|
||||
/* div.align-center * { */
|
||||
/* text-align: left } */
|
||||
|
||||
.align-top {
|
||||
vertical-align: top }
|
||||
|
||||
.align-middle {
|
||||
vertical-align: middle }
|
||||
|
||||
.align-bottom {
|
||||
vertical-align: bottom }
|
||||
|
||||
ol.simple, ul.simple {
|
||||
margin-bottom: 1em }
|
||||
|
||||
ol.arabic {
|
||||
list-style: decimal }
|
||||
|
||||
ol.loweralpha {
|
||||
list-style: lower-alpha }
|
||||
|
||||
ol.upperalpha {
|
||||
list-style: upper-alpha }
|
||||
|
||||
ol.lowerroman {
|
||||
list-style: lower-roman }
|
||||
|
||||
ol.upperroman {
|
||||
list-style: upper-roman }
|
||||
|
||||
p.attribution {
|
||||
text-align: right ;
|
||||
margin-left: 50% }
|
||||
|
||||
p.caption {
|
||||
font-style: italic }
|
||||
|
||||
p.credits {
|
||||
font-style: italic ;
|
||||
font-size: smaller }
|
||||
|
||||
p.label {
|
||||
white-space: nowrap }
|
||||
|
||||
p.rubric {
|
||||
font-weight: bold ;
|
||||
font-size: larger ;
|
||||
color: maroon ;
|
||||
text-align: center }
|
||||
|
||||
p.sidebar-title {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold ;
|
||||
font-size: larger }
|
||||
|
||||
p.sidebar-subtitle {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold }
|
||||
|
||||
p.topic-title {
|
||||
font-weight: bold }
|
||||
|
||||
pre.address {
|
||||
margin-bottom: 0 ;
|
||||
margin-top: 0 ;
|
||||
font: inherit }
|
||||
|
||||
pre.literal-block, pre.doctest-block, pre.math, pre.code {
|
||||
margin-left: 2em ;
|
||||
margin-right: 2em }
|
||||
|
||||
pre.code .ln { color: grey; } /* line numbers */
|
||||
pre.code, code { background-color: #eeeeee }
|
||||
pre.code .comment, code .comment { color: #5C6576 }
|
||||
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
|
||||
pre.code .literal.string, code .literal.string { color: #0C5404 }
|
||||
pre.code .name.builtin, code .name.builtin { color: #352B84 }
|
||||
pre.code .deleted, code .deleted { background-color: #DEB0A1}
|
||||
pre.code .inserted, code .inserted { background-color: #A3D289}
|
||||
|
||||
span.classifier {
|
||||
font-family: sans-serif ;
|
||||
font-style: oblique }
|
||||
|
||||
span.classifier-delimiter {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold }
|
||||
|
||||
span.interpreted {
|
||||
font-family: sans-serif }
|
||||
|
||||
span.option {
|
||||
white-space: nowrap }
|
||||
|
||||
span.pre {
|
||||
white-space: pre }
|
||||
|
||||
span.problematic {
|
||||
color: red }
|
||||
|
||||
span.section-subtitle {
|
||||
/* font-size relative to parent (h1..h6 element) */
|
||||
font-size: 80% }
|
||||
|
||||
table.citation {
|
||||
border-left: solid 1px gray;
|
||||
margin-left: 1px }
|
||||
|
||||
table.docinfo {
|
||||
margin: 2em 4em }
|
||||
|
||||
table.docutils {
|
||||
margin-top: 0.5em ;
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
table.footnote {
|
||||
border-left: solid 1px black;
|
||||
margin-left: 1px }
|
||||
|
||||
table.docutils td, table.docutils th,
|
||||
table.docinfo td, table.docinfo th {
|
||||
padding-left: 0.5em ;
|
||||
padding-right: 0.5em ;
|
||||
vertical-align: top }
|
||||
|
||||
table.docutils th.field-name, table.docinfo th.docinfo-name {
|
||||
font-weight: bold ;
|
||||
text-align: left ;
|
||||
white-space: nowrap ;
|
||||
padding-left: 0 }
|
||||
|
||||
/* "booktabs" style (no vertical lines) */
|
||||
table.docutils.booktabs {
|
||||
border: 0px;
|
||||
border-top: 2px solid;
|
||||
border-bottom: 2px solid;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
table.docutils.booktabs * {
|
||||
border: 0px;
|
||||
}
|
||||
table.docutils.booktabs th {
|
||||
border-bottom: thin solid;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
|
||||
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
|
||||
font-size: 100% }
|
||||
|
||||
ul.auto-toc {
|
||||
list-style-type: none }
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="document" id="agreement-project">
|
||||
<h1 class="title">Agreement - Project</h1>
|
||||
|
||||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! This file is generated by oca-gen-addon-readme !!
|
||||
!! changes will be overwritten. !!
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/contract/tree/14.0/agreement_project"><img alt="OCA/contract" src="https://img.shields.io/badge/github-OCA%2Fcontract-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/contract-14-0/contract-14-0-agreement_project"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/110/14.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
|
||||
<p>Odoo Agreement App does not provide an easy way to access project tasks related to an agreement.
|
||||
Some organizations needs to have a quick access to project tasks to track the performance of an agreement.</p>
|
||||
<p>This module allows you to link a project task to an agreement and
|
||||
adds a smart button on the agreement to look at the list of related project tasks.</p>
|
||||
<p><strong>Table of contents</strong></p>
|
||||
<div class="contents local topic" id="contents">
|
||||
<ul class="simple">
|
||||
<li><a class="reference internal" href="#usage" id="id1">Usage</a></li>
|
||||
<li><a class="reference internal" href="#known-issues-roadmap" id="id2">Known issues / Roadmap</a></li>
|
||||
<li><a class="reference internal" href="#bug-tracker" id="id3">Bug Tracker</a></li>
|
||||
<li><a class="reference internal" href="#credits" id="id4">Credits</a><ul>
|
||||
<li><a class="reference internal" href="#authors" id="id5">Authors</a></li>
|
||||
<li><a class="reference internal" href="#contributors" id="id6">Contributors</a></li>
|
||||
<li><a class="reference internal" href="#other-credits" id="id7">Other credits</a></li>
|
||||
<li><a class="reference internal" href="#maintainers" id="id8">Maintainers</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="usage">
|
||||
<h1><a class="toc-backref" href="#id1">Usage</a></h1>
|
||||
<p>To use this module, you need to:</p>
|
||||
<ul class="simple">
|
||||
<li>Go to Project > Configuration > Projects</li>
|
||||
<li>Select or create a project and set the agreement</li>
|
||||
<li>Go to Agreement > Agreements</li>
|
||||
<li>Open the previous agreement</li>
|
||||
<li>Click on the smart button “Tasks” to see the list of related project tasks</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="known-issues-roadmap">
|
||||
<h1><a class="toc-backref" href="#id2">Known issues / Roadmap</a></h1>
|
||||
<p>The roadmap of the Agreement application is documented on
|
||||
<a class="reference external" href="https://github.com/OCA/contract/issues">Github</a>.</p>
|
||||
</div>
|
||||
<div class="section" id="bug-tracker">
|
||||
<h1><a class="toc-backref" href="#id3">Bug Tracker</a></h1>
|
||||
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/contract/issues">GitHub Issues</a>.
|
||||
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
|
||||
<a class="reference external" href="https://github.com/OCA/contract/issues/new?body=module:%20agreement_project%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
|
||||
<p>Do not contact contributors directly about support or help with technical issues.</p>
|
||||
</div>
|
||||
<div class="section" id="credits">
|
||||
<h1><a class="toc-backref" href="#id4">Credits</a></h1>
|
||||
<div class="section" id="authors">
|
||||
<h2><a class="toc-backref" href="#id5">Authors</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Open Source Integrators</li>
|
||||
<li>Yves Goldberg (Ygol Internetwork)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="contributors">
|
||||
<h2><a class="toc-backref" href="#id6">Contributors</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Sandip Mangukiya <<a class="reference external" href="mailto:smangukiya@opensourceintegrators.com">smangukiya@opensourceintegrators.com</a>></li>
|
||||
<li>Yves Goldberg <<a class="reference external" href="mailto:yves@ygol.com">yves@ygol.com</a>></li>
|
||||
<li>Helly kapatel <<a class="reference external" href="mailto:helly.kapatel@initos.com">helly.kapatel@initos.com</a>></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="other-credits">
|
||||
<h2><a class="toc-backref" href="#id7">Other credits</a></h2>
|
||||
<p>The development of this module has been financially supported by:</p>
|
||||
<ul class="simple">
|
||||
<li>Open Source Integrators <<a class="reference external" href="https://opensourceintegrators.com">https://opensourceintegrators.com</a>></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="maintainers">
|
||||
<h2><a class="toc-backref" href="#id8">Maintainers</a></h2>
|
||||
<p>This module is maintained by the OCA.</p>
|
||||
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
|
||||
<p>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.</p>
|
||||
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainers</a>:</p>
|
||||
<p><a class="reference external" href="https://github.com/smangukiya"><img alt="smangukiya" src="https://github.com/smangukiya.png?size=40px" /></a> <a class="reference external" href="https://github.com/ygol"><img alt="ygol" src="https://github.com/ygol.png?size=40px" /></a> <a class="reference external" href="https://github.com/max3903"><img alt="max3903" src="https://github.com/max3903.png?size=40px" /></a></p>
|
||||
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/contract/tree/14.0/agreement_project">OCA/contract</a> project on GitHub.</p>
|
||||
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
1
agreement_project/test-requirements.txt
Normal file
1
agreement_project/test-requirements.txt
Normal file
@@ -0,0 +1 @@
|
||||
odoo14-addon-contract @git+https://github.com/ecosoft-odoo/contract@14.0-mig-agreement_legal#subdirectory=setup/agreement_legal
|
||||
1
agreement_project/tests/__init__.py
Normal file
1
agreement_project/tests/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import test_agreement
|
||||
12
agreement_project/tests/test_agreement.py
Normal file
12
agreement_project/tests/test_agreement.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from odoo.tests.common import SavepointCase
|
||||
|
||||
|
||||
class TestAgreement(SavepointCase):
|
||||
def test_agreement(self):
|
||||
self = self.env["agreement"].search([])
|
||||
for ag in self:
|
||||
ag._compute_task_count()
|
||||
count = self.env["project.task"].search_count(
|
||||
[("agreement_id", "=", ag.id)]
|
||||
)
|
||||
ag.task_count = count
|
||||
40
agreement_project/views/agreement_view.xml
Normal file
40
agreement_project/views/agreement_view.xml
Normal file
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<odoo>
|
||||
|
||||
<record model="ir.actions.act_window" id="action_project_task_agreement_specific">
|
||||
<field name="name">Tasks</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">project.task</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="domain">[('agreement_id', '=', active_id)]</field>
|
||||
<field name="help" type="html">
|
||||
<p class="oe_view_nocontent_create">
|
||||
Create Tasks
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="partner_agreement_form_view_task" model="ir.ui.view">
|
||||
<field name="name">agreement.form.task</field>
|
||||
<field name="model">agreement</field>
|
||||
<field name="inherit_id" ref="agreement_legal.partner_agreement_form_view" />
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[@name='button_box']" position="inside">
|
||||
<button
|
||||
name="%(action_project_task_agreement_specific)d"
|
||||
type="action"
|
||||
class="oe_stat_button"
|
||||
icon="fa-tasks"
|
||||
>
|
||||
<div class="o_field_widget o_stat_info">
|
||||
<span class="o_stat_value">
|
||||
<field name="task_count" widget="statinfo" nolabel="1" />
|
||||
</span>
|
||||
<span class="o_stat_text">Tasks</span>
|
||||
</div>
|
||||
</button>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
24
agreement_project/views/project_view.xml
Normal file
24
agreement_project/views/project_view.xml
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<odoo>
|
||||
|
||||
<record id="edit_project_agreement" model="ir.ui.view">
|
||||
<field name="name">project.project.form.agreement</field>
|
||||
<field name="model">project.project</field>
|
||||
<field name="inherit_id" ref="project.edit_project" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="allowed_portal_user_ids" position="after">
|
||||
<field name="agreement_id" domain="[('partner_id', '=', partner_id)]" />
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_task_form2_agreement" model="ir.ui.view">
|
||||
<field name="name">project.task.form.agreement</field>
|
||||
<field name="model">project.task</field>
|
||||
<field name="inherit_id" ref="project.view_task_form2" />
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='user_id']" position="after">
|
||||
<field name="agreement_id" readonly="1" />
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
116
agreement_stock/README.rst
Normal file
116
agreement_stock/README.rst
Normal file
@@ -0,0 +1,116 @@
|
||||
=================
|
||||
Agreement - Stock
|
||||
=================
|
||||
|
||||
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! 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/14.0/agreement_stock
|
||||
:alt: OCA/contract
|
||||
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
|
||||
:target: https://translation.odoo-community.org/projects/contract-14-0/contract-14-0-agreement_stock
|
||||
: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/14.0
|
||||
:alt: Try me on Runbot
|
||||
|
||||
|badge1| |badge2| |badge3| |badge4| |badge5|
|
||||
|
||||
Odoo Agreement App does not provide an easy way to access stock transfers related to an agreement.
|
||||
Some organizations needs to have a quick access to stock transfers to track the performance of an agreement.
|
||||
|
||||
This module allows you to link a transfer to an agreement and
|
||||
adds a smart button on the agreement to look at the list of related transfers.
|
||||
|
||||
**Table of contents**
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
To use this module, you need to:
|
||||
|
||||
* Go to Inventory > Transfers
|
||||
* Select or create a transfer and set the agreement
|
||||
* Select or create a lot/serial number and set the agreement
|
||||
* Go to Agreement > Agreements
|
||||
* Open the previous agreement
|
||||
* Click on the smart button "Transfers" to see the list of related transfers
|
||||
* Click on the smart button "Stock Moves" to see the list of related stock moves
|
||||
* Click on the smart button "Lot/SN #" to see the list of related lot/serial numbers
|
||||
|
||||
Known issues / Roadmap
|
||||
======================
|
||||
|
||||
The roadmap of the Agreement application is documented on
|
||||
`Github <https://github.com/OCA/contract/issues>`_.
|
||||
|
||||
Bug Tracker
|
||||
===========
|
||||
|
||||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/contract/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 <https://github.com/OCA/contract/issues/new?body=module:%20agreement_stock%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
||||
|
||||
Do not contact contributors directly about support or help with technical issues.
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Authors
|
||||
~~~~~~~
|
||||
|
||||
* Open Source Integrators
|
||||
|
||||
Contributors
|
||||
~~~~~~~~~~~~
|
||||
|
||||
* Sandip Mangukiya <smangukiya@opensourceintegrators.com>
|
||||
* Serpent Consulting Services Pvt. Ltd. <support@serpentcs.com>
|
||||
|
||||
Other credits
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
The development of this module has been financially supported by:
|
||||
|
||||
* Open Source Integrators <https://opensourceintegrators.com>
|
||||
|
||||
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-smangukiya| image:: https://github.com/smangukiya.png?size=40px
|
||||
:target: https://github.com/smangukiya
|
||||
:alt: smangukiya
|
||||
.. |maintainer-max3903| image:: https://github.com/max3903.png?size=40px
|
||||
:target: https://github.com/max3903
|
||||
:alt: max3903
|
||||
|
||||
Current `maintainers <https://odoo-community.org/page/maintainer-role>`__:
|
||||
|
||||
|maintainer-smangukiya| |maintainer-max3903|
|
||||
|
||||
This module is part of the `OCA/contract <https://github.com/OCA/contract/tree/14.0/agreement_stock>`_ project on GitHub.
|
||||
|
||||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
||||
4
agreement_stock/__init__.py
Normal file
4
agreement_stock/__init__.py
Normal file
@@ -0,0 +1,4 @@
|
||||
# Copyright (C) 2021 - TODAY, Open Source Integrators
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from . import models
|
||||
17
agreement_stock/__manifest__.py
Normal file
17
agreement_stock/__manifest__.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# Copyright (C) 2021 - TODAY, Open Source Integrators
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
{
|
||||
"name": "Agreement - Stock",
|
||||
"summary": "Link picking to an agreement",
|
||||
"version": "14.0.1.0.1",
|
||||
"category": "Contract",
|
||||
"author": "Open Source Integrators, " "Odoo Community Association (OCA)",
|
||||
"website": "https://github.com/OCA/contract",
|
||||
"depends": ["agreement_serviceprofile", "stock"],
|
||||
"data": ["views/agreement_view.xml", "views/stock_view.xml"],
|
||||
"installable": True,
|
||||
"license": "AGPL-3",
|
||||
"development_status": "Beta",
|
||||
"maintainers": ["smangukiya", "max3903"],
|
||||
}
|
||||
127
agreement_stock/i18n/agreement_stock.pot
Normal file
127
agreement_stock/i18n/agreement_stock.pot
Normal file
@@ -0,0 +1,127 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * agreement_stock
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 14.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__lot_count
|
||||
msgid "# Lots/Serials"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__move_count
|
||||
msgid "# Moves"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__picking_count
|
||||
msgid "# Pickings"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Lots/Serials</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Moves</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Pickings</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_agreement
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_move__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_picking__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_production_lot__agreement_id
|
||||
msgid "Agreement"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_production_lot_agreement_specific
|
||||
msgid "Create Lot/Serial"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_move_agreement_specific
|
||||
msgid "Create Moves"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_picking_agreement_specific
|
||||
msgid "Create Pickings"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__display_name
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_move__display_name
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_picking__display_name
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_production_lot__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__id
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_move__id
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_picking__id
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_production_lot__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement____last_update
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_move____last_update
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_picking____last_update
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_production_lot____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_production_lot
|
||||
msgid "Lot/Serial"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_production_lot_agreement_specific
|
||||
msgid "Lots/Serials"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_move_agreement_specific
|
||||
msgid "Moves"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_picking_agreement_specific
|
||||
msgid "Pickings"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_production_lot__serviceprofile_id
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.search_product_lot_filter_agreement
|
||||
msgid "Service Profile"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_move
|
||||
msgid "Stock Move"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_picking
|
||||
msgid "Transfer"
|
||||
msgstr ""
|
||||
109
agreement_stock/i18n/de.po
Normal file
109
agreement_stock/i18n/de.po
Normal file
@@ -0,0 +1,109 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * agreement_stock
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 14.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2019-01-11 17:41+0000\n"
|
||||
"Last-Translator: Maria Sparenberg <maria.sparenberg@gmx.net>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 3.3\n"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__lot_count
|
||||
msgid "# Lots/Serials"
|
||||
msgstr "# Chargen / Seriennummern"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__move_count
|
||||
msgid "# Moves"
|
||||
msgstr "# Lagerbewegungen"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__picking_count
|
||||
msgid "# Pickings"
|
||||
msgstr "# Lieferscheine"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Lots/Serials</span>"
|
||||
msgstr "<span class=\"o_stat_text\">Chargen / Seriennummern</span>"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Moves</span>"
|
||||
msgstr "<span class=\"o_stat_text\">Lagerbewegungen</span>"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Pickings</span>"
|
||||
msgstr "<span class=\"o_stat_text\">Lieferscheine</span>"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_agreement
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_move__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_picking__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_production_lot__agreement_id
|
||||
msgid "Agreement"
|
||||
msgstr "Vereinbarung"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_production_lot_agreement_specific
|
||||
msgid "Create Lot/Serial"
|
||||
msgstr "Chargen / Seriennummern anlegen"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_move_agreement_specific
|
||||
msgid "Create Moves"
|
||||
msgstr "Lagerbewegungen anlegen"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_picking_agreement_specific
|
||||
msgid "Create Pickings"
|
||||
msgstr "Lieferscheine anlegen"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_production_lot
|
||||
msgid "Lot/Serial"
|
||||
msgstr "Charge / Seriennummer"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_production_lot_agreement_specific
|
||||
msgid "Lots/Serials"
|
||||
msgstr "Chargen / Seriennummern"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_move_agreement_specific
|
||||
msgid "Moves"
|
||||
msgstr "Lagerbewegungen"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_picking_agreement_specific
|
||||
msgid "Pickings"
|
||||
msgstr "Lieferscheine"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_production_lot__serviceprofile_id
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.search_product_lot_filter_agreement
|
||||
msgid "Service Profile"
|
||||
msgstr "Dienstleistungsprofil"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_move
|
||||
msgid "Stock Move"
|
||||
msgstr "Lagerbewegung"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_picking
|
||||
msgid "Transfer"
|
||||
msgstr "Liefern"
|
||||
|
||||
#~ msgid "agreement"
|
||||
#~ msgstr "Vereinbarung"
|
||||
104
agreement_stock/i18n/es.po
Normal file
104
agreement_stock/i18n/es.po
Normal file
@@ -0,0 +1,104 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * agreement_stock
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 14.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: es\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__lot_count
|
||||
msgid "# Lots/Serials"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__move_count
|
||||
msgid "# Moves"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__picking_count
|
||||
msgid "# Pickings"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Lots/Serials</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Moves</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Pickings</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_agreement
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_move__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_picking__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_production_lot__agreement_id
|
||||
msgid "Agreement"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_production_lot_agreement_specific
|
||||
msgid "Create Lot/Serial"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_move_agreement_specific
|
||||
msgid "Create Moves"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_picking_agreement_specific
|
||||
msgid "Create Pickings"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_production_lot
|
||||
msgid "Lot/Serial"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_production_lot_agreement_specific
|
||||
msgid "Lots/Serials"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_move_agreement_specific
|
||||
msgid "Moves"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_picking_agreement_specific
|
||||
msgid "Pickings"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_production_lot__serviceprofile_id
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.search_product_lot_filter_agreement
|
||||
msgid "Service Profile"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_move
|
||||
msgid "Stock Move"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_picking
|
||||
msgid "Transfer"
|
||||
msgstr ""
|
||||
106
agreement_stock/i18n/fr.po
Normal file
106
agreement_stock/i18n/fr.po
Normal file
@@ -0,0 +1,106 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * agreement_stock
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 14.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2021-01-04 11:44+0000\n"
|
||||
"Last-Translator: Rémi <remi@le-filament.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 4.3.2\n"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__lot_count
|
||||
msgid "# Lots/Serials"
|
||||
msgstr "# Numéros de Série / Lots"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__move_count
|
||||
msgid "# Moves"
|
||||
msgstr "# Mouvements"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__picking_count
|
||||
msgid "# Pickings"
|
||||
msgstr "# Préparations"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Lots/Serials</span>"
|
||||
msgstr "<span class=\"o_stat_text\">Numéros de Série / Lots</span>"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Moves</span>"
|
||||
msgstr "<span class=\"o_stat_text\">Mouvements</span>"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Pickings</span>"
|
||||
msgstr "<span class=\"o_stat_text\">Préparations</span>"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_agreement
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_move__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_picking__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_production_lot__agreement_id
|
||||
msgid "Agreement"
|
||||
msgstr "Accord"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_production_lot_agreement_specific
|
||||
msgid "Create Lot/Serial"
|
||||
msgstr "Créer Numéro de Série / Lot"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_move_agreement_specific
|
||||
msgid "Create Moves"
|
||||
msgstr "Créer Mouvements"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_picking_agreement_specific
|
||||
msgid "Create Pickings"
|
||||
msgstr "Créer Préparations"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_production_lot
|
||||
msgid "Lot/Serial"
|
||||
msgstr "Numéro de Série / Lot"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_production_lot_agreement_specific
|
||||
msgid "Lots/Serials"
|
||||
msgstr "Numéros de Série / Lots"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_move_agreement_specific
|
||||
msgid "Moves"
|
||||
msgstr "Mouvements"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_picking_agreement_specific
|
||||
msgid "Pickings"
|
||||
msgstr "Préparations"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_production_lot__serviceprofile_id
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.search_product_lot_filter_agreement
|
||||
msgid "Service Profile"
|
||||
msgstr "Profil de service"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_move
|
||||
msgid "Stock Move"
|
||||
msgstr "Mouvement de Stock"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_picking
|
||||
msgid "Transfer"
|
||||
msgstr "Transfert"
|
||||
104
agreement_stock/i18n/it.po
Normal file
104
agreement_stock/i18n/it.po
Normal file
@@ -0,0 +1,104 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * agreement_stock
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 14.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: it\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__lot_count
|
||||
msgid "# Lots/Serials"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__move_count
|
||||
msgid "# Moves"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__picking_count
|
||||
msgid "# Pickings"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Lots/Serials</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Moves</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Pickings</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_agreement
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_move__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_picking__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_production_lot__agreement_id
|
||||
msgid "Agreement"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_production_lot_agreement_specific
|
||||
msgid "Create Lot/Serial"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_move_agreement_specific
|
||||
msgid "Create Moves"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_picking_agreement_specific
|
||||
msgid "Create Pickings"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_production_lot
|
||||
msgid "Lot/Serial"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_production_lot_agreement_specific
|
||||
msgid "Lots/Serials"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_move_agreement_specific
|
||||
msgid "Moves"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_picking_agreement_specific
|
||||
msgid "Pickings"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_production_lot__serviceprofile_id
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.search_product_lot_filter_agreement
|
||||
msgid "Service Profile"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_move
|
||||
msgid "Stock Move"
|
||||
msgstr ""
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_picking
|
||||
msgid "Transfer"
|
||||
msgstr ""
|
||||
106
agreement_stock/i18n/pt.po
Normal file
106
agreement_stock/i18n/pt.po
Normal file
@@ -0,0 +1,106 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * agreement_stock
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 14.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2020-02-18 01:13+0000\n"
|
||||
"Last-Translator: Pedro Castro Silva <pedrocs@exo.pt>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: pt\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 3.10\n"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__lot_count
|
||||
msgid "# Lots/Serials"
|
||||
msgstr "# Lotes/Séries"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__move_count
|
||||
msgid "# Moves"
|
||||
msgstr "# Movimentos"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__picking_count
|
||||
msgid "# Pickings"
|
||||
msgstr "# Operações de Stock"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Lots/Serials</span>"
|
||||
msgstr "<span class=\"o_stat_text\">Lotes/Séries</span>"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Moves</span>"
|
||||
msgstr "<span class=\"o_stat_text\">Movimentos</span>"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Pickings</span>"
|
||||
msgstr "<span class=\"o_stat_text\">Operações de Stock</span>"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_agreement
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_move__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_picking__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_production_lot__agreement_id
|
||||
msgid "Agreement"
|
||||
msgstr "Acordo"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_production_lot_agreement_specific
|
||||
msgid "Create Lot/Serial"
|
||||
msgstr "Criar Lote/Nº Série"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_move_agreement_specific
|
||||
msgid "Create Moves"
|
||||
msgstr "Criar Movimentos"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_picking_agreement_specific
|
||||
msgid "Create Pickings"
|
||||
msgstr "Criar Operações de Stock"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_production_lot
|
||||
msgid "Lot/Serial"
|
||||
msgstr "Lote/Série"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_production_lot_agreement_specific
|
||||
msgid "Lots/Serials"
|
||||
msgstr "Lotes/Séries"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_move_agreement_specific
|
||||
msgid "Moves"
|
||||
msgstr "Movimentos"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_picking_agreement_specific
|
||||
msgid "Pickings"
|
||||
msgstr "Operações de Stock"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_production_lot__serviceprofile_id
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.search_product_lot_filter_agreement
|
||||
msgid "Service Profile"
|
||||
msgstr "Perfil do Serviço"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_move
|
||||
msgid "Stock Move"
|
||||
msgstr "Movimento de Stock"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_picking
|
||||
msgid "Transfer"
|
||||
msgstr "Transferência"
|
||||
106
agreement_stock/i18n/pt_BR.po
Normal file
106
agreement_stock/i18n/pt_BR.po
Normal file
@@ -0,0 +1,106 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * agreement_stock
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 14.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2020-06-16 22:19+0000\n"
|
||||
"Last-Translator: Fernando Colus <fcolus1@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: pt_BR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 3.10\n"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__lot_count
|
||||
msgid "# Lots/Serials"
|
||||
msgstr "# Lotes/Séries"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__move_count
|
||||
msgid "# Moves"
|
||||
msgstr "# Movimentos"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__picking_count
|
||||
msgid "# Pickings"
|
||||
msgstr "# Coletas"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Lots/Serials</span>"
|
||||
msgstr "<span class=\"o_stat_text\">Lotes/Séries</span>"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Moves</span>"
|
||||
msgstr "<span class=\"o_stat_text\">Movimentos</span>"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Pickings</span>"
|
||||
msgstr "<span class=\"o_stat_text\">Coletas</span>"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_agreement
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_move__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_picking__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_production_lot__agreement_id
|
||||
msgid "Agreement"
|
||||
msgstr "Acordo"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_production_lot_agreement_specific
|
||||
msgid "Create Lot/Serial"
|
||||
msgstr "Criar Lote/Série"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_move_agreement_specific
|
||||
msgid "Create Moves"
|
||||
msgstr "Criar Movimentos"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_picking_agreement_specific
|
||||
msgid "Create Pickings"
|
||||
msgstr "Criar Coletas"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_production_lot
|
||||
msgid "Lot/Serial"
|
||||
msgstr "Lote/Série"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_production_lot_agreement_specific
|
||||
msgid "Lots/Serials"
|
||||
msgstr "Lotes/Séries"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_move_agreement_specific
|
||||
msgid "Moves"
|
||||
msgstr "Movimentos"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_picking_agreement_specific
|
||||
msgid "Pickings"
|
||||
msgstr "Coletas"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_production_lot__serviceprofile_id
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.search_product_lot_filter_agreement
|
||||
msgid "Service Profile"
|
||||
msgstr "Perfil de Serviço"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_move
|
||||
msgid "Stock Move"
|
||||
msgstr "Movimento de Estoque"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_picking
|
||||
msgid "Transfer"
|
||||
msgstr "Transferir"
|
||||
106
agreement_stock/i18n/zh_CN.po
Normal file
106
agreement_stock/i18n/zh_CN.po
Normal file
@@ -0,0 +1,106 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * agreement_stock
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 14.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2019-09-04 18:23+0000\n"
|
||||
"Last-Translator: 黎伟杰 <674416404@qq.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: zh_CN\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 3.8\n"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__lot_count
|
||||
msgid "# Lots/Serials"
|
||||
msgstr "# 批次/序列"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__move_count
|
||||
msgid "# Moves"
|
||||
msgstr "# 移动"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_agreement__picking_count
|
||||
msgid "# Pickings"
|
||||
msgstr "# 拣货"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Lots/Serials</span>"
|
||||
msgstr "<span class=\"o_stat_text\">批次/序列</span>"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Moves</span>"
|
||||
msgstr "<span class=\"o_stat_text\">移动</span>"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.partner_agreement_form_view_stock
|
||||
msgid "<span class=\"o_stat_text\">Pickings</span>"
|
||||
msgstr "<span class=\"o_stat_text\">拣货</span>"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_agreement
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_move__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_picking__agreement_id
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_production_lot__agreement_id
|
||||
msgid "Agreement"
|
||||
msgstr "协议"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_production_lot_agreement_specific
|
||||
msgid "Create Lot/Serial"
|
||||
msgstr "Create 批次/序列"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_move_agreement_specific
|
||||
msgid "Create Moves"
|
||||
msgstr "创建移动"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model_terms:ir.actions.act_window,help:agreement_stock.action_stock_picking_agreement_specific
|
||||
msgid "Create Pickings"
|
||||
msgstr "创建拣货"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_production_lot
|
||||
msgid "Lot/Serial"
|
||||
msgstr "批次/序列"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_production_lot_agreement_specific
|
||||
msgid "Lots/Serials"
|
||||
msgstr "批次/序列"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_move_agreement_specific
|
||||
msgid "Moves"
|
||||
msgstr "移动"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.actions.act_window,name:agreement_stock.action_stock_picking_agreement_specific
|
||||
msgid "Pickings"
|
||||
msgstr "拣货"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model.fields,field_description:agreement_stock.field_stock_production_lot__serviceprofile_id
|
||||
#: model_terms:ir.ui.view,arch_db:agreement_stock.search_product_lot_filter_agreement
|
||||
msgid "Service Profile"
|
||||
msgstr "服务资料"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_move
|
||||
msgid "Stock Move"
|
||||
msgstr "库存移动"
|
||||
|
||||
#. module: agreement_stock
|
||||
#: model:ir.model,name:agreement_stock.model_stock_picking
|
||||
msgid "Transfer"
|
||||
msgstr "调拨"
|
||||
5
agreement_stock/models/__init__.py
Normal file
5
agreement_stock/models/__init__.py
Normal file
@@ -0,0 +1,5 @@
|
||||
# Copyright (C) 2021 - TODAY, Open Source Integrators
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from . import stock
|
||||
from . import agreement
|
||||
30
agreement_stock/models/agreement.py
Normal file
30
agreement_stock/models/agreement.py
Normal file
@@ -0,0 +1,30 @@
|
||||
# Copyright (C) 2021 - TODAY, Open Source Integrators
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class Agreement(models.Model):
|
||||
_inherit = "agreement"
|
||||
|
||||
picking_count = fields.Integer("# Pickings", compute="_compute_picking_count")
|
||||
move_count = fields.Integer("# Moves", compute="_compute_move_count")
|
||||
lot_count = fields.Integer("# Lots/Serials", compute="_compute_lot_count")
|
||||
|
||||
def _compute_picking_count(self):
|
||||
for ag_rec in self:
|
||||
ag_rec.picking_count = self.env["stock.picking"].search_count(
|
||||
[("agreement_id", "in", ag_rec.ids)]
|
||||
)
|
||||
|
||||
def _compute_move_count(self):
|
||||
for ag_rec in self:
|
||||
ag_rec.move_count = self.env["stock.move"].search_count(
|
||||
[("agreement_id", "in", ag_rec.ids)]
|
||||
)
|
||||
|
||||
def _compute_lot_count(self):
|
||||
for ag_rec in self:
|
||||
ag_rec.lot_count = self.env["stock.production.lot"].search_count(
|
||||
[("agreement_id", "in", ag_rec.ids)]
|
||||
)
|
||||
25
agreement_stock/models/stock.py
Normal file
25
agreement_stock/models/stock.py
Normal file
@@ -0,0 +1,25 @@
|
||||
# Copyright (C) 2021 - TODAY, Open Source Integrators
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class StockPicking(models.Model):
|
||||
_inherit = "stock.picking"
|
||||
|
||||
agreement_id = fields.Many2one("agreement", "Agreement")
|
||||
|
||||
|
||||
class StockMove(models.Model):
|
||||
_inherit = "stock.move"
|
||||
|
||||
agreement_id = fields.Many2one(
|
||||
"agreement", related="picking_id.agreement_id", string="Agreement", store=True
|
||||
)
|
||||
|
||||
|
||||
class StockProductionLot(models.Model):
|
||||
_inherit = "stock.production.lot"
|
||||
|
||||
agreement_id = fields.Many2one("agreement", "Agreement")
|
||||
serviceprofile_id = fields.Many2one("agreement.serviceprofile", "Service Profile")
|
||||
2
agreement_stock/readme/CONTRIBUTORS.rst
Normal file
2
agreement_stock/readme/CONTRIBUTORS.rst
Normal file
@@ -0,0 +1,2 @@
|
||||
* Sandip Mangukiya <smangukiya@opensourceintegrators.com>
|
||||
* Serpent Consulting Services Pvt. Ltd. <support@serpentcs.com>
|
||||
3
agreement_stock/readme/CREDITS.rst
Normal file
3
agreement_stock/readme/CREDITS.rst
Normal file
@@ -0,0 +1,3 @@
|
||||
The development of this module has been financially supported by:
|
||||
|
||||
* Open Source Integrators <https://opensourceintegrators.com>
|
||||
5
agreement_stock/readme/DESCRIPTION.rst
Normal file
5
agreement_stock/readme/DESCRIPTION.rst
Normal file
@@ -0,0 +1,5 @@
|
||||
Odoo Agreement App does not provide an easy way to access stock transfers related to an agreement.
|
||||
Some organizations needs to have a quick access to stock transfers to track the performance of an agreement.
|
||||
|
||||
This module allows you to link a transfer to an agreement and
|
||||
adds a smart button on the agreement to look at the list of related transfers.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user