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)