v2.0
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
import sys
|
||||
import os
|
||||
from utils import load_config, load_json, save_json, get_next_id
|
||||
|
||||
config = load_config()
|
||||
PROJECTS_FILE = os.path.join(config["DataDirectory"], "Projects.json")
|
||||
CLIENTS_FILE = os.path.join(config["DataDirectory"], "Clients.json")
|
||||
|
||||
def main():
|
||||
proj_data = load_json(PROJECTS_FILE, {"Projects": []})
|
||||
client_data = load_json(CLIENTS_FILE, {"Clients": []})
|
||||
|
||||
print("\n--- Project Maintenance ---")
|
||||
print("1. Add new project")
|
||||
print("4. View all projects")
|
||||
|
||||
choice = input("Select an option: ")
|
||||
|
||||
if choice == "1":
|
||||
client_id = input("Enter Client ID: ")
|
||||
rate = float(input("Billing Rate (0 to use client default): "))
|
||||
new_project = {
|
||||
"ProjectID": get_next_id("PRJ", proj_data["Projects"], "ProjectID"),
|
||||
"ClientID": client_id,
|
||||
"Name": input("Project Name: "),
|
||||
"BillingRate": rate,
|
||||
"Active": True
|
||||
}
|
||||
proj_data["Projects"].append(new_project)
|
||||
save_json(PROJECTS_FILE, proj_data)
|
||||
print(f"Added project {new_project['Name']} ({new_project['ProjectID']})")
|
||||
|
||||
elif choice == "4":
|
||||
for p in proj_data["Projects"]:
|
||||
status = "Active" if p["Active"] else "Inactive"
|
||||
print(f"[{p['ProjectID']}] {p['Name']} (Client: {p['ClientID']}) - Rate: ${p['BillingRate']} - {status}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user