def edit_project(name, item_index): """ Adds Session class to the projects that cantains information on the various sessions that happened (ie. Recording session on a date or whatnot) """ os.system("clear") print('\nPlease choose a project to add a session to:\n') print(" Project Name") print(" " + "=" * 50) count = 1 for item in cfg.CLIENT_LIST[item_index].projects: print("[%s] " % count + item.name.ljust(50).title()) count += 1 print("\n") project_choice = fr_functions.check_if_number() - 1 session_date = time.strftime("%d/%m/%Y") print ("How long was the session length?") session_length = fr_functions.check_if_number() while True: service_name, service_exists, service_index = fr_functions.lookup( "service", cfg.SERVICES) if service_exists is True: cost = cfg.SERVICES["%s" % service_name.title()] * session_length cfg.CLIENT_LIST[item_index].projects[ project_choice].sessions.append(fr_classes.Sessions( session_date, service_name, session_length, cost, cfg.SERVICES["%s" % service_name.title()])) break else: fr_functions.alert("Service does not exist.") fr_functions.save_database() menu_main.projects_menu(name, item_index)
def new_invoice(): os.system('clear') client_name, client_exists, client_index = fr_functions.lookup( "client's", cfg.CLIENT_LIST) customer_info = [(cfg.CLIENT_LIST[client_index].first_name + " " + cfg.CLIENT_LIST[client_index].last_name), cfg.CLIENT_LIST[client_index].phone, cfg.CLIENT_LIST[client_index].street, cfg.CLIENT_LIST[client_index].city, cfg.CLIENT_LIST[client_index].country, cfg.CLIENT_LIST[client_index].zip_code] invoice_date = time.strftime("%d/%m/%Y") invoice_number = fr_functions.find_invoice_number() os.system("clear") print("\n\nWhich project are you invoicing:\n") print(" Project Name") print(" " + "=" * 50) count = 1 for item in cfg.CLIENT_LIST[client_index].projects: print("[%s] " % count + item.name.ljust(50).title()) count += 1 print("\n") project_choice = fr_functions.check_if_number() - 1 services_rendered = [] invoice_cost = 0 while True: control_date = cfg.CLIENT_LIST[client_index].projects[ project_choice].sessions[-1].date for item in cfg.CLIENT_LIST[client_index].projects[ project_choice].sessions: if item.date == control_date: services_rendered.append(item) invoice_cost = invoice_cost + item.cost break print("Total invoice cost will be $%s." % invoice_cost) print("Current discount for invoice is: $0") if fr_functions.verification(False) == 'n': print("What discount would you like to offer (in CAD dollars)?") discount = fr_functions.check_if_number() else: discount = 0 final_invoice_total = invoice_cost - discount cfg.INVOICES.append(fr_classes.Invoice(invoice_number, invoice_date, invoice_cost, discount, final_invoice_total, customer_info, services_rendered)) current_invoice = cfg.INVOICES[-1] fr_functions.save_database() fr_functions.write_to_csv(fr_functions.unpack_invoice_information( current_invoice)) fr_generate_invoice.make_invoice()
def view_project_sessions(name, item_index): os.system("clear") print("\n\nWhich project's sessions would you like to view:\n") print(" Project Name") print(" " + "=" * 50) count = 1 for item in cfg.CLIENT_LIST[item_index].projects: print("[%s] " % count + item.name.ljust(50).title()) count += 1 print("\n") project_choice = fr_functions.check_if_number() - 1 os.system('clear') print("\n\nProject Name: %s\n" % cfg.CLIENT_LIST[item_index].projects[ project_choice].name) print("Date".ljust(15) + "Session Service".ljust(20) + "Length " + "Session Cost") print("="*70) for item in cfg.CLIENT_LIST[item_index].projects[project_choice].sessions: print(str(item.date).ljust(15) + item.service.ljust(20) + str(item.length).ljust(11) + str(item.cost)) overall_project_cost = 0 for item in cfg.CLIENT_LIST[item_index].projects[project_choice].sessions: overall_project_cost = overall_project_cost + item.cost print("\nProject charges: $%s" % overall_project_cost) print("\n\nPress [return] to go back to Project Management.") choice = input("") menu_main.projects_menu(name, item_index)
def view_invoice(): os.system('clear') print("\n\nTo find specific invoices, please enter client's full name:") name = input(" >> ").title() temp_list = [] for item in cfg.INVOICES: if name == item.customer_info[0]: temp_list.append(item) elif name != item.customer_info[0] and item is cfg.INVOICES[-1] and ( not temp_list): fr_functions.alert("No such customer exists.") menu_main.invoice_menu() os.system("clear") print("\n\n\tShowing past invoices for:") print("\t" + temp_list[1].customer_info[0]) print("\t" + temp_list[1].customer_info[2]) print("\t" + temp_list[1].customer_info[3]) print("\t" + temp_list[1].customer_info[4]) print("\t" + temp_list[1].customer_info[5]) print("\n\n" + "Invoice No.".rjust(15) + " Invoice Date") print("=" * 40) count = 1 for item in temp_list: print(str(count).ljust(4) + str( item.invoice_number).rjust(11).zfill(5) + " " + item.invoice_date) count += 1 print("\nWhich invoice would you like to view:") view_invoice = fr_functions.check_if_number() - 1 current_invoice = temp_list[view_invoice] fr_functions.write_to_csv(fr_functions.unpack_invoice_information( current_invoice)) fr_generate_invoice.make_invoice() menu_main.main_menu()