예제 #1
0
파일: tests.py 프로젝트: dgladkov/satchless
    def test_cartprices(self):
        macaw_price = ProductPrice.objects.create(product=self.macaw,
                price=Decimal('10.0'), qty_mode='product')
        macaw_price.qty_overrides.create(min_qty=9, price=Decimal('9.0'))
        macaw_price.offsets.create(variant=self.macaw_blue_a, price_offset=Decimal('2.0'))
        cart = Cart.objects.create(typ='test')
        cart.set_quantity(self.macaw_blue_a, 4)
        cart.set_quantity(self.macaw_blue_d, 4)
        item_macaw_blue_a = cart.items.get(variant=self.macaw_blue_a)
        item_macaw_blue_d = cart.items.get(variant=self.macaw_blue_d)
        self.assertEqual(get_cartitem_unit_price(item_macaw_blue_a, currency='BTC'), Price(Decimal('12.0'), currency='BTC'))
        self.assertEqual(get_cartitem_unit_price(item_macaw_blue_d, currency='BTC'), Price(Decimal('10.0'), currency='BTC'))
        cart.add_quantity(self.macaw_blue_a, 1)
        cart.add_quantity(self.macaw_blue_d, 1)
        item_macaw_blue_a = cart.items.get(variant=self.macaw_blue_a)
        item_macaw_blue_d = cart.items.get(variant=self.macaw_blue_d)

        # cartitem
        self.assertEqual(get_cartitem_unit_price(item_macaw_blue_a, currency='BTC'), Price(Decimal('11.0'), currency='BTC'))
        # contextless product
        self.assertEqual(get_variant_price(self.macaw_blue_a, currency='BTC'), Price(Decimal('12.0'), currency='BTC'))
        # product in cart context
        self.assertEqual(get_variant_price(self.macaw_blue_a, currency='BTC', cart=cart), Price(Decimal('11.0'), currency='BTC'))

        # cartitem
        self.assertEqual(get_cartitem_unit_price(item_macaw_blue_d, currency='BTC'), Price(Decimal('9.0'), currency='BTC'))
        # contextless product
        self.assertEqual(get_variant_price(self.macaw_blue_d, currency='BTC'), Price(Decimal('10.0'), currency='BTC'))
        # product in cart context
        self.assertEqual(get_variant_price(self.macaw_blue_d, currency='BTC', cart=cart), Price(Decimal('9.0'), currency='BTC'))
예제 #2
0
파일: tests.py 프로젝트: dgladkov/satchless
 def test_default(self):
     self.vat23.default = True
     self.vat23.save()
     # these have 8% VAT
     self.assertEqual(handler.get_variant_price(self.macaw_blue_d, currency='PLN'),
                      Price(10, Decimal('10.80'), currency='PLN'))
     self.assertEqual(handler.get_variant_price(self.macaw_blue_a, currency='PLN'),
                      Price(12, Decimal('12.96'), currency='PLN'))
     # while these have default 23% VAT
     self.assertEqual(handler.get_variant_price(self.cockatoo_white_a, currency='PLN'),
                      Price(20, Decimal('24.60'), currency='PLN'))
     self.assertEqual(handler.get_variant_price(self.cockatoo_green_a, currency='PLN'),
                      Price(25, Decimal('30.75'), currency='PLN'))
     # same in cart
     cart = Cart.objects.create(typ='test')
     cart.set_quantity(self.macaw_blue_a, 3)
     cart.set_quantity(self.macaw_blue_d, 5)
     item_macaw_blue_a = cart.items.get(variant=self.macaw_blue_a)
     item_macaw_blue_d = cart.items.get(variant=self.macaw_blue_d)
     self.assertEqual(
             handler.get_cartitem_unit_price(item_macaw_blue_a, currency='PLN'),
             Price(12, Decimal('12.96'), currency='PLN'))
     self.assertEqual(
             handler.get_cartitem_unit_price(item_macaw_blue_d, currency='PLN'),
             Price(10, Decimal('10.80'), currency='PLN'))
     cart.set_quantity(self.cockatoo_white_a, 3)
     cart.set_quantity(self.cockatoo_green_a, 5)
     item_cockatoo_white_a = cart.items.get(variant=self.cockatoo_white_a)
     item_cockatoo_green_a = cart.items.get(variant=self.cockatoo_green_a)
     self.assertEqual(
             handler.get_cartitem_unit_price(item_cockatoo_white_a, currency='PLN'),
             Price(20, Decimal('24.60'), currency='PLN'))
     self.assertEqual(
             handler.get_cartitem_unit_price(item_cockatoo_green_a, currency='PLN'),
             Price(25, Decimal('30.75'), currency='PLN'))
예제 #3
0
파일: tests.py 프로젝트: dgladkov/satchless
 def test_nodefault(self):
     # these have 8% VAT
     self.assertEqual(handler.get_variant_price(self.macaw_blue_d, currency='PLN'),
                      Price(10, Decimal('10.80'), currency='PLN'))
     self.assertEqual(handler.get_variant_price(self.macaw_blue_a, currency='PLN'),
                      Price(12, Decimal('12.96'), currency='PLN'))
     # while these have no tax group, hence the tax is zero
     self.assertEqual(handler.get_variant_price(self.cockatoo_white_a, currency='PLN'),
                      Price(20, 20, currency='PLN'))
     self.assertEqual(handler.get_variant_price(self.cockatoo_green_a, currency='PLN'),
                      Price(25, 25, currency='PLN'))
     # same in cart
     cart = Cart.objects.create(typ='test')
     cart.set_quantity(self.macaw_blue_a, 3)
     cart.set_quantity(self.macaw_blue_d, 5)
     item_macaw_blue_a = cart.items.get(variant=self.macaw_blue_a)
     item_macaw_blue_d = cart.items.get(variant=self.macaw_blue_d)
     self.assertEqual(
             handler.get_cartitem_unit_price(item_macaw_blue_a, currency='PLN'),
             Price(12, Decimal('12.96'), currency='PLN'))
     self.assertEqual(
             handler.get_cartitem_unit_price(item_macaw_blue_d, currency='PLN'),
             Price(10, Decimal('10.80'), currency='PLN'))
     cart.set_quantity(self.cockatoo_white_a, 3)
     cart.set_quantity(self.cockatoo_green_a, 5)
     item_cockatoo_white_a = cart.items.get(variant=self.cockatoo_white_a)
     item_cockatoo_green_a = cart.items.get(variant=self.cockatoo_green_a)
     self.assertEqual(
             handler.get_cartitem_unit_price(item_cockatoo_white_a, currency='PLN'),
             Price(20, 20, currency='PLN'))
     self.assertEqual(
             handler.get_cartitem_unit_price(item_cockatoo_green_a, currency='PLN'),
             Price(25, 25, currency='PLN'))
예제 #4
0
파일: tests.py 프로젝트: joymax/satchless
 def test_cart_item_discounts(self):
     # same in cart
     cart = Cart.objects.create(typ="test")
     cart.set_quantity(self.macaw_blue_a, 1)
     item_macaw_blue_a = cart.items.get(variant=self.macaw_blue_a)
     self.assertEqual(
         handler.get_cartitem_unit_price(item_macaw_blue_a, currency="BTW"), Price(7, Decimal("7.0"), currency="BTW")
     )
     cart.set_quantity(self.cockatoo_white_a, 1)
     item_cockatoo_white_a = cart.items.get(variant=self.cockatoo_white_a)
     self.assertEqual(
         handler.get_cartitem_unit_price(item_cockatoo_white_a, currency="BTW"), Price(20, 20, currency="BTW")
     )
예제 #5
0
 def test_cart_item_discounts(self):
     # same in cart
     cart = Cart.objects.create(typ='test')
     cart.set_quantity(self.macaw_blue_a, 1)
     item_macaw_blue_a = cart.items.get(variant=self.macaw_blue_a)
     self.assertEqual(
         handler.get_cartitem_unit_price(item_macaw_blue_a, currency='BTW'),
         Price(7, Decimal('7.0'), currency='BTW'))
     cart.set_quantity(self.cockatoo_white_a, 1)
     item_cockatoo_white_a = cart.items.get(variant=self.cockatoo_white_a)
     self.assertEqual(
         handler.get_cartitem_unit_price(item_cockatoo_white_a,
                                         currency='BTW'),
         Price(20, 20, currency='BTW'))
예제 #6
0
    def test_cartprices(self):
        macaw_price = ProductPrice.objects.create(product=self.macaw,
                                                  price=Decimal('10.0'),
                                                  qty_mode='product')
        macaw_price.qty_overrides.create(min_qty=9, price=Decimal('9.0'))
        macaw_price.offsets.create(variant=self.macaw_blue_a,
                                   price_offset=Decimal('2.0'))
        cart = Cart.objects.create(typ='test')
        cart.set_quantity(self.macaw_blue_a, 4)
        cart.set_quantity(self.macaw_blue_d, 4)
        item_macaw_blue_a = cart.items.get(variant=self.macaw_blue_a)
        item_macaw_blue_d = cart.items.get(variant=self.macaw_blue_d)
        self.assertEqual(
            get_cartitem_unit_price(item_macaw_blue_a, currency='BTC'),
            Price(Decimal('12.0'), currency='BTC'))
        self.assertEqual(
            get_cartitem_unit_price(item_macaw_blue_d, currency='BTC'),
            Price(Decimal('10.0'), currency='BTC'))
        cart.add_quantity(self.macaw_blue_a, 1)
        cart.add_quantity(self.macaw_blue_d, 1)
        item_macaw_blue_a = cart.items.get(variant=self.macaw_blue_a)
        item_macaw_blue_d = cart.items.get(variant=self.macaw_blue_d)

        # cartitem
        self.assertEqual(
            get_cartitem_unit_price(item_macaw_blue_a, currency='BTC'),
            Price(Decimal('11.0'), currency='BTC'))
        # contextless product
        self.assertEqual(get_variant_price(self.macaw_blue_a, currency='BTC'),
                         Price(Decimal('12.0'), currency='BTC'))
        # product in cart context
        self.assertEqual(
            get_variant_price(self.macaw_blue_a, currency='BTC', cart=cart),
            Price(Decimal('11.0'), currency='BTC'))

        # cartitem
        self.assertEqual(
            get_cartitem_unit_price(item_macaw_blue_d, currency='BTC'),
            Price(Decimal('9.0'), currency='BTC'))
        # contextless product
        self.assertEqual(get_variant_price(self.macaw_blue_d, currency='BTC'),
                         Price(Decimal('10.0'), currency='BTC'))
        # product in cart context
        self.assertEqual(
            get_variant_price(self.macaw_blue_d, currency='BTC', cart=cart),
            Price(Decimal('9.0'), currency='BTC'))
예제 #7
0
def cartitem_unit_price(cartitem, currency=None):
    try:
        from satchless.pricing.handler import get_cartitem_unit_price
        price = get_cartitem_unit_price(
            cartitem, currency if currency else cartitem.cart.currency)
        if price.has_value():
            return price
    except ImportError:
        pass
    return ''
예제 #8
0
def cartitem_price(cartitem, currency=None):
    try:
        from satchless.pricing.handler import get_cartitem_unit_price
        price = get_cartitem_unit_price(
            cartitem, currency if currency else cartitem.cart.currency)
        if price.has_value():
            return price * cartitem.quantity
    except (ImportError, NotImplementedError):
        pass
    return ''
예제 #9
0
def cartitem_unit_price(cartitem, currency=None):
    try:
        from satchless.pricing.handler import get_cartitem_unit_price

        price = get_cartitem_unit_price(cartitem, currency if currency else cartitem.cart.currency)
        if price.has_value():
            return price
    except ImportError:
        pass
    return ""
예제 #10
0
def cartitem_price(cartitem, currency=None):
    try:
        from satchless.pricing.handler import get_cartitem_unit_price

        price = get_cartitem_unit_price(cartitem, currency if currency else cartitem.cart.currency)
        if price.has_value():
            return price * cartitem.quantity
    except (ImportError, NotImplementedError):
        pass
    return ""
예제 #11
0
 def test_default(self):
     self.vat23.default = True
     self.vat23.save()
     # these have 8% VAT
     self.assertEqual(
         handler.get_variant_price(self.macaw_blue_d, currency='PLN'),
         Price(10, Decimal('10.80'), currency='PLN'))
     self.assertEqual(
         handler.get_variant_price(self.macaw_blue_a, currency='PLN'),
         Price(12, Decimal('12.96'), currency='PLN'))
     # while these have default 23% VAT
     self.assertEqual(
         handler.get_variant_price(self.cockatoo_white_a, currency='PLN'),
         Price(20, Decimal('24.60'), currency='PLN'))
     self.assertEqual(
         handler.get_variant_price(self.cockatoo_green_a, currency='PLN'),
         Price(25, Decimal('30.75'), currency='PLN'))
     # same in cart
     cart = Cart.objects.create(typ='test')
     cart.set_quantity(self.macaw_blue_a, 3)
     cart.set_quantity(self.macaw_blue_d, 5)
     item_macaw_blue_a = cart.items.get(variant=self.macaw_blue_a)
     item_macaw_blue_d = cart.items.get(variant=self.macaw_blue_d)
     self.assertEqual(
         handler.get_cartitem_unit_price(item_macaw_blue_a, currency='PLN'),
         Price(12, Decimal('12.96'), currency='PLN'))
     self.assertEqual(
         handler.get_cartitem_unit_price(item_macaw_blue_d, currency='PLN'),
         Price(10, Decimal('10.80'), currency='PLN'))
     cart.set_quantity(self.cockatoo_white_a, 3)
     cart.set_quantity(self.cockatoo_green_a, 5)
     item_cockatoo_white_a = cart.items.get(variant=self.cockatoo_white_a)
     item_cockatoo_green_a = cart.items.get(variant=self.cockatoo_green_a)
     self.assertEqual(
         handler.get_cartitem_unit_price(item_cockatoo_white_a,
                                         currency='PLN'),
         Price(20, Decimal('24.60'), currency='PLN'))
     self.assertEqual(
         handler.get_cartitem_unit_price(item_cockatoo_green_a,
                                         currency='PLN'),
         Price(25, Decimal('30.75'), currency='PLN'))
예제 #12
0
 def test_nodefault(self):
     # these have 8% VAT
     self.assertEqual(
         handler.get_variant_price(self.macaw_blue_d, currency='PLN'),
         Price(10, Decimal('10.80'), currency='PLN'))
     self.assertEqual(
         handler.get_variant_price(self.macaw_blue_a, currency='PLN'),
         Price(12, Decimal('12.96'), currency='PLN'))
     # while these have no tax group, hence the tax is zero
     self.assertEqual(
         handler.get_variant_price(self.cockatoo_white_a, currency='PLN'),
         Price(20, 20, currency='PLN'))
     self.assertEqual(
         handler.get_variant_price(self.cockatoo_green_a, currency='PLN'),
         Price(25, 25, currency='PLN'))
     # same in cart
     cart = Cart.objects.create(typ='test')
     cart.set_quantity(self.macaw_blue_a, 3)
     cart.set_quantity(self.macaw_blue_d, 5)
     item_macaw_blue_a = cart.items.get(variant=self.macaw_blue_a)
     item_macaw_blue_d = cart.items.get(variant=self.macaw_blue_d)
     self.assertEqual(
         handler.get_cartitem_unit_price(item_macaw_blue_a, currency='PLN'),
         Price(12, Decimal('12.96'), currency='PLN'))
     self.assertEqual(
         handler.get_cartitem_unit_price(item_macaw_blue_d, currency='PLN'),
         Price(10, Decimal('10.80'), currency='PLN'))
     cart.set_quantity(self.cockatoo_white_a, 3)
     cart.set_quantity(self.cockatoo_green_a, 5)
     item_cockatoo_white_a = cart.items.get(variant=self.cockatoo_white_a)
     item_cockatoo_green_a = cart.items.get(variant=self.cockatoo_green_a)
     self.assertEqual(
         handler.get_cartitem_unit_price(item_cockatoo_white_a,
                                         currency='PLN'),
         Price(20, 20, currency='PLN'))
     self.assertEqual(
         handler.get_cartitem_unit_price(item_cockatoo_green_a,
                                         currency='PLN'),
         Price(25, 25, currency='PLN'))