From 177cb0e904bc4e0cc5e44770c6f4e490a674aa73 Mon Sep 17 00:00:00 2001 From: Cyril Gaudin Date: Fri, 18 Nov 2016 12:21:22 +0100 Subject: [PATCH] Sale order line: price_unit readonly for center user --- .../models/sale_order.py | 29 ++++++++++++++++++- .../views/sale_order.xml | 16 ++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/odoo/local-src/specific_discount_program/models/sale_order.py b/odoo/local-src/specific_discount_program/models/sale_order.py index 505575ef77e5..24f7f62ed710 100644 --- a/odoo/local-src/specific_discount_program/models/sale_order.py +++ b/odoo/local-src/specific_discount_program/models/sale_order.py @@ -6,7 +6,7 @@ from datetime import date from dateutil.relativedelta import relativedelta -from openerp import api, fields, models +from openerp import api, fields, models, SUPERUSER_ID class SaleOrder(models.Model): @@ -133,3 +133,30 @@ def action_cancel(self): program.sudo().unlink() return result + + +class SaleOrderLine(models.Model): + _inherit = 'sale.order.line' + + can_edit_price_unit = fields.Boolean( + compute='_compute_can_edit_price_unit' + ) + price_unit_readonly = fields.Float( + 'Unit Price', + related='price_unit', + readonly=True, + ) + + @api.depends() + def _compute_can_edit_price_unit(self): + """ price_unit is editable only for admin and Depiltech Admin. + """ + admin = self.env.user.id == SUPERUSER_ID or self.env.user.has_group( + 'specific_base.group_admin_depiltech' + ) + for line in self: + line.can_edit_price_unit = admin + + @api.onchange('price_unit_readonly') + def onchange_price_unit_readonly(self): + self.price_unit = self.price_unit_readonly diff --git a/odoo/local-src/specific_discount_program/views/sale_order.xml b/odoo/local-src/specific_discount_program/views/sale_order.xml index 03ec2b4b1b03..a75426fbe124 100644 --- a/odoo/local-src/specific_discount_program/views/sale_order.xml +++ b/odoo/local-src/specific_discount_program/views/sale_order.xml @@ -17,6 +17,22 @@ 1 + + + + + + + True + + + + + + + + True +