Upload
buimien
View
213
Download
0
Embed Size (px)
Citation preview
12/4/2014
1
Web Based Point
Of Sale System
Jeremiah Bauer
Student of Computer Engineering Technology
Gary Steffen Faculty Advisor
Paul Lin CPET 491 Professor
May 2, 2014
Topics
Introduction
Previous system
System Design
System Integration and Testing
Project Schedule
Labor and Monetary costs
Risk Management
Lessons Learned
Demonstration
2
12/4/2014
2
Introduction
Sponsored By Dan’s Pies in North Webster, IN
Opened in 1990
Small business opened it’s first retail location in
2010
Project was a success
Completed on time and under budget
Meets all requirements set forth in phase 1
3
Previous System
Only process sales with 7 categories of items
Uses cookies to pass sales data
Sales data was larger than maximum size of cookie
Web based
MySQL Backend
PHP server side Programming
HTML
JavaScript
CSS
4
12/4/2014
3
System Design
Ruby On Rails
Apache Webserver
Phusion Passenger (mod_rails)
PostgreSQL
CentOS 6.5
HTML5
JavaScript (jQuery)
CSS3 (Bootstrap)
5
Tasks in Scope
Processing Sales
Designing a database schema
Reading and writing barcodes
Printing receipts
Sales reporting
Create, update, and delete items
6
12/4/2014
4
Out of Scope
Credit card processing
Inventory control system
Invoice generation system
Reservation system
7
Top level System Diagram8
Switch
Client PC
IP Address: DHCP Assigned
USB Receipt
Printer
USB Barcode
ScannerPostgreSQL DB Server – Unix
Socket
Apache Webserver- TCP Port 80
IP Address: 192.168.1.99
Point of Sale Top Level Diagram
12/4/2014
5
Database Schema9 Item
Order OrderDetail
PosConfig
item_id: serialPK
name: character
varying
description:
character varying
price: numeric
tax rate: numeric
upcCode: integer
order_id: serialPK
order_date:
timestamp with
timezone default
now()
order_detail_idPK
FK: order_id:
integer
item_description:
character varying
item_name:
character varying
item_price:
character varying
item_quantity:
character varying
item_tax_rate:
numeric
pos_config_id:
serialPK
name: character
varying
value: character
varying
Rails Model Class diagram10
Item
Attribute:
id::integer
name::varchar
description::varchar
price::numeric
taxRate::numeric
upcCode::integer
Methods:
barCode()
ActiveRecord::Base
Rails Base Class
Documentation:
http://api.rubyonrails.org/
classes/ActiveRecord/
Base.html
PosConfig
Atrribute:
id::integer
Name::varchar
Value::varchar
Order
Attribute:
id::integer
orderDate::date
OrderDetail
id::integer
orderId::integer
name::varchar
description::varchar
price::numeric
taxRate::numeric
upcCode::integer
12/4/2014
6
Rails Controller Class Diagram11
ApplicationController
ItemsController
params
methods:
public:
index()
show()
new()
edit()
create()
update()
destroy()
retrieveBarcode()
private:
set_item()
item_params()
ActionController::Base
Rails Base Class
Documentation:
http://api.rubyonrails.org/
classes/ActionController/
Base.html
PosConfigsController
params
methods:
public:
index()
show()
new()
edit()
create()
update()
destroy()
private:
set_pos_config()
pos_config_params()
SalesController
params
methods:
completeSale()
reporting()
report()
Rails Views
Welcome Landing Page
Application Layout
Application Header Layout
Item New/Edit/Show
Configuration New/Edit/Show
Sales Page
Reporting Page
12
12/4/2014
7
Find Item Sequence of Operations13
USB Scanner Host PC Webserver DB Server
Find Item Sequence
Item ID
/items/searchById
findItemById()
<item result set
Item Details
Sales Sequence of Operation14
Complete Order Sequence
Host PC Webserver DB Server
User presses "Complete Order"
Sends order contents in json structure
getNewOrderID()
return orderID
Inserts contents of
Order using new OrderID
returns Success or Failure
Returns success or failure
prints receipt if success
12/4/2014
8
JavaScript Function List
lookupItemById()
insUpdProductRow(product)
updateOrderTotals()
applyPayment()
runReport()
completeSale()
15
CSS Classes
logo
barcode
totalContainer
itemContainer
sales-container
noItemsCell
total
receiptLogo
receiptQuantity
16
12/4/2014
9
Most important requirement
The system shall be able to process a sale with more than 7
items.
17
Secondary Requirements
The system shall be able to generate bar codes
by using a Ruby image processing library.
The system shall be able to print a receipt.
The system shall be able to generate a sales
report.
18
12/4/2014
10
Receipt Printing
Uses a USB Epson ReadyPrint T20 Direct Thermal
Printer
Cost $157.24
Uses JavaScript, HTML, and CSS to generate the
receipt
Created only after sale is successfully inserted
into database
19
Sample Receipt20
12/4/2014
11
Barcode Generation Uses barcode encoding 39
USB Barcode Scanner
Generated using the “barby” barcode library
Generated based on the items id in the items
table
21
def generateBarcode()
barcode = Barby::Code39.new(self.id.to_s)
fileName = "public/" + self.id.to_s + ".png"
File.open( fileName , 'w' ){|f|
f.write barcode.to_png
}
return fileName
end
Sample Barcode22
12/4/2014
12
Project Schedule23
Required approximately 16 weeks of effort
Most tasks were completed on time
Receipt printing and main sales page were minor
road blocks
Labor Costs
175 Estimated hours
107 actual hours
24
12/4/2014
13
Monetary costs
$200.00 Estimated cost
$157.24 Actual cost
25
Risk Management
Highest risk identified in Phase 1 was that the
system would not be able to process 7
categories of items.
Was not encountered
Project schedule was second highest risk
Not encountered project was completed on time
and under budget
Not being able to create barcodes
Encountered and mitigated by avoided by
reading documentation
26
12/4/2014
14
Lessons Learned
Learned a new web framework (Ruby on Rails)
Learned a new CSS framework (Bootstrap)
JavaScript floating point calculations issues
27
Conclusion
Project was a success
Met all requirements set forth in Phase 1
28