|
|
|
@ -62,6 +62,7 @@ class PrePayments:
@@ -62,6 +62,7 @@ class PrePayments:
|
|
|
|
|
form_data.update( |
|
|
|
|
{ |
|
|
|
|
f"Datum{index}": entry.date, |
|
|
|
|
f"Euro{index}": entry.amount_localized, |
|
|
|
|
f"BelegNr aus SuberX{index}": entry.superx_id, |
|
|
|
|
# no field "Euro{index}" |
|
|
|
|
# the automatic form calculation would not work. |
|
|
|
@ -148,7 +149,7 @@ def _get_unique(data: pd.DataFrame, column: str) -> str | int | float:
@@ -148,7 +149,7 @@ def _get_unique(data: pd.DataFrame, column: str) -> str | int | float:
|
|
|
|
|
return uniques[0] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _extract_travel_number(data: pd.DataFrame, column: str) -> str: |
|
|
|
|
def _parse_travel_number(data: pd.DataFrame, column: str) -> str: |
|
|
|
|
belege = data[column] |
|
|
|
|
travel_nr = belege.apply( |
|
|
|
|
lambda x: re.search(r"(5\d{9,10})", x.replace(" ", "")) |
|
|
|
@ -156,6 +157,14 @@ def _extract_travel_number(data: pd.DataFrame, column: str) -> str:
@@ -156,6 +157,14 @@ def _extract_travel_number(data: pd.DataFrame, column: str) -> str:
|
|
|
|
|
match_result = travel_nr[travel_nr.first_valid_index()] |
|
|
|
|
return match_result[0] |
|
|
|
|
|
|
|
|
|
def _extract_travel_number(data: pd.DataFrame) -> str: |
|
|
|
|
for column in ("BelegNr", "VorgängerBelegNr"): |
|
|
|
|
try: |
|
|
|
|
return _parse_travel_number(data, column) |
|
|
|
|
except KeyError: |
|
|
|
|
pass |
|
|
|
|
msg = "Could not fint travel number, probably Obligo missing" |
|
|
|
|
raise KeyError(msg) |
|
|
|
|
|
|
|
|
|
def _read_pre_payments(file_path: Pathlike = None) -> PrePayments: |
|
|
|
|
if not file_path: |
|
|
|
@ -169,7 +178,7 @@ def _read_pre_payments(file_path: Pathlike = None) -> PrePayments:
@@ -169,7 +178,7 @@ def _read_pre_payments(file_path: Pathlike = None) -> PrePayments:
|
|
|
|
|
converters = {field: str for field in fields} |
|
|
|
|
raw_data = pd.read_excel(file_path, skiprows=3, converters=converters) |
|
|
|
|
|
|
|
|
|
travel_nr = _extract_travel_number(raw_data, "BelegNr") |
|
|
|
|
travel_nr = _extract_travel_number(raw_data) |
|
|
|
|
try: |
|
|
|
|
cost_center = _get_unique(raw_data, "Kostenstelle") |
|
|
|
|
fonds = _get_unique(raw_data, "Fonds") |
|
|
|
@ -179,7 +188,7 @@ def _read_pre_payments(file_path: Pathlike = None) -> PrePayments:
@@ -179,7 +188,7 @@ def _read_pre_payments(file_path: Pathlike = None) -> PrePayments:
|
|
|
|
|
except ValueError as e: |
|
|
|
|
sys.exit(str(e)) |
|
|
|
|
|
|
|
|
|
mask = raw_data["Werttyp"] == "Zahlung" |
|
|
|
|
mask = raw_data["Werttyp"].isin(("Zahlung", "Rechnung")) |
|
|
|
|
raw_payments = raw_data[mask].copy() |
|
|
|
|
|
|
|
|
|
summary = ( |
|
|
|
@ -287,9 +296,10 @@ def final_payment(search_last_name: str, iso_date: str, place: str):
@@ -287,9 +296,10 @@ def final_payment(search_last_name: str, iso_date: str, place: str):
|
|
|
|
|
rk_path = folder / f"DATE {info.travel_short}, Reisekostenabrechnung.txt" |
|
|
|
|
_create_text_stub(rk_path) |
|
|
|
|
|
|
|
|
|
year = TODAY.split("-", maxsplit=1)[0] |
|
|
|
|
uka_hint_path = ( |
|
|
|
|
folder |
|
|
|
|
/ f"HUEL UK-A {info.last_first}, Dienstreise {info.place}, Schlusszahlung.txt" |
|
|
|
|
/ f"{year}-HUEL UK-A {info.last_first}, Dienstreise {info.place}, Schlusszahlung.txt" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
huel_date = "/".join(TODAY.split("-")[::-1]) |
|
|
|
|