From 56d605c0cba90e6a3ce05601cef45ee43c966ea2 Mon Sep 17 00:00:00 2001 From: trnq1ll0 Date: Tue, 9 Jun 2026 09:33:57 +0200 Subject: [PATCH] fix: es werden nun die richtigen Felder beschrieben --- config/output-fields.json | 16 +++++++++------- src/writer.py | 26 +++++++++++++++----------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/config/output-fields.json b/config/output-fields.json index 7aee486..a10af59 100644 --- a/config/output-fields.json +++ b/config/output-fields.json @@ -1,9 +1,11 @@ [ - {"source_field": "Antragsnummer", "target_cell": "C2", "format": null}, - {"source_field": "Name", "target_cell": "C16", "format": null}, - {"source_field": "Stellenanteil in %", "target_cell": "S16", "format": "%.2f"}, - {"source_field": "Qualifikation", "target_cell": "C20", "format": null}, - {"source_field": "Monat (MM.JJ)", "target_cell": "S20", "format": null}, - {"source_field": "Funktion", "target_cell": "C24", "format": null}, - {"source_field": "Tätigkeit", "target_cell": "B30", "format": null} + {"source_field": "Antragsnummer", "target_cell": "B3", "format": null}, + {"source_field": "Name", "target_cell": "B17", "format": null}, + {"source_field": "Stellenanteil in %", "target_cell": "R17", "format": "%.2f"}, + {"source_field": "Qualifikation", "target_cell": "B21", "format": null}, + {"source_field": "Monat (MM.JJ)", "target_cell": "R21", "format": null}, + {"source_field": "Funktion", "target_cell": "B25", "format": null}, + {"source_field": "Tätigkeit", "target_cell": "B31", "format": null}, + {"source_field": "Ort", "target_cell": "B95", "format": null}, + {"source_field": "Datum", "target_cell": "J95", "format": null} ] diff --git a/src/writer.py b/src/writer.py index 6937100..4dfe0b8 100644 --- a/src/writer.py +++ b/src/writer.py @@ -101,7 +101,7 @@ def generate_activity_reports( ) output_path = output_dir / filename - # Lade Template + # Lade Template (bleibt unverändert als Kopiervorlage) wb = load_workbook(template_path) template_sheet = wb.worksheets[0] @@ -109,18 +109,17 @@ def generate_activity_reports( sorted_records = sorted(records, key=lambda r: r.month_index) for idx, record in enumerate(sorted_records): - if idx == 0: - sheet = template_sheet - else: - sheet = wb.copy_worksheet(template_sheet) + # Immer vom sauberen Template kopieren – nie das Original beschreiben + sheet = wb.copy_worksheet(template_sheet) - # Sheet-Name: Monatsname + # Sheet-Name: Monatsname + Funktionskürzel (erste 3 Buchstaben) month_names = [ "", "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" ] mi = record.month_index - sheet_name = f"{mi:02d}_{month_names[mi]}" if 1 <= mi <= 12 else f"Monat_{idx + 1}" + func_abbr = record.funktion[:3] if record.funktion else "" + sheet_name = f"{mi:02d}_{month_names[mi]}_{func_abbr}" if 1 <= mi <= 12 else f"Monat_{idx + 1}" sheet.title = sheet_name[:31] # Befülle Zielfelder @@ -129,8 +128,6 @@ def generate_activity_reports( value = _format_month_for_template(record.monat) elif source_field == "Stellenanteil in %": value = record.stellenanteil - elif hasattr(record, source_field.lower().replace(" ", "_")): - value = getattr(record, source_field.lower().replace(" ", "_")) elif source_field == "Name": value = employee_name elif source_field == "Antragsnummer": @@ -141,15 +138,22 @@ def generate_activity_reports( value = record.funktion elif source_field == "Tätigkeit": value = record.taetigkeit + elif source_field == "Ort": + value = "Dresden" + elif source_field == "Datum": + value = date.today().strftime("%d.%m.%Y") else: continue formatted = _format_value(value, m.format) _set_cell_value(sheet, m.target_cell, formatted) - # Setze aktuelles Datum für das Erstelldatum + # Setze aktuelles Datum auch ins Unterschriftsfeld today = date.today().strftime("%d.%m.%Y") - _set_cell_value(sheet, "K94", today) + _set_cell_value(sheet, "J95", today) + + # Entferne das leere Original-Template-Sheet + wb.remove(template_sheet) wb.save(output_path) wb.close()