diff --git a/addons/sale_contract_asset/__init__.py b/addons/sale_contract_asset/__init__.py new file mode 100644 index 00000000000..bff786c0885 --- /dev/null +++ b/addons/sale_contract_asset/__init__.py @@ -0,0 +1 @@ +import models diff --git a/addons/sale_contract_asset/__openerp__.py b/addons/sale_contract_asset/__openerp__.py new file mode 100644 index 00000000000..765a58d5cd2 --- /dev/null +++ b/addons/sale_contract_asset/__openerp__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- + +{ + 'name': 'Deferred revenue management for contracts', + 'version': '1.0', + 'category': 'Sales Management', + 'description': """ +This module allows you to set a deferred revenue on your subscription contracts. +""", + 'author': 'Odoo S.A.', + 'website': 'https://www.odoo.com/', + 'depends': ['sale_contract', 'account_asset'], + 'data': [ + 'views/account_analytic_account_views.xml', + ], + 'installable': True, + 'auto_install': True, +} diff --git a/addons/sale_contract_asset/models/__init__.py b/addons/sale_contract_asset/models/__init__.py new file mode 100644 index 00000000000..47e0afe0b14 --- /dev/null +++ b/addons/sale_contract_asset/models/__init__.py @@ -0,0 +1 @@ +import account_analytic_account diff --git a/addons/sale_contract_asset/models/account_analytic_account.py b/addons/sale_contract_asset/models/account_analytic_account.py new file mode 100644 index 00000000000..88c27cf3ad6 --- /dev/null +++ b/addons/sale_contract_asset/models/account_analytic_account.py @@ -0,0 +1,29 @@ +from openerp import models, fields, api + + +class account_analytic_account(models.Model): + _name = "account.analytic.account" + _inherit = "account.analytic.account" + + asset_category_id = fields.Many2one('account.asset.category', 'Deferred Revenue Category', + help="This asset category will be applied to the lines of the contract's invoices.", + domain="[('type','=','sale')]") + + @api.multi + def on_change_template(self, template_id, date_start=False): + res = super(account_analytic_account, self).on_change_template(template_id, date_start) + + template = self.browse(template_id) + if template.asset_category_id: + res['value']['asset_category_id'] = template.asset_category_id.id + + return res + + @api.model + def _prepare_invoice_lines(self, contract, fiscal_position_id): + inv_lines = super(account_analytic_account, self)._prepare_invoice_lines(contract, fiscal_position_id) + + for line in inv_lines: + line[2]['asset_category_id'] = contract.asset_category_id and contract.asset_category_id.id + + return inv_lines diff --git a/addons/sale_contract_asset/views/account_analytic_account_views.xml b/addons/sale_contract_asset/views/account_analytic_account_views.xml new file mode 100644 index 00000000000..6f918cde393 --- /dev/null +++ b/addons/sale_contract_asset/views/account_analytic_account_views.xml @@ -0,0 +1,14 @@ + + + + account.analytic.account.invoice.form.inherit + account.analytic.account + + + + + + + + + \ No newline at end of file