SPUNTINII RESTAURANT POINT OF SALE APPLICATION
MBA 614 Final Project Report Spread Sheet Automation/Modeling Kanak Durga Kunapuli
Contents
Executive Summary................................................................................................................................... 2 Motivation................................................................................................................................................. 2 User Guide ................................................................................................................................................ 3 Instructions of Use: ............................................................................................................................... 3 Take Orders - Usage: ............................................................................................................................. 3 View Orders Usage: ............................................................................................................................ 6 Analyze Item based Sales Trend Usage: ............................................................................................. 8 Design........................................................................................................................................................ 9 Tables: ................................................................................................................................................. 10 Table Relationship diagram: ............................................................................................................... 11 Module Design .................................................................................................................................... 11 Discussion................................................................................................................................................ 12 Learnings from the project ................................................................................................................ 12 Challenges ........................................................................................................................................... 13 Future Work ........................................................................................................................................ 13 Assistance............................................................................................................................................ 14
Executive Summary
Spuntinii Point of Sale Application is a simple point of sale application for restaurants and will be used in my brothers recently opened fast food restaurant (which goes by the name Spuntinii). I have been working with my brother in various aspects of running the restaurant. One of the problems that we face is minimizing food wastage. As the current process of order management is paper based, we are unable to analyze the trend of menu item sales accurately. Another problem is the time spent in keeping track of the daily sales. My brother spends almost half an hour every day going over the sales list and tallying the cash. I have been planning to automate the sales process and was initially inclined to either purchasing a point of sale software or hiring a developer. But after taking up Spreadsheet automation class by Dr. Gove, I was motivated to create a simple point of sale application for the restaurant. The application uses MS access database and has a simple database design. The application provides a screen (sheet) to place orders by choosing from the existing menu items. Orders that are previously placed can also be viewed from another screen. The restaurant manager can also print an order while placing it or also can access the previous orders screen and print. Functionality of analyzing the sales trend of all the menu items via 3dColumn charts is also added to the system. Detailed usage instructions along with screenshots and discussion on various design as well as development aspects are included in the project report document. Future additions to the application would include several chart based analysis options for comparing the sales of various menu items, sales over a period of time etc.
Motivation
My brother has recently opened a fast food restaurant called Spuntinii in my home town Raipur India. My brother has the manager taking care of day to day sales on paper. My brother does not want to maintain the accounts using ledger books, but wants a system with which he can track the popularity of menu items. After discussing with him, I decided that a simple point of sale software system which can keep track of all the menu items, record order placed along with the time and date and some more features can help a lot. We were originally thinking of purchasing a point of sale system, but with the previous programming experience in SQL and the training from the VBA Course I decided to build a simple point of sale system for Spuntinii Restaurant.
User Guide
The Ribbon is used as the main menu bar for the application. As of now it allows access to the functionality which come under the Order taking and viewing process. It is also planned to add analysis and forecasting sections.
Instructions of Use:
On opening the excel sheet, navigate to the Spuntinii Point of Sale Application tab on the top ribbon. The spread sheet needs the access database file and the images folder in the same location as the sheet to run properly.
To take orders from customers, click on the Take Orders button in the Orders group of buttons. This
opens a new sheet with name Menu. If a sheet with name Menu already exists, the application deletes the sheet and creates a new one.
To view past orders placed, click on the View Past Orders button in the Orders group of buttons. This
opens a new sheet with name Orders. If a sheet with name Orders already exists, the application deletes the sheet and creates a new one. To analyze the sales trend of the menu items, click on the Analyze Item based Sales Trend button in the Analysis group of buttons. This opens a new sheet with name Chart with a serial number at the end of the name. The chart displays a 3dColumn graph showing the sales trend of all the menu items (both active and inactive)
Take Orders - Usage:
The Take orders screen contains of two separate sections on the screen. The left section shows the list of available items that can be ordered today. The list shows the item name, a picture of the item and the cost of the item. Each item also has two buttons lined up in its row, plus and minus buttons. Clicking the plus button adds the item to the order and clicking the minus button removes the item from the order. The screen is shown below:
Clicking the Plus button x number of times adds the item to the order with quantity x. For each click of the Plus button the application increments the quantity of the item in the order by 1. Similarly with each click of the minus button, the application decrements the quantity of the item in the order by 1. Once an items quantity in the order reaches 0, the item is no longer displayed in the order. The below screen shows the status after adding a few items to the order
Upon clicking either the plus button or the minus button the second area of the screen is modified. This is the order area on the right of screen, in which the current order information is
displayed. As items are added and removed from the order the corresponding quantity and cumulative price for each item and the total price of the order are refreshed in the order area. The order also shows the total number of items present in the order and their cumulative total. The order area contains two buttons, Order and Clear. Clear button removes all the items from the order. This can be used if the user wants to avoid clicking minus button for all the items in the order. The Order button saves the order to the database (into tables ORDERS and ORDER_ITMES) and returns back with an order id and confirms if the user wants to print the order receipt or not. This is shown below:
Upon clicking Yes, the application set the print area of the excel sheet to Order area and prints the order receipt. Printing might be automatic or start a printer dialog based on the printer settings. After submitting the print job, the application blanks out the Order area and returns back. Clicking No has the same effect except that it doesnt print before blanking out the Order area.
5
View Orders Usage:
The view orders screen is also designed in a similar way as the Take Orders screen. The left side area in the screen contains the list of previously placed orders, which contains the order id, time of placing the order and the order total. There is a HTML radio button for each order which can be clicked, selecting only one of the orders. The view button on the top brings up the details of the selected order in the Order area on the right side. The screen with the orders listed is shown below:
If the View Order button is clicked without selecting any order, an error message is displayed prompting the user to select an order first and then click on the view order button. This behavior is show below:
Upon selecting an order and clicking the View Order button, the order details, i.e., the items in the order and their quantities, prices etc., are showed in the Order area on the right side as shown below:
Clicking the Print button sets the print area of the current sheet to the order area and submits a print job. I have used a pdf printer and below are the images of the pdfs printed out.
I will be testing the print functionality with a simple dot matrix receipt printer that is commonly used in a restaurant.
Analyze Item based Sales Trend Usage:
The Analyze Item based Sales Trend button runs an sql query that fetches all menu items and their corresponding sales count from the database and displays it the trend as a 3d column chart. This functionality helps in visualizing the sales trend of various items and gives a quick overview at the item sales. This will help in a big way in identifying which items are going high. I will be adding day range based filtering in future. The action of the button is as shown below:
Design
The application is designed to have separate modules for each core functionality. The current functionalities are placing orders and viewing past orders. The application stores the menu item names, image file names for each item and cost of each item in Arrays. It also stores the order information as Arrays. The spreadsheet needs to connect to the access database file and lookup images for the menu items. The images are present in a folder called images and the access database is in a file called [Link] These files must be in the same folder as the excelsheet, as below
The application uses MS Access Database. Below is the table design for the application:
Tables:
MENU_CATALOG: Stores the list of menu items names, the name of the picture file to display, the price of the menu item and finally a flag (takes values Y/N) to indicate if the menu item is currently active or not. In active items, with ITEM_ACTIVE flag = N will not be displayed in the Take order screen
ORDERS: Stores the order information that includes the order placement time and the order total price. The ORDER_ID is an autonumber column and is referenced in the ORDER_ITEMS table which contains the menu items and their corresponding quantities in a given order.
ORDER_ITEMS: Stores the order id (from the ORDERS table) and the menu item name and the quantity of the item in the order being saved. The ITEM_NAME is referenced with the ITEM_NAME column in the MENU_CATALOG table.
10
Table Relationship diagram:
Module Design
There are three modules in the project for carrying out the various functionalities in the application. MenuView Module: MenuView module is responsible for displaying the Take orders screen. The module loads the menu items from the database into arrays, displays the retrieved items and their corresponding pictures, prices in the Menu area of the screen and the items added to the order in the order area of the screen. The module also contains the method that bind to the plus and minus buttons of each item, and the subroutine that saves the items added to the order into the database. The queries used in fetching the menu items are select count(*) from MENU_CATALOG where ITEM_ACTIVE = 'Y' SELECT ITEM_NAME,ITEM_PRICE,ITEM_PICTURE FROM MENU_CATALOG WHERE ITEM_ACTIVE = 'Y'
ViewPastOrders Module: ViewPastOrders module is responsible for displaying the existing orders saved in the system. The module loads the list of orders from the database into arrays, displays the retrieved orders, corresponding order save time and total price in the Order list area of the screen. It also displays the order details of the selected order on the order area of the screen. The queries used in fetching the order list and the order details are:
select count(*) from ORDERS
11
select ORDER_ID, ORDER_TIME, ORDER_TOTAL FROM ORDERS ORDER BY ORDER_TIME DESC
select count(*) from ORDER_ITEMS WHERE ORDER_ID = " & orderIdArray(selectedIndex) & ""
select ORDER_ITEMS.ITEM_NAME, ITEM_COUNT, ITEM_PRICE FROM ORDER_ITEMS LEFT OUTER JOIN MENU_CATALOG ON ORDER_ITEMS.ITEM_NAME = MENU_CATALOG.ITEM_NAME WHERE ORDER_ITEMS.ORDER_ID = " & orderIdArray(selectedIndex) & ""
The left outer join is peformed to get the individual item prices also.
Analysis Module: This module contains method for obtaining the item sales trend data from the database and displaying it as a 3d column chart. The sql for obtaining the counts of each menu item from all the orders placed is as below:
SELECT A.ITEM_NAME, SUM(B.ITEM_COUNT) AS ITEMCOUNT FROM MENU_CATALOG A LEFT OUTER JOIN ORDER_ITEMS B ON A.ITEM_NAME = B.ITEM_NAME GROUP BY A.ITEM_NAME
Utils Module: The utils module contains common utilities used both the above modules such as deleting a sheet etc.
Discussion
Learnings from the project
I have prior experience with SQL programming and working with Oracle databases to some extent. I have never worked with designing user interfaces or displaying images etc. Out of all the home work projects, the final project was the most challenging as I had decided to create an application that could be used in the real world. This made me think about the usability of the application. I was almost done with the application but remembered that printing a receipt is one of the most basic requirements of any point of sale system. The project made me think in terms of getting the best out of my system as I started to look at it as a user. I think this change in perspective is very valuable for me and is as impactful as the technical learning I have taken from the course.
12
Challenges
I faced several challenges while developing the project. The biggest of all challenges was trying to develop using a userform instead of the spread sheet. Initially I wanted to develop using spreadsheet as I have been working in the assignments with it and had a fair amount of confidence in handling the user interface part. But once I had done the homework with the userform (find and search) I wanted to develop using the userforms. Displaying images in the spreadsheet was easy, but I had a very tough time displaying images dynamically in a userform. Adding a static image can be done with a click of a button, but in my case I had to fetch image file names from the database, find them in the images folder in the same directory as the excel sheet. I could never get to display dynamic images in the form and reverted back to spread sheet display. Another challenge I faced was with database. My original design was to work with MySQL so that I can use the same database if in case we try to move the application platform from VBA to something browser based like PHP or Java. I could not get the connectivity to MySQL database fully working. I am willing to go the extra mile after the submission and add MySQL compatibility so that I can move the technology easily in future.
Future Work
Apart from MySQL compatibility, the most important feature I will be working on will be analyzing the saved order data. I have already developed a basic item sales trend column chart. I want to build Bar charts, line curves which display the below trends: 1. View Sales Trend Over a period of time
60 50 40 30 20 10 0
Series1
2. View Sales Trend by Day Type
13
Sunday Saturday Friday Thursday Wednesday Tuesday Monday 0 20 40 60 Series1
I am planning to add another group of buttons in the ribbon that will show the above charts. More trends and analysis charts can be added as we see fit.
Assistance
I had some assistance from my brother as the future user, while discussing the functionalities in the application. I was planning to have the View Order and Plus and Minus buttons up in the Ribbon (in a different group), but my brother advised me to have the Plus and minus buttons one per item as it is very intuitive for him/restaurant manager. I later felt it was valid since the Ribbon is supposed to be used for global menu like operations such as the ones I have now.
14