spree_core 3.0.10 → 3.1.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (289) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js.coffee.erb +12 -3
  3. data/app/helpers/spree/base_helper.rb +4 -1
  4. data/app/helpers/spree/products_helper.rb +37 -6
  5. data/app/mailers/spree/base_mailer.rb +11 -2
  6. data/app/models/concerns/spree/adjustment_source.rb +3 -10
  7. data/app/models/concerns/spree/default_price.rb +7 -1
  8. data/app/models/concerns/spree/named_type.rb +1 -1
  9. data/app/models/concerns/spree/user_api_authentication.rb +7 -1
  10. data/app/models/concerns/spree/user_methods.rb +47 -0
  11. data/app/models/concerns/spree/user_reporting.rb +2 -2
  12. data/app/models/concerns/spree/vat_price_calculation.rb +47 -0
  13. data/app/models/spree/address.rb +8 -7
  14. data/app/models/spree/adjustable/adjuster/base.rb +25 -0
  15. data/app/models/spree/adjustable/adjuster/promotion.rb +41 -0
  16. data/app/models/spree/adjustable/adjuster/tax.rb +26 -0
  17. data/app/models/spree/adjustable/adjustments_updater.rb +22 -45
  18. data/app/models/spree/adjustment.rb +8 -10
  19. data/app/models/spree/app_configuration.rb +5 -2
  20. data/app/models/spree/base.rb +4 -0
  21. data/app/models/spree/calculator.rb +0 -5
  22. data/app/models/spree/calculator/default_tax.rb +2 -10
  23. data/app/models/spree/classification.rb +7 -3
  24. data/app/models/spree/country.rb +14 -3
  25. data/app/models/spree/credit_card.rb +21 -31
  26. data/app/models/spree/customer_return.rb +7 -15
  27. data/app/models/spree/gateway.rb +7 -6
  28. data/app/models/spree/image.rb +1 -1
  29. data/app/models/spree/inventory_unit.rb +9 -6
  30. data/app/models/spree/legacy_user.rb +1 -6
  31. data/app/models/spree/line_item.rb +69 -68
  32. data/app/models/spree/log_entry.rb +1 -4
  33. data/app/models/spree/option_type.rb +15 -6
  34. data/app/models/spree/option_type_prototype.rb +9 -0
  35. data/app/models/spree/option_value.rb +11 -3
  36. data/app/models/spree/option_value_variant.rb +6 -0
  37. data/app/models/spree/order.rb +113 -64
  38. data/app/models/spree/order/checkout.rb +8 -11
  39. data/app/models/spree/order/currency_updater.rb +1 -1
  40. data/app/models/spree/order/store_credit.rb +96 -0
  41. data/app/models/spree/order_contents.rb +6 -1
  42. data/app/models/spree/order_inventory.rb +4 -8
  43. data/app/models/spree/order_promotion.rb +6 -0
  44. data/app/models/spree/order_updater.rb +2 -7
  45. data/app/models/spree/payment.rb +46 -19
  46. data/app/models/spree/payment/gateway_options.rb +8 -4
  47. data/app/models/spree/payment_method.rb +12 -13
  48. data/app/models/spree/payment_method/store_credit.rb +130 -0
  49. data/app/models/spree/preference.rb +1 -1
  50. data/app/models/spree/price.rb +16 -6
  51. data/app/models/spree/product.rb +52 -49
  52. data/app/models/spree/product/scopes.rb +7 -2
  53. data/app/models/spree/product_option_type.rb +7 -2
  54. data/app/models/spree/product_promotion_rule.rb +9 -0
  55. data/app/models/spree/product_property.rb +8 -10
  56. data/app/models/spree/promotion.rb +19 -19
  57. data/app/models/spree/promotion/rules/product.rb +3 -1
  58. data/app/models/spree/promotion/rules/taxon.rb +2 -1
  59. data/app/models/spree/promotion/rules/user.rb +4 -4
  60. data/app/models/spree/promotion_action.rb +3 -3
  61. data/app/models/spree/promotion_category.rb +1 -1
  62. data/app/models/spree/promotion_rule_taxon.rb +9 -0
  63. data/app/models/spree/promotion_rule_user.rb +9 -0
  64. data/app/models/spree/property.rb +2 -1
  65. data/app/models/spree/property_prototype.rb +9 -0
  66. data/app/models/spree/prototype.rb +8 -3
  67. data/app/models/spree/prototype_taxon.rb +9 -0
  68. data/app/models/spree/refund.rb +10 -7
  69. data/app/models/spree/refund_reason.rb +1 -1
  70. data/app/models/spree/reimbursement.rb +12 -16
  71. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +23 -6
  72. data/app/models/spree/reimbursement_type/store_credit.rb +28 -0
  73. data/app/models/spree/return_authorization.rb +8 -13
  74. data/app/models/spree/return_authorization_reason.rb +1 -1
  75. data/app/models/spree/return_item.rb +13 -12
  76. data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +1 -1
  77. data/app/models/spree/role.rb +3 -2
  78. data/app/models/spree/role_user.rb +6 -0
  79. data/app/models/spree/shipment.rb +18 -23
  80. data/app/models/spree/shipment_handler.rb +2 -2
  81. data/app/models/spree/shipping_category.rb +6 -3
  82. data/app/models/spree/shipping_method.rb +11 -10
  83. data/app/models/spree/shipping_method_zone.rb +6 -0
  84. data/app/models/spree/shipping_rate.rb +16 -29
  85. data/app/models/spree/state.rb +3 -2
  86. data/app/models/spree/state_change.rb +1 -1
  87. data/app/models/spree/stock/content_item.rb +10 -12
  88. data/app/models/spree/stock/coordinator.rb +13 -14
  89. data/app/models/spree/stock/estimator.rb +28 -30
  90. data/app/models/spree/stock/inventory_unit_builder.rb +1 -9
  91. data/app/models/spree/stock/packer.rb +1 -1
  92. data/app/models/spree/stock/quantifier.rb +5 -5
  93. data/app/models/spree/stock/splitter/backordered.rb +2 -2
  94. data/app/models/spree/stock_item.rb +12 -18
  95. data/app/models/spree/stock_location.rb +4 -7
  96. data/app/models/spree/stock_movement.rb +11 -9
  97. data/app/models/spree/stock_transfer.rb +11 -12
  98. data/app/models/spree/store.rb +14 -6
  99. data/app/models/spree/store_credit.rb +252 -0
  100. data/app/models/spree/store_credit_category.rb +22 -0
  101. data/app/models/spree/store_credit_event.rb +38 -0
  102. data/app/models/spree/store_credit_type.rb +6 -0
  103. data/app/models/spree/tax_category.rb +3 -8
  104. data/app/models/spree/tax_rate.rb +56 -122
  105. data/app/models/spree/taxon.rb +11 -5
  106. data/app/models/spree/tracker.rb +12 -1
  107. data/app/models/spree/validations/db_maximum_length_validator.rb +2 -1
  108. data/app/models/spree/variant.rb +82 -50
  109. data/app/models/spree/zone.rb +21 -17
  110. data/app/models/spree/zone_member.rb +6 -0
  111. data/app/validators/db_maximum_length_validator.rb +11 -0
  112. data/app/views/layouts/spree/base_mailer.html.erb +38 -781
  113. data/app/views/spree/order_mailer/_adjustment.html.erb +8 -0
  114. data/app/views/spree/order_mailer/_subtotal.html.erb +8 -0
  115. data/app/views/spree/order_mailer/_total.html.erb +8 -0
  116. data/app/views/spree/order_mailer/cancel_email.html.erb +13 -28
  117. data/app/views/spree/order_mailer/cancel_email.text.erb +1 -1
  118. data/app/views/spree/order_mailer/confirm_email.html.erb +49 -63
  119. data/app/views/spree/order_mailer/confirm_email.text.erb +1 -1
  120. data/app/views/spree/shared/_base_mailer_header.html.erb +5 -7
  121. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +777 -0
  122. data/app/views/spree/shared/_error_messages.html.erb +1 -1
  123. data/app/views/spree/shared/_mailer_line_item.html.erb +12 -0
  124. data/app/views/spree/shipment_mailer/shipped_email.html.erb +21 -14
  125. data/app/views/spree/shipment_mailer/shipped_email.text.erb +3 -3
  126. data/config/initializers/user_class_extensions.rb +7 -38
  127. data/config/locales/en.yml +113 -13
  128. data/config/routes.rb +7 -0
  129. data/db/default/spree/default_reimbursement_type.rb +1 -1
  130. data/db/default/spree/zones.rb +4 -5
  131. data/db/migrate/20150118210639_create_spree_store_credits.rb +24 -0
  132. data/db/migrate/20150118211500_create_spree_store_credit_categories.rb +8 -0
  133. data/db/migrate/20150118212051_create_spree_store_credit_events.rb +17 -0
  134. data/db/migrate/20150118212101_create_spree_store_credit_types.rb +10 -0
  135. data/db/migrate/20150314013438_add_missing_indexes.rb +25 -0
  136. data/db/migrate/20150317174308_remove_duplicated_indexes_from_multi_columns.rb +18 -0
  137. data/db/migrate/20150324104002_remove_user_index_from_spree_state_changes.rb +14 -0
  138. data/db/migrate/20150522071831_add_position_to_spree_payment_methods.rb +5 -0
  139. data/db/migrate/20150626181949_add_taxable_adjustment_total_to_line_item.rb +19 -0
  140. data/db/migrate/20150627090949_migrate_payment_methods_display.rb +12 -0
  141. data/db/migrate/20150714154102_spree_payment_method_store_credits.rb +12 -0
  142. data/db/migrate/20150726141425_rename_has_and_belongs_to_associations_to_model_names.rb +18 -0
  143. data/db/migrate/20150727191614_spree_store_credit_types.rb +11 -0
  144. data/db/migrate/20150819154308_add_discontinued_to_products_and_variants.rb +68 -0
  145. data/db/migrate/20151220072838_remove_shipping_method_id_from_spree_orders.rb +13 -0
  146. data/db/migrate/20160207191757_add_id_column_to_earlier_habtm_tables.rb +16 -0
  147. data/db/migrate/20160219165458_add_indexes.rb +14 -0
  148. data/lib/generators/spree/dummy/templates/rails/database.yml +31 -24
  149. data/lib/generators/spree/dummy/templates/rails/test.rb +2 -1
  150. data/lib/spree/core.rb +16 -0
  151. data/lib/spree/core/controller_helpers/auth.rb +1 -1
  152. data/lib/spree/core/controller_helpers/common.rb +3 -3
  153. data/lib/spree/core/controller_helpers/order.rb +6 -5
  154. data/lib/spree/core/controller_helpers/search.rb +1 -1
  155. data/lib/spree/core/controller_helpers/store.rb +29 -0
  156. data/lib/spree/core/delegate_belongs_to.rb +2 -2
  157. data/lib/spree/core/engine.rb +30 -25
  158. data/lib/spree/core/environment.rb +1 -1
  159. data/lib/spree/core/importer/order.rb +37 -40
  160. data/lib/spree/core/number_generator.rb +52 -0
  161. data/lib/spree/core/product_filters.rb +1 -1
  162. data/lib/spree/core/search/base.rb +4 -3
  163. data/lib/spree/core/version.rb +1 -1
  164. data/lib/spree/localized_number.rb +3 -1
  165. data/lib/spree/permitted_attributes.rb +5 -2
  166. data/lib/spree/testing_support/common_rake.rb +3 -3
  167. data/lib/spree/testing_support/factories.rb +3 -3
  168. data/lib/spree/testing_support/factories/address_factory.rb +1 -1
  169. data/lib/spree/testing_support/factories/country_factory.rb +2 -2
  170. data/lib/spree/testing_support/factories/order_factory.rb +2 -2
  171. data/lib/spree/testing_support/factories/payment_factory.rb +5 -0
  172. data/lib/spree/testing_support/factories/payment_method_factory.rb +8 -0
  173. data/lib/spree/testing_support/factories/promotion_rule_factory.rb +5 -0
  174. data/lib/spree/testing_support/factories/refund_factory.rb +9 -1
  175. data/lib/spree/testing_support/factories/return_authorization_factory.rb +2 -0
  176. data/lib/spree/testing_support/factories/state_factory.rb +2 -2
  177. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +9 -0
  178. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +8 -0
  179. data/lib/spree/testing_support/factories/store_credit_factory.rb +17 -0
  180. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +11 -0
  181. data/lib/spree/testing_support/factories/user_factory.rb +1 -1
  182. data/lib/spree/testing_support/factories/zone_member_factory.rb +6 -0
  183. data/lib/spree/testing_support/microdata.rb +189 -0
  184. data/lib/tasks/core.rake +68 -0
  185. data/lib/tasks/exchanges.rake +2 -2
  186. data/spec/fixtures/microdata.html +22 -0
  187. data/spec/fixtures/microdata_itemref.html +15 -0
  188. data/spec/fixtures/microdata_no_itemscope.html +20 -0
  189. data/spec/helpers/base_helper_spec.rb +64 -1
  190. data/spec/helpers/products_helper_spec.rb +75 -3
  191. data/spec/lib/i18n_spec.rb +2 -2
  192. data/spec/lib/search/base_spec.rb +2 -2
  193. data/spec/lib/spree/core/controller_helpers/auth_spec.rb +4 -2
  194. data/spec/lib/spree/core/controller_helpers/store_spec.rb +56 -0
  195. data/spec/lib/spree/core/importer/order_spec.rb +226 -123
  196. data/spec/lib/spree/core/number_generator_spec.rb +175 -0
  197. data/spec/lib/spree/core_spec.rb +23 -0
  198. data/spec/lib/spree/localized_number_spec.rb +10 -0
  199. data/spec/mailers/order_mailer_spec.rb +11 -13
  200. data/spec/mailers/shipment_mailer_spec.rb +26 -8
  201. data/spec/mailers/test_mailer_spec.rb +15 -1
  202. data/spec/models/option_type_prototype_spec.rb +9 -0
  203. data/spec/models/spree/ability_spec.rb +6 -13
  204. data/spec/models/spree/address_spec.rb +1 -1
  205. data/spec/models/spree/adjustable/adjuster/base_spec.rb +10 -0
  206. data/spec/models/spree/adjustable/adjuster/promotion_spec.rb +211 -0
  207. data/spec/models/spree/adjustable/adjuster/tax_spec.rb +86 -0
  208. data/spec/models/spree/adjustable/adjustments_updater_spec.rb +2 -262
  209. data/spec/models/spree/adjustment_spec.rb +27 -1
  210. data/spec/models/spree/app_configuration_spec.rb +5 -2
  211. data/spec/models/spree/calculator/default_tax_spec.rb +39 -14
  212. data/spec/models/spree/concerns/user_methods_spec.rb +55 -0
  213. data/spec/models/spree/concerns/vat_price_calculation_spec.rb +66 -0
  214. data/spec/models/spree/country_spec.rb +45 -8
  215. data/spec/models/spree/credit_card_spec.rb +8 -8
  216. data/spec/models/spree/customer_return_spec.rb +4 -26
  217. data/spec/models/spree/gateway_spec.rb +7 -0
  218. data/spec/models/spree/image_spec.rb +3 -0
  219. data/spec/models/spree/inventory_unit_spec.rb +1 -18
  220. data/spec/models/spree/line_item_spec.rb +78 -18
  221. data/spec/models/spree/option_type_spec.rb +2 -2
  222. data/spec/models/spree/option_value_spec.rb +8 -3
  223. data/spec/models/spree/order/checkout_spec.rb +49 -39
  224. data/spec/models/spree/order/currency_updater_spec.rb +3 -3
  225. data/spec/models/spree/order/finalizing_spec.rb +0 -3
  226. data/spec/models/spree/order/payment_spec.rb +1 -1
  227. data/spec/models/spree/order/state_machine_spec.rb +1 -6
  228. data/spec/models/spree/order/store_credit_spec.rb +423 -0
  229. data/spec/models/spree/order/updating_spec.rb +2 -2
  230. data/spec/models/spree/order_contents_spec.rb +42 -1
  231. data/spec/models/spree/order_inventory_spec.rb +27 -17
  232. data/spec/models/spree/order_spec.rb +65 -52
  233. data/spec/models/spree/payment/gateway_options_spec.rb +10 -2
  234. data/spec/models/spree/payment/store_credit_spec.rb +60 -0
  235. data/spec/models/spree/payment_method/store_credit_spec.rb +291 -0
  236. data/spec/models/spree/payment_method_spec.rb +22 -14
  237. data/spec/models/spree/payment_spec.rb +37 -44
  238. data/spec/models/spree/price_spec.rb +86 -0
  239. data/spec/models/spree/product/scopes_spec.rb +35 -0
  240. data/spec/models/spree/product_option_type_spec.rb +6 -2
  241. data/spec/models/spree/product_promotion_rule_spec.rb +9 -0
  242. data/spec/models/spree/product_property_spec.rb +11 -0
  243. data/spec/models/spree/product_spec.rb +82 -15
  244. data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +1 -1
  245. data/spec/models/spree/promotion/rules/user_spec.rb +8 -0
  246. data/spec/models/spree/promotion_action_spec.rb +1 -1
  247. data/spec/models/spree/promotion_rule_spec.rb +1 -1
  248. data/spec/models/spree/promotion_rule_taxon_spec.rb +9 -0
  249. data/spec/models/spree/promotion_rule_user_spec.rb +9 -0
  250. data/spec/models/spree/promotion_spec.rb +57 -36
  251. data/spec/models/spree/property_prototype_spec.rb +9 -0
  252. data/spec/models/spree/prototype_taxon_spec.rb +9 -0
  253. data/spec/models/spree/refund_reason_spec.rb +7 -0
  254. data/spec/models/spree/reimbursement_spec.rb +3 -30
  255. data/spec/models/spree/reimbursement_tax_calculator_spec.rb +17 -5
  256. data/spec/models/spree/reimbursement_type/store_credit_spec.rb +101 -0
  257. data/spec/models/spree/return_authorization_reason_spec.rb +7 -0
  258. data/spec/models/spree/return_authorization_spec.rb +2 -22
  259. data/spec/models/spree/return_item_spec.rb +50 -1
  260. data/spec/models/spree/returns_calculator_spec.rb +1 -1
  261. data/spec/models/spree/role_spec.rb +7 -0
  262. data/spec/models/spree/shipment_spec.rb +17 -17
  263. data/spec/models/spree/shipping_calculator_spec.rb +2 -2
  264. data/spec/models/spree/shipping_category_spec.rb +14 -0
  265. data/spec/models/spree/shipping_method_spec.rb +9 -2
  266. data/spec/models/spree/shipping_rate_spec.rb +40 -41
  267. data/spec/models/spree/state_spec.rb +12 -1
  268. data/spec/models/spree/stock/content_item_spec.rb +9 -0
  269. data/spec/models/spree/stock/estimator_spec.rb +56 -8
  270. data/spec/models/spree/stock/quantifier_spec.rb +61 -32
  271. data/spec/models/spree/stock_item_spec.rb +19 -1
  272. data/spec/models/spree/store_credit_event_spec.rb +101 -0
  273. data/spec/models/spree/store_credit_spec.rb +786 -0
  274. data/spec/models/spree/store_spec.rb +39 -11
  275. data/spec/models/spree/tax_category_spec.rb +6 -1
  276. data/spec/models/spree/tax_rate_spec.rb +204 -44
  277. data/spec/models/spree/user_spec.rb +105 -38
  278. data/spec/models/spree/variant_spec.rb +281 -9
  279. data/spec/models/spree/zone_member_spec.rb +38 -0
  280. data/spec/models/spree/zone_spec.rb +32 -8
  281. data/spec/spec_helper.rb +3 -0
  282. data/spec/support/concerns/{adjustment_source_spec.rb → adjustment_source.rb} +0 -0
  283. data/spec/support/concerns/{default_price_spec.rb → default_price.rb} +9 -0
  284. data/spec/validators/db_maximum_length_validator_spec.rb +22 -0
  285. data/spree_core.gemspec +5 -6
  286. metadata +99 -36
  287. data/CHANGELOG.md +0 -4
  288. data/app/models/concerns/spree/number_generator.rb +0 -39
  289. data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -24
data/config/routes.rb CHANGED
@@ -1 +1,8 @@
1
+ Spree::Core::Engine.add_routes do
2
+ get '/forbidden', to: 'home#forbidden', as: :forbidden
3
+ # those routes are needed for mailers
4
+ root to: 'home#index'
5
+ resources :products, only: [:index, :show]
6
+ end
7
+
1
8
  Spree::Core::Engine.draw_routes
@@ -1 +1 @@
1
- Spree::RefundReason.find_or_create_by(name: "Return processing", mutable: false)
1
+ Spree::RefundReason.find_or_create_by!(name: "Return processing", mutable: false)
@@ -1,6 +1,7 @@
1
- eu_vat = Spree::Zone.create!(name: "EU_VAT", description: "Countries that make up the EU VAT zone.")
2
- north_america = Spree::Zone.create!(name: "North America", description: "USA + Canada")
3
- %w(PL FI PT RO DE FR SK HU SI IE AT ES IT BE SE LV BG GB LT CY LU MT DK NL EE).
1
+ eu_vat = Spree::Zone.create!(name: "EU_VAT", description: "Countries that make up the EU VAT zone.", kind: 'country')
2
+ north_america = Spree::Zone.create!(name: "North America", description: "USA + Canada", kind: 'country')
3
+
4
+ %w(PL FI PT RO DE FR SK HU SI IE AT ES IT BE SE LV BG GB LT CY LU MT DK NL EE HR CZ GR).
4
5
  each do |name|
5
6
  eu_vat.zone_members.create!(zoneable: Spree::Country.find_by!(iso: name))
6
7
  end
@@ -8,5 +9,3 @@ end
8
9
  %w(US CA).each do |name|
9
10
  north_america.zone_members.create!(zoneable: Spree::Country.find_by!(iso: name))
10
11
  end
11
-
12
-
@@ -0,0 +1,24 @@
1
+ class CreateSpreeStoreCredits < ActiveRecord::Migration
2
+ def change
3
+ create_table :spree_store_credits do |t|
4
+ t.references :user
5
+ t.references :category
6
+ t.references :created_by
7
+ t.decimal :amount, precision: 8, scale: 2, default: 0.0, null: false
8
+ t.decimal :amount_used, precision: 8, scale: 2, default: 0.0, null: false
9
+ t.text :memo
10
+ t.datetime :deleted_at
11
+ t.string :currency
12
+ t.decimal :amount_authorized, precision: 8, scale: 2, default: 0.0, null: false
13
+ t.integer :originator_id
14
+ t.string :originator_type
15
+ t.integer :type_id
16
+ t.timestamps null: false
17
+ end
18
+
19
+ add_index :spree_store_credits, :deleted_at
20
+ add_index :spree_store_credits, :user_id
21
+ add_index :spree_store_credits, :type_id
22
+ add_index :spree_store_credits, [:originator_id, :originator_type], name: :spree_store_credits_originator
23
+ end
24
+ end
@@ -0,0 +1,8 @@
1
+ class CreateSpreeStoreCreditCategories < ActiveRecord::Migration
2
+ def change
3
+ create_table :spree_store_credit_categories do |t|
4
+ t.string :name
5
+ t.timestamps null: false
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,17 @@
1
+ class CreateSpreeStoreCreditEvents < ActiveRecord::Migration
2
+ def change
3
+ create_table :spree_store_credit_events do |t|
4
+ t.integer :store_credit_id, null: false
5
+ t.string :action, null: false
6
+ t.decimal :amount, precision: 8, scale: 2
7
+ t.string :authorization_code, null: false
8
+ t.decimal :user_total_amount, precision: 8, scale: 2, default: 0.0, null: false
9
+ t.integer :originator_id
10
+ t.string :originator_type
11
+ t.datetime :deleted_at
12
+ t.timestamps null: false
13
+ end
14
+ add_index :spree_store_credit_events, :store_credit_id
15
+ add_index :spree_store_credit_events, [:originator_id, :originator_type], name: :spree_store_credit_events_originator
16
+ end
17
+ end
@@ -0,0 +1,10 @@
1
+ class CreateSpreeStoreCreditTypes < ActiveRecord::Migration
2
+ def change
3
+ create_table :spree_store_credit_types do |t|
4
+ t.string :name
5
+ t.integer :priority
6
+ t.timestamps null: false
7
+ end
8
+ add_index :spree_store_credit_types, :priority
9
+ end
10
+ end
@@ -0,0 +1,25 @@
1
+ class AddMissingIndexes < ActiveRecord::Migration
2
+ def change
3
+ add_index :spree_promotion_rules_users,
4
+ [:user_id, :promotion_rule_id],
5
+ name: 'index_promotion_rules_users_on_user_id_and_promotion_rule_id'
6
+ add_index :spree_products_promotion_rules,
7
+ [:promotion_rule_id, :product_id],
8
+ name: 'index_products_promotion_rules_on_promotion_rule_and_product'
9
+ add_index :spree_orders, :canceler_id
10
+ add_index :spree_orders, :store_id
11
+ add_index :spree_orders_promotions, [:promotion_id, :order_id]
12
+ add_index :spree_properties_prototypes, :prototype_id
13
+ add_index :spree_properties_prototypes,
14
+ [:prototype_id, :property_id],
15
+ name: 'index_properties_prototypes_on_prototype_and_property'
16
+ add_index :spree_taxons_prototypes, [:prototype_id, :taxon_id]
17
+ add_index :spree_option_types_prototypes, :prototype_id
18
+ add_index :spree_option_types_prototypes,
19
+ [:prototype_id, :option_type_id],
20
+ name: 'index_option_types_prototypes_on_prototype_and_option_type'
21
+ add_index :spree_option_values_variants,
22
+ [:option_value_id, :variant_id],
23
+ name: 'index_option_values_variants_on_option_value_and_variant'
24
+ end
25
+ end
@@ -0,0 +1,18 @@
1
+ class RemoveDuplicatedIndexesFromMultiColumns < ActiveRecord::Migration
2
+ def change
3
+ remove_index :spree_adjustments, name: "index_adjustments_on_order_id"
4
+ remove_index :spree_option_types_prototypes, :prototype_id
5
+ add_index :spree_option_types_prototypes, :option_type_id
6
+ remove_index :spree_option_values_variants, name: 'index_option_values_variants_on_option_value_and_variant'
7
+ remove_index :spree_option_values_variants, :variant_id
8
+ add_index :spree_option_values_variants, :option_value_id
9
+ remove_index :spree_orders, :user_id
10
+ remove_index :spree_orders_promotions, [:order_id, :promotion_id]
11
+ add_index :spree_orders_promotions, :order_id
12
+ remove_index :spree_products_promotion_rules, name: "index_products_promotion_rules_on_promotion_rule_id"
13
+ remove_index :spree_promotion_rules_users, name: "index_promotion_rules_users_on_user_id"
14
+ remove_index :spree_properties_prototypes, :prototype_id
15
+ remove_index :spree_stock_items, :stock_location_id
16
+ remove_index :spree_taxons_prototypes, :prototype_id
17
+ end
18
+ end
@@ -0,0 +1,14 @@
1
+ class RemoveUserIndexFromSpreeStateChanges < ActiveRecord::Migration
2
+ def up
3
+ if index_exists? :spree_state_changes, :user_id
4
+ remove_index :spree_state_changes, :user_id
5
+ end
6
+
7
+ end
8
+
9
+ def down
10
+ unless index_exists? :spree_state_changes, :user_id
11
+ add_index :spree_state_changes, :user_id
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,5 @@
1
+ class AddPositionToSpreePaymentMethods < ActiveRecord::Migration
2
+ def change
3
+ add_column :spree_payment_methods, :position, :integer, default: 0
4
+ end
5
+ end
@@ -0,0 +1,19 @@
1
+ class AddTaxableAdjustmentTotalToLineItem < ActiveRecord::Migration
2
+ def change
3
+ add_column :spree_line_items, :taxable_adjustment_total, :decimal,
4
+ precision: 10, scale: 2, default: 0.0, null: false
5
+ add_column :spree_line_items, :non_taxable_adjustment_total, :decimal,
6
+ precision: 10, scale: 2, default: 0.0, null: false
7
+
8
+ add_column :spree_shipments, :taxable_adjustment_total, :decimal,
9
+ precision: 10, scale: 2, default: 0.0, null: false
10
+ add_column :spree_shipments, :non_taxable_adjustment_total, :decimal,
11
+ precision: 10, scale: 2, default: 0.0, null: false
12
+
13
+ add_column :spree_orders, :taxable_adjustment_total, :decimal,
14
+ precision: 10, scale: 2, default: 0.0, null: false
15
+ add_column :spree_orders, :non_taxable_adjustment_total, :decimal,
16
+ precision: 10, scale: 2, default: 0.0, null: false
17
+ # TODO migration that updates old orders
18
+ end
19
+ end
@@ -0,0 +1,12 @@
1
+ class MigratePaymentMethodsDisplay < ActiveRecord::Migration
2
+ def change
3
+ Spree::PaymentMethod.all.each do |method|
4
+ if method.display_on.blank?
5
+ method.display_on = "both"
6
+ method.save
7
+ end
8
+ end
9
+
10
+ change_column :spree_payment_methods, :display_on, :string, default: "both"
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ class SpreePaymentMethodStoreCredits < ActiveRecord::Migration
2
+ def up
3
+ # Reload to pick up new position column for acts_as_list
4
+ Spree::PaymentMethod.reset_column_information
5
+ Spree::PaymentMethod::StoreCredit.find_or_create_by(name: 'Store Credit', description: 'Store Credit',
6
+ active: true, display_on: 'back_end')
7
+ end
8
+
9
+ def down
10
+ Spree::PaymentMethod.find_by(type: 'Spree::PaymentMethod::StoreCredit', name: 'Store Credit').try(&:destroy)
11
+ end
12
+ end
@@ -0,0 +1,18 @@
1
+ class RenameHasAndBelongsToAssociationsToModelNames < ActiveRecord::Migration
2
+ def change
3
+ {
4
+ 'spree_option_types_prototypes' => 'spree_option_type_prototypes',
5
+ 'spree_option_values_variants' => 'spree_option_value_variants',
6
+ 'spree_orders_promotions' => 'spree_order_promotions',
7
+ 'spree_products_promotion_rules' => 'spree_product_promotion_rules',
8
+ 'spree_taxons_promotion_rules' => 'spree_promotion_rule_taxons',
9
+ 'spree_promotion_rules_users' => 'spree_promotion_rule_users',
10
+ 'spree_properties_prototypes' => 'spree_property_prototypes',
11
+ 'spree_taxons_prototypes' => 'spree_prototype_taxons',
12
+ 'spree_roles_users' => 'spree_role_users',
13
+ 'spree_shipping_methods_zones' => 'spree_shipping_method_zones'
14
+ }.each do |old_name, new_name|
15
+ rename_table old_name, new_name
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,11 @@
1
+ class SpreeStoreCreditTypes < ActiveRecord::Migration
2
+ def up
3
+ Spree::StoreCreditType.find_or_create_by(name: 'Expiring', priority: 1)
4
+ Spree::StoreCreditType.find_or_create_by(name: 'Non-expiring', priority: 2)
5
+ end
6
+
7
+ def down
8
+ Spree::StoreCreditType.find_by(name: 'Expiring').try(&:destroy)
9
+ Spree::StoreCreditType.find_by(name: 'Non-expiring').try(&:destroy)
10
+ end
11
+ end
@@ -0,0 +1,68 @@
1
+ class AddDiscontinuedToProductsAndVariants < ActiveRecord::Migration
2
+ def up
3
+ add_column :spree_products, :discontinue_on, :datetime, after: :available_on
4
+ add_column :spree_variants, :discontinue_on, :datetime, after: :deleted_at
5
+
6
+ add_index :spree_products, :discontinue_on
7
+ add_index :spree_variants, :discontinue_on
8
+
9
+ puts "Warning: This migration changes the meaning of 'deleted'. Before this change, 'deleted' meant products that were no longer being sold in your store. After this change, you can only delete a product or variant if it has not already been sold to a customer (a model-level check enforces this). Instead, you should use the new field 'discontinue_on' for products or variants which were sold in the past but no longer for sale. This fixes bugs when other objects are attached to deleted products and variants. (Even though acts_as_paranoid gem keeps the records in the database, most associations are automatically scoped to exclude the deleted records.) In thew meaning of 'deleted,' you can still use the delete function on products & variants which are *truly user-error mistakes*, specifically before an order has been placed or the items have gone on sale. You also must use the soft-delete function (which still works after this change) to clean up slug (product) and SKU (variant) duplicates. Otherwise, you should generally over ever need to discontinue products.
10
+
11
+ Data Fix: We will attempt to reverse engineer the old meaning of 'deleted' (no longer for sale) to the new database field 'discontinue_on'. However, since Slugs and SKUs cannot be duplicated on Products and Variants, we cannot gaurantee this to be foolproof if you have deteled Products and Variants that have duplicate Slugs or SKUs in non-deleted records. In these cases, we recommend you use the additional rake task to clean up your old records (see rake db:fix_orphan_line_items). If you have such records, this migration will leave them in place, preferring the non-deleted records over the deleted ones. However, since old line items will still be associated with deleted objects, you will still the bugs in your app until you run:
12
+
13
+ rake db:fix_orphan_line_items
14
+
15
+ We will print out a report of the data we are fixing now: "
16
+
17
+ Spree::Product.only_deleted.each do |product|
18
+ # determine if there is a slug duplicate
19
+ the_dup = Spree::Product.find_by(slug: product.slug)
20
+ if the_dup.nil?
21
+ # check to see if there are line items attached to any variants
22
+ if Spree::Variant.with_deleted.where(product_id: product.id).map(&:line_items).any?
23
+ puts "recovering deleted product id #{product.id} ... this will un-delete the record and set it to be discontinued"
24
+
25
+ old_deleted = product.deleted_at
26
+ product.update_column(:deleted_at, nil) # for some reason .recover doesn't appear to be a method
27
+ product.update_column(:discontinue_on, old_deleted)
28
+ else
29
+ puts "leaving product id #{product.id} deleted because there are no line items attached to it..."
30
+ end
31
+ else
32
+ puts "leaving product id #{product.id} deleted because there is a duplicate slug for '#{product.slug}' (product id #{the_dup.id}) "
33
+ if product.variants.map(&:line_items).any?
34
+ puts "WARNING: You may still have bugs with product id #{product.id} (#{product.name}) until you run rake db:fix_orphan_line_items"
35
+ end
36
+ end
37
+ end
38
+
39
+ Spree::Variant.only_deleted.each do |variant|
40
+ # determine if there is a slug duplicate
41
+ the_dup = Spree::Variant.find_by(sku: variant.sku)
42
+ if the_dup.nil?
43
+ # check to see if there are line items attached to any variants
44
+ if variant.line_items.any?
45
+ puts "recovering deleted variant id #{variant.id} ... this will un-delete the record and set it to be discontinued"
46
+ old_deleted = variant.deleted_at
47
+ variant.update_column(:deleted_at, nil) # for some reason .recover doesn't appear to be a method
48
+ variant.update_column(:discontinue_on, old_deleted)
49
+ else
50
+ puts "leaving variant id #{variant.id} deleted because there are no line items attached to it..."
51
+ end
52
+ else
53
+ puts "leaving variant id #{variant.id} deleted because there is a duplicate SKU for '#{variant.sku}' (variant id #{the_dup.id}) "
54
+ if variant.line_items.any?
55
+ puts "WARNING: You may still have bugs with variant id #{variant.id} (#{variant.name}) until you run rake db:fix_orphan_line_items"
56
+ end
57
+ end
58
+ end
59
+ end
60
+
61
+ def down
62
+ execute "UPDATE `spree_products` SET `deleted_at` = `discontinue_on` WHERE `deleted_at` IS NULL"
63
+ execute "UPDATE `spree_variants` SET `deleted_at` = `discontinue_on` WHERE `deleted_at` IS NULL"
64
+
65
+ remove_column :spree_products, :discontinue_on
66
+ remove_column :spree_variants, :discontinue_on
67
+ end
68
+ end
@@ -0,0 +1,13 @@
1
+ class RemoveShippingMethodIdFromSpreeOrders < ActiveRecord::Migration
2
+ def up
3
+ if column_exists?(:spree_orders, :shipping_method_id, :integer)
4
+ remove_column :spree_orders, :shipping_method_id, :integer
5
+ end
6
+ end
7
+
8
+ def down
9
+ unless column_exists?(:spree_orders, :shipping_method_id, :integer)
10
+ add_column :spree_orders, :shipping_method_id, :integer
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ class AddIdColumnToEarlierHabtmTables < ActiveRecord::Migration
2
+ def up
3
+ add_column :spree_option_type_prototypes, :id, :primary_key
4
+ add_column :spree_option_value_variants, :id, :primary_key
5
+ add_column :spree_order_promotions, :id, :primary_key
6
+ add_column :spree_product_promotion_rules, :id, :primary_key
7
+ add_column :spree_promotion_rule_users, :id, :primary_key
8
+ add_column :spree_property_prototypes, :id, :primary_key
9
+ add_column :spree_role_users, :id, :primary_key
10
+ add_column :spree_shipping_method_zones, :id, :primary_key
11
+ end
12
+
13
+ def down
14
+ raise ActiveRecord::IrreversibleMigration
15
+ end
16
+ end
@@ -0,0 +1,14 @@
1
+ class AddIndexes < ActiveRecord::Migration
2
+ def change
3
+ add_index :spree_assets, :position
4
+ add_index :spree_option_types, :name
5
+ add_index :spree_option_values, :name
6
+ add_index :spree_prices, :variant_id
7
+ add_index :spree_properties, :name
8
+ add_index :spree_roles, :name
9
+ add_index :spree_shipping_categories, :name
10
+ add_index :spree_taxons, :lft
11
+ add_index :spree_taxons, :rgt
12
+ add_index :spree_taxons, :name
13
+ end
14
+ end
@@ -1,6 +1,8 @@
1
1
  <% if agent_number = ENV['TC_AGENT_NUMBER']
2
2
  database_prefix = agent_number + '_'
3
3
  end %>
4
+ <% db_password = ENV['DB_PASSWORD'] %>
5
+ <% db_username = ENV['DB_USERNAME'] %>
4
6
  <% case ENV['DB']
5
7
  when 'sqlite' %>
6
8
  development:
@@ -14,44 +16,49 @@ production:
14
16
  adapter: sqlite3
15
17
  database: db/spree_production.sqlite3
16
18
  <% when 'mysql' %>
17
- development:
19
+ mysql: &mysql
18
20
  adapter: mysql2
19
- database: <%= database_prefix %><%= options[:lib_name] %>_spree_development
20
21
  encoding: utf8
22
+ <% unless db_username.blank? %>
23
+ username: <%= db_username %>
24
+ <% end %>
25
+ <% unless db_password.blank? %>
26
+ password: <%= db_password %>
27
+ <% end %>
28
+
29
+ development:
30
+ <<: *mysql
31
+ database: <%= database_prefix %><%= options[:lib_name] %>_spree_development
21
32
  test:
22
- adapter: mysql2
33
+ <<: *mysql
23
34
  database: <%= database_prefix %><%= options[:lib_name] %>_spree_test
24
- encoding: utf8
25
35
  production:
26
- adapter: mysql2
36
+ <<: *mysql
27
37
  database: <%= database_prefix %><%= options[:lib_name] %>_spree_production
28
- encoding: utf8
29
38
  <% when 'postgres' %>
30
39
  <% db_host = ENV['DB_HOST'] %>
31
- development:
40
+ postgres: &postgres
32
41
  adapter: postgresql
33
- database: <%= database_prefix %><%= options[:lib_name] %>_spree_development
34
- username: postgres
35
- min_messages: warning
36
- <% unless db_host.blank? %>
42
+ <% unless db_username.blank? %>
43
+ username: <%= db_username || 'postgres' %>
44
+ <% end %>
45
+ <% unless db_password.blank? %>
46
+ password: <%= db_password %>
47
+ <% end %>
48
+ <% unless db_host.blank? %>
37
49
  host: <%= db_host %>
38
- <% end %>
50
+ <% end %>
51
+ min_messages: warning
52
+
53
+ development:
54
+ <<: *postgres
55
+ database: <%= database_prefix %><%= options[:lib_name] %>_spree_development
39
56
  test:
40
- adapter: postgresql
57
+ <<: *postgres
41
58
  database: <%= database_prefix %><%= options[:lib_name] %>_spree_test
42
- username: postgres
43
- min_messages: warning
44
- <% unless db_host.blank? %>
45
- host: <%= db_host %>
46
- <% end %>
47
59
  production:
48
- adapter: postgresql
60
+ <<: *postgres
49
61
  database: <%= database_prefix %><%= options[:lib_name] %>_spree_production
50
- username: postgres
51
- min_messages: warning
52
- <% unless db_host.blank? %>
53
- host: <%= db_host %>
54
- <% end %>
55
62
  <% else %>
56
63
  development:
57
64
  adapter: sqlite3