#5 Possibility to create a blank payment-sheet
This commit is contained in:
@@ -15,52 +15,72 @@ def print_multiple_lines(lines: int, text):
|
||||
text.textLines("")
|
||||
cnt += 1
|
||||
|
||||
def create_payment_slip(member: models.Members):
|
||||
def create_payment_slip(member: models.Members = None):
|
||||
locale.setlocale(locale.LC_ALL, '')
|
||||
|
||||
salutation = "Deine"
|
||||
salutation2 = "Dein"
|
||||
salutation3 = "Dich"
|
||||
salutation4 = "Solltest Du"
|
||||
salutation5 = "sende"
|
||||
subfolder = ""
|
||||
|
||||
w, h = A4
|
||||
|
||||
# create epc qr-code
|
||||
qrcode = helpers.make_epc_qr(name='Sportunion St. Thomas',
|
||||
iban='AT493443700000113407',
|
||||
amount=15*member.member_count,
|
||||
reference=f'2024-4732-{member.id:03}-{member.member_count}')
|
||||
qrcode.save("epc_qr.png", scale=2)
|
||||
if not member is None:
|
||||
qrcode = helpers.make_epc_qr(name='Sportunion St. Thomas',
|
||||
iban='AT493443700000113407',
|
||||
amount=15*member.member_count,
|
||||
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.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')
|
||||
|
||||
if not member is None:
|
||||
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)
|
||||
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}")
|
||||
else:
|
||||
text.textLine(f"{member.member_firstname} {member.member_surname} {member.member_suffix}")
|
||||
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"
|
||||
|
||||
if not member is None:
|
||||
if member.member_count > 1:
|
||||
text.textLine(f"{member.member_firstname_spouse} u. {member.member_firstname} {member.member_surname}")
|
||||
else:
|
||||
salutation_gender = "lieber"
|
||||
text.textLine(f"{salutation_gender.capitalize()} {member.member_firstname}!")
|
||||
text.textLine(f"{member.member_firstname} {member.member_surname} {member.member_suffix}")
|
||||
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')}')
|
||||
print_multiple_lines(5, text)
|
||||
@@ -81,23 +101,28 @@ def create_payment_slip(member: models.Members):
|
||||
# payment slip details
|
||||
text = c.beginText(11, 75)
|
||||
c.setFont("Helvetica", 8)
|
||||
text.textLine(f"Beitrag gesamt: {locale.format_string('%.2f', 15 * member.member_count)}")
|
||||
text.textLine(f"Mitgliedsnummer: 4732-{member.id:03}")
|
||||
if not member is None:
|
||||
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)
|
||||
|
||||
text = c.beginText(188, 103)
|
||||
c.setFont("Helvetica", 8)
|
||||
text.textLine(f"Bei Online-Zahlung bitte die Zahlungsreferenz 2024-4732-{member.id:03}-{member.member_count} eintragen")
|
||||
print_multiple_lines(1, text)
|
||||
if member.member_count > 1:
|
||||
text.textLine(f"Mitgliedsnummer: 4732-{member.id:03} {member.member_firstname_spouse} {member.member_suffix} {member.member_firstname} {member.member_surname}")
|
||||
else:
|
||||
text.textLine(f"Mitgliedsnummer: 4732-{member.id:03} {member.member_firstname} {member.member_surname}")
|
||||
c.drawText(text)
|
||||
if not member is None:
|
||||
text.textLine(f"Bei Online-Zahlung bitte die Zahlungsreferenz 2025-4732-{member.id:03}-{member.member_count} eintragen")
|
||||
print_multiple_lines(1, text)
|
||||
if member.member_count > 1:
|
||||
text.textLine(f"Mitgliedsnummer: 4732-{member.id:03} {member.member_firstname_spouse} {member.member_suffix} {member.member_firstname} {member.member_surname}")
|
||||
else:
|
||||
text.textLine(f"Mitgliedsnummer: 4732-{member.id:03} {member.member_firstname} {member.member_surname}")
|
||||
c.drawText(text)
|
||||
|
||||
c.setFont("Helvetica", 10)
|
||||
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(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.setFont("Helvetica", 10)
|
||||
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(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.save()
|
||||
@@ -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')
|
||||
Reference in New Issue
Block a user