summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwilliam <wan@odoo.com>2020-04-03 10:03:58 +0000
committerwilliam <wan@odoo.com>2020-05-19 11:26:00 +0000
commit64873d225ede01eb3116773b2ff0aed278ff0e6a (patch)
treed55a817bf12522123d293cbf3f846021c344bc20
parentfbfd36aabb840e7ebdc6f3034b389ac7f49de43a (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.py6
-rw-r--r--addons/account/models/company.py13
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,