From cb4d47435abe0ad51a13a04457a49f87a09caa74 Mon Sep 17 00:00:00 2001 From: Murtuza Saleh Date: Thu, 28 Mar 2019 12:14:06 +0530 Subject: [PATCH 01/22] [MIG][12.0] agreement_legal_sale [UPD] README.rst [UPD] Update agreement_legal_sale.pot Added translation using Weblate (French) Translated using Weblate (French) Currently translated at 100.0% (11 of 11 strings) Translation: contract-12.0/contract-12.0-agreement_legal_sale Translate-URL: https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-agreement_legal_sale/fr/ Translated using Weblate (German) Currently translated at 100.0% (11 of 11 strings) Translation: contract-12.0/contract-12.0-agreement_legal_sale Translate-URL: https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-agreement_legal_sale/de/ [UPD] README.rst Added translation using Weblate (Chinese (Simplified)) Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (11 of 11 strings) Translation: contract-12.0/contract-12.0-agreement_legal_sale Translate-URL: https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-agreement_legal_sale/zh_CN/ --- agreement_legal_sale/README.rst | 131 +++++ agreement_legal_sale/__init__.py | 3 + agreement_legal_sale/__manifest__.py | 27 + .../i18n/agreement_legal_sale.pot | 74 +++ agreement_legal_sale/i18n/agreement_sale.pot | 64 +++ agreement_legal_sale/i18n/de.po | 85 ++++ agreement_legal_sale/i18n/fr.po | 78 +++ agreement_legal_sale/i18n/zh_CN.po | 76 +++ agreement_legal_sale/models/__init__.py | 7 + agreement_legal_sale/models/agreement.py | 20 + agreement_legal_sale/models/product.py | 13 + agreement_legal_sale/models/sale_order.py | 45 ++ agreement_legal_sale/readme/CONFIGURE.rst | 6 + agreement_legal_sale/readme/CONTRIBUTORS.rst | 3 + agreement_legal_sale/readme/CREDITS.rst | 4 + agreement_legal_sale/readme/DESCRIPTION.rst | 5 + agreement_legal_sale/readme/ROADMAP.rst | 1 + agreement_legal_sale/readme/USAGE.rst | 14 + .../static/description/icon.png | Bin 0 -> 6755 bytes .../static/description/index.html | 471 ++++++++++++++++++ agreement_legal_sale/views/agreement.xml | 29 ++ agreement_legal_sale/views/product.xml | 25 + agreement_legal_sale/views/sale_order.xml | 23 + 23 files changed, 1204 insertions(+) create mode 100644 agreement_legal_sale/README.rst create mode 100644 agreement_legal_sale/__init__.py create mode 100644 agreement_legal_sale/__manifest__.py create mode 100644 agreement_legal_sale/i18n/agreement_legal_sale.pot create mode 100644 agreement_legal_sale/i18n/agreement_sale.pot create mode 100644 agreement_legal_sale/i18n/de.po create mode 100644 agreement_legal_sale/i18n/fr.po create mode 100644 agreement_legal_sale/i18n/zh_CN.po create mode 100644 agreement_legal_sale/models/__init__.py create mode 100644 agreement_legal_sale/models/agreement.py create mode 100644 agreement_legal_sale/models/product.py create mode 100644 agreement_legal_sale/models/sale_order.py create mode 100644 agreement_legal_sale/readme/CONFIGURE.rst create mode 100644 agreement_legal_sale/readme/CONTRIBUTORS.rst create mode 100644 agreement_legal_sale/readme/CREDITS.rst create mode 100644 agreement_legal_sale/readme/DESCRIPTION.rst create mode 100644 agreement_legal_sale/readme/ROADMAP.rst create mode 100644 agreement_legal_sale/readme/USAGE.rst create mode 100644 agreement_legal_sale/static/description/icon.png create mode 100644 agreement_legal_sale/static/description/index.html create mode 100644 agreement_legal_sale/views/agreement.xml create mode 100644 agreement_legal_sale/views/product.xml create mode 100644 agreement_legal_sale/views/sale_order.xml diff --git a/agreement_legal_sale/README.rst b/agreement_legal_sale/README.rst new file mode 100644 index 00000000..3dba3eb2 --- /dev/null +++ b/agreement_legal_sale/README.rst @@ -0,0 +1,131 @@ +==================== +Agreement Legal Sale +==================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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/12.0/agreement_legal_sale + :alt: OCA/contract +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-agreement_legal_sale + :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/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Odoo Sales App does not support the management of legal content for agreements +and contracts. It's also not integrated with the Agreement App. + +This module is for companies that needs their customer to sign an agreement +with all the legal information based on the selected agreement template. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +To configure this module: + +* Go to Agreement > Configuration > Templates +* Create a new template with sections and clauses and their respective content +* Go to Agreement > Configuration > Stages +* Create and reorder stages to match your process + +Usage +===== + +To use this module: + +* Go to Sales +* Create or select a quotation +* Set the agreement template and add some products +* Confirm the quotation. An agreement is created and linked to the sales order: + + * the agreement template is copied into an agreement with a copy of the + sections, clauses, recitals and appendices + * all the sales order lines are added as agreement lines + * the products on the SO with BOM are added as service profile on the agreement + * the customer information is set from the sales order + * the eventual analytic account linked to the sales order is set on the agreement + * the agreement is linked to the sales order and vice versa + +Known issues / Roadmap +====================== + +The roadmap is documented on https://github.com/OCA/contract/issues. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Open Source Integrators + +Contributors +~~~~~~~~~~~~ + +* Steven Campbell +* Maxime Chambreuil +* Serpent Consulting Services Pvt. Ltd. + +Other credits +~~~~~~~~~~~~~ + +The development of this module has been financially supported by: + +* Pavlov Media +* Open Source Integrators + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-osi-scampbell| image:: https://github.com/osi-scampbell.png?size=40px + :target: https://github.com/osi-scampbell + :alt: osi-scampbell +.. |maintainer-max3903| image:: https://github.com/max3903.png?size=40px + :target: https://github.com/max3903 + :alt: max3903 + +Current `maintainers `__: + +|maintainer-osi-scampbell| |maintainer-max3903| + +This module is part of the `OCA/contract `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/agreement_legal_sale/__init__.py b/agreement_legal_sale/__init__.py new file mode 100644 index 00000000..69f7babd --- /dev/null +++ b/agreement_legal_sale/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import models diff --git a/agreement_legal_sale/__manifest__.py b/agreement_legal_sale/__manifest__.py new file mode 100644 index 00000000..7ed16142 --- /dev/null +++ b/agreement_legal_sale/__manifest__.py @@ -0,0 +1,27 @@ +# Copyright (C) 2019 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Agreement Legal Sale', + 'summary': 'Create an agreement when the sale order is confirmed', + 'version': '12.0.1.0.0', + 'license': 'AGPL-3', + 'author': 'Open Source Integrators, Odoo Community Association (OCA)', + 'category': 'Agreement', + 'website': 'https://github.com/OCA/contract', + 'depends': [ + 'agreement_legal', + 'agreement_sale', + ], + 'data': [ + 'views/agreement.xml', + 'views/product.xml', + 'views/sale_order.xml', + ], + 'installable': True, + 'development_status': 'Beta', + 'maintainers': [ + 'osi-scampbell', + 'max3903', + ], +} diff --git a/agreement_legal_sale/i18n/agreement_legal_sale.pot b/agreement_legal_sale/i18n/agreement_legal_sale.pot new file mode 100644 index 00000000..35297dfc --- /dev/null +++ b/agreement_legal_sale/i18n/agreement_legal_sale.pot @@ -0,0 +1,74 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * agreement_legal_sale +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.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_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_agreement +#: model_terms:ir.ui.view,arch_db:agreement_legal_sale.product_template_form_view +msgid "Agreement" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_agreement_line +msgid "Agreement Lines" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_sale_order__agreement_template_id +msgid "Agreement Template" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__analytic_account_id +msgid "Analytic Account" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_product_product__is_serviceprofile +#: model:ir.model.fields,field_description:agreement_legal_sale.field_product_template__is_serviceprofile +msgid "Create a Service Profile" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model.fields,help:agreement_legal_sale.field_product_product__is_serviceprofile +#: model:ir.model.fields,help:agreement_legal_sale.field_product_template__is_serviceprofile +msgid "If True, this product will create a service profile on the\n" +" agreement when the sales order is confirmed." +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_product_template +msgid "Product Template" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_sale_order +msgid "Sale Order" +msgstr "" + +#. module: agreement_legal_sale +#: model_terms:ir.ui.view,arch_db:agreement_legal_sale.agreement_sale_form_view +msgid "Sales" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__sale_id +msgid "Sales Order" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line__sale_line_id +msgid "Sales Order Line" +msgstr "" + diff --git a/agreement_legal_sale/i18n/agreement_sale.pot b/agreement_legal_sale/i18n/agreement_sale.pot new file mode 100644 index 00000000..e0846561 --- /dev/null +++ b/agreement_legal_sale/i18n/agreement_sale.pot @@ -0,0 +1,64 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * agreement_sale +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.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_sale +#: model:ir.model.fields,field_description:agreement_sale.field_sale_order_agreement_id +#: model:ir.ui.view,arch_db:agreement_sale.product_template_form_view +msgid "Agreement" +msgstr "" + +#. module: agreement_sale +#: model:ir.model.fields,field_description:agreement_sale.field_sale_order_agreement_template_id +msgid "Agreement Template" +msgstr "" + +#. module: agreement_sale +#: model:ir.model.fields,field_description:agreement_sale.field_product_product_is_serviceprofile +#: model:ir.model.fields,field_description:agreement_sale.field_product_template_is_serviceprofile +msgid "Create a Service Profile" +msgstr "" + +#. module: agreement_sale +#: model:ir.model.fields,help:agreement_sale.field_product_product_is_serviceprofile +#: model:ir.model.fields,help:agreement_sale.field_product_template_is_serviceprofile +msgid "If True, this product will create a service profile on the\n" +" agreement when the sales order is confirmed." +msgstr "" + +#. module: agreement_sale +#: model:ir.model,name:agreement_sale.model_product_template +msgid "Product Template" +msgstr "" + +#. module: agreement_sale +#: model:ir.model,name:agreement_sale.model_sale_order +msgid "Quotation" +msgstr "" + +#. module: agreement_sale +#: model:ir.ui.view,arch_db:agreement_sale.agreement_sale_form_view +msgid "Sales" +msgstr "" + +#. module: agreement_sale +#: model:ir.model.fields,field_description:agreement_sale.field_agreement_sale_id +msgid "Sales Order" +msgstr "" + +#. module: agreement_sale +#: model:ir.model,name:agreement_sale.model_agreement +msgid "agreement" +msgstr "" + diff --git a/agreement_legal_sale/i18n/de.po b/agreement_legal_sale/i18n/de.po new file mode 100644 index 00000000..9029209a --- /dev/null +++ b/agreement_legal_sale/i18n/de.po @@ -0,0 +1,85 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * agreement_sale +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2019-05-10 14:03+0000\n" +"Last-Translator: Maria Sparenberg \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.5.1\n" + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_agreement +#: model_terms:ir.ui.view,arch_db:agreement_legal_sale.product_template_form_view +msgid "Agreement" +msgstr "Vereinbarung" + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_agreement_line +msgid "Agreement Lines" +msgstr "Vereinbarungspositionen" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_sale_order__agreement_template_id +msgid "Agreement Template" +msgstr "Vereinbarungsvorlage" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__analytic_account_id +msgid "Analytic Account" +msgstr "Kostenstelle" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_product_product__is_serviceprofile +#: model:ir.model.fields,field_description:agreement_legal_sale.field_product_template__is_serviceprofile +msgid "Create a Service Profile" +msgstr "Dienstleistungsprofil erstellen" + +#. module: agreement_legal_sale +#: model:ir.model.fields,help:agreement_legal_sale.field_product_product__is_serviceprofile +#: model:ir.model.fields,help:agreement_legal_sale.field_product_template__is_serviceprofile +msgid "" +"If True, this product will create a service profile on the\n" +" agreement when the sales order is confirmed." +msgstr "" +"Wenn der Haken gesetzt ist, wird dieses Produkt ein Dienstleistungsprofil in " +"der Vereinbarung erzeugen, sobald der Verkaufsauftrag bestätigt wird." + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_product_template +msgid "Product Template" +msgstr "Produktvorlage" + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_sale_order +msgid "Sale Order" +msgstr "Verkaufsauftrag" + +#. module: agreement_legal_sale +#: model_terms:ir.ui.view,arch_db:agreement_legal_sale.agreement_sale_form_view +msgid "Sales" +msgstr "Verkauf" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__sale_id +msgid "Sales Order" +msgstr "Verkaufsauftrag" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line__sale_line_id +msgid "Sales Order Line" +msgstr "Auftragszeile" + +#~ msgid "Quotation" +#~ msgstr "Angebot" + +#~ msgid "agreement" +#~ msgstr "Vereinbarung" diff --git a/agreement_legal_sale/i18n/fr.po b/agreement_legal_sale/i18n/fr.po new file mode 100644 index 00000000..315c9269 --- /dev/null +++ b/agreement_legal_sale/i18n/fr.po @@ -0,0 +1,78 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * agreement_legal_sale +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2019-04-19 17:15+0000\n" +"Last-Translator: Yves Goldberg \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_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_agreement +#: model_terms:ir.ui.view,arch_db:agreement_legal_sale.product_template_form_view +msgid "Agreement" +msgstr "Accord" + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_agreement_line +msgid "Agreement Lines" +msgstr "Lignes de l'accord" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_sale_order__agreement_template_id +msgid "Agreement Template" +msgstr "Modèle d'accord" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__analytic_account_id +msgid "Analytic Account" +msgstr "Compte Analytique" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_product_product__is_serviceprofile +#: model:ir.model.fields,field_description:agreement_legal_sale.field_product_template__is_serviceprofile +msgid "Create a Service Profile" +msgstr "Créer un profil de service" + +#. module: agreement_legal_sale +#: model:ir.model.fields,help:agreement_legal_sale.field_product_product__is_serviceprofile +#: model:ir.model.fields,help:agreement_legal_sale.field_product_template__is_serviceprofile +msgid "If True, this product will create a service profile on the\n" +" agreement when the sales order is confirmed." +msgstr "" +"Si Vrai, ce produit créera un profil de service dans\n" +"          l'accord a la confirmation de la commande client." + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_product_template +msgid "Product Template" +msgstr "Modèle Produit" + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_sale_order +msgid "Sale Order" +msgstr "Commande" + +#. module: agreement_legal_sale +#: model_terms:ir.ui.view,arch_db:agreement_legal_sale.agreement_sale_form_view +msgid "Sales" +msgstr "Vente" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__sale_id +msgid "Sales Order" +msgstr "Commandes" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line__sale_line_id +msgid "Sales Order Line" +msgstr "Ligne de commande" diff --git a/agreement_legal_sale/i18n/zh_CN.po b/agreement_legal_sale/i18n/zh_CN.po new file mode 100644 index 00000000..759cc621 --- /dev/null +++ b/agreement_legal_sale/i18n/zh_CN.po @@ -0,0 +1,76 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * agreement_legal_sale +# +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_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_agreement +#: model_terms:ir.ui.view,arch_db:agreement_legal_sale.product_template_form_view +msgid "Agreement" +msgstr "协议" + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_agreement_line +msgid "Agreement Lines" +msgstr "协议行" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_sale_order__agreement_template_id +msgid "Agreement Template" +msgstr "协议模板" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__analytic_account_id +msgid "Analytic Account" +msgstr "分析账户" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_product_product__is_serviceprofile +#: model:ir.model.fields,field_description:agreement_legal_sale.field_product_template__is_serviceprofile +msgid "Create a Service Profile" +msgstr "创建服务配置文件" + +#. module: agreement_legal_sale +#: model:ir.model.fields,help:agreement_legal_sale.field_product_product__is_serviceprofile +#: model:ir.model.fields,help:agreement_legal_sale.field_product_template__is_serviceprofile +msgid "If True, this product will create a service profile on the\n" +" agreement when the sales order is confirmed." +msgstr "如果为真,则当确认销售订单时,此产品将在协议上创建服务配置文件。" + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_product_template +msgid "Product Template" +msgstr "产品模版" + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_sale_order +msgid "Sale Order" +msgstr "销售订单" + +#. module: agreement_legal_sale +#: model_terms:ir.ui.view,arch_db:agreement_legal_sale.agreement_sale_form_view +msgid "Sales" +msgstr "销售" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__sale_id +msgid "Sales Order" +msgstr "销售订单" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line__sale_line_id +msgid "Sales Order Line" +msgstr "销售订单行" diff --git a/agreement_legal_sale/models/__init__.py b/agreement_legal_sale/models/__init__.py new file mode 100644 index 00000000..2f3b40d7 --- /dev/null +++ b/agreement_legal_sale/models/__init__.py @@ -0,0 +1,7 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import ( + sale_order, + agreement, + product, +) diff --git a/agreement_legal_sale/models/agreement.py b/agreement_legal_sale/models/agreement.py new file mode 100644 index 00000000..6e064886 --- /dev/null +++ b/agreement_legal_sale/models/agreement.py @@ -0,0 +1,20 @@ +# Copyright (C) 2019 - 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' + + sale_id = fields.Many2one('sale.order', string='Sales Order') + analytic_account_id = fields.Many2one( + 'account.analytic.account', 'Analytic Account', readonly=True, + copy=False) + + +class AgreementLine(models.Model): + _inherit = "agreement.line" + + sale_line_id = fields.Many2one('sale.order.line', + string='Sales Order Line') diff --git a/agreement_legal_sale/models/product.py b/agreement_legal_sale/models/product.py new file mode 100644 index 00000000..59d7c8f0 --- /dev/null +++ b/agreement_legal_sale/models/product.py @@ -0,0 +1,13 @@ +# Copyright (C) 2019 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ProductTemplate(models.Model): + _inherit = 'product.template' + + is_serviceprofile = fields.Boolean( + string="Create a Service Profile", + help="""If True, this product will create a service profile on the + agreement when the sales order is confirmed.""") diff --git a/agreement_legal_sale/models/sale_order.py b/agreement_legal_sale/models/sale_order.py new file mode 100644 index 00000000..a6713a61 --- /dev/null +++ b/agreement_legal_sale/models/sale_order.py @@ -0,0 +1,45 @@ +# Copyright (C) 2019 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class SaleOrder(models.Model): + _inherit = 'sale.order' + + agreement_template_id = fields.Many2one( + 'agreement', + string="Agreement Template", + domain="[('is_template', '=', True)]") + + @api.multi + def _action_confirm(self): + res = super(SaleOrder, self)._action_confirm() + for order in self: + if order.agreement_template_id: + order.agreement_id = order.agreement_template_id.copy(default={ + 'name': order.name, + 'code': order.name, + 'is_template': False, + 'sale_id': order.id, + 'partner_id': order.partner_id.id, + 'analytic_account_id': order.analytic_account_id and + order.analytic_account_id.id or False, + }) + for line in order.order_line: + # Create agreement line + self.env['agreement.line'].create({ + 'product_id': line.product_id.id, + 'name': line.name, + 'agreement_id': order.agreement_id.id, + 'qty': line.product_uom_qty, + 'sale_line_id': line.id, + 'uom_id': line.product_uom.id + }) + # If the product is a service profile, create one + if line.product_id.product_tmpl_id.is_serviceprofile: + self.env['agreement.serviceprofile'].create({ + 'name': line.name, + 'agreement_id': order.agreement_id.id, + }) + return res diff --git a/agreement_legal_sale/readme/CONFIGURE.rst b/agreement_legal_sale/readme/CONFIGURE.rst new file mode 100644 index 00000000..3871fc34 --- /dev/null +++ b/agreement_legal_sale/readme/CONFIGURE.rst @@ -0,0 +1,6 @@ +To configure this module: + +* Go to Agreement > Configuration > Templates +* Create a new template with sections and clauses and their respective content +* Go to Agreement > Configuration > Stages +* Create and reorder stages to match your process diff --git a/agreement_legal_sale/readme/CONTRIBUTORS.rst b/agreement_legal_sale/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..364a1729 --- /dev/null +++ b/agreement_legal_sale/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Steven Campbell +* Maxime Chambreuil +* Serpent Consulting Services Pvt. Ltd. diff --git a/agreement_legal_sale/readme/CREDITS.rst b/agreement_legal_sale/readme/CREDITS.rst new file mode 100644 index 00000000..0543afe7 --- /dev/null +++ b/agreement_legal_sale/readme/CREDITS.rst @@ -0,0 +1,4 @@ +The development of this module has been financially supported by: + +* Pavlov Media +* Open Source Integrators diff --git a/agreement_legal_sale/readme/DESCRIPTION.rst b/agreement_legal_sale/readme/DESCRIPTION.rst new file mode 100644 index 00000000..642b7de2 --- /dev/null +++ b/agreement_legal_sale/readme/DESCRIPTION.rst @@ -0,0 +1,5 @@ +Odoo Sales App does not support the management of legal content for agreements +and contracts. It's also not integrated with the Agreement App. + +This module is for companies that needs their customer to sign an agreement +with all the legal information based on the selected agreement template. diff --git a/agreement_legal_sale/readme/ROADMAP.rst b/agreement_legal_sale/readme/ROADMAP.rst new file mode 100644 index 00000000..c6d54c4f --- /dev/null +++ b/agreement_legal_sale/readme/ROADMAP.rst @@ -0,0 +1 @@ +The roadmap is documented on https://github.com/OCA/contract/issues. diff --git a/agreement_legal_sale/readme/USAGE.rst b/agreement_legal_sale/readme/USAGE.rst new file mode 100644 index 00000000..259af0b9 --- /dev/null +++ b/agreement_legal_sale/readme/USAGE.rst @@ -0,0 +1,14 @@ +To use this module: + +* Go to Sales +* Create or select a quotation +* Set the agreement template and add some products +* Confirm the quotation. An agreement is created and linked to the sales order: + + * the agreement template is copied into an agreement with a copy of the + sections, clauses, recitals and appendices + * all the sales order lines are added as agreement lines + * the products on the SO with BOM are added as service profile on the agreement + * the customer information is set from the sales order + * the eventual analytic account linked to the sales order is set on the agreement + * the agreement is linked to the sales order and vice versa diff --git a/agreement_legal_sale/static/description/icon.png b/agreement_legal_sale/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..23ce93135053c48a74469807879f2805b12382ad GIT binary patch literal 6755 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 + + + + + +Agreement Legal Sale + + + + + + diff --git a/agreement_legal_sale/views/agreement.xml b/agreement_legal_sale/views/agreement.xml new file mode 100644 index 00000000..dffaee97 --- /dev/null +++ b/agreement_legal_sale/views/agreement.xml @@ -0,0 +1,29 @@ + + + + + + + agreement.form.view + agreement + + + + + + + + + + + + + + + + + + + diff --git a/agreement_legal_sale/views/product.xml b/agreement_legal_sale/views/product.xml new file mode 100644 index 00000000..54fa92cb --- /dev/null +++ b/agreement_legal_sale/views/product.xml @@ -0,0 +1,25 @@ + + + + + + + product.template.form.view + product.template + + + + + + + + + + + + + + + + diff --git a/agreement_legal_sale/views/sale_order.xml b/agreement_legal_sale/views/sale_order.xml new file mode 100644 index 00000000..8b607a89 --- /dev/null +++ b/agreement_legal_sale/views/sale_order.xml @@ -0,0 +1,23 @@ + + + + + + + sale.order.agreement.form.view + sale.order + + + + + + + + + + + + From 64af26cfb3067bada794ac804d6b73d9bcd5000a Mon Sep 17 00:00:00 2001 From: Maxime Chambreuil Date: Thu, 5 Sep 2019 12:18:45 -0500 Subject: [PATCH 02/22] [FIX] agreement_legal_sale: Github Issue #370 --- agreement_legal_sale/__manifest__.py | 1 - agreement_legal_sale/models/__init__.py | 1 - agreement_legal_sale/models/product.py | 13 ------------ agreement_legal_sale/models/sale_order.py | 3 ++- agreement_legal_sale/views/product.xml | 25 ----------------------- 5 files changed, 2 insertions(+), 41 deletions(-) delete mode 100644 agreement_legal_sale/models/product.py delete mode 100644 agreement_legal_sale/views/product.xml diff --git a/agreement_legal_sale/__manifest__.py b/agreement_legal_sale/__manifest__.py index 7ed16142..968cc551 100644 --- a/agreement_legal_sale/__manifest__.py +++ b/agreement_legal_sale/__manifest__.py @@ -15,7 +15,6 @@ ], 'data': [ 'views/agreement.xml', - 'views/product.xml', 'views/sale_order.xml', ], 'installable': True, diff --git a/agreement_legal_sale/models/__init__.py b/agreement_legal_sale/models/__init__.py index 2f3b40d7..fdabc477 100644 --- a/agreement_legal_sale/models/__init__.py +++ b/agreement_legal_sale/models/__init__.py @@ -3,5 +3,4 @@ from . import ( sale_order, agreement, - product, ) diff --git a/agreement_legal_sale/models/product.py b/agreement_legal_sale/models/product.py deleted file mode 100644 index 59d7c8f0..00000000 --- a/agreement_legal_sale/models/product.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (C) 2019 - TODAY, Open Source Integrators -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - -from odoo import fields, models - - -class ProductTemplate(models.Model): - _inherit = 'product.template' - - is_serviceprofile = fields.Boolean( - string="Create a Service Profile", - help="""If True, this product will create a service profile on the - agreement when the sales order is confirmed.""") diff --git a/agreement_legal_sale/models/sale_order.py b/agreement_legal_sale/models/sale_order.py index a6713a61..95cde3dd 100644 --- a/agreement_legal_sale/models/sale_order.py +++ b/agreement_legal_sale/models/sale_order.py @@ -36,10 +36,11 @@ def _action_confirm(self): 'sale_line_id': line.id, 'uom_id': line.product_uom.id }) - # If the product is a service profile, create one + # If the product creates service profiles, create one if line.product_id.product_tmpl_id.is_serviceprofile: self.env['agreement.serviceprofile'].create({ 'name': line.name, + 'product_id': line.product_id.product_tmpl_id.id, 'agreement_id': order.agreement_id.id, }) return res diff --git a/agreement_legal_sale/views/product.xml b/agreement_legal_sale/views/product.xml deleted file mode 100644 index 54fa92cb..00000000 --- a/agreement_legal_sale/views/product.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - product.template.form.view - product.template - - - - - - - - - - - - - - - - From 105d4c24f0e03b1eb90d7c418fd39befad524428 Mon Sep 17 00:00:00 2001 From: Maxime Chambreuil Date: Thu, 5 Sep 2019 12:23:14 -0500 Subject: [PATCH 03/22] [FIX] agreement_legal_sale: Github Issue #371 [UPD] Update agreement_legal_sale.pot [UPD] README.rst Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: contract-12.0/contract-12.0-agreement_legal_sale Translate-URL: https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-agreement_legal_sale/ --- agreement_legal_sale/README.rst | 2 +- .../i18n/agreement_legal_sale.pot | 19 ---------- agreement_legal_sale/i18n/de.po | 35 +++++++----------- agreement_legal_sale/i18n/fr.po | 36 ++++++++----------- agreement_legal_sale/i18n/zh_CN.po | 32 +++++++---------- agreement_legal_sale/readme/USAGE.rst | 2 +- .../static/description/index.html | 2 +- 7 files changed, 42 insertions(+), 86 deletions(-) diff --git a/agreement_legal_sale/README.rst b/agreement_legal_sale/README.rst index 3dba3eb2..fadda0cd 100644 --- a/agreement_legal_sale/README.rst +++ b/agreement_legal_sale/README.rst @@ -59,7 +59,7 @@ To use this module: * the agreement template is copied into an agreement with a copy of the sections, clauses, recitals and appendices * all the sales order lines are added as agreement lines - * the products on the SO with BOM are added as service profile on the agreement + * the service products (with is_serviceprofile = True) on the SO are added as service profile on the agreement * the customer information is set from the sales order * the eventual analytic account linked to the sales order is set on the agreement * the agreement is linked to the sales order and vice versa diff --git a/agreement_legal_sale/i18n/agreement_legal_sale.pot b/agreement_legal_sale/i18n/agreement_legal_sale.pot index 35297dfc..17ee4edc 100644 --- a/agreement_legal_sale/i18n/agreement_legal_sale.pot +++ b/agreement_legal_sale/i18n/agreement_legal_sale.pot @@ -15,7 +15,6 @@ msgstr "" #. module: agreement_legal_sale #: model:ir.model,name:agreement_legal_sale.model_agreement -#: model_terms:ir.ui.view,arch_db:agreement_legal_sale.product_template_form_view msgid "Agreement" msgstr "" @@ -34,24 +33,6 @@ msgstr "" msgid "Analytic Account" msgstr "" -#. module: agreement_legal_sale -#: model:ir.model.fields,field_description:agreement_legal_sale.field_product_product__is_serviceprofile -#: model:ir.model.fields,field_description:agreement_legal_sale.field_product_template__is_serviceprofile -msgid "Create a Service Profile" -msgstr "" - -#. module: agreement_legal_sale -#: model:ir.model.fields,help:agreement_legal_sale.field_product_product__is_serviceprofile -#: model:ir.model.fields,help:agreement_legal_sale.field_product_template__is_serviceprofile -msgid "If True, this product will create a service profile on the\n" -" agreement when the sales order is confirmed." -msgstr "" - -#. module: agreement_legal_sale -#: model:ir.model,name:agreement_legal_sale.model_product_template -msgid "Product Template" -msgstr "" - #. module: agreement_legal_sale #: model:ir.model,name:agreement_legal_sale.model_sale_order msgid "Sale Order" diff --git a/agreement_legal_sale/i18n/de.po b/agreement_legal_sale/i18n/de.po index 9029209a..1e9417c8 100644 --- a/agreement_legal_sale/i18n/de.po +++ b/agreement_legal_sale/i18n/de.po @@ -18,7 +18,6 @@ msgstr "" #. module: agreement_legal_sale #: model:ir.model,name:agreement_legal_sale.model_agreement -#: model_terms:ir.ui.view,arch_db:agreement_legal_sale.product_template_form_view msgid "Agreement" msgstr "Vereinbarung" @@ -37,27 +36,6 @@ msgstr "Vereinbarungsvorlage" msgid "Analytic Account" msgstr "Kostenstelle" -#. module: agreement_legal_sale -#: model:ir.model.fields,field_description:agreement_legal_sale.field_product_product__is_serviceprofile -#: model:ir.model.fields,field_description:agreement_legal_sale.field_product_template__is_serviceprofile -msgid "Create a Service Profile" -msgstr "Dienstleistungsprofil erstellen" - -#. module: agreement_legal_sale -#: model:ir.model.fields,help:agreement_legal_sale.field_product_product__is_serviceprofile -#: model:ir.model.fields,help:agreement_legal_sale.field_product_template__is_serviceprofile -msgid "" -"If True, this product will create a service profile on the\n" -" agreement when the sales order is confirmed." -msgstr "" -"Wenn der Haken gesetzt ist, wird dieses Produkt ein Dienstleistungsprofil in " -"der Vereinbarung erzeugen, sobald der Verkaufsauftrag bestätigt wird." - -#. module: agreement_legal_sale -#: model:ir.model,name:agreement_legal_sale.model_product_template -msgid "Product Template" -msgstr "Produktvorlage" - #. module: agreement_legal_sale #: model:ir.model,name:agreement_legal_sale.model_sale_order msgid "Sale Order" @@ -78,6 +56,19 @@ msgstr "Verkaufsauftrag" msgid "Sales Order Line" msgstr "Auftragszeile" +#~ msgid "Create a Service Profile" +#~ msgstr "Dienstleistungsprofil erstellen" + +#~ msgid "" +#~ "If True, this product will create a service profile on the\n" +#~ " agreement when the sales order is confirmed." +#~ msgstr "" +#~ "Wenn der Haken gesetzt ist, wird dieses Produkt ein Dienstleistungsprofil " +#~ "in der Vereinbarung erzeugen, sobald der Verkaufsauftrag bestätigt wird." + +#~ msgid "Product Template" +#~ msgstr "Produktvorlage" + #~ msgid "Quotation" #~ msgstr "Angebot" diff --git a/agreement_legal_sale/i18n/fr.po b/agreement_legal_sale/i18n/fr.po index 315c9269..aee504b0 100644 --- a/agreement_legal_sale/i18n/fr.po +++ b/agreement_legal_sale/i18n/fr.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * agreement_legal_sale +# * agreement_legal_sale # msgid "" msgstr "" @@ -18,7 +18,6 @@ msgstr "" #. module: agreement_legal_sale #: model:ir.model,name:agreement_legal_sale.model_agreement -#: model_terms:ir.ui.view,arch_db:agreement_legal_sale.product_template_form_view msgid "Agreement" msgstr "Accord" @@ -37,26 +36,6 @@ msgstr "Modèle d'accord" msgid "Analytic Account" msgstr "Compte Analytique" -#. module: agreement_legal_sale -#: model:ir.model.fields,field_description:agreement_legal_sale.field_product_product__is_serviceprofile -#: model:ir.model.fields,field_description:agreement_legal_sale.field_product_template__is_serviceprofile -msgid "Create a Service Profile" -msgstr "Créer un profil de service" - -#. module: agreement_legal_sale -#: model:ir.model.fields,help:agreement_legal_sale.field_product_product__is_serviceprofile -#: model:ir.model.fields,help:agreement_legal_sale.field_product_template__is_serviceprofile -msgid "If True, this product will create a service profile on the\n" -" agreement when the sales order is confirmed." -msgstr "" -"Si Vrai, ce produit créera un profil de service dans\n" -"          l'accord a la confirmation de la commande client." - -#. module: agreement_legal_sale -#: model:ir.model,name:agreement_legal_sale.model_product_template -msgid "Product Template" -msgstr "Modèle Produit" - #. module: agreement_legal_sale #: model:ir.model,name:agreement_legal_sale.model_sale_order msgid "Sale Order" @@ -76,3 +55,16 @@ msgstr "Commandes" #: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line__sale_line_id msgid "Sales Order Line" msgstr "Ligne de commande" + +#~ msgid "Create a Service Profile" +#~ msgstr "Créer un profil de service" + +#~ msgid "" +#~ "If True, this product will create a service profile on the\n" +#~ " agreement when the sales order is confirmed." +#~ msgstr "" +#~ "Si Vrai, ce produit créera un profil de service dans\n" +#~ "          l'accord a la confirmation de la commande client." + +#~ msgid "Product Template" +#~ msgstr "Modèle Produit" diff --git a/agreement_legal_sale/i18n/zh_CN.po b/agreement_legal_sale/i18n/zh_CN.po index 759cc621..f5a0b1dd 100644 --- a/agreement_legal_sale/i18n/zh_CN.po +++ b/agreement_legal_sale/i18n/zh_CN.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * agreement_legal_sale +# * agreement_legal_sale # msgid "" msgstr "" @@ -18,7 +18,6 @@ msgstr "" #. module: agreement_legal_sale #: model:ir.model,name:agreement_legal_sale.model_agreement -#: model_terms:ir.ui.view,arch_db:agreement_legal_sale.product_template_form_view msgid "Agreement" msgstr "协议" @@ -37,24 +36,6 @@ msgstr "协议模板" msgid "Analytic Account" msgstr "分析账户" -#. module: agreement_legal_sale -#: model:ir.model.fields,field_description:agreement_legal_sale.field_product_product__is_serviceprofile -#: model:ir.model.fields,field_description:agreement_legal_sale.field_product_template__is_serviceprofile -msgid "Create a Service Profile" -msgstr "创建服务配置文件" - -#. module: agreement_legal_sale -#: model:ir.model.fields,help:agreement_legal_sale.field_product_product__is_serviceprofile -#: model:ir.model.fields,help:agreement_legal_sale.field_product_template__is_serviceprofile -msgid "If True, this product will create a service profile on the\n" -" agreement when the sales order is confirmed." -msgstr "如果为真,则当确认销售订单时,此产品将在协议上创建服务配置文件。" - -#. module: agreement_legal_sale -#: model:ir.model,name:agreement_legal_sale.model_product_template -msgid "Product Template" -msgstr "产品模版" - #. module: agreement_legal_sale #: model:ir.model,name:agreement_legal_sale.model_sale_order msgid "Sale Order" @@ -74,3 +55,14 @@ msgstr "销售订单" #: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line__sale_line_id msgid "Sales Order Line" msgstr "销售订单行" + +#~ msgid "Create a Service Profile" +#~ msgstr "创建服务配置文件" + +#~ msgid "" +#~ "If True, this product will create a service profile on the\n" +#~ " agreement when the sales order is confirmed." +#~ msgstr "如果为真,则当确认销售订单时,此产品将在协议上创建服务配置文件。" + +#~ msgid "Product Template" +#~ msgstr "产品模版" diff --git a/agreement_legal_sale/readme/USAGE.rst b/agreement_legal_sale/readme/USAGE.rst index 259af0b9..990ad674 100644 --- a/agreement_legal_sale/readme/USAGE.rst +++ b/agreement_legal_sale/readme/USAGE.rst @@ -8,7 +8,7 @@ To use this module: * the agreement template is copied into an agreement with a copy of the sections, clauses, recitals and appendices * all the sales order lines are added as agreement lines - * the products on the SO with BOM are added as service profile on the agreement + * the service products (with is_serviceprofile = True) on the SO are added as service profile on the agreement * the customer information is set from the sales order * the eventual analytic account linked to the sales order is set on the agreement * the agreement is linked to the sales order and vice versa diff --git a/agreement_legal_sale/static/description/index.html b/agreement_legal_sale/static/description/index.html index 76b36b27..1aa0ee8a 100644 --- a/agreement_legal_sale/static/description/index.html +++ b/agreement_legal_sale/static/description/index.html @@ -409,7 +409,7 @@

Usage

  • the agreement template is copied into an agreement with a copy of the sections, clauses, recitals and appendices
  • all the sales order lines are added as agreement lines
  • -
  • the products on the SO with BOM are added as service profile on the agreement
  • +
  • the service products (with is_serviceprofile = True) on the SO are added as service profile on the agreement
  • the customer information is set from the sales order
  • the eventual analytic account linked to the sales order is set on the agreement
  • the agreement is linked to the sales order and vice versa
  • From 5c4439ad39ccf15bc9acbf7c974dc86a39a1bf5a Mon Sep 17 00:00:00 2001 From: Alexandre Fayolle Date: Fri, 27 Sep 2019 09:41:19 +0200 Subject: [PATCH 04/22] [IMP] move some notions from agreement_legal to agreement we move the is_template field definition and the agreement.type model from the agreement_legal module to the agreement module. The fields are not displayed by default, unless the feature is enabled through a technical feature group, this is configurable in the agreement_sale module (because agreement in itself has no UI, and agreement_legal enables the feature by default) --- agreement_legal_sale/views/sale_order.xml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/agreement_legal_sale/views/sale_order.xml b/agreement_legal_sale/views/sale_order.xml index 8b607a89..8a077c3d 100644 --- a/agreement_legal_sale/views/sale_order.xml +++ b/agreement_legal_sale/views/sale_order.xml @@ -7,12 +7,11 @@ sale.order.agreement.form.view sale.order - + - - + + + {'invisible': [('agreement_id', '=', False)]} From 12e81f621cc3dffde260cfebc23141599bf86999 Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Tue, 17 Dec 2019 13:30:51 +0000 Subject: [PATCH 05/22] [FIX] Ensure Analytic Account is copied from SO to Agreement --- agreement_legal_sale/models/agreement.py | 3 ++- agreement_legal_sale/models/sale_order.py | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/agreement_legal_sale/models/agreement.py b/agreement_legal_sale/models/agreement.py index 6e064886..47ba502e 100644 --- a/agreement_legal_sale/models/agreement.py +++ b/agreement_legal_sale/models/agreement.py @@ -9,7 +9,8 @@ class Agreement(models.Model): sale_id = fields.Many2one('sale.order', string='Sales Order') analytic_account_id = fields.Many2one( - 'account.analytic.account', 'Analytic Account', readonly=True, + 'account.analytic.account', + 'Analytic Account', copy=False) diff --git a/agreement_legal_sale/models/sale_order.py b/agreement_legal_sale/models/sale_order.py index 95cde3dd..53967e2f 100644 --- a/agreement_legal_sale/models/sale_order.py +++ b/agreement_legal_sale/models/sale_order.py @@ -44,3 +44,18 @@ def _action_confirm(self): 'agreement_id': order.agreement_id.id, }) return res + + def action_confirm(self): + # If sale_timesheet is installed, the _action_confirm() + # may be setting an Analytic Account on the SO. + # But since it is not a dependency, that can happen after + # we create the Agreement. + # To work around that, we check if that is the case, + # and make sure the SO Analytic Account is copied to the Agreement. + res = super(SaleOrder, self).action_confirm() + for order in self: + agreement = order.agreement_id + if (order.analytic_account_id and agreement and + not agreement.analytic_account_id): + agreement.analytic_account_id = order.analytic_account_id + return res From a6f0593678b51becaf08424f4b9bdfe0adb5e3c4 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 26 Dec 2019 18:05:54 +0000 Subject: [PATCH 06/22] agreement_legal_sale 12.0.1.1.0 Added translation using Weblate (Portuguese (Brazil)) Added translation using Weblate (Spanish) Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (8 of 8 strings) Translation: contract-12.0/contract-12.0-agreement_legal_sale Translate-URL: https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-agreement_legal_sale/pt_BR/ --- agreement_legal_sale/__manifest__.py | 2 +- agreement_legal_sale/i18n/es.po | 55 +++++++++++++++++++++++++++ agreement_legal_sale/i18n/pt_BR.po | 57 ++++++++++++++++++++++++++++ 3 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 agreement_legal_sale/i18n/es.po create mode 100644 agreement_legal_sale/i18n/pt_BR.po diff --git a/agreement_legal_sale/__manifest__.py b/agreement_legal_sale/__manifest__.py index 968cc551..ac1bc5e1 100644 --- a/agreement_legal_sale/__manifest__.py +++ b/agreement_legal_sale/__manifest__.py @@ -4,7 +4,7 @@ { 'name': 'Agreement Legal Sale', 'summary': 'Create an agreement when the sale order is confirmed', - 'version': '12.0.1.0.0', + 'version': '12.0.1.1.0', 'license': 'AGPL-3', 'author': 'Open Source Integrators, Odoo Community Association (OCA)', 'category': 'Agreement', diff --git a/agreement_legal_sale/i18n/es.po b/agreement_legal_sale/i18n/es.po new file mode 100644 index 00000000..eb974df9 --- /dev/null +++ b/agreement_legal_sale/i18n/es.po @@ -0,0 +1,55 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * agreement_legal_sale +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.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_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_agreement +msgid "Agreement" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_agreement_line +msgid "Agreement Lines" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_sale_order__agreement_template_id +msgid "Agreement Template" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__analytic_account_id +msgid "Analytic Account" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_sale_order +msgid "Sale Order" +msgstr "" + +#. module: agreement_legal_sale +#: model_terms:ir.ui.view,arch_db:agreement_legal_sale.agreement_sale_form_view +msgid "Sales" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__sale_id +msgid "Sales Order" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line__sale_line_id +msgid "Sales Order Line" +msgstr "" diff --git a/agreement_legal_sale/i18n/pt_BR.po b/agreement_legal_sale/i18n/pt_BR.po new file mode 100644 index 00000000..28a4165f --- /dev/null +++ b/agreement_legal_sale/i18n/pt_BR.po @@ -0,0 +1,57 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * agreement_legal_sale +# +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 \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_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_agreement +msgid "Agreement" +msgstr "Acordo" + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_agreement_line +msgid "Agreement Lines" +msgstr "Linhas do Acordo" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_sale_order__agreement_template_id +msgid "Agreement Template" +msgstr "Modelo de Acordo" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__analytic_account_id +msgid "Analytic Account" +msgstr "Conta Analítica" + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_sale_order +msgid "Sale Order" +msgstr "Ordem de Venda" + +#. module: agreement_legal_sale +#: model_terms:ir.ui.view,arch_db:agreement_legal_sale.agreement_sale_form_view +msgid "Sales" +msgstr "Vendas" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__sale_id +msgid "Sales Order" +msgstr "Ordenss de Venda" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line__sale_line_id +msgid "Sales Order Line" +msgstr "Linha de Ordens de Venda" From 54fcc1719d3a6f46c432e69a593461d14377b355 Mon Sep 17 00:00:00 2001 From: Marcel Savegnago Date: Sat, 15 Feb 2020 02:20:16 -0300 Subject: [PATCH 07/22] [IMP] New icon for agreement modules (svg file in agreement_legal) Added translation using Weblate (Portuguese) Translated using Weblate (Portuguese) Currently translated at 100.0% (8 of 8 strings) Translation: contract-12.0/contract-12.0-agreement_legal_sale Translate-URL: https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-agreement_legal_sale/pt/ --- agreement_legal_sale/i18n/pt.po | 57 ++++++++++++++++++ .../static/description/icon.png | Bin 6755 -> 10512 bytes 2 files changed, 57 insertions(+) create mode 100644 agreement_legal_sale/i18n/pt.po diff --git a/agreement_legal_sale/i18n/pt.po b/agreement_legal_sale/i18n/pt.po new file mode 100644 index 00000000..117eb5be --- /dev/null +++ b/agreement_legal_sale/i18n/pt.po @@ -0,0 +1,57 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * agreement_legal_sale +# +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 \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_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_agreement +msgid "Agreement" +msgstr "Acordo" + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_agreement_line +msgid "Agreement Lines" +msgstr "Linhas de Acordo" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_sale_order__agreement_template_id +msgid "Agreement Template" +msgstr "Modelo de Acordo" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__analytic_account_id +msgid "Analytic Account" +msgstr "Conta Analítica" + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_sale_order +msgid "Sale Order" +msgstr "Encomenda de Venda" + +#. module: agreement_legal_sale +#: model_terms:ir.ui.view,arch_db:agreement_legal_sale.agreement_sale_form_view +msgid "Sales" +msgstr "Vendas" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__sale_id +msgid "Sales Order" +msgstr "Encomenda de Venda" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line__sale_line_id +msgid "Sales Order Line" +msgstr "Linha de Encomenda de Venda" diff --git a/agreement_legal_sale/static/description/icon.png b/agreement_legal_sale/static/description/icon.png index 23ce93135053c48a74469807879f2805b12382ad..a99cce6beeef7462f9eaf1873754490ef6632b3e 100644 GIT binary patch literal 10512 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 Date: Thu, 20 Feb 2020 17:26:51 +0000 Subject: [PATCH 08/22] agreement_legal_sale 12.0.1.1.1 [UPD] README.rst [UPD] README.rst --- agreement_legal_sale/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agreement_legal_sale/__manifest__.py b/agreement_legal_sale/__manifest__.py index ac1bc5e1..665dc873 100644 --- a/agreement_legal_sale/__manifest__.py +++ b/agreement_legal_sale/__manifest__.py @@ -4,7 +4,7 @@ { 'name': 'Agreement Legal Sale', 'summary': 'Create an agreement when the sale order is confirmed', - 'version': '12.0.1.1.0', + 'version': '12.0.1.1.1', 'license': 'AGPL-3', 'author': 'Open Source Integrators, Odoo Community Association (OCA)', 'category': 'Agreement', From e9325bb74fcc1d0cb28cfae8da114310b7258ad1 Mon Sep 17 00:00:00 2001 From: scampbell Date: Fri, 3 Apr 2020 13:00:51 -0700 Subject: [PATCH 09/22] [IMP] Allow Multiple SP's From SO Line [IMP] Simplify [IMP] Product ID [IMP] Indents Indent Update agreement_legal_sale/models/sale_order.py Co-Authored-By: Daniel Reis Update agreement_legal_sale/models/sale_order.py Co-Authored-By: Daniel Reis [IMP] Daniel Changes --- agreement_legal_sale/__manifest__.py | 1 + agreement_legal_sale/models/sale_order.py | 63 ++++++++++++++--------- 2 files changed, 40 insertions(+), 24 deletions(-) diff --git a/agreement_legal_sale/__manifest__.py b/agreement_legal_sale/__manifest__.py index 665dc873..85ebdd60 100644 --- a/agreement_legal_sale/__manifest__.py +++ b/agreement_legal_sale/__manifest__.py @@ -12,6 +12,7 @@ 'depends': [ 'agreement_legal', 'agreement_sale', + 'agreement_serviceprofile' ], 'data': [ 'views/agreement.xml', diff --git a/agreement_legal_sale/models/sale_order.py b/agreement_legal_sale/models/sale_order.py index 53967e2f..635f3aae 100644 --- a/agreement_legal_sale/models/sale_order.py +++ b/agreement_legal_sale/models/sale_order.py @@ -17,34 +17,49 @@ def _action_confirm(self): res = super(SaleOrder, self)._action_confirm() for order in self: if order.agreement_template_id: - order.agreement_id = order.agreement_template_id.copy(default={ - 'name': order.name, - 'code': order.name, - 'is_template': False, - 'sale_id': order.id, - 'partner_id': order.partner_id.id, - 'analytic_account_id': order.analytic_account_id and - order.analytic_account_id.id or False, - }) + order.agreement_id = order.\ + agreement_template_id.copy(default={ + 'name': order.name, + 'code': order.name, + 'is_template': False, + 'sale_id': order.id, + 'partner_id': order.partner_id.id, + 'analytic_account_id': order.analytic_account_id and + order.analytic_account_id.id or False, + }) for line in order.order_line: # Create agreement line - self.env['agreement.line'].create({ - 'product_id': line.product_id.id, - 'name': line.name, - 'agreement_id': order.agreement_id.id, - 'qty': line.product_uom_qty, - 'sale_line_id': line.id, - 'uom_id': line.product_uom.id - }) - # If the product creates service profiles, create one - if line.product_id.product_tmpl_id.is_serviceprofile: - self.env['agreement.serviceprofile'].create({ - 'name': line.name, - 'product_id': line.product_id.product_tmpl_id.id, - 'agreement_id': order.agreement_id.id, - }) + self.env['agreement.line'].\ + create(self._get_agreement_line_vals(line)) + # Create SP's based on product_id config + if line.product_id.is_serviceprofile: + self.create_sp_qty(line, order) return res + def create_sp_qty(self, line, order): + """ Create line.product_uom_qty SP's """ + if line.product_id.product_tmpl_id.is_serviceprofile: + for i in range(1, int(line.product_uom_qty)+1): + sp = self.env['agreement.serviceprofile'].\ + create(self._get_sp_vals(line, order, i)) + + def _get_agreement_line_vals(self, line): + return { + 'product_id': line.product_id.id, + 'name': line.name, + 'agreement_id': line.order_id.agreement_id.id, + 'qty': line.product_uom_qty, + 'sale_line_id': line.id, + 'uom_id': line.product_uom.id + } + + def _get_sp_vals(self, line, order, i): + return { + 'name': line.name + ' ' + str(i), + 'product_id': line.product_id.product_tmpl_id.id, + 'agreement_id': order.agreement_id.id, + } + def action_confirm(self): # If sale_timesheet is installed, the _action_confirm() # may be setting an Analytic Account on the SO. From bad178929df930ee7b954d71ebd6367dfa580a1a Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Thu, 9 Apr 2020 18:05:00 +0100 Subject: [PATCH 10/22] [REF] Fix lint (unused variable) --- agreement_legal_sale/models/sale_order.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agreement_legal_sale/models/sale_order.py b/agreement_legal_sale/models/sale_order.py index 635f3aae..76c48eec 100644 --- a/agreement_legal_sale/models/sale_order.py +++ b/agreement_legal_sale/models/sale_order.py @@ -40,7 +40,7 @@ def create_sp_qty(self, line, order): """ Create line.product_uom_qty SP's """ if line.product_id.product_tmpl_id.is_serviceprofile: for i in range(1, int(line.product_uom_qty)+1): - sp = self.env['agreement.serviceprofile'].\ + self.env['agreement.serviceprofile'].\ create(self._get_sp_vals(line, order, i)) def _get_agreement_line_vals(self, line): From f1c28c5665db2b441b200ba32932ce10f0afb144 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 9 Apr 2020 18:50:56 +0000 Subject: [PATCH 11/22] agreement_legal_sale 12.0.2.0.0 Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (8 of 8 strings) Translation: contract-12.0/contract-12.0-agreement_legal_sale Translate-URL: https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-agreement_legal_sale/pt_BR/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (8 of 8 strings) Translation: contract-12.0/contract-12.0-agreement_legal_sale Translate-URL: https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-agreement_legal_sale/pt_BR/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (8 of 8 strings) Translation: contract-12.0/contract-12.0-agreement_legal_sale Translate-URL: https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-agreement_legal_sale/pt_BR/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (8 of 8 strings) Translation: contract-12.0/contract-12.0-agreement_legal_sale Translate-URL: https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-agreement_legal_sale/pt_BR/ --- agreement_legal_sale/__manifest__.py | 2 +- agreement_legal_sale/i18n/pt_BR.po | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/agreement_legal_sale/__manifest__.py b/agreement_legal_sale/__manifest__.py index 85ebdd60..eb40ee12 100644 --- a/agreement_legal_sale/__manifest__.py +++ b/agreement_legal_sale/__manifest__.py @@ -4,7 +4,7 @@ { 'name': 'Agreement Legal Sale', 'summary': 'Create an agreement when the sale order is confirmed', - 'version': '12.0.1.1.1', + 'version': '12.0.2.0.0', 'license': 'AGPL-3', 'author': 'Open Source Integrators, Odoo Community Association (OCA)', 'category': 'Agreement', diff --git a/agreement_legal_sale/i18n/pt_BR.po b/agreement_legal_sale/i18n/pt_BR.po index 28a4165f..67ab1e59 100644 --- a/agreement_legal_sale/i18n/pt_BR.po +++ b/agreement_legal_sale/i18n/pt_BR.po @@ -6,8 +6,8 @@ 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 \n" +"PO-Revision-Date: 2020-11-06 08:08+0000\n" +"Last-Translator: Eder Brito \n" "Language-Team: none\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" @@ -24,7 +24,7 @@ msgstr "Acordo" #. module: agreement_legal_sale #: model:ir.model,name:agreement_legal_sale.model_agreement_line msgid "Agreement Lines" -msgstr "Linhas do Acordo" +msgstr "Linhas de Acordo" #. module: agreement_legal_sale #: model:ir.model.fields,field_description:agreement_legal_sale.field_sale_order__agreement_template_id @@ -39,7 +39,7 @@ msgstr "Conta Analítica" #. module: agreement_legal_sale #: model:ir.model,name:agreement_legal_sale.model_sale_order msgid "Sale Order" -msgstr "Ordem de Venda" +msgstr "Pedido de Venda" #. module: agreement_legal_sale #: model_terms:ir.ui.view,arch_db:agreement_legal_sale.agreement_sale_form_view @@ -49,9 +49,9 @@ msgstr "Vendas" #. module: agreement_legal_sale #: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__sale_id msgid "Sales Order" -msgstr "Ordenss de Venda" +msgstr "Pedido de Vendas" #. module: agreement_legal_sale #: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line__sale_line_id msgid "Sales Order Line" -msgstr "Linha de Ordens de Venda" +msgstr "Linha do Pedido de Venda" From f479abb14db3e2a75ceba511554872b20cee47d6 Mon Sep 17 00:00:00 2001 From: Patrick Wilson <36892066+patrickrwilson@users.noreply.github.com> Date: Mon, 10 May 2021 15:45:18 -0600 Subject: [PATCH 12/22] [14.0][MIG] agreement_legal_sale (Version 12.0 to 14.0) [MIG] Prettier [MIG] Tests Pre-Commit --- agreement_legal_sale/README.rst | 8 +-- agreement_legal_sale/__manifest__.py | 36 +++++----- agreement_legal_sale/models/agreement.py | 12 ++-- agreement_legal_sale/models/sale_order.py | 71 ++++++++++--------- .../static/description/index.html | 6 +- agreement_legal_sale/tests/__init__.py | 1 + agreement_legal_sale/tests/test_sale_order.py | 52 ++++++++++++++ agreement_legal_sale/views/agreement.xml | 20 +++--- agreement_legal_sale/views/sale_order.xml | 15 ++-- 9 files changed, 138 insertions(+), 83 deletions(-) create mode 100644 agreement_legal_sale/tests/__init__.py create mode 100644 agreement_legal_sale/tests/test_sale_order.py diff --git a/agreement_legal_sale/README.rst b/agreement_legal_sale/README.rst index fadda0cd..702c1e02 100644 --- a/agreement_legal_sale/README.rst +++ b/agreement_legal_sale/README.rst @@ -14,13 +14,13 @@ Agreement Legal Sale :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/12.0/agreement_legal_sale + :target: https://github.com/OCA/contract/tree/14.0/agreement_legal_sale :alt: OCA/contract .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-agreement_legal_sale :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/12.0 + :target: https://runbot.odoo-community.org/runbot/110/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -75,7 +75,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -126,6 +126,6 @@ Current `maintainers `__: |maintainer-osi-scampbell| |maintainer-max3903| -This module is part of the `OCA/contract `_ project on GitHub. +This module is part of the `OCA/contract `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/agreement_legal_sale/__manifest__.py b/agreement_legal_sale/__manifest__.py index eb40ee12..0f00767d 100644 --- a/agreement_legal_sale/__manifest__.py +++ b/agreement_legal_sale/__manifest__.py @@ -2,26 +2,22 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - 'name': 'Agreement Legal Sale', - 'summary': 'Create an agreement when the sale order is confirmed', - 'version': '12.0.2.0.0', - 'license': 'AGPL-3', - 'author': 'Open Source Integrators, Odoo Community Association (OCA)', - 'category': 'Agreement', - 'website': 'https://github.com/OCA/contract', - 'depends': [ - 'agreement_legal', - 'agreement_sale', - 'agreement_serviceprofile' + "name": "Agreement Legal Sale", + "summary": "Create an agreement when the sale order is confirmed", + "version": "14.0.1.0.0", + "license": "AGPL-3", + "author": "Open Source Integrators, Odoo Community Association (OCA)", + "category": "Agreement", + "website": "https://github.com/OCA/contract", + "depends": ["agreement_legal", "agreement_sale", "agreement_serviceprofile"], + "data": [ + "views/agreement.xml", + "views/sale_order.xml", ], - 'data': [ - 'views/agreement.xml', - 'views/sale_order.xml', - ], - 'installable': True, - 'development_status': 'Beta', - 'maintainers': [ - 'osi-scampbell', - 'max3903', + "installable": True, + "development_status": "Beta", + "maintainers": [ + "osi-scampbell", + "max3903", ], } diff --git a/agreement_legal_sale/models/agreement.py b/agreement_legal_sale/models/agreement.py index 47ba502e..456c03d1 100644 --- a/agreement_legal_sale/models/agreement.py +++ b/agreement_legal_sale/models/agreement.py @@ -5,17 +5,15 @@ class Agreement(models.Model): - _inherit = 'agreement' + _inherit = "agreement" - sale_id = fields.Many2one('sale.order', string='Sales Order') + sale_id = fields.Many2one("sale.order", string="Sales Order") analytic_account_id = fields.Many2one( - 'account.analytic.account', - 'Analytic Account', - copy=False) + "account.analytic.account", "Analytic Account", copy=False + ) class AgreementLine(models.Model): _inherit = "agreement.line" - sale_line_id = fields.Many2one('sale.order.line', - string='Sales Order Line') + sale_line_id = fields.Many2one("sale.order.line", string="Sales Order Line") diff --git a/agreement_legal_sale/models/sale_order.py b/agreement_legal_sale/models/sale_order.py index 76c48eec..8a3e308b 100644 --- a/agreement_legal_sale/models/sale_order.py +++ b/agreement_legal_sale/models/sale_order.py @@ -1,63 +1,65 @@ # Copyright (C) 2019 - TODAY, Open Source Integrators # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import api, fields, models +from odoo import fields, models class SaleOrder(models.Model): - _inherit = 'sale.order' + _inherit = "sale.order" agreement_template_id = fields.Many2one( - 'agreement', - string="Agreement Template", - domain="[('is_template', '=', True)]") + "agreement", string="Agreement Template", domain="[('is_template', '=', True)]" + ) - @api.multi def _action_confirm(self): res = super(SaleOrder, self)._action_confirm() for order in self: if order.agreement_template_id: - order.agreement_id = order.\ - agreement_template_id.copy(default={ - 'name': order.name, - 'code': order.name, - 'is_template': False, - 'sale_id': order.id, - 'partner_id': order.partner_id.id, - 'analytic_account_id': order.analytic_account_id and - order.analytic_account_id.id or False, - }) + order.agreement_id = order.agreement_template_id.copy( + default={ + "name": order.name, + "code": order.name, + "is_template": False, + "sale_id": order.id, + "partner_id": order.partner_id.id, + "analytic_account_id": order.analytic_account_id + and order.analytic_account_id.id + or False, + } + ) for line in order.order_line: # Create agreement line - self.env['agreement.line'].\ - create(self._get_agreement_line_vals(line)) + self.env["agreement.line"].create( + self._get_agreement_line_vals(line) + ) # Create SP's based on product_id config if line.product_id.is_serviceprofile: self.create_sp_qty(line, order) return res def create_sp_qty(self, line, order): - """ Create line.product_uom_qty SP's """ + """Create line.product_uom_qty SP's""" if line.product_id.product_tmpl_id.is_serviceprofile: - for i in range(1, int(line.product_uom_qty)+1): - self.env['agreement.serviceprofile'].\ - create(self._get_sp_vals(line, order, i)) + for i in range(1, int(line.product_uom_qty) + 1): + self.env["agreement.serviceprofile"].create( + self._get_sp_vals(line, order, i) + ) def _get_agreement_line_vals(self, line): return { - 'product_id': line.product_id.id, - 'name': line.name, - 'agreement_id': line.order_id.agreement_id.id, - 'qty': line.product_uom_qty, - 'sale_line_id': line.id, - 'uom_id': line.product_uom.id + "product_id": line.product_id.id, + "name": line.name, + "agreement_id": line.order_id.agreement_id.id, + "qty": line.product_uom_qty, + "sale_line_id": line.id, + "uom_id": line.product_uom.id, } def _get_sp_vals(self, line, order, i): return { - 'name': line.name + ' ' + str(i), - 'product_id': line.product_id.product_tmpl_id.id, - 'agreement_id': order.agreement_id.id, + "name": line.name + " " + str(i), + "product_id": line.product_id.product_tmpl_id.id, + "agreement_id": order.agreement_id.id, } def action_confirm(self): @@ -70,7 +72,10 @@ def action_confirm(self): res = super(SaleOrder, self).action_confirm() for order in self: agreement = order.agreement_id - if (order.analytic_account_id and agreement and - not agreement.analytic_account_id): + if ( + order.analytic_account_id + and agreement + and not agreement.analytic_account_id + ): agreement.analytic_account_id = order.analytic_account_id return res diff --git a/agreement_legal_sale/static/description/index.html b/agreement_legal_sale/static/description/index.html index 1aa0ee8a..e4706365 100644 --- a/agreement_legal_sale/static/description/index.html +++ b/agreement_legal_sale/static/description/index.html @@ -367,7 +367,7 @@

    Agreement Legal Sale

    !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

    +

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

    Odoo Sales App does not support the management of legal content for agreements and contracts. It’s also not integrated with the Agreement App.

    This module is for companies that needs their customer to sign an agreement @@ -426,7 +426,7 @@

    Bug Tracker

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

    +feedback.

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

    @@ -462,7 +462,7 @@

    Maintainers

    promote its widespread use.

    Current maintainers:

    osi-scampbell max3903

    -

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

    +

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

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

    diff --git a/agreement_legal_sale/tests/__init__.py b/agreement_legal_sale/tests/__init__.py new file mode 100644 index 00000000..6f699d0d --- /dev/null +++ b/agreement_legal_sale/tests/__init__.py @@ -0,0 +1 @@ +from . import test_sale_order diff --git a/agreement_legal_sale/tests/test_sale_order.py b/agreement_legal_sale/tests/test_sale_order.py new file mode 100644 index 00000000..0727c12c --- /dev/null +++ b/agreement_legal_sale/tests/test_sale_order.py @@ -0,0 +1,52 @@ +# Copyright 2021 Ecosoft Co., Ltd (http://ecosoft.co.th) +# Copyright 2021 Sergio Teruel - Tecnativa +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +from datetime import timedelta + +from odoo import fields +from odoo.tests.common import TransactionCase + + +class TestSaleOrder(TransactionCase): + def setUp(self): + super().setUp() + self.test_customer = self.env["res.partner"].create({"name": "TestCustomer"}) + self.agreement_type = self.env["agreement.type"].create( + { + "name": "Test Agreement Type", + "domain": "sale", + } + ) + self.test_agreement_template = self.env["agreement"].create( + { + "name": "TestAgreementTemplate", + "description": "Test Template", + "special_terms": "Test Template", + "is_template": True, + "partner_id": self.test_customer.id, + "start_date": fields.Date.today(), + "end_date": fields.Date.today() + timedelta(days=365), + } + ) + self.test_product = self.env["product.product"].create({"name": "TestProduct"}) + self.test_sale_order = self.env["sale.order"].create( + { + "partner_id": self.test_customer.id, + "agreement_template_id": self.test_agreement_template.id, + "date_order": fields.Date.today(), + "order_line": [ + (0, 0, {"product_id": self.test_product.id, "product_uom_qty": 1.0}) + ], + } + ) + + # TEST 01: Test _action_confirm method + def test_action_confirm(self): + sale_order = self.test_sale_order + sale_order._action_confirm() + agreement = self.env["agreement"].search([("sale_id", "=", sale_order.id)]) + self.assertEqual( + agreement.sale_id.id, + sale_order.id, + ) diff --git a/agreement_legal_sale/views/agreement.xml b/agreement_legal_sale/views/agreement.xml index dffaee97..8c4be1ef 100644 --- a/agreement_legal_sale/views/agreement.xml +++ b/agreement_legal_sale/views/agreement.xml @@ -1,29 +1,31 @@ - + - agreement.form.view agreement - + - - + + - + - + diff --git a/agreement_legal_sale/views/sale_order.xml b/agreement_legal_sale/views/sale_order.xml index 8a077c3d..c6bc21c2 100644 --- a/agreement_legal_sale/views/sale_order.xml +++ b/agreement_legal_sale/views/sale_order.xml @@ -1,20 +1,21 @@ - + - sale.order.agreement.form.view sale.order - + - - {'invisible': [('agreement_id', '=', False)]} + + {'invisible': [('agreement_id', '=', False)]} - + From 8543352f622e2813b6687cf6c59b2b1c7083a203 Mon Sep 17 00:00:00 2001 From: HemanginiPatel Date: Mon, 16 Aug 2021 16:08:14 +0530 Subject: [PATCH 13/22] [IMP]Improved the UT. --- agreement_legal_sale/tests/test_sale_order.py | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/agreement_legal_sale/tests/test_sale_order.py b/agreement_legal_sale/tests/test_sale_order.py index 0727c12c..87696a9e 100644 --- a/agreement_legal_sale/tests/test_sale_order.py +++ b/agreement_legal_sale/tests/test_sale_order.py @@ -18,6 +18,9 @@ def setUp(self): "domain": "sale", } ) + self.test_account_analytic_account = self.env[ + "account.analytic.account" + ].create({"name": "Test Analytic Account"}) self.test_agreement_template = self.env["agreement"].create( { "name": "TestAgreementTemplate", @@ -27,6 +30,20 @@ def setUp(self): "partner_id": self.test_customer.id, "start_date": fields.Date.today(), "end_date": fields.Date.today() + timedelta(days=365), + "analytic_account_id": self.test_account_analytic_account.id, + } + ) + self.test_agreement_template_no_analytic_account_id = self.env[ + "agreement" + ].create( + { + "name": "TestAgreementTemplate A", + "description": "Test Template", + "special_terms": "Test Template", + "is_template": True, + "partner_id": self.test_customer.id, + "start_date": fields.Date.today(), + "end_date": fields.Date.today() + timedelta(days=365), } ) self.test_product = self.env["product.product"].create({"name": "TestProduct"}) @@ -40,6 +57,33 @@ def setUp(self): ], } ) + self.test_product_templ_is_serviceprofile = self.env["product.template"].create( + {"name": "TestProductA", "is_serviceprofile": True} + ) + self.test_product_is_serviceprofile = self.env["product.product"].create( + { + "name": "TestProductA", + "is_serviceprofile": True, + "product_tmpl_id": self.test_product_templ_is_serviceprofile.id, + } + ) + self.test_sale_order_is_serviceprofile = self.env["sale.order"].create( + { + "partner_id": self.test_customer.id, + "agreement_template_id": self.test_agreement_template.id, + "date_order": fields.Date.today(), + "order_line": [ + ( + 0, + 0, + { + "product_id": self.test_product_is_serviceprofile.id, + "product_uom_qty": 1.0, + }, + ) + ], + } + ) # TEST 01: Test _action_confirm method def test_action_confirm(self): @@ -50,3 +94,14 @@ def test_action_confirm(self): agreement.sale_id.id, sale_order.id, ) + + # Test 02: is_serviceprofile Product + is_serviceprofile_so = self.test_sale_order_is_serviceprofile + is_serviceprofile_so._action_confirm() + agreement = self.env["agreement"].search( + [("sale_id", "=", is_serviceprofile_so.id)] + ) + self.assertEqual( + agreement.sale_id.id, + is_serviceprofile_so.id, + ) From 8a0e0ba8e814def1b3c848e01c1257b9ecaf3e91 Mon Sep 17 00:00:00 2001 From: HemanginiPatel Date: Tue, 17 Aug 2021 12:26:45 +0530 Subject: [PATCH 14/22] [IMP]Improved the codecov. --- agreement_legal_sale/models/sale_order.py | 3 +-- agreement_legal_sale/tests/test_sale_order.py | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/agreement_legal_sale/models/sale_order.py b/agreement_legal_sale/models/sale_order.py index 8a3e308b..dd07f6e8 100644 --- a/agreement_legal_sale/models/sale_order.py +++ b/agreement_legal_sale/models/sale_order.py @@ -69,7 +69,6 @@ def action_confirm(self): # we create the Agreement. # To work around that, we check if that is the case, # and make sure the SO Analytic Account is copied to the Agreement. - res = super(SaleOrder, self).action_confirm() for order in self: agreement = order.agreement_id if ( @@ -78,4 +77,4 @@ def action_confirm(self): and not agreement.analytic_account_id ): agreement.analytic_account_id = order.analytic_account_id - return res + return super(SaleOrder, self).action_confirm() diff --git a/agreement_legal_sale/tests/test_sale_order.py b/agreement_legal_sale/tests/test_sale_order.py index 87696a9e..46da7280 100644 --- a/agreement_legal_sale/tests/test_sale_order.py +++ b/agreement_legal_sale/tests/test_sale_order.py @@ -84,6 +84,26 @@ def setUp(self): ], } ) + self.test_agreement = self.env["agreement"].create( + { + "name": "TestAgreement A", + "description": "Test Agreement A", + "special_terms": "TestAgreement A", + "start_date": fields.Date.today(), + "end_date": fields.Date.today() + timedelta(days=365), + } + ) + self.test_sale_order_account_analytic_account = self.env["sale.order"].create( + { + "partner_id": self.test_customer.id, + "agreement_template_id": self.test_agreement_template_no_analytic_account_id.id, + "date_order": fields.Date.today(), + "agreement_id": self.test_agreement.id, + "order_line": [ + (0, 0, {"product_id": self.test_product.id, "product_uom_qty": 1.0}) + ], + } + ) # TEST 01: Test _action_confirm method def test_action_confirm(self): @@ -105,3 +125,8 @@ def test_action_confirm(self): agreement.sale_id.id, is_serviceprofile_so.id, ) + # Test 03: Test action_confirm method + self.test_sale_order_account_analytic_account.write( + {"analytic_account_id": self.test_account_analytic_account.id} + ) + self.test_sale_order_account_analytic_account.action_confirm() From 0de34fc4987fc77e5793f2796f119b131c22eee7 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Fri, 26 Nov 2021 14:31:07 +0000 Subject: [PATCH 15/22] [UPD] Update agreement_legal_sale.pot --- .../i18n/agreement_legal_sale.pot | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/agreement_legal_sale/i18n/agreement_legal_sale.pot b/agreement_legal_sale/i18n/agreement_legal_sale.pot index 17ee4edc..0363414c 100644 --- a/agreement_legal_sale/i18n/agreement_legal_sale.pot +++ b/agreement_legal_sale/i18n/agreement_legal_sale.pot @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * agreement_legal_sale +# * agreement_legal_sale # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\n" +"Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -34,8 +34,24 @@ msgid "Analytic Account" msgstr "" #. module: agreement_legal_sale -#: model:ir.model,name:agreement_legal_sale.model_sale_order -msgid "Sale Order" +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__display_name +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line__display_name +#: model:ir.model.fields,field_description:agreement_legal_sale.field_sale_order__display_name +msgid "Display Name" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__id +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line__id +#: model:ir.model.fields,field_description:agreement_legal_sale.field_sale_order__id +msgid "ID" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement____last_update +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line____last_update +#: model:ir.model.fields,field_description:agreement_legal_sale.field_sale_order____last_update +msgid "Last Modified on" msgstr "" #. module: agreement_legal_sale @@ -44,6 +60,7 @@ msgid "Sales" msgstr "" #. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_sale_order #: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__sale_id msgid "Sales Order" msgstr "" @@ -52,4 +69,3 @@ msgstr "" #: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line__sale_line_id msgid "Sales Order Line" msgstr "" - From 74e0d78db9362e56bd8b70c1a15f2bf8e6a33dc1 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 26 Nov 2021 17:29:51 +0000 Subject: [PATCH 16/22] [UPD] README.rst --- agreement_legal_sale/README.rst | 2 +- agreement_legal_sale/static/description/index.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/agreement_legal_sale/README.rst b/agreement_legal_sale/README.rst index 702c1e02..b352982e 100644 --- a/agreement_legal_sale/README.rst +++ b/agreement_legal_sale/README.rst @@ -17,7 +17,7 @@ Agreement Legal Sale :target: https://github.com/OCA/contract/tree/14.0/agreement_legal_sale :alt: OCA/contract .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-agreement_legal_sale + :target: https://translation.odoo-community.org/projects/contract-14-0/contract-14-0-agreement_legal_sale :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 diff --git a/agreement_legal_sale/static/description/index.html b/agreement_legal_sale/static/description/index.html index e4706365..e0bcccb3 100644 --- a/agreement_legal_sale/static/description/index.html +++ b/agreement_legal_sale/static/description/index.html @@ -367,7 +367,7 @@

    Agreement Legal Sale

    !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

    +

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

    Odoo Sales App does not support the management of legal content for agreements and contracts. It’s also not integrated with the Agreement App.

    This module is for companies that needs their customer to sign an agreement From 966fb08234abf97e055b03309df284e3053e923e Mon Sep 17 00:00:00 2001 From: Ignacio Buioli Date: Sun, 6 Feb 2022 18:22:19 +0000 Subject: [PATCH 17/22] Added translation using Weblate (Spanish (Argentina)) --- agreement_legal_sale/i18n/es_AR.po | 72 ++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 agreement_legal_sale/i18n/es_AR.po diff --git a/agreement_legal_sale/i18n/es_AR.po b/agreement_legal_sale/i18n/es_AR.po new file mode 100644 index 00000000..bfc06bf2 --- /dev/null +++ b/agreement_legal_sale/i18n/es_AR.po @@ -0,0 +1,72 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * agreement_legal_sale +# +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_AR\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_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_agreement +msgid "Agreement" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_agreement_line +msgid "Agreement Lines" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_sale_order__agreement_template_id +msgid "Agreement Template" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__analytic_account_id +msgid "Analytic Account" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__display_name +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line__display_name +#: model:ir.model.fields,field_description:agreement_legal_sale.field_sale_order__display_name +msgid "Display Name" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__id +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line__id +#: model:ir.model.fields,field_description:agreement_legal_sale.field_sale_order__id +msgid "ID" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement____last_update +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line____last_update +#: model:ir.model.fields,field_description:agreement_legal_sale.field_sale_order____last_update +msgid "Last Modified on" +msgstr "" + +#. module: agreement_legal_sale +#: model_terms:ir.ui.view,arch_db:agreement_legal_sale.agreement_sale_form_view +msgid "Sales" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model,name:agreement_legal_sale.model_sale_order +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__sale_id +msgid "Sales Order" +msgstr "" + +#. module: agreement_legal_sale +#: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line__sale_line_id +msgid "Sales Order Line" +msgstr "" From 5cdfb66a375e0dfa944739a1375b93c32e1ca2af Mon Sep 17 00:00:00 2001 From: Ignacio Buioli Date: Sun, 6 Feb 2022 18:27:55 +0000 Subject: [PATCH 18/22] Translated using Weblate (Spanish (Argentina)) Currently translated at 100.0% (10 of 10 strings) Translation: contract-14.0/contract-14.0-agreement_legal_sale Translate-URL: https://translation.odoo-community.org/projects/contract-14-0/contract-14-0-agreement_legal_sale/es_AR/ --- agreement_legal_sale/i18n/es_AR.po | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/agreement_legal_sale/i18n/es_AR.po b/agreement_legal_sale/i18n/es_AR.po index bfc06bf2..bd90c094 100644 --- a/agreement_legal_sale/i18n/es_AR.po +++ b/agreement_legal_sale/i18n/es_AR.po @@ -6,67 +6,69 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2022-02-06 20:59+0000\n" +"Last-Translator: Ignacio Buioli \n" "Language-Team: none\n" "Language: es_AR\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_legal_sale #: model:ir.model,name:agreement_legal_sale.model_agreement msgid "Agreement" -msgstr "" +msgstr "Acuerdo" #. module: agreement_legal_sale #: model:ir.model,name:agreement_legal_sale.model_agreement_line msgid "Agreement Lines" -msgstr "" +msgstr "Líneas de Acuerdo" #. module: agreement_legal_sale #: model:ir.model.fields,field_description:agreement_legal_sale.field_sale_order__agreement_template_id msgid "Agreement Template" -msgstr "" +msgstr "Plantilla de Acuerdo" #. module: agreement_legal_sale #: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__analytic_account_id msgid "Analytic Account" -msgstr "" +msgstr "Cuenta Analítica" #. module: agreement_legal_sale #: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__display_name #: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line__display_name #: model:ir.model.fields,field_description:agreement_legal_sale.field_sale_order__display_name msgid "Display Name" -msgstr "" +msgstr "Mostrar Nombre" #. module: agreement_legal_sale #: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__id #: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line__id #: model:ir.model.fields,field_description:agreement_legal_sale.field_sale_order__id msgid "ID" -msgstr "" +msgstr "ID" #. module: agreement_legal_sale #: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement____last_update #: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line____last_update #: model:ir.model.fields,field_description:agreement_legal_sale.field_sale_order____last_update msgid "Last Modified on" -msgstr "" +msgstr "Última Modificación el" #. module: agreement_legal_sale #: model_terms:ir.ui.view,arch_db:agreement_legal_sale.agreement_sale_form_view msgid "Sales" -msgstr "" +msgstr "Ventas" #. module: agreement_legal_sale #: model:ir.model,name:agreement_legal_sale.model_sale_order #: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement__sale_id msgid "Sales Order" -msgstr "" +msgstr "Pedido de Venta" #. module: agreement_legal_sale #: model:ir.model.fields,field_description:agreement_legal_sale.field_agreement_line__sale_line_id msgid "Sales Order Line" -msgstr "" +msgstr "Línea de Pedido de Venta" From d7ebf8010961c88b68a84d58e3263e087e2ad86b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Didderen?= Date: Sun, 12 Jun 2022 11:44:12 +0200 Subject: [PATCH 19/22] [FIX] agreement_legal_sale - ignore sale order lines with display_type --- agreement_legal_sale/models/sale_order.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agreement_legal_sale/models/sale_order.py b/agreement_legal_sale/models/sale_order.py index dd07f6e8..5ecdd7cf 100644 --- a/agreement_legal_sale/models/sale_order.py +++ b/agreement_legal_sale/models/sale_order.py @@ -27,7 +27,7 @@ def _action_confirm(self): or False, } ) - for line in order.order_line: + for line in order.order_line.filtered(lambda l: not l.display_type): # Create agreement line self.env["agreement.line"].create( self._get_agreement_line_vals(line) From 1560334d23455db70550a4871982ef1b56b5cc83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Didderen?= Date: Thu, 16 Jun 2022 14:04:26 +0200 Subject: [PATCH 20/22] [FIX] agreement_legal_sale - add test lines for display type --- agreement_legal_sale/tests/test_sale_order.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/agreement_legal_sale/tests/test_sale_order.py b/agreement_legal_sale/tests/test_sale_order.py index 46da7280..b99bc0b0 100644 --- a/agreement_legal_sale/tests/test_sale_order.py +++ b/agreement_legal_sale/tests/test_sale_order.py @@ -53,7 +53,13 @@ def setUp(self): "agreement_template_id": self.test_agreement_template.id, "date_order": fields.Date.today(), "order_line": [ - (0, 0, {"product_id": self.test_product.id, "product_uom_qty": 1.0}) + (0, 0, {"display_type": "line_section", "name": "Test section"}), + (0, 0, {"display_type": "line_note", "name": "Test note"}), + ( + 0, + 0, + {"product_id": self.test_product.id, "product_uom_qty": 1.0}, + ), ], } ) @@ -73,6 +79,8 @@ def setUp(self): "agreement_template_id": self.test_agreement_template.id, "date_order": fields.Date.today(), "order_line": [ + (0, 0, {"display_type": "line_section", "name": "Test section"}), + (0, 0, {"display_type": "line_note", "name": "Test note"}), ( 0, 0, @@ -80,7 +88,7 @@ def setUp(self): "product_id": self.test_product_is_serviceprofile.id, "product_uom_qty": 1.0, }, - ) + ), ], } ) From cfdc1a165f54575ed534650307f3cfe2b93f423b Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 24 Oct 2022 14:58:40 +0000 Subject: [PATCH 21/22] agreement_legal_sale 14.0.1.0.1 --- agreement_legal_sale/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agreement_legal_sale/__manifest__.py b/agreement_legal_sale/__manifest__.py index 0f00767d..acd54895 100644 --- a/agreement_legal_sale/__manifest__.py +++ b/agreement_legal_sale/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Agreement Legal Sale", "summary": "Create an agreement when the sale order is confirmed", - "version": "14.0.1.0.0", + "version": "14.0.1.0.1", "license": "AGPL-3", "author": "Open Source Integrators, Odoo Community Association (OCA)", "category": "Agreement", From 556bf34b75f65177c642b9da446dcba290f211f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adasat=20Torres=20de=20Le=C3=B3n?= Date: Wed, 18 Sep 2024 15:23:38 +0100 Subject: [PATCH 22/22] [MIG]agreement_legal_sale: Migration to 16.0 --- agreement_legal_sale/README.rst | 33 +++++---- agreement_legal_sale/__manifest__.py | 4 +- agreement_legal_sale/models/sale_order.py | 4 +- agreement_legal_sale/readme/CONTRIBUTORS.rst | 4 ++ .../static/description/index.html | 70 +++++++++++-------- agreement_legal_sale/tests/test_sale_order.py | 61 ++++++++-------- .../odoo/addons/agreement_legal_sale | 1 + setup/agreement_legal_sale/setup.py | 6 ++ 8 files changed, 105 insertions(+), 78 deletions(-) create mode 120000 setup/agreement_legal_sale/odoo/addons/agreement_legal_sale create mode 100644 setup/agreement_legal_sale/setup.py diff --git a/agreement_legal_sale/README.rst b/agreement_legal_sale/README.rst index b352982e..e916c4b3 100644 --- a/agreement_legal_sale/README.rst +++ b/agreement_legal_sale/README.rst @@ -2,10 +2,13 @@ Agreement Legal Sale ==================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:56733c20e702eb98a24373cd239a8110683ac4e3ccec99f7189746b277516b20 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -13,17 +16,17 @@ Agreement Legal Sale .. |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_legal_sale - :alt: OCA/contract +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fagreement-lightgray.png?logo=github + :target: https://github.com/OCA/agreement/tree/16.0/agreement_legal_sale + :alt: OCA/agreement .. |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_legal_sale + :target: https://translation.odoo-community.org/projects/agreement-16-0/agreement-16-0-agreement_legal_sale :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 +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/agreement&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| Odoo Sales App does not support the management of legal content for agreements and contracts. It's also not integrated with the Agreement App. @@ -72,10 +75,10 @@ The roadmap is documented on https://github.com/OCA/contract/issues. Bug Tracker =========== -Bugs are tracked on `GitHub Issues `_. +Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -94,6 +97,10 @@ Contributors * Maxime Chambreuil * Serpent Consulting Services Pvt. Ltd. +* `Binhex `_: + + * Adasat Torres de León + Other credits ~~~~~~~~~~~~~ @@ -126,6 +133,6 @@ Current `maintainers `__: |maintainer-osi-scampbell| |maintainer-max3903| -This module is part of the `OCA/contract `_ project on GitHub. +This module is part of the `OCA/agreement `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/agreement_legal_sale/__manifest__.py b/agreement_legal_sale/__manifest__.py index acd54895..b36ca47e 100644 --- a/agreement_legal_sale/__manifest__.py +++ b/agreement_legal_sale/__manifest__.py @@ -4,11 +4,11 @@ { "name": "Agreement Legal Sale", "summary": "Create an agreement when the sale order is confirmed", - "version": "14.0.1.0.1", + "version": "16.0.1.0.0", "license": "AGPL-3", "author": "Open Source Integrators, Odoo Community Association (OCA)", "category": "Agreement", - "website": "https://github.com/OCA/contract", + "website": "https://github.com/OCA/agreement", "depends": ["agreement_legal", "agreement_sale", "agreement_serviceprofile"], "data": [ "views/agreement.xml", diff --git a/agreement_legal_sale/models/sale_order.py b/agreement_legal_sale/models/sale_order.py index 5ecdd7cf..6f4af224 100644 --- a/agreement_legal_sale/models/sale_order.py +++ b/agreement_legal_sale/models/sale_order.py @@ -12,7 +12,7 @@ class SaleOrder(models.Model): ) def _action_confirm(self): - res = super(SaleOrder, self)._action_confirm() + res = super()._action_confirm() for order in self: if order.agreement_template_id: order.agreement_id = order.agreement_template_id.copy( @@ -77,4 +77,4 @@ def action_confirm(self): and not agreement.analytic_account_id ): agreement.analytic_account_id = order.analytic_account_id - return super(SaleOrder, self).action_confirm() + return super().action_confirm() diff --git a/agreement_legal_sale/readme/CONTRIBUTORS.rst b/agreement_legal_sale/readme/CONTRIBUTORS.rst index 364a1729..121866b9 100644 --- a/agreement_legal_sale/readme/CONTRIBUTORS.rst +++ b/agreement_legal_sale/readme/CONTRIBUTORS.rst @@ -1,3 +1,7 @@ * Steven Campbell * Maxime Chambreuil * Serpent Consulting Services Pvt. Ltd. + +* `Binhex `_: + + * Adasat Torres de León diff --git a/agreement_legal_sale/static/description/index.html b/agreement_legal_sale/static/description/index.html index e0bcccb3..ef6573a3 100644 --- a/agreement_legal_sale/static/description/index.html +++ b/agreement_legal_sale/static/description/index.html @@ -1,20 +1,20 @@ - - + Agreement Legal Sale