@@ -47,34 +47,34 @@ types of answers:
For each question, the administrator can define any number of conditions to
check against the requestor's answer. When a requestor submits an answer that does
not comply with all of the conditions, the answer is flagged in the interface
as making the expense non-reimuburseable. The first release must support the
following conditions:
* Boolean: is yes, or is no
* Selection: the selected value is in a specific subset of values
* Date: the value is N days before and/or after today or a date in another answer
Using these same conditions, the administrator can define questions that are
conditional on other questions' answers. These questions are only presented
to the requestor when they submit an answer that meets the specified conditions.
to the requestors when they submit an answer that meets the specified conditions.
For illustration purposes, the common deployment is expected to have
relatively few unconditional questions about each expense (type of expense,
receipt, amount), and then a series of conditional questions based on those
answers (e.g., follow-up questions specific to airfare expenses,
accommodations expenses, etc.).
### Requestor workflow
Requestor can log in and see the status of all their requests. They can also
Requestors can log in and see the status of all their requests. They can also
create a new request, which starts either the Pre-Approval or the In Progress
state.
When they view a report, it shows the questions and answers about the entire
report, and a list of associated expenses. Viewing a specific expense
similarly shows all the questions and answers about it.
When a report is in the Pre-Approval state, the requestor is submitting not
receipts or invoices, but documents regarding potential expenses that have
not yet been incurred, but for which organization policies require
preapproval by organizational management ahead of time. The appropriate
management representatives are duly notified by the system of pending
@@ -89,25 +89,25 @@ follow-up questions as necessary based on those answers.
When an In Progress report has at least one expense associated with it, and
all questions have been answered, the requestor may submit the request for
approval. If any of the answers do not meet the administrator's conditions
for payment, the requestor may still submit the request, and provide an
explanation for why the request should be paid (e.g., because it was
approved in advance). Once the request is submitted, it moves to the
Submitted state.
### Bookkeeper workflow
Bookkeepers can log into the system and see all requests.
When a bookkeeper reviews a Submitted report, they can change the report's
When bookkeepers reviews a Submitted report, they can change the report's
state, and include a note explaining why the report was moved to that state
(e.g., moved back to In Progress because a specific receipt was insufficient
documentation). When they do this, the system sends e-mail to the requestor
letting them know about the change, including the rationale provided by the
bookkeeper.
The bookkeeper can export any request to the books. The first release of the
software will simply provide an archive that includes all of the request's
supporting documentation, plus a `.ledger` file with entries for each
expense. However, note that when building this feature in the code and UI,
it should be relatively generic. Exporting needs to be abstract enough that
it's simple to integrate with other accounting systems. Even the mechanics