Compare commits

...

1 Commits

Author SHA1 Message Date
Raphael Michel
70a304d37c Overview export: Allow to skip empty lines (Z#23219200) 2026-01-20 12:31:34 +01:00
2 changed files with 16 additions and 2 deletions

View File

@@ -112,7 +112,8 @@ 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, subevent_date_from=None, subevent_date_until=None
admission_only=False, base_qs=None, base_fees_qs=None, subevent_date_from=None, subevent_date_until=None,
skip_empty_lines=False,
) -> Tuple[List[Tuple[ItemCategory, List[Item]]], Dict[str, Tuple[Decimal, Decimal]]]:
items = event.items.all().select_related(
'category', # for re-grouping
@@ -205,13 +206,21 @@ def order_overview(
for l in states.keys():
var.num[l] = num[l].get((item.id, variid), (0, 0, 0))
var.num['total'] = num['total'].get((item.id, variid), (0, 0, 0))
var._skip = all(v[0] == 0 for v in var.num.values())
for l in states.keys():
item.num[l] = tuplesum(var.num[l] for var in item.all_variations)
item.num['total'] = tuplesum(var.num['total'] for var in item.all_variations)
if skip_empty_lines:
item.all_variations = [v for v in item.all_variations if not v._skip]
item._skip = not item.all_variations
else:
for l in states.keys():
item.num[l] = num[l].get((item.id, None), (0, 0, 0))
item.num['total'] = num['total'].get((item.id, None), (0, 0, 0))
item._skip = all(v[0] == 0 for v in item.num.values())
if skip_empty_lines:
items = [i for i in items if not i._skip]
nonecat = ItemCategory(name=_('Uncategorized'))
# Regroup those by category

View File

@@ -337,7 +337,8 @@ class OverviewReport(Report):
date_until=d_end,
subevent_date_from=sd_start,
subevent_date_until=sd_end,
fees=True
fees=True,
skip_empty_lines=form_data.get("skip_empty_lines")
)
def _table_story(self, doc, form_data, net=False):
@@ -478,6 +479,10 @@ class OverviewReport(Report):
'Use the "Accounting report" in the export section instead.'
))
)
f.fields['skip_empty_lines'] = forms.BooleanField(
label=_("Skip empty lines"),
required=False,
)
return f.fields