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'))
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'))
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'))
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") )
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'))
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'))
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 ''
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 ''
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 ""
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 ""
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'))
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'))