spree_core 2.3.13 → 2.4.0.rc1

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 (232) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js.coffee.erb +1 -5
  3. data/app/helpers/spree/base_helper.rb +22 -11
  4. data/app/helpers/spree/products_helper.rb +8 -7
  5. data/app/mailers/spree/base_mailer.rb +1 -0
  6. data/app/mailers/spree/reimbursement_mailer.rb +10 -0
  7. data/app/mailers/spree/test_mailer.rb +2 -3
  8. data/app/models/concerns/spree/adjustment_source.rb +24 -0
  9. data/app/models/concerns/spree/calculated_adjustments.rb +33 -0
  10. data/app/models/concerns/spree/named_type.rb +12 -0
  11. data/app/models/concerns/spree/user_address.rb +30 -0
  12. data/app/models/concerns/spree/user_payment_source.rb +19 -0
  13. data/app/models/spree/address.rb +13 -6
  14. data/app/models/spree/adjustment.rb +5 -5
  15. data/app/models/spree/app_configuration.rb +8 -4
  16. data/app/models/spree/asset.rb +1 -1
  17. data/app/models/spree/base.rb +0 -3
  18. data/app/models/spree/calculator/flat_rate.rb +1 -5
  19. data/app/models/spree/calculator/returns/default_refund_amount.rb +36 -0
  20. data/app/models/spree/classification.rb +1 -1
  21. data/app/models/spree/credit_card.rb +18 -22
  22. data/app/models/spree/customer_return.rb +70 -0
  23. data/app/models/spree/exchange.rb +42 -0
  24. data/app/models/spree/gateway/bogus.rb +3 -3
  25. data/app/models/spree/image.rb +1 -1
  26. data/app/models/spree/inventory_unit.rb +32 -8
  27. data/app/models/spree/item_adjustments.rb +7 -11
  28. data/app/models/spree/legacy_user.rb +2 -2
  29. data/app/models/spree/line_item.rb +25 -12
  30. data/app/models/spree/option_type.rb +1 -1
  31. data/app/models/spree/option_value.rb +1 -8
  32. data/app/models/spree/order.rb +163 -145
  33. data/app/models/spree/order/checkout.rb +35 -23
  34. data/app/models/spree/order/payments.rb +66 -0
  35. data/app/models/spree/order_contents.rb +34 -24
  36. data/app/models/spree/order_populator.rb +6 -4
  37. data/app/models/spree/order_updater.rb +10 -1
  38. data/app/models/spree/payment.rb +19 -16
  39. data/app/models/spree/payment/processing.rb +40 -72
  40. data/app/models/spree/payment_method.rb +1 -1
  41. data/app/models/spree/payment_method/check.rb +0 -2
  42. data/app/models/spree/preference.rb +1 -1
  43. data/app/models/spree/preferences/preferable.rb +20 -0
  44. data/app/models/spree/price.rb +13 -3
  45. data/app/models/spree/product.rb +24 -29
  46. data/app/models/spree/product_property.rb +0 -2
  47. data/app/models/spree/promotion.rb +66 -24
  48. data/app/models/spree/promotion/actions/create_adjustment.rb +2 -2
  49. data/app/models/spree/promotion/actions/create_item_adjustments.rb +15 -11
  50. data/app/models/spree/promotion/actions/create_line_items.rb +2 -12
  51. data/app/models/spree/promotion/rules/first_order.rb +6 -2
  52. data/app/models/spree/promotion/rules/item_total.rb +42 -4
  53. data/app/models/spree/promotion/rules/one_use_per_user.rb +24 -0
  54. data/app/models/spree/promotion/rules/product.rb +13 -11
  55. data/app/models/spree/promotion/rules/taxon.rb +61 -0
  56. data/app/models/spree/promotion/rules/user.rb +1 -1
  57. data/app/models/spree/promotion/rules/user_logged_in.rb +4 -1
  58. data/app/models/spree/promotion_category.rb +6 -0
  59. data/app/models/spree/promotion_handler/cart.rb +14 -18
  60. data/app/models/spree/promotion_handler/coupon.rb +25 -16
  61. data/app/models/spree/promotion_rule.rb +13 -0
  62. data/app/models/spree/property.rb +1 -3
  63. data/app/models/spree/refund.rb +91 -0
  64. data/app/models/spree/refund_reason.rb +13 -0
  65. data/app/models/spree/reimbursement.rb +148 -0
  66. data/app/models/spree/reimbursement/credit.rb +25 -0
  67. data/app/models/spree/reimbursement/reimbursement_type_engine.rb +56 -0
  68. data/app/models/spree/reimbursement/reimbursement_type_validator.rb +12 -0
  69. data/app/models/spree/reimbursement_performer.rb +43 -0
  70. data/app/models/spree/reimbursement_tax_calculator.rb +38 -0
  71. data/app/models/spree/reimbursement_type.rb +16 -0
  72. data/app/models/spree/reimbursement_type/credit.rb +13 -0
  73. data/app/models/spree/reimbursement_type/exchange.rb +9 -0
  74. data/app/models/spree/reimbursement_type/original_payment.rb +13 -0
  75. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +50 -0
  76. data/app/models/spree/return_authorization.rb +52 -68
  77. data/app/models/spree/return_authorization_reason.rb +7 -0
  78. data/app/models/spree/return_item.rb +230 -0
  79. data/app/models/spree/return_item/default_eligibility_validator.rb +27 -0
  80. data/app/models/spree/return_item/eligibility_validator/base_validator.rb +24 -0
  81. data/app/models/spree/return_item/eligibility_validator/rma_required.rb +17 -0
  82. data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +16 -0
  83. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +34 -0
  84. data/app/models/spree/return_item/exchange_variant_eligibility/same_product.rb +10 -0
  85. data/app/models/spree/returns_calculator.rb +8 -0
  86. data/app/models/spree/shipment.rb +209 -154
  87. data/app/models/spree/shipment_handler.rb +43 -0
  88. data/app/models/spree/shipping_calculator.rb +1 -1
  89. data/app/models/spree/shipping_category.rb +2 -2
  90. data/app/models/spree/shipping_method.rb +1 -1
  91. data/app/models/spree/shipping_method_category.rb +1 -1
  92. data/app/models/spree/shipping_rate.rb +4 -0
  93. data/app/models/spree/stock/adjuster.rb +10 -11
  94. data/app/models/spree/stock/availability_validator.rb +6 -10
  95. data/app/models/spree/stock/content_item.rb +48 -0
  96. data/app/models/spree/stock/coordinator.rb +14 -7
  97. data/app/models/spree/stock/estimator.rb +1 -1
  98. data/app/models/spree/stock/inventory_unit_builder.rb +21 -0
  99. data/app/models/spree/stock/package.rb +38 -51
  100. data/app/models/spree/stock/packer.rb +13 -11
  101. data/app/models/spree/stock/prioritizer.rb +7 -7
  102. data/app/models/spree/stock/splitter/base.rb +2 -2
  103. data/app/models/spree/stock_item.rb +6 -9
  104. data/app/models/spree/stock_location.rb +17 -25
  105. data/app/models/spree/stock_movement.rb +1 -8
  106. data/app/models/spree/stock_transfer.rb +0 -2
  107. data/app/models/spree/store.rb +1 -1
  108. data/app/models/spree/tax_category.rb +2 -2
  109. data/app/models/spree/tax_rate.rb +16 -22
  110. data/app/models/spree/taxon.rb +1 -1
  111. data/app/models/spree/variant.rb +45 -23
  112. data/app/models/spree/zone.rb +17 -17
  113. data/app/models/spree/zone_member.rb +1 -1
  114. data/app/views/layouts/spree/base_mailer.html.erb +784 -0
  115. data/app/views/spree/order_mailer/cancel_email.html.erb +45 -0
  116. data/app/views/spree/order_mailer/cancel_email.text.erb +2 -2
  117. data/app/views/spree/order_mailer/confirm_email.html.erb +84 -0
  118. data/app/views/spree/order_mailer/confirm_email.text.erb +2 -2
  119. data/app/views/spree/reimbursement_mailer/reimbursement_email.text.erb +22 -0
  120. data/app/views/spree/shared/_base_mailer_footer.html.erb +20 -0
  121. data/app/views/spree/shared/_base_mailer_header.html.erb +31 -0
  122. data/app/views/spree/shipment_mailer/shipped_email.html.erb +34 -0
  123. data/app/views/spree/test_mailer/test_email.html.erb +40 -0
  124. data/app/views/spree/test_mailer/test_email.text.erb +2 -2
  125. data/config/initializers/friendly_id.rb +88 -0
  126. data/config/initializers/premailer_assets.rb +1 -0
  127. data/config/initializers/user_class_extensions.rb +9 -22
  128. data/config/locales/en.yml +180 -12
  129. data/db/default/spree/states.rb +73 -55
  130. data/db/migrate/20130213191427_create_default_stock.rb +1 -0
  131. data/db/migrate/20130807024301_upgrade_adjustments.rb +4 -5
  132. data/db/migrate/20140309033438_create_store_from_preferences.rb +0 -7
  133. data/db/migrate/20140318191500_create_spree_taxons_promotion_rules.rb +8 -0
  134. data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +1 -1
  135. data/db/migrate/20140601011216_set_shipment_total_for_users_upgrading.rb +5 -3
  136. data/db/migrate/20140625214618_create_spree_refunds.rb +12 -0
  137. data/db/migrate/20140702140656_create_spree_return_authorization_inventory_unit.rb +12 -0
  138. data/db/migrate/20140707125621_rename_return_authorization_inventory_unit_to_return_items.rb +5 -0
  139. data/db/migrate/20140709160534_backfill_line_item_pre_tax_amount.rb +10 -0
  140. data/db/migrate/20140710041921_recreate_spree_return_authorizations.rb +55 -0
  141. data/db/migrate/20140710181204_add_amount_fields_to_return_items.rb +7 -0
  142. data/db/migrate/20140710190048_drop_return_authorization_amount.rb +5 -0
  143. data/db/migrate/20140713140455_create_spree_return_authorization_reasons.rb +28 -0
  144. data/db/migrate/20140713140527_create_spree_refund_reasons.rb +14 -0
  145. data/db/migrate/20140713142214_rename_return_authorization_reason.rb +5 -0
  146. data/db/migrate/20140715182625_create_spree_promotion_categories.rb +11 -0
  147. data/db/migrate/20140716204111_drop_received_at_on_return_items.rb +9 -0
  148. data/db/migrate/20140716212330_add_reception_and_acceptance_status_to_return_items.rb +6 -0
  149. data/db/migrate/20140717155155_create_default_refund_reason.rb +9 -0
  150. data/db/migrate/20140717185932_add_default_to_spree_stock_locations.rb +5 -0
  151. data/db/migrate/20140718133010_create_spree_customer_returns.rb +9 -0
  152. data/db/migrate/20140718133349_add_customer_return_id_to_return_item.rb +6 -0
  153. data/db/migrate/20140718195325_create_friendly_id_slugs.rb +15 -0
  154. data/db/migrate/20140723004419_rename_spree_refund_return_authorization_id.rb +5 -0
  155. data/db/migrate/20140723152808_increase_return_item_pre_tax_amount_precision.rb +13 -0
  156. data/db/migrate/20140723214541_copy_product_slugs_to_slug_history.rb +15 -0
  157. data/db/migrate/20140725131539_create_spree_reimbursements.rb +21 -0
  158. data/db/migrate/20140728225422_add_promotionable_to_spree_products.rb +5 -0
  159. data/db/migrate/20140729133613_add_exchange_inventory_unit_foreign_keys.rb +7 -0
  160. data/db/migrate/20140730155938_add_acceptance_status_errors_to_return_item.rb +5 -0
  161. data/db/migrate/20140731150017_create_spree_reimbursement_types.rb +20 -0
  162. data/db/migrate/20140805171035_add_default_to_spree_credit_cards.rb +5 -0
  163. data/db/migrate/20140805171219_make_existing_credit_cards_default.rb +10 -0
  164. data/db/migrate/20140806144901_add_type_to_reimbursement_type.rb +9 -0
  165. data/db/migrate/20140808184039_create_spree_reimbursement_credits.rb +10 -0
  166. data/db/migrate/20140827170513_add_meta_title_to_spree_products.rb +7 -0
  167. data/db/migrate/20140924164824_add_code_to_spree_tax_categories.rb +5 -0
  168. data/db/migrate/20141002191113_add_code_to_spree_shipping_methods.rb +5 -0
  169. data/db/migrate/20141007230328_add_cancel_audit_fields_to_spree_orders.rb +6 -0
  170. data/db/migrate/20141009204607_add_store_id_to_orders.rb +8 -0
  171. data/lib/generators/spree/install/install_generator.rb +7 -3
  172. data/lib/spree/core.rb +11 -10
  173. data/lib/spree/core/controller_helpers/common.rb +3 -10
  174. data/lib/spree/core/controller_helpers/order.rb +15 -12
  175. data/lib/spree/core/controller_helpers/strong_parameters.rb +9 -9
  176. data/lib/spree/core/engine.rb +8 -1
  177. data/lib/spree/core/importer/order.rb +5 -17
  178. data/lib/spree/core/search/base.rb +1 -1
  179. data/lib/spree/core/validators/email.rb +1 -1
  180. data/lib/spree/core/version.rb +1 -1
  181. data/lib/spree/instrumentation.rb +41 -0
  182. data/lib/spree/migrations.rb +3 -7
  183. data/lib/spree/money.rb +2 -2
  184. data/lib/spree/permitted_attributes.rb +10 -9
  185. data/lib/spree/testing_support/ability_helpers.rb +25 -25
  186. data/lib/spree/testing_support/authorization_helpers.rb +3 -5
  187. data/lib/spree/testing_support/capybara_ext.rb +2 -2
  188. data/lib/spree/testing_support/factories/calculator_factory.rb +0 -8
  189. data/lib/spree/testing_support/factories/credit_card_factory.rb +1 -1
  190. data/lib/spree/testing_support/factories/customer_return_factory.rb +31 -0
  191. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +1 -0
  192. data/lib/spree/testing_support/factories/line_item_factory.rb +2 -1
  193. data/lib/spree/testing_support/factories/order_factory.rb +11 -6
  194. data/lib/spree/testing_support/factories/promotion_category_factory.rb +6 -0
  195. data/lib/spree/testing_support/factories/promotion_factory.rb +9 -7
  196. data/lib/spree/testing_support/factories/refund_factory.rb +14 -0
  197. data/lib/spree/testing_support/factories/reimbursement_factory.rb +16 -0
  198. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +7 -0
  199. data/lib/spree/testing_support/factories/return_authorization_factory.rb +9 -3
  200. data/lib/spree/testing_support/factories/return_item_factory.rb +10 -0
  201. data/lib/spree/testing_support/factories/shipment_factory.rb +1 -0
  202. data/lib/spree/testing_support/factories/shipping_method_factory.rb +3 -2
  203. data/lib/spree/testing_support/factories/stock_factory.rb +12 -11
  204. data/lib/spree/testing_support/flash.rb +2 -2
  205. data/lib/tasks/email.rake +7 -0
  206. data/lib/tasks/exchanges.rake +70 -0
  207. data/vendor/assets/javascripts/jquery.validate/localization/messages_et.js +23 -0
  208. data/vendor/assets/javascripts/jquery.validate/localization/messages_eu.js +25 -0
  209. data/vendor/assets/javascripts/jquery.validate/localization/messages_hr.js +25 -0
  210. data/vendor/assets/javascripts/jquery.validate/localization/messages_ka.js +25 -0
  211. data/vendor/assets/javascripts/jquery.validate/localization/messages_ko.js +25 -0
  212. data/vendor/assets/javascripts/jquery.validate/localization/messages_my.js +25 -0
  213. data/vendor/assets/javascripts/jquery.validate/localization/messages_pt_BR.js +26 -0
  214. data/vendor/assets/javascripts/jquery.validate/localization/messages_pt_PT.js +26 -0
  215. data/vendor/assets/javascripts/jquery.validate/localization/messages_sl.js +25 -0
  216. data/vendor/assets/javascripts/jquery.validate/localization/messages_sv.js +23 -0
  217. data/vendor/assets/javascripts/jquery.validate/localization/messages_uk.js +25 -0
  218. data/vendor/assets/javascripts/jquery.validate/localization/messages_zh.js +25 -0
  219. data/vendor/assets/javascripts/jquery.validate/localization/messages_zh_TW.js +26 -0
  220. metadata +163 -47
  221. data/app/models/concerns/spree/ransackable_attributes.rb +0 -19
  222. data/db/migrate/20141021194502_add_state_lock_version_to_order.rb +0 -5
  223. data/db/migrate/20141101231208_fix_adjustment_order_presence.rb +0 -13
  224. data/db/migrate/20141105213646_update_classifications_positions.rb +0 -9
  225. data/db/migrate/20141120135441_add_guest_token_index_to_spree_orders.rb +0 -5
  226. data/db/migrate/20150515211137_fix_adjustment_order_id.rb +0 -70
  227. data/lib/spree/core/adjustment_source.rb +0 -26
  228. data/lib/spree/core/calculated_adjustments.rb +0 -35
  229. data/lib/spree/core/controller_helpers.rb +0 -20
  230. data/lib/spree/core/user_address.rb +0 -32
  231. data/lib/spree/core/user_payment_source.rb +0 -20
  232. data/lib/spree/localized_number.rb +0 -20
@@ -0,0 +1,6 @@
1
+ class AddCustomerReturnIdToReturnItem < ActiveRecord::Migration
2
+ def change
3
+ add_column :spree_return_items, :customer_return_id, :integer
4
+ add_index :spree_return_items, :customer_return_id, name: 'index_return_items_on_customer_return_id'
5
+ end
6
+ end
@@ -0,0 +1,15 @@
1
+ class CreateFriendlyIdSlugs < ActiveRecord::Migration
2
+ def change
3
+ create_table :friendly_id_slugs do |t|
4
+ t.string :slug, :null => false
5
+ t.integer :sluggable_id, :null => false
6
+ t.string :sluggable_type, :limit => 50
7
+ t.string :scope
8
+ t.datetime :created_at
9
+ end
10
+ add_index :friendly_id_slugs, :sluggable_id
11
+ add_index :friendly_id_slugs, [:slug, :sluggable_type]
12
+ add_index :friendly_id_slugs, [:slug, :sluggable_type, :scope], :unique => true
13
+ add_index :friendly_id_slugs, :sluggable_type
14
+ end
15
+ end
@@ -0,0 +1,5 @@
1
+ class RenameSpreeRefundReturnAuthorizationId < ActiveRecord::Migration
2
+ def change
3
+ rename_column :spree_refunds, :return_authorization_id, :customer_return_id
4
+ end
5
+ end
@@ -0,0 +1,13 @@
1
+ class IncreaseReturnItemPreTaxAmountPrecision < ActiveRecord::Migration
2
+ def up
3
+ change_column :spree_return_items, :pre_tax_amount, :decimal, precision: 12, scale: 4, default: 0.0, null: false
4
+ change_column :spree_return_items, :included_tax_total, :decimal, precision: 12, scale: 4, default: 0.0, null: false
5
+ change_column :spree_return_items, :additional_tax_total, :decimal, precision: 12, scale: 4, default: 0.0, null: false
6
+ end
7
+
8
+ def down
9
+ change_column :spree_return_items, :pre_tax_amount, :decimal, precision: 10, scale: 2, default: 0.0, null: false
10
+ change_column :spree_return_items, :included_tax_total, :decimal, precision: 10, scale: 2, default: 0.0, null: false
11
+ change_column :spree_return_items, :additional_tax_total, :decimal, precision: 10, scale: 2, default: 0.0, null: false
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ class CopyProductSlugsToSlugHistory < ActiveRecord::Migration
2
+ def change
3
+
4
+ # do what sql does best: copy all slugs into history table in a single query
5
+ # rather than load potentially millions of products into memory
6
+ Spree::Product.connection.execute <<-SQL
7
+ INSERT INTO #{FriendlyId::Slug.table_name} (slug, sluggable_id, sluggable_type, created_at)
8
+ SELECT slug, id, '#{Spree::Product.to_s}', #{ActiveRecord::Base.send(:sanitize_sql_array, ['?', Time.current])}
9
+ FROM #{Spree::Product.table_name}
10
+ WHERE slug IS NOT NULL
11
+ ORDER BY id
12
+ SQL
13
+
14
+ end
15
+ end
@@ -0,0 +1,21 @@
1
+ class CreateSpreeReimbursements < ActiveRecord::Migration
2
+ def change
3
+ create_table :spree_reimbursements do |t|
4
+ t.string :number
5
+ t.string :reimbursement_status
6
+ t.integer :customer_return_id
7
+ t.integer :order_id
8
+ t.decimal :total, precision: 10, scale: 2
9
+
10
+ t.timestamps
11
+ end
12
+
13
+ add_index :spree_reimbursements, :customer_return_id
14
+ add_index :spree_reimbursements, :order_id
15
+
16
+ remove_column :spree_refunds, :customer_return_id, :integer
17
+ add_column :spree_refunds, :reimbursement_id, :integer
18
+
19
+ add_column :spree_return_items, :reimbursement_id, :integer
20
+ end
21
+ end
@@ -0,0 +1,5 @@
1
+ class AddPromotionableToSpreeProducts < ActiveRecord::Migration
2
+ def change
3
+ add_column :spree_products, :promotionable, :boolean, default: true
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ class AddExchangeInventoryUnitForeignKeys < ActiveRecord::Migration
2
+ def change
3
+ add_column :spree_return_items, :exchange_inventory_unit_id, :integer
4
+
5
+ add_index :spree_return_items, :exchange_inventory_unit_id
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ class AddAcceptanceStatusErrorsToReturnItem < ActiveRecord::Migration
2
+ def change
3
+ add_column :spree_return_items, :acceptance_status_errors, :text
4
+ end
5
+ end
@@ -0,0 +1,20 @@
1
+ class CreateSpreeReimbursementTypes < ActiveRecord::Migration
2
+ def change
3
+ create_table :spree_reimbursement_types do |t|
4
+ t.string :name
5
+ t.boolean :active, default: true
6
+ t.boolean :mutable, default: true
7
+
8
+ t.timestamps
9
+ end
10
+
11
+ reversible do |direction|
12
+ direction.up do
13
+ Spree::ReimbursementType.create!(name: Spree::ReimbursementType::ORIGINAL)
14
+ end
15
+ end
16
+
17
+ add_column :spree_return_items, :preferred_reimbursement_type_id, :integer
18
+ add_column :spree_return_items, :override_reimbursement_type_id, :integer
19
+ end
20
+ end
@@ -0,0 +1,5 @@
1
+ class AddDefaultToSpreeCreditCards < ActiveRecord::Migration
2
+ def change
3
+ add_column :spree_credit_cards, :default, :boolean, null: false, default: false
4
+ end
5
+ end
@@ -0,0 +1,10 @@
1
+ class MakeExistingCreditCardsDefault < ActiveRecord::Migration
2
+ def up
3
+ # set the newest credit card for every user to be the default; SQL technique from
4
+ # http://stackoverflow.com/questions/121387/fetch-the-row-which-has-the-max-value-for-a-column
5
+ Spree::CreditCard.where.not(user_id: nil).joins("LEFT OUTER JOIN spree_credit_cards cc2 ON cc2.user_id = spree_credit_cards.user_id AND spree_credit_cards.created_at < cc2.created_at").where("cc2.user_id IS NULL").update_all(default: true)
6
+ end
7
+ def down
8
+ # do nothing
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ class AddTypeToReimbursementType < ActiveRecord::Migration
2
+ def change
3
+ add_column :spree_reimbursement_types, :type, :string
4
+ add_index :spree_reimbursement_types, :type
5
+
6
+ Spree::ReimbursementType.reset_column_information
7
+ Spree::ReimbursementType.find_by(name: Spree::ReimbursementType::ORIGINAL).update_attributes!(type: 'Spree::ReimbursementType::OriginalPayment')
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ class CreateSpreeReimbursementCredits < ActiveRecord::Migration
2
+ def change
3
+ create_table :spree_reimbursement_credits do |t|
4
+ t.decimal :amount, precision: 10, scale: 2, default: 0.0, null: false
5
+ t.integer :reimbursement_id
6
+ t.integer :creditable_id
7
+ t.string :creditable_type
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ class AddMetaTitleToSpreeProducts < ActiveRecord::Migration
2
+ def change
3
+ change_table :spree_products do |t|
4
+ t.string :meta_title
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ class AddCodeToSpreeTaxCategories < ActiveRecord::Migration
2
+ def change
3
+ add_column :spree_tax_categories, :tax_code, :string
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddCodeToSpreeShippingMethods < ActiveRecord::Migration
2
+ def change
3
+ add_column :spree_shipping_methods, :code, :string
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ class AddCancelAuditFieldsToSpreeOrders < ActiveRecord::Migration
2
+ def change
3
+ add_column :spree_orders, :canceled_at, :datetime
4
+ add_column :spree_orders, :canceler_id, :integer
5
+ end
6
+ end
@@ -0,0 +1,8 @@
1
+ class AddStoreIdToOrders < ActiveRecord::Migration
2
+ def change
3
+ add_column :spree_orders, :store_id, :integer
4
+ if Spree::Store.default.persisted?
5
+ Spree::Order.where(store_id: nil).update_all(store_id: Spree::Store.default.id)
6
+ end
7
+ end
8
+ end
@@ -53,10 +53,14 @@ User-agent: *
53
53
  Disallow: /checkout
54
54
  Disallow: /cart
55
55
  Disallow: /orders
56
- Disallow: /user
56
+ Disallow: /countries
57
+ Disallow: /line_items
58
+ Disallow: /password_resets
59
+ Disallow: /states
60
+ Disallow: /user_sessions
61
+ Disallow: /user_registrations
62
+ Disallow: /users
57
63
  Disallow: /account
58
- Disallow: /api
59
- Disallow: /password
60
64
  ROBOTS
61
65
  end
62
66
 
data/lib/spree/core.rb CHANGED
@@ -3,15 +3,16 @@ require 'active_merchant'
3
3
  require 'acts_as_list'
4
4
  require 'awesome_nested_set'
5
5
  require 'cancan'
6
+ require 'friendly_id'
7
+ require 'font-awesome-rails'
6
8
  require 'kaminari'
7
9
  require 'mail'
8
10
  require 'monetize'
9
11
  require 'paperclip'
10
12
  require 'paranoia'
13
+ require 'premailer/rails'
11
14
  require 'ransack'
12
15
  require 'state_machine'
13
- require 'friendly_id'
14
- require 'font-awesome-rails'
15
16
 
16
17
  module Spree
17
18
 
@@ -57,24 +58,24 @@ require 'spree/migrations'
57
58
  require 'spree/core/engine'
58
59
 
59
60
  require 'spree/i18n'
60
- require 'spree/localized_number'
61
+ require 'spree/instrumentation'
61
62
  require 'spree/money'
62
- require 'spree/permitted_attributes'
63
- require 'spree/core/user_address'
64
- require 'spree/core/user_payment_source'
65
63
 
64
+ require 'spree/permitted_attributes'
66
65
  require 'spree/core/delegate_belongs_to'
67
- require 'spree/core/importer'
68
66
  require 'spree/core/permalinks'
69
- require 'spree/core/calculated_adjustments'
70
- require 'spree/core/adjustment_source'
71
67
  require 'spree/core/product_duplicator'
72
- require 'spree/core/controller_helpers'
68
+ require 'spree/core/controller_helpers/auth'
69
+ require 'spree/core/controller_helpers/common'
70
+ require 'spree/core/controller_helpers/order'
71
+ require 'spree/core/controller_helpers/respond_with'
73
72
  require 'spree/core/controller_helpers/search'
74
73
  require 'spree/core/controller_helpers/ssl'
75
74
  require 'spree/core/controller_helpers/store'
76
75
  require 'spree/core/controller_helpers/strong_parameters'
77
76
 
77
+ require 'spree/core/importer'
78
+
78
79
  # Hack waiting on https://github.com/pluginaweek/state_machine/pull/275
79
80
  module StateMachine
80
81
  module Integrations
@@ -14,13 +14,6 @@ module Spree
14
14
 
15
15
  protected
16
16
 
17
- # Creates the hash that is sent as the payload for all notifications. Specific notifications will
18
- # add additional keys as appropriate. Override this method if you need additional data when
19
- # responding to a notification
20
- def default_notification_payload
21
- {:user => try_spree_current_user, :order => current_order}
22
- end
23
-
24
17
  # can be used in views as well as controllers.
25
18
  # e.g. <% self.title = 'This is a custom title for this view' %>
26
19
  attr_writer :title
@@ -65,11 +58,11 @@ module Spree
65
58
  end
66
59
 
67
60
  # Returns which layout to render.
68
- #
61
+ #
69
62
  # You can set the layout you want to render inside your Spree configuration with the +:layout+ option.
70
- #
63
+ #
71
64
  # Default layout is: +app/views/spree/layouts/spree_application+
72
- #
65
+ #
73
66
  def get_layout
74
67
  layout ||= Spree::Config[:layout]
75
68
  end
@@ -22,18 +22,17 @@ module Spree
22
22
  if @simple_current_order
23
23
  @simple_current_order.last_ip_address = ip_address
24
24
  return @simple_current_order
25
- else
26
- @simple_current_order = Spree::Order.new
27
25
  end
28
26
  end
29
27
 
30
28
  # The current incomplete order from the guest_token for use in cart and during checkout
31
29
  def current_order(options = {})
32
30
  options[:create_order_if_necessary] ||= false
31
+ options[:lock] ||= false
33
32
 
34
33
  return @current_order if @current_order
35
34
 
36
- @current_order = find_order_by_token_or_user(options)
35
+ @current_order = find_order_by_token_or_user(options, true)
37
36
 
38
37
  if options[:create_order_if_necessary] && (@current_order.nil? || @current_order.completed?)
39
38
  @current_order = Spree::Order.new(current_order_params)
@@ -57,9 +56,11 @@ module Spree
57
56
  end
58
57
 
59
58
  def set_current_order
60
- if try_spree_current_user && current_order
61
- try_spree_current_user.orders.incomplete.where('id != ?', current_order.id).each do |order|
62
- current_order.merge!(order, try_spree_current_user)
59
+ if user = try_spree_current_user
60
+ if cookies.signed[:guest_token].nil? && last_incomplete_order
61
+ cookies.permanent.signed[:guest_token] = last_incomplete_order.guest_token
62
+ elsif current_order && last_incomplete_order && current_order != last_incomplete_order
63
+ current_order.merge!(last_incomplete_order, user)
63
64
  end
64
65
  end
65
66
  end
@@ -73,24 +74,26 @@ module Spree
73
74
  end
74
75
 
75
76
  private
76
-
77
77
  def last_incomplete_order
78
78
  @last_incomplete_order ||= try_spree_current_user.last_incomplete_spree_order
79
79
  end
80
80
 
81
81
  def current_order_params
82
- { currency: current_currency, guest_token: cookies.signed[:guest_token], user_id: try_spree_current_user.try(:id) }
82
+ { currency: current_currency, guest_token: cookies.signed[:guest_token], store_id: current_store.id, user_id: try_spree_current_user.try(:id) }
83
83
  end
84
84
 
85
- def find_order_by_token_or_user(options={})
86
- options[:lock] ||= false
85
+ def find_order_by_token_or_user(options={}, with_adjustments = false)
87
86
 
88
87
  # Find any incomplete orders for the guest_token
89
- order = Spree::Order.incomplete.includes(:adjustments).lock(options[:lock]).find_by(current_order_params)
88
+ if with_adjustments
89
+ order = Spree::Order.incomplete.includes(:adjustments).lock(options[:lock]).find_by(current_order_params)
90
+ else
91
+ order = Spree::Order.incomplete.lock(options[:lock]).find_by(current_order_params)
92
+ end
90
93
 
91
94
  # Find any incomplete orders for the current user
92
95
  if order.nil? && try_spree_current_user
93
- order = last_incomplete_order
96
+ order = Spree::Order.incomplete.order('id DESC').where({ currency: current_currency, user_id: try_spree_current_user.try(:id)}).first
94
97
  end
95
98
 
96
99
  order
@@ -7,33 +7,33 @@ module Spree
7
7
  end
8
8
 
9
9
  delegate *Spree::PermittedAttributes::ATTRIBUTES,
10
- :to => :permitted_attributes,
11
- :prefix => :permitted
10
+ to: :permitted_attributes,
11
+ prefix: :permitted
12
12
 
13
13
  def permitted_payment_attributes
14
14
  permitted_attributes.payment_attributes + [
15
- :source_attributes => permitted_source_attributes
15
+ source_attributes: permitted_source_attributes
16
16
  ]
17
17
  end
18
18
 
19
19
  def permitted_checkout_attributes
20
20
  permitted_attributes.checkout_attributes + [
21
- :bill_address_attributes => permitted_address_attributes,
22
- :ship_address_attributes => permitted_address_attributes,
23
- :payments_attributes => permitted_payment_attributes,
24
- :shipments_attributes => permitted_shipment_attributes
21
+ bill_address_attributes: permitted_address_attributes,
22
+ ship_address_attributes: permitted_address_attributes,
23
+ payments_attributes: permitted_payment_attributes,
24
+ shipments_attributes: permitted_shipment_attributes
25
25
  ]
26
26
  end
27
27
 
28
28
  def permitted_order_attributes
29
29
  permitted_checkout_attributes + [
30
- :line_items_attributes => permitted_line_item_attributes
30
+ line_items_attributes: permitted_line_item_attributes
31
31
  ]
32
32
  end
33
33
 
34
34
  def permitted_product_attributes
35
35
  permitted_attributes.product_attributes + [
36
- :product_properties_attributes => permitted_product_properties_attributes
36
+ product_properties_attributes: permitted_product_properties_attributes
37
37
  ]
38
38
  end
39
39
  end
@@ -4,6 +4,10 @@ module Spree
4
4
  isolate_namespace Spree
5
5
  engine_name 'spree'
6
6
 
7
+ rake_tasks do
8
+ load File.join(root, "lib", "tasks", "exchanges.rake")
9
+ end
10
+
7
11
  initializer "spree.environment", :before => :load_config_initializers do |app|
8
12
  app.config.spree = Spree::Core::Environment.new
9
13
  Spree::Config = app.config.spree.preferences #legacy access
@@ -71,7 +75,10 @@ module Spree
71
75
  Spree::Promotion::Rules::Product,
72
76
  Spree::Promotion::Rules::User,
73
77
  Spree::Promotion::Rules::FirstOrder,
74
- Spree::Promotion::Rules::UserLoggedIn]
78
+ Spree::Promotion::Rules::UserLoggedIn,
79
+ Spree::Promotion::Rules::OneUsePerUser,
80
+ Spree::Promotion::Rules::Taxon,
81
+ ]
75
82
  end
76
83
 
77
84
  initializer 'spree.promo.register.promotions.actions' do |app|