Xprest System Requirements
Xprest System Requirements
The IT development team spent the better part of the day with the subject matter experts (together, the core team) to discern the desired functionality and constraints on the proposed expense reporting system, code named Xprest. The following represents the core team's findings.
Note to reader: Because this project is for learning purposes, much of the functionality you would expect in a complete expense reporting system has been left out. For instance, this project will not implement currency conversions, a tiered approval process, billable expenses, credit card management, receipt processing, and corporate policy compliance.
Authentication and User Management
Note to reader: In the real world we would almost certainly have to integrate with a single sign on solution and an enterprise directory, but that's beyond the scope of this project. For now, user's will be maintained locally to the system. However, this is subject to change.
- All users must authenticate to the system using a username and password.
- All users are employees
- All employees have one manager for approval
- Users have:
- First name
- Last name
- User name
- Password (encrypted, salted)
- Department
- Roles
Roles and Authtorization
From the Xprest point of view we have identified the following roles and permissions:
| Role | Permissions |
| User | Can create, view, and edit expense reports created by them. Everyone is a user |
| Approver | Can approve or reject expense reports submitted by her direct reports. Can view her direct report's submitted and approved expenses. Can view summary data about her report's expenses. A user is an approver if they have another user as a direct report. |
| Department Manager | Can view expenses submitted or approved by members of her department. Can view summary date about here report's expenses |
| Admin | Can administer the system, e.g. create users, assign $/mile, etc. |
| Accountant | Can access summary information regarding all expenses. (Note, it is expected that the Accountant role is used by both humans and remote software.) |
Expense Report Management
Expenses in Xprest are not weekly, as they are in the current spreadsheet version is. Instead the SMEs would like to track expenses by event. Expense period can be any time encompassed by that event. There is one event per expense report, even if multiple events took place simultaneously or contiguously.
For instance, a simple expense report might be for the "PostgreSQL training," take place over three days, and that's it. On the other extreme a salesperson might be on the road for a week attending a trade show while visiting clients. In this case the trade show would be one event and each client visit would be another. If a single expense could be realistically applied to any of these events, such as travel, than the user simply selects one arbitrarily. A final example, knowing that Pasithea allows home-based employees to expense their Internet access fees, would be the employee who submits a single expense at the end of the year for "Internet access expense;" a report with twelve line items.
Thus, an expense report consists of:
- Brief event description.
- One or more expense items
- One or more notes
An expense item represents one outlay of funds by an employee. Of importance to the SMEs is the need to track what type of expense has been incurred, e.g. airfare, hotel, dinner, etc. Tracking needs to be two tiered: how much did we spend on travel? How much did we spend on air fare.
An expense item consists of:
- Date of expense
- Dollar amount of expense ($0.01 .. $999,999.99)
- One or more notes
- Expense type:
- Travel
- Airfare
- Rail
- Taxi
- Auto rental
- Miles
- Lodging
- Meals
- Phone
- Internet Access
- Client entertainment
- Employee entertainment
- Miscellaneous expenses
Special handling:
- If the expense type is miles, we must collect the number of miles driven and apply the configured dollar/mile amount. Note, should the dollar/mile amount change, we must not lose track of the amount associated with existing expenses.
- If the expense type is miscellaneous, we must collect a description of the expense.
Workflow
An expense report has a life cylce. At different points in this life cycle different people are allowed or expected to perform certain actions on an expense report. The states and actions are:
| State | Meaning | Transitions | Actions |
| open | Expense has been created but not submitted for approval | submitted | Expense owner may edit or delete open expense reports. No one else may see or act on an open expense. Expense owner may submit expense for approval. |
| submitted | Expense has been submitted for approval | mgr-approved, mgr-rejected, withdrawn | Expense owner may move a submitted report to the withdrawn state. A manager may move a submitted expense report to the approved or rejected state. A manager may add a note to the report or individual items, but may not otherwise edit or delete a report. A manager may view all submitted reports. A department manager may view all submitted reports. |
| mgr-rejected | Manager has not approved expense | submitted, withdrawn | Expense owner may edit (but not delete) a mgr-rejected expense. Expense owner may withdraw or re-submit expense. A manager may view her direct report's mgr-rejected expenses. A department manager may view the mgr-rejected reports of her department members. |
| mgr-approved | Manager has approved expense | acctg-rejected, acctg-approved | Expense owner may view expense. A manager may view expense. A department manager may view expense. An accountant may move the expense to the acctg-rejected or acctg-approved state. An accountant may add a note to the report or individual items, but may not otherwise edit or delete a report. |
| withdrawn | The expense owner has removed this report from the approval queue | submitted | An expense owner may edit a withdrawn report. An expense owner may move the report into the submitted state. No one else may view or interact with a withdrawn report. |
| acctg-rejected | Accounting has not approved expense | mgr-rejected, mgr-approved | Expense owner may view a acctg-rejected expense. A manager may view her direct report's acctg-rejected expenses. A manager may add one or more notes to the report or individual items. A manager may move the report into the mgr-rejected or mgr-approved states. A department manager may view the acctg-rejected reports of her department members. |
| acctg-approved | Accounting has approved the expense | paid | Owner, manager, department manager, and accounting may view the expense. Accounting may move the report into the paid state. Accounting may add notes to the entire report on an individual item. |
| paid | Accounting has cut a check for the expense amount | (none) | The expense has been paid and closed. All allowed parties can view. No one may alter the expense |
Integration
TBD
- Integrate with accounts payable (push, non-HTTP, MQ-like)
- Integrate with procurement system (pull, non-HTML, XML)
- Integrate with Office suite
- Integrate with custom client
- Integrate with email / feed-reader