+++ /dev/null
-#!/usr/bin/python3
-
-import sys
-
-"""
-Testaufruf:
-./ausweis.py Michael Wagner "25.5.1965" MitgliederausweisSVBaLVorlage_leer.pdf ./
-"""
-
-class Mitglied:
- def __init__(self, nachname, vorname, geburtsdatum):
- self.nachname = nachname
- self.vorname = vorname
- self.geburtsdatum = geburtsdatum
-
-def erzeuge_ausweis(mitglied: Mitglied, hintergrund_pdf, ausgabe_pfad):
- from PyPDF2 import PdfFileWriter, PdfFileReader
- import io
- from reportlab.pdfgen import canvas
- from reportlab.lib.pagesizes import letter
-
- packet = io.BytesIO()
- can = canvas.Canvas(packet, pagesize=letter)
- can.setFont("Helvetica", 12)
- can.drawString(460, 110, "235147")
- can.drawString(330, 80, mitglied.vorname+" "+mitglied.nachname)
- can.setFont("Helvetica", 9)
- can.drawString(400, 56, mitglied.geburtsdatum)
- can.drawString(400, 42, "1.3.2012")
- can.drawString(400, 20, "Gleiwitzer Str. 28")
-
- can.save()
-
- #move to the beginning of the StringIO buffer
- packet.seek(0)
-
- # create a new PDF with Reportlab
- new_pdf = PdfFileReader(packet)
- # read your existing PDF
- existing_pdf = PdfFileReader(open(hintergrund_pdf, "rb"))
- output = PdfFileWriter()
- # add the "watermark" (which is the new pdf) on the existing page
- page = existing_pdf.pages[0]
- page.mergePage(new_pdf.pages[0])
- output.addPage(page)
- # finally, write "output" to a real file
- output_stream = open(outpath+"destination.pdf", "wb")
- output.write(output_stream)
- output_stream.close()
-
-if __name__ == "__main__":
- if len(sys.argv) == 6:
- nachname = sys.argv[1]
- vorname = sys.argv[2]
- geburtsdatum = sys.argv[3]
- infile = sys.argv[4]
- outpath = sys.argv[5]
- else:
- print ("Nachname: ")
- nachname = input()
- print ("Vorname:")
- vorname = input()
- print ("Geburtsdatum:")
- geburtsdatum = input()
- print ("Input-Datei: ")
- infile = input()
- print ("Ausgabepfad:")
- outpath = input()
-
- mitglied = Mitglied(nachname, vorname, geburtsdatum)
- erzeuge_ausweis(mitglied,infile, outpath)
-
'''
self.datei_name = datei_name
self.mitglieder = {}
+ self.get_merker = 0
dh = open(datei_name)
line = dh.readline().rstrip()
for kopf in export_header:
if kopf[0] == '"':
kopf = kopf[1:-1]
- if kopf == 'Freifeldwert_1':
+ if kopf == 'Mitglieds-Nr':
sv_pn_spalte = i
i += 1
pn = pn[1:-1]
pn = int(pn)
self.mitglieder[pn] = Mitglied(data)
+ # setze zusätzliche Mitgliedschaften im Stamm
+ for mnr in self.mitglieder:
+ if self.mitglieder[mnr].stammnummer > 0:
+ self.mitglieder[self.mitglieder[mnr].stammnummer].add_weitere_mitgliedschaft(mnr)
+
+ def get(self, mnr = None):
+ if mnr:
+ return self.mitglieder[mnr]
+ if self.get_merker == 0:
+ for m in self.mitglieder:
+ self.get_merker = m
+ return self.mitglieder[m]
+ return_next = False
+ for m in self.mitglieder:
+ if return_next:
+ self.get_merker = m
+ return self.mitglieder[m]
+ if m == self.get_merker:
+ return_next = True
+ return None
--- /dev/null
+#!/usr/bin/python3
+
+import sys
+from AWK.mitglied import Mitglied
+
+"""
+Testaufruf:
+./ausweis.py Michael Wagner "25.5.1965" MitgliederausweisSVBaLVorlage_leer.pdf ./
+"""
+
+def erzeuge_ausweis(mitglied: Mitglied, ausgabetext, hintergrund_pdf, ausgabe_pfad):
+ from PyPDF2 import PdfFileWriter, PdfFileReader
+ from datetime import date
+ import io
+ from reportlab.pdfgen import canvas
+ from reportlab.lib.pagesizes import letter
+
+ packet = io.BytesIO()
+ can = canvas.Canvas(packet, pagesize=letter)
+
+ # Adressfeld
+ can.setFont("Helvetica", 12)
+ can.drawString(70, 640, mitglied.anrede)
+ can.drawString(70, 625, mitglied.vorname+" "+mitglied.nachname)
+ can.drawString(70, 610, mitglied.strasse)
+ can.drawString(70, 580, mitglied.plz+" "+mitglied.ort)
+
+ # Datum
+ can.setFont("Helvetica", 9)
+ can.drawString(350, 520, "München, "+date.today().strftime('%d.%m.%Y'))
+
+ # Anschreiben
+ can.drawString(70, 500, mitglied.anrede+" "+mitglied.nachname+",")
+ text = can.beginText(70, 480)
+ text.textLines(ausgabetext)
+ can.drawText(text)
+
+
+ can.line(20, 180, 560, 180)
+
+ # Ausweis
+ can.setFont("Helvetica", 12)
+ can.drawString(460, 110, mitglied.mitgliedsnr)
+ can.drawString(330, 80, mitglied.vorname+" "+mitglied.nachname)
+ can.setFont("Helvetica", 9)
+ can.drawString(400, 56, mitglied.geburtsdatum)
+ can.drawString(400, 42, mitglied.eintrittsdatum)
+ can.drawString(400, 20, mitglied.ver_grund)
+
+
+ can.save()
+
+ #move to the beginning of the StringIO buffer
+ packet.seek(0)
+
+ # create a new PDF with Reportlab
+ new_pdf = PdfFileReader(packet)
+ # read your existing PDF
+ existing_pdf = PdfFileReader(open(hintergrund_pdf, "rb"))
+ output = PdfFileWriter()
+ # add the "watermark" (which is the new pdf) on the existing page
+ page = existing_pdf.pages[0]
+ page.mergePage(new_pdf.pages[0])
+ output.addPage(page)
+ # finally, write "output" to a real file
+ output_stream = open(ausgabe_pfad, "wb")
+ output.write(output_stream)
+ output_stream.close()
+
+if __name__ == "__main__":
+ if len(sys.argv) == 6:
+ nachname = sys.argv[1]
+ vorname = sys.argv[2]
+ geburtsdatum = sys.argv[3]
+ infile = sys.argv[4]
+ outpath = sys.argv[5]
+ else:
+ print ("Nachname: ")
+ nachname = input()
+ print ("Vorname:")
+ vorname = input()
+ print ("Geburtsdatum:")
+ geburtsdatum = input()
+ print ("Input-Datei: ")
+ infile = input()
+ print ("Ausgabepfad:")
+ outpath = input()
+
+ mitglied = Mitglied(nachname, vorname, geburtsdatum)
+ erzeuge_ausweis(mitglied,infile, outpath)
+
@author: sparky2021
'''
-from voluptuous.schema_builder import Self
-
class Mitglied(object):
'''
classdocs
'''
+ def rd_opt_qval(self, s):
+ if s[0] == '"':
+ s = s[1:-1]
+ return s
def __init__(self, data):
'''
Constructor
'''
+ self.weitere_mitgliedschaften = []
self.anrede = data[0]
self.vorname = data[1]
self.nachname = data[2]
- self.strasse = data[3]
+ self.strasse = self.rd_opt_qval(data[3])
# "Zusatzadresse"
self.plz = data[5]
self.ort = data[6]
# "Titel"
# "Geschlecht"
# "Familienstand"
- # "Mitglieds-Nr"
- self.geburtsdatum = data[12]
+ self.mitgliedsnr = self.rd_opt_qval(data[11])
+ self.geburtsdatum = data[12]
self.eintrittsdatum = data[13]
self.austrittsdatum = data[14]
# "Austrittsgrund"
# "BeitragGB5Gesperrt_1_1"
# "BeitragZahlweiseGesperrt_1_1"
# "Freifeldname_1"
- self.partnernummer = data[67]
+ if data[67] == '""':
+ self.stammnummer = 0
+ else:
+ self.stammnummer = int(self.rd_opt_qval(data[67]))
# "Freifeldname_2"
- self.ver_grund = data[69]
+ self.ver_grund = self.rd_opt_qval(data[69])
+ if len(self.ver_grund) == 0:
+ self.ver_grund = f"{self.strasse}, {self.plz} {self.ort}"
# "Freifeldname_3"
self.zeitung = data[71]
+ def add_weitere_mitgliedschaft(self, pn):
+ self.weitere_mitgliedschaften.append(pn)
+
+
\ No newline at end of file
from AWK.SVereinControl import SVereinDatei
+from AWK import ausweis
import sys
def mytest(datei_name):
daten = SVereinDatei(datei_name)
print ("Daten geladen")
-
+ m = daten.get()
+ while m:
+ if m.abteilung_1 == "Standard":
+ austxt = "Ihr Beitrag für 2024 setzt sich wie folgt zusammen:\n"
+ austxt += f"Standardmitgliedschaft ({m.ver_grund}): 39.-"
+ betrag = 39
+ weitere = m.weitere_mitgliedschaften
+ for weitere_mnr in weitere:
+ wm = daten.get(weitere_mnr)
+ austxt += f"\nZusatzgrundstück ({wm.ver_grund}): 32.-"
+ betrag += 32
+ if len(m.iban) > 0:
+ iban = m.iban[0:3]+"XXXXXXXXXXXXX"+m.iban[-4:]
+ austxt += f"\n\nDer Betrag von {betrag}.- wird von Ihrem Konto {iban} eingezogen."
+ else:
+ austxt += f"\n\nBitte überweisen Sie den offnen Betrag von {betrag}.- auf unser Konto TODO."
+ austxt += "\n\nBitte beachten Sie die Einladung zu unserer Hauptversammlung in der Anlage."
+ austxt += "\n\nMit freundlichen Grüßen,\nMichael Wagner\n(Vorstand)"
+ ausweis.erzeuge_ausweis(m, austxt, "MitgliederausweisSVBaLVorlage_leer.pdf", f"Ausweis_{m.mitgliedsnr}_{m.nachname}.pdf")
+ #return
+ m = daten.get()
+ print ("Ausweise erstellt.")
if __name__ == '__main__':
numArgs = len(sys.argv)
if (numArgs != 2):
raise RuntimeError("usage: MyTest DATEI")
- mytest(sys.argv[1])
\ No newline at end of file
+ mytest(sys.argv[1])
+