mirror of
https://github.com/pretix/pretix.git
synced 2026-05-05 15:14:04 +00:00
Add codification of tax rates (#4372)
* draft * . * Rebase migration * Update src/pretix/base/models/tax.py Co-authored-by: Mira <weller@rami.io> * Test, isort, flake, migration rebase * carry data & API * Fix failing tests * docs fixes * Improve validation * Tests * More fixes --------- Co-authored-by: Mira <weller@rami.io>
This commit is contained in:
@@ -192,13 +192,13 @@ def subevent2(event2, meta_prop):
|
||||
@pytest.fixture
|
||||
@scopes_disabled()
|
||||
def taxrule(event):
|
||||
return event.tax_rules.create(name="VAT", rate=19)
|
||||
return event.tax_rules.create(name="VAT", rate=19, code="S/standard")
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@scopes_disabled()
|
||||
def taxrule0(event):
|
||||
return event.tax_rules.create(name="VAT", rate=0)
|
||||
return event.tax_rules.create(name="VAT", rate=0, code="E")
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
||||
@@ -151,6 +151,7 @@ def test_giftcard_detail_expand(token_client, organizer, event, giftcard):
|
||||
"voucher_budget_use": None,
|
||||
"tax_rate": "0.00",
|
||||
"tax_value": "0.00",
|
||||
"tax_code": None,
|
||||
"secret": op.secret,
|
||||
"addon_to": None,
|
||||
"subevent": None,
|
||||
|
||||
@@ -239,6 +239,7 @@ TEST_INVOICE_RES = {
|
||||
"gross_value": "23.00",
|
||||
"tax_value": "0.00",
|
||||
"tax_name": "",
|
||||
"tax_code": None,
|
||||
"tax_rate": "0.00"
|
||||
},
|
||||
{
|
||||
@@ -255,6 +256,7 @@ TEST_INVOICE_RES = {
|
||||
'variation': None,
|
||||
"gross_value": "0.25",
|
||||
"tax_value": "0.05",
|
||||
"tax_code": None,
|
||||
"tax_name": "",
|
||||
"tax_rate": "19.00"
|
||||
}
|
||||
|
||||
@@ -475,6 +475,7 @@ def test_order_create_invoice(token_client, organizer, event, order):
|
||||
'gross_value': '23.00',
|
||||
'tax_value': '0.00',
|
||||
'tax_rate': '0.00',
|
||||
'tax_code': None,
|
||||
'tax_name': ''
|
||||
},
|
||||
{
|
||||
@@ -492,6 +493,7 @@ def test_order_create_invoice(token_client, organizer, event, order):
|
||||
'gross_value': '0.25',
|
||||
'tax_value': '0.05',
|
||||
'tax_rate': '19.00',
|
||||
'tax_code': None,
|
||||
'tax_name': ''
|
||||
}
|
||||
],
|
||||
|
||||
@@ -42,8 +42,13 @@ from pretix.base.models.orders import CartPosition, OrderFee, QuestionAnswer
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def item(event):
|
||||
return event.items.create(name="Budget Ticket", default_price=23)
|
||||
def taxrule(event):
|
||||
return event.tax_rules.create(rate=Decimal('19.00'), code="S/standard")
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def item(event, taxrule):
|
||||
return event.items.create(name="Budget Ticket", default_price=23, tax_rule=taxrule)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -51,11 +56,6 @@ def item2(event2):
|
||||
return event2.items.create(name="Budget Ticket", default_price=23)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def taxrule(event):
|
||||
return event.tax_rules.create(rate=Decimal('19.00'))
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def medium(organizer):
|
||||
return organizer.reusable_media.create(
|
||||
@@ -414,6 +414,7 @@ def test_order_create_simulate(token_client, organizer, event, item, quota, ques
|
||||
'internal_type': '',
|
||||
'tax_rate': '0.00',
|
||||
'tax_value': '0.00',
|
||||
'tax_code': None,
|
||||
'tax_rule': None,
|
||||
'canceled': False
|
||||
}
|
||||
@@ -450,8 +451,9 @@ def test_order_create_simulate(token_client, organizer, event, item, quota, ques
|
||||
'attendee_email': None,
|
||||
'voucher': voucher.pk,
|
||||
'voucher_budget_use': '1.50',
|
||||
'tax_rate': '0.00',
|
||||
'tax_value': '0.00',
|
||||
'tax_rate': '19.00',
|
||||
'tax_value': '3.43',
|
||||
'tax_code': 'S/standard',
|
||||
'addon_to': None,
|
||||
'subevent': None,
|
||||
'discount': None,
|
||||
@@ -466,7 +468,7 @@ def test_order_create_simulate(token_client, organizer, event, item, quota, ques
|
||||
'options': [opt.pk],
|
||||
'option_identifiers': [opt.identifier]}
|
||||
],
|
||||
'tax_rule': None,
|
||||
'tax_rule': item.tax_rule_id,
|
||||
'pseudonymization_id': 'PREVIEW',
|
||||
'seat': None,
|
||||
'company': "FOOCORP",
|
||||
@@ -529,14 +531,14 @@ def test_order_create_positionids_addons_simulated(token_client, organizer, even
|
||||
{'id': 0, 'order': '', 'positionid': 1, 'item': item.pk, 'variation': None, 'price': '23.00',
|
||||
'attendee_name': 'Peter', 'attendee_name_parts': {'full_name': 'Peter', '_scheme': 'full'}, 'company': None,
|
||||
'street': None, 'zipcode': None, 'city': None, 'country': None, 'state': None, 'attendee_email': None,
|
||||
'voucher': None, 'tax_rate': '0.00', 'tax_value': '0.00', 'discount': None, 'voucher_budget_use': None,
|
||||
'addon_to': None, 'subevent': None, 'checkins': [], 'print_logs': [], 'downloads': [], 'answers': [], 'tax_rule': None,
|
||||
'voucher': None, 'tax_rate': '19.00', 'tax_code': 'S/standard', 'tax_value': '3.67', 'discount': None, 'voucher_budget_use': None,
|
||||
'addon_to': None, 'subevent': None, 'checkins': [], 'print_logs': [], 'downloads': [], 'answers': [], 'tax_rule': item.tax_rule_id,
|
||||
'pseudonymization_id': 'PREVIEW', 'seat': None, 'canceled': False, 'valid_from': None, 'valid_until': None, 'blocked': None},
|
||||
{'id': 0, 'order': '', 'positionid': 2, 'item': item.pk, 'variation': None, 'price': '23.00',
|
||||
'attendee_name': 'Peter', 'attendee_name_parts': {'full_name': 'Peter', '_scheme': 'full'}, 'company': None,
|
||||
'street': None, 'zipcode': None, 'city': None, 'country': None, 'state': None, 'attendee_email': None,
|
||||
'voucher': None, 'tax_rate': '0.00', 'tax_value': '0.00', 'discount': None, 'voucher_budget_use': None,
|
||||
'addon_to': 1, 'subevent': None, 'checkins': [], 'print_logs': [], 'downloads': [], 'answers': [], 'tax_rule': None,
|
||||
'voucher': None, 'tax_rate': '19.00', 'tax_code': 'S/standard', 'tax_value': '3.67', 'discount': None, 'voucher_budget_use': None,
|
||||
'addon_to': 1, 'subevent': None, 'checkins': [], 'print_logs': [], 'downloads': [], 'answers': [], 'tax_rule': item.tax_rule_id,
|
||||
'pseudonymization_id': 'PREVIEW', 'seat': None, 'canceled': False, 'valid_from': None, 'valid_until': None, 'blocked': None}
|
||||
]
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ def item2(event2):
|
||||
|
||||
@pytest.fixture
|
||||
def taxrule(event):
|
||||
return event.tax_rules.create(rate=Decimal('19.00'))
|
||||
return event.tax_rules.create(rate=Decimal('19.00'), code="S/standard")
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -111,9 +111,9 @@ def order(event, item, device, taxrule, question):
|
||||
amount=Decimal('23.00'),
|
||||
)
|
||||
o.fees.create(fee_type=OrderFee.FEE_TYPE_PAYMENT, value=Decimal('0.25'), tax_rate=Decimal('19.00'),
|
||||
tax_value=Decimal('0.05'), tax_rule=taxrule)
|
||||
tax_value=Decimal('0.05'), tax_rule=taxrule, tax_code=taxrule.code)
|
||||
o.fees.create(fee_type=OrderFee.FEE_TYPE_PAYMENT, value=Decimal('0.25'), tax_rate=Decimal('19.00'),
|
||||
tax_value=Decimal('0.05'), tax_rule=taxrule, canceled=True)
|
||||
tax_value=Decimal('0.05'), tax_rule=taxrule, tax_code=taxrule.code, canceled=True)
|
||||
InvoiceAddress.objects.create(order=o, company="Sample company", country=Country('NZ'),
|
||||
vat_id="DE123", vat_id_validated=True, custom_field="Custom info")
|
||||
op = OrderPosition.objects.create(
|
||||
@@ -196,6 +196,7 @@ TEST_ORDERPOSITION_RES = {
|
||||
"tax_rate": "0.00",
|
||||
"tax_value": "0.00",
|
||||
"tax_rule": None,
|
||||
"tax_code": None,
|
||||
"secret": "z3fsn8jyufm5kpk768q69gkbyr5f4h6w",
|
||||
"addon_to": None,
|
||||
"pseudonymization_id": "ABCDEFGHKL",
|
||||
@@ -297,6 +298,7 @@ TEST_ORDER_RES = {
|
||||
"description": "",
|
||||
"internal_type": "",
|
||||
"tax_rate": "19.00",
|
||||
"tax_code": "S/standard",
|
||||
"tax_value": "0.05"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -188,6 +188,7 @@ def test_medium_detail(token_client, organizer, event, medium, giftcard, custome
|
||||
"voucher_budget_use": None,
|
||||
"tax_rate": "0.00",
|
||||
"tax_value": "0.00",
|
||||
"tax_code": None,
|
||||
"secret": op.secret,
|
||||
"addon_to": None,
|
||||
"subevent": None,
|
||||
|
||||
@@ -31,6 +31,7 @@ TEST_TAXRULE_RES = {
|
||||
'keep_gross_if_rate_changes': False,
|
||||
'name': {'en': 'VAT'},
|
||||
'rate': '19.00',
|
||||
'code': 'S/standard',
|
||||
'price_includes_tax': True,
|
||||
'eu_reverse_charge': False,
|
||||
'home_country': '',
|
||||
|
||||
Reference in New Issue
Block a user