예제 #1
0
    def test_zero_charge_with_shipping_discount(self):
        offer = factories.create_offer(benefit=Benefit.objects.create(
            type=Benefit.SHIPPING_FIXED_PRICE, value=1), )
        basket = factories.create_basket()
        Applicator().apply_offers(basket, [offer])

        # Similar to test_zero_charge_discount(),
        # but now test how the repository deals with it.
        method = Repository().apply_shipping_offer(basket, self.standard,
                                                   offer)
        self.assertEqual(D('0.00'), method.discount(basket))
예제 #2
0
    def get_redirect_url(self, ):
        try:
            basket = Basket.objects.get(
                pk=self.checkout_session.get_submitted_basket_id())
        except Basket.DoesNotExist:
            print("basket problem")
            return reverse_lazy('checkout:preview')

        shipping_address = self.get_shipping_address(basket)
        billing_address = self.get_billing_address(
            shipping_address=shipping_address)
        basket.strategy = Selector().strategy(self.request)
        Applicator().apply(basket, self.request.user, request=self.request)
        order_number = self.checkout_session.get_order_number()
        shipping_address = self.get_shipping_address(basket)
        shipping_method = self.get_shipping_method(basket, shipping_address)
        shipping_charge = shipping_method.calculate(basket)
        billing_address = self.get_billing_address(shipping_address)
        order_total = self.get_order_totals(basket,
                                            shipping_charge=shipping_charge)
        order_kwargs = {}

        # make sure payment was actually paid
        try:
            data_query = \
                Payment.objects.get(factor_number=order_number, status=1, amount=float(order_total.incl_tax))
        except Payment.DoesNotExist:
            print("query problem")
            # if payment was not going in correct way it will return to checkoutperview
            data_query = None
            self.restore_frozen_basket()
            return reverse_lazy('checkout:preview')
        user = self.request.user
        if not user.is_authenticated:
            order_kwargs[
                'guest_email'] = self.checkout_session.get_guest_email()

        self.handle_order_placement(order_number, user, basket,
                                    shipping_address, shipping_method,
                                    shipping_charge, billing_address,
                                    order_total, **order_kwargs)
        # source_type, is_created = models.SourceType.objects.get_or_create(
        #     name='AsanPardakht')
        # source = source_type.sources.model(
        #     source_type=source_type,
        #     amount_allocated=19500,
        # )
        # self.add_payment_source(source)
        # self.add_payment_event('AsanPardakht', 19500)

        return reverse_lazy('checkout:thank-you')
예제 #3
0
 def test_consumed_by_application(self, filled_basket, single_offer):
     basket = filled_basket
     Applicator().apply(basket)
     assert len(basket.offer_applications.offer_discounts) == 1
     assert [x.consumer.consumed() for x in basket.all_lines()] == [1, 0]
예제 #4
0
 def add_product(self):
     self.basket.add_product(self.product)
     self.basket.strategy = Selector().strategy()
     Applicator().apply(self.basket)
    def add_product(self):
        self.basket.add_product(self.product)
        self.basket.strategy = Selector().strategy()
        Applicator().apply(self.basket)

        self.assertBasketUpsellMessagesAreNotNone()