Browse Source

Datev.mdb auslesen

gc-server3 2 tháng trước cách đây
mục cha
commit
f3dce8e2ae
2 tập tin đã thay đổi với 70 bổ sung0 xóa
  1. BIN
      dist/gctools.exe
  2. 70 0
      misc/datev_status.py

BIN
dist/gctools.exe


+ 70 - 0
misc/datev_status.py

@@ -0,0 +1,70 @@
+import json
+from datetime import datetime
+from pathlib import Path
+
+import pyodbc
+
+pyodbc.lowercase = False
+
+
+def run_query(cur: pyodbc.Cursor, query: str) -> list[dict[str, str]]:
+    cur.execute(query)
+
+    col_names = [x[0] for x in cur.description]
+    res = []
+    while True:
+        row = cur.fetchone()
+        if row is None:
+            return res
+        r = {}
+        for i, col in enumerate(row):
+            r[col_names[i]] = str(col).strip()
+        res.append(r)
+
+
+def print_mdb_details(mdb_file: str):
+    print("--")
+    print("[" + mdb_file + "]")
+    ts = datetime.fromtimestamp(Path(mdb_file).stat().st_mtime)
+    res = {"Datum_MDB_Datei": ts.strftime("%Y-%m-%d %H:%M:%S")}
+
+    try:
+        conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=" + mdb_file + ";")
+        cur = conn.cursor()
+    except pyodbc.Error:
+        print("Error connecting to file")
+        return
+
+    date_range = "SELECT min(dtDatum) as Datum_min, max(dtDatum) as Datum_max, min(dtWJ) as Wirtschaftsjahr FROM tblKNW"
+    res1 = run_query(cur, date_range)
+    res.update(res1[0])
+
+    main_site = (
+        "SELECT FIRMAI as Firma_Nr, FIRMAS as Firma_Name, BERATER as Berater_Nr, "
+        "MANDANT as Mandant_Nr, dtWJAnzeige as WJ_Anzeige FROM ORDDAT"
+    )
+    res2 = run_query(cur, main_site)
+    res.update(res2[0])
+
+    sites = "SELECT KSTESA_NUMMER as Standort_Nr, KSTESA_BEZEICHNUNG as Standort_Name FROM tblKS_KSTESA WHERE KSTESA_OWN_ID = 2"
+    res3 = run_query(cur, sites)
+    res["Standorte"] = res3
+
+    print(json.dumps(res, indent=2))
+    client_db = res.get("Mandant_Nr", "1")
+    year_id = res.get("Wirtschaftsjahr", "00000101")
+    new_filename = str(Path(mdb_file).parent) + f"\\KostSt_{client_db}_{year_id}.mdb"
+
+    with open(new_filename + ".json", "w") as fwh:
+        json.dump(res, fwh, indent=2)
+    cur.close()
+    conn.close()
+
+
+def print_all_mdb_files(folder: str):
+    for mdb_file in Path(folder).resolve().rglob("KostSt.mdb"):
+        print_mdb_details(str(mdb_file))
+
+
+if __name__ == "__main__":
+    print_all_mdb_files("C:\\Users\\GAPS")