supplier updates mostly

This commit is contained in:
2012-08-30 11:12:23 +02:00
parent df90425a48
commit 0d10ef2b5a
17 changed files with 789 additions and 66 deletions
+2
View File
@@ -26,3 +26,5 @@ public/system
vendor/cache
public/google*
replication_design.html
.DS_Store
stories.html
+30 -9
View File
@@ -6,22 +6,32 @@
<node COLOR="#0033ff" CREATED="1346248520045" ID="ID_454905514" MODIFIED="1346249526866" POSITION="right" TEXT="I already have an open list">
<edge STYLE="sharp_bezier" WIDTH="8"/>
<font NAME="SansSerif" SIZE="18"/>
<node COLOR="#00b439" CREATED="1346248563729" ID="ID_733708643" MODIFIED="1346249526869" TEXT="Table is from same supplier">
<node COLOR="#00b439" CREATED="1346248563729" ID="ID_733708643" MODIFIED="1346309206147" TEXT="Table is from same supplier">
<edge STYLE="bezier" WIDTH="thin"/>
<font NAME="SansSerif" SIZE="16"/>
<node COLOR="#990000" CREATED="1346248693439" ID="ID_916776491" MODIFIED="1346249526871" TEXT="Offer to move table">
<node COLOR="#990000" CREATED="1346309207676" ID="ID_831388611" MODIFIED="1346309230141" TEXT="Table is occupied">
<font NAME="SansSerif" SIZE="14"/>
<node COLOR="#111111" CREATED="1346248699370" ID="ID_1684994680" MODIFIED="1346252267525" TEXT="If yes">
<node COLOR="#111111" CREATED="1346252268957" ID="ID_1918675077" MODIFIED="1346252275835" TEXT="If new table is occupied">
<node COLOR="#111111" CREATED="1346252293652" ID="ID_1644610184" MODIFIED="1346252316306" TEXT="Show message cannot move to occupied table"/>
</node>
<node COLOR="#111111" CREATED="1346252277084" ID="ID_341940711" MODIFIED="1346252282594" TEXT="If new table is free">
<node COLOR="#111111" CREATED="1346252283068" ID="ID_1759159925" MODIFIED="1346252290466" TEXT="Move table and show product"/>
<node COLOR="#990000" CREATED="1346309230963" ID="ID_1950840090" MODIFIED="1346309235131" TEXT="Table is reserved">
<font NAME="SansSerif" SIZE="14"/>
<node COLOR="#111111" CREATED="1346252293652" ID="ID_134826937" MODIFIED="1346309391700" TEXT="Show message cannot move to reserved table"/>
</node>
<node COLOR="#990000" CREATED="1346309293784" ID="ID_32685850" MODIFIED="1346309297808" TEXT="Table is closed">
<font NAME="SansSerif" SIZE="14"/>
<node COLOR="#111111" CREATED="1346252293652" ID="ID_66986394" MODIFIED="1346309403011" TEXT="Show message cannot move to closed table"/>
</node>
<node COLOR="#990000" CREATED="1346309239337" ID="ID_1731657618" MODIFIED="1346309244137" TEXT="Table is free">
<font NAME="SansSerif" SIZE="14"/>
<node COLOR="#111111" CREATED="1346248693439" ID="ID_916776491" MODIFIED="1346309266085" TEXT="Offer to move table">
<font NAME="SansSerif" SIZE="12"/>
<node COLOR="#111111" CREATED="1346248699370" ID="ID_1684994680" MODIFIED="1346252267525" TEXT="If yes">
<node COLOR="#111111" CREATED="1346252283068" ID="ID_1759159925" MODIFIED="1346309530716" TEXT="Move table and show product"/>
</node>
<node COLOR="#111111" CREATED="1346248725406" ID="ID_10610841" MODIFIED="1346252095940" TEXT="If no, show products"/>
</node>
</node>
</node>
<node COLOR="#00b439" CREATED="1346248579841" ID="ID_227890554" MODIFIED="1346249526872" TEXT="Table is from other supplier">
<edge STYLE="bezier" WIDTH="thin"/>
<font NAME="SansSerif" SIZE="16"/>
@@ -45,13 +55,17 @@
<font NAME="SansSerif" SIZE="16"/>
<node COLOR="#990000" CREATED="1346248635520" ID="ID_1246071370" MODIFIED="1346249459786" TEXT="Option: Join this table">
<font NAME="SansSerif" SIZE="14"/>
<node COLOR="#111111" CREATED="1346309580063" ID="ID_1318072786" MODIFIED="1346309593956" TEXT="Send join request and move to waiting page">
<node COLOR="#111111" CREATED="1346309651981" ID="ID_195889189" MODIFIED="1346309663037" TEXT="If approved, show products list"/>
<node COLOR="#111111" CREATED="1346309665789" ID="ID_414325948" MODIFIED="1346309710976" TEXT="If declined, show declined message"/>
</node>
</node>
<node COLOR="#990000" CREATED="1346249385937" ID="ID_146376441" MODIFIED="1346249526878" TEXT="Option: Show products">
<font NAME="SansSerif" SIZE="14"/>
<node COLOR="#111111" CREATED="1346249395535" ID="ID_152885983" MODIFIED="1346249459786" TEXT="Show products without ordering options"/>
</node>
</node>
<node COLOR="#00b439" CREATED="1346248619233" ID="ID_1502347679" MODIFIED="1346249526883" TEXT="Table is not occupied by other user">
<node COLOR="#00b439" CREATED="1346248619233" ID="ID_1502347679" MODIFIED="1346309160500" TEXT="Table is not occupied by other user">
<edge STYLE="bezier" WIDTH="thin"/>
<font NAME="SansSerif" SIZE="16"/>
<node COLOR="#990000" CREATED="1346248629824" ID="ID_1685359507" MODIFIED="1346249459791">
@@ -64,11 +78,18 @@
Show products with ordering options
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<font NAME="SansSerif" SIZE="14"/>
</node>
</node>
<node COLOR="#00b439" CREATED="1346309107419" ID="ID_1667074833" MODIFIED="1346309162354" TEXT="Table is reserved">
<edge STYLE="bezier" WIDTH="thin"/>
<font NAME="SansSerif" SIZE="16"/>
</node>
<node COLOR="#00b439" CREATED="1346309120961" ID="ID_1675504542" MODIFIED="1346309126520" TEXT="Supplier is closed">
<edge STYLE="bezier" WIDTH="thin"/>
<font NAME="SansSerif" SIZE="16"/>
</node>
</node>
</node>
</map>
@@ -1,13 +1,4 @@
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
*
* You're free to add application-wide styles to this file and they'll appear at the top of the
* compiled file, but it's generally better to create a new file per style scope.
*
*= require_self
*= require_directory .
*/
@@ -43,3 +43,7 @@ body
margin-bottom: 30px
float: left
margin-right: 30px
.supplier-is-closed
.alert
form
margin: 0
+25
View File
@@ -1,9 +1,34 @@
class SupplierController < ApplicationController
before_filter :authenticate_supplier!
layout 'tablet'
def home
render layout: 'tablet'
end
# GET /supplier/settings
def edit
@supplier = current_supplier
end
# POST /supplier/settings
def update
@supplier = current_supplier
if current_supplier.update_attributes(params[:supplier])
redirect_to supplier_root_path
else
render action: :edit
end
end
def mark_as_open
current_supplier.mark_as_open!
redirect_to :back
end
def mark_as_closed
current_supplier.mark_as_closed!
redirect_to :back
end
# GET /suppliers/1/active_orders
# GET /suppliers/1/active_orders.json
def active_orders
+2
View File
@@ -31,6 +31,8 @@ class UserController < ApplicationController
@table = Table.find(params[:table_id])
res = {}
res[:ocupied] = @table.occupied?
res[:reserved] = @table.reserved?
res[:supplier_closed] = @table.supplier.closed?
if list.present?
res[:other_supplier] = true if list.supplier_id != @table.supplier_id
res[:current_table_id] = list.table_id
+24
View File
@@ -4,6 +4,14 @@ class Supplier
devise :database_authenticatable, :recoverable, :rememberable, :trackable
property :name
property :open, type: :boolean, default: false
#WIFI
property :offer_wifi
property :wifi_ssid
property :wifi_type
property :wifi_password
#has_many :orders, through: :lists
has_many :products, dependent: :destroy
has_many :product_categories, dependent: :destroy
@@ -38,6 +46,22 @@ class Supplier
tables.reject{|t| t.section_id.present? }
end
def open?
open
end
def closed?
!open?
end
def mark_as_open!
self.open = true
save
end
def mark_as_closed!
self.open = false
save
end
private
def add_section_on_create
+4
View File
@@ -27,6 +27,10 @@ class Table
@is_occupied = !self.class.database.view(self.class.active_lists(key: id, reduce: true)).zero?
end
def reserved?
false
end
def name
number
end
+13
View File
@@ -40,6 +40,11 @@ html lang="en"
= current_supplier.email
b.caret
ul.dropdown-menu
- if current_supplier.open?
li
= form_tag supplier_mark_as_closed_path do
= submit_tag t('supplier.close'), class: [:btn, 'btn-danger'], onClick: %|$(this).parents('form').submit()|
li= link_to 'Settings', supplier_settings_path
li= link_to 'Logout', destroy_supplier_session_path, method: :delete
.container.nav-collapse
@@ -53,6 +58,14 @@ html lang="en"
.alert.alert-success
a.close data-dismiss="alert" &#215;
div= flash[:notice]
- if current_supplier.closed?
.row.supplier-is-closed
.span12
.alert.alert-block
button.close{data-dismiss="alert"} x
p = t('supplier.you_are_currently_closed_alert')
= form_tag supplier_mark_as_open_path do
= submit_tag t('supplier.mark_as_open_button'), class: [:btn, 'btn-primary']
.row
.span12
= content_for?(:content) ? yield(:content) : yield
+31
View File
@@ -0,0 +1,31 @@
= form_for @supplier, url: supplier_update_settings_path, html: {class: 'form-horizontal'} do |f|
= render 'error_messages', target: current_supplier
.control-group class=(@supplier.errors[:name].any? ? 'error' : nil)
= f.label :name, class: 'control-label'
.controls
= f.text_field :name, class: 'text_field'
.control-group class=(@supplier.errors[:email].any? ? 'error' : nil)
= f.label :email, class: 'control-label'
.controls
= f.text_field :email, class: 'text_field'
.control-group class=(@supplier.errors[:offer_wifi].any? ? 'error' : nil)
= f.label :offer_wifi, class: 'control-label'
.controls
= f.check_box :offer_wifi, class: 'checkbox'
.control-group class=(@supplier.errors[:wifi_ssid].any? ? 'error' : nil)
= f.label :wifi_ssid, class: 'control-label'
.controls
= f.text_field :wifi_ssid, class: 'text_field'
.control-group class=(@supplier.errors[:wifi_type].any? ? 'error' : nil)
= f.label :wifi_type, class: 'control-label'
.controls
= f.select :wifi_type, options_for_select([['web', 'web40'], ['WPA2 Personal', 'wpa2personal']], @supplier.wifi_type)
.control-group class=(@supplier.errors[:wifi_password].any? ? 'error' : nil)
= f.label :wifi_password, class: 'control-label'
.controls
= f.text_field :wifi_password, class: 'text_field'
.form-actions
= f.submit nil, class: 'btn btn-primary'
'
= link_to t("helpers.links.cancel"), suppliers_path, class: 'btn'
+1
View File
@@ -72,6 +72,7 @@ module Qrammer
# Enable the asset pipeline
config.assets.enabled = true
#config.assets.precompile += ['tablet/application.css']
# Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0'
+3
View File
@@ -61,6 +61,9 @@ en:
active_lists: Active %{lists}
active_lists:
title: Active %{lists}
close: Close the shop
you_are_currently_closed_alert: 'You are currently closed and not able to take orders'
mark_as_open_button: 'Open up the place!'
user:
active_list:
title: Active %{list}
+6
View File
@@ -29,6 +29,12 @@ Qrammer::Application.routes.draw do
post '/supplier/mark_order_in_process' => 'supplier#mark_order_in_process', as: :supplier_mark_order_in_process
post '/supplier/order_is_delivered' => 'supplier#order_is_delivered', as: :supplier_order_is_delivered
post '/supplier/mark_as_open' => 'supplier#mark_as_open', as: :supplier_mark_as_open
post '/supplier/mark_as_closed' => 'supplier#mark_as_closed', as: :supplier_mark_as_closed
get '/supplier/settings' => 'supplier#edit', as: :supplier_settings
match '/supplier/settings' => 'supplier#update', as: :supplier_update_settings, via: [:put, :post]
match '/user' => 'user#home', as: :user_root
get '/user/active_list(.:format)' => 'user#active_list', as: :user_active_list
get '/user/list_info' => 'user#list_info', as: :user_list_info
+255 -4
View File
@@ -14,7 +14,7 @@
id="svg2991"
version="1.1"
inkscape:version="0.48.2 r9819"
sodipodi:docname="table_qr_image.svg">
sodipodi:docname="qr_container.svg">
<defs
id="defs3">
<filter
@@ -42,6 +42,27 @@
operator="out"
in="SourceGraphic" />
</filter>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
id="perspective3467" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
id="perspective3307" />
<inkscape:perspective
id="perspective3297"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
@@ -50,9 +71,9 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.3773478"
inkscape:cx="107.03459"
inkscape:cy="78.51279"
inkscape:zoom="2.1440801"
inkscape:cx="197.54796"
inkscape:cy="195.73703"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
@@ -105,5 +126,235 @@
id="tspan3801"
x="277.10553"
y="160.40939">#table_number</tspan></text>
<g
transform="matrix(0.10973338,0,0,0.10973338,-6.5194151,-169.42543)"
id="layer1-7"
inkscape:label="Layer 1">
<g
id="g3678">
<polygon
points="434.916,257.254 412.583,256.587 404.916,277.587 419.916,287.921 396.583,297.587 436.25,297.921 422.583,277.254 "
id="polygon4726"
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)" />
<polygon
points="474.25,252.254 453.583,254.587 463.916,273.921 451.25,297.921 491.916,298.254 467.583,285.921 479.582,274.254 "
id="polygon4728"
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)" />
<polygon
points="406.25,141.587 406.916,199.587 474.25,215.921 473.916,150.921 492.582,146.921 476.25,98.254 411.916,97.254 "
id="polygon4730"
style="fill:#fdd89a"
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)" />
<path
style="fill:#ffffff"
d="m 288.87142,476.05154 c 0,0 96.70254,40.52449 124.9448,24.48339 l 0.85867,45.59289 c 0,0 -110.40067,0 -125.80347,-70.07628 z"
id="path4732"
inkscape:connector-curvature="0" />
<path
d="m 412.13942,453.25509 c 0,0 -49.81278,25.32939 -64.16694,-25.32939 0,0 -27.86232,87.80686 63.32094,55.72466 0,0 72.61428,45.59036 83.58697,-38.84009 0,0 -47.27983,47.28237 -82.74097,8.44482 z"
id="path4734"
inkscape:connector-curvature="0" />
<polygon
style="fill:#d8ba79"
points="409.25,261.921 476.582,256.587 474.25,205.254 406.583,195.587 "
id="polygon4736"
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)" />
<polygon
style="fill:#806646"
points="436.916,241.587 432.25,256.254 416.25,250.587 420.583,241.587 "
id="polygon4738"
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)" />
<polygon
style="fill:#816647"
points="455.916,242.254 465.916,238.254 468.25,252.587 455.916,253.587 "
id="polygon4740"
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)" />
<g
id="g4742"
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)"
style="fill:#816647">
<polygon
style="fill:#816647"
points="450.75,253.27 447.75,253.238 448.083,220.571 451.083,220.603 "
id="polygon4744" />
</g>
<path
style="fill:#ffffff"
d="m 252.69093,567.94149 c 0,0 53.85027,84.13662 104.27348,63.48304 0,0 56.20338,-1.94023 51.96831,-46.61114 l -156.24179,-16.8719 z"
id="path4746"
inkscape:connector-curvature="0" />
<path
style="fill:#666666"
d="m 165.59836,775.77924 c 0,0 48.97184,0.846 48.12584,-1.68694 -0.84094,-2.53293 -11.8187,-141.84456 -11.8187,-141.84456 l -32.9282,6.75281 -8.44482,55.72465 5.06588,81.05404 z"
id="path4748"
inkscape:connector-curvature="0" />
<g
id="g4750"
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)">
<polygon
style="fill:#ffffff"
points="379.419,274.681 378.086,253.347 381.08,253.159 382.413,274.493 "
id="polygon4752" />
</g>
<g
id="g4754"
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)">
<polygon
style="fill:#ffffff"
points="385.754,273.026 383.754,244.692 386.746,244.481 388.746,272.815 "
id="polygon4756" />
</g>
<polygon
style="fill:#806646"
points="367.25,213.587 361.25,224.587 390.583,233.921 411.916,219.253 409.25,199.587 389.916,218.587 "
id="polygon4758"
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)" />
<polygon
style="fill:#806646"
points="468.916,203.254 508.25,213.921 530.582,205.921 539.916,212.921 508.582,227.921 471.25,215.254 "
id="polygon4760"
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)" />
<path
d="m 161.59125,619.26136 -25.32938,-12.66469 c 0,0 -21.95298,-43.05996 -30.39527,-18.57404 0,0 -27.021389,2.5304 -11.823757,18.57404 0,0 -18.574039,31.24126 5.065878,26.17539 0,0 6.755349,25.32938 27.862329,0 l 31.24126,11.81869 3.37894,-25.32939 z"
id="path4762"
style="fill:#fdd89a"
inkscape:connector-curvature="0" />
<polygon
style="fill:#565248"
points="367.833,235.087 376.833,215.087 366.5,213.087 357.833,229.421 "
id="polygon4764"
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)" />
<path
style="fill:#cccccf"
d="m 154.62567,614.51717 c 0,0 -32.08473,116.51518 -27.86232,114.82824 4.21987,-1.692 54.87865,2.53294 54.87865,2.53294 l 27.86232,-118.20718 -10.13175,10.97775 -44.7469,-10.13175 z"
id="path4766"
inkscape:connector-curvature="0" />
<g
id="g4768"
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)">
<polygon
style="fill:#ffffff"
points="370.023,254.673 367.143,253.833 377.143,219.501 380.023,220.341 "
id="polygon4770" />
</g>
<g
id="g4772"
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)">
<path
style="fill:#ffffff"
d="m 379.389,256.204 -2.944,-0.566 c 2.442,-12.709 6.319,-33.518 6.317,-35.253 0,0.007 10e-4,0.15 0.064,0.342 l 2.847,-0.947 c 0.148,0.445 0.456,1.371 -6.284,36.424 l 0,0 z"
id="path4774"
inkscape:connector-curvature="0" />
</g>
<polygon
style="fill:#d40000"
points="472.582,196.253 455.582,208.921 444.916,208.253 429.916,195.587 427.582,222.253 442.916,216.587 454.582,216.587 473.916,221.921 "
id="polygon4776"
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)" />
<polygon
style="fill:#fd3301"
points="443.25,218.253 456.25,219.253 456.582,205.253 444.916,205.921 "
id="polygon4778"
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)" />
<polygon
style="fill:#565248"
points="520.768,231.003 536,226.337 527.731,207.671 512.5,211.671 "
id="polygon4780"
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)" />
<ellipse
sodipodi:ry="6.8340001"
sodipodi:rx="7.1669998"
sodipodi:cy="121.087"
sodipodi:cx="436.75"
d="m 443.917,121.087 c 0,3.77431 -3.20878,6.834 -7.167,6.834 -3.95822,0 -7.167,-3.05969 -7.167,-6.834 0,-3.77432 3.20878,-6.834 7.167,-6.834 3.95822,0 7.167,3.05968 7.167,6.834 z"
cx="436.75"
cy="121.087"
rx="7.1669998"
ry="6.8340001"
id="ellipse4782"
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)" />
<ellipse
sodipodi:ry="6.8330002"
sodipodi:rx="7.1659999"
sodipodi:cy="120.42"
sodipodi:cx="457.41599"
d="m 464.58198,120.42 c 0,3.77376 -3.20832,6.833 -7.16599,6.833 -3.95768,0 -7.166,-3.05924 -7.166,-6.833 0,-3.77376 3.20832,-6.833 7.166,-6.833 3.95767,0 7.16599,3.05924 7.16599,6.833 z"
cx="457.41599"
cy="120.42"
rx="7.1659999"
ry="6.8330002"
id="ellipse4784"
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)" />
<path
style="fill:#eeeeee"
d="m 298.47379,596.46998 -1.8997,19.31366 c 0,0 15.83087,3.16617 17.41395,-10.76499 0,0 -0.94985,-9.81514 -15.51425,-8.54867 z"
id="path4786"
inkscape:connector-curvature="0" />
<path
style="fill:#eeeeee"
d="m 320.00377,583.17205 11.39823,8.86529 c 0,0 -20.89675,10.13175 -11.39823,-8.86529 z"
id="path4788"
inkscape:connector-curvature="0" />
<path
style="fill:#eeeeee"
d="m 337.10111,607.8682 c 0,0 18.04719,1.89971 12.03146,16.4641 l -14.66825,-0.52938 2.63679,-15.93472 z"
id="path4790"
inkscape:connector-curvature="0" />
<path
style="fill:#eeeeee"
d="m 370.02931,596.7866 14.88102,-10.13176 c 0,0 7.91543,9.49852 0.31661,14.88102 0,0 -9.1819,8.86528 -15.19763,-4.74926 z"
id="path4792"
inkscape:connector-curvature="0" />
<path
style="fill:#eeeeee"
d="m 373.5121,622.11598 17.73057,4.74926 c 0,0 1.89971,-6.96558 -5.38249,-12.34807 -7.2822,-5.3825 -10.76499,3.7994 -12.34808,7.59881 z"
id="path4794"
inkscape:connector-curvature="0" />
<path
style="fill:#eeeeee"
d="m 410.55633,592.98719 0.63323,19.31366 c 0,0 -10.76498,2.84955 -13.61454,-8.86529 0,0 -0.63324,-12.03146 12.98131,-10.44837 z"
id="path4796"
inkscape:connector-curvature="0" />
<path
d="m 232.30077,460.85391 c 0,0 -1.68694,-139.31163 -10.97522,-153.66579 l 38.83754,-21.10698 4.22241,8.44228 c 0,0 154.50673,-10.97522 159.57261,-8.44228 l -0.84094,-10.13176 c 0,0 -16.88963,2.53294 -18.57657,-6.75534 0,0 22.79645,-26.17286 32.9282,-16.04111 0,0 53.19172,37.14808 -14.35163,83.58698 l -151.13285,5.90935 c 0,0 -14.35416,107.22689 -3.37641,115.67171 l -36.30714,2.53294 z"
id="path4798"
inkscape:connector-curvature="0" />
<path
style="fill:#808285"
d="m 487.28158,588.34178 c 0,0 100.47661,81.90004 190.8164,17.73057 0,0 44.7469,-75.14216 -99.63061,-65.01041 0,0 -127.49294,5.90935 -91.18579,47.27984 z"
id="path4800"
inkscape:connector-curvature="0" />
<path
style="fill:#939598"
d="m 503.32521,578.21002 c 0,0 86.11992,65.85641 140.15763,26.17539 0,0 32.0822,-34.61767 -13.51069,-41.37302 0,0 -148.59739,-8.44228 -126.64694,15.19763 z"
id="path4802"
inkscape:connector-curvature="0" />
<path
style="fill:#8bd7f8"
d="m 625.75227,559.63852 -2.53294,32.9282 c 0,0 23.63738,10.97522 31.2362,0 l 0.846,-33.7742 c 0,0 -16.88457,-13.50817 -29.54926,0.846 z"
id="path4804"
inkscape:connector-curvature="0" />
<path
style="fill:#8bd7f8"
d="m 564.96174,492.09011 -5.91188,89.49885 c 0,0 28.70326,21.10951 47.27984,0 l 13.51069,-92.03179 9.28575,-11.81869 -24.48338,-3.37894 6.75281,-58.25759 -27.01632,10.97775 1.68694,48.97184 -21.10445,16.03857 z"
id="path4806"
inkscape:connector-curvature="0" />
<path
style="fill:#8bd7f8"
d="m 513.45696,563.01239 1.68694,34.62021 c 0,0 16.04364,16.88457 28.70833,-1.69201 l 2.53294,-29.54926 c 0,0 -16.04364,-16.04363 -32.92821,-3.37894 z"
id="path4808"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff"
d="m 512.61096,566.39133 c 0,0 7.59882,38.84008 33.77421,0 0,0 -22.79645,-17.73057 -33.77421,0 z"
id="path4810"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff"
d="m 624.90627,563.01239 c 0,0 21.95044,19.42258 30.39526,-4.21987 0,0 -17.73057,-14.35164 -29.54926,0.846"
id="path4812"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 16 KiB

+282
View File
@@ -0,0 +1,282 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="597.54401"
height="575.61896"
id="svg3289"
version="1.1"
inkscape:version="0.47 r22583"
sodipodi:docname="waiter.svg">
<defs
id="defs3291">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective3297" />
<inkscape:perspective
id="perspective3307"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3467"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="287.89371"
inkscape:cy="282.6498"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="940"
inkscape:window-height="933"
inkscape:window-x="138"
inkscape:window-y="54"
inkscape:window-maximized="0" />
<metadata
id="metadata3294">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-87.106295,-250.82161)">
<g
id="g3678">
<polygon
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)"
id="polygon4726"
points="412.583,256.587 404.916,277.587 419.916,287.921 396.583,297.587 436.25,297.921 422.583,277.254 434.916,257.254 " />
<polygon
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)"
id="polygon4728"
points="453.583,254.587 463.916,273.921 451.25,297.921 491.916,298.254 467.583,285.921 479.582,274.254 474.25,252.254 " />
<polygon
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)"
style="fill:#fdd89a"
id="polygon4730"
points="406.916,199.587 474.25,215.921 473.916,150.921 492.582,146.921 476.25,98.254 411.916,97.254 406.25,141.587 " />
<path
id="path4732"
d="m 288.87142,476.05154 c 0,0 96.70254,40.52449 124.9448,24.48339 l 0.85867,45.59289 c 0,0 -110.40067,0 -125.80347,-70.07628 z"
style="fill:#ffffff" />
<path
id="path4734"
d="m 412.13942,453.25509 c 0,0 -49.81278,25.32939 -64.16694,-25.32939 0,0 -27.86232,87.80686 63.32094,55.72466 0,0 72.61428,45.59036 83.58697,-38.84009 0,0 -47.27983,47.28237 -82.74097,8.44482 z" />
<polygon
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)"
id="polygon4736"
points="474.25,205.254 406.583,195.587 409.25,261.921 476.582,256.587 "
style="fill:#d8ba79" />
<polygon
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)"
id="polygon4738"
points="416.25,250.587 420.583,241.587 436.916,241.587 432.25,256.254 "
style="fill:#806646" />
<polygon
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)"
id="polygon4740"
points="468.25,252.587 455.916,253.587 455.916,242.254 465.916,238.254 "
style="fill:#816647" />
<g
style="fill:#816647"
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)"
id="g4742">
<polygon
id="polygon4744"
points="448.083,220.571 451.083,220.603 450.75,253.27 447.75,253.238 "
style="fill:#816647" />
</g>
<path
id="path4746"
d="m 252.69093,567.94149 c 0,0 53.85027,84.13662 104.27348,63.48304 0,0 56.20338,-1.94023 51.96831,-46.61114 l -156.24179,-16.8719 z"
style="fill:#ffffff" />
<path
id="path4748"
d="m 165.59836,775.77924 c 0,0 48.97184,0.846 48.12584,-1.68694 -0.84094,-2.53293 -11.8187,-141.84456 -11.8187,-141.84456 l -32.9282,6.75281 -8.44482,55.72465 5.06588,81.05404 z"
style="fill:#666666" />
<g
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)"
id="g4750">
<polygon
id="polygon4752"
points="381.08,253.159 382.413,274.493 379.419,274.681 378.086,253.347 "
style="fill:#ffffff" />
</g>
<g
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)"
id="g4754">
<polygon
id="polygon4756"
points="386.746,244.481 388.746,272.815 385.754,273.026 383.754,244.692 "
style="fill:#ffffff" />
</g>
<polygon
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)"
id="polygon4758"
points="367.25,213.587 361.25,224.587 390.583,233.921 411.916,219.253 409.25,199.587 389.916,218.587 "
style="fill:#806646" />
<polygon
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)"
id="polygon4760"
points="468.916,203.254 508.25,213.921 530.582,205.921 539.916,212.921 508.582,227.921 471.25,215.254 "
style="fill:#806646" />
<path
style="fill:#fdd89a"
id="path4762"
d="m 161.59125,619.26136 -25.32938,-12.66469 c 0,0 -21.95298,-43.05996 -30.39527,-18.57404 0,0 -27.021389,2.5304 -11.823757,18.57404 0,0 -18.574039,31.24126 5.065878,26.17539 0,0 6.755349,25.32938 27.862329,0 l 31.24126,11.81869 3.37894,-25.32939 z" />
<polygon
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)"
id="polygon4764"
points="366.5,213.087 357.833,229.421 367.833,235.087 376.833,215.087 "
style="fill:#565248" />
<path
id="path4766"
d="m 154.62567,614.51717 c 0,0 -32.08473,116.51518 -27.86232,114.82824 4.21987,-1.692 54.87865,2.53294 54.87865,2.53294 l 27.86232,-118.20718 -10.13175,10.97775 -44.7469,-10.13175 z"
style="fill:#cccccf" />
<g
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)"
id="g4768">
<polygon
id="polygon4770"
points="377.143,219.501 380.023,220.341 370.023,254.673 367.143,253.833 "
style="fill:#ffffff" />
</g>
<g
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)"
id="g4772">
<path
id="path4774"
d="m 379.389,256.204 -2.944,-0.566 c 2.442,-12.709 6.319,-33.518 6.317,-35.253 0,0.007 10e-4,0.15 0.064,0.342 l 2.847,-0.947 c 0.148,0.445 0.456,1.371 -6.284,36.424 l 0,0 z"
style="fill:#ffffff" />
</g>
<polygon
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)"
id="polygon4776"
points="444.916,208.253 429.916,195.587 427.582,222.253 442.916,216.587 454.582,216.587 473.916,221.921 472.582,196.253 455.582,208.921 "
style="fill:#d40000" />
<polygon
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)"
id="polygon4778"
points="456.582,205.253 444.916,205.921 443.25,218.253 456.25,219.253 "
style="fill:#fd3301" />
<polygon
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)"
id="polygon4780"
points="527.731,207.671 512.5,211.671 520.768,231.003 536,226.337 "
style="fill:#565248" />
<ellipse
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)"
id="ellipse4782"
ry="6.8340001"
rx="7.1669998"
cy="121.087"
cx="436.75"
d="m 443.917,121.087 c 0,3.77431 -3.20878,6.834 -7.167,6.834 -3.95822,0 -7.167,-3.05969 -7.167,-6.834 0,-3.77432 3.20878,-6.834 7.167,-6.834 3.95822,0 7.167,3.05968 7.167,6.834 z"
sodipodi:cx="436.75"
sodipodi:cy="121.087"
sodipodi:rx="7.1669998"
sodipodi:ry="6.8340001" />
<ellipse
transform="matrix(2.5329387,0,0,2.5329387,-788.26076,70.98145)"
id="ellipse4784"
ry="6.8330002"
rx="7.1659999"
cy="120.42"
cx="457.41599"
d="m 464.58198,120.42 c 0,3.77376 -3.20832,6.833 -7.16599,6.833 -3.95768,0 -7.166,-3.05924 -7.166,-6.833 0,-3.77376 3.20832,-6.833 7.166,-6.833 3.95767,0 7.16599,3.05924 7.16599,6.833 z"
sodipodi:cx="457.41599"
sodipodi:cy="120.42"
sodipodi:rx="7.1659999"
sodipodi:ry="6.8330002" />
<path
id="path4786"
d="m 298.47379,596.46998 -1.8997,19.31366 c 0,0 15.83087,3.16617 17.41395,-10.76499 0,0 -0.94985,-9.81514 -15.51425,-8.54867 z"
style="fill:#eeeeee" />
<path
id="path4788"
d="m 320.00377,583.17205 11.39823,8.86529 c 0,0 -20.89675,10.13175 -11.39823,-8.86529 z"
style="fill:#eeeeee" />
<path
id="path4790"
d="m 337.10111,607.8682 c 0,0 18.04719,1.89971 12.03146,16.4641 l -14.66825,-0.52938 2.63679,-15.93472 z"
style="fill:#eeeeee" />
<path
id="path4792"
d="m 370.02931,596.7866 14.88102,-10.13176 c 0,0 7.91543,9.49852 0.31661,14.88102 0,0 -9.1819,8.86528 -15.19763,-4.74926 z"
style="fill:#eeeeee" />
<path
id="path4794"
d="m 373.5121,622.11598 17.73057,4.74926 c 0,0 1.89971,-6.96558 -5.38249,-12.34807 -7.2822,-5.3825 -10.76499,3.7994 -12.34808,7.59881 z"
style="fill:#eeeeee" />
<path
id="path4796"
d="m 410.55633,592.98719 0.63323,19.31366 c 0,0 -10.76498,2.84955 -13.61454,-8.86529 0,0 -0.63324,-12.03146 12.98131,-10.44837 z"
style="fill:#eeeeee" />
<path
id="path4798"
d="m 232.30077,460.85391 c 0,0 -1.68694,-139.31163 -10.97522,-153.66579 l 38.83754,-21.10698 4.22241,8.44228 c 0,0 154.50673,-10.97522 159.57261,-8.44228 l -0.84094,-10.13176 c 0,0 -16.88963,2.53294 -18.57657,-6.75534 0,0 22.79645,-26.17286 32.9282,-16.04111 0,0 53.19172,37.14808 -14.35163,83.58698 l -151.13285,5.90935 c 0,0 -14.35416,107.22689 -3.37641,115.67171 l -36.30714,2.53294 z" />
<path
id="path4800"
d="m 487.28158,588.34178 c 0,0 100.47661,81.90004 190.8164,17.73057 0,0 44.7469,-75.14216 -99.63061,-65.01041 0,0 -127.49294,5.90935 -91.18579,47.27984 z"
style="fill:#808285" />
<path
id="path4802"
d="m 503.32521,578.21002 c 0,0 86.11992,65.85641 140.15763,26.17539 0,0 32.0822,-34.61767 -13.51069,-41.37302 0,0 -148.59739,-8.44228 -126.64694,15.19763 z"
style="fill:#939598" />
<path
id="path4804"
d="m 625.75227,559.63852 -2.53294,32.9282 c 0,0 23.63738,10.97522 31.2362,0 l 0.846,-33.7742 c 0,0 -16.88457,-13.50817 -29.54926,0.846 z"
style="fill:#8bd7f8" />
<path
id="path4806"
d="m 564.96174,492.09011 -5.91188,89.49885 c 0,0 28.70326,21.10951 47.27984,0 l 13.51069,-92.03179 9.28575,-11.81869 -24.48338,-3.37894 6.75281,-58.25759 -27.01632,10.97775 1.68694,48.97184 -21.10445,16.03857 z"
style="fill:#8bd7f8" />
<path
id="path4808"
d="m 513.45696,563.01239 1.68694,34.62021 c 0,0 16.04364,16.88457 28.70833,-1.69201 l 2.53294,-29.54926 c 0,0 -16.04364,-16.04363 -32.92821,-3.37894 z"
style="fill:#8bd7f8" />
<path
id="path4810"
d="m 512.61096,566.39133 c 0,0 7.59882,38.84008 33.77421,0 0,0 -22.79645,-17.73057 -33.77421,0 z"
style="fill:#ffffff" />
<path
id="path4812"
d="m 624.90627,563.01239 c 0,0 21.95044,19.42258 30.39526,-4.21987 0,0 -17.73057,-14.35164 -29.54926,0.846"
style="fill:#ffffff" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

+62
View File
@@ -0,0 +1,62 @@
require 'spec_helper'
describe Supplier do
before :each do
@supplier = build :supplier
end
# property open
describe :open do
it 'should be false by default' do
@supplier.open.should == false
end
it 'should not be open? by default' do
@supplier.open?.should == false
end
it 'should be closed? by default' do
@supplier.closed?.should == true
end
describe :mark_as_open! do
before :each do
@supplier.mark_as_open!
end
it 'should be persisted in the database' do
@supplier.reload
@supplier.open.should == true
end
it 'should be open?' do
@supplier.open?.should == true
end
it 'should not be closed?' do
@supplier.closed?.should == false
end
end
describe :mark_as_closed! do
before :each do
@supplier.mark_as_open!
@supplier.mark_as_closed!
end
it 'should be persisted in the database' do
@supplier.reload
@supplier.open.should == false
end
it 'should be open?' do
@supplier.open?.should == false
end
it 'should not be closed?' do
@supplier.closed?.should == true
end
end
end
end
+45 -44
View File
@@ -1,35 +1,33 @@
Stories:
- Person moves to different table
- Person tries to create list on occupied table
- Person walks away without paying
- Person checks out menu through qr scan
- Other persion occupies the table by placing an order
- Person tries to order something
-> Is informed that the table is not occupied
* Person moves to different table
* Person tries to create list on occupied table
* Person walks away without paying
* Person checks out menu through qr scan
** Other persion occupies the table by placing an order
** Person tries to order something
** -> Is informed that the table is not occupied
-> redirect to user_root_path
- Person1 check out the products by scanning the Qr of an empty table
- Person2 checks out the products by scanning the Qr of the same table
- Person2 places order and gets the list
- Person has an active list and creates an order
- Supplier closes the list
- Person submits order
-> Cannot orde on closed list
* Person1 check out the products by scanning the Qr of an empty table
** Person2 checks out the products by scanning the Qr of the same table
** Person2 places order and gets the list
* Person has an active list and creates an order
** Supplier closes the list
** Person submits order
** -> Cannot orde on closed list
Person actions:
When list is open:
- Move table
- Make order
- Request bill
When no list is open:
- Open list
- Subscribe to existing list
- Request menu
General actions
- View history
- Access settings
- I have a question
* When list is open:
** Move table
** Make order
** Request bill
* When no list is open:
** Open list
** Subscribe to existing list
** Request menu
* General actions
** View history
** Access settings
** I have a question
Alleen restaurant kan rekening afsluiten, als dit nog niet is gebeurd voor een tafel kan een nieuwe persoon geen lijst openen. Alert melding bij restaurant als iemand dit probeert
@@ -50,25 +48,28 @@ Actielijst:
- Barman en vaste tafels
Jukebox koppeling
Wireless wachtwoord via qr code
Wireless wachtwoord -> Login optie
Aparte view voor lijsten die de rekening vragen
Aparte view voor lijsten die aandacht nodig hebben
handle closed list on list update for user list
Show warning when closing a list with active orders!
Scan qr button:
If table is not occupied:
- if there is an open list
- if the scan is of the same supplier
- Offer to move table
- else
- Cannot perform action with open list
- else
View menu direct
- When order is placed:
- create list
- add order to list
- table is assigned to person (occupied)
If table is occupied:
- Offer to Join
Scan qr button (see mindmap Qr code.mm for actual version of this schema):
* If table is not occupied:
** if there is an open list
*** if the scan is of the same supplier
**** Offer to move table
*** else
**** Cannot perform action with open list
** else
*** View menu direct
*** When order is placed:
**** create list
**** add order to list
**** table is assigned to person (occupied)
* If table is occupied:
** Offer to Join