diff --git a/hr_expense_cancel/README.rst b/hr_expense_cancel/README.rst index 1abab13db..36a3513fb 100644 --- a/hr_expense_cancel/README.rst +++ b/hr_expense_cancel/README.rst @@ -96,6 +96,7 @@ Contributors - Danh Vo - Saran Lim. - Manuel Regidor +- Italo LOPES Maintainers ----------- diff --git a/hr_expense_cancel/models/hr_expense.py b/hr_expense_cancel/models/hr_expense.py index d1540e510..93d06f3aa 100644 --- a/hr_expense_cancel/models/hr_expense.py +++ b/hr_expense_cancel/models/hr_expense.py @@ -9,13 +9,13 @@ class HrExpenseSheet(models.Model): def action_cancel(self): for sheet in self: - account_move = sheet.account_move_id - sheet.account_move_id = False + account_move = sheet.account_move_ids + sheet.account_move_ids = False payments = sheet.payment_ids.filtered(lambda line: line.state != "cancel") # case : cancel invoice from hr_expense self._remove_reconcile_hr_invoice(account_move) # If the sheet is paid then remove payments - if sheet.state == "done": + if sheet.state in ("done", "approve"): if sheet.expense_line_ids[:1].payment_mode == "own_account": self._remove_move_reconcile(payments, account_move) self._cancel_payments(payments) @@ -27,8 +27,11 @@ def action_cancel(self): # (if the expense sheet is paid and payment_mode == 'own_account') # it has not been deleted if account_move.exists(): - if account_move.state != "draft": - account_move.button_cancel() + move_to_cancel = account_move.filtered( + lambda move: move.state != "draft" + ) + if move_to_cancel: + move_to_cancel.button_cancel() account_move.with_context(force_delete=True).unlink() sheet.state = "submit" @@ -38,7 +41,9 @@ def _remove_reconcile_hr_invoice(self, account_move): aml = self.env["account.move.line"].search( [("full_reconcile_id", "in", reconcile.ids)] ) - exp_move_line = aml.filtered(lambda line: line.move_id.id != account_move.id) + exp_move_line = aml.filtered( + lambda line: line.move_id.id not in account_move.ids + ) # set state to cancel exp_move_line.move_id.button_draft() exp_move_line.move_id.button_cancel() @@ -56,4 +61,5 @@ def _remove_move_reconcile(self, payments, account_move): def _cancel_payments(self, payments): for rec in payments: + rec.move_id.button_draft() rec.move_id.button_cancel() diff --git a/hr_expense_cancel/readme/CONTRIBUTORS.md b/hr_expense_cancel/readme/CONTRIBUTORS.md index 0e7fbf392..2099fcf69 100644 --- a/hr_expense_cancel/readme/CONTRIBUTORS.md +++ b/hr_expense_cancel/readme/CONTRIBUTORS.md @@ -5,3 +5,4 @@ - Danh Vo \<\> - Saran Lim. \<\> - Manuel Regidor \<\> +- Italo LOPES \<\> diff --git a/hr_expense_cancel/static/description/index.html b/hr_expense_cancel/static/description/index.html index dc3a8a44e..8fd4b508a 100644 --- a/hr_expense_cancel/static/description/index.html +++ b/hr_expense_cancel/static/description/index.html @@ -442,6 +442,7 @@

Contributors

  • Danh Vo <https://github.com/danhvophuong>
  • Saran Lim. <saranl@ecosoft.co.th>
  • Manuel Regidor <manuel.regidor@sygel.es>
  • +
  • Italo LOPES <italo.lopes@camptocamp.com>
  • diff --git a/hr_expense_cancel/tests/test_hr_expense_cancel.py b/hr_expense_cancel/tests/test_hr_expense_cancel.py index b7a0cd924..6bf3ab36c 100644 --- a/hr_expense_cancel/tests/test_hr_expense_cancel.py +++ b/hr_expense_cancel/tests/test_hr_expense_cancel.py @@ -32,7 +32,7 @@ def setUp(self): "journal_id": self.expense_journal.id, } ) - self.expense_sheet.approve_expense_sheets() + self.expense_sheet.action_approve_expense_sheets() self.expense = self.env["hr.expense"].create( { @@ -62,12 +62,12 @@ def test_action_cancel_posted(self): self.expense_sheet.action_sheet_move_create() self.assertFalse(len(self.expense_sheet.payment_ids), 1) - self.assertTrue(self.expense_sheet.account_move_id) + self.assertTrue(self.expense_sheet.account_move_ids) self.expense_sheet.action_cancel() self.assertFalse(self.expense_sheet.payment_ids) - self.assertFalse(self.expense_sheet.account_move_id) + self.assertFalse(self.expense_sheet.account_move_ids) def test_action_cancel_no_update_posted(self): journals = self.payment_journal | self.expense_journal @@ -79,9 +79,9 @@ def test_action_cancel_no_update_posted(self): def test_action_cancel_company_account(self): self.expense.payment_mode = "company_account" self.expense_sheet.action_sheet_move_create() - self.assertTrue(self.expense_sheet.account_move_id) + self.assertTrue(self.expense_sheet.account_move_ids) self.expense_sheet.action_cancel() - self.assertFalse(self.expense_sheet.account_move_id) + self.assertFalse(self.expense_sheet.account_move_ids) def test_action_cancel_own_account(self): self.expense_sheet.action_sheet_move_create() diff --git a/hr_expense_cancel/views/hr_expense_views.xml b/hr_expense_cancel/views/hr_expense_views.xml index 3b40809b4..82dc0f63b 100644 --- a/hr_expense_cancel/views/hr_expense_views.xml +++ b/hr_expense_cancel/views/hr_expense_views.xml @@ -10,7 +10,7 @@