diff --git a/bin/addons/base/ir/ir_model.py b/bin/addons/base/ir/ir_model.py index b06f6edd7f6..8154c130528 100644 --- a/bin/addons/base/ir/ir_model.py +++ b/bin/addons/base/ir/ir_model.py @@ -204,8 +204,6 @@ class ir_model_fields(osv.osv): 'relation_field': fields.char('Relation Field', size=64), 'model_id': fields.many2one('ir.model', 'Object id', required=True, select=True, ondelete='cascade'), 'field_description': fields.char('Field Label', required=True, size=256), - 'relate': fields.boolean('Click and Relate'), - 'ttype': fields.selection(_get_fields_type, 'Field Type',size=64, required=True), 'selection': fields.char('Field Selection',size=128), 'required': fields.boolean('Required'), @@ -221,7 +219,6 @@ class ir_model_fields(osv.osv): 'view_load': fields.boolean('View Auto-Load'), } _defaults = { - 'relate': lambda *a: 0, 'view_load': lambda *a: 0, 'selection': lambda *a: "[]", 'domain': lambda *a: "[]", diff --git a/bin/addons/base/res/res_currency.py b/bin/addons/base/res/res_currency.py index 55de9ecc380..909d8b1785b 100644 --- a/bin/addons/base/res/res_currency.py +++ b/bin/addons/base/res/res_currency.py @@ -79,7 +79,7 @@ class res_currency(osv.osv): def is_zero(self, cr, uid, currency, amount): return abs(self.round(cr, uid, currency, amount)) < currency.rounding - def compute(self, cr, uid, from_currency_id, to_currency_id, from_amount, round=True, context={}): + def compute(self, cr, uid, from_currency_id, to_currency_id, from_amount, round=True, context={}, account=None): if not from_currency_id: from_currency_id = to_currency_id xc=self.browse(cr, uid, [from_currency_id,to_currency_id], context=context) @@ -94,6 +94,14 @@ class res_currency(osv.osv): raise osv.except_osv(_('Error'), _('No rate found \n' \ 'for the currency: %s \n' \ 'at the date: %s') % (code, date)) + rate = to_currency.rate/from_currency.rate + if account and (account.currency_mode=='average') and account.currency_id: + q = self.pool.get('account.move.line')._query_get(cr, uid, context=context) + cr.execute('select sum(debit-credit),sum(amount_currency) from account_move_line l ' \ + 'where l.currency_id=%d and l.account_id=%d and '+q, (account.currency_id.id,account.id,)) + tot1,tot2 = cr.fetchone() + if tot2: + rate = float(tot1)/float(tot2) if to_currency_id==from_currency_id: if round: return self.round(cr, uid, to_currency, from_amount) @@ -101,9 +109,10 @@ class res_currency(osv.osv): return from_amount else: if round: - return self.round(cr, uid, to_currency, from_amount * to_currency.rate/from_currency.rate) + return self.round(cr, uid, to_currency, from_amount * rate) else: - return (from_amount * to_currency.rate/from_currency.rate) + return (from_amount * rate) + def name_search(self, cr, uid, name, args=[], operator='ilike', context={}, limit=80): args2 = args[:] if name: diff --git a/bin/osv/orm.py b/bin/osv/orm.py index 961f79e6aee..56a97a285bc 100644 --- a/bin/osv/orm.py +++ b/bin/osv/orm.py @@ -328,7 +328,6 @@ class orm_template(object): 'name': k, 'field_description': f.string.replace("'", " "), 'ttype': f._type, - 'relate': (f.relate and 1) or 0, 'relation': f._obj or 'NULL', 'view_load': (f.view_load and 1) or 0, 'select_level': str(f.select or 0), @@ -341,12 +340,12 @@ class orm_template(object): vals['id'] = id cr.execute("""INSERT INTO ir_model_fields ( id, model_id, model, name, field_description, ttype, - relate,relation,view_load,state,select_level + relation,view_load,state,select_level ) VALUES ( - %d,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s + %d,%s,%s,%s,%s,%s,%s,%s,%s,%s )""", ( id, vals['model_id'], vals['model'], vals['name'], vals['field_description'], vals['ttype'], - bool(vals['relate']), vals['relation'], bool(vals['view_load']), 'base', + vals['relation'], bool(vals['view_load']), 'base', vals['select_level'] )) if 'module' in context: @@ -359,11 +358,11 @@ class orm_template(object): cr.execute('update ir_model_fields set field_description=%s where model=%s and name=%s', (vals['field_description'], vals['model'], vals['name'])) cr.commit() cr.execute("""UPDATE ir_model_fields SET - model_id=%s, field_description=%s, ttype=%s, relate=%s, relation=%s, + model_id=%s, field_description=%s, ttype=%s, relation=%s, view_load=%s, select_level=%s, readonly=%s ,required=%s WHERE model=%s AND name=%s""", ( - vals['model_id'], vals['field_description'], vals['ttype'], bool(vals['relate']), + vals['model_id'], vals['field_description'], vals['ttype'], vals['relation'], bool(vals['view_load']), vals['select_level'], bool(vals['readonly']),bool(vals['required']), vals['model'], vals['name'] ))