Exemple #1
0
 def create_order(self):
     basket = self.request.basket
     assert isinstance(basket, BaseBasket)
     basket.shop = self.request.shop
     basket.orderer = self.request.person
     basket.customer = self.request.customer
     basket.status = OrderStatus.objects.get_default_initial()
     order_creator = get_basket_order_creator(request=self.request)
     order = order_creator.create_order(basket)
     basket.clear_all()
     return order
Exemple #2
0
 def create_order(self):
     basket = self.request.basket
     assert isinstance(basket, BaseBasket)
     basket.shop = self.request.shop
     basket.orderer = self.request.person
     basket.customer = self.request.customer
     basket.status = OrderStatus.objects.get_default_initial()
     order_creator = get_basket_order_creator(request=self.request)
     order = order_creator.create_order(basket)
     basket.finalize()
     return order
Exemple #3
0
    def form_valid(self, form):
        basket = self.request.basket
        assert isinstance(basket, BaseBasket)
        order_data = form["order"].cleaned_data.copy()
        if not order_data.pop("accept_terms", None):  # pragma: no cover
            raise ValidationError("Terms must be accepted")

        basket.shop = self.request.shop
        basket.orderer = self.request.person
        basket.customer = self.request.customer
        basket.shipping_address = form["shipping"].save(commit=False)
        basket.billing_address = form["billing"].save(commit=False)
        basket.shipping_method = order_data.pop("shipping_method")
        basket.payment_method = order_data.pop("payment_method")
        basket.status = OrderStatus.objects.get_default_initial()
        company_name = order_data.pop("company_name")
        tax_number = order_data.pop("tax_number")
        if company_name and tax_number:
            # Not using `get_or_create` here because duplicates are better than accidental information leakage
            basket.customer = CompanyContact.objects.create(
                name=company_name, tax_number=tax_number)
            for address in (basket.shipping_address, basket.billing_address):
                address.company_name = basket.customer.name
                address.tax_number = basket.customer.tax_number
        basket.marketing_permission = order_data.pop("marketing")
        basket.customer_comment = order_data.pop("comment")

        if order_data:  # pragma: no cover
            raise ValueError("`order_data` should be empty by now")

        order_creator = get_basket_order_creator(request=self.request)
        order = order_creator.create_order(basket)
        basket.finalize()
        self.checkout_process.complete()

        if order.require_verification:
            return redirect("shoop:order_requires_verification",
                            pk=order.pk,
                            key=order.key)
        else:
            return redirect("shoop:order_process_payment",
                            pk=order.pk,
                            key=order.key)
Exemple #4
0
    def form_valid(self, form):
        basket = self.request.basket
        assert isinstance(basket, BaseBasket)
        order_data = form["order"].cleaned_data.copy()
        if not order_data.pop("accept_terms", None):  # pragma: no cover
            raise ValidationError("Terms must be accepted")

        basket.shop = self.request.shop
        basket.orderer = self.request.person
        basket.customer = self.request.customer
        basket.shipping_address = form["shipping"].save(commit=False)
        basket.billing_address = form["billing"].save(commit=False)
        basket.shipping_method = order_data.pop("shipping_method")
        basket.payment_method = order_data.pop("payment_method")
        basket.status = OrderStatus.objects.get_default_initial()
        company_name = order_data.pop("company_name")
        tax_number = order_data.pop("tax_number")
        if company_name and tax_number:
            # Not using `get_or_create` here because duplicates are better than accidental information leakage
            basket.customer = CompanyContact.objects.create(name=company_name, tax_number=tax_number)
            for address in (basket.shipping_address, basket.billing_address):
                address.company_name = basket.customer.name
                address.tax_number = basket.customer.tax_number
        basket.marketing_permission = order_data.pop("marketing")
        basket.customer_comment = order_data.pop("comment")

        if order_data:  # pragma: no cover
            raise ValueError("`order_data` should be empty by now")

        order_creator = get_basket_order_creator()
        order = order_creator.create_order(basket)
        basket.finalize()
        self.checkout_process.complete()

        if order.require_verification:
            return redirect("shoop:order_requires_verification", pk=order.pk, key=order.key)
        else:
            return redirect("shoop:order_process_payment", pk=order.pk, key=order.key)