from db import dbGetMany, dbGetOne from loguru import logger import datetime import iso8601 from utils import getParam from Cheetah.Template import Template def perform(dbh, params): year = getParam(params, 'year', datetime.datetime.today().year) accountEntries = dbGetMany( dbh, { "statement": "SELECT * FROM account_statement_v WHERE fiscal_year = %(year)s", "params": { 'year': year } } ) overview = dbGetMany( dbh, { "statement": "select sum(amount), category from account_statement_v where fiscal_year = %(year)s group by category", "params": { 'year': year } } ) sum_related = dbGetOne( dbh, { "statement": "select coalesce(sum(amount), 0::numeric(10,2)) as sum from account_statement_v where fiscal_year = %(year)s and category != 'nicht abrechenbare Positionen'", "params": { 'year': year } } ) sum_unrelated = dbGetOne( dbh, { "statement": "select coalesce(sum(amount), 0::numeric(10,2)) as sum from account_statement_v where fiscal_year = %(year)s and category = 'nicht abrechenbare Positionen'", "params": { 'year': year } } ) template = getParam(params, 'template', 'accountStatement.tmpl') input = { 'year': year, 'entries': accountEntries, 'overview': overview, 'related': sum_related, 'unrelated': sum_unrelated } tmpl = Template(file=template, searchList=[ input ]) print(tmpl)