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/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 @@ 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/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_serviceprofile/__manifest__.py b/agreement_serviceprofile/__manifest__.py index 7813d237..9deff235 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 b0ff00e0..ee547834 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 0e5ac452..c152e4de 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_legal_sale/models/product.py b/agreement_serviceprofile/models/product.py similarity index 62% rename from agreement_legal_sale/models/product.py rename to agreement_serviceprofile/models/product.py index 59d7c8f0..afde8de0 100644 --- a/agreement_legal_sale/models/product.py +++ b/agreement_serviceprofile/models/product.py @@ -1,13 +1,18 @@ # Copyright (C) 2019 - TODAY, Open Source Integrators # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import fields, models +from odoo import api, fields, models class ProductTemplate(models.Model): _inherit = 'product.template' is_serviceprofile = fields.Boolean( - string="Create a Service Profile", + 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_legal_sale/views/product.xml b/agreement_serviceprofile/views/product.xml similarity index 77% rename from agreement_legal_sale/views/product.xml rename to agreement_serviceprofile/views/product.xml index 54fa92cb..d5b0571d 100644 --- a/agreement_legal_sale/views/product.xml +++ b/agreement_serviceprofile/views/product.xml @@ -1,7 +1,6 @@ - + - @@ -10,7 +9,7 @@ - +