#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("")
|
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()
|
||||||
@@ -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