diff --git a/addons/account/models/account_account.py b/addons/account/models/account_account.py index 53322bcd81a..c9d2de963bd 100644 --- a/addons/account/models/account_account.py +++ b/addons/account/models/account_account.py @@ -140,7 +140,7 @@ class AccountAccount(models.Model): AND journal.type IN ('bank', 'cash') AND journal.currency_id IS NOT NULL AND journal.currency_id != company.currency_id - AND account.currency_id != journal.currency_id + AND account.currency_id != journal.currency_id ''', [tuple(self.ids)]) res = self._cr.fetchone() if res: @@ -244,11 +244,9 @@ class AccountAccount(models.Model): either 'debit' or 'credit', depending on which one of these two fields got assigned. """ + self.company_id.create_op_move_if_non_existant() opening_move = self.company_id.account_opening_move_id - if not opening_move: - raise UserError(_("You must first define an opening move.")) - if opening_move.state == 'draft': # check whether we should create a new move line or modify an existing one account_op_lines = self.env['account.move.line'].search([('account_id', '=', self.id), diff --git a/addons/account/models/company.py b/addons/account/models/company.py index a04ccd3243b..f817927cf93 100644 --- a/addons/account/models/company.py +++ b/addons/account/models/company.py @@ -405,10 +405,16 @@ class ResCompany(models.Model): current year earnings account. """ if self.account_opening_move_id and self.account_opening_move_id.state == 'draft': - debit_diff, credit_diff = self.get_opening_move_differences(self.account_opening_move_id.line_ids) - + balancing_account = self.get_unaffected_earnings_account() currency = self.currency_id - balancing_move_line = self.account_opening_move_id.line_ids.filtered(lambda x: x.account_id == self.get_unaffected_earnings_account()) + + balancing_move_line = self.account_opening_move_id.line_ids.filtered(lambda x: x.account_id == balancing_account) + # There could be multiple lines if we imported the balance from unaffected earnings account too + if len(balancing_move_line) > 1: + self.with_context(check_move_validity=False).account_opening_move_id.line_ids -= balancing_move_line[1:] + balancing_move_line = balancing_move_line[0] + + debit_diff, credit_diff = self.get_opening_move_differences(self.account_opening_move_id.line_ids) if float_is_zero(debit_diff + credit_diff, precision_rounding=currency.rounding): if balancing_move_line: @@ -420,7 +426,6 @@ class ResCompany(models.Model): balancing_move_line.write({'debit': credit_diff, 'credit': debit_diff}) else: # Non-zero difference and no existing line : create a new line - balancing_account = self.get_unaffected_earnings_account() self.env['account.move.line'].create({ 'name': _('Automatic Balancing Line'), 'move_id': self.account_opening_move_id.id,