mirror of
https://github.com/pretix/pretix.git
synced 2026-05-07 15:34:02 +00:00
PPv2: Simulate cart_payments in XHR-calls; only look at multi_use-payments for remaining value calculation (#2970)
Co-authored-by: Raphael Michel <michel@rami.io>
This commit is contained in:
@@ -149,19 +149,27 @@ class XHRView(View):
|
|||||||
else:
|
else:
|
||||||
cart_total = get_cart_total(request)
|
cart_total = get_cart_total(request)
|
||||||
cart_payments = cart_session(request).get('payments', [])
|
cart_payments = cart_session(request).get('payments', [])
|
||||||
for fee in get_fees(request.event, request, cart_total, None, cart_payments, get_cart(request)):
|
multi_use_cart_payments = [p for p in cart_payments if p.get('multi_use_supported')]
|
||||||
|
simulated_payments = multi_use_cart_payments + [{
|
||||||
|
'provider': 'paypal',
|
||||||
|
'multi_use_supported': False,
|
||||||
|
'min_value': None,
|
||||||
|
'max_value': None,
|
||||||
|
'info_data': {},
|
||||||
|
}]
|
||||||
|
|
||||||
|
for fee in get_fees(request.event, request, cart_total, None, simulated_payments, get_cart(request)):
|
||||||
cart_total += fee.value
|
cart_total += fee.value
|
||||||
|
|
||||||
total_remaining = cart_total
|
total_remaining = cart_total
|
||||||
for p in cart_session(request).get('payments', []):
|
for p in multi_use_cart_payments:
|
||||||
if p['provider'] != 'paypal':
|
if p.get('min_value') and total_remaining < Decimal(p['min_value']):
|
||||||
if p.get('min_value') and total_remaining < Decimal(p['min_value']):
|
continue
|
||||||
continue
|
|
||||||
|
|
||||||
to_pay = total_remaining
|
to_pay = total_remaining
|
||||||
if p.get('max_value') and to_pay > Decimal(p['max_value']):
|
if p.get('max_value') and to_pay > Decimal(p['max_value']):
|
||||||
to_pay = min(to_pay, Decimal(p['max_value']))
|
to_pay = min(to_pay, Decimal(p['max_value']))
|
||||||
total_remaining -= to_pay
|
total_remaining -= to_pay
|
||||||
|
|
||||||
cart_total = total_remaining
|
cart_total = total_remaining
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user