Skip to content

Commit c0e57a2

Browse files
Merge pull request #60 from tosccolors/16.0-377.9_1st-cancel-draft-unlink
[RFR] #377.9(1st) cascade draft, cancel and unlink actions to wip moves
2 parents 58be587 + 2c30377 commit c0e57a2

File tree

2 files changed

+33
-7
lines changed

2 files changed

+33
-7
lines changed

ps_timesheet_invoicing/models/account_move.py

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -211,19 +211,32 @@ def action_wip_move_create(self):
211211

212212
def button_draft(self):
213213
res = super().button_draft()
214+
214215
wip_moves = self.mapped("wip_move_id")
216+
if wip_moves:
217+
wip_moves += self.search([("reversed_entry_id", "in", wip_moves.ids)])
218+
wip_moves.button_draft()
215219

216-
# First, set the invoices as cancelled and detach the move ids
217-
self.write({"wip_move_id": False})
218-
# second, invalidate the move(s)
220+
return res
221+
222+
def button_cancel(self):
223+
result = super().button_cancel()
224+
225+
wip_moves = self.mapped("wip_move_id")
219226
if wip_moves:
220227
wip_moves += self.search([("reversed_entry_id", "in", wip_moves.ids)])
221228
wip_moves.button_cancel()
222-
# delete the move this invoice was pointing to
223-
# Note that the corresponding move_lines and move_reconciles
224-
# will be automatically deleted too
229+
230+
return result
231+
232+
def unlink(self):
233+
wip_moves = self.mapped("wip_move_id")
234+
self.write({"wip_move_id": False})
235+
if wip_moves:
236+
wip_moves += self.search([("reversed_entry_id", "in", wip_moves.ids)])
225237
wip_moves.with_context(force_delete=True).unlink()
226-
return res
238+
239+
return super().unlink()
227240

228241
def wip_move_create(self, wip_journal, name, ar_account_id, ref=None):
229242
self.ensure_one()

ps_timesheet_invoicing/tests/test_ps_invoice.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ def test_01_invoicing(self):
6767
self.assertEqual(ps_invoice.state, "invoiced")
6868
self.assertEqual(set(self.ps_line.mapped("state")), {"invoiced"})
6969
self.assertTrue(ps_invoice.invoice_id.wip_move_id)
70+
self.assertTrue(ps_invoice.invoice_id.wip_move_id.reversal_move_id)
7071
return ps_invoice
7172

7273
def test_02_delete_invoice(self):
@@ -82,8 +83,20 @@ def test_02_delete_invoice(self):
8283
ps_invoice.user_total_ids.detail_ids + ps_invoice.mileage_line_ids,
8384
self.ps_line,
8485
)
86+
wip_move = ps_invoice.invoice_id.wip_move_id
87+
wip_reversal = ps_invoice.invoice_id.wip_move_id.reversal_move_id
88+
invoice = ps_invoice.invoice_id
8589
ps_invoice.unlink()
8690
self.assertEqual(set(self.ps_line.mapped("state")), {"invoiceable"})
91+
invoice.button_draft()
92+
self.assertEqual(wip_move.state, "draft")
93+
self.assertEqual(wip_reversal.state, "draft")
94+
invoice.button_cancel()
95+
self.assertEqual(wip_move.state, "cancel")
96+
self.assertEqual(wip_reversal.state, "cancel")
97+
invoice.unlink()
98+
self.assertFalse(wip_move.exists())
99+
self.assertFalse(wip_reversal.exists())
87100

88101
def test_03_amend_invoice(self):
89102
ps_line1, mileage_line = self.ps_line

0 commit comments

Comments
 (0)