Require payment even if total consists only of fees

This commit is contained in:
Raphael Michel
2017-09-13 16:42:00 +02:00
parent 3345f48986
commit 9cd3e2d494
3 changed files with 12 additions and 7 deletions

View File

@@ -591,7 +591,11 @@ class FreeOrderProvider(BasePaymentProvider):
messages.success(request, _('The order has been marked as refunded.'))
def is_allowed(self, request: HttpRequest) -> bool:
return get_cart_total(request) == 0
from .services.cart import get_fees
total = get_cart_total(request)
total += sum([f.value for f in get_fees(self.event, request, total, None, None)])
return total == 0
def order_change_allowed(self, order: Order) -> bool:
return False

View File

@@ -631,10 +631,7 @@ def update_tax_rates(event: Event, cart_id: str, invoice_address: InvoiceAddress
def get_fees(event, request, total, invoice_address, provider):
fees = []
if total == 0:
return fees
if provider:
if provider and total != 0:
provider = event.get_payment_providers().get(provider)
if provider:
payment_fee = provider.calculate_fee(total)

View File

@@ -11,7 +11,9 @@ from django.views.generic.base import TemplateResponseMixin
from pretix.base.models import Order
from pretix.base.models.orders import InvoiceAddress
from pretix.base.services.cart import set_cart_addons, update_tax_rates
from pretix.base.services.cart import (
get_fees, set_cart_addons, update_tax_rates,
)
from pretix.base.services.orders import perform_order
from pretix.multidomain.urlreverse import eventreverse
from pretix.presale.forms.checkout import (
@@ -379,7 +381,9 @@ class PaymentStep(QuestionsViewMixin, CartMixin, TemplateFlowStep):
@cached_property
def _total_order_value(self):
return get_cart_total(self.request)
total = get_cart_total(self.request)
total += sum([f.value for f in get_fees(self.request.event, self.request, total, self.invoice_address, None)])
return total
@cached_property
def provider_forms(self):