mirror of
https://github.com/pretix/pretix.git
synced 2026-05-06 15:24:02 +00:00
Order overview PDF: Allow to filter by subevent date
This commit is contained in:
@@ -112,7 +112,7 @@ def dictsum(*dicts) -> dict:
|
||||
|
||||
def order_overview(
|
||||
event: Event, subevent: SubEvent=None, date_filter='', date_from=None, date_until=None, fees=False,
|
||||
admission_only=False, base_qs=None, base_fees_qs=None,
|
||||
admission_only=False, base_qs=None, base_fees_qs=None, subevent_date_from=None, subevent_date_until=None
|
||||
) -> Tuple[List[Tuple[ItemCategory, List[Item]]], Dict[str, Tuple[Decimal, Decimal]]]:
|
||||
items = event.items.all().select_related(
|
||||
'category', # for re-grouping
|
||||
@@ -125,6 +125,11 @@ def order_overview(
|
||||
qs = qs.filter(subevent__in=subevent)
|
||||
elif subevent:
|
||||
qs = qs.filter(subevent=subevent)
|
||||
if subevent_date_from:
|
||||
qs = qs.filter(subevent__date_from__gte=subevent_date_from)
|
||||
if subevent_date_until:
|
||||
qs = qs.filter(subevent__date_from__lt=subevent_date_until)
|
||||
|
||||
if admission_only:
|
||||
qs = qs.filter(item__admission=True)
|
||||
items = items.filter(admission=True)
|
||||
@@ -232,7 +237,7 @@ def order_overview(
|
||||
payment_cat_obj.name = _('Fees')
|
||||
payment_items = []
|
||||
|
||||
if subevent is None and fees:
|
||||
if subevent is None and not subevent_date_from and not subevent_date_until and fees:
|
||||
qs = OrderFee.all if base_fees_qs is None else base_fees_qs
|
||||
qs = qs.filter(
|
||||
order__event=event
|
||||
|
||||
@@ -296,6 +296,17 @@ class OverviewReport(Report):
|
||||
subevent = self.form_data.get('subevent')
|
||||
story.append(Paragraph(pgettext('subevent', 'Date: {}').format(subevent), self.get_style()))
|
||||
story.append(Spacer(1, 5 * mm))
|
||||
|
||||
if form_data.get('subevent_date_range'):
|
||||
d_start, d_end = resolve_timeframe_to_dates_inclusive(now(), form_data['subevent_date_range'], self.timezone)
|
||||
story += [
|
||||
Paragraph(_('{axis} between {start} and {end}').format(
|
||||
axis=_('Event date'),
|
||||
start=date_format(d_start, 'SHORT_DATE_FORMAT') if d_start else '–',
|
||||
end=date_format(d_end, 'SHORT_DATE_FORMAT') if d_end else '–',
|
||||
), self.get_style()),
|
||||
Spacer(1, 5 * mm)
|
||||
]
|
||||
return story
|
||||
|
||||
def _get_data(self, form_data):
|
||||
@@ -303,12 +314,18 @@ class OverviewReport(Report):
|
||||
d_start, d_end = resolve_timeframe_to_dates_inclusive(now(), form_data['date_range'], self.timezone)
|
||||
else:
|
||||
d_start, d_end = None, None
|
||||
if form_data.get('subevent_date_range'):
|
||||
sd_start, sd_end = resolve_timeframe_to_dates_inclusive(now(), form_data['subevent_date_range'], self.timezone)
|
||||
else:
|
||||
sd_start, sd_end = None, None
|
||||
return order_overview(
|
||||
self.event,
|
||||
subevent=form_data.get('subevent'),
|
||||
date_filter=form_data.get('date_axis'),
|
||||
date_from=d_start,
|
||||
date_until=d_end,
|
||||
subevent_date_from=sd_start,
|
||||
subevent_date_until=sd_end,
|
||||
fees=True
|
||||
)
|
||||
|
||||
@@ -427,9 +444,18 @@ class OverviewReport(Report):
|
||||
@property
|
||||
def export_form_fields(self) -> dict:
|
||||
f = OverviewFilterForm(event=self.event)
|
||||
f.fields = OrderedDict(f.fields.items())
|
||||
del f.fields['ordering']
|
||||
del f.fields['date_from']
|
||||
del f.fields['date_until']
|
||||
if self.event.has_subevents:
|
||||
f.fields['subevent_date_range'] = DateFrameField(
|
||||
label=_('Event date'),
|
||||
include_future_frames=True,
|
||||
required=False,
|
||||
)
|
||||
f.fields.move_to_end("subevent_date_range", last=False)
|
||||
f.fields.move_to_end("subevent", last=False)
|
||||
f.fields['date_range'] = DateFrameField(
|
||||
label=_('Date range'),
|
||||
include_future_frames=False,
|
||||
|
||||
Reference in New Issue
Block a user