Do not crash if generate_invoice fails (#5483)

* Do not crash if generate_invoice fails

* Add logging

* Add cancellation to try block

* One last thing…
This commit is contained in:
Raphael Michel
2025-10-07 11:20:31 +02:00
committed by GitHub
parent f447e7b9c4
commit 15cbb3a416
6 changed files with 167 additions and 62 deletions

View File

@@ -1969,14 +1969,20 @@ class OrderPayment(models.Model):
self.order.invoice_dirty
)
if gen_invoice:
if invoices:
last_i = self.order.invoices.filter(is_cancellation=False).last()
if not last_i.canceled:
generate_cancellation(last_i)
invoice = generate_invoice(
self.order,
trigger_pdf=not send_mail or not self.order.event.settings.invoice_email_attachment
)
try:
if invoices:
last_i = self.order.invoices.filter(is_cancellation=False).last()
if not last_i.canceled:
generate_cancellation(last_i)
invoice = generate_invoice(
self.order,
trigger_pdf=not send_mail or not self.order.event.settings.invoice_email_attachment
)
except Exception as e:
logger.exception("Could not generate invoice.")
self.order.log_action("pretix.event.order.invoice.failed", data={
"exception": str(e)
})
transmit_invoice_task = invoice_transmission_separately(invoice)
transmit_invoice_mail = not transmit_invoice_task and self.order.event.settings.invoice_email_attachment and self.order.email