About two months ago, I decided to build a web application. I looked at the various offerings that were available and decided that the Web Application I would write would help manage Purchase Orders. I now have the first draft, which is just high level requirements for the system. Only the functionality of the app is covered – not the meta structure supporting it like the billing, infrastructure, support etc.
When I wrote the first draft a couple of months ago, the system was more complex. Even then I had not finished it. For example it had the concept of multiple approvers, roles for CEO or CFO etc. That is the design that I am posting in this blog post. In the next one – Rev 2, I will post an updated design that I rewrote this week. In this version the functionality is much simpler. In that I removed all extraneous roles, I even reduced the possible statuses removing “partially approved” and even “Closed”. I was inspired to do this after reading the book “Getting Real” by the authors of 37signals.com.
Without further ado, here is revision 1 of the first draft.
PomsApp is a Purchase Order Management System used by small businesses and startups. It lets you manage the PO from the initial stage of Requisition to the final stage of Payment and Closure.
Importance of a PO and where PomsApp helps:
A purchase order can help your business operate more effectively. The purchase order specifies the exact stock required, the quantity and a number of other important details about your order. By stipulating the details of your order you can eliminate any possibly mix-ups, and delays in receiving your order. Given the importance of the PO to your business, it is imperative that youmanage the PO as efficiently and accurately as possible. This is where PomsApp helps you.
- It allows you to define simple variations of the approval workflow based on the value of the PO (eg, orders over $100,000 requires CEO approval).
- You can compare quotes from multiple vendors and select one to proceed with. It allows you to attach these quotes (PDFs or JPEGs) to the requisition.
- It generates the PO as a PDF and emails it for you (sending you a copy).
- After the ordered item is received and accepted, it allows you to follow up with the payment before you close the PO.
- All web pages are always served with SSL. So you can be assured that your credentials and data are secure.
- Requestor - person who ultimately needs the item. This can be any employee in the company.
- Approver - this can be the manager of the Requestor.
- Additional Approvers - the Requestor (or any approver) can request that multiple people should approve the request by selecting them from the employee list of the company.
- Financial Controller - the person for this role is initially assigned by the Administrator. It can only be changed by the CEO.
- CEO - this role is relevant where the value of the purchase order is large – value to be set by CEO. CEO can only be changed by Financial Controller.
- SA - System Administrator – full access, except to change CEO and FC (unless SA is also the CEO or FC).
The same person can assume multiple roles (for example in a one person company) if the roles were set up that way.
Initial Setup by System Administrator:
- Define Company Name
- Define Sites and Addresses (like HQ, Data Center, Colo Facility, Denver Office, etc). SA can always add more sites and remove sites as needed
Setup Options Available to SA:
- Add new site - may require CEO approval based on CEO setup
- Remove site – may require CEO approval based on CEO setup
- Add new employee
- Deactivate employee
- Delete employee – requires CEO approval
Setup Options Available to CEO:
- Change Financial Controller – can only choose from employee list.
- Require CEO Approval for Adding New Sites [checkbox] – by default no approval required
- Require CEO Approval for Removing Sites [checkbox] – by default no approval required
- All other functions available to SA
Setup Options Available to FC:
- Change CEO – can only choose from employee list.
- All other functions available to SA
Actions Available to Requestor:
- Create new Request
- Create new Vendor
- Add Vendor Contact
- Provide justification
- Attach quotes
- Choose vendor
- Close rejected Request
- Resubmit rejected Request
- Modify Request – only before approval
- Save draft Request
- Delete draft Request
- Provide additional justification – after approval, if requested from additional approvers or financial approvers.
Actions Available to Approver (and additional Approvers):
- Reject request
- Change Vendor – with justification
- Ask for more justification
Features and abilities:
- Everybody always has to be logged in to do anything useful.
- Requestor has a need for an item
- Requestor clicks on “New Request”
- Required fields are “Item”, “Quantity”, “Unit”, “Cost per unit”. Total cost is calculated for each item.
- A Request allows multiple items. At the end of each item, the buttons say “Save Purchase Request”, “Save Purchase Request and Add Another Item”. There will be two links that say “Discard this Item and Save Request”, “Discard Purchase Request”
- As a general rule, when discarding there will be no prompt saying “Are you sure?” Instead on the following screen/page there will be a prominent link that says “Purchase Request Discarded. Undo”. If the Requestor wants to ‘Undo’, then they can just click on that link and everything comes back as if nothing happened, and they are be able to continue.
- A grand total is calculated on the top right (similar to a shopping cart)
- Requestor wants to modify an existing request
- Requestor browses a list of existing open requests and selects from there. Requests that have become POs cannot be modified.
- Once a Request is promoted to become a PO, it remains a PO and cannot be modified, except to cancel it. The number remains the same. So if the request ID was X123, the PO number is X123.
- Requestor wants to add a new vendor
- Requestor clicks on ‘Add a new vendor’. As the new vendor is added, ‘type-ahead’ will suggest existing vendors based on exact spelling as well as approximate spelling. If an existing vendor is then selected from the list, a new vendor is not added to the system, but the existing one will be used.
- Requestor wants to add a new Vendor Contact
- Requestor selects a vendor from the vendor list, and then adds a new contact. Fields are First Name, Last Name, Email, Cell Phone Number, Work Phone Number, Fax Number, Notes
- There will be two buttons – “Save Contact”, “Save Contact and Add Another”. There will be a link called “Cancel and return to Vendor List”
- Requestor wants to provide justification for a new purchase request
- This is just part of ‘New Request’. Empty value is OK.
- All Humans
- First Name
- Last Name
- Email (double up as user name)
- Phone number
- Roles – multiple selection possible
- Role Name
- Limit above which CEO must approve (Specify in dollars. If PO is in foreign currency convert at today’s rate) – version 1.0 will be only in dollars.
That’s what I had a couple of months ago. The next post shows how I modified it this week.