Exemplo n.º 1
0
def test_customertaxgroup():
    activate("en")
    person_group = CustomerTaxGroup.get_default_person_group()
    assert CustomerTaxGroup.objects.count() == 1
    assert person_group.identifier == "default_person_customers"
    assert person_group.name == "Retail Customers"

    company_group = CustomerTaxGroup.get_default_company_group()
    assert CustomerTaxGroup.objects.count() == 2
    assert company_group.identifier == "default_company_customers"
    assert company_group.name == "Company Customers"
Exemplo n.º 2
0
def test_customertaxgroup():
    activate("en")
    person_group = CustomerTaxGroup.get_default_person_group()
    assert CustomerTaxGroup.objects.count() == 1
    assert person_group.identifier == "default_person_customers"
    assert person_group.name == "Retail Customers"

    company_group = CustomerTaxGroup.get_default_company_group()
    assert CustomerTaxGroup.objects.count() == 2
    assert company_group.identifier == "default_company_customers"
    assert company_group.name == "Company Customers"
Exemplo n.º 3
0
def test_rules_with_anonymous():
    """
    Test the DefaultTaxModule with anonymous customer.
    """

    tax_class = TaxClass.objects.create(name="test")

    # Create a product
    shop = get_shop(prices_include_tax=False, currency='USD')
    product = create_product('PROD', shop=shop, default_price=1000)
    product.tax_class = tax_class
    product.save()
    price = product.get_shop_instance(shop).default_price

    # create taxes
    # When customer is company, it should pay additional taxes
    tax_for_anyone = Tax.objects.create(code="any",
                                        rate=0.1,
                                        name="Tax for any customer")
    tax_for_companies = Tax.objects.create(code="companies",
                                           rate=0.3,
                                           name="Additional tax for companies")

    # create tax group for companies
    companies_tax_group = CustomerTaxGroup.get_default_company_group()

    # create the tax rule as follows:
    # - 10% for any kind of customer, no matter what
    # - 30% only for companies
    any_tax_rule = TaxRule.objects.create(tax=tax_for_anyone)
    any_tax_rule.tax_classes.add(tax_class)

    company_tax_rule = TaxRule.objects.create(tax=tax_for_companies)
    company_tax_rule.tax_classes.add(tax_class)
    company_tax_rule.customer_tax_groups.add(companies_tax_group)

    with override_settings(SHUUP_TAX_MODULE='default_tax'):
        module = get_tax_module()
        assert isinstance(module, DefaultTaxModule)

        # 1) check the tax for anonymous
        anonymous_context = TaxingContext()
        taxed_price = module.get_taxed_price_for(anonymous_context, product,
                                                 price)
        expected_anonymous_codes = set(["any"])
        assert set(x.tax.code
                   for x in taxed_price.taxes) == expected_anonymous_codes

        # 2) check the tax for comanies
        company_context = TaxingContext(customer_tax_group=companies_tax_group)
        taxed_price = module.get_taxed_price_for(company_context, product,
                                                 price)
        expected_companies_codes = set(["any", "companies"])
        assert set(x.tax.code
                   for x in taxed_price.taxes) == expected_companies_codes

    # Clean-up the rules
    TaxRule.objects.all().delete()
Exemplo n.º 4
0
def test_rules_with_anonymous():
    """
    Test the DefaultTaxModule with anonymous customer.
    """

    tax_class = TaxClass.objects.create(name="test")

    # Create a product
    shop = get_shop(prices_include_tax=False, currency='USD')
    product = create_product('PROD', shop=shop, default_price=1000)
    product.tax_class = tax_class
    product.save()
    price = product.get_shop_instance(shop).default_price

    # create taxes
    # When customer is company, it should pay additional taxes
    tax_for_anyone = Tax.objects.create(code="any", rate=0.1, name="Tax for any customer")
    tax_for_companies = Tax.objects.create(code="companies", rate=0.3, name="Additional tax for companies")

    # create tax group for companies
    companies_tax_group = CustomerTaxGroup.get_default_company_group()

    # create the tax rule as follows:
    # - 10% for any kind of customer, no matter what
    # - 30% only for companies
    any_tax_rule = TaxRule.objects.create(tax=tax_for_anyone)
    any_tax_rule.tax_classes.add(tax_class)

    company_tax_rule = TaxRule.objects.create(tax=tax_for_companies)
    company_tax_rule.tax_classes.add(tax_class)
    company_tax_rule.customer_tax_groups.add(companies_tax_group)

    with override_settings(SHUUP_TAX_MODULE='default_tax'):
        module = get_tax_module()
        assert isinstance(module, DefaultTaxModule)

        # 1) check the tax for anonymous
        anonymous_context = TaxingContext()
        taxed_price = module.get_taxed_price_for(anonymous_context, product, price)
        expected_anonymous_codes = set(["any"])
        assert set(x.tax.code for x in taxed_price.taxes) == expected_anonymous_codes

        # 2) check the tax for comanies
        company_context = TaxingContext(customer_tax_group=companies_tax_group)
        taxed_price = module.get_taxed_price_for(company_context, product, price)
        expected_companies_codes = set(["any", "companies"])
        assert set(x.tax.code for x in taxed_price.taxes) == expected_companies_codes

    # Clean-up the rules
    TaxRule.objects.all().delete()
Exemplo n.º 5
0
def test_default_groups(contact_cls, create_contact):
    new_contact = create_contact()
    assert new_contact.groups.count() == 1
    default_group = new_contact.groups.first()
    assert type(CustomerTaxGroup.get_default_company_group().__str__()) == str
    assert default_group == new_contact.get_default_group()
    assert default_group.identifier == contact_cls.default_contact_group_identifier

    some_other_contact = create_contact()
    assert some_other_contact.groups.count() == 1

    if contact_cls != AnonymousContact:
        some_other_contact.groups.clear()
        some_other_contact.save()
        assert some_other_contact.groups.count() == 0  # Default group is only added while saving new contact
Exemplo n.º 6
0
def test_default_groups(contact_cls, create_contact):
    new_contact = create_contact()
    assert new_contact.groups.count() == 1
    default_group = new_contact.groups.first()
    assert type(CustomerTaxGroup.get_default_company_group().__str__()) == str
    assert default_group == new_contact.get_default_group()
    assert default_group.identifier == contact_cls.default_contact_group_identifier

    some_other_contact = create_contact()
    assert some_other_contact.groups.count() == 1

    if contact_cls != AnonymousContact:
        some_other_contact.groups.clear()
        some_other_contact.save()
        assert some_other_contact.groups.count() == 0  # Default group is only added while saving new contact
Exemplo n.º 7
0
def test_customer_tax_group3(rf, admin_user):
    # SHUUP-1882
    assert type(CustomerTaxGroup.get_default_company_group().__str__()) == str
Exemplo n.º 8
0
def test_customer_tax_group3(rf, admin_user):
    # SHUUP-1882
    assert type(CustomerTaxGroup.get_default_company_group().__str__()) == str