mirror of
https://github.com/pretix/pretix.git
synced 2026-05-03 14:54:04 +00:00
Configurable invoice prefixes
This commit is contained in:
@@ -2,6 +2,7 @@ from datetime import timedelta
|
||||
from decimal import Decimal
|
||||
|
||||
import pytest
|
||||
from django.db import DatabaseError
|
||||
from django.utils.timezone import now
|
||||
|
||||
from pretix.base.models import (
|
||||
@@ -219,3 +220,58 @@ def test_invoice_numbers(env):
|
||||
# test Invoice.number, too
|
||||
assert inv1.number == '{}-00001'.format(event.slug.upper())
|
||||
assert inv3.number == '{}-{}-3'.format(event.slug.upper(), order.code)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_invoice_number_prefixes(env):
|
||||
event, order = env
|
||||
event2 = Event.objects.create(
|
||||
organizer=event.organizer, name='Dummy', slug='dummy2',
|
||||
date_from=now(), plugins='pretix.plugins.banktransfer'
|
||||
)
|
||||
order2 = Order.objects.create(
|
||||
event=event2, email='dummy2@dummy.test',
|
||||
status=Order.STATUS_PENDING,
|
||||
datetime=now(), expires=now() + timedelta(days=10),
|
||||
total=0, payment_provider='banktransfer',
|
||||
payment_fee=Decimal('0.25'), payment_fee_tax_rate=0,
|
||||
payment_fee_tax_value=0, locale='en'
|
||||
)
|
||||
event.settings.set('invoice_numbers_consecutive', False)
|
||||
event2.settings.set('invoice_numbers_consecutive', False)
|
||||
assert generate_invoice(order).number == 'DUMMY-{}-1'.format(order.code)
|
||||
assert generate_invoice(order2).number == 'DUMMY2-{}-1'.format(order2.code)
|
||||
|
||||
event.settings.set('invoice_numbers_consecutive', True)
|
||||
event2.settings.set('invoice_numbers_consecutive', True)
|
||||
event.settings.set('invoice_numbers_prefix', '')
|
||||
event2.settings.set('invoice_numbers_prefix', '')
|
||||
|
||||
assert generate_invoice(order).number == 'DUMMY-00001'
|
||||
assert generate_invoice(order).number == 'DUMMY-00002'
|
||||
assert generate_invoice(order2).number == 'DUMMY2-00001'
|
||||
assert generate_invoice(order2).number == 'DUMMY2-00002'
|
||||
|
||||
event.settings.set('invoice_numbers_prefix', 'shared_')
|
||||
event2.settings.set('invoice_numbers_prefix', 'shared_')
|
||||
|
||||
assert generate_invoice(order).number == 'shared_00001'
|
||||
assert generate_invoice(order2).number == 'shared_00002'
|
||||
assert generate_invoice(order).number == 'shared_00003'
|
||||
assert generate_invoice(order2).number == 'shared_00004'
|
||||
|
||||
event.settings.set('invoice_numbers_consecutive', False)
|
||||
event2.settings.set('invoice_numbers_consecutive', False)
|
||||
assert generate_invoice(order).number == 'shared_{}-6'.format(order.code)
|
||||
assert generate_invoice(order2).number == 'shared_{}-6'.format(order2.code)
|
||||
|
||||
# Test database uniqueness check
|
||||
with pytest.raises(DatabaseError):
|
||||
Invoice.objects.create(
|
||||
order=order,
|
||||
event=order.event,
|
||||
organizer=order.event.organizer,
|
||||
date=now().date(),
|
||||
locale='en',
|
||||
invoice_no='00001',
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user