office_clerk 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +73 -0
- data/.rubocop.yml +6 -0
- data/.travis.yml +9 -0
- data/Gemfile +63 -0
- data/Gemfile.lock +367 -0
- data/Guardfile +28 -0
- data/README.md +44 -0
- data/Rakefile +6 -0
- data/app/assets/images/admin/baskets-2.jpg +0 -0
- data/app/assets/images/admin/baskets.jpg +0 -0
- data/app/assets/images/admin/categories-2.jpg +0 -0
- data/app/assets/images/admin/categories.jpg +0 -0
- data/app/assets/images/admin/clerks-2.jpg +0 -0
- data/app/assets/images/admin/clerks.jpg +0 -0
- data/app/assets/images/admin/orders-2.jpg +0 -0
- data/app/assets/images/admin/orders.jpg +0 -0
- data/app/assets/images/admin/products-2.jpg +0 -0
- data/app/assets/images/admin/products.jpg +0 -0
- data/app/assets/images/admin/purchases-2.jpg +0 -0
- data/app/assets/images/admin/purchases.jpg +0 -0
- data/app/assets/images/admin/suppliers-2.jpg +0 -0
- data/app/assets/images/admin/suppliers.jpg +0 -0
- data/app/assets/images/alpha.png +0 -0
- data/app/assets/images/down-icon.png +0 -0
- data/app/assets/images/header.gif +0 -0
- data/app/assets/images/hihih.jpg +0 -0
- data/app/assets/images/hue.png +0 -0
- data/app/assets/images/koe.jpg +0 -0
- data/app/assets/images/missing.png +0 -0
- data/app/assets/images/saturation.png +0 -0
- data/app/assets/images/shop/basket.jpg +0 -0
- data/app/assets/images/shop/farfalla-logo.jpg +0 -0
- data/app/assets/images/shop/header.gif +0 -0
- data/app/assets/images/shop/header.jpg +0 -0
- data/app/assets/images/shop/header.png +0 -0
- data/app/assets/images/shop/kansi.jpg +0 -0
- data/app/assets/images/shop/kansi.png +0 -0
- data/app/assets/images/shop/logo.png +0 -0
- data/app/assets/images/shop/menu-gourmet.jpg +0 -0
- data/app/assets/images/shop/menu-hius.jpg +0 -0
- data/app/assets/images/shop/menu-huonetuoksu.jpg +0 -0
- data/app/assets/images/shop/menu-info.jpg +0 -0
- data/app/assets/images/shop/menu-kasvo.jpg +0 -0
- data/app/assets/images/shop/menu-laukut.jpg +0 -0
- data/app/assets/images/shop/menu-luomu.jpg +0 -0
- data/app/assets/images/shop/menu-men.jpg +0 -0
- data/app/assets/images/shop/menu-oljy.jpg +0 -0
- data/app/assets/images/shop/menu-tuoksu1.jpg +0 -0
- data/app/assets/images/shop/menu-vaatteet.jpg +0 -0
- data/app/assets/images/shop/menu-valaisin.jpg +0 -0
- data/app/assets/images/shop/menu-vartalo.jpg +0 -0
- data/app/assets/images/shop/spacer.gif +0 -0
- data/app/assets/images/shop/tausta.jpg +0 -0
- data/app/assets/images/shop/tervetuloa.gif +0 -0
- data/app/assets/images/shop/valk.png +0 -0
- data/app/assets/images/shop/valk3.png +0 -0
- data/app/assets/images/shop/violetti-lev.jpg +0 -0
- data/app/assets/images/shop/violetti.jpg +0 -0
- data/app/assets/images/ui-anim_basic_16x16.gif +0 -0
- data/app/assets/images/up-icon.png +0 -0
- data/app/assets/javascripts/admin.js +29 -0
- data/app/assets/javascripts/shop.js +30 -0
- data/app/assets/stylesheets/admin.css.scss +129 -0
- data/app/assets/stylesheets/shop-receipt.css.scss +80 -0
- data/app/assets/stylesheets/shop.css.scss +403 -0
- data/app/controllers/admin_controller.rb +23 -0
- data/app/controllers/application_controller.rb +41 -0
- data/app/controllers/baskets_controller.rb +176 -0
- data/app/controllers/categories_controller.rb +69 -0
- data/app/controllers/clerks_controller.rb +64 -0
- data/app/controllers/orders_controller.rb +57 -0
- data/app/controllers/products_controller.rb +126 -0
- data/app/controllers/purchases_controller.rb +72 -0
- data/app/controllers/sessions_controller.rb +46 -0
- data/app/controllers/shop_controller.rb +90 -0
- data/app/controllers/suppliers_controller.rb +63 -0
- data/app/helpers/admin_helper.rb +28 -0
- data/app/helpers/application_helper.rb +25 -0
- data/app/helpers/baskets_helper.rb +4 -0
- data/app/helpers/categories_helper.rb +4 -0
- data/app/helpers/orders_helper.rb +4 -0
- data/app/helpers/products_helper.rb +4 -0
- data/app/helpers/purchases_helper.rb +4 -0
- data/app/helpers/shop_helper.rb +17 -0
- data/app/helpers/suppliers_helper.rb +4 -0
- data/app/mailers/.keep +0 -0
- data/app/models/basket.rb +114 -0
- data/app/models/category.rb +27 -0
- data/app/models/clerk.rb +46 -0
- data/app/models/item.rb +26 -0
- data/app/models/order.rb +72 -0
- data/app/models/product.rb +100 -0
- data/app/models/purchase.rb +26 -0
- data/app/models/supplier.rb +15 -0
- data/app/views/addresses/_form_fields.html.haml +4 -0
- data/app/views/addresses/show.html.haml +23 -0
- data/app/views/baskets/_small.html.haml +25 -0
- data/app/views/baskets/edit.html.haml +74 -0
- data/app/views/baskets/index.html.haml +55 -0
- data/app/views/baskets/show.html.haml +18 -0
- data/app/views/categories/_treeview.html.haml +8 -0
- data/app/views/categories/_triple.html.haml +12 -0
- data/app/views/categories/edit.html.haml +36 -0
- data/app/views/categories/index.html.haml +49 -0
- data/app/views/categories/show.html.haml +30 -0
- data/app/views/clerks/edit.html.haml +20 -0
- data/app/views/clerks/index.html.haml +37 -0
- data/app/views/clerks/show.html.haml +19 -0
- data/app/views/layouts/_admin_menu.html.haml +14 -0
- data/app/views/layouts/_google.haml +8 -0
- data/app/views/layouts/_messages.html.haml +5 -0
- data/app/views/layouts/admin.html.haml +42 -0
- data/app/views/layouts/shop.html.haml +96 -0
- data/app/views/orders/edit.html.haml +25 -0
- data/app/views/orders/index.html.haml +93 -0
- data/app/views/orders/show.html.haml +37 -0
- data/app/views/products/_line.html.haml +25 -0
- data/app/views/products/_name.html.haml +4 -0
- data/app/views/products/_online.html.haml +2 -0
- data/app/views/products/_triple.html.haml +12 -0
- data/app/views/products/edit.html.haml +42 -0
- data/app/views/products/index.html.haml +86 -0
- data/app/views/products/show.html.haml +94 -0
- data/app/views/purchases/edit.html.haml +9 -0
- data/app/views/purchases/index.html.haml +52 -0
- data/app/views/purchases/show.html.haml +32 -0
- data/app/views/sessions/new.html.haml +10 -0
- data/app/views/sessions/new_clerk.html.haml +22 -0
- data/app/views/shop/_groups.html.haml +8 -0
- data/app/views/shop/_menu.html.haml +5 -0
- data/app/views/shop/_sub.html.haml +0 -0
- data/app/views/shop/checkout.haml +142 -0
- data/app/views/shop/group.html.haml +9 -0
- data/app/views/shop/main_group.html.haml +9 -0
- data/app/views/shop/order.haml +104 -0
- data/app/views/shop/product.html.haml +67 -0
- data/app/views/shop/product_list.html.haml +50 -0
- data/app/views/shop/saved_search.html +6 -0
- data/app/views/shop/sub_group.html.haml +19 -0
- data/app/views/shop/tuotteista.html.haml +40 -0
- data/app/views/shop/welcome.html.haml +103 -0
- data/app/views/suppliers/edit.html.haml +10 -0
- data/app/views/suppliers/index.html.haml +40 -0
- data/app/views/suppliers/show.html.haml +27 -0
- data/bin/bundle +3 -0
- data/bin/rails +8 -0
- data/bin/rake +8 -0
- data/bin/rspec +7 -0
- data/bin/spring +18 -0
- data/config.ru +7 -0
- data/config/application.example.yml +13 -0
- data/config/application.rb +59 -0
- data/config/application.yml +13 -0
- data/config/boot.rb +7 -0
- data/config/database.yml +25 -0
- data/config/environment.rb +6 -0
- data/config/environments/development.rb +31 -0
- data/config/environments/production.rb +80 -0
- data/config/environments/test.rb +36 -0
- data/config/i18n-tasks.yml +11 -0
- data/config/initializers/attack.rb +32 -0
- data/config/initializers/backtrace_silencers.rb +7 -0
- data/config/initializers/filter_parameter_logging.rb +4 -0
- data/config/initializers/inflections.rb +16 -0
- data/config/initializers/migrate.rb +6 -0
- data/config/initializers/mime_types.rb +6 -0
- data/config/initializers/secret_token.rb +12 -0
- data/config/initializers/session_store.rb +3 -0
- data/config/initializers/simple_form.rb +149 -0
- data/config/initializers/simple_form_bootstrap.rb +48 -0
- data/config/initializers/wrap_parameters.rb +14 -0
- data/config/locales/config.yml +23 -0
- data/config/locales/en.yml +183 -0
- data/config/locales/fi.yml +211 -0
- data/config/routes.rb +108 -0
- data/db/migrate/20131224171442_clerks.rb +15 -0
- data/db/migrate/20131226110406_suppliers.rb +9 -0
- data/db/migrate/20131226143612_categories.rb +18 -0
- data/db/migrate/20131226143747_items.rb +14 -0
- data/db/migrate/20131226144134_orders.rb +21 -0
- data/db/migrate/20131226144316_baskets.rb +12 -0
- data/db/migrate/20131226151151_purchases.rb +11 -0
- data/db/migrate/20131226151332_products.rb +27 -0
- data/db/schema.rb +138 -0
- data/db/seeds.rb +4 -0
- data/lib/assets/.keep +0 -0
- data/lib/office_clerk.rb +20 -0
- data/lib/office_clerk/shipping_method.rb +35 -0
- data/lib/tasks/.keep +0 -0
- data/lib/tasks/import.rake +33 -0
- data/lib/templates/haml/scaffold/_form.html.haml +8 -0
- data/office_clerk.gemspec +46 -0
- data/public/404.html +58 -0
- data/public/422.html +58 -0
- data/public/500.html +57 -0
- data/public/favicon.ico +0 -0
- data/public/humans.txt +20 -0
- data/public/robots.txt +5 -0
- data/spec/controllers/baskets_controller_spec.rb +112 -0
- data/spec/controllers/categories_controller_spec.rb +133 -0
- data/spec/controllers/clerks_controller_spec.rb +70 -0
- data/spec/controllers/orders_controller_spec.rb +105 -0
- data/spec/controllers/products_controller_spec.rb +138 -0
- data/spec/controllers/purchases_controller_spec.rb +123 -0
- data/spec/controllers/sessions_controller_spec.rb +18 -0
- data/spec/controllers/suppliers_controller_spec.rb +137 -0
- data/spec/factories/addresses.rb +11 -0
- data/spec/factories/baskets.rb +15 -0
- data/spec/factories/categories.rb +8 -0
- data/spec/factories/clerks.rb +15 -0
- data/spec/factories/items.rb +19 -0
- data/spec/factories/orders.rb +9 -0
- data/spec/factories/products.rb +10 -0
- data/spec/factories/purchases.rb +10 -0
- data/spec/factories/suppliers.rb +7 -0
- data/spec/features/baskets/buttons_spec.rb +35 -0
- data/spec/features/baskets/edit_spec.rb +50 -0
- data/spec/features/baskets/index_spec.rb +12 -0
- data/spec/features/baskets/search_spec.rb +33 -0
- data/spec/features/baskets/show_spec.rb +21 -0
- data/spec/features/categories_spec.rb +21 -0
- data/spec/features/clerks_spec.rb +21 -0
- data/spec/features/orders_spec.rb +14 -0
- data/spec/features/products/index_spec.rb +30 -0
- data/spec/features/products/new_spec.rb +20 -0
- data/spec/features/purchases_spec.rb +14 -0
- data/spec/features/shops_spec.rb +18 -0
- data/spec/features/suppliers_spec.rb +18 -0
- data/spec/models/baskets/inventory_spec.rb +34 -0
- data/spec/models/baskets/items_spec.rb +37 -0
- data/spec/models/baskets/products_spec.rb +31 -0
- data/spec/models/category_spec.rb +18 -0
- data/spec/models/clerk/email_spec.rb +69 -0
- data/spec/models/clerk/password_spec.rb +83 -0
- data/spec/models/item_spec.rb +33 -0
- data/spec/models/locale_spec.rb +17 -0
- data/spec/models/order_spec.rb +19 -0
- data/spec/models/product_spec.rb +29 -0
- data/spec/models/purchase_spec.rb +8 -0
- data/spec/models/supplier_spec.rb +8 -0
- data/spec/routing/baskets_routing_spec.rb +35 -0
- data/spec/routing/categories_routing_spec.rb +35 -0
- data/spec/routing/orders_routing_spec.rb +35 -0
- data/spec/routing/products_routing_spec.rb +35 -0
- data/spec/routing/purchases_routing_spec.rb +35 -0
- data/spec/routing/suppliers_routing_spec.rb +35 -0
- data/spec/spec_helper.rb +74 -0
- data/spec/support/request_helper.rb +31 -0
- data/test/fixtures/baskets.yml +41993 -0
- data/test/fixtures/categories.yml +638 -0
- data/test/fixtures/clerks.yml +694 -0
- data/test/fixtures/items.yml +83651 -0
- data/test/fixtures/orders.yml +58918 -0
- data/test/fixtures/products.yml +110904 -0
- data/test/fixtures/purchases.yml +1755 -0
- data/test/fixtures/suppliers.yml +341 -0
- data/todo +8 -0
- metadata +607 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
%h2
|
|
2
|
+
= t params["action"]
|
|
3
|
+
= t(:order)
|
|
4
|
+
= simple_form_for(@order, :html => { :class => "form-horizontal" }) do |f|
|
|
5
|
+
.col-md-6
|
|
6
|
+
= f.date_field :ordered_on
|
|
7
|
+
.col-md-6
|
|
8
|
+
= f.text_field :shipment_price
|
|
9
|
+
.col-md-6
|
|
10
|
+
= f.text_field :shipment_tax
|
|
11
|
+
.col-md-6
|
|
12
|
+
= f.text_field :email
|
|
13
|
+
.col-md-6
|
|
14
|
+
= f.date_field :paid_on
|
|
15
|
+
.col-md-6
|
|
16
|
+
= f.date_field :shipped_on
|
|
17
|
+
.col-md-6
|
|
18
|
+
= f.date_field :paid_on
|
|
19
|
+
.col-md-6
|
|
20
|
+
= f.date_field :canceled_on
|
|
21
|
+
.col-md-6
|
|
22
|
+
= f.text_field :shipment_type
|
|
23
|
+
.form-actions
|
|
24
|
+
= f.submit :class => "btn btn-success"
|
|
25
|
+
= link_to t(:back), order_path(@order), :class => "btn btn-warning"
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
.row
|
|
2
|
+
.col-md-9.orders
|
|
3
|
+
%h2= t(:orders)
|
|
4
|
+
= paginate @orders
|
|
5
|
+
.col-md-3
|
|
6
|
+
= image_tag "admin/orders.jpg" , :class => "img-responsive"
|
|
7
|
+
.row
|
|
8
|
+
.col-md-9
|
|
9
|
+
%div
|
|
10
|
+
%table.table.table-striped.table-bordered.table-condensed
|
|
11
|
+
%thead
|
|
12
|
+
%tr
|
|
13
|
+
%th= sort_link @q, :number
|
|
14
|
+
%th= sort_link @q, :ordered_on
|
|
15
|
+
%th= t(:items)
|
|
16
|
+
%th= sort_link @q, :basket_total_price
|
|
17
|
+
%th= sort_link @q, :email
|
|
18
|
+
%th= t(:paid_on)
|
|
19
|
+
%th= t(:shipped_on)
|
|
20
|
+
%tbody
|
|
21
|
+
- @orders.each do |order|
|
|
22
|
+
%tr{:class => "line-#{cycle("1","2")}"}
|
|
23
|
+
%td
|
|
24
|
+
= link_to order.number.to_s , order_path(order), :title => t(:show)
|
|
25
|
+
%td= date(order.ordered_on)
|
|
26
|
+
%td= order.basket.items.length
|
|
27
|
+
%td= link_to euros(order.basket.total_price), basket_path(order.basket)
|
|
28
|
+
%td= order.email
|
|
29
|
+
%td= date(order.paid_on)
|
|
30
|
+
%td= date(order.shipped_on)
|
|
31
|
+
.btn-toolbar
|
|
32
|
+
.btn-group
|
|
33
|
+
= paginate @orders
|
|
34
|
+
.btn-group.pull-right
|
|
35
|
+
= link_to orders_path(:format => :csv), :class => "btn btn-primary" do
|
|
36
|
+
%i.icon-download CSV
|
|
37
|
+
= link_to orders_path(:format => :json), :class => "btn btn-primary" do
|
|
38
|
+
%i.icon-download JSON
|
|
39
|
+
.col-md-3
|
|
40
|
+
= search_form_for @q, :url => search_orders_path, :html => { :class => "well well-small" }, :method => :post do |f|
|
|
41
|
+
.form-group
|
|
42
|
+
= f.text_field :number_cont , :placeholder => t(:order_number)
|
|
43
|
+
.form-group
|
|
44
|
+
= f.text_field(:email , :placeholder => t(:email))
|
|
45
|
+
.form-group.row
|
|
46
|
+
.col-md-3
|
|
47
|
+
= f.label(:total)
|
|
48
|
+
.col-md-4
|
|
49
|
+
= f.text_field :basket_total_price_gteq , :class => "form-control"
|
|
50
|
+
.col-md-4
|
|
51
|
+
= f.text_field :basket_total_price_lteq , :class => "form-control"
|
|
52
|
+
.row
|
|
53
|
+
.col-md-10
|
|
54
|
+
= f.label(:ordered_on)
|
|
55
|
+
.row
|
|
56
|
+
.col-md-5
|
|
57
|
+
= f.search_field :ordered_on_gteq , :class => "form-control datepicker" , :value => sort_date(:ordered_on_gteq)
|
|
58
|
+
.col-md-5
|
|
59
|
+
= f.search_field :ordered_on_lteq , :class => "form-control datepicker"
|
|
60
|
+
.row
|
|
61
|
+
.col-md-10
|
|
62
|
+
= f.label(:paid_on)
|
|
63
|
+
.row
|
|
64
|
+
.col-md-5
|
|
65
|
+
= f.text_field :paid_on_gteq , :class => "form-control datepicker"
|
|
66
|
+
.col-md-5
|
|
67
|
+
= f.text_field :paid_on_lteq , :class => "form-control datepicker"
|
|
68
|
+
.row
|
|
69
|
+
.col-md-10
|
|
70
|
+
= f.label(:shipped_on)
|
|
71
|
+
.row
|
|
72
|
+
.col-md-5
|
|
73
|
+
= f.text_field :shipped_on_gteq , :class => "form-control datepicker"
|
|
74
|
+
.col-md-5
|
|
75
|
+
= f.text_field :shipped_on_lteq , :class => "form-control datepicker"
|
|
76
|
+
.row
|
|
77
|
+
.col-md-10
|
|
78
|
+
= f.label(:shipped_on)
|
|
79
|
+
.row
|
|
80
|
+
.col-md-5
|
|
81
|
+
= f.text_field :shipped_on_gteq , :class => "form-control datepicker"
|
|
82
|
+
.col-md-5
|
|
83
|
+
= f.text_field :shipped_on_lteq , :class => "form-control datepicker"
|
|
84
|
+
.row
|
|
85
|
+
.col-md-10
|
|
86
|
+
= f.label(:canceled_on)
|
|
87
|
+
.row
|
|
88
|
+
.col-md-5
|
|
89
|
+
= f.text_field :canceled_on_gteq , :class => "form-control datepicker"
|
|
90
|
+
.col-md-5
|
|
91
|
+
= f.text_field :canceled_on_lteq , :class => "form-control datepicker"
|
|
92
|
+
= f.submit t(:filter), :class => "btn btn-success"
|
|
93
|
+
= link_to t(:cancel), orders_path, :class => "btn btn-warning"
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
%h2
|
|
2
|
+
= t(:order) + " : " + @order.number.to_s
|
|
3
|
+
.col-md-4
|
|
4
|
+
%p
|
|
5
|
+
%b
|
|
6
|
+
= t(:ordered_on) + " : " + date(@order.ordered_on)
|
|
7
|
+
%p
|
|
8
|
+
%b
|
|
9
|
+
= t(:total_price) + " : " + euros(@order.basket.total_price)
|
|
10
|
+
%p
|
|
11
|
+
%b
|
|
12
|
+
= t(:total_tax) + " : " + euros(@order.basket.total_tax)
|
|
13
|
+
%p
|
|
14
|
+
%b
|
|
15
|
+
= t(:shipment_price) + " : " + euros(@order.shipment_price)
|
|
16
|
+
%p
|
|
17
|
+
%b
|
|
18
|
+
= t(:email) + " : " + @order.email.to_s
|
|
19
|
+
.col-md-4
|
|
20
|
+
%p
|
|
21
|
+
%b
|
|
22
|
+
= t(:paid_on) + " : " + date(@order.paid_on)
|
|
23
|
+
%p
|
|
24
|
+
%b
|
|
25
|
+
= t(:shipped_on) + " : " + date(@order.shipped_on)
|
|
26
|
+
%p
|
|
27
|
+
%b
|
|
28
|
+
= t(:canceled_on) + " : " + date(@order.canceled_on)
|
|
29
|
+
%p
|
|
30
|
+
%b
|
|
31
|
+
= t(:shipment_type) + " : " + @order.shipment_type.to_s
|
|
32
|
+
|
|
33
|
+
= render "baskets/small" , :basket => @order.basket
|
|
34
|
+
|
|
35
|
+
.col-md-12{"data-no-turbolink" => true}
|
|
36
|
+
= link_to t(:back), orders_path, :class => "btn btn-warning"
|
|
37
|
+
= link_to t(:print), invoice_order_path(@order), :class => "btn btn-primary" , :target => "_blank"
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
%h2
|
|
2
|
+
= t(:product_line)
|
|
3
|
+
= @product.name
|
|
4
|
+
= render "online" , :object => @product
|
|
5
|
+
%table.table.table-bordered.table-condensed
|
|
6
|
+
%tbody
|
|
7
|
+
%tr.line-1
|
|
8
|
+
%td=t("name")
|
|
9
|
+
- @product.products.each do |product|
|
|
10
|
+
%td
|
|
11
|
+
= image_tag product.main_picture.url(:thumb)
|
|
12
|
+
=link_to product.name , product_path(product)
|
|
13
|
+
%tr.line-2
|
|
14
|
+
%td=t("price")
|
|
15
|
+
- @product.products.each do |product|
|
|
16
|
+
%td=euros(product.price)
|
|
17
|
+
%tr.line-1
|
|
18
|
+
%td
|
|
19
|
+
=t("inventory")
|
|
20
|
+
- @product.products.each do |product|
|
|
21
|
+
%td=product.inventory
|
|
22
|
+
%tr.line-2
|
|
23
|
+
%td=t("ean")
|
|
24
|
+
- @product.products.each do |product|
|
|
25
|
+
%td=product.ean
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
%h3= products.length.to_s + " " + t(:products)
|
|
2
|
+
.row
|
|
3
|
+
%table.table.table-striped.table-bordered.table-condensed
|
|
4
|
+
%tbody
|
|
5
|
+
- products.in_groups_of(3).each do |array|
|
|
6
|
+
%tr{:class => "line-#{cycle("1","2")}"}
|
|
7
|
+
-array.each do |product|
|
|
8
|
+
-next unless product
|
|
9
|
+
%td= image_tag product.main_picture.url(:thumb)
|
|
10
|
+
%td
|
|
11
|
+
= link_to product_path(product), :title => t(:show) do
|
|
12
|
+
= product.full_name
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
%h2
|
|
2
|
+
= t params["action"]
|
|
3
|
+
-if @product.line?
|
|
4
|
+
=t(:product_line)
|
|
5
|
+
-else
|
|
6
|
+
= t(:product)
|
|
7
|
+
= @product.name.to_s
|
|
8
|
+
|
|
9
|
+
.row
|
|
10
|
+
= simple_form_for(@product, :html => { :multipart => true , :class => "form-horizontal" , :role=>"form"} ) do |f|
|
|
11
|
+
= f.hidden_field( :product_id) if @product.product_id
|
|
12
|
+
.col-md-8
|
|
13
|
+
.row
|
|
14
|
+
= f.input :name
|
|
15
|
+
- unless @product.product_id
|
|
16
|
+
= f.input :link
|
|
17
|
+
= f.input :description, :as => :text , :input_html => {:rows => 10}
|
|
18
|
+
.row
|
|
19
|
+
.col-md-6
|
|
20
|
+
= image_tag @product.main_picture.url(:list)
|
|
21
|
+
= f.file_field :main_picture , :label => t(:main_picture)
|
|
22
|
+
.col-md-6
|
|
23
|
+
= image_tag @product.extra_picture.url(:list)
|
|
24
|
+
= f.file_field :extra_picture , :label => t(:extra_picture)
|
|
25
|
+
.col-md-4
|
|
26
|
+
= f.input :online
|
|
27
|
+
= f.input :price
|
|
28
|
+
= f.input :cost
|
|
29
|
+
= f.input :weight
|
|
30
|
+
= f.input :ean
|
|
31
|
+
= f.input :tax
|
|
32
|
+
= f.input :scode
|
|
33
|
+
= f.input :supplier do
|
|
34
|
+
= f.select :supplier_id, Supplier.all.order(:supplier_name).map { |c| [c.supplier_name, c.id ] }, :prompt => t(:select)
|
|
35
|
+
= f.input :category do
|
|
36
|
+
= f.select :category_id, Category.all.order(:name).map { |c| [c.name, c.id ] }, :prompt => t(:select)
|
|
37
|
+
.form-actions
|
|
38
|
+
= f.submit :class => "btn btn-success"
|
|
39
|
+
-if @product.product_id
|
|
40
|
+
= link_to t(:cancel), product_path(@product.product), :class => "btn btn-warning"
|
|
41
|
+
-else
|
|
42
|
+
= link_to t(:cancel), products_path, :class => "btn btn-warning"
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
.row
|
|
2
|
+
.col-md-9.products
|
|
3
|
+
.row
|
|
4
|
+
.col-md-10
|
|
5
|
+
%h2
|
|
6
|
+
- if params[:basket]
|
|
7
|
+
= t(:choose_product_for_basket)
|
|
8
|
+
-else
|
|
9
|
+
= t(:products)
|
|
10
|
+
= paginate @products
|
|
11
|
+
.col-md-2
|
|
12
|
+
= link_to t(:new) + ' ' + t(:product) , new_product_path , :class => "btn btn-primary"
|
|
13
|
+
.col-md-3
|
|
14
|
+
= image_tag "admin/products.jpg" , :class => "img-responsive"
|
|
15
|
+
|
|
16
|
+
.row
|
|
17
|
+
.col-md-9
|
|
18
|
+
%div
|
|
19
|
+
%table.table-striped.table-bordered.table-condensed
|
|
20
|
+
%thead
|
|
21
|
+
%tr
|
|
22
|
+
%th=t( "picture")
|
|
23
|
+
%th= sort_link @q, :ean
|
|
24
|
+
%th= sort_link @q, :name
|
|
25
|
+
%th= sort_link @q, :price
|
|
26
|
+
%th=t(:supplier) + " " + t(:category)
|
|
27
|
+
%th= sort_link @q, :inventory
|
|
28
|
+
%th
|
|
29
|
+
%label.checkbox
|
|
30
|
+
= @product_scope.length.to_s + " " + t(:products)
|
|
31
|
+
%tbody
|
|
32
|
+
- @products.each do |product|
|
|
33
|
+
-next if params[:basket] and product.line?
|
|
34
|
+
%tr{:class => "line-#{cycle("1","2")}"}
|
|
35
|
+
%td.image= image_tag product.main_picture.url(:thumb)
|
|
36
|
+
%td.ean= product.line? ? "#{product.products.length} #{t(:items)}" : product.ean
|
|
37
|
+
%td.name
|
|
38
|
+
= link_to product_path(product), :title => t(:show) do
|
|
39
|
+
=product.full_name
|
|
40
|
+
%td.price=euros(product.price)
|
|
41
|
+
%td.supplier
|
|
42
|
+
=product.supplier.supplier_name if product.supplier
|
|
43
|
+
%br
|
|
44
|
+
=product.category.name if product.category
|
|
45
|
+
%td.inventory=product.inventory
|
|
46
|
+
-if params[:basket]
|
|
47
|
+
%td= link_to t(:add_to_basket) , edit_basket_path(:id => params[:basket] , :add => product.id)
|
|
48
|
+
-else
|
|
49
|
+
%td= link_to t(:edit) ,edit_product_path(product), :title => t(:edit)
|
|
50
|
+
= paginate @products
|
|
51
|
+
.col-md-3
|
|
52
|
+
= search_form_for @q, :url => search_products_path, :html => { :class => "well well-small" }, :method => :get do |f|
|
|
53
|
+
.form-group
|
|
54
|
+
- if params[:basket]
|
|
55
|
+
= hidden_field_tag :basket , params[:basket]
|
|
56
|
+
= f.text_field :name_or_product_name_cont, :class => "form-control" , :placeholder => t(:name)
|
|
57
|
+
-else
|
|
58
|
+
= f.text_field :name_cont, :class => "form-control" , :placeholder => t(:name)
|
|
59
|
+
.form-group
|
|
60
|
+
= f.text_field :description_cont , :class => "form-control" , :placeholder => t(:description)
|
|
61
|
+
.form-group
|
|
62
|
+
= f.text_field :ean_cont , :class => "form-control" , :placeholder => t(:ean)
|
|
63
|
+
.form-group
|
|
64
|
+
= f.text_field :scode_cont , :class => "form-control" , :placeholder => t(:scode)
|
|
65
|
+
.form-group.row
|
|
66
|
+
.col-md-3
|
|
67
|
+
= f.label(:price)
|
|
68
|
+
.col-md-4
|
|
69
|
+
= f.text_field :price_gteq , :class => "form-control"
|
|
70
|
+
.col-md-4
|
|
71
|
+
= f.text_field :price_lteq , :class => "form-control"
|
|
72
|
+
.form-group.row
|
|
73
|
+
.col-md-3
|
|
74
|
+
= f.label(:inventory)
|
|
75
|
+
.col-md-4
|
|
76
|
+
= f.text_field :inventory_gteq , :class => "form-control"
|
|
77
|
+
.col-md-4
|
|
78
|
+
= f.text_field :inventory_lteq , :class => "form-control"
|
|
79
|
+
.form-group
|
|
80
|
+
= f.label t(:supplier)
|
|
81
|
+
= f.collection_select :supplier_id_eq, Supplier.all, :id, :supplier_name, :include_blank => true
|
|
82
|
+
.form-group
|
|
83
|
+
= f.label t(:category)
|
|
84
|
+
= f.collection_select :category_id_eq, Category.all, :id, :name, :include_blank => true
|
|
85
|
+
= f.submit t(:filter), :class => "btn btn-success"
|
|
86
|
+
= link_to t(:cancel), products_path, :class => "btn btn-warning"
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
-if @product.line?
|
|
2
|
+
=render "line"
|
|
3
|
+
-elsif @product.line_item?
|
|
4
|
+
%h3
|
|
5
|
+
= t(:product)
|
|
6
|
+
= t(:product_line)
|
|
7
|
+
= link_to @product.product.name , product_path( @product.product)
|
|
8
|
+
= @product.name
|
|
9
|
+
= render "online" , :object => @product
|
|
10
|
+
-elsif
|
|
11
|
+
%h3
|
|
12
|
+
= t(:tuote)
|
|
13
|
+
= @product.name
|
|
14
|
+
= render "online" , :object => @product
|
|
15
|
+
.row
|
|
16
|
+
%br
|
|
17
|
+
.col-md-6.tausta
|
|
18
|
+
.row
|
|
19
|
+
.col-md-6
|
|
20
|
+
%p
|
|
21
|
+
%b
|
|
22
|
+
= t(:main_picture) + " : "
|
|
23
|
+
%br
|
|
24
|
+
= image_tag @product.main_picture.url
|
|
25
|
+
.col-md-6
|
|
26
|
+
%p
|
|
27
|
+
%b
|
|
28
|
+
= t(:extra_picture) + " : "
|
|
29
|
+
%br
|
|
30
|
+
= image_tag @product.extra_picture.url
|
|
31
|
+
.row
|
|
32
|
+
.col-md-6
|
|
33
|
+
%p
|
|
34
|
+
%b
|
|
35
|
+
= t(:price) + " : "
|
|
36
|
+
= euros(@product.price)
|
|
37
|
+
%p
|
|
38
|
+
%b
|
|
39
|
+
= t(:cost) + " : "
|
|
40
|
+
= euros(@product.cost)
|
|
41
|
+
%p
|
|
42
|
+
%b
|
|
43
|
+
= t(:category) + " : "
|
|
44
|
+
= link_to @product.category.name ,category_path(@product.category) if @product.category
|
|
45
|
+
.col-md-6
|
|
46
|
+
%p
|
|
47
|
+
%b
|
|
48
|
+
= t(:weight) + " : "
|
|
49
|
+
= @product.weight
|
|
50
|
+
%p
|
|
51
|
+
%b
|
|
52
|
+
= t(:inventory) + " : "
|
|
53
|
+
= @product.inventory
|
|
54
|
+
%p
|
|
55
|
+
%b
|
|
56
|
+
= t(:supplier) + " : "
|
|
57
|
+
= link_to @product.supplier.supplier_name ,supplier_path(@product.supplier) if @product.supplier
|
|
58
|
+
.col-md-6
|
|
59
|
+
%p
|
|
60
|
+
%b
|
|
61
|
+
= t(:description) + " : "
|
|
62
|
+
= markdown @product.description
|
|
63
|
+
%p
|
|
64
|
+
%b
|
|
65
|
+
= t(:link) + " : "
|
|
66
|
+
= @product.link
|
|
67
|
+
%p
|
|
68
|
+
%b
|
|
69
|
+
= t(:ean) + " : "
|
|
70
|
+
= @product.ean
|
|
71
|
+
%p
|
|
72
|
+
%b
|
|
73
|
+
= t(:scode) + " : "
|
|
74
|
+
= @product.scode
|
|
75
|
+
%p
|
|
76
|
+
%b
|
|
77
|
+
= t(:tax_percent) + " : "
|
|
78
|
+
= @product.tax
|
|
79
|
+
.row
|
|
80
|
+
.col-md-2
|
|
81
|
+
= link_to t(:edit), edit_product_path(@product), :class => "btn btn-success"
|
|
82
|
+
.col-md-2
|
|
83
|
+
= link_to t(:back), products_path, :class => "btn btn-warning"
|
|
84
|
+
.col-md-2
|
|
85
|
+
= link_to t(:delete) , delete_product_path(@product), :class => "btn btn-danger"
|
|
86
|
+
-if @product.line_item?
|
|
87
|
+
.col-md-2
|
|
88
|
+
= link_to t(:to_product) , product_path( @product.product), :class => "btn btn-primary"
|
|
89
|
+
-else
|
|
90
|
+
.col-md-2
|
|
91
|
+
= link_to t(:new_item) , new_product_path( :parent_id => @product.id), :class => "btn btn-primary"
|
|
92
|
+
-unless @product.line?
|
|
93
|
+
.col-md-2
|
|
94
|
+
= link_to t(:barcode) , barcode_product_path( @product), :class => "btn btn-primary"
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
%h2
|
|
2
|
+
= t params["action"]
|
|
3
|
+
= t(:purchase)
|
|
4
|
+
= simple_form_for(@purchase, :html => { :class => "form-horizontal" }) do |f|
|
|
5
|
+
= f.input :name
|
|
6
|
+
= f.input :ordered_on
|
|
7
|
+
= f.input :received_on
|
|
8
|
+
= f.submit :class => "btn btn-success"
|
|
9
|
+
= link_to t(:back), purchases_path, :class => "btn btn-warning"
|