diff --git a/addons/product_uos/__init__.py b/addons/product_uos/__init__.py new file mode 100644 index 00000000000..81fc81d29c9 --- /dev/null +++ b/addons/product_uos/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +import models diff --git a/addons/product_uos/__openerp__.py b/addons/product_uos/__openerp__.py new file mode 100644 index 00000000000..4cc1cd2b661 --- /dev/null +++ b/addons/product_uos/__openerp__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +{ + 'name': 'Sale - Secondary UoM', + 'version': '1.0', + 'category': 'Sales Management', + 'sequence': 14, + 'summary': 'Unit of Sale', + 'description': """ +Manage secondary units of sale +============================== + +Sell products in one unit of measure that is different from the one +you manage the inventory. + """, + 'author': 'Odoo', + 'website': 'https://www.odoo.com', + 'depends': ['sale'], + 'data': [ + 'views/product_uos_view.xml', + ], + 'installable': True, + 'auto_install': False, +} diff --git a/addons/product_uos/models/__init__.py b/addons/product_uos/models/__init__.py new file mode 100644 index 00000000000..02d8fb5a525 --- /dev/null +++ b/addons/product_uos/models/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +import product_uos diff --git a/addons/product_uos/models/product_uos.py b/addons/product_uos/models/product_uos.py new file mode 100644 index 00000000000..f39f79413ca --- /dev/null +++ b/addons/product_uos/models/product_uos.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from openerp import api, fields, models +import openerp.addons.decimal_precision as dp + + +class ProductTemplate(models.Model): + _inherit = "product.template" + + uos_id = fields.Many2one('product.uom', 'Unit of Sale', + help='Specify a unit of measure here if invoicing is made in another' + ' unit of measure than inventory. Keep empty to use the default unit of measure.') + uos_coeff = fields.Float('Unit of Measure -> UOS Coeff', digits_compute=dp.get_precision('Product Unit of Measure'), + help='Coefficient to convert default Unit of Measure to Unit of Sale' + ' uos = uom * coeff') + + +class SaleOrderLine(models.Model): + _inherit = 'sale.order.line' + + @api.one + def _set_uos(self): + if self.product_id.uos_coeff: + self.product_uom_qty = self.product_uos_qty / self.product_id.uos_coeff + self.product_uom = self.product_id.uom_id + + @api.one + def _compute_uos(self): + self.product_uos_qty = self.product_uom_qty * self.product_id.uos_coeff + + product_uos_qty = fields.Float(string='Quantity', digits_compute=dp.get_precision('Product Unit of Measure'), + compute='_compute_uos', inverse='_set_uos', readonly=False) + product_uos = fields.Many2one('product.uom', string='Unit of Measure', required=True, + related='product_id.uos_id', readonly=True) diff --git a/addons/product_uos/views/product_uos_view.xml b/addons/product_uos/views/product_uos_view.xml new file mode 100644 index 00000000000..f224b4d574e --- /dev/null +++ b/addons/product_uos/views/product_uos_view.xml @@ -0,0 +1,19 @@ + + + + + + product.template.common.form.inherit + product.template + + + + + + + + + + + +