tenant letter nearly done

This commit is contained in:
2022-01-29 13:42:58 +01:00
parent b3a49b0fb6
commit f2f2100b8c
7 changed files with 156 additions and 169 deletions

View File

@ -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))