|
|
@ -32,13 +32,13 @@ class ResPartner(orm.Model): |
|
|
|
def create(self, cr, uid, vals, context=None): |
|
|
|
context = context or {} |
|
|
|
if not vals.get('ref') and self._needsRef(cr, uid, vals=vals, context=context): |
|
|
|
vals['ref'] = self.pool.get('ir.sequence').get(cr, uid, 'res.partner') |
|
|
|
vals['ref'] = self.pool.get('ir.sequence').next_by_code(cr, uid, 'res.partner') |
|
|
|
return super(ResPartner, self).create(cr, uid, vals, context) |
|
|
|
|
|
|
|
def copy(self, cr, uid, id, default=None, context=None): |
|
|
|
default = default or {} |
|
|
|
if not default.get('ref') and self._needsRef(cr, uid, id=id, context=context): |
|
|
|
default['ref'] = self.pool.get('ir.sequence').get(cr, uid, 'res.partner', context=context) |
|
|
|
default['ref'] = self.pool.get('ir.sequence').next_by_code(cr, uid, 'res.partner', context=context) |
|
|
|
return super(ResPartner, self).copy(cr, uid, id, default, context=context) |
|
|
|
|
|
|
|
def _needsRef(self, cr, uid, id=None, vals=None, context=None): |
|
|
@ -53,14 +53,21 @@ class ResPartner(orm.Model): |
|
|
|
""" |
|
|
|
if not vals and not id: |
|
|
|
raise Exception('Either field values or an id must be provided.') |
|
|
|
# only assign a 'ref' if it is a customer or supplier and |
|
|
|
# if it not a child object (such as a shipping/invoice address) |
|
|
|
# only assign a 'ref' to commercial partners |
|
|
|
if id: |
|
|
|
vals = self.read(cr, uid, id, ['parent_id', 'customer', 'supplier'], context=context) |
|
|
|
return not vals.get('parent_id') and (vals.get('customer') or vals.get('supplier')) |
|
|
|
vals = self.read(cr, uid, id, ['parent_id', 'is_company'], context=context) |
|
|
|
return vals.get('is_company') or not vals.get('parent_id') |
|
|
|
|
|
|
|
_columns = { |
|
|
|
'ref': fields.char('Reference', size=64, readonly=True), |
|
|
|
} |
|
|
|
|
|
|
|
def _commercial_fields(self, cr, uid, context=None): |
|
|
|
""" |
|
|
|
Make the partner reference a field that is propagated |
|
|
|
to the partner's contacts |
|
|
|
""" |
|
|
|
return super(ResPartner, self)._commercial_fields( |
|
|
|
cr, uid, context=context) + ['ref'] |
|
|
|
|
|
|
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |