forked from CGM_Public/pretix_original
Require payment even if total consists only of fees
This commit is contained in:
@@ -591,7 +591,11 @@ class FreeOrderProvider(BasePaymentProvider):
|
|||||||
messages.success(request, _('The order has been marked as refunded.'))
|
messages.success(request, _('The order has been marked as refunded.'))
|
||||||
|
|
||||||
def is_allowed(self, request: HttpRequest) -> bool:
|
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:
|
def order_change_allowed(self, order: Order) -> bool:
|
||||||
return False
|
return False
|
||||||
|
|||||||
@@ -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):
|
def get_fees(event, request, total, invoice_address, provider):
|
||||||
fees = []
|
fees = []
|
||||||
|
|
||||||
if total == 0:
|
if provider and total != 0:
|
||||||
return fees
|
|
||||||
|
|
||||||
if provider:
|
|
||||||
provider = event.get_payment_providers().get(provider)
|
provider = event.get_payment_providers().get(provider)
|
||||||
if provider:
|
if provider:
|
||||||
payment_fee = provider.calculate_fee(total)
|
payment_fee = provider.calculate_fee(total)
|
||||||
|
|||||||
@@ -11,7 +11,9 @@ from django.views.generic.base import TemplateResponseMixin
|
|||||||
|
|
||||||
from pretix.base.models import Order
|
from pretix.base.models import Order
|
||||||
from pretix.base.models.orders import InvoiceAddress
|
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.base.services.orders import perform_order
|
||||||
from pretix.multidomain.urlreverse import eventreverse
|
from pretix.multidomain.urlreverse import eventreverse
|
||||||
from pretix.presale.forms.checkout import (
|
from pretix.presale.forms.checkout import (
|
||||||
@@ -379,7 +381,9 @@ class PaymentStep(QuestionsViewMixin, CartMixin, TemplateFlowStep):
|
|||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def _total_order_value(self):
|
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
|
@cached_property
|
||||||
def provider_forms(self):
|
def provider_forms(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user