fix(reports): localize and group exported income values

This commit is contained in:
2026-04-27 21:14:02 +03:30
parent 208e81139b
commit 7bd60fd641
2 changed files with 52 additions and 12 deletions

View File

@@ -80,19 +80,19 @@ def _append_meta_block(worksheet, *, locale: ExportLocale, report_data: dict) ->
scope = report_data["scope"]
summary = report_data["summary"]
worksheet.append([locale.t("report_title"), scope["workspace"]["name"]])
worksheet.append([locale.t("workspace"), scope["workspace"]["name"]])
worksheet.append([locale.t("period"), locale.period_label(scope["period"])])
worksheet.append([locale.t("from_date"), locale.format_date(scope["from_date"], ascii_digits=True)])
worksheet.append([locale.t("to_date"), locale.format_date(scope["to_date"], ascii_digits=True)])
worksheet.append([locale.t("user"), user_label(scope.get("user"), locale, ascii_digits=True)])
worksheet.append([locale.t("generated_at"), locale.format_date(datetime.now().date(), ascii_digits=True)])
worksheet.append(_rtl_row(locale, [locale.t("report_title"), scope["workspace"]["name"]]))
worksheet.append(_rtl_row(locale, [locale.t("workspace"), scope["workspace"]["name"]]))
worksheet.append(_rtl_row(locale, [locale.t("period"), locale.period_label(scope["period"])]))
worksheet.append(_rtl_row(locale, [locale.t("from_date"), locale.format_date(scope["from_date"], ascii_digits=True)]))
worksheet.append(_rtl_row(locale, [locale.t("to_date"), locale.format_date(scope["to_date"], ascii_digits=True)]))
worksheet.append(_rtl_row(locale, [locale.t("user"), user_label(scope.get("user"), locale, ascii_digits=True)]))
worksheet.append(_rtl_row(locale, [locale.t("generated_at"), locale.format_date(datetime.now().date(), ascii_digits=True)]))
worksheet.append([])
worksheet.append([locale.t("summary")])
worksheet.append([locale.t("total_hours"), locale.format_duration(summary["total_duration"], ascii_digits=True)])
worksheet.append([locale.t("billable_hours"), locale.format_duration(summary["billable_duration"], ascii_digits=True)])
worksheet.append([locale.t("non_billable_hours"), locale.format_duration(summary["non_billable_duration"], ascii_digits=True)])
worksheet.append([locale.t("income"), _money_label_excel(locale, summary["income_totals"])])
worksheet.append(_rtl_row(locale, [locale.t("total_hours"), locale.format_duration(summary["total_duration"], ascii_digits=True)]))
worksheet.append(_rtl_row(locale, [locale.t("billable_hours"), locale.format_duration(summary["billable_duration"], ascii_digits=True)]))
worksheet.append(_rtl_row(locale, [locale.t("non_billable_hours"), locale.format_duration(summary["non_billable_duration"], ascii_digits=True)]))
worksheet.append(_rtl_row(locale, [locale.t("income"), _money_label_excel(locale, summary["income_totals"])]))
for row_index in range(1, worksheet.max_row + 1):
first_cell = worksheet.cell(row=row_index, column=1)
@@ -196,6 +196,9 @@ def _append_breakdown_table(worksheet, *, locale: ExportLocale, title_key: str,
def _render_excel_sheet(worksheet, *, locale: ExportLocale, report_data: dict) -> None:
if locale.is_rtl:
worksheet.sheet_view.rightToLeft = True
worksheet.freeze_panes = "E4"
else:
worksheet.freeze_panes = "A4"
_append_meta_block(worksheet, locale=locale, report_data=report_data)
_append_daily_table(worksheet, locale=locale, report_data=report_data)
_append_breakdown_table(worksheet, locale=locale, title_key="clients", rows=report_data["clients"])