Never create implicit payments for orders that require approval

This commit is contained in:
Raphael Michel
2018-12-14 10:42:08 +01:00
parent 04c3cffd43
commit cf4b2544f2
3 changed files with 38 additions and 2 deletions

View File

@@ -532,7 +532,7 @@ def _create_order(event: Event, email: str, positions: List[CartPosition], now_d
fee.tax_rule = None # TODO: deprecate
fee.save()
if payment_provider:
if payment_provider and not order.require_approval:
order.payments.create(
state=OrderPayment.PAYMENT_STATE_CREATED,
provider=payment_provider.identifier,

View File

@@ -535,6 +535,8 @@ class PaymentStep(QuestionsViewMixin, CartMixin, TemplateFlowStep):
for cartpos in get_cart(self.request):
if cartpos.item.require_approval:
if 'payment' in self.cart_session:
del self.cart_session['payment']
return False
for p in self.request.event.get_payment_providers().values():
@@ -542,6 +544,9 @@ class PaymentStep(QuestionsViewMixin, CartMixin, TemplateFlowStep):
if self._is_allowed(p, request):
self.cart_session['payment'] = p.identifier
return False
elif self.cart_session.get('payment') == p.identifier:
# is_allowed might have changed, e.g. after add-on selection
del self.cart_session['payment']
return True