Пример #1
0
def test_tax_special_cases1():
    all_tax_line1 = Line(base_unit_price=TaxfulPrice(25, 'EUR'),
                         quantity=5,
                         discount_amount=TaxfulPrice(25, 'EUR'),
                         tax_amount=Money(100, 'EUR'))
    assert all_tax_line1.taxful_price == TaxfulPrice(100, 'EUR')
    assert all_tax_line1.taxless_price == TaxlessPrice(0, 'EUR')
    assert all_tax_line1.taxful_discount_amount == TaxfulPrice(25, 'EUR')
    assert all_tax_line1.taxless_discount_amount == TaxlessPrice(0, 'EUR')
    assert all_tax_line1.tax_rate == 0
    assert all_tax_line1.taxful_base_unit_price == TaxfulPrice(25, 'EUR')
    assert all_tax_line1.taxless_base_unit_price == TaxlessPrice(0, 'EUR')
Пример #2
0
 def form_valid(self, form):
     order = self.object
     amount = Money(form.cleaned_data["amount"], order.currency)
     if amount.value == 0:
         messages.error(self.request, _("Payment amount cannot be 0"))
         return self.form_invalid(form)
     try:
         payment = order.create_payment(amount, description="Manual payment")
         messages.success(self.request, _("Payment %s created.") % payment.payment_identifier)
     except NoPaymentToCreateException:
         messages.error(self.request, _("Order has already been paid"))
         return self.form_invalid(form)
     else:
         return HttpResponseRedirect(get_model_url(order))
Пример #3
0
def test_convert_taxness_taxful_to_taxless():
    request = get_request()
    tax_class = TaxClass()
    item = Product(tax_class=tax_class)
    priceful = _get_price_info(TaxfulPrice)
    calcs_done_before = DummyTaxModule.calculations_done
    result = convert_taxness(request, item, priceful, with_taxes=False)
    calcs_done_after = DummyTaxModule.calculations_done
    assert result != priceful
    assert (result.price - TaxlessPrice(400, 'USD')).value < 0.00001
    assert result.base_price == TaxlessPrice(550, 'USD')
    assert result.quantity == 2
    assert result.tax_amount == Money(80, 'USD')
    assert result.taxless_price == result.price
    assert result.taxful_price == priceful.price
    assert calcs_done_after == calcs_done_before + 2
Пример #4
0
def test_money_init_from_value_with_currency():
    class Dollar(int):
        currency = 'USD'

    assert Money(Dollar(42)) == Money(42, 'USD')
Пример #5
0
def test_money_init_from_money():
    assert Money(Money(123, 'GBP')) == Money(123, 'GBP')
Пример #6
0
def test_money_without_currency():
    with pytest.raises(TypeError):
        Money(42)
Пример #7
0
def test_money_init_does_not_call_settings():
    def guarded_getattr(self, name):
        assert False, 'nobody should read settings yet'

    with patch.object(type(settings), '__getattr__', guarded_getattr):
        Money(42, 'EUR')
Пример #8
0
 def money_sum(iterable):
     return sum(iterable, Money(0, price.currency))
Пример #9
0
def test_money_default_currency():
    m = Money(42)
    assert m.currency == settings.SHOOP_HOME_CURRENCY
Пример #10
0
def usd(value):
    """
    Get Money with USD currency for given value.
    """
    return Money(value, "USD")
Пример #11
0
    base_unit_price = None
    quantity = None
    discount_amount = None
    tax_amount = None

    def __init__(self, base_unit_price, quantity, discount_amount, tax_amount):
        self.base_unit_price = base_unit_price
        self.quantity = quantity
        self.discount_amount = discount_amount
        self.tax_amount = tax_amount


line = Line(base_unit_price=TaxfulPrice(5, 'EUR'),
            quantity=9,
            discount_amount=TaxfulPrice(12, 'EUR'),
            tax_amount=Money(3, 'EUR'))
line2 = Line(base_unit_price=TaxfulPrice(10, 'EUR'),
             quantity=123,
             discount_amount=TaxfulPrice(0, 'EUR'),
             tax_amount=Money(123, 'EUR'))


def test_price():
    assert line.price == TaxfulPrice(33, 'EUR')  # 5 * 9 - 12


def test_discounted_unit_price():
    assert line.discounted_unit_price == TaxfulPrice(33, 'EUR') / 9


def test_discount_rate():
Пример #12
0
def money(value):
    return Money(value, 'USD')
Пример #13
0
def test_money_property_set_invalid_unit():
    w = get_wallet()
    with pytest.raises(UnitMixupError):
        w.amount = Money(3, 'USD')
Пример #14
0
def test_money_property_get():
    w = get_wallet()
    assert w.amount == Money(42, 'EUR')
Пример #15
0
 def get_total_unpaid_amount(self):
     difference = self.taxful_total_price.amount - self.get_total_paid_amount(
     )
     return max(difference, Money(0, self.currency))
Пример #16
0
def test_repr():
    assert repr(Money(42, 'EUR')) == "Money('42', 'EUR')"
    assert repr(Money('42.123', 'EUR')) == "Money('42.123', 'EUR')"
    assert repr(Money('42.0', 'EUR')) == "Money('42.0', 'EUR')"
    assert repr(Money('42.123', 'EUR')) == "Money('42.123', 'EUR')"
    assert repr(Money('42.123', 'USD')) == "Money('42.123', 'USD')"
Пример #17
0
def test_str():
    assert str(Money('42.25', 'EUR')) == '42.25 EUR'
    assert str(Money('100', 'USD')) == '100 USD'

    assert str(Money(42, 'EUR')) == '42 EUR'
    assert str(Money('12.345', 'EUR')) == '12.345 EUR'
Пример #18
0
 def tax_amount(self):
     """
     :rtype: shoop.utils.money.Money
     """
     zero = Money(0, self.order.currency)
     return sum((x.amount for x in self.taxes.all()), zero)
Пример #19
0
 def get_total_paid_amount(self):
     amounts = self.payments.values_list('amount_value', flat=True)
     return Money(sum(amounts, Decimal(0)), self.currency)
Пример #20
0
def test_format_money():
    assert format_money(Money("3.6", "EUR"), locale="fi") == "3,60\xa0\u20ac"
    assert format_money(Money("3.6", "EUR"), widen=2, locale="fi") == "3,6000\xa0\u20ac"
    assert format_money(Money("3.6", "EUR"), digits=0, locale="fi") == "4\xa0\u20ac"