spree_core 2.2.14 → 2.3.0

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 (172) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/{spree.js.coffee → spree.js.coffee.erb} +11 -2
  3. data/app/controllers/spree/base_controller.rb +1 -0
  4. data/app/helpers/spree/base_helper.rb +5 -6
  5. data/app/helpers/spree/orders_helper.rb +4 -0
  6. data/app/helpers/spree/products_helper.rb +8 -7
  7. data/app/mailers/spree/base_mailer.rb +2 -2
  8. data/app/mailers/spree/order_mailer.rb +2 -2
  9. data/app/mailers/spree/shipment_mailer.rb +1 -1
  10. data/app/mailers/spree/test_mailer.rb +1 -1
  11. data/app/models/spree/ability.rb +15 -16
  12. data/app/models/spree/address.rb +3 -6
  13. data/app/models/spree/adjustment.rb +2 -2
  14. data/app/models/spree/alert.rb +1 -1
  15. data/app/models/spree/app_configuration.rb +17 -20
  16. data/app/models/spree/asset.rb +2 -2
  17. data/app/models/spree/base.rb +9 -0
  18. data/app/models/spree/calculator.rb +1 -1
  19. data/app/models/spree/calculator/flat_rate.rb +1 -1
  20. data/app/models/spree/calculator/flexi_rate.rb +1 -1
  21. data/app/models/spree/calculator/price_sack.rb +1 -3
  22. data/app/models/spree/calculator/shipping/flat_rate.rb +1 -1
  23. data/app/models/spree/calculator/shipping/flexi_rate.rb +1 -1
  24. data/app/models/spree/calculator/shipping/per_item.rb +1 -1
  25. data/app/models/spree/calculator/shipping/price_sack.rb +1 -3
  26. data/app/models/spree/classification.rb +1 -1
  27. data/app/models/spree/configuration.rb +1 -1
  28. data/app/models/spree/country.rb +1 -1
  29. data/app/models/spree/credit_card.rb +8 -12
  30. data/app/models/spree/gateway.rb +0 -3
  31. data/app/models/spree/gateway/bogus.rb +2 -3
  32. data/app/models/spree/image.rb +3 -1
  33. data/app/models/spree/inventory_unit.rb +5 -6
  34. data/app/models/spree/item_adjustments.rb +3 -4
  35. data/app/models/spree/legacy_user.rb +1 -1
  36. data/app/models/spree/line_item.rb +6 -13
  37. data/app/models/spree/log_entry.rb +1 -1
  38. data/app/models/spree/option_type.rb +1 -1
  39. data/app/models/spree/option_value.rb +1 -3
  40. data/app/models/spree/order.rb +52 -70
  41. data/app/models/spree/order/checkout.rb +17 -10
  42. data/app/models/spree/order/currency_updater.rb +1 -1
  43. data/app/models/spree/order_contents.rb +7 -4
  44. data/app/models/spree/order_populator.rb +1 -1
  45. data/app/models/spree/order_updater.rb +8 -21
  46. data/app/models/spree/payment.rb +26 -12
  47. data/app/models/spree/payment/processing.rb +5 -16
  48. data/app/models/spree/payment_capture_event.rb +1 -1
  49. data/app/models/spree/payment_method.rb +2 -2
  50. data/app/models/spree/payment_method/check.rb +0 -2
  51. data/app/models/spree/preference.rb +1 -31
  52. data/app/models/spree/preferences/configuration.rb +2 -6
  53. data/app/models/spree/preferences/preferable.rb +46 -74
  54. data/app/models/spree/preferences/preferable_class_methods.rb +11 -46
  55. data/app/models/spree/preferences/scoped_store.rb +33 -0
  56. data/app/models/spree/preferences/store.rb +8 -7
  57. data/app/models/spree/price.rb +1 -3
  58. data/app/models/spree/product.rb +59 -87
  59. data/app/models/spree/product/scopes.rb +22 -13
  60. data/app/models/spree/product_option_type.rb +1 -1
  61. data/app/models/spree/product_property.rb +1 -3
  62. data/app/models/spree/product_scope/scopes.rb +1 -1
  63. data/app/models/spree/promotion.rb +4 -5
  64. data/app/models/spree/promotion/actions/create_adjustment.rb +11 -2
  65. data/app/models/spree/promotion/actions/create_item_adjustments.rb +19 -2
  66. data/app/models/spree/promotion/actions/create_line_items.rb +2 -12
  67. data/app/models/spree/promotion/rules/user.rb +5 -1
  68. data/app/models/spree/promotion_action.rb +1 -1
  69. data/app/models/spree/promotion_action_line_item.rb +1 -1
  70. data/app/models/spree/promotion_handler/cart.rb +2 -14
  71. data/app/models/spree/promotion_handler/coupon.rb +3 -13
  72. data/app/models/spree/promotion_rule.rb +1 -1
  73. data/app/models/spree/property.rb +1 -3
  74. data/app/models/spree/prototype.rb +1 -1
  75. data/app/models/spree/return_authorization.rb +4 -10
  76. data/app/models/spree/role.rb +1 -1
  77. data/app/models/spree/shipment.rb +1 -9
  78. data/app/models/spree/shipping_category.rb +3 -3
  79. data/app/models/spree/shipping_method.rb +1 -1
  80. data/app/models/spree/shipping_method_category.rb +2 -2
  81. data/app/models/spree/shipping_rate.rb +3 -3
  82. data/app/models/spree/state.rb +1 -1
  83. data/app/models/spree/state_change.rb +1 -1
  84. data/app/models/spree/stock/availability_validator.rb +7 -3
  85. data/app/models/spree/stock/package.rb +0 -23
  86. data/app/models/spree/stock/splitter/backordered.rb +1 -1
  87. data/app/models/spree/stock/splitter/shipping_category.rb +1 -1
  88. data/app/models/spree/stock/splitter/weight.rb +1 -1
  89. data/app/models/spree/stock_item.rb +7 -10
  90. data/app/models/spree/stock_location.rb +2 -6
  91. data/app/models/spree/stock_movement.rb +1 -3
  92. data/app/models/spree/stock_transfer.rb +1 -3
  93. data/app/models/spree/store.rb +33 -0
  94. data/app/models/spree/tax_category.rb +2 -2
  95. data/app/models/spree/tax_rate.rb +21 -52
  96. data/app/models/spree/taxon.rb +9 -8
  97. data/app/models/spree/taxonomy.rb +1 -1
  98. data/app/models/spree/tracker.rb +1 -1
  99. data/app/models/spree/variant.rb +13 -15
  100. data/app/models/spree/variant/scopes.rb +1 -1
  101. data/app/models/spree/zone.rb +22 -22
  102. data/app/models/spree/zone_member.rb +2 -2
  103. data/config/initializers/user_class_extensions.rb +0 -8
  104. data/config/locales/en.yml +7 -42
  105. data/db/default/spree/countries.rb +2 -3
  106. data/db/default/spree/stores.rb +9 -0
  107. data/db/migrate/20130611054351_rename_shipping_methods_zones_to_spree_shipping_methods_zones.rb +0 -5
  108. data/db/migrate/20130807024301_upgrade_adjustments.rb +4 -5
  109. data/db/migrate/20130807024302_rename_adjustment_fields.rb +5 -2
  110. data/db/migrate/20131118183431_add_line_item_id_to_spree_inventory_units.rb +1 -1
  111. data/db/migrate/20140106065820_remove_value_type_from_spree_preferences.rb +8 -0
  112. data/db/migrate/20140227112348_add_preference_store_to_everything.rb +8 -0
  113. data/db/migrate/20140309023735_migrate_old_preferences.rb +23 -0
  114. data/db/migrate/20140309024355_create_spree_stores.rb +25 -0
  115. data/db/migrate/20140309033438_create_store_from_preferences.rb +30 -0
  116. data/db/migrate/20140315053743_add_timestamps_to_spree_assets.rb +6 -0
  117. data/db/migrate/20140331100557_add_additional_store_fields.rb +8 -0
  118. data/db/migrate/20140410141842_add_many_missing_indexes.rb +18 -0
  119. data/db/migrate/20140410150358_correct_some_polymorphic_index_and_add_more_missing.rb +66 -0
  120. data/db/migrate/20140508151342_change_spree_price_amount_precision.rb +1 -1
  121. data/db/migrate/20140518174634_add_token_to_spree_orders.rb +5 -0
  122. data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +29 -0
  123. data/db/migrate/20140601011216_set_shipment_total_for_users_upgrading.rb +5 -3
  124. data/db/migrate/20140604135309_drop_credit_card_first_name_and_last_name.rb +6 -0
  125. data/lib/generators/spree/dummy/dummy_generator.rb +1 -0
  126. data/lib/generators/spree/dummy/templates/initializers/devise.rb +3 -0
  127. data/lib/generators/spree/dummy/templates/rails/routes.rb +0 -1
  128. data/lib/generators/spree/install/install_generator.rb +8 -17
  129. data/lib/generators/spree/install/templates/config/initializers/spree.rb +2 -2
  130. data/lib/spree/core.rb +13 -9
  131. data/lib/spree/core/calculated_adjustments.rb +1 -1
  132. data/lib/spree/core/controller_helpers/auth.rb +27 -18
  133. data/lib/spree/core/controller_helpers/common.rb +2 -2
  134. data/lib/spree/core/controller_helpers/order.rb +15 -24
  135. data/lib/spree/core/controller_helpers/store.rb +19 -0
  136. data/lib/spree/core/delegate_belongs_to.rb +2 -2
  137. data/lib/spree/core/engine.rb +0 -10
  138. data/lib/spree/core/importer.rb +1 -0
  139. data/lib/spree/core/importer/order.rb +16 -44
  140. data/lib/spree/core/importer/product.rb +62 -0
  141. data/lib/spree/core/product_filters.rb +0 -4
  142. data/lib/spree/core/routes.rb +4 -6
  143. data/lib/spree/core/validators/email.rb +23 -1
  144. data/lib/spree/core/version.rb +1 -1
  145. data/lib/spree/money.rb +1 -169
  146. data/lib/spree/permitted_attributes.rb +6 -4
  147. data/lib/spree/testing_support/authorization_helpers.rb +23 -21
  148. data/lib/spree/testing_support/capybara_ext.rb +11 -21
  149. data/lib/spree/testing_support/common_rake.rb +3 -1
  150. data/lib/spree/testing_support/controller_requests.rb +0 -2
  151. data/lib/spree/testing_support/factories/credit_card_factory.rb +1 -1
  152. data/lib/spree/testing_support/factories/line_item_factory.rb +4 -1
  153. data/lib/spree/testing_support/factories/order_factory.rb +5 -4
  154. data/lib/spree/testing_support/factories/product_factory.rb +0 -4
  155. data/lib/spree/testing_support/factories/promotion_factory.rb +5 -7
  156. data/lib/spree/testing_support/factories/shipment_factory.rb +0 -1
  157. data/lib/spree/testing_support/factories/stock_factory.rb +2 -2
  158. data/lib/spree/testing_support/factories/store_factory.rb +8 -0
  159. data/lib/spree/testing_support/preferences.rb +3 -3
  160. data/lib/tasks/core.rake +2 -2
  161. metadata +48 -39
  162. data/app/models/spree/stock/order_counter.rb +0 -55
  163. data/app/models/spree/tokenized_permission.rb +0 -6
  164. data/app/views/spree/shared/_routes.html.erb +0 -13
  165. data/db/migrate/20140804185157_add_default_to_shipment_cost.rb +0 -10
  166. data/db/migrate/20141021194502_add_state_lock_version_to_order.rb +0 -5
  167. data/lib/spree/core/adjustment_source.rb +0 -26
  168. data/lib/spree/core/mail_interceptor.rb +0 -22
  169. data/lib/spree/core/mail_method.rb +0 -27
  170. data/lib/spree/core/mail_settings.rb +0 -55
  171. data/lib/spree/core/ransackable_attributes.rb +0 -15
  172. data/lib/spree/core/token_resource.rb +0 -27
@@ -1,5 +1,5 @@
1
1
  module Spree
2
- class Variant < ActiveRecord::Base
2
+ class Variant < Spree::Base
3
3
  #FIXME WARNING tested only under sqlite and postgresql
4
4
  scope :descend_by_popularity, -> { order("COALESCE((SELECT COUNT(*) FROM #{LineItem.quoted_table_name} GROUP BY #{LineItem.quoted_table_name}.variant_id HAVING #{LineItem.quoted_table_name}.variant_id = #{Variant.quoted_table_name}.id), 0) DESC") }
5
5
 
@@ -1,8 +1,7 @@
1
1
  module Spree
2
- class Zone < ActiveRecord::Base
3
- has_many :zone_members, dependent: :destroy, class_name: "Spree::ZoneMember", inverse_of: :zone
4
- has_many :tax_rates, dependent: :destroy, inverse_of: :zone
5
-
2
+ class Zone < Spree::Base
3
+ has_many :zone_members, dependent: :destroy, class_name: "Spree::ZoneMember"
4
+ has_many :tax_rates, dependent: :destroy
6
5
  has_and_belongs_to_many :shipping_methods, :join_table => 'spree_shipping_methods_zones'
7
6
 
8
7
  validates :name, presence: true, uniqueness: true
@@ -12,18 +11,17 @@ module Spree
12
11
  alias :members :zone_members
13
12
  accepts_nested_attributes_for :zone_members, allow_destroy: true, reject_if: proc { |a| a['zoneable_id'].blank? }
14
13
 
15
- self.whitelisted_ransackable_attributes = ['description']
16
-
17
14
  def self.default_tax
18
15
  where(default_tax: true).first
19
16
  end
20
-
17
+
21
18
  # Returns the matching zone with the highest priority zone type (State, Country, Zone.)
22
19
  # Returns nil in the case of no matches.
23
20
  def self.match(address)
24
- return unless matches = self.includes(:zone_members).
25
- order('zone_members_count', 'created_at').
26
- select { |zone| zone.include? address }
21
+ return unless address and matches = self.includes(:zone_members).
22
+ order('spree_zones.zone_members_count', 'spree_zones.created_at').
23
+ where("(spree_zone_members.zoneable_type = 'Spree::Country' AND spree_zone_members.zoneable_id = ?) OR (spree_zone_members.zoneable_type = 'Spree::State' AND spree_zone_members.zoneable_id = ?)", address.country_id, address.state_id).
24
+ references(:zones)
27
25
 
28
26
  ['state', 'country'].each do |zone_kind|
29
27
  if match = matches.detect { |zone| zone_kind == zone.kind }
@@ -94,11 +92,23 @@ module Spree
94
92
  end
95
93
 
96
94
  def country_ids=(ids)
97
- set_zone_members(ids, 'Spree::Country')
95
+ zone_members.destroy_all
96
+ ids.reject{ |id| id.blank? }.map do |id|
97
+ member = ZoneMember.new
98
+ member.zoneable_type = 'Spree::Country'
99
+ member.zoneable_id = id
100
+ members << member
101
+ end
98
102
  end
99
103
 
100
104
  def state_ids=(ids)
101
- set_zone_members(ids, 'Spree::State')
105
+ zone_members.destroy_all
106
+ ids.reject{ |id| id.blank? }.map do |id|
107
+ member = ZoneMember.new
108
+ member.zoneable_type = 'Spree::State'
109
+ member.zoneable_id = id
110
+ members << member
111
+ end
102
112
  end
103
113
 
104
114
  # Indicates whether the specified zone falls entirely within the zone performing
@@ -126,15 +136,5 @@ module Spree
126
136
  def remove_previous_default
127
137
  Spree::Zone.where('id != ?', self.id).update_all(default_tax: false) if default_tax
128
138
  end
129
-
130
- def set_zone_members(ids, type)
131
- zone_members.destroy_all
132
- ids.reject{ |id| id.blank? }.map do |id|
133
- member = ZoneMember.new
134
- member.zoneable_type = type
135
- member.zoneable_id = id
136
- members << member
137
- end
138
- end
139
139
  end
140
140
  end
@@ -1,6 +1,6 @@
1
1
  module Spree
2
- class ZoneMember < ActiveRecord::Base
3
- belongs_to :zone, class_name: 'Spree::Zone', counter_cache: true, inverse_of: :zone_members
2
+ class ZoneMember < Spree::Base
3
+ belongs_to :zone, class_name: 'Spree::Zone', counter_cache: true
4
4
  belongs_to :zoneable, polymorphic: true
5
5
 
6
6
  def name
@@ -14,14 +14,6 @@ Spree::Core::Engine.config.to_prepare do
14
14
  belongs_to :ship_address, :class_name => 'Spree::Address'
15
15
  belongs_to :bill_address, :class_name => 'Spree::Address'
16
16
 
17
- def self.ransackable_associations(auth_object=nil)
18
- %w[bill_address ship_address]
19
- end
20
-
21
- def self.ransackable_attributes(auth_object=nil)
22
- %w[id email]
23
- end
24
-
25
17
  # has_spree_role? simply needs to return true or false whether a user has a role or not.
26
18
  def has_spree_role?(role_in_question)
27
19
  spree_roles.where(:name => role_in_question.to_s).any?
@@ -99,6 +99,12 @@ en:
99
99
  spree/state:
100
100
  abbr: Abbreviation
101
101
  name: Name
102
+ spree/store:
103
+ url: Site URL
104
+ meta_description: Meta Description
105
+ meta_keywords: Meta Keywords
106
+ seo_title: Seo Title
107
+ name: Site Name
102
108
  spree/tax_category:
103
109
  description: Description
104
110
  name: Name
@@ -232,7 +238,6 @@ en:
232
238
  attributes:
233
239
  base:
234
240
  card_expired: "Card has expired"
235
- expiry_invalid: "Card expiration is invalid"
236
241
  spree/line_item:
237
242
  attributes:
238
243
  currency:
@@ -328,12 +333,6 @@ en:
328
333
  adjustment_total: Adjustment Total
329
334
  adjustments: Adjustments
330
335
  admin:
331
- mail_methods:
332
- send_testmail: Send Test Mail
333
- testmail:
334
- delivery_error: Test Mail delivery error
335
- delivery_success: Test Mail sent successfully
336
- error: ! 'Test Mail error: %{e}'
337
336
  tab:
338
337
  configuration: Configuration
339
338
  option_types: Option Types
@@ -405,7 +404,6 @@ en:
405
404
  back_to_prototypes_list: Back To Prototypes List
406
405
  back_to_reports_list: Back To Reports List
407
406
  back_to_shipping_categories: Back To Shipping Categories
408
- back_to_shipping_categories_list: Back To Shipping Categories List
409
407
  back_to_shipping_methods_list: Back To Shipping Methods List
410
408
  back_to_states_list: Back To States List
411
409
  back_to_stock_locations_list: Back to Stock Locations List
@@ -418,7 +416,6 @@ en:
418
416
  back_to_users_list: Back To Users List
419
417
  back_to_zones_list: Back To Zones List
420
418
  backorderable: Backorderable
421
- backorderable_default: Backorderable default
422
419
  backorders_allowed: backorders allowed
423
420
  balance_due: Balance Due
424
421
  bill_address: Bill Address
@@ -452,7 +449,6 @@ en:
452
449
  choose_dashboard_locale: Choose Dashboard Locale
453
450
  choose_location: Choose location
454
451
  city: City
455
- click_and_drag_on_the_products_to_sort_them: 'Click &amp; drag on the products to sort them.'
456
452
  clone: Clone
457
453
  close: Close
458
454
  close_all_adjustments: Close All Adjustments
@@ -528,9 +524,6 @@ en:
528
524
  js_format: yy/mm/dd
529
525
  date_range: Date Range
530
526
  default: Default
531
- default_meta_description: Default Meta Description
532
- default_meta_keywords: Default Meta Keywords
533
- default_seo_title: Default Seo Title
534
527
  default_tax: Default Tax
535
528
  default_tax_zone: Default Tax Zone
536
529
  delete: Delete
@@ -592,7 +585,6 @@ en:
592
585
  signup: User signup
593
586
  exceptions:
594
587
  count_on_hand_setter: Cannot set count_on_hand manually, as it is set automatically by the recalculate_count_on_hand callback. Please use `update_column(:count_on_hand, value)` instead.
595
- excl: excl.
596
588
  expiration: Expiration
597
589
  extension: Extension
598
590
  existing_shipments: Existing shipments
@@ -642,12 +634,10 @@ en:
642
634
  image: Image
643
635
  images: Images
644
636
  inactive: Inactive
645
- incl: incl.
646
637
  included_in_price: Included in Price
647
638
  included_price_validation: cannot be selected unless you have set a Default Tax Zone
648
639
  instructions_to_reset_password: Please enter your email on the form below
649
640
  insufficient_stock: Insufficient stock available, only %{on_hand} remaining
650
- insufficient_stock_lines_present: Some line items in this order have insufficient quantity.
651
641
  intercept_email_address: Intercept Email Address
652
642
  intercept_email_instructions: Override email recipient and replace with this address.
653
643
  internal_name: Internal Name
@@ -698,17 +688,6 @@ en:
698
688
  login_name: Login
699
689
  logout: Logout
700
690
  look_for_similar_items: Look for similar items
701
- mail_method_settings: Mail Method Settings
702
- mail_methods: Mail Methods
703
- mail_settings:
704
- auth:
705
- none: "None"
706
- plain: "Plain"
707
- login: "Login"
708
- cram_md5: "cram_md5"
709
- security:
710
- ssl: "SSL"
711
- tls: "TLS"
712
691
  make_refund: Make refund
713
692
  master_price: Master Price
714
693
  match_choices:
@@ -762,6 +741,7 @@ en:
762
741
  no_actions_added: No actions added
763
742
  no_orders_found: No orders found
764
743
  no_payment_methods_found: No payment methods found
744
+ no_payment_found: No payment found
765
745
  no_pending_payments: No pending payments
766
746
  no_products_found: No products found
767
747
  no_promotions_found: No promotions found
@@ -801,7 +781,6 @@ en:
801
781
  or_over_price: ! '%{price} or over'
802
782
  order: Order
803
783
  order_adjustments: Order adjustments
804
- order_already_updated: The order has already been updated.
805
784
  order_approved: Order approved
806
785
  order_canceled: Order canceled
807
786
  order_details: Order Details
@@ -952,7 +931,6 @@ en:
952
931
  name: User Logged In
953
932
  promotions: Promotions
954
933
  promotion_uses: Promotion uses
955
- propagate_all_variants: Propagate all variants
956
934
  properties: Properties
957
935
  property: Property
958
936
  prototype: Prototype
@@ -1062,19 +1040,8 @@ en:
1062
1040
  show_deleted: Show Deleted
1063
1041
  show_only_complete_orders: Only show complete orders
1064
1042
  show_rate_in_label: Show rate in label
1065
- site_name: Site Name
1066
- site_url: Site URL
1067
1043
  sku: SKU
1068
1044
  slug: Slug
1069
- smtp: SMTP
1070
- smtp_authentication_type: SMTP Authentication Type
1071
- smtp_domain: SMTP Domain
1072
- smtp_mail_host: SMTP Mail Host
1073
- smtp_password: SMTP Password
1074
- smtp_port: SMTP Port
1075
- smtp_send_all_emails_as_from_following_address: Send all mails as from the following address.
1076
- smtp_send_copy_to_this_addresses: Sends a copy of all outgoing mails to this address. For multiple addresses, separate with commas.
1077
- smtp_username: SMTP Username
1078
1045
  source: Source
1079
1046
  special_instructions: Special Instructions
1080
1047
  split: Split
@@ -1162,9 +1129,7 @@ en:
1162
1129
  usage_limit: Usage Limit
1163
1130
  use_app_default: Use App Default
1164
1131
  use_billing_address: Use Billing Address
1165
- use_existing_cc: Use an existing card on file
1166
1132
  use_new_cc: Use a new card
1167
- use_new_cc_or_payment_method: Use a new card / payment method
1168
1133
  use_s3: Use Amazon S3 For Images
1169
1134
  user: User
1170
1135
  user_rule:
@@ -92,7 +92,7 @@ Spree::Country.create!([
92
92
  { name: "Guyana", iso3: "GUY", iso: "GY", iso_name: "GUYANA", numcode: "328" },
93
93
  { name: "Reunion", iso3: "REU", iso: "RE", iso_name: "REUNION", numcode: "638" },
94
94
  { name: "Haiti", iso3: "HTI", iso: "HT", iso_name: "HAITI", numcode: "332" },
95
- { name: "Romania", iso3: "ROM", iso: "RO", iso_name: "ROMANIA", numcode: "642" },
95
+ { name: "Romania", iso3: "ROU", iso: "RO", iso_name: "ROMANIA", numcode: "642" },
96
96
  { name: "Swaziland", iso3: "SWZ", iso: "SZ", iso_name: "SWAZILAND", numcode: "748" },
97
97
  { name: "Holy See (Vatican City State)", iso3: "VAT", iso: "VA", iso_name: "HOLY SEE (VATICAN CITY STATE)", numcode: "336" },
98
98
  { name: "Russian Federation", iso3: "RUS", iso: "RU", iso_name: "RUSSIAN FEDERATION", numcode: "643", states_required: true },
@@ -226,7 +226,6 @@ Spree::Country.create!([
226
226
  { name: "New Zealand", iso3: "NZL", iso: "NZ", iso_name: "NEW ZEALAND", numcode: "554" },
227
227
  { name: "Saint Kitts and Nevis", iso3: "KNA", iso: "KN", iso_name: "SAINT KITTS AND NEVIS", numcode: "659", states_required: true },
228
228
  { name: "Serbia", iso3: "SRB", iso: "RS", "iso_name" => "SERBIA", numcode: "999" },
229
- { name: "Montenegro", iso3: "MNE", iso: "ME", iso_name: "MONTENEGRO", numcode: "499" },
230
- { name: "Jersey", iso3: "JEY", iso: "JE", iso_name: "JERSEY", numcode: "44" }
229
+ { name: "Montenegro", iso3: "MNE", iso: "ME", iso_name: "MONTENEGRO", numcode: "499" }
231
230
  ])
232
231
  Spree::Config[:default_country_id] = Spree::Country.find_by(name: "United States").id
@@ -0,0 +1,9 @@
1
+ # Possibly already created by a migration.
2
+ unless Spree::Store.where(code: 'spree').exists?
3
+ Spree::Store.new do |s|
4
+ s.code = 'spree'
5
+ s.name = 'Spree Demo Site'
6
+ s.url = 'demo.spreecommerce.com'
7
+ s.mail_from_address = 'spree@example.com'
8
+ end.save!
9
+ end
@@ -1,10 +1,5 @@
1
1
  class RenameShippingMethodsZonesToSpreeShippingMethodsZones < ActiveRecord::Migration
2
2
  def change
3
3
  rename_table :shipping_methods_zones, :spree_shipping_methods_zones
4
- # If Spree::ShippingMethod zones association was patched in
5
- # CreateShippingMethodZone migrations, it needs to be patched back
6
- Spree::ShippingMethod.has_and_belongs_to_many :zones, :join_table => 'spree_shipping_methods_zones',
7
- :class_name => 'Spree::Zone',
8
- :foreign_key => 'shipping_method_id'
9
4
  end
10
5
  end
@@ -9,14 +9,13 @@ class UpgradeAdjustments < ActiveRecord::Migration
9
9
  # Account for possible invalid data
10
10
  next if adjustment.source.nil?
11
11
  adjustment.source.update_column(:cost, adjustment.amount)
12
- adjustment.destroy!
12
+ adjustment.destroy
13
13
  end
14
14
 
15
15
  # Tax adjustments have their sources altered
16
16
  Spree::Adjustment.where(:originator_type => "Spree::TaxRate").find_each do |adjustment|
17
- adjustment.source_id = adjustment.originator_id
18
- adjustment.source_type = "Spree::TaxRate"
19
- adjustment.save!
17
+ adjustment.source = adjustment.originator
18
+ adjustment.save
20
19
  end
21
20
 
22
21
  # Promotion adjustments have their source altered also
@@ -34,7 +33,7 @@ class UpgradeAdjustments < ActiveRecord::Migration
34
33
  # Fail silently. This is primarily in instances where the calculator no longer exists
35
34
  end
36
35
 
37
- adjustment.save!
36
+ adjustment.save
38
37
  end
39
38
  end
40
39
  end
@@ -7,8 +7,11 @@ class RenameAdjustmentFields < ActiveRecord::Migration
7
7
 
8
8
  # This enables the Spree::Order#all_adjustments association to work correctly
9
9
  Spree::Adjustment.reset_column_information
10
- Spree::Adjustment.where(adjustable_type: "Spree::Order").find_each do |adjustment|
11
- adjustment.update_column(:order_id, adjustment.adjustable_id)
10
+ Spree::Adjustment.find_each do |adjustment|
11
+ if adjustment.adjustable.is_a?(Spree::Order)
12
+ adjustment.order = adjustment.adjustable
13
+ adjustment.save
14
+ end
12
15
  end
13
16
  end
14
17
  end
@@ -8,7 +8,7 @@ class AddLineItemIdToSpreeInventoryUnits < ActiveRecord::Migration
8
8
  shipments = Spree::Shipment.includes(:inventory_units, :order)
9
9
 
10
10
  shipments.find_each do |shipment|
11
- shipment.inventory_units.group_by(&:variant_id).each do |variant_id, units|
11
+ shipment.inventory_units.group_by(&:variant_id).each do |variant, units|
12
12
 
13
13
  line_item = shipment.order.line_items.find_by(variant_id: variant_id)
14
14
  next unless line_item
@@ -0,0 +1,8 @@
1
+ class RemoveValueTypeFromSpreePreferences < ActiveRecord::Migration
2
+ def up
3
+ remove_column :spree_preferences, :value_type
4
+ end
5
+ def down
6
+ raise ActiveRecord::IrreversableMigration
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ class AddPreferenceStoreToEverything < ActiveRecord::Migration
2
+ def change
3
+ add_column :spree_calculators, :preferences, :text
4
+ add_column :spree_gateways, :preferences, :text
5
+ add_column :spree_payment_methods, :preferences, :text
6
+ add_column :spree_promotion_rules, :preferences, :text
7
+ end
8
+ end
@@ -0,0 +1,23 @@
1
+ class MigrateOldPreferences < ActiveRecord::Migration
2
+ def up
3
+ migrate_preferences(Spree::Calculator)
4
+ migrate_preferences(Spree::PaymentMethod)
5
+ migrate_preferences(Spree::PromotionRule)
6
+ end
7
+
8
+ def down
9
+ end
10
+
11
+ private
12
+ def migrate_preferences klass
13
+ klass.reset_column_information
14
+ klass.find_each do |record|
15
+ store = Spree::Preferences::ScopedStore.new(record.class.name.underscore, record.id)
16
+ record.defined_preferences.each do |key|
17
+ value = store.fetch(key){}
18
+ record.preferences[key] = value unless value.nil?
19
+ end
20
+ record.save!
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,25 @@
1
+ class CreateSpreeStores < ActiveRecord::Migration
2
+ def change
3
+ if table_exists?(:spree_stores)
4
+ rename_column :spree_stores, :domains, :url
5
+ rename_column :spree_stores, :email, :mail_from_address
6
+ add_column :spree_stores, :meta_description, :text
7
+ add_column :spree_stores, :meta_keywords, :text
8
+ add_column :spree_stores, :seo_title, :string
9
+ else
10
+ create_table :spree_stores do |t|
11
+ t.string :name
12
+ t.string :url
13
+ t.text :meta_description
14
+ t.text :meta_keywords
15
+ t.string :seo_title
16
+ t.string :mail_from_address
17
+ t.string :default_currency
18
+ t.string :code
19
+ t.boolean :default, default: false, null: false
20
+
21
+ t.timestamps
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,30 @@
1
+ class CreateStoreFromPreferences < ActiveRecord::Migration
2
+ def change
3
+ preference_store = Spree::Preferences::Store.instance
4
+ if store = Spree::Store.where(default: true).first
5
+ store.meta_description = preference_store.get('spree/app_configuration/default_meta_description') {}
6
+ store.meta_keywords = preference_store.get('spree/app_configuration/default_meta_keywords') {}
7
+ store.seo_title = preference_store.get('spree/app_configuration/default_seo_title') {}
8
+ store.save!
9
+ else
10
+ # we set defaults for the things we now require
11
+ Spree::Store.new do |s|
12
+ s.name = preference_store.get 'spree/app_configuration/site_name' do
13
+ 'Spree Demo Site'
14
+ end
15
+ s.url = preference_store.get 'spree/app_configuration/site_url' do
16
+ 'demo.spreecommerce.com'
17
+ end
18
+ s.mail_from_address = preference_store.get 'spree/app_configuration/mails_from' do
19
+ 'spree@example.com'
20
+ end
21
+
22
+ s.meta_description = preference_store.get('spree/app_configuration/default_meta_description') {}
23
+ s.meta_keywords = preference_store.get('spree/app_configuration/default_meta_keywords') {}
24
+ s.seo_title = preference_store.get('spree/app_configuration/default_seo_title') {}
25
+ s.default_currency = preference_store.get('spree/app_configuration/currency') {}
26
+ s.code = 'spree'
27
+ end.save!
28
+ end
29
+ end
30
+ end