[IMP] base: change the res.partner field is_company into a boolean field

bzr revid: rco@openerp.com-20120307151942-t73orqjvgu5jwybw
This commit is contained in:
Raphael Collet
2012-03-07 16:19:42 +01:00
parent c53c5a9d9e
commit 91ff1b477a
3 changed files with 97 additions and 100 deletions
+45 -57
View File
@@ -161,7 +161,7 @@ class res_partner(osv.osv):
'fax': fields.char('Fax', size=64),
'mobile': fields.char('Mobile', size=64),
'birthdate': fields.char('Birthdate', size=64),
'is_company': fields.selection( [ ('contact','Person'),('partner','Company') ],'Contact Type', help="Select if the partner is a company or person"),
'is_company': fields.boolean('Company', help="Check if the contact is a company, otherwise it is a person"),
'use_parent_address': fields.boolean('Use Company Address', help="Check to use the company's address"),
'photo': fields.binary('Photo'),
'company_id': fields.many2one('res.company', 'Company', select=1),
@@ -175,9 +175,11 @@ class res_partner(osv.osv):
return False
def _get_photo(self, cr, uid, is_company, context=None):
if is_company == 'contact':
return open(os.path.join( tools.config['root_path'], 'addons', 'base', 'res', 'photo.png'), 'rb') .read().encode('base64')
return open(os.path.join( tools.config['root_path'], 'addons', 'base', 'res', 'company_icon.png'), 'rb') .read().encode('base64')
if is_company:
path = os.path.join( tools.config['root_path'], 'addons', 'base', 'res', 'company_icon.png')
else:
path = os.path.join( tools.config['root_path'], 'addons', 'base', 'res', 'photo.png')
return open(path, 'rb').read().encode('base64')
_defaults = {
'active': True,
@@ -185,10 +187,10 @@ class res_partner(osv.osv):
'category_id': _default_category,
'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'res.partner', context=c),
'color': 0,
'is_company': 'contact',
'is_company': False,
'type': 'default',
'use_parent_address':True,
'photo': _get_photo,
'use_parent_address': True,
'photo': lambda self, cr, uid, context: self._get_photo(cr, uid, False, context)
}
def copy(self, cr, uid, id, default=None, context=None):
@@ -198,19 +200,16 @@ class res_partner(osv.osv):
default.update({'name': _('%s (copy)')%(name), 'events':[]})
return super(res_partner, self).copy(cr, uid, id, default, context)
def onchange_type(self, cr, uid, ids, is_company, title, child_ids, photo,context=None):
value = {'value': {'is_comapny': '', 'title': '','photo':''}}
if is_company == 'contact':
value['value'] = {'is_company': is_company,
'title': '','child_ids':[(5,)],
'photo': self._get_photo(cr, uid, is_company, context)}
elif is_company == 'partner':
value['value'] = {'is_company': is_company,
'title': '',
'parent_id':False,
'photo': self._get_photo(cr, uid, is_company, context)}
return value
def onchange_type(self, cr, uid, ids, is_company, context=None):
value = {'title': False,
'photo': self._get_photo(cr, uid, is_company, context)}
if is_company:
value['parent_id'] = False
domain = {'title': [('domain', '=', 'partner')]}
else:
value['child_ids'] = [(5,)]
domain = {'title': [('domain', '=', 'contact')]}
return {'value': value, 'domain': domain}
def onchange_address(self, cr, uid, ids, use_parent_address, parent_id, context=None):
vals = {'value':{}}
@@ -248,44 +247,37 @@ class res_partner(osv.osv):
return False
return True
# _constraints = [(_check_ean_key, 'Error: Invalid ean code', ['ean13'])]
def write(self, cr, uid, ids, vals, context=None):
# Update the all child and parent_id record
update_ids=False
# Update all children and parent_id records
if isinstance(ids, (int, long)):
ids = [ids]
for partner_id in self.browse(cr, uid, ids, context=context):
is_company=partner_id.is_company
parent_id=partner_id.parent_id.id
if is_company == 'contact' and parent_id:
update_ids= self.search(cr, uid, [('parent_id', '=', parent_id),('use_parent_address','=',True)], context=context)
if parent_id not in update_ids:
update_ids.append(parent_id)
elif is_company == 'partner':
update_ids= self.search(cr, uid, [('parent_id', '=', partner_id.id),('use_parent_address','=',True)], context=context)
if update_ids:
self.udpate_address(cr,uid,update_ids,False,vals,context)
for partner in self.browse(cr, uid, ids, context=context):
is_company = partner.is_company
parent_id = partner.parent_id.id
if is_company:
update_ids = self.search(cr, uid, [('parent_id', '=', partner.id), ('use_parent_address','=',True)], context=context)
elif not is_company and parent_id:
update_ids = [parent_id] + self.search(cr, uid, [('parent_id', '=', parent_id), ('use_parent_address','=',True)], context=context)
else:
update_ids = []
self.update_address(cr, uid, update_ids, vals, context)
return super(res_partner,self).write(cr, uid, ids, vals, context=context)
def create(self, cr, uid, vals, context=None):
if vals.get('parent_id') and vals.get('use_parent_address'):
update_ids= self.search(cr, uid, [('parent_id', '=', vals.get('parent_id')),('use_parent_address','=',True)], context=context)
update_ids.append(vals.get('parent_id'))
self.udpate_address(cr,uid,False,update_ids,vals)
update_ids = [vals['parent_id']] + \
self.search(cr, uid, [('parent_id', '=', vals['parent_id']),('use_parent_address','=',True)], context=context)
self.update_address(cr, uid, update_ids, vals)
return super(res_partner,self).create(cr, uid, vals, context=context)
def udpate_address(self,cr,uid,update_ids,parent_id,vals, context=None):
def update_address(self, cr, uid, ids, vals, context=None):
addr_vals = {}
for key, data in vals.iteritems():
if key in ('street','street2','zip','city','state_id','country_id','email','phone','fax','mobile','website','ref','lang') and data :
update_list=update_ids or parent_id
if update_list :
sql = """UPDATE res_partner SET %(field)s = %%(value)s
WHERE id in %%(id)s"""%{'field' : key,}
cr.execute(sql, {'value': data or '',
'id':tuple(update_list)})
return True
# _constraints = [(_check_ean_key, 'Error: Invalid ean code', ['ean13'])]
if key in ('street','street2','zip','city','state_id','country_id','email','phone','fax','mobile','website','ref','lang') and data:
addr_vals[key] = data
return super(res_partner, self).write(cr, uid, ids, addr_vals, context)
def name_get(self, cr, uid, ids, context=None):
if context is None:
@@ -401,7 +393,7 @@ class res_partner(osv.osv):
('name','=','main_partner')])[0],
).res_id
def _display_address(self, cr, uid, address,type ,context=None):
def _display_address(self, cr, uid, address, type, context=None):
'''
The purpose of this function is to build and return an address formatted accordingly to the
standards of the country where it belongs.
@@ -413,10 +405,10 @@ class res_partner(osv.osv):
'''
if type:
if address.is_company=='partner' and address.child_ids:
if address.is_company and address.child_ids:
for child_id in address.child_ids:
if child_id.type==type:
address=child_id
if child_id.type == type:
address = child_id
# get the information that will be injected into the display format
# get the address format
@@ -435,14 +427,9 @@ class res_partner(osv.osv):
return address_format % args
def default_get(self, cr, uid, fields, context=None):
res = super(res_partner, self).default_get( cr, uid, fields, context)
if 'is_company' in res:
res.update({'photo': self._get_photo(cr, uid, res.get('is_company', 'contact'), context)})
return res
#This feature is Deprecated for backward Compability only
# res.partner.address is deprecated; it is still there for backward compability only
class res_partner_address(osv.osv):
_table = "res_partner"
_name = 'res.partner.address'
@@ -478,4 +465,5 @@ class res_partner_address(osv.osv):
def create(self, cr, uid, vals, context=None):
logging.getLogger('res.partner').warning("Deprecated, use of res.partner.address and used res.partner")
return super(res_partner_address,self).create(cr, uid, vals, context=context)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+27 -27
View File
@@ -93,56 +93,56 @@
<field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/>
<field name="supplier">1</field>
<field eval="0" name="customer"/>
<field name="is_company">partner</field>
<field name="is_company">1</field>
<field name="website">www.asustek.com</field>
</record>
<record id="res_partner_agrolait" model="res.partner">
<field name="name">Agrolait</field>
<field eval="[(6, 0, [ref('base.res_partner_category_0')])]" name="category_id"/>
<field name="is_company">partner</field>
<field name="is_company">1</field>
<field name="website">www.agrolait.com</field>
</record>
<record id="res_partner_c2c" model="res.partner">
<field name="name">Camptocamp</field>
<field name="is_company">partner</field>
<field name="is_company">1</field>
<field eval="[(6, 0, [ref('res_partner_category_10'), ref('res_partner_category_5')])]" name="category_id"/>
<field name="supplier">1</field>
<field name="is_company">partner</field>
<field name="is_company">1</field>
<field name="website">www.camptocamp.com</field>
</record>
<record id="res_partner_sednacom" model="res.partner">
<field name="website">www.syleam.fr</field>
<field name="name">Syleam</field>
<field eval="[(6, 0, [ref('res_partner_category_5')])]" name="category_id"/>
<field name="is_company">partner</field>
<field name="is_company">1</field>
</record>
<record id="res_partner_thymbra" model="res.partner">
<field name="name">SmartBusiness</field>
<field name="is_company">partner</field>
<field name="is_company">1</field>
<field eval="[(6, 0, [ref('res_partner_category_4')])]" name="category_id"/>
</record>
<record id="res_partner_desertic_hispafuentes" model="res.partner">
<field name="name">Axelor</field>
<field eval="[(6, 0, [ref('res_partner_category_4')])]" name="category_id"/>
<field name="supplier">1</field>
<field name="is_company">partner</field>
<field name="is_company">1</field>
<field name="website">www.axelor.com/</field>
</record>
<record id="res_partner_tinyatwork" model="res.partner">
<field name="name">Tiny AT Work</field>
<field name="is_company">partner</field>
<field name="is_company">1</field>
<field eval="[(6, 0, [ref('res_partner_category_5'), ref('res_partner_category_10')])]" name="category_id"/>
<field name="website">www.tinyatwork.com/</field>
</record>
<record id="res_partner_2" model="res.partner">
<field name="name">Bank Wealthy and sons</field>
<field name="is_company">partner</field>
<field name="is_company">1</field>
<field name="website">www.wealthyandsons.com/</field>
</record>
<record id="res_partner_3" model="res.partner">
<field name="name">China Export</field>
<field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/>
<field name="is_company">partner</field>
<field name="is_company">1</field>
<field name="website">www.chinaexport.com/</field>
</record>
<record id="res_partner_4" model="res.partner">
@@ -150,13 +150,13 @@
<field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/>
<field name="supplier">1</field>
<field eval="0" name="customer"/>
<field name="is_company">partner</field>
<field name="is_company">1</field>
<field name="website">www.distribpc.com/</field>
</record>
<record id="res_partner_5" model="res.partner">
<field name="name">Ecole de Commerce de Liege</field>
<field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/>
<field name="is_company">partner</field>
<field name="is_company">1</field>
<field name="website">www.eci-liege.info//</field>
</record>
<record id="res_partner_6" model="res.partner">
@@ -164,7 +164,7 @@
<field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/>
<field name="supplier">1</field>
<field eval="0" name="customer"/>
<field name="is_company">partner</field>
<field name="is_company">1</field>
</record>
<record id="res_partner_maxtor" model="res.partner">
<field name="name">Maxtor</field>
@@ -172,20 +172,20 @@
<field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/>
<field name="supplier">1</field>
<field eval="0" name="customer"/>
<field name="is_company">partner</field>
<field name="is_company">1</field>
</record>
<record id="res_partner_seagate" model="res.partner">
<field name="name">Seagate</field>
<field eval="5000.00" name="credit_limit"/>
<field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/>
<field name="supplier">1</field>
<field name="is_company">partner</field>
<field name="is_company">1</field>
</record>
<record id="res_partner_8" model="res.partner">
<field name="website">http://mediapole.net</field>
<field name="name">Mediapole SPRL</field>
<field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/>
<field name="is_company">partner</field>
<field name="is_company">1</field>
</record>
<record id="res_partner_9" model="res.partner">
<field name="website">www.balmerinc.com</field>
@@ -193,38 +193,38 @@
<field eval="12000.00" name="credit_limit"/>
<field name="ref">or</field>
<field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/>
<field name="is_company">partner</field>
<field name="is_company">1</field>
</record>
<record id="res_partner_10" model="res.partner">
<field name="name">Tecsas</field>
<field name="ean13">3020170000003</field>
<field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/>
<field name="is_company">partner</field>
<field name="is_company">1</field>
</record>
<record id="res_partner_11" model="res.partner">
<field name="name">Leclerc</field>
<field eval="1200.00" name="credit_limit"/>
<field eval="[(6, 0, [ref('res_partner_category_0')])]" name="category_id"/>
<field name="is_company">partner</field>
<field name="is_company">1</field>
</record>
<record id="res_partner_14" model="res.partner">
<field name="name">Centrale d'achats BML</field>
<field name="ean13">3020178572427</field>
<field eval="15000.00" name="credit_limit"/>
<field eval="[(6, 0, [ref('res_partner_category_11')])]" name="category_id"/>
<field name="is_company">partner</field>
<field name="is_company">1</field>
</record>
<record id="res_partner_15" model="res.partner">
<field name="name">Magazin BML 1</field>
<field name="ean13">3020178570171</field>
<field eval="1500.00" name="credit_limit"/>
<field eval="[(6, 0, [ref('res_partner_category_11')])]" name="category_id"/>
<field name="is_company">partner</field>
<field name="is_company">1</field>
</record>
<record id="res_partner_accent" model="res.partner">
<field name="name">Université de Liège</field>
<field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/>
<field name="is_company">partner</field>
<field name="is_company">1</field>
<field name="website">http://www.ulg.ac.be/</field>
</record>
@@ -235,7 +235,7 @@
<record id="res_partner_duboissprl0" model="res.partner">
<field eval="'Sprl Dubois would like to sell our bookshelves but they have no storage location, so it would be exclusively on order'" name="comment"/>
<field name="name">Dubois sprl</field>
<field name="is_company">partner</field>
<field name="is_company">1</field>
<field name="website">http://www.dubois.be/</field>
</record>
@@ -266,7 +266,7 @@
<record id="res_partner_theshelvehouse0" model="res.partner">
<field name="name">The Shelve House</field>
<field eval="[(6,0,[ref('res_partner_category_retailers0')])]" name="category_id"/>
<field name="is_company">partner</field>
<field name="is_company">1</field>
</record>
<record id="res_partner_vickingdirect0" model="res.partner">
@@ -274,7 +274,7 @@
<field eval="[(6,0,[ref('res_partner_category_miscellaneoussuppliers0')])]" name="category_id"/>
<field name="supplier">1</field>
<field name="customer">0</field>
<field name="is_company">partner</field>
<field name="is_company">1</field>
<field name="website">vicking-direct.be</field>
</record>
@@ -283,14 +283,14 @@
<field eval="[(6,0,[ref('res_partner_category_woodsuppliers0')])]" name="category_id"/>
<field name="supplier">1</field>
<field eval="0" name="customer"/>
<field name="is_company">partner</field>
<field name="is_company">1</field>
<field name="website">woodywoodpecker.com</field>
</record>
<record id="res_partner_zerooneinc0" model="res.partner">
<field name="name">ZeroOne Inc</field>
<field eval="[(6,0,[ref('res_partner_category_consumers0')])]" name="category_id"/>
<field name="is_company">partner</field>
<field name="is_company">1</field>
<field name="website">http://www.zerooneinc.com/</field>
</record>
+25 -16
View File
@@ -327,14 +327,17 @@
<field name="arch" type="xml">
<form string="Partners">
<group col="8" colspan="4">
<group col="2">
<field name="is_company" on_change="onchange_type(is_company, title,child_ids,photo)" required="1"/>
<field name="function" attrs="{'invisible': [('is_company','=', 'partner')]}" colspan="2"/>
<field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', is_company)]"/>
<group col="4" colspan="4">
<field name="name" required="1"/>
<field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', 'contact')]"/>
<newline/>
<field name="function" attrs="{'invisible': [('is_company', '=', True)]}"/>
<field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', True)]}"
domain="[('is_company', '=', True)]" context="{'default_is_company': True}"
on_change="onchange_address(use_parent_address, parent_id)"/>
</group>
<group col="2">
<field name="name" required="1"/>
<field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', 'partner')]}" domain="[('is_company', '=', 'partner')]" context="{'default_is_company': 'partner'}" on_change="onchange_address(use_parent_address, parent_id)"/>
<field name="is_company" on_change="onchange_type(is_company)"/>
</group>
<group col="2">
<field name="customer"/>
@@ -348,9 +351,10 @@
<page string="General">
<group colspan="2">
<separator string="Address" colspan="4"/>
<field name="type" string="Type" attrs="{'invisible': [('is_company','=', True)]}"/>
<group colspan="2">
<field name="type" string="Type" attrs="{'invisible': [('is_company','=', 'partner')]}"/>
<field name="use_parent_address" attrs="{'invisible': ['|', ('is_company','=', 'partner'), ('parent_id', '=', False)]}" on_change="onchange_address(use_parent_address, parent_id)"/>
<field name="use_parent_address" attrs="{'invisible': [('parent_id', '=', False)]}"
on_change="onchange_address(use_parent_address, parent_id)"/>
</group>
<newline/>
<field name="street" colspan="4"/>
@@ -370,18 +374,20 @@
<field name="website" widget="url" colspan="4"/>
<field name="ref" groups="base.group_extended" colspan="4"/>
</group>
<group colspan="4" attrs="{'invisible': [('is_company','!=', 'partner')]}">
<group colspan="4" attrs="{'invisible': [('is_company','=', False)]}">
<field name="child_ids" context="{'default_parent_id': active_id}" nolabel="1">
<form string="Partners">
<group col="8" colspan="4">
<group col="2">
<field name="is_company" on_change="onchange_type(is_company, title,child_ids,photo)" required="1" domain="[('is_company', '=', 'partner')]"/>
<field name="function" attrs="{'invisible': [('is_company','=', 'partner')]}" colspan="2"/>
<field name="is_company" on_change="onchange_type(is_company)" domain="[('is_company', '=', 'partner')]"/>
<field name="function" attrs="{'invisible': [('is_company','=', True)]}" colspan="2"/>
<field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', is_company)]"/>
</group>
<group col="2">
<field name="name" required="1"/>
<field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', 'partner')]}" domain="[('is_company', '=', 'partner')]" context="{'default_is_company': 'partner'}" on_change="onchange_address(use_parent_address, parent_id)" invisible="1"/>
<field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', True)]}"
domain="[('is_company', '=', True)]" context="{'default_is_company': True}"
on_change="onchange_address(use_parent_address, parent_id)" invisible="1"/>
</group>
<group col="2">
<field name="customer"/>
@@ -396,8 +402,8 @@
<group colspan="2">
<separator string="Address" colspan="4"/>
<group colspan="2">
<field name="type" string="Type" attrs="{'invisible': [('is_company','=', 'partner')]}"/>
<field name="use_parent_address" attrs="{'invisible': [('is_company','=', 'partner')]}" on_change="onchange_address(use_parent_address, parent_id)"/>
<field name="type" string="Type" attrs="{'invisible': [('is_company','=', True)]}"/>
<field name="use_parent_address" attrs="{'invisible': [('is_company','=', True)]}" on_change="onchange_address(use_parent_address, parent_id)"/>
</group>
<newline/>
<field name="street" colspan="4"/>
@@ -417,7 +423,7 @@
<field name="website" widget="url" colspan="4"/>
<field name="ref" groups="base.group_extended" colspan="4"/>
</group>
<group colspan="4" attrs="{'invisible': [('is_company','!=', 'partner')]}">
<group colspan="4" attrs="{'invisible': [('is_company','=', False)]}">
<field name="child_ids" domain="[('id','!=',parent_id.id)]" nolabel="1"/>
</group>
</page>
@@ -470,6 +476,9 @@
<field name="arch" type="xml">
<search string="Search Partner">
<group col='10' colspan='4'>
<filter string="Persons" name="type_person" icon="terp-personal" domain="[('is_company','=',0)]"/>
<filter string="Companies" name="type_company" icon="terp-partner" domain="[('is_company','=',1)]"/>
<separator orientation="vertical"/>
<filter string="Customers" name="customer" icon="terp-personal" domain="[('customer','=',1)]" help="Customer Partners"/>
<filter string="Suppliers" name="supplier" icon="terp-personal" domain="[('supplier','=',1)]" help="Supplier Partners"/>
<separator orientation="vertical"/>
@@ -534,7 +543,7 @@
<field name="email"/><br/></div><div t-if="record.mobile.raw_value">
<span>+91</span><field name="mobile"/><br/></div></i>
</td>
<td t-if="record.is_company.raw_value == 'contact'" valign="top" align="right">
<td t-if="record.is_company.raw_value" valign="top" align="right">
<!--img t-att-src="kanban_image('res.partner', 'photo', record.id.value)" class="oe_kanban_gravatar"/-->
</td>
</tr>