Changing a bill (bill_data) now works, as does cancelling cleanly - this is now functional. I have renamed/improved the left-hand-side fields, right-hand-side next - to improve consistency between html and db and bill_data and bill_type

This commit is contained in:
2025-08-14 15:32:09 +10:00
parent 0c0745fe68
commit b02e03339e
6 changed files with 242 additions and 53 deletions

80
db.py
View File

@@ -84,13 +84,25 @@ def init_db():
FOREIGN KEY(comparison_set_id) REFERENCES comparison_set(id)
)''')
cur.execute('''CREATE TABLE IF NOT EXISTS bill_type (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name STRING
)''')
cur.execute('''CREATE TABLE IF NOT EXISTS bill_data (
id INTEGER PRIMARY KEY AUTOINCREMENT,
bill_type INTEGER,
amount INTEGER,
bill_date DATE,
FOREIGN KEY(bill_type) REFERENCES bill_type(id)
)''')
# Check if table is empty, if so insert default values
cur.execute('SELECT COUNT(*) FROM finance')
if cur.fetchone()[0] == 0:
###
# For now manually update below on the fortnight of the original pay shcedule to compare saved version vs. our reality. Update:
# Savings (Macq+me bank) -- noting ME bank is: $1434.3
# Savings (Macq+me bank) -- noting ME bank is: $1876.19, nab is 2727.95
# TLS/CBA prices
# Interest rate
# D_leave_owed_in_days
@@ -217,6 +229,7 @@ def get_comp_set_data(cset_id):
# do this for convenience in printing single last cset data point
COMP['date'], COMP['amount'] = COMP['savings_data'][-1]
conn.close()
return COMP
@@ -229,4 +242,69 @@ def get_comp_set_options(finance):
# get saved finance data for this comparison set
cur.execute( f"select id, name from comparison_set order by id" )
finance['COMP_SETS'].extend( cur.fetchall() )
conn.close()
return
def get_bill_data():
conn = connect_db(True)
cur = conn.cursor()
cur.execute('SELECT bd.id, bt.id as bill_type_id, bt.name, bd.amount, bd.bill_date FROM bill_type bt, bill_data bd where bt.id = bd.bill_type order by bt.name, bd.bill_date')
bd = cur.fetchall()
conn.close()
return bd
def get_bill_types():
conn = connect_db(True)
cur = conn.cursor()
cur.execute('SELECT id, name FROM bill_type order by name')
bt = cur.fetchall()
conn.close()
return bt
def new_bill( name, amount, bill_date ):
conn = connect_db(False)
cur = conn.cursor()
cur.execute( f"insert into bill_data ( 'bill_type', 'amount', 'bill_date' ) values ( '{name}', '{amount}', '{bill_date}' )" )
conn.commit()
conn.close()
return
def update_bill_data( id, name, amount, bill_date ):
conn = connect_db(False)
cur = conn.cursor()
cur.execute( f"update bill_data set bill_type =(select id from bill_type where name ='{name}'), amount='{amount}', bill_date='{bill_date}' where id = {id}" )
conn.commit()
conn.close()
return
def insert_bill_type( bt ):
conn = connect_db(False)
cur = conn.cursor()
cur.execute( f"insert into bill_type ( 'name' ) values ( '{bt}' )" )
conn.commit()
conn.close()
return
def update_bill_type(id, bill_type):
conn = connect_db(False)
cur = conn.cursor()
cur.execute( f"update bill_type set name ='{bill_type}' where id = {id}" )
conn.commit()
conn.close()
return
def delete_bill(id):
conn = connect_db(False)
cur = conn.cursor()
cur.execute( f"delete from bill_data where id = '{id}'" )
conn.commit()
conn.close()
return
def delete_bill_type( id ):
conn = connect_db(False)
cur = conn.cursor()
cur.execute( f"delete from bill_type where id = '{id}'" )
conn.commit()
conn.close()
return