From 60e0d87eee85daaf85629446d9431c13253c663f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 17 Mar 2008 23:58:30 +0100 Subject: [PATCH] Fix on_write to works with list ids, add tree_open keyword from journal - period to open move lines, add search function on Function fields from move line --- move.py | 75 +++++++++++++++++++++++++++++++++++++++++++++----------- move.xml | 5 ++++ 2 files changed, 66 insertions(+), 14 deletions(-) diff --git a/move.py b/move.py index 7818739558..eae9c4e445 100644 --- a/move.py +++ b/move.py @@ -209,11 +209,14 @@ class Line(OSV): move = fields.Many2One('account.move', 'Move', states=_LINE_STATES, select=1, required=True) journal = fields.Function('get_move_field', fnct_inv='set_move_field', - type='many2one', relation='account.journal', string='Journal') + type='many2one', relation='account.journal', string='Journal', + fnct_search='search_move_field') period = fields.Function('get_move_field', fnct_inv='set_move_field', - type='many2one', relation='account.period', string='Period') + type='many2one', relation='account.period', string='Period', + fnct_search='search_move_field') date = fields.Function('get_move_field', fnct_inv='set_move_field', - type='date', string='Effective Date', required=True) + type='date', string='Effective Date', required=True, + 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') @@ -383,6 +386,14 @@ class Line(OSV): name: value, }, context=context) + def search_move_field(cursor, user, obj, name, args, context=None): + args2 = [] + i = 0 + while i < len(args): + args2.append(('move.' + args[i][0], args[i][1], args[i][2])) + i += 1 + return args2 + def query_get(self, cursor, user, obj='l', context=None): ''' Return SQL clause for account move line. @@ -421,9 +432,12 @@ class Line(OSV): ')' \ ')' - def on_write(self, cursor, user, id, context=None): - line = self.browse(cursor, user, id, context) - return [x.id for x in line.move.lines] + def on_write(self, cursor, user, ids, context=None): + lines = self.browse(cursor, user, ids, context) + res = [] + for line in lines: + res.extend([x.id for x in line.move.lines]) + return list({}.fromkeys(res)) def check_account(self, cursor, user, ids): for line in self.browse(cursor, user, ids): @@ -609,6 +623,12 @@ class OpenJournal(Wizard): _name = 'account.move.open_journal' states = { 'init': { + 'result': { + 'type': 'choice', + 'next_state': '_next', + }, + }, + 'ask': { 'result': { 'type': 'form', 'object': 'account.move.open_journal.init', @@ -627,17 +647,44 @@ class OpenJournal(Wizard): }, } + def _next(self, cursor, user, data, context=None): + if data.get('model', '') == 'account.journal.period' \ + and data.get('id'): + return 'open' + return 'ask' + + def _get_journal_period(self, cursor, user, data, context=None): + journal_period_obj = self.pool.get('account.journal.period') + if data.get('model', '') == 'account.journal.period' \ + and data.get('id'): + journal_period = journal_period_obj.browse(cursor, user, + data['id'], context=context) + return { + 'journal': journal_period.journal.id, + 'period': journal_period.period.id, + } + return {} + def _action_open_journal(self, cursor, user, data, context=None): journal_period_obj = self.pool.get('account.journal.period') journal_obj = self.pool.get('account.journal') period_obj = self.pool.get('account.period') + if data.get('model', '') == 'account.journal.period' \ + and data.get('id'): + journal_period = journal_period_obj.browse(cursor, user, + data['id'], context=context) + journal_id = journal_period.journal.id + period_id = journal_period.period.id + else: + journal_id = data['form']['journal'] + period_id = data['form']['period'] if not journal_period_obj.search(cursor, user, [ - ('journal', '=', data['form']['journal']), - ('period', '=', data['form']['period']), + ('journal', '=', journal_id), + ('period', '=', period_id), ], context=context): - journal = journal_obj.browse(cursor, user, data['form']['journal'], + journal = journal_obj.browse(cursor, user, journal_id, context=context) - period = period_obj.browse(cursor, user, data['form']['period'], + period = period_obj.browse(cursor, user, period_id, context=context) journal_period_obj.create(cursor, user, { 'name': journal.name + ' - ' + period.name, @@ -646,16 +693,16 @@ class OpenJournal(Wizard): }, context=context) return { 'domain': str([ - ('journal', '=', data['form']['journal']), - ('period', '=', data['form']['period']), + ('journal', '=', journal_id), + ('period', '=', period_id), ]), 'view_type': 'form', 'view_mode': 'tree,form', 'res_model': 'account.move.line', 'type': 'ir.action.act_window', 'context': str({ - 'journal': data['form']['journal'], - 'period': data['form']['period'], + 'journal': journal_id, + 'period': period_id, }), } diff --git a/move.xml b/move.xml index 3ac547c09b..affabfc3cf 100644 --- a/move.xml +++ b/move.xml @@ -146,6 +146,11 @@ Open Journal account.move.open_journal + + tree_open + account.journal.period,0 + +