示例#1
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_d, currency='BTC'),
            Price(Decimal('10.0'), currency='BTC'))
        self.assertEqual(
            get_cartitem_unit_price(item_macaw_blue_a, currency='BTC'),
            Price(Decimal('12.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)

        self.assertEqual(
            get_variant_price(item_macaw_blue_a.variant.get_subtype_instance(),
                              currency='BTC',
                              cart=cart), Price(Decimal('11.0'),
                                                currency='BTC'))
        # contextless product
        self.assertEqual(
            get_variant_price(item_macaw_blue_a.variant.get_subtype_instance(),
                              currency='BTC'),
            Price(Decimal('12.0'), currency='BTC'))
示例#2
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'))
示例#3
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"),
     )
     pr = handler.get_product_price_range(self.cockatoo, currency="PLN")
     self.assertEqual(
         pr,
         PriceRange(
             min_price=Price(20, Decimal("24.60"), currency="PLN"),
             max_price=Price(25, Decimal("30.75"), currency="PLN"),
         ),
     )
示例#4
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'))
示例#5
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'))
示例#6
0
 def test_product_discount(self):
     # these have 30% discount
     self.assertEqual(handler.get_variant_price(self.macaw_blue_a, currency='BTW'),
                      Price(7, Decimal('7.0'), currency='BTW'))
     # while these have no tax group, hence the discount is zero
     self.assertEqual(handler.get_variant_price(self.cockatoo_white_a, currency='BTW'),
                      Price(20, 20, currency='BTW'))
示例#7
0
文件: tests.py 项目: louisr/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'))
示例#8
0
文件: tests.py 项目: louisr/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'))
示例#9
0
 def test_undiscounted_price(self):
     price = handler.get_variant_price(None, u'PLN', quantity=1,
                                       discount=False)
     self.assertEqual(price,
                      Price(net=5,
                            gross=5*decimal.Decimal('1.9'),
                            currency=u'PLN'))
示例#10
0
 def test_undiscounted_price(self):
     price = handler.get_variant_price(None,
                                       u'PLN',
                                       quantity=1,
                                       discount=False)
     self.assertEqual(
         price,
         Price(net=5, gross=5 * decimal.Decimal('1.9'), currency=u'PLN'))
示例#11
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")
     )
     pr = handler.get_product_price_range(self.cockatoo, currency="PLN")
     self.assertEqual(
         pr, PriceRange(min_price=Price(20, 20, currency="PLN"), max_price=Price(25, 25, currency="PLN"))
     )
示例#12
0
def get_cartitem_unit_price(cartitem, currency=None, **kwargs):
    from satchless.pricing import handler
    variant = cartitem.variant.get_subtype_instance()
    currency = currency if currency else cartitem.cart.currency
    return handler.get_variant_price(variant,
                                     currency,
                                     quantity=cartitem.quantity,
                                     cart=cartitem.cart,
                                     cartitem=cartitem,
                                     **kwargs)
示例#13
0
def variant_price(variant, currency=getattr(settings, 'SATCHLESS_DEFAULT_CURRENCY', None)):
    if not currency:
        return ''
    try:
        from satchless.pricing.handler import get_variant_price
        price = get_variant_price(variant, currency)
        if price is not None and price.has_value():
            return price
    except ImportError:
        pass
    return ''
示例#14
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'))
示例#15
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'))
示例#16
0
 def get_price(self, product, currency, **kwargs):
     from satchless.pricing.handler import get_variant_price
     return get_variant_price(product, currency, **kwargs)
示例#17
0
 def get_price(self, product, currency, **kwargs):
     from satchless.pricing.handler import get_variant_price
     return get_variant_price(product, currency, **kwargs)
示例#18
0
 def test_basicprices(self):
     macaw_price = ProductPrice.objects.create(product=self.macaw, price=Decimal('10.0'))
     macaw_price.qty_overrides.create(min_qty=5, price=Decimal('9.0'))
     macaw_price.qty_overrides.create(min_qty=10, price=Decimal('8.0'))
     macaw_price.offsets.create(variant=self.macaw_blue_a, price_offset=Decimal('2.0'))
     self.assertEqual(get_variant_price(self.macaw_blue_d, currency='BTC', quantity=1), Price(Decimal('10.0'), currency='BTC'))
     self.assertEqual(get_variant_price(self.macaw_blue_d, currency='BTC', quantity=Decimal('4.9999')), Price(Decimal('10.0'), currency='BTC'))
     self.assertEqual(get_variant_price(self.macaw_blue_d, currency='BTC', quantity=5), Price(Decimal('9.0'), currency='BTC'))
     self.assertEqual(get_variant_price(self.macaw_blue_d, currency='BTC', quantity=Decimal('9.9999')), Price(Decimal('9.0'), currency='BTC'))
     self.assertEqual(get_variant_price(self.macaw_blue_d, currency='BTC', quantity=10), Price(Decimal('8.0'), currency='BTC'))
     self.assertEqual(get_variant_price(self.macaw_blue_d, currency='BTC', quantity=100), Price(Decimal('8.0'), currency='BTC'))
     self.assertEqual(get_variant_price(self.macaw_blue_a, currency='BTC', quantity=1), Price(Decimal('12.0'), currency='BTC'))
     self.assertEqual(get_variant_price(self.macaw_blue_a, currency='BTC', quantity=Decimal('4.9999')), Price(Decimal('12.0'), currency='BTC'))
     self.assertEqual(get_variant_price(self.macaw_blue_a, currency='BTC', quantity=5), Price(Decimal('11.0'), currency='BTC'))
     self.assertEqual(get_variant_price(self.macaw_blue_a, currency='BTC', quantity=Decimal('9.9999')), Price(Decimal('11.0'), currency='BTC'))
     self.assertEqual(get_variant_price(self.macaw_blue_a, currency='BTC', quantity=10), Price(Decimal('10.0'), currency='BTC'))
     self.assertEqual(get_variant_price(self.macaw_blue_a, currency='BTC', quantity=100), Price(Decimal('10.0'), currency='BTC'))
示例#19
0
 def test_basicprices(self):
     macaw_price = ProductPrice.objects.create(product=self.macaw,
                                               price=Decimal('10.0'))
     macaw_price.qty_overrides.create(min_qty=5, price=Decimal('9.0'))
     macaw_price.qty_overrides.create(min_qty=10, price=Decimal('8.0'))
     macaw_price.offsets.create(variant=self.macaw_blue_a,
                                price_offset=Decimal('2.0'))
     self.assertEqual(
         get_variant_price(self.macaw_blue_d, currency='BTC', quantity=1),
         Price(Decimal('10.0'), currency='BTC'))
     self.assertEqual(
         get_variant_price(self.macaw_blue_d,
                           currency='BTC',
                           quantity=Decimal('4.9999')),
         Price(Decimal('10.0'), currency='BTC'))
     self.assertEqual(
         get_variant_price(self.macaw_blue_d, currency='BTC', quantity=5),
         Price(Decimal('9.0'), currency='BTC'))
     self.assertEqual(
         get_variant_price(self.macaw_blue_d,
                           currency='BTC',
                           quantity=Decimal('9.9999')),
         Price(Decimal('9.0'), currency='BTC'))
     self.assertEqual(
         get_variant_price(self.macaw_blue_d, currency='BTC', quantity=10),
         Price(Decimal('8.0'), currency='BTC'))
     self.assertEqual(
         get_variant_price(self.macaw_blue_d, currency='BTC', quantity=100),
         Price(Decimal('8.0'), currency='BTC'))
     self.assertEqual(
         get_variant_price(self.macaw_blue_a, currency='BTC', quantity=1),
         Price(Decimal('12.0'), currency='BTC'))
     self.assertEqual(
         get_variant_price(self.macaw_blue_a,
                           currency='BTC',
                           quantity=Decimal('4.9999')),
         Price(Decimal('12.0'), currency='BTC'))
     self.assertEqual(
         get_variant_price(self.macaw_blue_a, currency='BTC', quantity=5),
         Price(Decimal('11.0'), currency='BTC'))
     self.assertEqual(
         get_variant_price(self.macaw_blue_a,
                           currency='BTC',
                           quantity=Decimal('9.9999')),
         Price(Decimal('11.0'), currency='BTC'))
     self.assertEqual(
         get_variant_price(self.macaw_blue_a, currency='BTC', quantity=10),
         Price(Decimal('10.0'), currency='BTC'))
     self.assertEqual(
         get_variant_price(self.macaw_blue_a, currency='BTC', quantity=100),
         Price(Decimal('10.0'), currency='BTC'))
示例#20
0
def get_cartitem_unit_price(cartitem, currency=None, **kwargs):
    from satchless.pricing import handler
    variant = cartitem.variant.get_subtype_instance()
    currency = currency if currency else cartitem.cart.currency
    return handler.get_variant_price(variant, currency, quantity=cartitem.quantity,
                             cart=cartitem.cart, cartitem=cartitem, **kwargs)