diff --git a/sustApp/mail_payment_slips.py b/sustApp/mail_payment_slips.py index b410180..f65a43b 100644 --- a/sustApp/mail_payment_slips.py +++ b/sustApp/mail_payment_slips.py @@ -22,8 +22,18 @@ def payment_slip_delivered(member: models.Members, year: int): return db.query(models.Deliveries.delivery_date)\ .filter(models.Deliveries.member_id == member.id, extract('year', models.Deliveries.delivery_date) == year)\ .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): + paid = payment_slip_paid(member, year) + if paid: + logging.debug(f'Member: {member.member_surname} already paid!') + return + delivered = payment_slip_delivered(member, year) if delivered: logging.debug(f'Member: {member.member_surname} already mailed or delivered!') diff --git a/sustApp/print_payment_slips.py b/sustApp/print_payment_slips.py index 7b08e56..38a4660 100644 --- a/sustApp/print_payment_slips.py +++ b/sustApp/print_payment_slips.py @@ -6,22 +6,43 @@ from sqlalchemy.orm import Session import models from reportlab.lib.utils import ImageReader 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) db = SessionLocal() models.Base.metadata.create_all(bind=engine) #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( models.Members.member_active == True, models.Members.member_email == None, ).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: - 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() - logging.debug(f'Member: {member.member_surname}') - #logging.info('We processed %d records', len(processed_records)) + 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.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() \ No newline at end of file