Files
SUST/sustApp/print_payment_slips.py
2026-06-25 11:19:08 +02:00

50 lines
2.2 KiB
Python

from reportlab.lib.pagesizes import A4
from create_payment_slip import create_payment_slip
from models.database import engine, SessionLocal
from pydantic import BaseModel
from sqlalchemy.orm import Session
import models.models as 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.current_state_code == 'A',
models.Members.member_email == None,
models.Members.member_primary == 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_([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_([15,207,166,195,52,179])).all()
members = db.query(models.Members).filter(models.Members.id.in_([108])).all()
for member in members:
# 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.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()