cleanup_comments.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import re
  2. from datetime import date, timedelta
  3. from db import get_session
  4. from sqlalchemy import text
  5. def main():
  6. db = next(get_session())
  7. q = db.execute(text("SELECT * FROM dbo.Forderungen_Kommentar_Rohdaten"))
  8. for row in q.fetchall():
  9. for i, r in enumerate(row.Kommentar.split("\n"), 1):
  10. comment_date = row.Timestamp + timedelta(minutes=i)
  11. comment_user = row.Benutzer_ID
  12. r = r.replace("'", "")
  13. d, u = get_date_and_user_from_comment(r)
  14. db.execute(
  15. text(
  16. "INSERT INTO dbo.Forderungen_Kommentar "
  17. f"VALUES ('{row.Client_DB}', '{row.Beleg_Nr}', '{comment_date}', '{comment_user}', '{r}')"
  18. )
  19. )
  20. db.commit()
  21. def get_details_from_comments():
  22. db = next(get_session())
  23. q = db.execute(text("SELECT * FROM dbo.Forderungen_Kommentar_Rohdaten"))
  24. for row in q.fetchall():
  25. data = {}
  26. az = re.search(r"^AZ\:?\s(\d+\/\d+)", row.Kommentar)
  27. if az:
  28. data["Rechtsanwalt_Aktenzeichen"] = az[1]
  29. if "HP Schaden" in row.Kommentar:
  30. data["Versicherung_Typ"] = "Haftpflicht"
  31. if "Haftpflicht" in row.Kommentar:
  32. data["Versicherung_Typ"] = "Haftpflicht"
  33. if "VK Schaden" in row.Kommentar:
  34. data["Versicherung_Typ"] = "Vollkasko"
  35. if "VK-Schaden" in row.Kommentar:
  36. data["Versicherung_Typ"] = "Vollkasko"
  37. if "TK Schaden" in row.Kommentar:
  38. data["Versicherung_Typ"] = "Teilkasko"
  39. if "TK-Schaden" in row.Kommentar:
  40. data["Versicherung_Typ"] = "Teilkasko"
  41. s = re.search(r"Schaden (.*) bei (.*) eingereicht", row.Kommentar)
  42. if s:
  43. data["Schadennummer"] = s[1]
  44. data["Vers_Adresse_ID"] = s[2].replace("'", "").lower()[:25]
  45. if data:
  46. db.execute(
  47. text(
  48. "UPDATE dbo.Forderungen_Details SET "
  49. + ", ".join([f"{k} = '{v}'" for k, v in data.items()])
  50. + f" WHERE Client_DB = '{row.Client_DB}' AND Beleg_Nr = '{row.Beleg_Nr}'"
  51. )
  52. )
  53. db.commit()
  54. def get_date_and_user_from_comment(r: str) -> tuple[date, str]:
  55. m = re.search(r"(\d\d\.\d\d?)\.?[\/\s](\w+)", r)
  56. if m:
  57. date_split = m[1].split(".")
  58. return date(2026, date_split[1], date_split[0]), m[2]
  59. if r.startswith("EWB"):
  60. return None, "mde"
  61. az = re.search(r"^AZ\:?\s(\d+\/\d+)", r)
  62. if az:
  63. return None, "mde"
  64. return None, "mde"
  65. if __name__ == "__main__":
  66. get_details_from_comments()