Die Kosten-pro-Tag-Berechnung und die Drop-Down-Optionen im Anwesenheitsfeld werden per Javsacript gemacht. JS funktioniert aber in pyumpdf nicht, darum werden die korrekten Optionen aus dem JS ausgelesen und dieses 1:1 in den Feldern gesetzt. Mittels Schalter in der config können auch wieder die Rohwerte aus dem Excel gesetzt werden. (PDF muss dann von Hand geöffnet und gespeichert werden damit die entgültigen passenden Werte enthalten sind).
91 lines
3.1 KiB
JSON
91 lines
3.1 KiB
JSON
{
|
||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||
"title": "Attendance PDF Generator – Konfiguration",
|
||
"description": "Konfigurationsschema für config.json",
|
||
"type": "object",
|
||
"required": [
|
||
"antragsnummer",
|
||
"ort",
|
||
"template_pdf",
|
||
"output_dir",
|
||
"excel_year_pattern",
|
||
"excel_name_header",
|
||
"excel_name_column",
|
||
"excel_seq_column",
|
||
"excel_day_start_col",
|
||
"excel_day_end_col",
|
||
"month_mapping",
|
||
"valid_status_codes",
|
||
"plan_hours_value",
|
||
"pauschale_value"
|
||
],
|
||
"properties": {
|
||
"antragsnummer": {
|
||
"type": "string",
|
||
"description": "SAB-Antragsnummer (statisch, aus config)"
|
||
},
|
||
"ort": {
|
||
"type": "string",
|
||
"description": "Ort für die Unterschrift (statisch, aus config)"
|
||
},
|
||
"template_pdf": {
|
||
"type": "string",
|
||
"description": "Relativer Pfad zum PDF-Template"
|
||
},
|
||
"output_dir": {
|
||
"type": "string",
|
||
"description": "Ausgabeverzeichnis für generierte PDFs"
|
||
},
|
||
"excel_year_pattern": {
|
||
"type": "string",
|
||
"description": "Regex-Muster zur Jahresextraktion aus dem Dateinamen"
|
||
},
|
||
"excel_name_header": {
|
||
"type": "string",
|
||
"description": "Text in der Headerzeile der Namensspalte"
|
||
},
|
||
"excel_name_column": {
|
||
"type": "integer",
|
||
"description": "0-basierter Spaltenindex der Namensspalte (Spalte B = 1)"
|
||
},
|
||
"excel_seq_column": {
|
||
"type": "integer",
|
||
"description": "0-basierter Spaltenindex der lfd. Nummer (Spalte A = 0)"
|
||
},
|
||
"excel_day_start_col": {
|
||
"type": "integer",
|
||
"description": "0-basierter Spaltenindex des ersten Tages (Spalte J = 9)"
|
||
},
|
||
"excel_day_end_col": {
|
||
"type": "integer",
|
||
"description": "0-basierter Spaltenindex des letzten Tages (Spalte AN = 39)"
|
||
},
|
||
"month_mapping": {
|
||
"type": "object",
|
||
"description": "Mapping der deutschen Monatsabkürzungen auf zweistellige Monatsnummern",
|
||
"additionalProperties": {
|
||
"type": "string",
|
||
"pattern": "^(0[1-9]|1[0-2])$"
|
||
}
|
||
},
|
||
"valid_status_codes": {
|
||
"type": "array",
|
||
"items": { "type": "string" },
|
||
"description": "Gültige String-Statuscodes in Excel-Zellen (außer numerisch)"
|
||
},
|
||
"plan_hours_value": {
|
||
"type": "string",
|
||
"description": "Wert für das plan.N Dropdown (immer '6')"
|
||
},
|
||
"pauschale_value": {
|
||
"type": "string",
|
||
"description": "Wert für das pauschale.N Feld wenn anwesend"
|
||
},
|
||
"pdf_use_display_values": {
|
||
"type": "boolean",
|
||
"description": "true = Dropdown-Anzeigewerte ins PDF schreiben (z.B. 'X = anwesend'); false = rohe Export-Werte (z.B. 'X')",
|
||
"default": true
|
||
}
|
||
}
|
||
}
|