]> wagnertech.de Git - SVBaL.git/commitdiff
bazuna
authorMichael Wagner <michael@wagnertech.de>
Mon, 27 Jan 2025 21:28:52 +0000 (22:28 +0100)
committerMichael Wagner <michael@wagnertech.de>
Mon, 27 Jan 2025 21:28:52 +0000 (22:28 +0100)
python/eh_util/eh_app/qmodels.py
python/eh_util/eh_app/tests.py

index 83c6a85c28e3e8dee8190e1c4643b32a4ce0d0f0..b50354680b2f0538e55190d2b5d29bc910b92301 100644 (file)
@@ -14,62 +14,87 @@ class MitgliederQuery:
             H (header line): yes
         '''
         self.file_name = config.getInstance().requireConfig("DataFile")
-        self.att_list = "Mitglieds-Nr, Anrede, Vorname, Nachname, Strasse, PLZ, Ort, Geburtsdatum, Eintrittsdatum, Austrittsdatum, Zahlungsart, Iban, Bic, Kontoinhaber, Mandatsreferenz, Email, "
-        #               0              1        2         3        4    5    6             7               8               9            10    11   12            13               14     15           
+        self.att_list = "`Mitglieds-Nr`, Anrede, Vorname, Nachname, `Straße`, PLZ, Ort, Geburtsdatum, Eintrittsdatum, Austrittsdatum, Zahlungsart, Iban, Bic, Kontoinhaber, Mandatsreferenz, `KommE-Mail_P1`"
+        #                 0              1       2        3          4        5    6    7             8               9               10           11    12   13            14     15         16              17     
     def all(self):
-        data_set = self.data_source.request(f"SELECT {self.att_list} FROM {self.file_name} WHERE Abteilung_1 = 'Standard' AND Eintrittsdatum < NOW AND Austrittsdatum > NOW")
+        import datetime
+        
+        data_set = self.data_source.request(f"SELECT {self.att_list} FROM {self.file_name} WHERE Abteilung_1 = 'Standard'")
+        mm = []
         for data in data_set:
+            eintrittsdatum = datetime.datetime.strptime(data[8], '%d.%m.%Y')
+            if eintrittsdatum > datetime.datetime.today():
+                continue
+            if data[9] != "":
+                austrittsdatum = datetime.datetime.strptime(data[9], '%d.%m.%Y')
+                if austrittsdatum < datetime.datetime.today():
+                    continue
             m = Mitglied()
             m.mitgliedsnr    = data[0]
-            m.anrede = data[0]
-            m.vorname = data[1]
-            m.nachname = data[2]
-            m.strasse  = data[3]
+            m.anrede = data[1]
+            m.vorname = data[2]
+            m.nachname = data[3]
+            m.strasse  = data[4]
             # "Zusatzadresse"
-            m.plz      = data[4]
-            m.ort      = data[5]
+            m.plz      = data[5]
+            m.ort      = data[6]
+            
             # "Land"
             # "Titel"
             # "Geschlecht"
             # "Familienstand"
             # m.geburtsdatum   = data[7]
             # "Austrittsgrund"
-            m.zahlungsart    = data[16]
-            m.iban           = data[17]
-            m.bic            = data[18]
+            m.zahlungsart    = data[16]
+            m.iban           = data[17]
+            m.bic            = data[18]
             # "Kontonummer"
             # "Bankleitzahl"
             # "Kreditinstitut"
-            m.kontoinhaber   = data[22]
-            m.mandatsreferenz = data[23]
-            m.debitorenkontonr = data[24]
+            m.kontoinhaber   = data[22]
+            m.mandatsreferenz = data[23]
+            m.debitorenkontonr = data[24]
             # m.status           = data[25]
             # "Branche"
             # "Notfallnummer"
             # "Notfallkontakt"
-            m.email            = data[29] # "KommE-Mail_P1"
+            m.email            = data[29] # "KommE-Mail_P1"
             # "KommFax_P1"
             # "KommMobil_P1"
             # "KommWeb_P1"
             # "KommTelefon_P1"
             # "KommSkype_P1"
-            m.abteilung_1      = data[35]
-            m.abteilungseintritt_1 = data[36]
-            m.abteilungsaustritt_1 = data[37]
-            if data[67] == '""':
-                m.stammnummer = 0
-            else:
-                m.stammnummer       = int(m.rd_opt_qval(data[67]))
+            m.abteilung_1      = data[35]
+            m.abteilungseintritt_1 = data[36]
+            m.abteilungsaustritt_1 = data[37]
+            if data[67] == '""':
+                m.stammnummer = 0
+            else:
+                m.stammnummer       = int(m.rd_opt_qval(data[67]))
             # "Freifeldname_2"
-            m.ver_grund           = m.rd_opt_qval(data[69])
-            if len(m.ver_grund) == 0:
-                m.ver_grund = f"{m.strasse}, {m.plz} {m.ort}"
+            m.ver_grund           = m.rd_opt_qval(data[69])
+            if len(m.ver_grund) == 0:
+                m.ver_grund = f"{m.strasse}, {m.plz} {m.ort}"
             # "Freifeldname_3"
-            m.zeitung             = data[71]
-    def VersicherteGrundstucke(self, mitglied_id):
-        data_set = self.data_source.request(f"SELECT Freifeldwert_1 FROM {self.file_name} WHERE ")
-        
+            # m.zeitung             = data[71]
+            mm.append(m)
+        return mm
+    
+    def VersicherteGrundstucke(self, mitglied):
+        # Hole Basiseintrag
+        data_set = self.data_source.request(f"SELECT Freifeldwert_1 FROM {self.file_name} WHERE `Mitglieds-Nr` = {mitglied.mitgliedsnr}")
+        if data_set[0][0]:
+            gr = data_set[0][0]
+        else:
+            gr = f"{mitglied.strasse}, {mitglied.plz} {mitglied.ort}"
+        gst = [gr]
         
+        # Suche nach weiteren Grunstücken
+        data_set = self.data_source.request(f"SELECT Freifeldwert_2 FROM {self.file_name} WHERE Freifeldname_1 = 'Partnernummer' AND Freifeldwert_1 = {mitglied.mitgliedsnr}")
+        for data in data_set:
+            gst.append(data[0])
+        return gst
+    
 class Mitglied:
     # TODO: In property verwandeln 
     objects = MitgliederQuery()
@@ -77,5 +102,4 @@ class Mitglied:
         pass
     
     def VersicherteGrundstucke(self):
-        return self.objects.VersicherteGrundstucke(self.mitgliedsnr)
-
+        return self.objects.VersicherteGrundstucke(self)
index dd8e750daa39753f7a3fae9791cc0d21b6b22a25..3e78879861638f25cfe6e577eff09393636fd3db 100644 (file)
@@ -1,27 +1,30 @@
 from django.test import TestCase
 
 # Create your tests here.
+from .AWK import config
 
 class TestConfig(TestCase):
     def test_setter(self):
-        from .AWK import config
         cf = config.getInstance("svbal")
         cf.setConfig("bla", "blub")
         
         val = cf.getConfig("bla")
         assert (val == "blub")
 
-'''
 class TestQModel(TestCase):
+    def setUp(self):
+        cf = config.getInstance("svbal")
+        cf.setConfig("DataFile", "/home/sparky2021/SVBaL/tmp/Export_20240417-1104.csv")
+
     def test_allinstances(self):
-        
-        from .AWK import config
         config.getInstance("svbal")
-
         from eh_app.qmodels import Mitglied
-        
-        config.getInstance("svbal")
-        
-        data = Mitglied.objects.all()
-        print (data)
-'''
+        mm = Mitglied.objects.all()
+        assert (len(mm) == 199)
+        gst = mm[0].VersicherteGrundstucke()
+        assert (len(gst) == 1)
+        for m in mm:
+            if m.nachname == "Wagner":
+                gst = m.VersicherteGrundstucke()
+                assert (len(gst) == 3)
+        
\ No newline at end of file