]> wagnertech.de Git - SVBaL.git/blob - python/eh_util/eh_app/qmodels.py
pydev-s6git
[SVBaL.git] / python / eh_util / eh_app / qmodels.py
1 '''
2 Created on 04.12.2024
3
4 @author: sparky2021
5 '''
6 from q import QError
7 from qif import QIF
8 from .AWK import config
9
10 class MitgliederQuery:
11     def __init__(self):
12         self.data_source = QIF({"d" : ";", "H" : 1})
13         '''
14             d (separator)  : ;
15             H (header line): yes
16         '''
17         self.file_name = config.getInstance().requireConfig("DataFile")
18         self.att_list = "`Mitglieds-Nr`, Anrede, Vorname, Nachname, `Straße`, PLZ, Ort, Geburtsdatum, Eintrittsdatum, Austrittsdatum, Zahlungsart, Iban, Bic, Kontoinhaber, Mandatsreferenz, `KommE-Mail_P1`"
19         #                 0              1       2        3          4        5    6    7             8               9               10           11    12   13            14     15         16              17     
20     def all(self):
21         import datetime
22         
23         data_set = self.data_source.request(f"SELECT {self.att_list} FROM {self.file_name} WHERE Abteilung_1 = 'Standard'")
24         if type(data_set) is QError:
25             raise RuntimeError(data_set)
26         mm = []
27         for data in data_set:
28             eintrittsdatum = datetime.datetime.strptime(data[8], '%d.%m.%Y')
29             if eintrittsdatum > datetime.datetime.today():
30                 continue
31             if data[9] != "":
32                 austrittsdatum = datetime.datetime.strptime(data[9], '%d.%m.%Y')
33                 if austrittsdatum < datetime.datetime.today():
34                     continue
35             m = Mitglied()
36             m.mitgliedsnr    = data[0]
37             m.anrede = data[1]
38             m.vorname = data[2]
39             m.nachname = data[3]
40             m.strasse  = data[4]
41             # "Zusatzadresse"
42             m.plz      = data[5]
43             m.ort      = data[6]
44             
45             # "Land"
46             # "Titel"
47             # "Geschlecht"
48             # "Familienstand"
49             # m.geburtsdatum   = data[7]
50             # "Austrittsgrund"
51             # m.zahlungsart    = data[16]
52             m.iban           = data[11]
53             # m.bic            = data[18]
54             # "Kontonummer"
55             # "Bankleitzahl"
56             # "Kreditinstitut"
57             # m.kontoinhaber   = data[22]
58             # m.mandatsreferenz = data[23]
59             # m.debitorenkontonr = data[24]
60             # m.status           = data[25]
61             # "Branche"
62             # "Notfallnummer"
63             # "Notfallkontakt"
64             # m.email            = data[29] # "KommE-Mail_P1"
65             # "KommFax_P1"
66             # "KommMobil_P1"
67             # "KommWeb_P1"
68             # "KommTelefon_P1"
69             # "KommSkype_P1"
70             # m.abteilung_1      = data[35]
71             # m.abteilungseintritt_1 = data[36]
72             # m.abteilungsaustritt_1 = data[37]
73             # if data[67] == '""':
74             #     m.stammnummer = 0
75             # else:
76             #     m.stammnummer       = int(m.rd_opt_qval(data[67]))
77             # "Freifeldname_2"
78             # m.ver_grund           = m.rd_opt_qval(data[69])
79             # if len(m.ver_grund) == 0:
80             #     m.ver_grund = f"{m.strasse}, {m.plz} {m.ort}"
81             # "Freifeldname_3"
82             # m.zeitung             = data[71]
83             mm.append(m)
84         return mm
85     
86     def VersicherteGrundstucke(self, mitglied):
87         # Hole Basiseintrag
88         data_set = self.data_source.request(f"SELECT Freifeldwert_2 FROM {self.file_name} WHERE `Mitglieds-Nr` = {mitglied.mitgliedsnr}")
89         if data_set[0][0]:
90             gr = data_set[0][0]
91         else:
92             gr = f"{mitglied.strasse}, {mitglied.plz} {mitglied.ort}"
93         gst = [gr]
94         
95         # Suche nach weiteren Grunstücken
96         data_set = self.data_source.request(f"SELECT Freifeldwert_2 FROM {self.file_name} WHERE Freifeldname_1 = 'Partnernummer' AND Freifeldwert_1 = {mitglied.mitgliedsnr}")
97         for data in data_set:
98             if len(data[0]) > 0:
99                 gst.append(data[0])
100             else:
101                 gst.append(f"{mitglied.strasse}, {mitglied.plz} {mitglied.ort}")
102                 
103         return gst
104     
105 class Mitglied:
106     # TODO: In property verwandeln 
107     objects = MitgliederQuery()
108     def __init__(self):
109         pass
110     
111     def VersicherteGrundstucke(self):
112         return self.objects.VersicherteGrundstucke(self)