mirror of
https://github.com/OCA/account-financial-tools.git
synced 2025-02-02 12:47:26 +02:00
@@ -67,12 +67,14 @@ class AccountMove(models.Model):
|
||||
def write(self, vals):
|
||||
if vals.get("state") != "posted":
|
||||
return super().write(vals)
|
||||
|
||||
previously_validated = self.filtered(lambda m: m.name and m.name != "/")
|
||||
newly_posted = self.filtered(lambda move: move.state != "posted")
|
||||
res = super().write(vals)
|
||||
for move in newly_posted & self.filtered("journal_id.check_chronology"):
|
||||
if self.search(move._get_older_conflicting_invoices_domain(), limit=1):
|
||||
move._raise_older_conflicting_invoices()
|
||||
if move in previously_validated:
|
||||
continue
|
||||
if self.search(move._get_newer_conflicting_invoices_domain(), limit=1):
|
||||
move._raise_newer_conflicting_invoices()
|
||||
|
||||
|
||||
@@ -129,3 +129,19 @@ class TestAccountInvoiceConstraintChronology(common.SavepointCase):
|
||||
refund = self.AccountMove.browse(refund["res_id"])
|
||||
with self.assertRaises(UserError):
|
||||
refund.action_post()
|
||||
|
||||
def test_modify_validated_past_invoice(self):
|
||||
"""We've got an invoice from yesterday that we need to modify but new ones
|
||||
have been posted since. As the invoice already has a name, we should be able
|
||||
to validate it"""
|
||||
self.invoice_1.invoice_date = self.yesterday
|
||||
self.invoice_1.action_post()
|
||||
self.invoice_2.invoice_date = self.today
|
||||
self.invoice_2.action_post()
|
||||
self.invoice_1.button_cancel()
|
||||
self.invoice_1.button_draft()
|
||||
self.invoice_1.action_post()
|
||||
self.invoice_1_5 = self.invoice_1.copy()
|
||||
self.invoice_1_5.invoice_date = self.yesterday
|
||||
with self.assertRaises(UserError):
|
||||
self.invoice_1_5.action_post()
|
||||
|
||||
Reference in New Issue
Block a user