spree_core 2.2.14 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
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