import json import os from datetime import date from storage import load_json, save_json DATA_DIR = os.environ.get("DATA_DIR", os.path.join(os.path.dirname(__file__), "data")) INCOME_FILE = os.path.join(DATA_DIR, "income_log.json") INCOME_STREAMS = [ {"name": "Auto King", "owner": "Tony", "type": "paycheck"}, {"name": "Studio", "owner": "Bonna", "type": "business"}, {"name": "Bakery", "owner": "Bonna", "type": "business"}, {"name": "Car Flipping","owner": "Tony", "type": "business"}, {"name": "Misc", "owner": "Both", "type": "misc"}, ] OWNER_COLORS = { "Bonna": "#D4B8C5", "Tony": "#A0B8C5", "Both": "#B8A8D4", } def load_income_log(): return load_json(INCOME_FILE, []) def save_income_log(log): save_json(INCOME_FILE, log) def month_key(year, month): return f"{year}-{month:02d}" def income_by_month(year, month): log = load_income_log() mk = month_key(year, month) entries = [e for e in log if e.get("month") == mk] by_stream = {} for e in entries: s = e["stream"] by_stream[s] = by_stream.get(s, 0) + float(e.get("amount", 0)) return by_stream, entries def income_ytd(year): log = load_income_log() by_stream = {} by_month = {} for e in log: mk = e.get("month", "") if not mk.startswith(str(year)): continue s = e["stream"] amt = float(e.get("amount", 0)) by_stream[s] = by_stream.get(s, 0) + amt by_month[mk] = by_month.get(mk, 0) + amt return by_stream, by_month def log_income_entry(stream, amount, month_str, note="", entry_id=None): import uuid log = load_income_log() log.append({ "id": entry_id or str(uuid.uuid4()), "stream": stream, "amount": float(amount), "month": month_str, "date": date.today().isoformat(), "note": note, }) save_income_log(log) def delete_income_entry(entry_id): log = load_income_log() log = [e for e in log if e.get("id") != entry_id] save_income_log(log)