solidus_core 1.0.0.pre → 1.0.0.pre2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of solidus_core might be problematic. Click here for more details.

Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/app/mailers/spree/carton_mailer.rb +1 -1
  3. data/app/mailers/spree/reimbursement_mailer.rb +3 -2
  4. data/app/mailers/spree/test_mailer.rb +1 -1
  5. data/app/models/concerns/spree/user_methods.rb +49 -0
  6. data/app/models/spree/ability.rb +2 -0
  7. data/app/models/spree/adjustment.rb +1 -0
  8. data/app/models/spree/adjustment_reason.rb +12 -0
  9. data/app/models/spree/app_configuration.rb +1 -1
  10. data/app/models/spree/carton.rb +1 -1
  11. data/app/models/spree/inventory_unit.rb +10 -6
  12. data/app/models/spree/legacy_user.rb +4 -12
  13. data/app/models/spree/order.rb +15 -15
  14. data/app/models/spree/order/checkout.rb +20 -15
  15. data/app/models/spree/order/payments.rb +1 -5
  16. data/app/models/spree/order_cancellations.rb +1 -1
  17. data/app/models/spree/order_capturing.rb +1 -1
  18. data/app/models/spree/order_mutex.rb +1 -1
  19. data/app/models/spree/order_shipping.rb +1 -1
  20. data/app/models/spree/payment/processing.rb +39 -13
  21. data/app/models/spree/payment_method.rb +2 -2
  22. data/app/models/spree/permission_sets/base.rb +17 -0
  23. data/app/models/spree/permission_sets/configuration_display.rb +24 -0
  24. data/app/models/spree/permission_sets/configuration_management.rb +24 -0
  25. data/app/models/spree/permission_sets/dashboard_display.rb +9 -0
  26. data/app/models/spree/permission_sets/order_display.rb +15 -0
  27. data/app/models/spree/permission_sets/order_management.rb +15 -0
  28. data/app/models/spree/permission_sets/product_display.rb +18 -0
  29. data/app/models/spree/permission_sets/product_management.rb +19 -0
  30. data/app/models/spree/permission_sets/promotion_display.rb +12 -0
  31. data/app/models/spree/permission_sets/promotion_management.rb +12 -0
  32. data/app/models/spree/permission_sets/report_display.rb +9 -0
  33. data/app/models/spree/permission_sets/stock_display.rb +10 -0
  34. data/app/models/spree/permission_sets/stock_management.rb +11 -0
  35. data/app/models/spree/permission_sets/user_display.rb +11 -0
  36. data/app/models/spree/permission_sets/user_management.rb +11 -0
  37. data/app/models/spree/promotion/rules/item_total.rb +12 -33
  38. data/app/models/spree/promotion/rules/user.rb +2 -2
  39. data/app/models/spree/promotion_rule.rb +2 -2
  40. data/app/models/spree/reimbursement.rb +0 -12
  41. data/app/models/spree/return_authorization.rb +2 -2
  42. data/app/models/spree/return_item.rb +1 -0
  43. data/app/models/spree/return_reason.rb +18 -0
  44. data/app/models/spree/role_user.rb +1 -1
  45. data/app/models/spree/shipment.rb +9 -26
  46. data/app/models/spree/store_credit.rb +31 -7
  47. data/app/models/spree/store_credit_event.rb +13 -11
  48. data/app/models/spree/store_credit_update_reason.rb +2 -0
  49. data/app/models/spree/user_class_handle.rb +21 -0
  50. data/app/models/spree/user_stock_location.rb +1 -1
  51. data/config/initializers/spree_user.rb +10 -0
  52. data/config/locales/en.yml +58 -16
  53. data/db/default/spree/return_reasons.rb +9 -0
  54. data/db/migrate/20140713140455_create_spree_return_authorization_reasons.rb +11 -9
  55. data/db/migrate/20150618212517_create_spree_store_credit_update_reasons.rb +8 -0
  56. data/db/migrate/20150619160613_create_adjustment_reason.rb +18 -0
  57. data/db/migrate/20150622144655_add_update_reason_to_store_credit_events.rb +5 -0
  58. data/db/migrate/20150623194316_add_return_authorization_reason_id_to_return_items.rb +7 -0
  59. data/db/migrate/20150623214058_seed_store_credit_update_reasons.rb +9 -0
  60. data/db/migrate/20150626200816_remove_shipping_method_id_from_spree_orders.rb +9 -0
  61. data/db/seeds.rb +9 -0
  62. data/lib/spree/core.rb +1 -4
  63. data/lib/spree/core/controller_helpers/auth.rb +15 -20
  64. data/lib/spree/core/engine.rb +1 -0
  65. data/lib/spree/core/importer/order.rb +8 -5
  66. data/lib/spree/core/role_configuration.rb +70 -0
  67. data/lib/spree/permitted_attributes.rb +1 -1
  68. data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +6 -0
  69. data/lib/spree/testing_support/factories/order_factory.rb +14 -1
  70. data/lib/spree/testing_support/factories/promotion_factory.rb +2 -4
  71. data/lib/spree/testing_support/factories/return_authorization_factory.rb +3 -3
  72. data/lib/spree/testing_support/factories/return_item_factory.rb +1 -0
  73. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +10 -0
  74. data/lib/spree/testing_support/factories/store_credit_update_reason_factory.rb +5 -0
  75. data/lib/spree/testing_support/factories/store_factory.rb +1 -1
  76. data/lib/spree/testing_support/order_walkthrough.rb +2 -7
  77. metadata +36 -10
  78. data/app/assets/images/logo/solidus.png +0 -0
  79. data/app/models/spree/item_adjustments.rb.orig +0 -93
  80. data/app/models/spree/return_authorization_reason.rb +0 -7
  81. data/app/models/spree/static_model_preferences.rb +0 -32
  82. data/config/initializers/user_class_extensions.rb +0 -42
@@ -1,93 +0,0 @@
1
- module Spree
2
- # Manage (recalculate) item (LineItem or Shipment) adjustments
3
- class ItemAdjustments
4
- attr_reader :item
5
-
6
- # @param item [Order, LineItem, Shipment] the item whose adjustments should be updated
7
- def initialize(item)
8
- @item = item
9
- end
10
-
11
- # Update the item's adjustments and totals
12
- #
13
- # If the item is an {Order}, this will update and select the best
14
- # promotion adjustment.
15
- #
16
- # If it is a {LineItem} or {Shipment}, it will update and select the best
17
- # promotion adjustment, update tax adjustments, update cancellation
18
- # adjustments, and then update the total fields (promo_total,
19
- # included_tax_total, additional_tax_total, and adjustment_total) on the
20
- # item.
21
- #
22
- # This is a noop if the item is not persisted.
23
- def update
24
- return @item unless item.persisted?
25
-
26
- # Promotion adjustments must be applied first, then tax adjustments.
27
- # This fits the criteria for VAT tax as outlined here:
28
- # http://www.hmrc.gov.uk/vat/managing/charging/discounts-etc.htm#1
29
- #
30
- # It also fits the criteria for sales tax as outlined here:
31
- # http://www.boe.ca.gov/formspubs/pub113/
32
- #
33
- # Tax adjustments come in not one but *two* exciting flavours:
34
- # Included & additional
35
-
36
- # Included tax adjustments are those which are included in the price.
37
- # These ones should not affect the eventual total price.
38
- #
39
- # Additional tax adjustments are the opposite, affecting the final total.
40
-
41
- promotion_adjustments = adjustments.select(&:promotion?)
42
- promotion_adjustments.each(&:update!)
43
-
44
- promo_total = PromotionChooser.new(promotion_adjustments).update
45
-
46
- # Calculating the totals for the order here would be incorrect. Order's
47
- # totals are the sum of the adjustments on all child models, as well as
48
- # its own.
49
- #
50
- # We want to select the best promotion for the order, but the remainder
51
- # of the calculations here are done in the OrderUpdater instead.
52
- return if Spree::Order === item
53
-
54
- @item.promo_total = promo_total
55
-
56
- tax = adjustments.select(&:tax?)
57
-
58
- @item.included_tax_total = tax.select(&:included?).map(&:update!).compact.sum
59
- @item.additional_tax_total = tax.reject(&:included?).map(&:update!).compact.sum
60
-
61
- item_cancellation_total = adjustments.select(&:cancellation?).map(&:update!).compact.sum
62
-
63
- @item.adjustment_total = @item.promo_total + @item.additional_tax_total + item_cancellation_total
64
-
65
- @item.update_columns(
66
- :promo_total => @item.promo_total,
67
- :included_tax_total => @item.included_tax_total,
68
- :additional_tax_total => @item.additional_tax_total,
69
- :adjustment_total => @item.adjustment_total,
70
- :updated_at => Time.now,
71
- ) if @item.changed?
72
-
73
- @item
74
- end
75
-
76
- <<<<<<< HEAD
77
- private
78
- def adjustments
79
- # This is done intentionally to avoid loading the association. If the
80
- # association is loaded, the records may become stale due to code
81
- # elsewhere in spree. When that is remedied, this should be changed to
82
- # just item.adjustments
83
- @adjustments ||= item.adjustments.all.to_a
84
- ||||||| parent of 12bada8... Replace order strings with symbols/arel_table.
85
- def best_promotion_adjustment
86
- @best_promotion_adjustment ||= adjustments.promotion.eligible.reorder("amount ASC, created_at DESC, id DESC").first
87
- =======
88
- def best_promotion_adjustment
89
- @best_promotion_adjustment ||= adjustments.promotion.eligible.reorder(:amount, created_at: :desc, id: :desc).first
90
- >>>>>>> 12bada8... Replace order strings with symbols/arel_table.
91
- end
92
- end
93
- end
@@ -1,7 +0,0 @@
1
- module Spree
2
- class ReturnAuthorizationReason < Spree::Base
3
- include Spree::NamedType
4
-
5
- has_many :return_authorizations
6
- end
7
- end
@@ -1,32 +0,0 @@
1
- module Spree
2
- class StaticModelPreferences
3
- def initialize(model_class, name, preferences={})
4
- @name = name
5
- @model_class = model_class
6
- @preferences = preferences.dup.freeze
7
-
8
- validate_preferences
9
- end
10
-
11
- delegate :keys, :fetch, to: :@preferences
12
-
13
- def []=(name, value)
14
- puts "Ignoring assignment of preference #{name}"
15
- end
16
-
17
- private
18
-
19
- def validate_preferences
20
- model_preferences = @model_class.defined_preferences
21
- defined_preferences = @preferences.keys
22
-
23
- (model_preferences - defined_preferences).each do |pref|
24
- puts "WARNING: Missing definition for #{pref}"
25
- end
26
-
27
- (defined_preferences - model_preferences).each do |pref|
28
- puts "WARNING: Unknown preference #{pref}"
29
- end
30
- end
31
- end
32
- end
@@ -1,42 +0,0 @@
1
- Spree::Core::Engine.config.to_prepare do
2
- if Spree.user_class
3
- Spree.user_class.class_eval do
4
-
5
- include Spree::UserApiAuthentication
6
- include Spree::UserReporting
7
-
8
- has_many :role_users, foreign_key: "user_id", class_name: "Spree::RoleUser"
9
- has_many :spree_roles, through: :role_users, source: :role
10
-
11
- has_many :user_stock_locations, foreign_key: "user_id", class_name: "Spree::UserStockLocation"
12
- has_many :stock_locations, through: :user_stock_locations
13
-
14
- has_many :spree_orders, foreign_key: "user_id", class_name: "Spree::Order"
15
-
16
- has_many :store_credits, -> { includes(:credit_type) }, foreign_key: "user_id", class_name: "Spree::StoreCredit"
17
- has_many :store_credit_events, through: :store_credits
18
-
19
- belongs_to :ship_address, class_name: 'Spree::Address'
20
- belongs_to :bill_address, class_name: 'Spree::Address'
21
-
22
- # has_spree_role? simply needs to return true or false whether a user has a role or not.
23
- def has_spree_role?(role_in_question)
24
- spree_roles.any? { |role| role.name == role_in_question.to_s }
25
- end
26
-
27
- # @return [Spree::Order] the most-recently-created incomplete order
28
- # since the customer's last complete order.
29
- def last_incomplete_spree_order(store: nil, only_frontend_viewable: true)
30
- self_orders = self.orders
31
- self_orders = self_orders.where(frontend_viewable: true) if only_frontend_viewable
32
- self_orders = self_orders.where(store: store) if store
33
- last_order = self_orders.order(:created_at).last
34
- last_order unless last_order.try!(:completed?)
35
- end
36
-
37
- def total_available_store_credit
38
- store_credits.reload.to_a.sum{ |credit| credit.amount_remaining }
39
- end
40
- end
41
- end
42
- end