mirror of
https://github.com/OCA/contract.git
synced 2025-02-13 17:57:24 +02:00
@@ -15,7 +15,6 @@
|
||||
],
|
||||
'data': [
|
||||
'views/agreement.xml',
|
||||
'views/product.xml',
|
||||
'views/sale_order.xml',
|
||||
],
|
||||
'installable': True,
|
||||
|
||||
@@ -3,5 +3,4 @@
|
||||
from . import (
|
||||
sale_order,
|
||||
agreement,
|
||||
product,
|
||||
)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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': [
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
from . import agreement_serviceprofile
|
||||
from . import agreement
|
||||
from . import agreement_stage
|
||||
from . import product
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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'
|
||||
@@ -1,7 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright 2019 Open Source Integrators
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
|
||||
<odoo>
|
||||
<!-- Copyright 2019 Open Source Integrators
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
|
||||
|
||||
<!-- Product Template Form View -->
|
||||
<record id="product_template_form_view" model="ir.ui.view">
|
||||
@@ -10,7 +9,7 @@
|
||||
<field name="inherit_id" ref="product.product_template_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//notebook" position="inside">
|
||||
<page id="agreement" string="Agreement">
|
||||
<page id="agreement" string="Service">
|
||||
<group>
|
||||
<group id="agreement_left">
|
||||
<field name="is_serviceprofile"/>
|
||||
Reference in New Issue
Block a user