Order change: Do not set invoice_dirty if invoicing is disabled

This commit is contained in:
Raphael Michel
2023-11-30 11:51:41 +01:00
parent fbf362a91f
commit bd14be485a
2 changed files with 20 additions and 3 deletions
+6 -3
View File
@@ -2620,7 +2620,7 @@ class OrderChangeManager:
i = self.order.invoices.filter(is_cancellation=False).last()
if self.reissue_invoice and self._invoice_dirty:
order_now_qualified = invoice_qualified(self.order)
invoice_should_be_generated = (
invoice_should_be_generated_now = (
self.event.settings.invoice_generate == "True" or (
self.event.settings.invoice_generate == "paid" and
self.open_payment is not None and
@@ -2635,13 +2635,16 @@ class OrderChangeManager:
not i.canceled
)
)
invoice_should_be_generated_later = not invoice_should_be_generated_now and (
self.event.settings.invoice_generate in ("True", "paid")
)
if order_now_qualified:
if invoice_should_be_generated:
if invoice_should_be_generated_now:
if i and not i.canceled:
self._invoices.append(generate_cancellation(i))
self._invoices.append(generate_invoice(self.order))
else:
elif invoice_should_be_generated_later:
self.order.invoice_dirty = True
self.order.save(update_fields=["invoice_dirty"])
else:
+14
View File
@@ -2006,6 +2006,20 @@ class OrderChangeManagerTests(TestCase):
).confirm()
assert self.order.invoices.count() == 3
@classscope(attr='o')
def test_reissue_invoice_paid_only_after_payment_only_if_enabled(self):
self.event.settings.invoice_generate = "False"
assert self.order.invoices.count() == 0
self.ocm.add_position(self.ticket, None, Decimal('2.00'))
self.ocm.commit()
assert self.order.invoices.count() == 0
self.order.refresh_from_db()
assert not self.order.invoice_dirty
self.order.payments.create(
provider='manual', amount=self.order.total
).confirm()
assert self.order.invoices.count() == 0
@classscope(attr='o')
def test_reissue_invoice_paid_stays_paid(self):
self.event.settings.invoice_generate = "paid"