diff options
| author | william <wan@odoo.com> | 2020-04-03 10:03:58 +0000 |
|---|---|---|
| committer | william <wan@odoo.com> | 2020-05-19 11:26:00 +0000 |
| commit | 64873d225ede01eb3116773b2ff0aed278ff0e6a (patch) | |
| tree | d55a817bf12522123d293cbf3f846021c344bc20 | |
| parent | fbfd36aabb840e7ebdc6f3034b389ac7f49de43a (diff) | |
[FIX] account: import balances with unaffected earnings
If we try to load a csv file with opening values for the anuaffected
earnings account, there will be errors because when trying to balance
the move, we filter the lines on that account and we don't expect there
to be multiple lines in it.
closes odoo/odoo#51401
X-original-commit: ad4277219fe078712916e91c1be566a9b412fe1f
Signed-off-by: Quentin De Paoli (qdp) <qdp@openerp.com>
Signed-off-by: wan <william-andre@users.noreply.github.com>
| -rw-r--r-- | addons/account/models/account_account.py | 6 | ||||
| -rw-r--r-- | addons/account/models/company.py | 13 |
2 files changed, 11 insertions, 8 deletions
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, |
