#6: General enhancements
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
{'maintainer': 'Markus Zimmerberger',
|
||||
'year': 2025,
|
||||
'map_params': {'metrics': ['euclidean', 'l1', 'manhattan'],
|
||||
'min_dist': [0.01, 0.1, 0.5],
|
||||
'spread': 1.0},
|
||||
'visualize_params': {'median_threshold': 6},
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
import yaml
|
||||
|
||||
def load_config(config_path="./sustApp/config.yaml"):
|
||||
with open(config_path, encoding='utf8') as f:
|
||||
return yaml.load(f, Loader=yaml.FullLoader)
|
||||
@@ -8,6 +8,11 @@ import datetime
|
||||
import locale
|
||||
|
||||
import os
|
||||
from config_loader import load_config
|
||||
|
||||
cfg = load_config()
|
||||
year = cfg['year']
|
||||
|
||||
|
||||
def print_multiple_lines(lines: int, text):
|
||||
cnt = 1
|
||||
@@ -32,7 +37,7 @@ def create_payment_slip(member: models.Members = 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}')
|
||||
reference=f'{year}-4732-{member.id:03}-{member.member_count}')
|
||||
qrcode.save("epc_qr.png", scale=2)
|
||||
|
||||
subfolder = "mail" if member.member_email else ""
|
||||
@@ -88,7 +93,7 @@ def create_payment_slip(member: models.Members = None):
|
||||
print_multiple_lines(2, text)
|
||||
text.textLines("* Skigymnastik\n* Radfahren\n* Stockschiessen\n* Pilates\n* Tagesskifahrt\n* uvam")
|
||||
print_multiple_lines(5, text)
|
||||
text.textLines(f"Wir möchten das Einheben des Mitgliedsbeitrags zuküntig einfacher machen, daher bitten wir {salutation3},\nuns eine Mail mit dem Betreff \"Zahlschein oder Abbucher\" an unsere Mail-Adresse sv.stthomas@gmx.at zu senden!")
|
||||
text.textLines(f"Wir möchten das Zustellen des Mitgliedsbeitrags-Zahlscheines zuküntig auf Mail umstellen, daher bitten wir {salutation3},\nuns eine Mail mit dem Betreff \"Zahlschein\" an unsere Mail-Adresse sv.stthomas@gmx.at zu senden!")
|
||||
print_multiple_lines(3, text)
|
||||
text.textLines(f"{salutation2.capitalize()} Sportverein-Team!")
|
||||
c.drawText(text)
|
||||
@@ -112,17 +117,21 @@ def create_payment_slip(member: models.Members = None):
|
||||
text = c.beginText(188, 103)
|
||||
c.setFont("Helvetica", 8)
|
||||
if not member is None:
|
||||
text.textLine(f"Bei Online-Zahlung bitte die Zahlungsreferenz 2025-4732-{member.id:03}-{member.member_count} eintragen")
|
||||
text.textLine(f"Bei Online-Zahlung bitte die Zahlungsreferenz {year}-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}")
|
||||
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}")
|
||||
text.textLine(f"Mitgliedsnummer: 4732-{member.id:03}, {member.member_firstname} {member.member_surname}")
|
||||
c.drawText(text)
|
||||
|
||||
c.setFont("Helvetica", 12)
|
||||
c.drawString(77, 50, f"{year}")
|
||||
c.drawString(300, 120, f"{year}")
|
||||
|
||||
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(188, h - 696, f'{year}-4732-{member.id:03}-{member.member_count}') # Zahlungsreferenz Zahlungsanweisung
|
||||
c.drawString(11, 120, f'{year}-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()
|
||||
@@ -1,3 +1,4 @@
|
||||
select * from members m where m.member_firstname like 'Josef'
|
||||
update members m set member_geo_latitude = null, member_geo_longitude = null
|
||||
where id in (110,107,45,21,19,108,36,24,22,18,35,162,90,3,142,122,121,115,9,128,79,78,50,186,183,180,176,157,148,98);
|
||||
|
||||
@@ -16,7 +17,7 @@ update members set member_city = 'Sankt Thomas' where member_city = 'St. Thomas'
|
||||
update members set member_city = trim(member_city)
|
||||
|
||||
insert into deliveries (delivery_date, member_id, delivered_by_id, delivery_year)
|
||||
values (now(), 78, 186, '2024-01-01'),
|
||||
values (now(), 204, 186, '2025-01-01') --,
|
||||
(now(), 79, 186, '2024-01-01'),
|
||||
(now(), 3, 186, '2024-01-01'),
|
||||
(now(), 4, 186, '2024-01-01'),
|
||||
@@ -69,13 +70,24 @@ select mp.member_surname, mp.member_firstname, mp.member_firstname_spouse from m
|
||||
select * from members_paid mp where id = 8
|
||||
|
||||
-- already paid? TODO: Member "active since?" attribute missing in "member"
|
||||
select m.* from members_active m
|
||||
select m.*
|
||||
from members_active m
|
||||
join deliveries d on d.member_id = m.id
|
||||
where m.id in (select id from members_delivered md
|
||||
except
|
||||
select id from members_paid mp where mp.payment_year = '2024-01-01')
|
||||
order by delivery_date asc
|
||||
|
||||
-- already delivered
|
||||
select m.*, d.*
|
||||
from members_active m
|
||||
right join deliveries d on d.member_id = m.id
|
||||
where d.delivery_year = '2025-01-01'
|
||||
order by delivery_date asc
|
||||
|
||||
select * from deliveries d
|
||||
where d.delivery_year = '2025-01-01'
|
||||
|
||||
insert into deliveries (delivery_date, member_id, delivery_year)
|
||||
select now(), ss.id, '2024-01-01' from
|
||||
(select id from members_active m
|
||||
|
||||
+10
-4
@@ -9,7 +9,7 @@ from sqlalchemy import *
|
||||
import logging
|
||||
import webbrowser
|
||||
import re
|
||||
|
||||
from config_loader import load_config
|
||||
|
||||
def payment_slip_delivered(member: models.Members, year: int):
|
||||
return db.query(models.Deliveries.delivery_date)\
|
||||
@@ -52,6 +52,9 @@ def checkEmail(email):
|
||||
else:
|
||||
return False
|
||||
|
||||
cfg = load_config()
|
||||
year = cfg['year']
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
#geolocator = Nominatim(user_agent="sust", timeout=10)
|
||||
@@ -92,8 +95,8 @@ marker_cluster = MarkerCluster().add_to(map)
|
||||
#folium.Marker([lat, lon], popup=str(name)+': '+color+'-'+str(clname), icon=folium.Icon(color='black',icon_color='#FFFF00')).add_to(feature_group)
|
||||
for member in members:
|
||||
if member.member_geo_latitude != None and member.member_geo_latitude != None:
|
||||
delivered = payment_slip_delivered(member, 2024)
|
||||
paid = payment_made(member, 2024)
|
||||
delivered = payment_slip_delivered(member, year)
|
||||
paid = payment_made(member, year)
|
||||
|
||||
iconColor = "blue"
|
||||
hasMail = checkEmail(member.member_email)
|
||||
@@ -111,7 +114,10 @@ for member in members:
|
||||
location = (member.member_geo_latitude, member.member_geo_longitude)
|
||||
folium.Marker(location=location,
|
||||
popup=f'{member.member_firstname} {member.member_surname}',
|
||||
tooltip=f'\nZugestellt & bezahlt' if (delivered and paid) else 'Nicht bezahlt' if not paid else 'Nicht zugestellt',
|
||||
tooltip=f'\nZugestellt & bezahlt' if (delivered and paid) else
|
||||
'Nicht zugestellt' if not delivered else
|
||||
'Zugestellt, aber nicht bezahlt' if delivered and not paid else
|
||||
'Weder zugestellt, noch bezahlt',
|
||||
icon=folium.Icon(color=iconColor))\
|
||||
.add_to(marker_cluster)
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ models.Base.metadata.create_all(bind=engine)
|
||||
#members = db.query(models.Members).filter(models.Members.member_email == None).all()
|
||||
#members = db.query(models.Members).filter(models.Members.member_active == True).all()
|
||||
#members = db.query(models.Members).filter(models.Members.id.in_([2,3,9,199]), models.Members.member_active == True, models.Members.member_printed == False).all()
|
||||
members = db.query(models.Members).filter(models.Members.id.in_([200])).all()
|
||||
members = db.query(models.Members).filter(models.Members.id.in_([50])).all()
|
||||
|
||||
for member in members:
|
||||
create_payment_slip(member=member)
|
||||
|
||||
Reference in New Issue
Block a user