Browse Source

[IMP] Adapt to commercial partners

[FIX] Replacd call to deprecated method
pull/2/head
Stefan Rijnhart 11 years ago
parent
commit
0fb9e0125f
  1. 7
      base_partner_sequence/__openerp__.py
  2. 19
      base_partner_sequence/partner.py
  3. 20
      base_partner_sequence/partner_view.xml

7
base_partner_sequence/__openerp__.py

@ -23,7 +23,7 @@
{
"name": "Add a sequence on customers' code",
"version": "1.1",
"author": "initOS GmbH & Co. KG",
"author": "Tiny/initOS GmbH & Co. KG",
"category": "Generic Modules/Base",
"website": "http://www.initos.com",
"depends": ["base"],
@ -37,7 +37,10 @@
This module is a migration of the original base_partner_sequence
addon to OpenERP version 7.0.
""",
"data": ['partner_sequence.xml'],
"data": [
'partner_sequence.xml',
'partner_view.xml',
],
"demo": [],
"active": False,
"installable": True

19
base_partner_sequence/partner.py

@ -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:

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