From e3c31544692967ba522825b35f52bf8febcdbb31 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 11 Nov 2019 18:57:00 +0100 Subject: [PATCH] Fix invoice duplication when importing payments for expired orders --- src/pretix/base/services/invoices.py | 2 +- src/pretix/base/services/orders.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pretix/base/services/invoices.py b/src/pretix/base/services/invoices.py index df47b5ff5..a888bfd63 100644 --- a/src/pretix/base/services/invoices.py +++ b/src/pretix/base/services/invoices.py @@ -203,7 +203,7 @@ def build_cancellation(invoice: Invoice): def generate_cancellation(invoice: Invoice, trigger_pdf=True): - if invoice.refered.exists(): + if invoice.canceled: raise ValueError("Invoice should not be canceled twice.") cancellation = modelcopy(invoice) cancellation.pk = None diff --git a/src/pretix/base/services/orders.py b/src/pretix/base/services/orders.py index d78aa1217..73cb8aefe 100644 --- a/src/pretix/base/services/orders.py +++ b/src/pretix/base/services/orders.py @@ -1753,7 +1753,7 @@ def change_payment_provider(order: Order, payment_provider, amount=None, new_pay if recreate_invoices: i = order.invoices.filter(is_cancellation=False).last() - if i and order.total != oldtotal: + if i and order.total != oldtotal and not i.canceled: generate_cancellation(i) generate_invoice(order)