diff --git a/openerp/addons/base/res/ir_property.py b/openerp/addons/base/res/ir_property.py index 8d9f9dc876a..2a751361ddc 100644 --- a/openerp/addons/base/res/ir_property.py +++ b/openerp/addons/base/res/ir_property.py @@ -147,7 +147,8 @@ class ir_property(osv.osv): domain = self._get_domain(cr, uid, name, model, context=context) if domain is not None: domain = [('res_id', '=', res_id)] + domain - nid = self.search(cr, uid, domain, context=context) + #make the search with company_id asc to make sure that properties specific to a company are given first + nid = self.search(cr, uid, domain, limit=1, order='company_id asc', context=context) if not nid: return False record = self.browse(cr, uid, nid[0], context=context) return self.get_by_record(cr, uid, record, context=context) diff --git a/openerp/osv/fields.py b/openerp/osv/fields.py index 0ff78c69204..568a52f2bf4 100644 --- a/openerp/osv/fields.py +++ b/openerp/osv/fields.py @@ -1382,8 +1382,10 @@ class property(function): def _get_by_id(self, obj, cr, uid, prop_name, ids, context=None): prop = obj.pool.get('ir.property') vids = [obj._name + ',' + str(oid) for oid in ids] - - domain = [('fields_id.model', '=', obj._name), ('fields_id.name', 'in', prop_name)] + def_id = self._field_get(cr, uid, obj._name, prop_name[0]) + company = obj.pool.get('res.company') + cid = company._company_default_get(cr, uid, obj._name, def_id, context=context) + domain = [('fields_id.model', '=', obj._name), ('fields_id.name', 'in', prop_name), ('company_id', '=', cid)] #domain = prop._get_domain(cr, uid, prop_name, obj._name, context) if vids: domain = [('res_id', 'in', vids)] + domain