diff --git a/src/storefront/views.py b/src/storefront/views.py index c309aed..efd2627 100644 --- a/src/storefront/views.py +++ b/src/storefront/views.py @@ -268,16 +268,6 @@ class OrderCreateView(CreateView): shipping_address = self.request.session.get('shipping_address') form.instance.customer, form.instance.shipping_address = get_or_create_customer(self.request, form, shipping_address) form.instance.status = OrderStatus.DRAFT - try: - coupon = Coupon.objects.get( - code=self.request.session.get('coupon_code') - ) - except ObjectDoesNotExist: - coupon = None - - if coupon: - form.instance.coupon = coupon - coupon.users.add(form.instance.customer) self.object = form.save() bulk_list = cart.build_bulk_list(self.object) objs = OrderLine.objects.bulk_create(bulk_list) @@ -296,14 +286,24 @@ def paypal_order_transaction_capture(request, transaction_id): if request.method == "POST": data = CaptureOrder().capture_order(transaction_id) cart = Cart(request) - cart.clear() order = Order.objects.get(pk=request.session.get('order_id')) order.status = OrderStatus.UNFULFILLED + try: + coupon = Coupon.objects.get( + code=self.request.session.get('coupon_code') + ) + except ObjectDoesNotExist: + coupon = None + + if coupon: + form.instance.coupon = coupon + coupon.users.add(form.instance.customer) order.save() transaction = Transaction.objects.get(order=order) transaction.paypal_id = data['purchase_units'][0]['payments']['captures'][0]['id'] transaction.status = data['status'] transaction.save() + cart.clear() logger.debug(f'\nPayPal Response data: {data}\n') return JsonResponse(data)