Consider already paid membership fee

This commit is contained in:
2025-03-07 01:19:30 +01:00
parent 5ec80c325f
commit 53cc3fbc30
2 changed files with 36 additions and 5 deletions
+10
View File
@@ -22,8 +22,18 @@ def payment_slip_delivered(member: models.Members, year: int):
return db.query(models.Deliveries.delivery_date)\ return db.query(models.Deliveries.delivery_date)\
.filter(models.Deliveries.member_id == member.id, extract('year', models.Deliveries.delivery_date) == year)\ .filter(models.Deliveries.member_id == member.id, extract('year', models.Deliveries.delivery_date) == year)\
.count() .count()
def payment_slip_paid(member: models.Members, year: int):
return db.query(models.Payments.payment_year)\
.filter(models.Payments.member_id == member.id, extract('year', models.Payments.payment_year) == year)\
.count()
def send_mail(member: models.Members): def send_mail(member: models.Members):
paid = payment_slip_paid(member, year)
if paid:
logging.debug(f'Member: {member.member_surname} already paid!')
return
delivered = payment_slip_delivered(member, year) delivered = payment_slip_delivered(member, year)
if delivered: if delivered:
logging.debug(f'Member: {member.member_surname} already mailed or delivered!') logging.debug(f'Member: {member.member_surname} already mailed or delivered!')
+24 -3
View File
@@ -6,22 +6,43 @@ from sqlalchemy.orm import Session
import models import models
from reportlab.lib.utils import ImageReader from reportlab.lib.utils import ImageReader
import logging, sys import logging, sys
from sqlalchemy import extract
from config_loader import load_config
cfg = load_config()
year = cfg['year']
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG) logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
db = SessionLocal() db = SessionLocal()
models.Base.metadata.create_all(bind=engine) 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_email == None).all()
# TODO: Consider already printed slips or members that have paid already
members = db.query(models.Members).filter( members = db.query(models.Members).filter(
models.Members.member_active == True, models.Members.member_active == True,
models.Members.member_email == None, models.Members.member_email == None,
).all() ).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_([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_([50])).all() #members = db.query(models.Members).filter(models.Members.id.in_([204,205,206])).all()
for member in members: for member in members:
create_payment_slip(member=member) # TOOD: Add column payment_date to Payments
# create only, if not already delivered/paid
paid = db.query(models.Payments.payment_year)\
.filter(models.Payments.member_id == member.id, extract('year', models.Payments.payment_year) == year)\
.count()
if not paid:
delivered = db.query(models.Deliveries.delivery_date)\
.filter(models.Deliveries.member_id == member.id, extract('year', models.Deliveries.delivery_date) == year)\
.count()
if not delivered:
#create_payment_slip(member=member)
logging.debug(f'Member: {member.member_surname}') logging.debug(f'Member: {member.member_surname}')
#logging.info('We processed %d records', len(processed_records)) #logging.info('We processed %d records', len(processed_records))
else:
logging.debug(f'Skipping creation for Member: {member.member_surname} as already delivered!')
else:
logging.debug(f'Skipping creation for Member: {member.member_surname} as already paid!')
db.close()