Move all to subDir sustApp
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
# 3. assign manually
|
||||
|
||||
from database import Base, engine, SessionLocal
|
||||
from time import time
|
||||
from models import Payments_CSV, Payments, Members
|
||||
import logging, sys
|
||||
import datetime
|
||||
|
||||
def assign_by_reference(payments: Payments_CSV):
|
||||
for payment in payments:
|
||||
logging.debug(f'payment.pc_reference {payment.pc_reference}')
|
||||
reference = payment.pc_reference.split('-')
|
||||
if len(reference) == 1:
|
||||
reference = payment.pc_reference.split(' ')
|
||||
|
||||
if len(reference) == 4:
|
||||
addPayment(payment, reference[2], reference[0], payment.pc_amount)
|
||||
else:
|
||||
# more than one reference (e.g. 2024-4732-096-2,-097-1,-099-1)
|
||||
referenceList = payment.pc_reference.split(',')
|
||||
number_of_references = completeReference(referenceList=referenceList)
|
||||
amount = payment.pc_amount # assume that the payment is for all references
|
||||
|
||||
for reference in referenceList:
|
||||
referenceItem = reference.split('-')
|
||||
addPayment(payment, referenceItem[2], year=referenceItem[0], amount=amount/number_of_references*int(referenceItem[3]))
|
||||
|
||||
try:
|
||||
db.commit()
|
||||
except Exception as e:
|
||||
print(e)
|
||||
db.rollback()
|
||||
|
||||
def assign_by_name(payments: Payments_CSV):
|
||||
year = 2025 # pc_reference is empty
|
||||
removables = ('Dipl.', 'Ing.', 'Mag.')
|
||||
for payment in payments:
|
||||
logging.debug(f'payment.pc_intended {payment.pc_intended}')
|
||||
name = payment.pc_client.split(' ')
|
||||
for removeable in removables:
|
||||
while removeable in name: name.remove(removeable)
|
||||
|
||||
# last part is usually surname
|
||||
member = db.query(Members).filter(Members.member_surname.like(name[len(name)-1]), Members.member_firstname.like(name[0])).all()
|
||||
if len(member) > 1:
|
||||
logging.debug(f'More than one member with same name {payment.pc_client}')
|
||||
elif len(member) == 0:
|
||||
logging.debug(f'No member found with name {payment.pc_client}')
|
||||
else:
|
||||
# update Payments_CSV
|
||||
payment.pc_reference = f'{year}-4732-{member[0].id}-{member[0].member_count}'
|
||||
|
||||
#addPayment(payment, referenceItem[2], referenceItem[0], amount/number_of_references*int(referenceItem[3]))
|
||||
|
||||
try:
|
||||
db.commit()
|
||||
except Exception as e:
|
||||
print(e)
|
||||
db.rollback()
|
||||
|
||||
|
||||
def addPayment(payment, member_id, year, amount):
|
||||
newPayment = Payments(payment_date = payment.pc_valuta_date,
|
||||
member_id = member_id,
|
||||
payment_year = datetime.date(int(year),1,1),
|
||||
payment_amount = amount)
|
||||
|
||||
db.add(newPayment)
|
||||
payment.pc_processed = True
|
||||
|
||||
def completeReference(referenceList: list) -> int:
|
||||
number_of_references = 0
|
||||
i=0
|
||||
for reference in referenceList:
|
||||
referenceItem = reference.split('-')
|
||||
if referenceItem[0] == '':
|
||||
referenceItem.insert(1, referenceList[0].split('-')[0])
|
||||
referenceItem.insert(2, referenceList[0].split('-')[1])
|
||||
referenceItem.pop(0)
|
||||
|
||||
reference = '-'.join(referenceItem)
|
||||
referenceList[i]=reference
|
||||
i+=1
|
||||
|
||||
number_of_references += int(referenceItem[3])
|
||||
|
||||
return number_of_references
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
t = time()
|
||||
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
|
||||
logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
|
||||
|
||||
db = SessionLocal()
|
||||
Base.metadata.create_all(bind=engine)
|
||||
|
||||
# 1. create missing reference by name
|
||||
payments = db.query(Payments_CSV).filter(Payments_CSV.pc_intended!='', Payments_CSV.pc_reference=='', Payments_CSV.pc_processed!=True).all()
|
||||
assign_by_name(payments)
|
||||
|
||||
# 2. assign payment by reference
|
||||
payments = db.query(Payments_CSV).filter(Payments_CSV.pc_reference!='', Payments_CSV.pc_processed!=True).all()
|
||||
assign_by_reference(payments)
|
||||
|
||||
logging.debug(f"Time elapsed: " + str(time() - t) + " s.") #0.091s
|
||||
Reference in New Issue
Block a user