From: Michael Wagner Date: Mon, 22 Jan 2024 12:52:55 +0000 (+0100) Subject: gitarre X-Git-Tag: eigenheimer-util_0.1-0~3 X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/SVBaL.git/commitdiff_plain/6704f97cab9a9f497a276792933e511ca199a78b?ds=inline gitarre --- diff --git a/python/eh_util/.dummy b/python/eh_util/.dummy new file mode 100644 index 0000000..e69de29 diff --git a/python/sv-merger/sv-merger.py b/python/sv-merger/sv-merger.py new file mode 100755 index 0000000..5e8fce5 --- /dev/null +++ b/python/sv-merger/sv-merger.py @@ -0,0 +1,99 @@ +#!/usr/bin/python3 +''' +Created on 10.01.2024 + +@author: sparky2021 +''' + +import sys + +if __name__ == '__main__': + pass + +numArgs = len(sys.argv) +if (numArgs != 4): + raise RuntimeError("usage: sv-merger EXPORT DELTA FIELD") + + +dh_export = open(sys.argv[1]) +dh_delta = open(sys.argv[2]) +dh_import = open("import.csv", "w") + +# Lese die Kopfzeile aus EXPORT +line = dh_export.readline().rstrip() +print(line, file=dh_import) +export_header = line.split(";") + +sv_pn_spalte = -1 +sv_such_spalte = -1 + +i = 0 +for kopf in export_header: + kopf = kopf[1:-1] + if kopf == 'Freifeldwert_1': + sv_pn_spalte = i + if kopf == sys.argv[3]: + sv_such_spalte = i + i += 1 + +if sv_pn_spalte == -1: + raise RuntimeError("S-Verein-Export enthält keine Partnernummer") +if sv_such_spalte == -1: + raise RuntimeError("S-Verein-Export enthält nicht das gewünschte Datenfeld "+sys.argv[3]) + +line = dh_delta.readline().rstrip() +delta_header = line.split(";") + +delta_pn_sp = -1 +delta_such_sp = -1 + +i = 0 +for kopf in delta_header: + if kopf == "Partnernummer": + delta_pn_sp = i + if kopf == sys.argv[3]: + delta_such_sp = i + i += 1 + +if delta_pn_sp == -1: + raise RuntimeError("Delta-Datei enthält keine Partnernummer") +if delta_such_sp == -1: + raise RuntimeError("Delta-Datei enthält nicht das gewünschte Datenfeld") + +delta = {} +for line in dh_delta: + if len(line.rstrip()): + # not a empty line + data = line.split(";") + delta[int(data[delta_pn_sp])] = data[delta_such_sp] + +for line in dh_export: + data = line.rstrip().split(";") + pn = data[sv_pn_spalte][1:-1] + if len(pn): + pn = int(pn) + if pn in delta: + if len(delta[pn]): + if data[sv_such_spalte] != delta[pn]: + data[sv_such_spalte] = delta[pn] + print(";".join(data), file=dh_import) + +dh_export.close() +dh_delta.close() +dh_import.close() + +''' +Argumente: + +EXPORT: Export-Datei aus S-Verein + +DELTA: csv-Daten, die eingearbeitet werden sollen + +FIELD: Feld, das eingearbeitet werden soll, wenn + - Das Quellfeld nicht leer ist + - Sich der Wert von der EXPORT-Datei unterscheidet + +Die Synchronisation der Daten erfolgt anhand der Partnernummer. + +Das Ergebnis wird stets in die Datei import.csv geschrieben. +'''