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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/spree.js.coffee.erb +12 -3
- data/app/helpers/spree/base_helper.rb +4 -1
- data/app/helpers/spree/products_helper.rb +37 -6
- data/app/mailers/spree/base_mailer.rb +11 -2
- data/app/models/concerns/spree/adjustment_source.rb +3 -10
- data/app/models/concerns/spree/default_price.rb +7 -1
- data/app/models/concerns/spree/named_type.rb +1 -1
- data/app/models/concerns/spree/user_api_authentication.rb +7 -1
- data/app/models/concerns/spree/user_methods.rb +47 -0
- data/app/models/concerns/spree/user_reporting.rb +2 -2
- data/app/models/concerns/spree/vat_price_calculation.rb +47 -0
- data/app/models/spree/address.rb +8 -7
- data/app/models/spree/adjustable/adjuster/base.rb +25 -0
- data/app/models/spree/adjustable/adjuster/promotion.rb +41 -0
- data/app/models/spree/adjustable/adjuster/tax.rb +26 -0
- data/app/models/spree/adjustable/adjustments_updater.rb +22 -45
- data/app/models/spree/adjustment.rb +8 -10
- data/app/models/spree/app_configuration.rb +5 -2
- data/app/models/spree/base.rb +4 -0
- data/app/models/spree/calculator.rb +0 -5
- data/app/models/spree/calculator/default_tax.rb +2 -10
- data/app/models/spree/classification.rb +7 -3
- data/app/models/spree/country.rb +14 -3
- data/app/models/spree/credit_card.rb +21 -31
- data/app/models/spree/customer_return.rb +7 -15
- data/app/models/spree/gateway.rb +7 -6
- data/app/models/spree/image.rb +1 -1
- data/app/models/spree/inventory_unit.rb +9 -6
- data/app/models/spree/legacy_user.rb +1 -6
- data/app/models/spree/line_item.rb +69 -68
- data/app/models/spree/log_entry.rb +1 -4
- data/app/models/spree/option_type.rb +15 -6
- data/app/models/spree/option_type_prototype.rb +9 -0
- data/app/models/spree/option_value.rb +11 -3
- data/app/models/spree/option_value_variant.rb +6 -0
- data/app/models/spree/order.rb +113 -64
- data/app/models/spree/order/checkout.rb +8 -11
- data/app/models/spree/order/currency_updater.rb +1 -1
- data/app/models/spree/order/store_credit.rb +96 -0
- data/app/models/spree/order_contents.rb +6 -1
- data/app/models/spree/order_inventory.rb +4 -8
- data/app/models/spree/order_promotion.rb +6 -0
- data/app/models/spree/order_updater.rb +2 -7
- data/app/models/spree/payment.rb +46 -19
- data/app/models/spree/payment/gateway_options.rb +8 -4
- data/app/models/spree/payment_method.rb +12 -13
- data/app/models/spree/payment_method/store_credit.rb +130 -0
- data/app/models/spree/preference.rb +1 -1
- data/app/models/spree/price.rb +16 -6
- data/app/models/spree/product.rb +52 -49
- data/app/models/spree/product/scopes.rb +7 -2
- data/app/models/spree/product_option_type.rb +7 -2
- data/app/models/spree/product_promotion_rule.rb +9 -0
- data/app/models/spree/product_property.rb +8 -10
- data/app/models/spree/promotion.rb +19 -19
- data/app/models/spree/promotion/rules/product.rb +3 -1
- data/app/models/spree/promotion/rules/taxon.rb +2 -1
- data/app/models/spree/promotion/rules/user.rb +4 -4
- data/app/models/spree/promotion_action.rb +3 -3
- data/app/models/spree/promotion_category.rb +1 -1
- data/app/models/spree/promotion_rule_taxon.rb +9 -0
- data/app/models/spree/promotion_rule_user.rb +9 -0
- data/app/models/spree/property.rb +2 -1
- data/app/models/spree/property_prototype.rb +9 -0
- data/app/models/spree/prototype.rb +8 -3
- data/app/models/spree/prototype_taxon.rb +9 -0
- data/app/models/spree/refund.rb +10 -7
- data/app/models/spree/refund_reason.rb +1 -1
- data/app/models/spree/reimbursement.rb +12 -16
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +23 -6
- data/app/models/spree/reimbursement_type/store_credit.rb +28 -0
- data/app/models/spree/return_authorization.rb +8 -13
- data/app/models/spree/return_authorization_reason.rb +1 -1
- data/app/models/spree/return_item.rb +13 -12
- data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +1 -1
- data/app/models/spree/role.rb +3 -2
- data/app/models/spree/role_user.rb +6 -0
- data/app/models/spree/shipment.rb +18 -23
- data/app/models/spree/shipment_handler.rb +2 -2
- data/app/models/spree/shipping_category.rb +6 -3
- data/app/models/spree/shipping_method.rb +11 -10
- data/app/models/spree/shipping_method_zone.rb +6 -0
- data/app/models/spree/shipping_rate.rb +16 -29
- data/app/models/spree/state.rb +3 -2
- data/app/models/spree/state_change.rb +1 -1
- data/app/models/spree/stock/content_item.rb +10 -12
- data/app/models/spree/stock/coordinator.rb +13 -14
- data/app/models/spree/stock/estimator.rb +28 -30
- data/app/models/spree/stock/inventory_unit_builder.rb +1 -9
- data/app/models/spree/stock/packer.rb +1 -1
- data/app/models/spree/stock/quantifier.rb +5 -5
- data/app/models/spree/stock/splitter/backordered.rb +2 -2
- data/app/models/spree/stock_item.rb +12 -18
- data/app/models/spree/stock_location.rb +4 -7
- data/app/models/spree/stock_movement.rb +11 -9
- data/app/models/spree/stock_transfer.rb +11 -12
- data/app/models/spree/store.rb +14 -6
- data/app/models/spree/store_credit.rb +252 -0
- data/app/models/spree/store_credit_category.rb +22 -0
- data/app/models/spree/store_credit_event.rb +38 -0
- data/app/models/spree/store_credit_type.rb +6 -0
- data/app/models/spree/tax_category.rb +3 -8
- data/app/models/spree/tax_rate.rb +56 -122
- data/app/models/spree/taxon.rb +11 -5
- data/app/models/spree/tracker.rb +12 -1
- data/app/models/spree/validations/db_maximum_length_validator.rb +2 -1
- data/app/models/spree/variant.rb +82 -50
- data/app/models/spree/zone.rb +21 -17
- data/app/models/spree/zone_member.rb +6 -0
- data/app/validators/db_maximum_length_validator.rb +11 -0
- data/app/views/layouts/spree/base_mailer.html.erb +38 -781
- data/app/views/spree/order_mailer/_adjustment.html.erb +8 -0
- data/app/views/spree/order_mailer/_subtotal.html.erb +8 -0
- data/app/views/spree/order_mailer/_total.html.erb +8 -0
- data/app/views/spree/order_mailer/cancel_email.html.erb +13 -28
- data/app/views/spree/order_mailer/cancel_email.text.erb +1 -1
- data/app/views/spree/order_mailer/confirm_email.html.erb +49 -63
- data/app/views/spree/order_mailer/confirm_email.text.erb +1 -1
- data/app/views/spree/shared/_base_mailer_header.html.erb +5 -7
- data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +777 -0
- data/app/views/spree/shared/_error_messages.html.erb +1 -1
- data/app/views/spree/shared/_mailer_line_item.html.erb +12 -0
- data/app/views/spree/shipment_mailer/shipped_email.html.erb +21 -14
- data/app/views/spree/shipment_mailer/shipped_email.text.erb +3 -3
- data/config/initializers/user_class_extensions.rb +7 -38
- data/config/locales/en.yml +113 -13
- data/config/routes.rb +7 -0
- data/db/default/spree/default_reimbursement_type.rb +1 -1
- data/db/default/spree/zones.rb +4 -5
- data/db/migrate/20150118210639_create_spree_store_credits.rb +24 -0
- data/db/migrate/20150118211500_create_spree_store_credit_categories.rb +8 -0
- data/db/migrate/20150118212051_create_spree_store_credit_events.rb +17 -0
- data/db/migrate/20150118212101_create_spree_store_credit_types.rb +10 -0
- data/db/migrate/20150314013438_add_missing_indexes.rb +25 -0
- data/db/migrate/20150317174308_remove_duplicated_indexes_from_multi_columns.rb +18 -0
- data/db/migrate/20150324104002_remove_user_index_from_spree_state_changes.rb +14 -0
- data/db/migrate/20150522071831_add_position_to_spree_payment_methods.rb +5 -0
- data/db/migrate/20150626181949_add_taxable_adjustment_total_to_line_item.rb +19 -0
- data/db/migrate/20150627090949_migrate_payment_methods_display.rb +12 -0
- data/db/migrate/20150714154102_spree_payment_method_store_credits.rb +12 -0
- data/db/migrate/20150726141425_rename_has_and_belongs_to_associations_to_model_names.rb +18 -0
- data/db/migrate/20150727191614_spree_store_credit_types.rb +11 -0
- data/db/migrate/20150819154308_add_discontinued_to_products_and_variants.rb +68 -0
- data/db/migrate/20151220072838_remove_shipping_method_id_from_spree_orders.rb +13 -0
- data/db/migrate/20160207191757_add_id_column_to_earlier_habtm_tables.rb +16 -0
- data/db/migrate/20160219165458_add_indexes.rb +14 -0
- data/lib/generators/spree/dummy/templates/rails/database.yml +31 -24
- data/lib/generators/spree/dummy/templates/rails/test.rb +2 -1
- data/lib/spree/core.rb +16 -0
- data/lib/spree/core/controller_helpers/auth.rb +1 -1
- data/lib/spree/core/controller_helpers/common.rb +3 -3
- data/lib/spree/core/controller_helpers/order.rb +6 -5
- data/lib/spree/core/controller_helpers/search.rb +1 -1
- data/lib/spree/core/controller_helpers/store.rb +29 -0
- data/lib/spree/core/delegate_belongs_to.rb +2 -2
- data/lib/spree/core/engine.rb +30 -25
- data/lib/spree/core/environment.rb +1 -1
- data/lib/spree/core/importer/order.rb +37 -40
- data/lib/spree/core/number_generator.rb +52 -0
- data/lib/spree/core/product_filters.rb +1 -1
- data/lib/spree/core/search/base.rb +4 -3
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/localized_number.rb +3 -1
- data/lib/spree/permitted_attributes.rb +5 -2
- data/lib/spree/testing_support/common_rake.rb +3 -3
- data/lib/spree/testing_support/factories.rb +3 -3
- data/lib/spree/testing_support/factories/address_factory.rb +1 -1
- data/lib/spree/testing_support/factories/country_factory.rb +2 -2
- data/lib/spree/testing_support/factories/order_factory.rb +2 -2
- data/lib/spree/testing_support/factories/payment_factory.rb +5 -0
- data/lib/spree/testing_support/factories/payment_method_factory.rb +8 -0
- data/lib/spree/testing_support/factories/promotion_rule_factory.rb +5 -0
- data/lib/spree/testing_support/factories/refund_factory.rb +9 -1
- data/lib/spree/testing_support/factories/return_authorization_factory.rb +2 -0
- data/lib/spree/testing_support/factories/state_factory.rb +2 -2
- data/lib/spree/testing_support/factories/store_credit_category_factory.rb +9 -0
- data/lib/spree/testing_support/factories/store_credit_event_factory.rb +8 -0
- data/lib/spree/testing_support/factories/store_credit_factory.rb +17 -0
- data/lib/spree/testing_support/factories/store_credit_type_factory.rb +11 -0
- data/lib/spree/testing_support/factories/user_factory.rb +1 -1
- data/lib/spree/testing_support/factories/zone_member_factory.rb +6 -0
- data/lib/spree/testing_support/microdata.rb +189 -0
- data/lib/tasks/core.rake +68 -0
- data/lib/tasks/exchanges.rake +2 -2
- data/spec/fixtures/microdata.html +22 -0
- data/spec/fixtures/microdata_itemref.html +15 -0
- data/spec/fixtures/microdata_no_itemscope.html +20 -0
- data/spec/helpers/base_helper_spec.rb +64 -1
- data/spec/helpers/products_helper_spec.rb +75 -3
- data/spec/lib/i18n_spec.rb +2 -2
- data/spec/lib/search/base_spec.rb +2 -2
- data/spec/lib/spree/core/controller_helpers/auth_spec.rb +4 -2
- data/spec/lib/spree/core/controller_helpers/store_spec.rb +56 -0
- data/spec/lib/spree/core/importer/order_spec.rb +226 -123
- data/spec/lib/spree/core/number_generator_spec.rb +175 -0
- data/spec/lib/spree/core_spec.rb +23 -0
- data/spec/lib/spree/localized_number_spec.rb +10 -0
- data/spec/mailers/order_mailer_spec.rb +11 -13
- data/spec/mailers/shipment_mailer_spec.rb +26 -8
- data/spec/mailers/test_mailer_spec.rb +15 -1
- data/spec/models/option_type_prototype_spec.rb +9 -0
- data/spec/models/spree/ability_spec.rb +6 -13
- data/spec/models/spree/address_spec.rb +1 -1
- data/spec/models/spree/adjustable/adjuster/base_spec.rb +10 -0
- data/spec/models/spree/adjustable/adjuster/promotion_spec.rb +211 -0
- data/spec/models/spree/adjustable/adjuster/tax_spec.rb +86 -0
- data/spec/models/spree/adjustable/adjustments_updater_spec.rb +2 -262
- data/spec/models/spree/adjustment_spec.rb +27 -1
- data/spec/models/spree/app_configuration_spec.rb +5 -2
- data/spec/models/spree/calculator/default_tax_spec.rb +39 -14
- data/spec/models/spree/concerns/user_methods_spec.rb +55 -0
- data/spec/models/spree/concerns/vat_price_calculation_spec.rb +66 -0
- data/spec/models/spree/country_spec.rb +45 -8
- data/spec/models/spree/credit_card_spec.rb +8 -8
- data/spec/models/spree/customer_return_spec.rb +4 -26
- data/spec/models/spree/gateway_spec.rb +7 -0
- data/spec/models/spree/image_spec.rb +3 -0
- data/spec/models/spree/inventory_unit_spec.rb +1 -18
- data/spec/models/spree/line_item_spec.rb +78 -18
- data/spec/models/spree/option_type_spec.rb +2 -2
- data/spec/models/spree/option_value_spec.rb +8 -3
- data/spec/models/spree/order/checkout_spec.rb +49 -39
- data/spec/models/spree/order/currency_updater_spec.rb +3 -3
- data/spec/models/spree/order/finalizing_spec.rb +0 -3
- data/spec/models/spree/order/payment_spec.rb +1 -1
- data/spec/models/spree/order/state_machine_spec.rb +1 -6
- data/spec/models/spree/order/store_credit_spec.rb +423 -0
- data/spec/models/spree/order/updating_spec.rb +2 -2
- data/spec/models/spree/order_contents_spec.rb +42 -1
- data/spec/models/spree/order_inventory_spec.rb +27 -17
- data/spec/models/spree/order_spec.rb +65 -52
- data/spec/models/spree/payment/gateway_options_spec.rb +10 -2
- data/spec/models/spree/payment/store_credit_spec.rb +60 -0
- data/spec/models/spree/payment_method/store_credit_spec.rb +291 -0
- data/spec/models/spree/payment_method_spec.rb +22 -14
- data/spec/models/spree/payment_spec.rb +37 -44
- data/spec/models/spree/price_spec.rb +86 -0
- data/spec/models/spree/product/scopes_spec.rb +35 -0
- data/spec/models/spree/product_option_type_spec.rb +6 -2
- data/spec/models/spree/product_promotion_rule_spec.rb +9 -0
- data/spec/models/spree/product_property_spec.rb +11 -0
- data/spec/models/spree/product_spec.rb +82 -15
- data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +1 -1
- data/spec/models/spree/promotion/rules/user_spec.rb +8 -0
- data/spec/models/spree/promotion_action_spec.rb +1 -1
- data/spec/models/spree/promotion_rule_spec.rb +1 -1
- data/spec/models/spree/promotion_rule_taxon_spec.rb +9 -0
- data/spec/models/spree/promotion_rule_user_spec.rb +9 -0
- data/spec/models/spree/promotion_spec.rb +57 -36
- data/spec/models/spree/property_prototype_spec.rb +9 -0
- data/spec/models/spree/prototype_taxon_spec.rb +9 -0
- data/spec/models/spree/refund_reason_spec.rb +7 -0
- data/spec/models/spree/reimbursement_spec.rb +3 -30
- data/spec/models/spree/reimbursement_tax_calculator_spec.rb +17 -5
- data/spec/models/spree/reimbursement_type/store_credit_spec.rb +101 -0
- data/spec/models/spree/return_authorization_reason_spec.rb +7 -0
- data/spec/models/spree/return_authorization_spec.rb +2 -22
- data/spec/models/spree/return_item_spec.rb +50 -1
- data/spec/models/spree/returns_calculator_spec.rb +1 -1
- data/spec/models/spree/role_spec.rb +7 -0
- data/spec/models/spree/shipment_spec.rb +17 -17
- data/spec/models/spree/shipping_calculator_spec.rb +2 -2
- data/spec/models/spree/shipping_category_spec.rb +14 -0
- data/spec/models/spree/shipping_method_spec.rb +9 -2
- data/spec/models/spree/shipping_rate_spec.rb +40 -41
- data/spec/models/spree/state_spec.rb +12 -1
- data/spec/models/spree/stock/content_item_spec.rb +9 -0
- data/spec/models/spree/stock/estimator_spec.rb +56 -8
- data/spec/models/spree/stock/quantifier_spec.rb +61 -32
- data/spec/models/spree/stock_item_spec.rb +19 -1
- data/spec/models/spree/store_credit_event_spec.rb +101 -0
- data/spec/models/spree/store_credit_spec.rb +786 -0
- data/spec/models/spree/store_spec.rb +39 -11
- data/spec/models/spree/tax_category_spec.rb +6 -1
- data/spec/models/spree/tax_rate_spec.rb +204 -44
- data/spec/models/spree/user_spec.rb +105 -38
- data/spec/models/spree/variant_spec.rb +281 -9
- data/spec/models/spree/zone_member_spec.rb +38 -0
- data/spec/models/spree/zone_spec.rb +32 -8
- data/spec/spec_helper.rb +3 -0
- data/spec/support/concerns/{adjustment_source_spec.rb → adjustment_source.rb} +0 -0
- data/spec/support/concerns/{default_price_spec.rb → default_price.rb} +9 -0
- data/spec/validators/db_maximum_length_validator_spec.rb +22 -0
- data/spree_core.gemspec +5 -6
- metadata +99 -36
- data/CHANGELOG.md +0 -4
- data/app/models/concerns/spree/number_generator.rb +0 -39
- data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -24
data/config/routes.rb
CHANGED
@@ -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)
|
data/db/default/spree/zones.rb
CHANGED
@@ -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
|
-
|
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,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,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,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
|
-
|
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
|
-
|
33
|
+
<<: *mysql
|
23
34
|
database: <%= database_prefix %><%= options[:lib_name] %>_spree_test
|
24
|
-
encoding: utf8
|
25
35
|
production:
|
26
|
-
|
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
|
-
|
40
|
+
postgres: &postgres
|
32
41
|
adapter: postgresql
|
33
|
-
|
34
|
-
username: postgres
|
35
|
-
|
36
|
-
<% unless
|
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
|
-
|
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
|
-
|
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
|