These are the scenarios we'd like to be able to perform using TRACKER. 0. Create new login create new username and password. Optionally add personal profile. At first you'll have no role in any defined company. You have 2 choices: create a new company, in which you'll automatically be assigned the admin role; or contact the admin of predefined company and ask to be added to their staff. 1. worker data entry. Add line item. A line item consists of a date, project, description and hours. It will include an hourly rate, set up by the administrator (on a per person per project basis). It will include a budget, set by the administrator. As each line is entered, the worker will be able to see how much of a budget is left, both for themselves, overall for the project, and overall for the entire budget. Line items credit subbudgets set per person per project. 2. view worker entries. various sorts and filters are supported. Me/all workers. All projects/a project. All dates/a range. View also includes the hourly rate and invoice #, if any, and invoice status, if any (none, submitted-on-date, received-on-date, paid-out-on-date) View also includes the status of any budgets referenced. 3. Edit a worker entry. Only the owner or administrator can change a worker's entry. 4. Compose an invoice. The output will be a text file, comma delimited, suitable for import into a spreadsheet. The invoice number must be specified (or autogen?). The daterange must be specified. Included are project, daterange, hours, and rate. This usecase must be able to be repeated with the same inputs, with no alteration to rows already marked in the database. Invoices credit overall budgets. 5. Compose a budget. Administrator only. This involves setting an overall amount (agreed upon by client and Essential Bits), and a breakdown per project. Administrator can set hours and rates per person per project. 6. View all budgets 7. View all invoices. -----ROLES------ Each user has one or more roles. Roles are a function of the user's relationship with a particular company, except for the SuperUser who is the equivalent of 'root' on a unix system. Staff Contact AcctAdmin Staff: identifies that a person works for a contracted company. A staff person can login to tracker, and enter hours worked on a particular project. He has write privileges to Project Work, and Edit Profile. Within Project Work he can add new information only for projects with existing budgets allocations for him. He can view such allocations but not alter them He can send an email to the account administrator to request alterations. He can initiate invoicing to the companies he works for. Contact identifies that a person is a contact for a contracting (client) company. A contact appears on invoices generated to the client company. A contact can login to tracker and view contracts, projects and project work. She can view invoices and project budget allocations. She can edit her Profile and her company profile. AcctAdmin identifies a person responsible for a contracted company. Has a login to tracker and can Edit Profile, of course. Responsibilities include creating contracts with client companies, creating projects, allocating funds to staff people for projects, and invoicing the client company. He does not enter hours worked -- for that he must have a Staff role. SuperUser has a login on tracker. Has the ability to 'su' to any other user, and thus to accomplish what anyone on the system can. Activities done as another user are still logged in the database 'userid' maintenance field as the original superuser id. She also has screens where she can administer all users, all companies, all projects(?)