Browse Source

[IMP] Adapt to commercial partners

[FIX] Replacd call to deprecated method
pull/668/head
Stefan Rijnhart 11 years ago
committed by Quentin Groulard
parent
commit
c8d2055e38
  1. 15
      base_partner_sequence/__openerp__.py
  2. 19
      base_partner_sequence/partner.py
  3. 20
      base_partner_sequence/partner_view.xml

15
base_partner_sequence/__openerp__.py

@ -23,7 +23,7 @@
{ {
"name": "Add a sequence on customers' code", "name": "Add a sequence on customers' code",
"version": "1.1", "version": "1.1",
"author": "initOS GmbH & Co. KG",
"author": "Tiny/initOS GmbH & Co. KG",
"category": "Generic Modules/Base", "category": "Generic Modules/Base",
"website": "http://www.initos.com", "website": "http://www.initos.com",
"depends": ["base"], "depends": ["base"],
@ -31,13 +31,22 @@
"description": """ "description": """
This module adds the possibility to define a sequence for This module adds the possibility to define a sequence for
the partner code. This code is then set as default when you the partner code. This code is then set as default when you
create a new customer or supplier, using the defined sequence.
create a new commercial partner, using the defined sequence.
The reference field is treated as a commercial field, i.e. it
is managed from the commercial partner and then propagated to
the partner's contacts. The field is visible on the contacts,
but it can only be modified from the commercial partner.
No codes are assigned for contacts such as shipping and No codes are assigned for contacts such as shipping and
invoice addresses. invoice addresses.
This module is a migration of the original base_partner_sequence This module is a migration of the original base_partner_sequence
addon to OpenERP version 7.0. addon to OpenERP version 7.0.
""", """,
"data": ['partner_sequence.xml'],
"data": [
'partner_sequence.xml',
'partner_view.xml',
],
"demo": [], "demo": [],
"active": False, "active": False,
"installable": True "installable": True

19
base_partner_sequence/partner.py

@ -32,13 +32,13 @@ class ResPartner(orm.Model):
def create(self, cr, uid, vals, context=None): def create(self, cr, uid, vals, context=None):
context = context or {} context = context or {}
if not vals.get('ref') and self._needsRef(cr, uid, vals=vals, context=context): 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) return super(ResPartner, self).create(cr, uid, vals, context)
def copy(self, cr, uid, id, default=None, context=None): def copy(self, cr, uid, id, default=None, context=None):
default = default or {} default = default or {}
if not default.get('ref') and self._needsRef(cr, uid, id=id, context=context): 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) return super(ResPartner, self).copy(cr, uid, id, default, context=context)
def _needsRef(self, cr, uid, id=None, vals=None, context=None): 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: if not vals and not id:
raise Exception('Either field values or an id must be provided.') 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: 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 = { _columns = {
'ref': fields.char('Reference', size=64, readonly=True), '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: # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

20
base_partner_sequence/partner_view.xml

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record id="view_partner_form" model="ir.ui.view">
<field name="name">Make partner reference readonly when non-commercial</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<field name="ref" position="attributes">
<attribute name="attrs">{
'readonly': [('is_company', '=', False),
('parent_id', '!=', False)]}</attribute>
</field>
</field>
</record>
</data>
</openerp>
Loading…
Cancel
Save