tenant letter nearly done
This commit is contained in:
@ -2,18 +2,16 @@ from db import dbGetMany, dbGetOne
|
||||
import datetime
|
||||
from loguru import logger
|
||||
from decimal import *
|
||||
from utils import getParam
|
||||
from Cheetah.Template import Template
|
||||
|
||||
|
||||
def perform(dbh, params):
|
||||
try:
|
||||
year = params['year']
|
||||
except KeyError:
|
||||
year = datetime.datetime.today().year
|
||||
year = getParam(params, 'year', datetime.datetime.today().year)
|
||||
startDate = datetime.datetime(year, 1, 1, 0, 0, 0)
|
||||
endDate = datetime.datetime(year, 12, 31, 23, 59, 59)
|
||||
premises = (1, 2)
|
||||
|
||||
|
||||
|
||||
# get overhead sums by object, category and timespan
|
||||
overheadSums = dbGetMany(
|
||||
dbh,
|
||||
@ -73,13 +71,12 @@ def perform(dbh, params):
|
||||
for overheadSum in overheadSums:
|
||||
logger.info(f"house: {overheadSum['house']}, considerMinusArea: {overheadSum['considerminusarea']}, category: {overheadSum['category']}, sum: {overheadSum['sum']}")
|
||||
|
||||
subtotal = {}
|
||||
for premise in premises:
|
||||
v = [ x['sum'] for x in overheadSums if x['house_id'] == premise ]
|
||||
logger.info(f"{v=}")
|
||||
subtotal[premise] = sum(v)
|
||||
logger.info(f"{subtotal=}")
|
||||
|
||||
#subtotal = {}
|
||||
#for premise in premises:
|
||||
# v = [ x['sum'] for x in overheadSums if x['house_id'] == premise ]
|
||||
# logger.info(f"{v=}")
|
||||
# subtotal[premise] = sum(v)
|
||||
# logger.info(f"{subtotal=}")
|
||||
|
||||
# get areas and factors
|
||||
totalAreas = {}
|
||||
@ -169,6 +166,11 @@ def perform(dbh, params):
|
||||
logger.info(f"{totalAreas=}")
|
||||
|
||||
|
||||
|
||||
|
||||
##### ATTENTION: SCRIPT ABORT TEMPORALY INSERTED HERE #####
|
||||
return
|
||||
###########################################################
|
||||
|
||||
|
||||
# get flat tenants by object and timespan with paid overhead and due overhead
|
||||
@ -178,10 +180,17 @@ def perform(dbh, params):
|
||||
"statement":
|
||||
"""
|
||||
select t.id as tenant_id,
|
||||
t.salutation as tenant_salutation,
|
||||
t.firstname as tenant_firstname,
|
||||
t.lastname as tenant_lastname,
|
||||
t.address1 as tenant_address1,
|
||||
t.address2 as tenant_address2,
|
||||
t.address3 as tenant_address3,
|
||||
t.zip as tenant_zip,
|
||||
t.city as tenant_city,
|
||||
f.id as flat_id,
|
||||
f.description as flat,
|
||||
f.area as flat_area,
|
||||
p.id as house_id,
|
||||
p.description as house,
|
||||
ty.startdate as startdate,
|
||||
@ -207,8 +216,9 @@ def perform(dbh, params):
|
||||
}
|
||||
)
|
||||
|
||||
letters = []
|
||||
for tenant in tenants:
|
||||
logger.info(f"firstname: {tenant['tenant_firstname']}, lastname: {tenant['tenant_lastname']}, house: {tenant['house']}, account: {tenant['tenant_account']}")
|
||||
letter = {}
|
||||
|
||||
paidTotal = dbGetOne(
|
||||
dbh,
|
||||
@ -228,6 +238,8 @@ def perform(dbh, params):
|
||||
}
|
||||
}
|
||||
)
|
||||
tenant['paid_total'] = paidTotal['sum']
|
||||
|
||||
receivableFee = dbGetOne(
|
||||
dbh,
|
||||
{
|
||||
@ -246,13 +258,33 @@ def perform(dbh, params):
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
logger.info(f"Payments: cnt: {paidTotal['cnt']}, sum: {paidTotal['sum']}")
|
||||
logger.info(f"Receivable fees: cnt: {receivableFee['cnt']}, sum: {receivableFee['sum']}")
|
||||
tenant['receivable_fee'] = receivableFee['sum']
|
||||
tenant['rent_time'] = receivableFee['cnt']
|
||||
|
||||
paidOverheadAdvance = paidTotal['sum'] - receivableFee['sum']
|
||||
logger.info(f"Paid overhead: {paidOverheadAdvance} (by month: {paidOverheadAdvance / Decimal(12)})")
|
||||
|
||||
tenant['paid_overhead'] = paidTotal['sum'] - receivableFee['sum']
|
||||
|
||||
letter['tenant'] = tenant
|
||||
letter['year'] = year
|
||||
letter['flat_area'] = totalAreas[tenant['house_id']]['flat_area']
|
||||
|
||||
letters.append(letter)
|
||||
|
||||
logger.info(f"{letter=}")
|
||||
|
||||
|
||||
printLetters = getParam(params, 'printLetters', False)
|
||||
if printLetters:
|
||||
letterTemplate = getParam(params, 'letterTemplate', 'jahresabrechnung.tmpl')
|
||||
letterPrefix = getParam(params, 'letterPrefix', 'letter')
|
||||
letterSuffix = getParam(params, 'letterSuffix', 'tex')
|
||||
|
||||
for letter in letters:
|
||||
logger.debug(f"Processing item: {letter}")
|
||||
outputFile = f"{letterPrefix}-{letter['tenant']['tenant_id']}.{letterSuffix}"
|
||||
tmpl = Template(file=letterTemplate, searchList=[ letter ])
|
||||
logger.debug(tmpl)
|
||||
with open(outputFile, 'w') as f:
|
||||
f.write(str(tmpl))
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user