39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
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() |