stall 0.3.3 → 0.3.4

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.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/para/stall/inputs/variant-select.coffee +4 -3
  3. data/app/assets/javascripts/stall.coffee +3 -1
  4. data/app/assets/javascripts/stall/add-product-to-wish-list-button.coffee +99 -0
  5. data/app/assets/javascripts/stall/add-to-wish-list-button.coffee +17 -0
  6. data/app/assets/javascripts/stall/product-list-form.coffee +31 -0
  7. data/app/controllers/stall/cart_line_items_controller.rb +21 -0
  8. data/app/controllers/stall/curated_product_lists_controller.rb +6 -0
  9. data/app/controllers/stall/line_items_controller.rb +14 -7
  10. data/app/controllers/stall/products_breadcrumbs.rb +8 -1
  11. data/app/controllers/stall/products_controller.rb +12 -0
  12. data/app/controllers/stall/wish_list_line_items_controller.rb +52 -0
  13. data/app/controllers/stall/wish_lists_controller.rb +7 -0
  14. data/app/helpers/stall/add_to_cart_helper.rb +3 -2
  15. data/app/helpers/stall/add_to_wish_list_helper.rb +30 -0
  16. data/app/helpers/stall/products_helper.rb +13 -0
  17. data/app/models/stall/models/cart.rb +0 -6
  18. data/app/models/stall/models/customer.rb +9 -0
  19. data/app/models/stall/models/line_item.rb +13 -0
  20. data/app/models/stall/models/product.rb +1 -1
  21. data/app/models/stall/models/product_list.rb +4 -0
  22. data/app/models/stall/models/variant.rb +4 -0
  23. data/app/models/stall/models/wish_list.rb +18 -0
  24. data/app/models/wish_list.rb +3 -0
  25. data/app/services/stall/add_to_cart_service.rb +4 -47
  26. data/app/services/stall/add_to_product_list_service.rb +63 -0
  27. data/app/services/stall/add_to_wish_list_service.rb +17 -0
  28. data/app/services/stall/available_stocks_service.rb +1 -1
  29. data/app/services/stall/shipping_fee_calculator_service.rb +22 -9
  30. data/app/views/admin/products/_form.html.haml +5 -0
  31. data/app/views/checkout/steps/_informations.html.haml +1 -1
  32. data/app/views/stall/addresses/_fields.html.haml +4 -4
  33. data/app/views/stall/{line_items → cart_line_items}/_add_error.html.haml +0 -0
  34. data/app/views/stall/{line_items → cart_line_items}/_added.html.haml +2 -2
  35. data/app/views/stall/{line_items → cart_line_items}/_form.html.haml +1 -1
  36. data/app/views/stall/carts/_widget.html.haml +1 -1
  37. data/app/views/stall/carts/show.html.haml +4 -4
  38. data/app/views/stall/curated_product_lists/show.html.haml +1 -1
  39. data/app/views/stall/customers/_fields.html.haml +1 -1
  40. data/app/views/stall/customers/_sign_in.html.haml +2 -2
  41. data/app/views/stall/products/_list.html.haml +2 -0
  42. data/app/views/stall/products/_product.html.haml +2 -1
  43. data/app/views/stall/wish_list_line_items/_add_error.html.haml +17 -0
  44. data/app/views/stall/wish_list_line_items/_added.html.haml +19 -0
  45. data/app/views/stall/wish_list_line_items/_button.html.haml +3 -0
  46. data/app/views/stall/wish_list_line_items/_form.html.haml +12 -0
  47. data/app/views/stall/wish_lists/show.html.haml +21 -0
  48. data/config/locales/stall.fr.yml +26 -0
  49. data/db/migrate/20170425085606_add_weight_to_stall_products_and_variants.rb +6 -0
  50. data/db/migrate/20170426163450_add_vat_rate_to_stall_products.rb +5 -0
  51. data/db/migrate/20170522062334_change_variants_weight_default_to_nil.rb +11 -0
  52. data/lib/generators/stall/install/templates/initializer.rb +18 -0
  53. data/lib/stall.rb +1 -0
  54. data/lib/stall/addressable.rb +35 -4
  55. data/lib/stall/addresses/copy_source_to_target.rb +14 -10
  56. data/lib/stall/addresses/prefill_target_from_source.rb +10 -6
  57. data/lib/stall/config.rb +4 -0
  58. data/lib/stall/engine.rb +1 -0
  59. data/lib/stall/routes.rb +42 -19
  60. data/lib/stall/sellable.rb +1 -1
  61. data/lib/stall/shipping/calculator.rb +1 -1
  62. data/lib/stall/shipping/country_weight_table_calculator.rb +3 -2
  63. data/lib/stall/version.rb +1 -1
  64. data/lib/stall/wish_list_helper.rb +93 -0
  65. metadata +26 -6
  66. data/app/assets/javascripts/stall/cart-form.coffee +0 -28
@@ -13,7 +13,7 @@ module Stall
13
13
  name: (try(:name) || try(:title)),
14
14
  unit_price: try(:price),
15
15
  unit_eot_price: eot_price,
16
- vat_rate: vat_rate,
16
+ vat_rate: vat_rate
17
17
  )
18
18
  end
19
19
 
@@ -33,7 +33,7 @@ module Stall
33
33
  end
34
34
 
35
35
  def eot_price
36
- price / (1 + (vat_rate / 100.0))
36
+ price / (1 + (vat_rate / 100.0)) if price
37
37
  end
38
38
 
39
39
  def vat_rate
@@ -8,7 +8,8 @@ module Stall
8
8
  end
9
9
 
10
10
  def price
11
- total_weight = cart.total_weight
11
+ # Convert weight from grams to kilograms.
12
+ total_weight = (cart.total_weight / 1000.0)
12
13
 
13
14
  # Browse the data hash to find a suitable country code for the cart's
14
15
  # total weight
@@ -58,7 +59,7 @@ module Stall
58
59
 
59
60
  csv.each do |row|
60
61
  max_weight = row.first.to_f
61
- price = BigDecimal.new(row[index])
62
+ price = BigDecimal.new(row[index]) if row[index]
62
63
  hash[country_code][max_weight] = price
63
64
  end
64
65
  end
@@ -1,3 +1,3 @@
1
1
  module Stall
2
- VERSION = "0.3.3"
2
+ VERSION = "0.3.4"
3
3
  end
@@ -0,0 +1,93 @@
1
+ module Stall
2
+ module WishListHelper
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ if respond_to?(:helper_method)
7
+ helper_method :current_wish_list
8
+ end
9
+
10
+ if respond_to?(:after_action)
11
+ after_action :store_wish_list_to_cookies
12
+ end
13
+ end
14
+
15
+ def current_wish_list
16
+ RequestStore.store[wish_list_key] ||= load_current_wish_list
17
+ end
18
+
19
+ protected
20
+
21
+ def current_wish_list_key
22
+ params[:wish_list_key].try(:to_sym) || :default
23
+ end
24
+
25
+ def load_current_wish_list(identifier = current_wish_list_key)
26
+ if (wish_list = find_wish_list(identifier))
27
+ return prepare_wish_list(wish_list)
28
+ end
29
+
30
+ # If no token was stored or the token does not exist anymore, create a
31
+ # new wish_list and store the new token
32
+ #
33
+ prepare_wish_list(wish_list_class.new(identifier: identifier))
34
+ end
35
+
36
+ def prepare_wish_list(wish_list)
37
+ wish_list.tap do
38
+ wish_list.customer = current_customer if current_customer
39
+ # Keep track of potential customer locale switching to allow e-mailing
40
+ # him in his last used locale
41
+ #
42
+ # Only applicable if the locale is an available locale to avoid strange
43
+ # issues with some URL locale management systems that could set the
44
+ # `assets` prefix as a locale, for instance.
45
+ if wish_list.customer && I18n.locale.in?(I18n.available_locales)
46
+ wish_list.customer.locale = I18n.locale
47
+ end
48
+
49
+ # Only update locale change for existing wish_lists. New wish_lists don't need
50
+ # to be saved, avoiding each robot or simple visitors to create a
51
+ # wish_list on large shops.
52
+ wish_list.save unless wish_list.new_record?
53
+ end
54
+ end
55
+
56
+ def find_wish_list(identifier, ensure_active_wish_list = true)
57
+ if (wish_list_token = cookies.encrypted[wish_list_key(identifier)])
58
+ if (current_wish_list = ProductList.find_by_token(wish_list_token)) &&
59
+ (!ensure_active_wish_list || current_wish_list.active?)
60
+ then
61
+ return current_wish_list
62
+ else
63
+ # Remove any wish_list that can't be fetched, either because it's already
64
+ # paid, or because it was cleaned out
65
+ remove_wish_list_from_cookies(identifier)
66
+ nil
67
+ end
68
+ end
69
+ end
70
+
71
+ def remove_wish_list_from_cookies(identifier = current_wish_list_key)
72
+ cookies.delete(wish_list_key(identifier))
73
+ end
74
+
75
+ def wish_list_key(identifier = current_wish_list_key, namespace: nil)
76
+ ['stall', 'wish_list', namespace, identifier.to_s].compact.join('.')
77
+ end
78
+
79
+ def wish_list_class
80
+ WishList
81
+ end
82
+
83
+ def store_wish_list_to_cookies
84
+ if current_wish_list.persisted? && current_wish_list.active?
85
+ store_wish_list_cookie_for(current_wish_list.identifier, current_wish_list)
86
+ end
87
+ end
88
+
89
+ def store_wish_list_cookie_for(identifier, wish_list, namespace: nil)
90
+ cookies.encrypted.permanent[wish_list_key(identifier, namespace: namespace)] = wish_list.token
91
+ end
92
+ end
93
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stall
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - vala
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-20 00:00:00.000000000 Z
11
+ date: 2017-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -413,9 +413,11 @@ files:
413
413
  - app/assets/javascripts/para/stall/inputs/variants-matrix/properties_select.coffee
414
414
  - app/assets/javascripts/para/stall/inputs/variants-matrix/variant.coffee
415
415
  - app/assets/javascripts/stall.coffee
416
+ - app/assets/javascripts/stall/add-product-to-wish-list-button.coffee
416
417
  - app/assets/javascripts/stall/add-to-cart-form.coffee
418
+ - app/assets/javascripts/stall/add-to-wish-list-button.coffee
417
419
  - app/assets/javascripts/stall/addresses-fields.coffee
418
- - app/assets/javascripts/stall/cart-form.coffee
420
+ - app/assets/javascripts/stall/product-list-form.coffee
419
421
  - app/assets/javascripts/stall/products-filters.coffee
420
422
  - app/assets/javascripts/stall/remote-sign-in-form.coffee
421
423
  - app/assets/stylesheets/para/stall.sass
@@ -425,6 +427,7 @@ files:
425
427
  - app/controllers/para/stall/admin/shipping_notes_controller.rb
426
428
  - app/controllers/stall/application_controller.rb
427
429
  - app/controllers/stall/cart_credits_controller.rb
430
+ - app/controllers/stall/cart_line_items_controller.rb
428
431
  - app/controllers/stall/carts_controller.rb
429
432
  - app/controllers/stall/checkout/steps_controller.rb
430
433
  - app/controllers/stall/checkout_base_controller.rb
@@ -438,7 +441,10 @@ files:
438
441
  - app/controllers/stall/products_breadcrumbs.rb
439
442
  - app/controllers/stall/products_controller.rb
440
443
  - app/controllers/stall/products_search.rb
444
+ - app/controllers/stall/wish_list_line_items_controller.rb
445
+ - app/controllers/stall/wish_lists_controller.rb
441
446
  - app/helpers/stall/add_to_cart_helper.rb
447
+ - app/helpers/stall/add_to_wish_list_helper.rb
442
448
  - app/helpers/stall/application_helper.rb
443
449
  - app/helpers/stall/checkout_helper.rb
444
450
  - app/helpers/stall/credit_notes_helper.rb
@@ -447,6 +453,7 @@ files:
447
453
  - app/helpers/stall/payments_helper.rb
448
454
  - app/helpers/stall/prices_helper.rb
449
455
  - app/helpers/stall/products_filters_helper.rb
456
+ - app/helpers/stall/products_helper.rb
450
457
  - app/mailers/stall/admin_mailer.rb
451
458
  - app/mailers/stall/base_mailer.rb
452
459
  - app/mailers/stall/customer_mailer.rb
@@ -507,11 +514,15 @@ files:
507
514
  - app/models/stall/models/user_omniauth_account.rb
508
515
  - app/models/stall/models/variant.rb
509
516
  - app/models/stall/models/variant_property_value.rb
517
+ - app/models/stall/models/wish_list.rb
510
518
  - app/models/user.rb
511
519
  - app/models/user_omniauth_account.rb
512
520
  - app/models/variant.rb
513
521
  - app/models/variant_property_value.rb
522
+ - app/models/wish_list.rb
514
523
  - app/services/stall/add_to_cart_service.rb
524
+ - app/services/stall/add_to_product_list_service.rb
525
+ - app/services/stall/add_to_wish_list_service.rb
515
526
  - app/services/stall/available_stocks_service.rb
516
527
  - app/services/stall/base_service.rb
517
528
  - app/services/stall/cart_credit_note_creation_service.rb
@@ -556,6 +567,9 @@ files:
556
567
  - app/views/stall/addresses/_fields.html.haml
557
568
  - app/views/stall/addresses/_nested_fields.html.haml
558
569
  - app/views/stall/admin_mailer/order_paid_email.html.haml
570
+ - app/views/stall/cart_line_items/_add_error.html.haml
571
+ - app/views/stall/cart_line_items/_added.html.haml
572
+ - app/views/stall/cart_line_items/_form.html.haml
559
573
  - app/views/stall/carts/_cart.html.haml
560
574
  - app/views/stall/carts/_widget.html.haml
561
575
  - app/views/stall/carts/show.html.haml
@@ -567,9 +581,6 @@ files:
567
581
  - app/views/stall/customer_mailer/order_shipped_email.html.haml
568
582
  - app/views/stall/customers/_fields.html.haml
569
583
  - app/views/stall/customers/_sign_in.html.haml
570
- - app/views/stall/line_items/_add_error.html.haml
571
- - app/views/stall/line_items/_added.html.haml
572
- - app/views/stall/line_items/_form.html.haml
573
584
  - app/views/stall/manufacturers/show.html.haml
574
585
  - app/views/stall/payments/_fields.html.haml
575
586
  - app/views/stall/payments/manual_payment_gateway/_form.html.haml
@@ -588,6 +599,11 @@ files:
588
599
  - app/views/stall/shared/mailers/_cart.html.haml
589
600
  - app/views/stall/shared/mailers/_shipping_note.html.haml
590
601
  - app/views/stall/shipments/_fields.html.haml
602
+ - app/views/stall/wish_list_line_items/_add_error.html.haml
603
+ - app/views/stall/wish_list_line_items/_added.html.haml
604
+ - app/views/stall/wish_list_line_items/_button.html.haml
605
+ - app/views/stall/wish_list_line_items/_form.html.haml
606
+ - app/views/stall/wish_lists/show.html.haml
591
607
  - config/locales/stall.en.yml
592
608
  - config/locales/stall.fr.yml
593
609
  - db/migrate/20151103154313_create_stall_line_items.rb
@@ -638,6 +654,9 @@ files:
638
654
  - db/migrate/20170321104203_create_stall_images.rb
639
655
  - db/migrate/20170321112248_remove_image_attachment_to_stall_products.rb
640
656
  - db/migrate/20170411134756_add_stock_to_stall_variants.rb
657
+ - db/migrate/20170425085606_add_weight_to_stall_products_and_variants.rb
658
+ - db/migrate/20170426163450_add_vat_rate_to_stall_products.rb
659
+ - db/migrate/20170522062334_change_variants_weight_default_to_nil.rb
641
660
  - lib/ext/ransack.rb
642
661
  - lib/generators/stall/checkout/step/step_generator.rb
643
662
  - lib/generators/stall/checkout/step/templates/step.html.haml.erb
@@ -713,6 +732,7 @@ files:
713
732
  - lib/stall/utils.rb
714
733
  - lib/stall/utils/config_dsl.rb
715
734
  - lib/stall/version.rb
735
+ - lib/stall/wish_list_helper.rb
716
736
  - lib/tasks/stall_tasks.rake
717
737
  homepage: https://github.com/glyph-fr/stall
718
738
  licenses:
@@ -1,28 +0,0 @@
1
- class Stall.CartForm extends Vertebra.View
2
- events:
3
- 'change [data-quantity-field]': 'formUpdated'
4
- 'cocoon:after-remove': 'formUpdated'
5
- 'ajax:success': 'updateSuccess'
6
-
7
- initialize: ->
8
- @clean()
9
-
10
- clean: ->
11
- @$('[data-cart-update-button]').hide(0)
12
-
13
- formUpdated: (e) ->
14
- @$el.submit()
15
-
16
- updateSuccess: (e, resp) ->
17
- @updateCartFormWith(resp)
18
-
19
- updateCartFormWith: (markup) =>
20
- $form = $(markup).find('[data-cart-form]')
21
- @$el.html($form.html())
22
- @clean()
23
-
24
-
25
- Stall.onDomReady ->
26
- if ($cartForm = $('[data-cart-form]')).length
27
- cartForm = new Stall.CartForm(el: $cartForm)
28
- $cartForm.data('stall.cart-form', cartForm)