New implementation of sales channels (#4111)

Co-authored-by: Martin Gross <gross@rami.io>
This commit is contained in:
Raphael Michel
2024-06-30 19:24:30 +02:00
committed by GitHub
parent 95511b0330
commit 4fb5c6bef0
174 changed files with 2902 additions and 616 deletions

View File

@@ -61,6 +61,7 @@ def env():
status=Order.STATUS_PENDING,
datetime=now(), expires=now() + timedelta(days=10),
total=Decimal('13.37'),
sales_channel=event.organizer.sales_channels.get(identifier="web"),
)
shirt = Item.objects.create(event=event, name='T-Shirt', default_price=12)
shirt_red = ItemVariation.objects.create(item=shirt, default_price=14, value="Red")

View File

@@ -49,12 +49,14 @@ def env():
status=Order.STATUS_PENDING,
datetime=now(), expires=now() + timedelta(days=10),
total=23,
sales_channel=o.sales_channels.get(identifier="web"),
)
o2 = Order.objects.create(
code='6789Z', event=event,
status=Order.STATUS_CANCELED,
datetime=now(), expires=now() + timedelta(days=10),
total=23,
sales_channel=o.sales_channels.get(identifier="web"),
)
quota = Quota.objects.create(name="Test", size=2, event=event)
item1 = Item.objects.create(event=event, name="Ticket", default_price=23)

View File

@@ -49,13 +49,15 @@ def env():
code='1Z3AS', event=event,
status=Order.STATUS_PENDING,
datetime=now(), expires=now() + timedelta(days=10),
total=23
total=23,
sales_channel=o.sales_channels.get(identifier="web"),
)
o2 = Order.objects.create(
code='6789Z', event=event,
status=Order.STATUS_CANCELED,
datetime=now(), expires=now() + timedelta(days=10),
total=23
total=23,
sales_channel=o.sales_channels.get(identifier="web"),
)
quota = Quota.objects.create(name="Test", size=2, event=event)
item1 = Item.objects.create(event=event, name="Ticket", default_price=23)

View File

@@ -68,19 +68,22 @@ def env():
code='1Z3AS', event=event, email='admin@localhost',
status=Order.STATUS_PENDING,
datetime=now(), expires=now() + timedelta(days=10),
total=23
total=23,
sales_channel=o.sales_channels.get(identifier="web"),
)
o2 = Order.objects.create(
code='6789Z', event=event,
status=Order.STATUS_CANCELED,
datetime=now(), expires=now() + timedelta(days=10),
total=23
total=23,
sales_channel=o.sales_channels.get(identifier="web"),
)
Order.objects.create(
code='GS89Z', event=event,
status=Order.STATUS_CANCELED,
datetime=now(), expires=now() + timedelta(days=10),
total=23
total=23,
sales_channel=o.sales_channels.get(identifier="web"),
)
quota = Quota.objects.create(name="Test", size=2, event=event)
item1 = Item.objects.create(event=event, name="Ticket", default_price=23)
@@ -442,12 +445,14 @@ def test_keep_unmatched(env, orga_job):
@pytest.mark.django_db
def test_split_payment_success(env, orga_job):
o4 = Order.objects.create(
code='99999', event=env[0],
status=Order.STATUS_PENDING,
datetime=now(), expires=now() + timedelta(days=10),
total=12
)
with scopes_disabled():
o4 = Order.objects.create(
code='99999', event=env[0],
status=Order.STATUS_PENDING,
datetime=now(), expires=now() + timedelta(days=10),
total=12,
sales_channel=env[0].organizer.sales_channels.get(identifier="web"),
)
process_banktransfers(orga_job, [{
'payer': 'Karla Kundin',
'reference': 'Bestellungen DUMMY-1Z3AS DUMMY-99999',
@@ -468,12 +473,14 @@ def test_split_payment_success(env, orga_job):
@pytest.mark.django_db
def test_split_payment_mismatch(env, orga_job):
o4 = Order.objects.create(
code='99999', event=env[0],
status=Order.STATUS_PENDING,
datetime=now(), expires=now() + timedelta(days=10),
total=12
)
with scopes_disabled():
o4 = Order.objects.create(
code='99999', event=env[0],
status=Order.STATUS_PENDING,
datetime=now(), expires=now() + timedelta(days=10),
total=12,
sales_channel=env[0].organizer.sales_channels.get(identifier="web"),
)
process_banktransfers(orga_job, [{
'payer': 'Karla Kundin',
'reference': 'Bestellungen DUMMY-1Z3AS DUMMY-99999',

View File

@@ -47,6 +47,7 @@ def env():
code='1Z3AS', event=event, email='admin@localhost',
status=Order.STATUS_PAID,
datetime=now(), expires=now() + timedelta(days=10),
sales_channel=o.sales_channels.get(identifier="web"),
total=23
)
payment = OrderPayment.objects.create(

View File

@@ -48,7 +48,8 @@ def env():
code='1Z3AS', event=event, email='admin@localhost',
status=Order.STATUS_PAID,
datetime=now(), expires=now() + timedelta(days=10),
total=23
total=23,
sales_channel=o.sales_channels.get(identifier="web"),
)
refund = OrderRefund.objects.create(
order=order,
@@ -74,7 +75,8 @@ def refund_huf(env):
code='HUFFY', event=event, email='admin@localhost',
status=Order.STATUS_PAID,
datetime=now(), expires=now() + timedelta(days=10),
total=42
total=42,
sales_channel=env[0].organizer.sales_channels.get(identifier="web"),
)
refund = OrderRefund.objects.create(
order=order,

View File

@@ -49,6 +49,7 @@ def env():
status=Order.STATUS_PAID,
datetime=now(), expires=now() + timedelta(days=10),
total=Decimal('13.37'),
sales_channel=o.sales_channels.get(identifier="web"),
)
o1.payments.create(
amount=o1.total,

View File

@@ -50,6 +50,7 @@ def env():
status=Order.STATUS_PAID,
datetime=now(), expires=now() + timedelta(days=10),
total=Decimal('43.59'),
sales_channel=o.sales_channels.get(identifier="web"),
)
o1.payments.create(
amount=o1.total,

View File

@@ -57,11 +57,12 @@ def checkin_list(event):
@pytest.fixture
def order(item):
def order(event, item):
"""Returns an order instance"""
o = Order.objects.create(event=item.event, status=Order.STATUS_PENDING,
expires=now() + datetime.timedelta(hours=1),
total=13, code='DUMMY', email='dummy@dummy.test',
sales_channel=event.organizer.sales_channels.get(identifier="web"),
datetime=now(), locale='en')
return o

View File

@@ -284,12 +284,14 @@ def test_sendmail_rule_all_subevents(event_series, subevent1, subevent2, item):
o1 = Order.objects.create(event=item.event, status=Order.STATUS_PAID,
expires=now() + datetime.timedelta(hours=1),
total=13, code='DUMMY1', email='dummy1@dummy.test',
sales_channel=event_series.organizer.sales_channels.get(identifier="web"),
datetime=now(), locale='en')
o1.all_positions.create(item=item, price=13, subevent=subevent1)
o1.all_positions.create(item=item, price=13, subevent=subevent2)
o2 = Order.objects.create(event=item.event, status=Order.STATUS_PAID,
expires=now() + datetime.timedelta(hours=1),
total=13, code='DUMMY2', email='dummy2@dummy.test',
sales_channel=event_series.organizer.sales_channels.get(identifier="web"),
datetime=now(), locale='en')
o2.all_positions.create(item=item, price=23, subevent=subevent1)
o2.all_positions.create(item=item, price=23, subevent=subevent2)

View File

@@ -173,10 +173,11 @@ def test_sendmail_multi_locales(logged_in_client, sendmail_url, event, item):
event.settings.set('locales', ['en', 'de'])
with scopes_disabled():
o = Order.objects.create(event=item.event, status=Order.STATUS_PAID,
o = Order.objects.create(event=event, status=Order.STATUS_PAID,
expires=now() + datetime.timedelta(hours=1),
total=13, code='DUMMY', email='dummy@dummy.test',
datetime=now(),
sales_channel=event.organizer.sales_channels.get(identifier="web"),
locale='de')
OrderPosition.objects.create(order=o, item=item, price=13)

View File

@@ -60,7 +60,8 @@ def env():
code='FOOBAR', event=event, email='dummy@dummy.test',
status=Order.STATUS_PENDING,
datetime=now(), expires=now() + timedelta(days=10),
total=Decimal('13.37')
total=Decimal('13.37'),
sales_channel=o.sales_channels.get(identifier="web"),
)
yield event, o1

View File

@@ -49,6 +49,7 @@ def env():
status=Order.STATUS_PAID,
datetime=now(), expires=now() + timedelta(days=10),
total=Decimal('13.37'),
sales_channel=o.sales_channels.get(identifier="web"),
)
return event, o1

View File

@@ -51,7 +51,8 @@ def event():
code='FOO', event=event, email='dummy@dummy.test', phone="+498912345678",
status=Order.STATUS_PAID,
datetime=datetime.datetime(2019, 2, 22, 14, 0, 0, tzinfo=datetime.timezone.utc), expires=now() + datetime.timedelta(days=10),
total=33, locale='en'
total=33, locale='en',
sales_channel=event.organizer.sales_channels.get(identifier="web"),
)
item_ticket = Item.objects.create(event=event, name="Ticket", default_price=23, admission=True)
OrderPosition.objects.create(
@@ -150,7 +151,8 @@ def test_csv_order_by_inherited_name_parts(event): # noqa
code='BAR', event=event, email='dummy@dummy.test', phone='+498912345678',
status=Order.STATUS_PAID,
datetime=datetime.datetime(2019, 2, 22, 14, 0, 0, tzinfo=datetime.timezone.utc), expires=now() + datetime.timedelta(days=10),
total=33, locale='en'
total=33, locale='en',
sales_channel=event.organizer.sales_channels.get(identifier="web"),
)
OrderPosition.objects.create(
order=order2,

View File

@@ -43,7 +43,7 @@ def env():
t.limit_events.add(event)
item1 = Item.objects.create(event=event, name="Ticket", default_price=23)
tl = event.ticket_layouts.create(name="Foo", default=True, layout='[{"a": 2}]')
TicketLayoutItem.objects.create(layout=tl, item=item1)
TicketLayoutItem.objects.create(layout=tl, item=item1, sales_channel=o.sales_channels.get(identifier="web"))
return event, tl, item1

View File

@@ -134,7 +134,7 @@ class TicketLayoutFormTest(SoupTest):
def test_item_copy(self):
with scopes_disabled():
bl2 = self.event1.ticket_layouts.create(name="Layout 2")
TicketLayoutItem.objects.create(item=self.item1, layout=bl2)
TicketLayoutItem.objects.create(item=self.item1, layout=bl2, sales_channel=self.orga1.sales_channels.get(identifier="web"))
self.client.post('/control/event/%s/%s/items/add' % (self.orga1.slug, self.event1.slug), {
'name_0': 'Intermediate',
'default_price': '23.00',
@@ -150,7 +150,7 @@ class TicketLayoutFormTest(SoupTest):
def test_copy_event(self):
with scopes_disabled():
bl2 = self.event1.ticket_layouts.create(name="Layout 2")
TicketLayoutItem.objects.create(item=self.item1, layout=bl2)
TicketLayoutItem.objects.create(item=self.item1, layout=bl2, sales_channel=self.orga1.sales_channels.get(identifier="web"))
self.post_doc('/control/events/add', {
'event_wizard-current_step': 'foundation',
'event_wizard-prefix': 'event_wizard',

View File

@@ -46,6 +46,7 @@ def env0():
status=Order.STATUS_PENDING,
datetime=now(), expires=now() + timedelta(days=10),
total=Decimal('13.37'),
sales_channel=o.sales_channels.get(identifier="web"),
)
shirt = Item.objects.create(event=event, name='T-Shirt', default_price=12)
shirt_red = ItemVariation.objects.create(item=shirt, default_price=14, value="Red")