mirror of
https://github.com/pretix/pretix.git
synced 2026-08-11 10:57:00 +00:00
Order change: Do not set invoice_dirty if invoicing is disabled
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user