Fix crash if a tax rule on a fee prevents sale (PRETIXEU-8MZ)

This commit is contained in:
Raphael Michel
2023-06-23 11:30:37 +02:00
parent 147061eaa4
commit cc7f249cb8
6 changed files with 109 additions and 23 deletions

View File

@@ -1126,13 +1126,17 @@ class PaymentStep(CartMixin, TemplateFlowStep):
def _total_order_value(self):
cart = get_cart(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,
[p for p in self.cart_session.get('payments', []) if p.get('multi_use_supported')],
cart,
)
])
try:
total += sum([
f.value for f in get_fees(
self.request.event, self.request, total, self.invoice_address,
[p for p in self.cart_session.get('payments', []) if p.get('multi_use_supported')],
cart,
)
])
except TaxRule.SaleNotAllowed:
# ignore for now, will fail on order creation
pass
return Decimal(total)
@cached_property
@@ -1201,6 +1205,7 @@ class PaymentStep(CartMixin, TemplateFlowStep):
cart = self.get_cart(payments=simulated_payments)
else:
cart = self.get_cart()
resp = pprov.checkout_prepare(
request,
cart,
@@ -1283,8 +1288,12 @@ class PaymentStep(CartMixin, TemplateFlowStep):
cart = get_cart(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,
self.cart_session.get('payments', []), cart)])
try:
total += sum([f.value for f in get_fees(self.request.event, self.request, total, self.invoice_address,
self.cart_session.get('payments', []), cart)])
except TaxRule.SaleNotAllowed:
# ignore for now, will fail on order creation
pass
selected = self.current_selected_payments(total, warn=warn, total_includes_payment_fees=True)
if sum(p['payment_amount'] for p in selected) != total:
if warn: