From a5353ac1d15d34ca84554ada136f167a79cb1580 Mon Sep 17 00:00:00 2001 From: Maxime Chambreuil Date: Thu, 5 Sep 2019 12:17:51 -0500 Subject: [PATCH 1/3] [FIX] agreement_serviceprofile: Github Issue #370 --- agreement_serviceprofile/__manifest__.py | 3 ++- agreement_serviceprofile/models/__init__.py | 1 + .../models/agreement_serviceprofile.py | 3 ++- agreement_serviceprofile/models/product.py | 18 ++++++++++++++ agreement_serviceprofile/views/product.xml | 24 +++++++++++++++++++ 5 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 agreement_serviceprofile/models/product.py create mode 100644 agreement_serviceprofile/views/product.xml diff --git a/agreement_serviceprofile/__manifest__.py b/agreement_serviceprofile/__manifest__.py index 7813d2374..9deff2353 100644 --- a/agreement_serviceprofile/__manifest__.py +++ b/agreement_serviceprofile/__manifest__.py @@ -15,8 +15,9 @@ 'data': [ 'data/serviceprofile_stage.xml', 'security/ir.model.access.csv', + 'views/product.xml', 'views/agreement_serviceprofile.xml', - 'views/agreement.xml' + 'views/agreement.xml', ], 'development_status': 'Beta', 'maintainers': [ diff --git a/agreement_serviceprofile/models/__init__.py b/agreement_serviceprofile/models/__init__.py index b0ff00e00..ee547834e 100644 --- a/agreement_serviceprofile/models/__init__.py +++ b/agreement_serviceprofile/models/__init__.py @@ -1,3 +1,4 @@ from . import agreement_serviceprofile from . import agreement from . import agreement_stage +from . import product diff --git a/agreement_serviceprofile/models/agreement_serviceprofile.py b/agreement_serviceprofile/models/agreement_serviceprofile.py index 0e5ac4524..c152e4de9 100644 --- a/agreement_serviceprofile/models/agreement_serviceprofile.py +++ b/agreement_serviceprofile/models/agreement_serviceprofile.py @@ -26,7 +26,8 @@ class AgreementServiceProfile(models.Model): notes = fields.Text(string="Notes") product_id = fields.Many2one('product.template', 'Service Product', - domain="[('type', '=', 'service')]", + domain="[('is_serviceprofile', '=', True), " + "('type', '=', 'service')]", required=True) partner_id = fields.Many2one(related='agreement_id.partner_id', string='Partner') diff --git a/agreement_serviceprofile/models/product.py b/agreement_serviceprofile/models/product.py new file mode 100644 index 000000000..afde8de02 --- /dev/null +++ b/agreement_serviceprofile/models/product.py @@ -0,0 +1,18 @@ +# 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 ProductTemplate(models.Model): + _inherit = 'product.template' + + is_serviceprofile = fields.Boolean( + string="Create Service Profiles", + help="""If True, this product will create a service profile on the + agreement when the sales order is confirmed.""") + + @api.onchange('is_serviceprofile') + def onchange_type(self): + if self.is_serviceprofile: + self.type = 'service' diff --git a/agreement_serviceprofile/views/product.xml b/agreement_serviceprofile/views/product.xml new file mode 100644 index 000000000..d5b0571d9 --- /dev/null +++ b/agreement_serviceprofile/views/product.xml @@ -0,0 +1,24 @@ + + + + + + product.template.form.view + product.template + + + + + + + + + + + + + + + + From 11673e4be0293eeec2fdee5e0dff5b0147908977 Mon Sep 17 00:00:00 2001 From: Maxime Chambreuil Date: Thu, 5 Sep 2019 12:18:45 -0500 Subject: [PATCH 2/3] [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 7ed16142d..968cc551c 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 2f3b40d75..fdabc4772 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 59d7c8f04..000000000 --- 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 a6713a614..95cde3dd7 100644 --- a/agreement_legal_sale/models/sale_order.py +++ b/agreement_legal_sale/models/sale_order.py @@ -36,10 +36,11 @@ class SaleOrder(models.Model): '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 54fa92cba..000000000 --- a/agreement_legal_sale/views/product.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - product.template.form.view - product.template - - - - - - - - - - - - - - - - From a23badbd23a0a116e2ecbe3be156f0881f66c161 Mon Sep 17 00:00:00 2001 From: Maxime Chambreuil Date: Thu, 5 Sep 2019 12:23:14 -0500 Subject: [PATCH 3/3] [FIX] agreement_legal_sale: Github Issue #371 --- agreement_legal_sale/readme/USAGE.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agreement_legal_sale/readme/USAGE.rst b/agreement_legal_sale/readme/USAGE.rst index 259af0b9f..990ad674c 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