#5 Possibility to create a blank payment-sheet

This commit is contained in:
2025-02-27 18:11:30 +01:00
parent b63f4ef370
commit 8516d270f4
2 changed files with 82 additions and 49 deletions
+74 -49
View File
@@ -15,52 +15,72 @@ def print_multiple_lines(lines: int, text):
text.textLines("") text.textLines("")
cnt += 1 cnt += 1
def create_payment_slip(member: models.Members): def create_payment_slip(member: models.Members = None):
locale.setlocale(locale.LC_ALL, '') locale.setlocale(locale.LC_ALL, '')
salutation = "Deine"
salutation2 = "Dein"
salutation3 = "Dich"
salutation4 = "Solltest Du"
salutation5 = "sende"
subfolder = ""
w, h = A4 w, h = A4
# create epc qr-code # create epc qr-code
qrcode = helpers.make_epc_qr(name='Sportunion St. Thomas', if not member is None:
iban='AT493443700000113407', qrcode = helpers.make_epc_qr(name='Sportunion St. Thomas',
amount=15*member.member_count, iban='AT493443700000113407',
reference=f'2024-4732-{member.id:03}-{member.member_count}') amount=15*member.member_count,
qrcode.save("epc_qr.png", scale=2) reference=f'2025-4732-{member.id:03}-{member.member_count}')
qrcode.save("epc_qr.png", scale=2)
subfolder = "mail" if member.member_email else ""
fullfilepath = os.path.join(os.path.expanduser("~"),"sust","payment_slips",subfolder,f"{member.member_zip}_payment_slip_member{member.id}.pdf")
else:
fullfilepath = os.path.join(os.path.expanduser("~"),"sust","payment_slips",subfolder,f"4732_payment_slip_blanko.pdf")
# Ensure the directory exists
os.makedirs(os.path.dirname(fullfilepath), exist_ok=True)
subfolder = "mail" if member.member_email else ""
fullfilepath = os.path.join(os.getenv('APPDATA'), "sust", "payment_slips",subfolder,f"{member.member_zip}_payment_slip_member{member.id}.pdf")
c = canvas.Canvas(fullfilepath, pagesize=A4) c = canvas.Canvas(fullfilepath, pagesize=A4)
c.drawImage(image="epc_qr.png", x=500, y=40) # epc qr if not member is None:
c.drawImage(image="Sportunion quer 4c.png", x=(w-180), y=(h-100), width=150, height=50, mask='auto') c.drawImage(image="epc_qr.png", x=500, y=40) # epc qr
#c.drawImage(image="Sportunion quer 4c.png", x=(w-180), y=(h-100), width=150, height=50, mask='auto')
image_path = os.path.join(os.path.dirname(__file__), "Sportunion quer 4c.png")
c.drawImage(image=image_path, x=(w-180), y=(h-100), width=150, height=50, mask='auto')
c.setFont("Helvetica", 9) c.setFont("Helvetica", 9)
text = c.beginText(60, h - 150) text = c.beginText(60, h - 150)
if member.member_count > 1:
text.textLine(f"{member.member_firstname_spouse} u. {member.member_firstname} {member.member_surname}") if not member is None:
else: if member.member_count > 1:
text.textLine(f"{member.member_firstname} {member.member_surname} {member.member_suffix}") text.textLine(f"{member.member_firstname_spouse} u. {member.member_firstname} {member.member_surname}")
text.textLine(f"{member.member_street} {member.member_streetnumber}")
text.textLine(f"{member.member_zip} {member.member_city}")
print_multiple_lines(5, text)
if member.member_count > 1:
salutation = "eure"
salutation2 = "euer"
salutation3 = "euch"
salutation4 = "Solltet ihr"
salutation5 = "sendet"
text.textLine(f"Liebe {member.member_firstname_spouse} und lieber {member.member_firstname}!")
else:
salutation = "Deine"
salutation2 = "Dein"
salutation3 = "Dich"
salutation4 = "Solltest Du"
salutation5 = "sende"
if member.member_gender == "female":
salutation_gender = "liebe"
else: else:
salutation_gender = "lieber" text.textLine(f"{member.member_firstname} {member.member_surname} {member.member_suffix}")
text.textLine(f"{salutation_gender.capitalize()} {member.member_firstname}!") text.textLine(f"{member.member_street} {member.member_streetnumber}")
text.textLine(f"{member.member_zip} {member.member_city}")
print_multiple_lines(5, text)
if member.member_count > 1:
salutation = "eure"
salutation2 = "euer"
salutation3 = "euch"
salutation4 = "Solltet ihr"
salutation5 = "sendet"
text.textLine(f"Liebe {member.member_firstname_spouse} und lieber {member.member_firstname}!")
else:
salutation = "Deine"
salutation2 = "Dein"
salutation3 = "Dich"
salutation4 = "Solltest Du"
salutation5 = "sende"
if member.member_gender == "female":
salutation_gender = "liebe"
else:
salutation_gender = "lieber"
text.textLine(f"{salutation_gender.capitalize()} {member.member_firstname}!")
else:
print_multiple_lines(10, text)
c.drawString(w - 150, h - 225, f'St. Thomas, {datetime.date.today().strftime('%x')}') c.drawString(w - 150, h - 225, f'St. Thomas, {datetime.date.today().strftime('%x')}')
print_multiple_lines(5, text) print_multiple_lines(5, text)
@@ -81,23 +101,28 @@ def create_payment_slip(member: models.Members):
# payment slip details # payment slip details
text = c.beginText(11, 75) text = c.beginText(11, 75)
c.setFont("Helvetica", 8) c.setFont("Helvetica", 8)
text.textLine(f"Beitrag gesamt: {locale.format_string('%.2f', 15 * member.member_count)}") if not member is None:
text.textLine(f"Mitgliedsnummer: 4732-{member.id:03}") text.textLine(f"Beitrag gesamt: {locale.format_string('%.2f', 15 * member.member_count)}")
text.textLine(f"Mitgliedsnummer: 4732-{member.id:03}")
else:
text.textLine(f"Beitrag gesamt: {locale.format_string('%.2f', 15)}")
text.textLine(f"Mitgliedsnummer: 4732-NEU")
c.drawText(text) c.drawText(text)
text = c.beginText(188, 103) text = c.beginText(188, 103)
c.setFont("Helvetica", 8) c.setFont("Helvetica", 8)
text.textLine(f"Bei Online-Zahlung bitte die Zahlungsreferenz 2024-4732-{member.id:03}-{member.member_count} eintragen") if not member is None:
print_multiple_lines(1, text) text.textLine(f"Bei Online-Zahlung bitte die Zahlungsreferenz 2025-4732-{member.id:03}-{member.member_count} eintragen")
if member.member_count > 1: print_multiple_lines(1, text)
text.textLine(f"Mitgliedsnummer: 4732-{member.id:03} {member.member_firstname_spouse} {member.member_suffix} {member.member_firstname} {member.member_surname}") if member.member_count > 1:
else: text.textLine(f"Mitgliedsnummer: 4732-{member.id:03} {member.member_firstname_spouse} {member.member_suffix} {member.member_firstname} {member.member_surname}")
text.textLine(f"Mitgliedsnummer: 4732-{member.id:03} {member.member_firstname} {member.member_surname}") else:
c.drawText(text) text.textLine(f"Mitgliedsnummer: 4732-{member.id:03} {member.member_firstname} {member.member_surname}")
c.drawText(text)
c.setFont("Helvetica", 10) c.setFont("Helvetica", 10)
c.drawString(188, h - 696, f'2024-4732-{member.id:03}-{member.member_count}') # Zahlungsreferenz Zahlungsanweisung c.drawString(188, h - 696, f'2024-4732-{member.id:03}-{member.member_count}') # Zahlungsreferenz Zahlungsanweisung
c.drawString(11, 120, f'2024-4732-{member.id:03}-{member.member_count}') # Zahlungsreferenz Auftragsbestätigung c.drawString(11, 120, f'2024-4732-{member.id:03}-{member.member_count}') # Zahlungsreferenz Auftragsbestätigung
c.drawString(130, h - 694, (locale.format_string('%.2f', 15 * member.member_count))) # Betrag Auftragsbestätigung c.drawString(130, h - 694, (locale.format_string('%.2f', 15 * member.member_count))) # Betrag Auftragsbestätigung
c.drawString(w - 30, 170, (locale.format_string('%.2f', 15 * member.member_count))) # Betrag Zahlungsanweisung c.drawString(w - 30, 170, (locale.format_string('%.2f', 15 * member.member_count))) # Betrag Zahlungsanweisung
c.save() c.save()
+8
View File
@@ -0,0 +1,8 @@
from create_payment_slip import create_payment_slip
import logging, sys
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
create_payment_slip()
logging.debug(f'Empty payment slip created')