solidus_core 1.0.7 → 1.1.0.beta1
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.
- checksums.yaml +4 -4
- data/app/controllers/spree/base_controller.rb +1 -2
- data/app/helpers/spree/base_helper.rb +4 -5
- data/app/helpers/spree/products_helper.rb +0 -8
- data/app/mailers/spree/carton_mailer.rb +17 -5
- data/app/mailers/spree/order_mailer.rb +12 -4
- data/app/models/concerns/spree/adjustment_source.rb +7 -8
- data/app/models/concerns/spree/default_price.rb +8 -2
- data/app/models/concerns/spree/named_type.rb +1 -1
- data/app/models/concerns/spree/ordered_property_value_list.rb +28 -0
- data/app/models/concerns/spree/user_address_book.rb +125 -0
- data/app/models/concerns/spree/user_api_authentication.rb +6 -2
- data/app/models/concerns/spree/user_methods.rb +5 -6
- data/app/models/spree/ability.rb +1 -38
- data/app/models/spree/address.rb +79 -36
- data/app/models/spree/adjustment.rb +74 -25
- data/app/models/spree/adjustment_reason.rb +1 -1
- data/app/models/spree/app_configuration.rb +35 -0
- data/app/models/spree/carton.rb +3 -3
- data/app/models/spree/country.rb +7 -1
- data/app/models/spree/credit_card.rb +5 -1
- data/app/models/spree/gateway.rb +0 -8
- data/app/models/spree/inventory_unit.rb +1 -1
- data/app/models/spree/item_adjustments.rb +1 -1
- data/app/models/spree/line_item_action.rb +1 -1
- data/app/models/spree/option_type.rb +3 -2
- data/app/models/spree/option_value.rb +1 -1
- data/app/models/spree/option_values_variant.rb +1 -1
- data/app/models/spree/order.rb +28 -56
- data/app/models/spree/order/checkout.rb +18 -20
- data/app/models/spree/order_mutex.rb +1 -1
- data/app/models/spree/order_promotion.rb +1 -1
- data/app/models/spree/order_shipping.rb +6 -12
- data/app/models/spree/order_stock_location.rb +1 -1
- data/app/models/spree/payment.rb +3 -14
- data/app/models/spree/payment/processing.rb +7 -14
- data/app/models/spree/payment_method.rb +5 -5
- data/app/models/spree/permission_sets/default_customer.rb +31 -0
- data/app/models/spree/permission_sets/order_display.rb +4 -0
- data/app/models/spree/permission_sets/order_management.rb +3 -0
- data/app/models/spree/permission_sets/promotion_display.rb +2 -1
- data/app/models/spree/permission_sets/restricted_stock_display.rb +16 -0
- data/app/models/spree/permission_sets/restricted_stock_management.rb +16 -0
- data/app/models/spree/permission_sets/restricted_stock_transfer_display.rb +17 -0
- data/app/models/spree/permission_sets/restricted_stock_transfer_management.rb +51 -0
- data/app/models/spree/permission_sets/stock_display.rb +1 -1
- data/app/models/spree/permission_sets/stock_management.rb +1 -2
- data/app/models/spree/permission_sets/stock_transfer_display.rb +10 -0
- data/app/models/spree/permission_sets/stock_transfer_management.rb +11 -0
- data/app/models/spree/permission_sets/super_user.rb +9 -0
- data/app/models/spree/product.rb +66 -28
- data/app/models/spree/product/scopes.rb +7 -22
- data/app/models/spree/product_option_type.rb +1 -1
- data/app/models/spree/product_promotion_rule.rb +6 -0
- data/app/models/spree/product_property.rb +2 -20
- data/app/models/spree/promotion/rules/product.rb +2 -1
- data/app/models/spree/refund.rb +0 -10
- data/app/models/spree/reimbursement.rb +1 -1
- data/app/models/spree/return_item.rb +5 -3
- data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +13 -4
- data/app/models/spree/return_item/exchange_variant_eligibility/same_product.rb +2 -2
- data/app/models/spree/return_reason.rb +1 -1
- data/app/models/spree/role.rb +1 -1
- data/app/models/spree/role_user.rb +1 -1
- data/app/models/spree/shipment.rb +13 -4
- data/app/models/spree/shipping_manifest.rb +9 -3
- data/app/models/spree/shipping_method.rb +2 -3
- data/app/models/spree/shipping_method_zone.rb +6 -0
- data/app/models/spree/state.rb +1 -1
- data/app/models/spree/stock_item.rb +15 -3
- data/app/models/spree/stock_movement.rb +1 -1
- data/app/models/spree/store.rb +3 -0
- data/app/models/spree/store_credit.rb +1 -1
- data/app/models/spree/store_credit_category.rb +1 -1
- data/app/models/spree/store_credit_event.rb +1 -1
- data/app/models/spree/store_credit_type.rb +1 -1
- data/app/models/spree/store_credit_update_reason.rb +1 -1
- data/app/models/spree/store_payment_method.rb +6 -0
- data/app/models/spree/tax_rate.rb +3 -10
- data/app/models/spree/taxonomy.rb +1 -1
- data/app/models/spree/transfer_item.rb +1 -1
- data/app/models/spree/unit_cancel.rb +2 -2
- data/app/models/spree/user_address.rb +21 -0
- data/app/models/spree/user_stock_location.rb +1 -1
- data/app/models/spree/variant.rb +28 -13
- data/app/models/spree/variant_property_rule.rb +42 -0
- data/app/models/spree/variant_property_rule_condition.rb +8 -0
- data/app/models/spree/variant_property_rule_value.rb +8 -0
- data/app/models/spree/zone.rb +4 -2
- data/app/views/spree/carton_mailer/shipped_email.text.erb +1 -1
- data/config/locales/en.yml +13 -0
- data/db/default/spree/store_credit.rb +0 -1
- data/db/default/spree/zones.rb +1 -1
- data/db/migrate/20130228210442_create_shipping_method_zone.rb +1 -1
- data/db/migrate/20150121022521_remove_environment_from_payment_method.rb +6 -0
- data/db/migrate/20150506181611_create_spree_store_credit_payment_method.rb +9 -5
- data/db/migrate/20150731201146_add_spree_user_addresses.rb +16 -0
- data/db/migrate/20150811210350_remove_mandatory_from_adjustments.rb +5 -0
- data/db/migrate/20150811211025_add_finalized_to_spree_adjustments.rb +11 -0
- data/db/migrate/20150820160821_add_store_payment_methods.rb +10 -0
- data/db/migrate/20150824213633_convert_habtm_to_hmt_for_shipping_methods_zones.rb +17 -0
- data/db/migrate/20150824214129_convert_habtm_to_hmt_for_products_promotion_rules.rb +17 -0
- data/db/migrate/20150825204216_drop_spree_gateways.rb +20 -0
- data/db/migrate/20150909123605_create_variant_properties_and_rules.rb +28 -0
- data/lib/generators/spree/dummy/dummy_generator.rb +1 -1
- data/lib/generators/spree/install/templates/config/initializers/spree.rb +4 -3
- data/lib/spree/core.rb +4 -0
- data/lib/spree/core/controller_helpers/payment_parameters.rb +67 -0
- data/lib/spree/core/delegate_belongs_to.rb +1 -0
- data/lib/spree/core/engine.rb +9 -1
- data/lib/spree/core/importer/order.rb +1 -1
- data/lib/spree/core/role_configuration.rb +1 -1
- data/lib/spree/core/search/variant.rb +20 -2
- data/lib/spree/core/unreturned_item_charger.rb +21 -16
- data/lib/spree/i18n.rb +6 -24
- data/lib/spree/mailer_previews/carton_preview.rb +10 -0
- data/lib/spree/mailer_previews/order_preview.rb +18 -0
- data/lib/spree/permitted_attributes.rb +4 -1
- data/lib/spree/testing_support/capybara_ext.rb +2 -1
- data/lib/spree/testing_support/factories/address_factory.rb +9 -1
- data/lib/spree/testing_support/factories/credit_card_factory.rb +1 -0
- data/lib/spree/testing_support/factories/image_factory.rb +5 -0
- data/lib/spree/testing_support/factories/payment_method_factory.rb +4 -8
- data/lib/spree/testing_support/factories/user_factory.rb +8 -2
- data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +6 -0
- data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +16 -0
- data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +6 -0
- data/lib/tasks/migrations/migrate_user_addresses.rake +29 -0
- data/vendor/assets/javascripts/jquery-migrate-1.0.0.js +498 -0
- metadata +40 -238
- data/CHANGELOG.md +0 -1
- data/Gemfile +0 -3
- data/Rakefile +0 -16
- data/app/models/concerns/spree/user_address.rb +0 -30
- data/app/models/spree/permission_sets/restricted_transfer_management.rb +0 -35
- data/app/views/spree/admin/orders/customer_details/_autocomplete.js.erb +0 -19
- data/lib/spree/i18n/base.rb +0 -17
- data/lib/spree/i18n/initializer.rb +0 -1
- data/lib/spree/testing_support/mail.rb +0 -20
- data/script/rails +0 -9
- data/solidus_core.gemspec +0 -48
- data/spec/fixtures/thinking-cat.jpg +0 -0
- data/spec/helpers/base_helper_spec.rb +0 -173
- data/spec/helpers/order_helper_spec.rb +0 -12
- data/spec/helpers/products_helper_spec.rb +0 -220
- data/spec/helpers/taxons_helper_spec.rb +0 -17
- data/spec/lib/calculated_adjustments_spec.rb +0 -7
- data/spec/lib/i18n_spec.rb +0 -123
- data/spec/lib/search/base_spec.rb +0 -86
- data/spec/lib/search/variant_spec.rb +0 -92
- data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -66
- data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -92
- data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -17
- data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -16
- data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -39
- data/spec/lib/spree/core/current_store_spec.rb +0 -36
- data/spec/lib/spree/core/delegate_belongs_to_spec.rb +0 -22
- data/spec/lib/spree/core/importer/order_spec.rb +0 -431
- data/spec/lib/spree/core/role_configuration_spec.rb +0 -138
- data/spec/lib/spree/core/validators/email_spec.rb +0 -48
- data/spec/lib/spree/localized_number_spec.rb +0 -38
- data/spec/lib/spree/migrations_spec.rb +0 -36
- data/spec/lib/spree/money_spec.rb +0 -127
- data/spec/lib/tasks/exchanges_spec.rb +0 -231
- data/spec/lib/tasks/migrations/copy_shipped_shipments_to_cartons_spec.rb +0 -115
- data/spec/lib/tasks/order_capturing_spec.rb +0 -56
- data/spec/mailers/carton_mailer_spec.rb +0 -43
- data/spec/mailers/order_mailer_spec.rb +0 -122
- data/spec/mailers/reimbursement_mailer_spec.rb +0 -40
- data/spec/mailers/test_mailer_spec.rb +0 -15
- data/spec/models/spree/ability_spec.rb +0 -276
- data/spec/models/spree/address_spec.rb +0 -250
- data/spec/models/spree/adjustment_reason_spec.rb +0 -13
- data/spec/models/spree/adjustment_spec.rb +0 -177
- data/spec/models/spree/app_configuration_spec.rb +0 -20
- data/spec/models/spree/asset_spec.rb +0 -24
- data/spec/models/spree/calculator/default_tax_spec.rb +0 -127
- data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -25
- data/spec/models/spree/calculator/flat_rate_spec.rb +0 -47
- data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -41
- data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -15
- data/spec/models/spree/calculator/price_sack_spec.rb +0 -30
- data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -51
- data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -23
- data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -13
- data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -52
- data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -20
- data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -30
- data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -36
- data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -47
- data/spec/models/spree/calculator_spec.rb +0 -36
- data/spec/models/spree/carton_spec.rb +0 -133
- data/spec/models/spree/classification_spec.rb +0 -15
- data/spec/models/spree/concerns/display_money_spec.rb +0 -43
- data/spec/models/spree/concerns/user_methods_spec.rb +0 -41
- data/spec/models/spree/credit_card_spec.rb +0 -334
- data/spec/models/spree/customer_return_spec.rb +0 -276
- data/spec/models/spree/exchange_spec.rb +0 -79
- data/spec/models/spree/gateway/bogus_simple.rb +0 -20
- data/spec/models/spree/gateway/bogus_spec.rb +0 -13
- data/spec/models/spree/gateway_spec.rb +0 -82
- data/spec/models/spree/inventory_unit_spec.rb +0 -307
- data/spec/models/spree/item_adjustments_spec.rb +0 -256
- data/spec/models/spree/line_item_spec.rb +0 -191
- data/spec/models/spree/option_type_spec.rb +0 -14
- data/spec/models/spree/option_value_spec.rb +0 -22
- data/spec/models/spree/order/address_spec.rb +0 -50
- data/spec/models/spree/order/adjustments_spec.rb +0 -39
- data/spec/models/spree/order/callbacks_spec.rb +0 -42
- data/spec/models/spree/order/checkout_spec.rb +0 -902
- data/spec/models/spree/order/currency_updater_spec.rb +0 -32
- data/spec/models/spree/order/finalizing_spec.rb +0 -111
- data/spec/models/spree/order/payment_spec.rb +0 -210
- data/spec/models/spree/order/risk_assessment_spec.rb +0 -68
- data/spec/models/spree/order/state_machine_spec.rb +0 -221
- data/spec/models/spree/order/tax_spec.rb +0 -84
- data/spec/models/spree/order/totals_spec.rb +0 -24
- data/spec/models/spree/order/updating_spec.rb +0 -18
- data/spec/models/spree/order/validations_spec.rb +0 -15
- data/spec/models/spree/order_cancellations_spec.rb +0 -120
- data/spec/models/spree/order_capturing_spec.rb +0 -116
- data/spec/models/spree/order_contents_spec.rb +0 -265
- data/spec/models/spree/order_inventory_spec.rb +0 -228
- data/spec/models/spree/order_mutex_spec.rb +0 -85
- data/spec/models/spree/order_promotion_spec.rb +0 -31
- data/spec/models/spree/order_shipping_spec.rb +0 -247
- data/spec/models/spree/order_spec.rb +0 -1464
- data/spec/models/spree/order_stock_location_spec.rb +0 -18
- data/spec/models/spree/order_updater_spec.rb +0 -299
- data/spec/models/spree/payment_method/store_credit_spec.rb +0 -294
- data/spec/models/spree/payment_method_spec.rb +0 -96
- data/spec/models/spree/payment_spec.rb +0 -1045
- data/spec/models/spree/permission_sets/base_spec.rb +0 -12
- data/spec/models/spree/permission_sets/configuration_display.rb +0 -82
- data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -50
- data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -22
- data/spec/models/spree/permission_sets/order_display_spec.rb +0 -49
- data/spec/models/spree/permission_sets/order_management_spec.rb +0 -36
- data/spec/models/spree/permission_sets/product_display_spec.rb +0 -60
- data/spec/models/spree/permission_sets/product_management_spec.rb +0 -40
- data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -34
- data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -26
- data/spec/models/spree/permission_sets/report_display_spec.rb +0 -24
- data/spec/models/spree/permission_sets/restricted_transfer_management_spec.rb +0 -132
- data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -26
- data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -24
- data/spec/models/spree/permission_sets/user_display_spec.rb +0 -36
- data/spec/models/spree/permission_sets/user_management_spec.rb +0 -28
- data/spec/models/spree/preference_spec.rb +0 -80
- data/spec/models/spree/preferences/configuration_spec.rb +0 -30
- data/spec/models/spree/preferences/preferable_spec.rb +0 -294
- data/spec/models/spree/preferences/scoped_store_spec.rb +0 -58
- data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -78
- data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -60
- data/spec/models/spree/preferences/store_spec.rb +0 -39
- data/spec/models/spree/price_spec.rb +0 -42
- data/spec/models/spree/product/scopes_spec.rb +0 -148
- data/spec/models/spree/product_duplicator_spec.rb +0 -103
- data/spec/models/spree/product_filter_spec.rb +0 -26
- data/spec/models/spree/product_property_spec.rb +0 -20
- data/spec/models/spree/product_spec.rb +0 -437
- data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -96
- data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -165
- data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -115
- data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -40
- data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -75
- data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -67
- data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -70
- data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -42
- data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -94
- data/spec/models/spree/promotion/rules/product_spec.rb +0 -143
- data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -102
- data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -27
- data/spec/models/spree/promotion/rules/user_spec.rb +0 -37
- data/spec/models/spree/promotion_builder_spec.rb +0 -118
- data/spec/models/spree/promotion_category_spec.rb +0 -17
- data/spec/models/spree/promotion_code/code_builder_spec.rb +0 -79
- data/spec/models/spree/promotion_code_spec.rb +0 -187
- data/spec/models/spree/promotion_handler/cart_spec.rb +0 -114
- data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -335
- data/spec/models/spree/promotion_handler/free_shipping_spec.rb +0 -47
- data/spec/models/spree/promotion_handler/page_spec.rb +0 -44
- data/spec/models/spree/promotion_rule_spec.rb +0 -28
- data/spec/models/spree/promotion_spec.rb +0 -767
- data/spec/models/spree/refund_spec.rb +0 -204
- data/spec/models/spree/reimbursement/credit_spec.rb +0 -36
- data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -140
- data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -83
- data/spec/models/spree/reimbursement_performer_spec.rb +0 -30
- data/spec/models/spree/reimbursement_spec.rb +0 -231
- data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -51
- data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -53
- data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -46
- data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -107
- data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -97
- data/spec/models/spree/return_authorization_spec.rb +0 -290
- data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -77
- data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -58
- data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -85
- data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -32
- data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -29
- data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -35
- data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -65
- data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
- data/spec/models/spree/return_item_spec.rb +0 -775
- data/spec/models/spree/returns_calculator_spec.rb +0 -14
- data/spec/models/spree/shipment_spec.rb +0 -709
- data/spec/models/spree/shipping_calculator_spec.rb +0 -45
- data/spec/models/spree/shipping_method_spec.rb +0 -88
- data/spec/models/spree/shipping_rate_spec.rb +0 -142
- data/spec/models/spree/state_spec.rb +0 -14
- data/spec/models/spree/stock/availability_validator_spec.rb +0 -83
- data/spec/models/spree/stock/coordinator_spec.rb +0 -116
- data/spec/models/spree/stock/differentiator_spec.rb +0 -39
- data/spec/models/spree/stock/estimator_spec.rb +0 -146
- data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -38
- data/spec/models/spree/stock/package_spec.rb +0 -163
- data/spec/models/spree/stock/packer_spec.rb +0 -91
- data/spec/models/spree/stock/prioritizer_spec.rb +0 -125
- data/spec/models/spree/stock/quantifier_spec.rb +0 -115
- data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -29
- data/spec/models/spree/stock/splitter/base_spec.rb +0 -21
- data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -50
- data/spec/models/spree/stock/splitter/weight_spec.rb +0 -29
- data/spec/models/spree/stock_item_spec.rb +0 -426
- data/spec/models/spree/stock_location_spec.rb +0 -279
- data/spec/models/spree/stock_movement_spec.rb +0 -56
- data/spec/models/spree/stock_transfer_spec.rb +0 -290
- data/spec/models/spree/store_credit_category_spec.rb +0 -17
- data/spec/models/spree/store_credit_event_spec.rb +0 -314
- data/spec/models/spree/store_credit_spec.rb +0 -876
- data/spec/models/spree/store_spec.rb +0 -55
- data/spec/models/spree/tax_category_spec.rb +0 -27
- data/spec/models/spree/tax_rate_spec.rb +0 -378
- data/spec/models/spree/taxon_spec.rb +0 -74
- data/spec/models/spree/taxonomy_spec.rb +0 -18
- data/spec/models/spree/tracker_spec.rb +0 -21
- data/spec/models/spree/transfer_item_spec.rb +0 -264
- data/spec/models/spree/unit_cancel_spec.rb +0 -148
- data/spec/models/spree/user_spec.rb +0 -223
- data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -23
- data/spec/models/spree/variant/scopes_spec.rb +0 -55
- data/spec/models/spree/variant_spec.rb +0 -546
- data/spec/models/spree/zone_spec.rb +0 -305
- data/spec/spec_helper.rb +0 -78
- data/spec/support/big_decimal.rb +0 -5
- data/spec/support/concerns/default_price.rb +0 -34
- data/spec/support/dummy_ability.rb +0 -4
- data/spec/support/test_gateway.rb +0 -2
data/app/models/spree/address.rb
CHANGED
|
@@ -5,11 +5,7 @@ module Spree
|
|
|
5
5
|
belongs_to :country, class_name: "Spree::Country"
|
|
6
6
|
belongs_to :state, class_name: "Spree::State"
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
has_many :cartons, inverse_of: :address
|
|
10
|
-
has_many :credit_cards, inverse_of: :address
|
|
11
|
-
|
|
12
|
-
validates :firstname, :lastname, :address1, :city, :country, presence: true
|
|
8
|
+
validates :firstname, :lastname, :address1, :city, :country_id, presence: true
|
|
13
9
|
validates :zipcode, presence: true, if: :require_zipcode?
|
|
14
10
|
validates :phone, presence: true, if: :require_phone?
|
|
15
11
|
|
|
@@ -18,22 +14,70 @@ module Spree
|
|
|
18
14
|
alias_attribute :first_name, :firstname
|
|
19
15
|
alias_attribute :last_name, :lastname
|
|
20
16
|
|
|
17
|
+
DB_ONLY_ATTRS = %w(id updated_at created_at)
|
|
21
18
|
|
|
22
19
|
self.whitelisted_ransackable_attributes = %w[firstname lastname]
|
|
23
20
|
|
|
21
|
+
scope :with_values, ->(attributes) do
|
|
22
|
+
where(value_attributes(attributes))
|
|
23
|
+
end
|
|
24
|
+
|
|
24
25
|
def self.build_default
|
|
25
|
-
country
|
|
26
|
-
new(country: country)
|
|
26
|
+
new(country: Spree::Country.default)
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
def self.default(user = nil, kind = "bill")
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
ActiveSupport::Deprecation.warn("Address.default is deprecated. Use User.default_address or Address.build_default", caller)
|
|
31
|
+
if user
|
|
32
|
+
user.send(:"#{kind}_address") || build_default
|
|
32
33
|
else
|
|
33
34
|
build_default
|
|
34
35
|
end
|
|
35
36
|
end
|
|
36
37
|
|
|
38
|
+
# @return [Address] an equal address already in the database or a newly created one
|
|
39
|
+
def self.factory(attributes)
|
|
40
|
+
full_attributes = value_attributes(column_defaults, new(attributes).attributes)
|
|
41
|
+
find_or_initialize_by(full_attributes)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# @return [Address] address from existing address plus new_attributes as diff
|
|
45
|
+
# @note, this may return existing_address if there are no changes to value equality
|
|
46
|
+
def self.immutable_merge(existing_address, new_attributes)
|
|
47
|
+
return factory(new_attributes) if existing_address.nil?
|
|
48
|
+
|
|
49
|
+
merged_attributes = value_attributes(existing_address.attributes, new_attributes)
|
|
50
|
+
new_address = factory(merged_attributes)
|
|
51
|
+
if existing_address == new_address
|
|
52
|
+
existing_address
|
|
53
|
+
else
|
|
54
|
+
new_address
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# @return [Hash] hash of attributes contributing to value equality with optional merge
|
|
59
|
+
def self.value_attributes(base_attributes, merge_attributes = nil)
|
|
60
|
+
# dup because we may modify firstname/lastname.
|
|
61
|
+
base = base_attributes.dup
|
|
62
|
+
|
|
63
|
+
base.stringify_keys!
|
|
64
|
+
|
|
65
|
+
if merge_attributes
|
|
66
|
+
base.merge!(merge_attributes.stringify_keys)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# TODO: Deprecate these aliased attributes
|
|
70
|
+
base['firstname'] = base.delete('first_name') if base.key?('first_name')
|
|
71
|
+
base['lastname'] = base.delete('last_name') if base.key?('last_name')
|
|
72
|
+
|
|
73
|
+
base.except!(*DB_ONLY_ATTRS)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# @return [Hash] hash of attributes contributing to value equality
|
|
77
|
+
def value_attributes
|
|
78
|
+
self.class.value_attributes(attributes)
|
|
79
|
+
end
|
|
80
|
+
|
|
37
81
|
# @return [String] the full name on this address
|
|
38
82
|
def full_name
|
|
39
83
|
"#{firstname} #{lastname}".strip
|
|
@@ -44,45 +88,30 @@ module Spree
|
|
|
44
88
|
state.try(:abbr) || state.try(:name) || state_name
|
|
45
89
|
end
|
|
46
90
|
|
|
47
|
-
# @param other [Spree::Address, nil] the address we are comparing with
|
|
48
|
-
# @return [Boolean] true if this fields on this address match the fields on
|
|
49
|
-
# the other address
|
|
50
|
-
def same_as?(other)
|
|
51
|
-
return false if other.nil?
|
|
52
|
-
attributes.except('id', 'updated_at', 'created_at') == other.attributes.except('id', 'updated_at', 'created_at')
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
alias same_as same_as?
|
|
56
|
-
|
|
57
|
-
# @return [String] the full name on the address followed by the first line
|
|
58
|
-
# of the address
|
|
59
91
|
def to_s
|
|
60
92
|
"#{full_name}: #{address1}"
|
|
61
93
|
end
|
|
62
94
|
|
|
63
|
-
# @return [Spree::Address] a new address that is the same_as? this address
|
|
64
|
-
def clone
|
|
65
|
-
ActiveSupport::Deprecation.warn "Spree::Address.clone is deprecated and may be removed from future releases, Use Spree::Address.dup instead", caller
|
|
66
|
-
self.dup
|
|
67
|
-
end
|
|
68
|
-
|
|
69
95
|
# @note This compares the addresses based on only the fields that make up
|
|
70
|
-
# the logical "address" and excludes
|
|
71
|
-
# include the order IDs in the comparison
|
|
96
|
+
# the logical "address" and excludes the database specific fields (id, created_at, updated_at).
|
|
72
97
|
# @return [Boolean] true if the two addresses have the same address fields
|
|
73
98
|
def ==(other_address)
|
|
74
|
-
|
|
75
|
-
|
|
99
|
+
return false unless other_address && other_address.respond_to?(:value_attributes)
|
|
100
|
+
self.value_attributes == other_address.value_attributes
|
|
101
|
+
end
|
|
76
102
|
|
|
77
|
-
|
|
103
|
+
def same_as?(other_address)
|
|
104
|
+
ActiveSupport::Deprecation.warn("Address.same_as? is deprecated. It's equivalent to Address.==", caller)
|
|
105
|
+
self == other_address
|
|
106
|
+
end
|
|
78
107
|
|
|
79
|
-
|
|
108
|
+
def same_as(other_address)
|
|
109
|
+
ActiveSupport::Deprecation.warn("Address.same_as is deprecated. It's equivalent to Address.==", caller)
|
|
110
|
+
self == other_address
|
|
80
111
|
end
|
|
81
112
|
|
|
82
|
-
# @return [Boolean] true if the order is missing all of the address fields
|
|
83
|
-
# are nil
|
|
84
113
|
def empty?
|
|
85
|
-
attributes.except('id', 'created_at', 'updated_at', '
|
|
114
|
+
attributes.except('id', 'created_at', 'updated_at', 'country_id').all? { |_, v| v.nil? }
|
|
86
115
|
end
|
|
87
116
|
|
|
88
117
|
# @return [Hash] an ActiveMerchant compatible address hash
|
|
@@ -112,6 +141,20 @@ module Spree
|
|
|
112
141
|
true
|
|
113
142
|
end
|
|
114
143
|
|
|
144
|
+
# This is set in order to preserve immutability of Addresses. Use #dup to create
|
|
145
|
+
# new records as required, but it probably won't be required as often as you think.
|
|
146
|
+
# Since addresses do not change, you won't accidentally alter historical data.
|
|
147
|
+
def readonly?
|
|
148
|
+
persisted?
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# @param iso [String] 2 letter Country ISO
|
|
152
|
+
# @return [Country] setter that sets self.country to the Country with a matching 2 letter iso
|
|
153
|
+
# @raise [ActiveRecord::RecordNotFound] if country with the iso doesn't exist
|
|
154
|
+
def country_iso=(iso)
|
|
155
|
+
self.country = Country.find_by!(iso: iso)
|
|
156
|
+
end
|
|
157
|
+
|
|
115
158
|
private
|
|
116
159
|
def state_validate
|
|
117
160
|
# Skip state validation without country (also required)
|
|
@@ -7,16 +7,7 @@ module Spree
|
|
|
7
7
|
#
|
|
8
8
|
# == Boolean attributes
|
|
9
9
|
#
|
|
10
|
-
# 1. *
|
|
11
|
-
#
|
|
12
|
-
# If this flag is set to true then it means the the charge is required and
|
|
13
|
-
# will not be removed from the order, even if the amount is zero. In other
|
|
14
|
-
# words a record will be created even if the amount is zero. This is
|
|
15
|
-
# useful for representing things such as shipping and tax charges where
|
|
16
|
-
# you may want to make it explicitly clear that no charge was made for
|
|
17
|
-
# such things.
|
|
18
|
-
#
|
|
19
|
-
# 2. *eligible?*
|
|
10
|
+
# 1. *eligible?*
|
|
20
11
|
#
|
|
21
12
|
# This boolean attributes stores whether this adjustment is currently
|
|
22
13
|
# eligible for its order. Only eligible adjustments count towards the
|
|
@@ -35,21 +26,19 @@ module Spree
|
|
|
35
26
|
validates :amount, numericality: true
|
|
36
27
|
validates :promotion_code, presence: true, if: :require_promotion_code?
|
|
37
28
|
|
|
38
|
-
state_machine :state, initial: :open do
|
|
39
|
-
event :close do
|
|
40
|
-
transition from: :open, to: :closed
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
event :open do
|
|
44
|
-
transition from: :closed, to: :open
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
|
|
48
29
|
after_create :update_adjustable_adjustment_total
|
|
49
30
|
after_destroy :update_adjustable_adjustment_total
|
|
50
31
|
|
|
51
|
-
scope :
|
|
52
|
-
scope :
|
|
32
|
+
scope :not_finalized, -> { where(finalized: false) }
|
|
33
|
+
scope :open, -> do
|
|
34
|
+
ActiveSupport::Deprecation.warn "Adjustment.open is deprecated. Instead use Adjustment.not_finalized", caller
|
|
35
|
+
where(finalized: false)
|
|
36
|
+
end
|
|
37
|
+
scope :finalized, -> { where(finalized: true) }
|
|
38
|
+
scope :closed, -> do
|
|
39
|
+
ActiveSupport::Deprecation.warn "Adjustment.closed is deprecated. Instead use Adjustment.finalized", caller
|
|
40
|
+
where(finalized: true)
|
|
41
|
+
end
|
|
53
42
|
scope :cancellation, -> { where(source_type: 'Spree::UnitCancel') }
|
|
54
43
|
scope :tax, -> { where(source_type: 'Spree::TaxRate') }
|
|
55
44
|
scope :non_tax, -> do
|
|
@@ -58,7 +47,6 @@ module Spree
|
|
|
58
47
|
end
|
|
59
48
|
scope :price, -> { where(adjustable_type: 'Spree::LineItem') }
|
|
60
49
|
scope :shipping, -> { where(adjustable_type: 'Spree::Shipment') }
|
|
61
|
-
scope :optional, -> { where(mandatory: false) }
|
|
62
50
|
scope :eligible, -> { where(eligible: true) }
|
|
63
51
|
scope :charge, -> { where("#{quoted_table_name}.amount >= 0") }
|
|
64
52
|
scope :credit, -> { where("#{quoted_table_name}.amount < 0") }
|
|
@@ -72,9 +60,70 @@ module Spree
|
|
|
72
60
|
extend DisplayMoney
|
|
73
61
|
money_methods :amount
|
|
74
62
|
|
|
63
|
+
def finalize!
|
|
64
|
+
update_attributes!(finalized: true)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def unfinalize!
|
|
68
|
+
update_attributes!(finalized: false)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def finalize
|
|
72
|
+
update_attributes(finalized: true)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def unfinalize
|
|
76
|
+
update_attributes(finalized: false)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Deprecated methods
|
|
80
|
+
def state
|
|
81
|
+
ActiveSupport::Deprecation.warn "Adjustment#state is deprecated. Instead use Adjustment#finalized?", caller
|
|
82
|
+
finalized? ? "closed" : "open"
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def state=(new_state)
|
|
86
|
+
ActiveSupport::Deprecation.warn "Adjustment#state= is deprecated. Instead use Adjustment#finalized=", caller
|
|
87
|
+
case new_state
|
|
88
|
+
when "open"
|
|
89
|
+
self.finalized = false
|
|
90
|
+
when "closed"
|
|
91
|
+
self.finalized = true
|
|
92
|
+
else
|
|
93
|
+
raise "invaliid adjustment state #{new_state}"
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def open?
|
|
98
|
+
ActiveSupport::Deprecation.warn "Adjustment#open? is deprecated. Instead use Adjustment#finalized?", caller
|
|
99
|
+
!closed?
|
|
100
|
+
end
|
|
101
|
+
|
|
75
102
|
def closed?
|
|
76
|
-
|
|
103
|
+
ActiveSupport::Deprecation.warn "Adjustment#closed? is deprecated. Instead use Adjustment#finalized?", caller
|
|
104
|
+
finalized?
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def open
|
|
108
|
+
ActiveSupport::Deprecation.warn "Adjustment#open is deprecated. Instead use Adjustment#unfinalize", caller
|
|
109
|
+
unfinalize
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def open!
|
|
113
|
+
ActiveSupport::Deprecation.warn "Adjustment#open! is deprecated. Instead use Adjustment#unfinalize!", caller
|
|
114
|
+
unfinalize!
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def close
|
|
118
|
+
ActiveSupport::Deprecation.warn "Adjustment#close is deprecated. Instead use Adjustment#finalize", caller
|
|
119
|
+
finalize
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def close!
|
|
123
|
+
ActiveSupport::Deprecation.warn "Adjustment#close! is deprecated. Instead use Adjustment#finalize!", caller
|
|
124
|
+
finalize!
|
|
77
125
|
end
|
|
126
|
+
# End deprecated methods
|
|
78
127
|
|
|
79
128
|
def currency
|
|
80
129
|
adjustable ? adjustable.currency : Spree::Config[:currency]
|
|
@@ -107,7 +156,7 @@ module Spree
|
|
|
107
156
|
if target
|
|
108
157
|
ActiveSupport::Deprecation.warn("Passing a target to Adjustment#update! is deprecated. The adjustment will use the correct target from it's adjustable association.", caller)
|
|
109
158
|
end
|
|
110
|
-
return amount if
|
|
159
|
+
return amount if finalized?
|
|
111
160
|
|
|
112
161
|
# If the adjustment has no source, do not attempt to re-calculate the amount.
|
|
113
162
|
# Chances are likely that this was a manually created adjustment in the admin backend.
|
|
@@ -80,9 +80,25 @@ module Spree
|
|
|
80
80
|
# quantity. Setting this to true should make operations on inventory
|
|
81
81
|
# faster.
|
|
82
82
|
# (default: +false+)
|
|
83
|
+
# @deprecated - use inventory_cache_threshold instead
|
|
83
84
|
# @return [Boolean]
|
|
84
85
|
preference :binary_inventory_cache, :boolean, default: false
|
|
85
86
|
|
|
87
|
+
# @!attribute [rw] completable_order_created_cutoff
|
|
88
|
+
# @return [Integer] the number of days to look back for created orders which get returned to the user as last completed
|
|
89
|
+
preference :completable_order_created_cutoff_days, :integer, default: nil
|
|
90
|
+
|
|
91
|
+
# @!attribute [rw] completable_order_created_cutoff
|
|
92
|
+
# @return [Integer] the number of days to look back for updated orders which get returned to the user as last completed
|
|
93
|
+
preference :completable_order_updated_cutoff_days, :integer, default: nil
|
|
94
|
+
|
|
95
|
+
# @!attribute [rw] inventory_cache_threshold
|
|
96
|
+
# Only invalidate product caches when the count on hand for a stock item
|
|
97
|
+
# falls below or rises about the inventory_cache_threshold. When undefined, the
|
|
98
|
+
# product caches will be invalidated anytime the count on hand is changed.
|
|
99
|
+
# @return [Integer]
|
|
100
|
+
preference :inventory_cache_threshold, :integer
|
|
101
|
+
|
|
86
102
|
# @!attribute [rw] checkout_zone
|
|
87
103
|
# @return [String] Name of a {Zone}, which limits available countries to those included in that zone. (default: +nil+)
|
|
88
104
|
preference :checkout_zone, :string, default: nil
|
|
@@ -224,12 +240,31 @@ module Spree
|
|
|
224
240
|
# @return [Boolean] Creates a new allocation anytime {StoreCredit#credit} is called
|
|
225
241
|
preference :credit_to_new_allocation, :boolean, default: false
|
|
226
242
|
|
|
243
|
+
# @!attribute [rw] automatic_default_address
|
|
244
|
+
# The default value of true preserves existing backwards compatible feature of
|
|
245
|
+
# treating the most recently used address in checkout as the user's default address.
|
|
246
|
+
# Setting to false means that the user should manage their own default via some
|
|
247
|
+
# custom UI that uses AddressBookController.
|
|
248
|
+
# @return [Boolean] Whether use of an address in checkout marks it as user's default
|
|
249
|
+
preference :automatic_default_address, :boolean, default: true
|
|
250
|
+
|
|
227
251
|
# searcher_class allows spree extension writers to provide their own Search class
|
|
228
252
|
attr_writer :searcher_class
|
|
229
253
|
def searcher_class
|
|
230
254
|
@searcher_class ||= Spree::Core::Search::Base
|
|
231
255
|
end
|
|
232
256
|
|
|
257
|
+
attr_writer :variant_search_class
|
|
258
|
+
def variant_search_class
|
|
259
|
+
@variant_search_class ||= Spree::Core::Search::Variant
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
# promotion_chooser_class allows extensions to provide their own PromotionChooser
|
|
263
|
+
attr_writer :promotion_chooser_class
|
|
264
|
+
def promotion_chooser_class
|
|
265
|
+
@promotion_chooser_class ||= Spree::PromotionChooser
|
|
266
|
+
end
|
|
267
|
+
|
|
233
268
|
def static_model_preferences
|
|
234
269
|
@static_model_preferences ||= Spree::Preferences::StaticModelPreferences.new
|
|
235
270
|
end
|
data/app/models/spree/carton.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
class Spree::Carton <
|
|
2
|
-
belongs_to :address, class_name: 'Spree::Address'
|
|
1
|
+
class Spree::Carton < Spree::Base
|
|
2
|
+
belongs_to :address, class_name: 'Spree::Address'
|
|
3
3
|
belongs_to :stock_location, class_name: 'Spree::StockLocation', inverse_of: :cartons
|
|
4
4
|
belongs_to :shipping_method, class_name: 'Spree::ShippingMethod', inverse_of: :cartons
|
|
5
5
|
|
|
@@ -48,7 +48,7 @@ class Spree::Carton < ActiveRecord::Base
|
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
def manifest_for_order(order)
|
|
51
|
-
Spree::ShippingManifest.new(inventory_units: (
|
|
51
|
+
Spree::ShippingManifest.new(inventory_units: inventory_units).for_order(order).items
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
def any_exchanges?
|
data/app/models/spree/country.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module Spree
|
|
2
2
|
class Country < Spree::Base
|
|
3
|
-
has_many :states, -> { order(
|
|
3
|
+
has_many :states, -> { order(:name) }, dependent: :destroy
|
|
4
4
|
has_many :addresses, dependent: :nullify
|
|
5
5
|
|
|
6
6
|
validates :name, :iso_name, presence: true
|
|
@@ -12,6 +12,12 @@ module Spree
|
|
|
12
12
|
states_required
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
+
def self.default
|
|
16
|
+
find(Spree::Config[:default_country_id])
|
|
17
|
+
rescue ActiveRecord::RecordNotFound
|
|
18
|
+
first
|
|
19
|
+
end
|
|
20
|
+
|
|
15
21
|
def <=>(other)
|
|
16
22
|
name <=> other.name
|
|
17
23
|
end
|
|
@@ -2,7 +2,7 @@ module Spree
|
|
|
2
2
|
class CreditCard < Spree::Base
|
|
3
3
|
belongs_to :payment_method
|
|
4
4
|
belongs_to :user, class_name: Spree.user_class, foreign_key: 'user_id'
|
|
5
|
-
belongs_to :address
|
|
5
|
+
belongs_to :address
|
|
6
6
|
has_many :payments, as: :source
|
|
7
7
|
|
|
8
8
|
before_save :set_last_digits
|
|
@@ -36,6 +36,10 @@ module Spree
|
|
|
36
36
|
jcb: /^(?:2131|1800|35\d{3})\d{11}$/
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
def address_attributes=(attributes)
|
|
40
|
+
self.address = Address.immutable_merge(address, attributes)
|
|
41
|
+
end
|
|
42
|
+
|
|
39
43
|
# Sets the expiry date on this credit card.
|
|
40
44
|
#
|
|
41
45
|
# @param expiry [String] the desired new expiry date in one of the
|
data/app/models/spree/gateway.rb
CHANGED
|
@@ -29,14 +29,6 @@ module Spree
|
|
|
29
29
|
preferences.to_hash
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
def method_missing(method, *args)
|
|
33
|
-
if provider.nil? || !provider.respond_to?(method)
|
|
34
|
-
super
|
|
35
|
-
else
|
|
36
|
-
provider.send(method, *args)
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
32
|
def payment_profiles_supported?
|
|
41
33
|
false
|
|
42
34
|
end
|
|
@@ -33,7 +33,7 @@ module Spree
|
|
|
33
33
|
.where("spree_shipments.state != 'canceled'").references(:shipment)
|
|
34
34
|
.where(variant_id: stock_item.variant_id)
|
|
35
35
|
.where('spree_orders.completed_at is not null')
|
|
36
|
-
.backordered.order(
|
|
36
|
+
.backordered.order(Spree::Order.arel_table[:completed_at].asc)
|
|
37
37
|
end
|
|
38
38
|
scope :shippable, -> { on_hand }
|
|
39
39
|
|