Compare commits
6 Commits
e104dd8270
...
e7a3cb3d7d
| Author | SHA1 | Date | |
|---|---|---|---|
| e7a3cb3d7d | |||
| 2ba2ece1d0 | |||
| 0a0a7b321b | |||
| 85a53c8c5f | |||
| 8e2f0ae340 | |||
| 1cf835b7e7 |
3
TODO
3
TODO
@@ -1,4 +1,6 @@
|
||||
bills:
|
||||
bill for the year (when removed from LE, should be dynamic)
|
||||
|
||||
bills html, and growth types are poor code repitition / lame... could I do something more like:
|
||||
{% for gt in growth %}
|
||||
{% if gt.name == 'Min' %}
|
||||
@@ -13,4 +15,3 @@ CALC:
|
||||
* still get double health insurance bills sometimes (just viewing a new date might trigger this??? or at least when I changed years)
|
||||
|
||||
UI:
|
||||
* should try AI with how to distribute annotations better
|
||||
|
||||
2
bills.py
2
bills.py
@@ -304,7 +304,7 @@ def get_growth_value( bt, bill_type ):
|
||||
finance_data = get_finance_data()
|
||||
return finance_data['Inflation']
|
||||
else:
|
||||
match = re.match("flat-(\d+)", which )
|
||||
match = re.match(r"flat-(\d+)", which )
|
||||
if match:
|
||||
return int(match.group(1))
|
||||
else:
|
||||
|
||||
23
calc.py
23
calc.py
@@ -66,7 +66,7 @@ def calculate_savings_depletion(finance, bill_data, bill_type):
|
||||
CBA_price = finance['CBA_price']
|
||||
Ioniq6_future = finance['Ioniq6_future']
|
||||
|
||||
### COMPLEX tax implications with my leave I have not taken. It will be taxed in the year I 'quit' ###
|
||||
### COMPLEX tax implications with my leave I have not taken. It will be taxed in the financial year I 'quit' ###
|
||||
|
||||
# leave in days, 10 business days to a fortnight,
|
||||
# paid before tax I earn $7830.42 / fortnight. Tax on that will be at 37% or $4933.16 after tax
|
||||
@@ -76,27 +76,30 @@ def calculate_savings_depletion(finance, bill_data, bill_type):
|
||||
# this is what I now earn before-tax (and I *THINK* vehicle allowance won't be paid X 12 weeks)
|
||||
pre_tax_D_earning = 8143.65
|
||||
|
||||
# whenever I leave, I get 12 weeks (or 60 business days) + whatever leave they owe me
|
||||
payout = ((60+D_leave_owed_in_days)/bus_days_in_fortnight) * pre_tax_D_earning
|
||||
# whenever I quit, I get my leave paid out and I get 12 weeks (or 6 pays) -- notice
|
||||
payout = ((D_leave_owed_in_days/bus_days_in_fortnight) + 6) * pre_tax_D_earning
|
||||
|
||||
# just use redundancy calc...
|
||||
payout = 83115.84
|
||||
# payout = 83115.84
|
||||
print( f"leave payout gross={payout}" )
|
||||
|
||||
# However, if I quit in the next fin year - tax will be: $4,288 plus 30c for each $1 over $45,000
|
||||
# (assuming the 7830.42 * ~90/bus_days_in_fortnight = ~ $64k - > 45k and < $135k bracket is 30%)
|
||||
# (assuming the 7830.42 * ~90/bus_days_in_fortnight = ~ $64k - > 45k and < $135k bracket is 30% OR .37c for $135->$190k)
|
||||
# - IF I am close to $190k+, just wait a month and quit in new financial year
|
||||
# Given, I probably can't stop Deakin doing PAYG deductions, I won't get
|
||||
# the tax back until the end of the financial year, so work out the
|
||||
# amount of tax I will get back info: tax_diff_D_leave
|
||||
tax_on_leave = (payout - 45000)*.37 + 4288
|
||||
# amount of tax I will get back into: tax_diff_D_leave
|
||||
tax_on_leave = (payout - 45000)*.30 + 4288
|
||||
D_leave_after_tax = payout - tax_on_leave
|
||||
|
||||
# just use redunancy calc...
|
||||
D_leave_after_tax = 56518.77
|
||||
print(f"my calc would say D_leave_after_tax = {D_leave_after_tax}" )
|
||||
|
||||
# just use quick google/calc - it claims tax rules apply and are capped at 32% - its possible I get more like 75k then pay tax in July?
|
||||
D_leave_after_tax = 59000
|
||||
|
||||
tax_diff_D_leave = payout - D_leave_after_tax
|
||||
|
||||
### FIXME: for now, assume no tax back after leave - think this may be needed if I quit anytime nowish until end of Jun
|
||||
### FIXME: for now, assume no tax back after leave - see above comment
|
||||
tax_diff_D_leave = 0
|
||||
|
||||
print( f"tax_diff_D_leave: {tax_diff_D_leave}")
|
||||
|
||||
2
crontab
2
crontab
@@ -1,2 +1,2 @@
|
||||
# run once every 5 days or so
|
||||
0 23 2-27/5 * * finplan /code/snapshot.sh
|
||||
0 23 2-27/5 * * finplan cd /tmp && ENV="production" /code/snapshot.sh
|
||||
|
||||
2
db.py
2
db.py
@@ -190,7 +190,7 @@ def get_historical_data():
|
||||
def get_budget_data(finance_data):
|
||||
# annual bills - health ins (5k), rates (2.6), electricity (1.2), gas (2.1) - but 1.4 in 2025 due to EU trip, internet (1.6), car insurance (.7), rego (.8), house insurance (2.4), GFC (2.6), water (1.1), eweka (.1), phones (.5), melb. pollen (.03), nabu casa (.1) --- noting phone is elevated presuming I also go onto Aldi plan, but that there is no family discount, and health will be extra after stop working
|
||||
# fudging below - its more like 15.2 + health, and really gas will be more than 2.1 than 1.4, so about 16+5
|
||||
bills = 25357.07
|
||||
bills = 25321.03
|
||||
BUDGET=[]
|
||||
BUDGET.append( ('Bills', f"${bills:,.2f}") )
|
||||
BUDGET.append( ('Buffer', f"${finance_data['CBA']*finance_data['CBA_price']+finance_data['TLS']*finance_data['TLS_price']:,.2f}") )
|
||||
|
||||
6
main.py
6
main.py
@@ -50,7 +50,7 @@ def index():
|
||||
r.append( FP_VAR( 'Savings', 'Savings' ) )
|
||||
r.append( FP_VAR( 'Car Loan via Pay', 'Car_loan_via_pay', 'readonly' ) )
|
||||
r.append( FP_VAR( 'Living Expenses', 'Living_Expenses' ) )
|
||||
r.append( FP_VAR( 'Overseas Trip', 'Overseas_trip', 'date', 'col-auto', 'Overseas_trip_date' ) )
|
||||
r.append( FP_VAR( 'Overseas Trip', 'Overseas_trip', 'date', 'col', 'Overseas_trip_date' ) )
|
||||
DISP.append(r)
|
||||
|
||||
# Row 2
|
||||
@@ -59,7 +59,7 @@ def index():
|
||||
r.append( FP_VAR( 'Interest Rate', 'Interest_Rate' ) )
|
||||
r.append( FP_VAR( 'Car Loan (monthly)', 'Car_loan', 'readonly' ) )
|
||||
r.append( FP_VAR( 'Inflation', 'Inflation' ) )
|
||||
r.append( FP_VAR( 'Reno Costs', 'Mark_reno', 'date', 'col-auto', 'Mark_reno_date' ) )
|
||||
r.append( FP_VAR( 'Reno Costs', 'Mark_reno', 'date', 'col', 'Mark_reno_date' ) )
|
||||
DISP.append(r)
|
||||
|
||||
# Row 2
|
||||
@@ -72,7 +72,7 @@ def index():
|
||||
ss_opt.append( { 'val': el, 'label': f'{el} years' } )
|
||||
|
||||
r.append( FP_VAR( 'Sell Shares for:', 'Sell_shares', 'select', 'col-auto', '', ss_opt ) )
|
||||
r.append( FP_VAR( 'Car Buyout', 'Car_buyout', 'date', 'col-auto', 'Car_buyout_date' ) )
|
||||
r.append( FP_VAR( 'Car Buyout', 'Car_buyout', 'date', 'col', 'Car_buyout_date' ) )
|
||||
DISP.append(r)
|
||||
|
||||
# Row 3
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
DB_FILE="finance.db"
|
||||
if [ "$ENV" == "production" ]; then
|
||||
DB_FILE="/data/finance.db"
|
||||
else
|
||||
DB_FILE="./finance.db"
|
||||
fi
|
||||
HISTORY_TABLE="finance_history"
|
||||
# Current date in the format you've been using
|
||||
DATE_STR=$(date +%Y-%m-%d)
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<ul>
|
||||
<li>Savings (<a href='https://online.macquarie.com.au/personal/#/login'>Macquarie</a>
|
||||
+<a href='https://ib.mebank.com.au/authR5/ib/login.jsp'>ME bank</a>
|
||||
+<a href='https://ib.nab.com.au/login'>NAB</a>) -- noting ME bank is: $1000</li>
|
||||
+<a href='https://ib.nab.com.au/login'>NAB</a>) -- noting ME bank is: $934.07</li>
|
||||
<li><a href='https://www.google.com/search?q=asx+tls'>TLS</a>/<a href='https://www.google.com/search?q=asx+cba'>CBA</a> prices</li>
|
||||
<li>Macq <a href='https://www.macquarie.com.au/everyday-banking/savings-account.html'>Interest rate</a></li>
|
||||
<li><a href='https://deakinpeople.deakin.edu.au/psc/HCMP/EMPLOYEE/HRMS/c/NUI_FRAMEWORK.PT_AGSTARTPAGE_NUI.GBL?CONTEXTIDPARAMS=TEMPLATE_ID%3aPTPPNAVCOL&scname=ADMN_LEAVE&PTPPB_GROUPLET_ID=DU_LEAVE&CRefName=ADMN_NAVCOLL_3'>D_leave_owed_in_days</a> by: {{key_dates['D_quit_date']}}</li>
|
||||
@@ -326,17 +326,18 @@
|
||||
offset_y = -25
|
||||
{% if a['y'] > 400000 %}
|
||||
offset_x = -80 -30*(6-how_many_up)
|
||||
console.log('do the hack')
|
||||
{% else %}
|
||||
offset_x = -50 -10*how_many_up
|
||||
console.log('not hack')
|
||||
{% endif %}
|
||||
if( how_many_up > 3 )
|
||||
how_many_up=0
|
||||
{% endif %}
|
||||
|
||||
{% if a['y'] < 210000 %}
|
||||
offset_y -= 300
|
||||
{% if a['y'] < 250000 %}
|
||||
offset_y -= 350
|
||||
{% endif %}
|
||||
{% if a['y'] < 250000 and a['y'] > 200000 %}
|
||||
offset_x += 100
|
||||
{% endif %}
|
||||
annotations.push({
|
||||
labels: [{
|
||||
|
||||
Reference in New Issue
Block a user