From ebed3317606d0d9323dba66a380de8e70dc566f3 Mon Sep 17 00:00:00 2001 From: Markus Zimmerberger Date: Thu, 24 Jul 2025 14:36:35 +0200 Subject: [PATCH] Ongoing enhancements --- sustApp/assign_payments.py | 14 ++++++++++---- sustApp/convert_payment_export_csv.py | 2 ++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/sustApp/assign_payments.py b/sustApp/assign_payments.py index f1fb439..51e3cf2 100644 --- a/sustApp/assign_payments.py +++ b/sustApp/assign_payments.py @@ -6,6 +6,8 @@ from models.models import Payments_CSV, Payments, Members from time import time import logging, sys import datetime +from config_loader import load_config + def assign_by_reference(payments: Payments_CSV): for payment in payments: @@ -33,7 +35,7 @@ def assign_by_reference(payments: Payments_CSV): db.rollback() def assign_by_name(payments: Payments_CSV): - year = 2025 # pc_reference is empty + # pc_reference is empty or starts with 'Mitglied' removables = ('Dipl.', 'Ing.', 'Mag.') for payment in payments: logging.debug(f'payment.pc_intended {payment.pc_intended}') @@ -105,13 +107,17 @@ if __name__ == "__main__": logging.basicConfig(stream=sys.stderr, level=logging.DEBUG) logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO) + cfg = load_config() + year = cfg['year'] + db = SessionLocal() Base.metadata.create_all(bind=engine) # 1. create missing reference by name - #TODO: "None" shouldn't be a string - #payments = db.query(Payments_CSV).filter(Payments_CSV.pc_reference.is_(None), Payments_CSV.pc_processed!=True).all() - payments = db.query(Payments_CSV).filter(Payments_CSV.pc_processed!=True).all() + payments = db.query(Payments_CSV).filter( + (Payments_CSV.pc_reference.is_(None) | Payments_CSV.pc_reference.like('Mitglied%')), + Payments_CSV.pc_processed!=True + ).all() assign_by_name(payments) # 2. assign payment by reference diff --git a/sustApp/convert_payment_export_csv.py b/sustApp/convert_payment_export_csv.py index 61bc9a8..ef08611 100644 --- a/sustApp/convert_payment_export_csv.py +++ b/sustApp/convert_payment_export_csv.py @@ -93,6 +93,8 @@ if __name__ == "__main__": if len(new_list) > 0: outData.append([i[0], new_list[0].get('Auftraggeber'), new_list[0].get('Zahlungsreferenz'), new_list[0].get('Verwendungszweck'), new_list[0].get('IBAN'), i[2], i[3].replace(',','.'), i[4], i[5]]) + # Replace None with empty string before saving + outData = [['' if x is None else x for x in row] for row in outData] savetxt(target_csv, outData, delimiter=";", encoding='utf-8', header='valuta_date;client;reference;intended;IBAN;entry_date;amount;currency;timestamp', fmt='%s') bak_dir = os.path.join(os.path.dirname(source_csv), "bak") os.makedirs(bak_dir, exist_ok=True)