From 85584004f098f9bece82aaff6f25eae82a9b85b7 Mon Sep 17 00:00:00 2001 From: Andrea Date: Fri, 21 Dec 2018 09:17:51 +0100 Subject: [PATCH] Add button to post all spread lines --- .../models/account_spread.py | 21 +++++++++++++++++-- .../readme/ROADMAP.rst | 1 - .../tests/test_account_invoice_spread.py | 13 ++++++++++++ .../views/account_spread.xml | 3 +++ 4 files changed, 35 insertions(+), 3 deletions(-) delete mode 100644 account_spread_cost_revenue/readme/ROADMAP.rst diff --git a/account_spread_cost_revenue/models/account_spread.py b/account_spread_cost_revenue/models/account_spread.py index 158143fa..aba622fc 100644 --- a/account_spread_cost_revenue/models/account_spread.py +++ b/account_spread_cost_revenue/models/account_spread.py @@ -114,6 +114,9 @@ class AccountSpread(models.Model): 'account.analytic.tag', string='Analytic Tags') move_line_auto_post = fields.Boolean('Auto-post lines', default=True) + display_create_all_moves = fields.Boolean( + compute='_compute_display_create_all_moves', + string='Display Button All Moves') @api.model def default_get(self, fields): @@ -173,6 +176,14 @@ class AccountSpread(models.Model): spread.posted_amount = posted_amount spread.total_amount = total_amount + @api.multi + def _compute_display_create_all_moves(self): + for spread in self: + if any(not line.move_id for line in spread.line_ids): + spread.display_create_all_moves = True + else: + spread.display_create_all_moves = False + @api.multi def _get_spread_entry_name(self, seq): """Use this method to customise the name of the accounting entry.""" @@ -409,8 +420,7 @@ class AccountSpread(models.Model): spread_mls = spread.line_ids.mapped('move_id.line_ids') spread_mls.remove_move_reconcile() inv_link = '%s' % ( - spread.invoice_id.id, _("Invoice")) + 'data-oe-id=%d>%s' % (spread.invoice_id.id, _("Invoice")) msg_body = _("Unlinked invoice line '%s' (view %s).") % ( spread.invoice_line_id.name, inv_link) spread.message_post(body=msg_body) @@ -477,6 +487,13 @@ class AccountSpread(models.Model): do_reconcile.remove_move_reconcile() do_reconcile.reconcile() + @api.multi + def create_all_moves(self): + for spread in self: + for line in spread.line_ids: + if not line.move_id: + line.create_move() + @api.multi def _compute_deprecated_accounts(self): for spread in self: diff --git a/account_spread_cost_revenue/readme/ROADMAP.rst b/account_spread_cost_revenue/readme/ROADMAP.rst deleted file mode 100644 index be52964a..00000000 --- a/account_spread_cost_revenue/readme/ROADMAP.rst +++ /dev/null @@ -1 +0,0 @@ -* Add option to post all spread lines in one click diff --git a/account_spread_cost_revenue/tests/test_account_invoice_spread.py b/account_spread_cost_revenue/tests/test_account_invoice_spread.py index 49f5752c..e0648987 100644 --- a/account_spread_cost_revenue/tests/test_account_invoice_spread.py +++ b/account_spread_cost_revenue/tests/test_account_invoice_spread.py @@ -724,3 +724,16 @@ class TestAccountInvoiceSpread(common.TransactionCase): self.assertTrue(other_journal) with self.assertRaises(ValidationError): self.spread2.journal_id = other_journal + + def test_14_create_all_moves(self): + self.spread.compute_spread_board() + spread_lines = self.spread.line_ids + self.assertEqual(len(spread_lines), 12) + for line in spread_lines: + self.assertFalse(line.move_id) + + # create moves for all the spread lines + self.spread.create_all_moves() + spread_lines = self.spread.line_ids + for line in spread_lines: + self.assertTrue(line.move_id) diff --git a/account_spread_cost_revenue/views/account_spread.xml b/account_spread_cost_revenue/views/account_spread.xml index a64f8a88..fe40791b 100644 --- a/account_spread_cost_revenue/views/account_spread.xml +++ b/account_spread_cost_revenue/views/account_spread.xml @@ -107,6 +107,9 @@ + +