[IMP]: base: Improvement in function field, and fixed adding new fields in country view

bzr revid: rpa@tinyerp.com-20110513070521-qdwxasydlioc2qiu
This commit is contained in:
Rucha (Open ERP)
2011-05-13 12:35:21 +05:30
parent eb11bcb933
commit 2b32f8af67
2 changed files with 38 additions and 23 deletions
+11 -6
View File
@@ -193,9 +193,14 @@
<field name="arch" type="xml">
<form string="Company">
<group colspan="4" col="6">
<field colspan="4" name="name" select="1"/>
<field name="partner_id" readonly="1" select="1" required="0"/>
<field name="parent_id" select="1" groups="base.group_multi_company"/>
<group colspan="4" col="4">
<field name="name" select="1"/>
<field name="partner_id" readonly="1" select="1" required="0"/>
<field name="parent_id" select="1" groups="base.group_multi_company"/>
</group>
<group colspan="2" col="2">
<field name="logo" nolabel="1" widget="image"/>
</group>
</group>
<notebook colspan="4">
<page string="General Information">
@@ -204,15 +209,15 @@
<field name="street2"/>
<field name="zip"/>
<field name="city"/>
<!--field name="country_id"/>
<!NOT WORKING field name="state_id"/-->
<field name="country_id"/>
<field name="state_id"/>
<field name="phone"/>
<field name="email"/>
<field name="currency_id" colspan="2"/>
<separator string="Reporting Information" colspan="4"/>
<field name="rml_header1" colspan="4"/>
<field name="rml_footer1" colspan="4"/>
<field name="rml_footer2" colspan="4"/>
<field name="currency_id" colspan="2"/>
</page>
<page string="Header/Footer" groups="base.group_extended">
<field colspan="4" name="rml_header" nolabel="1"/>
+27 -17
View File
@@ -75,21 +75,31 @@ class res_company(osv.osv):
def _get_address_data(self, cr, uid, ids, name, arg, context=None):
result = {}
name = name[0]
for company in self.browse(cr, uid, ids, context=context):
result[company.id] = {}
if company.partner_id and company.partner_id.address:
address = company.partner_id.address[0]
result[company.id][name] = address[name] or False
else:
result[company.id][name] = False
for field in name:
result[company.id][field] = False
if company.partner_id:
part_obj = self.pool.get('res.partner')
address_obj = self.pool.get('res.partner.address')
address_data = part_obj.address_get(cr, uid, [company.partner_id.id], adr_pref=['default'])
if address_data['default']:
address = address_obj.read(cr, uid, address_data['default'], [], context=context)
for field in name:
result[company.id][field] = address[field] or False
return result
def _set_address_data(self, cr, uid, company_id, name, value, arg, context=None):
company = self.browse(cr, uid, company_id, context=context)
address = company.partner_id and company.partner_id.address and company.partner_id.address[0].id
address_obj = self.pool.get('res.partner.address')
address_obj.write(cr, uid, [address], {name: value or False})
if company.partner_id:
part_obj = self.pool.get('res.partner')
address_obj = self.pool.get('res.partner.address')
address_data = part_obj.address_get(cr, uid, [company.partner_id.id], adr_pref=['default'])
address = address_data['default']
if address:
address_obj.write(cr, uid, [address], {name: value or False})
else:
address_obj.create(cr, uid, {name: value or False, 'partner_id': company.partner_id.id}, context=context)
return True
_columns = {
@@ -108,14 +118,14 @@ class res_company(osv.osv):
'currency_ids': fields.one2many('res.currency', 'company_id', 'Currency'),
'user_ids': fields.many2many('res.users', 'res_company_users_rel', 'cid', 'user_id', 'Accepted Users'),
'account_no':fields.char('Account No.', size=64),
'street' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=128, type='char', method=True, string="Street", multi='street'),
'street2' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=128, type='char', method=True, string="Street2", multi='street2'),
'zip' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=24, type='char', method=True, string="Zip", multi='zip'),
'city' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=24, type='char', method=True, string="City", multi='city'),
# 'state_id' : fields.function(_get_address_data, fnct_inv=_set_address_data, type='many2one', method=True, string="State", multi='state_id'),
# 'country_id' : fields.function(_get_address_data, fnct_inv=_set_address_data, type='many2one', method=True, string="Country", multi='country_id'),
'email' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=64, type='char', method=True, string="Email", multi='email'),
'phone' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=64, type='char', method=True, string="Phone", multi='phone'),
'street' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=128, type='char', method=True, string="Street", multi='address'),
'street2' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=128, type='char', method=True, string="Street2", multi='address'),
'zip' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=24, type='char', method=True, string="Zip", multi='address'),
'city' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=24, type='char', method=True, string="City", multi='address'),
'state_id' : fields.function(_get_address_data, fnct_inv=_set_address_data, type='many2one', domain="[('country_id', '=', country_id)]", relation='res.country.state', method=True, string="State", multi='address'),
'country_id' : fields.function(_get_address_data, fnct_inv=_set_address_data, type='many2one', relation='res.country', method=True, string="Country", multi='address'),
'email' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=64, type='char', method=True, string="Email", multi='address'),
'phone' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=64, type='char', method=True, string="Phone", multi='address'),
}
def _search(self, cr, uid, args, offset=0, limit=None, order=None,