From 48b47e70acb6268f1a8a07b8b5a87b3ffa16b0c2 Mon Sep 17 00:00:00 2001 From: Matthieu Dietrich Date: Thu, 26 May 2016 16:38:20 +0200 Subject: [PATCH] Corrections --- .../models/account_journal.py | 83 +++++++++++-------- .../models/account_move.py | 3 +- .../views/account_move_view.xml | 2 +- .../views/journal_view.xml | 6 +- 4 files changed, 54 insertions(+), 40 deletions(-) diff --git a/account_move_base_import/models/account_journal.py b/account_move_base_import/models/account_journal.py index d5fbbbe6..667daa65 100644 --- a/account_move_base_import/models/account_journal.py +++ b/account_move_base_import/models/account_journal.py @@ -44,10 +44,9 @@ class AccountJournal(models.Model): receivable_account_id = fields.Many2one( comodel_name='account.account', - string='Force Receivable/Payable Account', - help="Choose a receivable account to force the default " - "debit/credit account (eg. an intermediat bank account " - "instead of default debitors).") + string='Receivable/Payable Account', + help="Choose a receivable/payable account to use as the default " + "debit/credit account.") used_for_completion = fields.Boolean( string="Journal used for completion") @@ -114,35 +113,49 @@ class AccountJournal(models.Model): total_amount += global_commission_amount partner_id = self.partner_id.id # Commission line - if global_commission_amount < 0.0: - commission_account_id = self.commission_account_id.id - comm_values = { - 'name': _('Commission line'), - 'date_maturity': parser.get_move_vals().get('date') or - fields.Date.today(), - 'debit': -global_commission_amount, - 'partner_id': partner_id, - 'move_id': move.id, - 'account_id': commission_account_id, - 'already_completed': True, - } - move_line_obj.with_context( - check_move_validity=False - ).create(comm_values) + if global_commission_amount > 0.0: + raise UserError(_('Commission amount should not be positive.')) + elif global_commission_amount < 0.0: + if not self.commission_account_id: + raise UserError( + _('No commission account is set on the journal.')) + else: + commission_account_id = self.commission_account_id.id + comm_values = { + 'name': _('Commission line'), + 'date_maturity': parser.get_move_vals().get('date') or + fields.Date.today(), + 'debit': -global_commission_amount, + 'partner_id': partner_id, + 'move_id': move.id, + 'account_id': commission_account_id, + 'already_completed': True, + } + move_line_obj.with_context( + check_move_validity=False + ).create(comm_values) + # Counterpart line if total_amount > 0.0: - receivable_account_id = self.receivable_account_id.id or False - counterpart_values = { - 'name': _('Counterpart line'), - 'date_maturity': parser.get_move_vals().get('date') or - fields.Date.today(), - 'debit': total_amount, - 'partner_id': partner_id, - 'move_id': move.id, - 'account_id': receivable_account_id, - 'already_completed': True, - } - move_line_obj.create(counterpart_values) + account_id = self.default_debit_account_id.id + credit = 0.0 + debit = total_amount + else: + account_id = self.default_credit_account_id.id + credit = -total_amount + debit = 0.0 + counterpart_values = { + 'name': _('/'), + 'date_maturity': parser.get_move_vals().get('date') or + fields.Date.today(), + 'credit': credit, + 'debit': debit, + 'partner_id': partner_id, + 'move_id': move.id, + 'account_id': account_id, + 'already_completed': True, + } + move_line_obj.create(counterpart_values) @api.multi def write_logs_after_import(self, move, num_lines): @@ -177,10 +190,7 @@ class AccountJournal(models.Model): values['company_currency_id'] = self.company_id.currency_id.id values['journal_id'] = self.id values['move_id'] = move.id - if values['credit'] > 0.0: - values['account_id'] = self.default_credit_account_id.id - else: - values['account_id'] = self.default_debit_account_id.id + values['account_id'] = self.receivable_account_id.id values = move_line_obj._add_missing_default_values(values) return values @@ -263,6 +273,9 @@ class AccountJournal(models.Model): move.button_auto_completion() # Write the needed log infos on profile self.write_logs_after_import(move, len(result_row_list)) + except UserError: + # "Clean" exception, raise as such + raise except Exception: error_type, error_value, trbk = sys.exc_info() st = "Error: %s\nDescription: %s\nTraceback:" % ( diff --git a/account_move_base_import/models/account_move.py b/account_move_base_import/models/account_move.py index b5a4a9cf..5bbfe034 100644 --- a/account_move_base_import/models/account_move.py +++ b/account_move_base_import/models/account_move.py @@ -99,7 +99,8 @@ class AccountMoveCompletionRule(models.Model): invoice = self._find_invoice(line, inv_type) if invoice: partner_id = invoice.commercial_partner_id.id - res = {'partner_id': partner_id} + res = {'partner_id': partner_id, + 'account_id': invoice.account_id.id} return res # Should be private but data are initialised with no update XML diff --git a/account_move_base_import/views/account_move_view.xml b/account_move_base_import/views/account_move_view.xml index dacc737a..e16e225d 100644 --- a/account_move_base_import/views/account_move_view.xml +++ b/account_move_base_import/views/account_move_view.xml @@ -46,7 +46,7 @@ account.move.completion.rule.view account.move.completion.rule - + diff --git a/account_move_base_import/views/journal_view.xml b/account_move_base_import/views/journal_view.xml index 37d17106..33ba085a 100644 --- a/account_move_base_import/views/journal_view.xml +++ b/account_move_base_import/views/journal_view.xml @@ -19,13 +19,13 @@ - + - +