diff --git a/src/pretix/base/migrations/0104_auto_20181114_1526.py b/src/pretix/base/migrations/0104_auto_20181114_1526.py index 3ee88e844a..31e1119b04 100644 --- a/src/pretix/base/migrations/0104_auto_20181114_1526.py +++ b/src/pretix/base/migrations/0104_auto_20181114_1526.py @@ -8,8 +8,7 @@ from django.db import migrations, models def change_refunded_to_canceled(apps, schema_editor): Order = apps.get_model('pretixbase', 'Order') - Order.objects.filter(status='r').update(status='c', total=0) - Order.objects.filter(status='c').update(total=0) + Order.objects.filter(status='r').update(status='c') class Migration(migrations.Migration): diff --git a/src/pretix/base/models/orders.py b/src/pretix/base/models/orders.py index 9c2d6ec795..e75fca252c 100644 --- a/src/pretix/base/models/orders.py +++ b/src/pretix/base/models/orders.py @@ -421,7 +421,7 @@ class Order(LockModel, LoggedModel): return ( self.status == Order.STATUS_PENDING or (self.status == Order.STATUS_PAID and self.total == Decimal('0.00')) - ) and self.event.settings.cancel_allow_user and cancelable + ) and self.event.settings.cancel_allow_user and cancelable and self.positions.exists() @property def is_expired_by_time(self): diff --git a/src/pretix/base/services/orders.py b/src/pretix/base/services/orders.py index c8ff2d3c2f..ff8aaa8eeb 100644 --- a/src/pretix/base/services/orders.py +++ b/src/pretix/base/services/orders.py @@ -1173,7 +1173,7 @@ class OrderChangeManager: return payment_sum - refund_sum def _recalculate_total_and_payment_fee(self): - total = sum([p.price for p in self.order.positions.all() if not p.canceled]) + sum([f.value for f in self.order.fees.all()]) + total = sum([p.price for p in self.order.positions.all()]) + sum([f.value for f in self.order.fees.all()]) payment_fee = Decimal('0.00') if self.open_payment: current_fee = Decimal('0.00')