Files
finplan/bills.py

42 lines
1.3 KiB
Python

from db import get_bill_data, get_bill_types, set_bill_type_growth
def derive_bill_data():
bd=get_bill_data()
bt=get_bill_types()
water_id = None
for t in bt:
if t['name'] == "Water":
water_id = t['id']
if not water_id:
return
total={}
total[water_id]={}
for yr in [2022, 2023, 2024]:
print( f"water_id={water_id}")
total[water_id][yr] = 0
for b in bd:
if b['bill_type_id'] == water_id and str(yr) in b['bill_date']:
total[water_id][yr] += b['amount']
print( f"{yr} => {b['bill_date']} -- {b['amount']}" )
print( f"total for water in {yr} is {total[water_id][yr]}" )
# once we have all yr totals:
growth = {}
growth[water_id] = {}
max_growth = {}
avg_growth = {}
max_growth[water_id] = 0
avg_growth[water_id] = 0
count = 0
for yr in [2023, 2024]:
growth[water_id][yr] = (total[water_id][yr] - total[water_id][yr-1]) / total[water_id][yr-1] * 100
avg_growth[water_id] += growth[water_id][yr]
count += 1
if growth[water_id][yr] > max_growth[water_id]:
max_growth[water_id] = growth[water_id][yr]
print( f"growth from {yr} to {yr-1} = {growth}%")
print( f"Max growth was: {max_growth[water_id]}" )
print( f"Avg growth is: {avg_growth[water_id]/count}" )
set_bill_type_growth( water_id, avg_growth[water_id]/count )