Add currency_digits on account moves

This commit is contained in:
Cédric Krier committed 2008-09-22 18:23:05 +02:00
1 parent a33afb9d1b
commit 958673a161
2 files changed
+37 -3

No files matched your search

+34 -3
View File
@@ -347,10 +347,10 @@ class Line(OSV):
_description = __doc__
name = fields.Char('Name', size=None, required=True)
debit = fields.Numeric('Debit', digits=(16, 2),
debit = fields.Numeric('Debit', digits="(16, currency_digits)",
on_change=['account', 'debit', 'credit', 'tax_lines',
'journal', 'move'])
credit = fields.Numeric('Credit', digits=(16, 2),
credit = fields.Numeric('Credit', digits="(16, currency_digits)",
on_change=['account', 'debit', 'credit', 'tax_lines',
'journal', 'move'])
account = fields.Many2One('account.account', 'Account', required=True,
@@ -371,7 +371,8 @@ class Line(OSV):
fnct_search='search_move_field')
reference = fields.Char('Reference', size=None)
amount_second_currency = fields.Numeric('Amount Second Currency',
digits=(16, 2), help='The amount expressed in a second currency')
digits="(16, second_currency_digits)",
help='The amount expressed in a second currency')
second_currency = fields.Many2One('currency.currency', 'Second Currency',
help='The second currency')
party = fields.Many2One('relationship.party', 'Party',
@@ -395,6 +396,10 @@ class Line(OSV):
('draft', 'Draft'),
('posted', 'Posted'),
], string='Move State', fnct_search='search_move_field')
currency_digits = fields.Function('get_currency_digits', type='integer',
string='Currency Digits')
second_currency_digits = fields.Function('get_currency_digits',
type='integer', string='Second Currency Digits')
def __init__(self):
super(Line, self).__init__()
@@ -594,6 +599,19 @@ class Line(OSV):
]
return values
def get_currency_digits(self, cursor, user, ids, names, arg, context=None):
res = {}
for line in self.browse(cursor, user, ids, context=context):
for name in names:
res.setdefault(name, {})
res[name].setdefault(line.id, 2)
if name == 'currency_digits':
res[name][line.id] = line.account.currency_digits
elif name == 'second_currency_digits':
if line.account.second_currency:
res[name][line.id] = line.account.second_currency.digits
return res
def on_change_debit(self, cursor, user, ids, vals, context=None):
res = {}
if context is None:
@@ -631,6 +649,8 @@ class Line(OSV):
return res
def on_change_account(self, cursor, user, ids, vals, context=None):
account_obj = self.pool.get('account.account')
res = {}
if context is None:
context = {}
@@ -643,6 +663,12 @@ class Line(OSV):
ids, vals, journal.type, context=context)
if not res['tax_lines']:
del res['tax_lines']
if vals.get('account'):
account = account_obj.browse(cursor, user, vals['account'],
context=context)
res['currency_digits'] = account.currency_digits
if account.second_currency:
res['second_currency_digits'] = account.second_currency.digits
return res
def _compute_tax_lines(self, cursor, user, ids, vals, journal_type,
@@ -1106,6 +1132,11 @@ class Line(OSV):
else:
attrs.append('required="0"')
xml += '<field name="%s" %s/>\n' % (column.field.name, ' '.join(attrs))
if 'currency_digits' not in journal.view.columns:
xml += '<field name="currency_digits" tree_invisible="1"/>'
if 'second_currency' in journal.view.columns \
and 'second_currency_digits' not in journal.view.columns:
xml += '<field name="second_currency_digits" tree_invisible="1"/>'
xml += '</tree>'
result['arch'] = xml
result['fields'] = self.fields_get(cursor, user, fields_names=fields,
+3
View File
@@ -202,6 +202,8 @@
<field name="state"/>
</page>
</notebook>
<field name="currency_digits" colspan="4" invisible="1"/>
<field name="second_currency_digits" colspan="4" invisible="1"/>
</form>
]]>
</field>
@@ -225,6 +227,7 @@
<field name="reconciliation" select="2"/>
<field name="state" select="2"/>
<field name="move_state" select="2"/>
<field name="currency_digits" tree_invisible="1"/>
</tree>
]]>
</field>