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
|
@@ -41,7 +41,7 @@ module Spree
|
|
|
41
41
|
promotion_adjustments = adjustments.select(&:promotion?)
|
|
42
42
|
promotion_adjustments.each(&:update!)
|
|
43
43
|
|
|
44
|
-
promo_total =
|
|
44
|
+
promo_total = Spree::Config.promotion_chooser_class.new(promotion_adjustments).update
|
|
45
45
|
|
|
46
46
|
# Calculating the totals for the order here would be incorrect. Order's
|
|
47
47
|
# totals are the sum of the adjustments on all child models, as well as
|
|
@@ -17,14 +17,15 @@ module Spree
|
|
|
17
17
|
validates :name, presence: true, uniqueness: true
|
|
18
18
|
validates :presentation, presence: true
|
|
19
19
|
|
|
20
|
-
default_scope -> { order(
|
|
20
|
+
default_scope -> { order(:position) }
|
|
21
21
|
|
|
22
22
|
accepts_nested_attributes_for :option_values, reject_if: lambda { |ov| ov[:name].blank? || ov[:presentation].blank? }, allow_destroy: true
|
|
23
23
|
|
|
24
24
|
after_touch :touch_all_products
|
|
25
|
+
after_save :touch_all_products
|
|
25
26
|
|
|
26
27
|
def touch_all_products
|
|
27
|
-
products.
|
|
28
|
+
products.find_each(&:touch)
|
|
28
29
|
end
|
|
29
30
|
end
|
|
30
31
|
end
|
|
@@ -9,7 +9,7 @@ module Spree
|
|
|
9
9
|
validates :name, presence: true, uniqueness: { scope: :option_type_id }
|
|
10
10
|
validates :presentation, presence: true
|
|
11
11
|
|
|
12
|
-
after_save :touch
|
|
12
|
+
after_save :touch, if: :changed?
|
|
13
13
|
after_touch :touch_all_variants
|
|
14
14
|
|
|
15
15
|
self.whitelisted_ransackable_attributes = ['presentation']
|
data/app/models/spree/order.rb
CHANGED
|
@@ -48,11 +48,11 @@ module Spree
|
|
|
48
48
|
|
|
49
49
|
belongs_to :store, class_name: 'Spree::Store'
|
|
50
50
|
has_many :state_changes, as: :stateful
|
|
51
|
-
has_many :line_items, -> { order(
|
|
51
|
+
has_many :line_items, -> { order(:created_at, :id) }, dependent: :destroy, inverse_of: :order
|
|
52
52
|
has_many :payments, dependent: :destroy
|
|
53
53
|
has_many :return_authorizations, dependent: :destroy, inverse_of: :order
|
|
54
54
|
has_many :reimbursements, inverse_of: :order
|
|
55
|
-
has_many :adjustments, -> { order(
|
|
55
|
+
has_many :adjustments, -> { order(:created_at) }, as: :adjustable, inverse_of: :adjustable, dependent: :destroy
|
|
56
56
|
has_many :line_item_adjustments, through: :line_items, source: :adjustments
|
|
57
57
|
has_many :shipment_adjustments, through: :shipments, source: :adjustments
|
|
58
58
|
has_many :inventory_units, inverse_of: :order
|
|
@@ -82,7 +82,7 @@ module Spree
|
|
|
82
82
|
# Needs to happen before save_permalink is called
|
|
83
83
|
before_validation :set_currency
|
|
84
84
|
before_validation :generate_order_number, on: :create
|
|
85
|
-
before_validation :
|
|
85
|
+
before_validation :assign_billing_to_shipping_address, if: :use_billing?
|
|
86
86
|
attr_accessor :use_billing
|
|
87
87
|
|
|
88
88
|
|
|
@@ -93,7 +93,6 @@ module Spree
|
|
|
93
93
|
validates :email, presence: true, if: :require_email
|
|
94
94
|
validates :email, email: true, if: :require_email, allow_blank: true
|
|
95
95
|
validates :number, presence: true, uniqueness: { allow_blank: true }
|
|
96
|
-
validate :has_available_shipment
|
|
97
96
|
|
|
98
97
|
make_permalink field: :number
|
|
99
98
|
|
|
@@ -191,6 +190,7 @@ module Spree
|
|
|
191
190
|
end
|
|
192
191
|
|
|
193
192
|
def confirmation_required?
|
|
193
|
+
ActiveSupport::Deprecation.warn "Order#confirmation_required is deprecated.", caller
|
|
194
194
|
true
|
|
195
195
|
end
|
|
196
196
|
|
|
@@ -217,12 +217,8 @@ module Spree
|
|
|
217
217
|
updater.update
|
|
218
218
|
end
|
|
219
219
|
|
|
220
|
-
def
|
|
221
|
-
|
|
222
|
-
self.ship_address = bill_address.dup
|
|
223
|
-
else
|
|
224
|
-
self.ship_address.attributes = bill_address.attributes.except('id', 'updated_at', 'created_at')
|
|
225
|
-
end
|
|
220
|
+
def assign_billing_to_shipping_address
|
|
221
|
+
self.ship_address = bill_address if bill_address
|
|
226
222
|
true
|
|
227
223
|
end
|
|
228
224
|
|
|
@@ -272,7 +268,7 @@ module Spree
|
|
|
272
268
|
|
|
273
269
|
self.number ||= loop do
|
|
274
270
|
# Make a random number.
|
|
275
|
-
random = "#{options[:prefix]}#{(0...options[:length]).map { possible.
|
|
271
|
+
random = "#{options[:prefix]}#{(0...options[:length]).map { possible.sample }.join}"
|
|
276
272
|
# Use the random number if no other order exists with it.
|
|
277
273
|
if self.class.exists?(number: random)
|
|
278
274
|
# If over half of all possible options are taken add another digit.
|
|
@@ -330,10 +326,14 @@ module Spree
|
|
|
330
326
|
end
|
|
331
327
|
|
|
332
328
|
def outstanding_balance
|
|
329
|
+
# If reimbursement has happened add it back to total to prevent balance_due payment state
|
|
330
|
+
# See: https://github.com/spree/spree/issues/6229
|
|
331
|
+
adjusted_payment_total = payment_total + refund_total
|
|
332
|
+
|
|
333
333
|
if state == 'canceled'
|
|
334
|
-
-1 *
|
|
334
|
+
-1 * adjusted_payment_total
|
|
335
335
|
else
|
|
336
|
-
total -
|
|
336
|
+
total - adjusted_payment_total
|
|
337
337
|
end
|
|
338
338
|
end
|
|
339
339
|
|
|
@@ -341,6 +341,10 @@ module Spree
|
|
|
341
341
|
self.outstanding_balance != 0
|
|
342
342
|
end
|
|
343
343
|
|
|
344
|
+
def refund_total
|
|
345
|
+
payments.flat_map(&:refunds).sum(&:amount)
|
|
346
|
+
end
|
|
347
|
+
|
|
344
348
|
def name
|
|
345
349
|
if (address = bill_address || ship_address)
|
|
346
350
|
"#{address.firstname} #{address.lastname}"
|
|
@@ -365,7 +369,7 @@ module Spree
|
|
|
365
369
|
# Called after transition to complete state when payments will have been processed
|
|
366
370
|
def finalize!
|
|
367
371
|
# lock all adjustments (coupon promotions, etc.)
|
|
368
|
-
all_adjustments.each
|
|
372
|
+
all_adjustments.each(&:finalize!)
|
|
369
373
|
|
|
370
374
|
# update payment and shipment(s) states, and save
|
|
371
375
|
updater.update_payment_state
|
|
@@ -390,7 +394,7 @@ module Spree
|
|
|
390
394
|
end
|
|
391
395
|
|
|
392
396
|
def deliver_order_confirmation_email
|
|
393
|
-
OrderMailer.confirm_email(self
|
|
397
|
+
OrderMailer.confirm_email(self).deliver_later
|
|
394
398
|
update_column(:confirmation_delivered, true)
|
|
395
399
|
end
|
|
396
400
|
|
|
@@ -400,7 +404,10 @@ module Spree
|
|
|
400
404
|
end
|
|
401
405
|
|
|
402
406
|
def available_payment_methods
|
|
403
|
-
@available_payment_methods ||= (
|
|
407
|
+
@available_payment_methods ||= (
|
|
408
|
+
PaymentMethod.available(:front_end, store: store) +
|
|
409
|
+
PaymentMethod.available(:both, store: store)
|
|
410
|
+
).uniq
|
|
404
411
|
end
|
|
405
412
|
|
|
406
413
|
def billing_firstname
|
|
@@ -509,6 +516,8 @@ module Spree
|
|
|
509
516
|
end
|
|
510
517
|
|
|
511
518
|
def create_proposed_shipments
|
|
519
|
+
return self.shipments if unreturned_exchange?
|
|
520
|
+
|
|
512
521
|
if completed?
|
|
513
522
|
raise CannotRebuildShipments.new(Spree.t(:cannot_rebuild_shipments_order_completed))
|
|
514
523
|
elsif shipments.any? { |s| !s.pending? }
|
|
@@ -556,7 +565,7 @@ module Spree
|
|
|
556
565
|
end
|
|
557
566
|
|
|
558
567
|
def shipping_eq_billing_address?
|
|
559
|
-
|
|
568
|
+
bill_address == ship_address
|
|
560
569
|
end
|
|
561
570
|
|
|
562
571
|
def set_shipments_cost
|
|
@@ -587,19 +596,6 @@ module Spree
|
|
|
587
596
|
!approved?
|
|
588
597
|
end
|
|
589
598
|
|
|
590
|
-
# moved from api order_decorator. This is a better place for it.
|
|
591
|
-
def update_line_items(line_item_params)
|
|
592
|
-
return if line_item_params.blank?
|
|
593
|
-
line_item_params.each_value do |attributes|
|
|
594
|
-
if attributes[:id].present?
|
|
595
|
-
self.line_items.find(attributes[:id]).update_attributes!(attributes)
|
|
596
|
-
else
|
|
597
|
-
self.line_items.create!(attributes)
|
|
598
|
-
end
|
|
599
|
-
end
|
|
600
|
-
self.ensure_updated_shipments
|
|
601
|
-
end
|
|
602
|
-
|
|
603
599
|
def reload(options=nil)
|
|
604
600
|
remove_instance_variable(:@tax_zone) if defined?(@tax_zone)
|
|
605
601
|
super
|
|
@@ -713,23 +709,6 @@ module Spree
|
|
|
713
709
|
Spree::Money.new(total_available_store_credit - total_applicable_store_credit, { currency: currency })
|
|
714
710
|
end
|
|
715
711
|
|
|
716
|
-
def payments_attributes=(attributes)
|
|
717
|
-
validate_payments_attributes(attributes)
|
|
718
|
-
super(attributes)
|
|
719
|
-
end
|
|
720
|
-
|
|
721
|
-
def validate_payments_attributes(attributes)
|
|
722
|
-
attributes = Array.wrap(attributes)
|
|
723
|
-
# Ensure the payment methods specified are allowed for this user
|
|
724
|
-
payment_methods = Spree::PaymentMethod.where(id: available_payment_methods)
|
|
725
|
-
attributes.each do |payment_attributes|
|
|
726
|
-
payment_method_id = payment_attributes[:payment_method_id]
|
|
727
|
-
|
|
728
|
-
# raise RecordNotFound unless it is an allowed payment method
|
|
729
|
-
payment_methods.find(payment_method_id) if payment_method_id
|
|
730
|
-
end
|
|
731
|
-
end
|
|
732
|
-
|
|
733
712
|
private
|
|
734
713
|
|
|
735
714
|
def link_by_email
|
|
@@ -770,18 +749,11 @@ module Spree
|
|
|
770
749
|
end
|
|
771
750
|
end
|
|
772
751
|
|
|
773
|
-
def has_available_shipment
|
|
774
|
-
return unless has_step?("delivery")
|
|
775
|
-
return unless has_step?(:address) && address?
|
|
776
|
-
return unless ship_address && ship_address.valid?
|
|
777
|
-
# errors.add(:base, :no_shipping_methods_available) if available_shipping_methods.empty?
|
|
778
|
-
end
|
|
779
|
-
|
|
780
752
|
def ensure_available_shipping_rates
|
|
781
753
|
if shipments.empty? || shipments.any? { |shipment| shipment.shipping_rates.blank? }
|
|
782
754
|
# After this point, order redirects back to 'address' state and asks user to pick a proper address
|
|
783
755
|
# Therefore, shipments are not necessary at this point.
|
|
784
|
-
shipments.
|
|
756
|
+
shipments.destroy_all
|
|
785
757
|
errors.add(:base, Spree.t(:items_cannot_be_shipped)) and return false
|
|
786
758
|
end
|
|
787
759
|
end
|
|
@@ -796,7 +768,7 @@ module Spree
|
|
|
796
768
|
end
|
|
797
769
|
|
|
798
770
|
def send_cancel_email
|
|
799
|
-
OrderMailer.cancel_email(self
|
|
771
|
+
OrderMailer.cancel_email(self).deliver_later
|
|
800
772
|
end
|
|
801
773
|
|
|
802
774
|
def after_resume
|
|
@@ -67,6 +67,10 @@ module Spree
|
|
|
67
67
|
transition to: :awaiting_return
|
|
68
68
|
end
|
|
69
69
|
|
|
70
|
+
event :complete do
|
|
71
|
+
transition to: :complete, from: :confirm
|
|
72
|
+
end
|
|
73
|
+
|
|
70
74
|
if states[:payment]
|
|
71
75
|
event :payment_failed do
|
|
72
76
|
transition to: :payment, from: :confirm
|
|
@@ -81,11 +85,6 @@ module Spree
|
|
|
81
85
|
|
|
82
86
|
# see also process_payments_before_complete below which needs to
|
|
83
87
|
# be added in the correct sequence.
|
|
84
|
-
|
|
85
|
-
event :complete do
|
|
86
|
-
transition to: :complete, from: :confirm
|
|
87
|
-
transition to: :complete, from: :payment
|
|
88
|
-
end
|
|
89
88
|
end
|
|
90
89
|
|
|
91
90
|
before_transition from: :cart, do: :ensure_line_items_present
|
|
@@ -274,12 +273,21 @@ module Spree
|
|
|
274
273
|
success
|
|
275
274
|
end
|
|
276
275
|
|
|
276
|
+
def bill_address_attributes=(attributes)
|
|
277
|
+
self.bill_address = Address.immutable_merge(bill_address, attributes)
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
def ship_address_attributes=(attributes)
|
|
281
|
+
self.ship_address = Address.immutable_merge(ship_address, attributes)
|
|
282
|
+
end
|
|
283
|
+
|
|
277
284
|
def assign_default_addresses!
|
|
278
285
|
if self.user
|
|
279
|
-
|
|
286
|
+
# this is one of 2 places still using User#bill_address
|
|
287
|
+
self.bill_address ||= user.bill_address if user.bill_address.try!(:valid?)
|
|
280
288
|
# Skip setting ship address if order doesn't have a delivery checkout step
|
|
281
289
|
# to avoid triggering validations on shipping address
|
|
282
|
-
self.ship_address
|
|
290
|
+
self.ship_address ||= user.ship_address if user.ship_address.try!(:valid?) && self.checkout_steps.include?("delivery")
|
|
283
291
|
end
|
|
284
292
|
end
|
|
285
293
|
|
|
@@ -292,6 +300,7 @@ module Spree
|
|
|
292
300
|
def persist_user_credit_card
|
|
293
301
|
if !self.temporary_credit_card && self.user_id && self.valid_credit_cards.present?
|
|
294
302
|
default_cc = self.valid_credit_cards.first
|
|
303
|
+
# TODO target for refactoring -- why is order checkout responsible for the user -> credit_card relationship?
|
|
295
304
|
default_cc.user_id = self.user_id
|
|
296
305
|
default_cc.default = true
|
|
297
306
|
default_cc.save
|
|
@@ -302,7 +311,8 @@ module Spree
|
|
|
302
311
|
if self.payments.from_credit_card.count == 0 && self.user && self.user.default_credit_card.try(:valid?)
|
|
303
312
|
cc = self.user.default_credit_card
|
|
304
313
|
self.payments.create!(payment_method_id: cc.payment_method_id, source: cc)
|
|
305
|
-
|
|
314
|
+
# this is one of 2 places still using User#bill_address
|
|
315
|
+
self.bill_address ||= user.default_credit_card.address || user.bill_address
|
|
306
316
|
end
|
|
307
317
|
end
|
|
308
318
|
|
|
@@ -326,10 +336,6 @@ module Spree
|
|
|
326
336
|
end
|
|
327
337
|
end
|
|
328
338
|
|
|
329
|
-
# For payment step, filter order parameters to produce the expected nested
|
|
330
|
-
# attributes for a single payment and its source, discarding attributes
|
|
331
|
-
# for payment methods other than the one selected
|
|
332
|
-
#
|
|
333
339
|
# In case a existing credit card is provided it needs to build the payment
|
|
334
340
|
# attributes from scratch so we can set the amount. example payload:
|
|
335
341
|
#
|
|
@@ -340,14 +346,6 @@ module Spree
|
|
|
340
346
|
# }
|
|
341
347
|
#
|
|
342
348
|
def update_params_payment_source
|
|
343
|
-
if @updating_params[:payment_source].present?
|
|
344
|
-
source_params = @updating_params.delete(:payment_source)[@updating_params[:order][:payments_attributes].first[:payment_method_id].to_s]
|
|
345
|
-
|
|
346
|
-
if source_params
|
|
347
|
-
@updating_params[:order][:payments_attributes].first[:source_attributes] = source_params
|
|
348
|
-
end
|
|
349
|
-
end
|
|
350
|
-
|
|
351
349
|
if @updating_params[:order] && (@updating_params[:order][:payments_attributes] || @updating_params[:order][:existing_card])
|
|
352
350
|
@updating_params[:order][:payments_attributes] ||= [{}]
|
|
353
351
|
@updating_params[:order][:payments_attributes].first[:amount] = self.total
|
|
@@ -3,7 +3,7 @@ module Spree
|
|
|
3
3
|
#
|
|
4
4
|
# 1. A promotion that a user attempted to apply to their order
|
|
5
5
|
# 2. The specific code that they used
|
|
6
|
-
class OrderPromotion <
|
|
6
|
+
class OrderPromotion < Spree::Base
|
|
7
7
|
self.table_name = 'spree_orders_promotions'
|
|
8
8
|
|
|
9
9
|
belongs_to :order, class_name: 'Spree::Order'
|
|
@@ -72,9 +72,9 @@ class Spree::OrderShipping
|
|
|
72
72
|
end
|
|
73
73
|
end
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
send_shipment_emails(carton) if stock_location.fulfillable? && !suppress_mailer # e.g. digital gift cards that aren't actually shipped
|
|
76
76
|
fulfill_order_stock_locations(stock_location)
|
|
77
|
-
|
|
77
|
+
@order.update!
|
|
78
78
|
|
|
79
79
|
carton
|
|
80
80
|
end
|
|
@@ -85,15 +85,9 @@ class Spree::OrderShipping
|
|
|
85
85
|
Spree::OrderStockLocation.fulfill_for_order_with_stock_location(@order, stock_location)
|
|
86
86
|
end
|
|
87
87
|
|
|
88
|
-
def
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
updated_at: Time.now,
|
|
93
|
-
)
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
def send_shipment_email(carton)
|
|
97
|
-
Spree::CartonMailer.shipped_email(carton.id).deliver_now
|
|
88
|
+
def send_shipment_emails(carton)
|
|
89
|
+
carton.orders.each do |order|
|
|
90
|
+
Spree::CartonMailer.shipped_email(order: order, carton: carton).deliver_later
|
|
91
|
+
end
|
|
98
92
|
end
|
|
99
93
|
end
|
data/app/models/spree/payment.rb
CHANGED
|
@@ -35,9 +35,8 @@ module Spree
|
|
|
35
35
|
|
|
36
36
|
validates :amount, numericality: true
|
|
37
37
|
validates :source, presence: true, if: :source_required?
|
|
38
|
-
validates :payment_method, presence: true
|
|
39
38
|
|
|
40
|
-
default_scope -> { order(
|
|
39
|
+
default_scope -> { order(:created_at) }
|
|
41
40
|
|
|
42
41
|
scope :from_credit_card, -> { where(source_type: 'Spree::CreditCard') }
|
|
43
42
|
scope :with_state, ->(s) { where(state: s.to_s) }
|
|
@@ -244,18 +243,8 @@ module Spree
|
|
|
244
243
|
end
|
|
245
244
|
|
|
246
245
|
def update_order
|
|
247
|
-
if completed? || void?
|
|
248
|
-
order.
|
|
249
|
-
end
|
|
250
|
-
|
|
251
|
-
if order.completed?
|
|
252
|
-
order.updater.update_payment_state
|
|
253
|
-
order.updater.update_shipments
|
|
254
|
-
order.updater.update_shipment_state
|
|
255
|
-
end
|
|
256
|
-
|
|
257
|
-
if self.completed? || order.completed?
|
|
258
|
-
order.persist_totals
|
|
246
|
+
if order.completed? || completed? || void?
|
|
247
|
+
order.update!
|
|
259
248
|
end
|
|
260
249
|
end
|
|
261
250
|
|
|
@@ -51,7 +51,6 @@ module Spree
|
|
|
51
51
|
amount ||= money.money.cents
|
|
52
52
|
started_processing!
|
|
53
53
|
protect_from_connection_error do
|
|
54
|
-
check_environment
|
|
55
54
|
# Standard ActiveMerchant capture usage
|
|
56
55
|
response = payment_method.capture(
|
|
57
56
|
amount,
|
|
@@ -68,7 +67,6 @@ module Spree
|
|
|
68
67
|
def void_transaction!
|
|
69
68
|
return true if void?
|
|
70
69
|
protect_from_connection_error do
|
|
71
|
-
check_environment
|
|
72
70
|
|
|
73
71
|
if payment_method.payment_profiles_supported?
|
|
74
72
|
# Gateways supporting payment profiles will need access to credit card object because this stores the payment profile information
|
|
@@ -106,8 +104,13 @@ module Spree
|
|
|
106
104
|
:discount => order.promo_total * 100,
|
|
107
105
|
:currency => currency })
|
|
108
106
|
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
bill_address = source.try(:address)
|
|
108
|
+
bill_address ||= order.bill_address
|
|
109
|
+
|
|
110
|
+
options.merge!(
|
|
111
|
+
billing_address: bill_address.try!(:active_merchant_hash),
|
|
112
|
+
shipping_address: order.ship_address.try!(:active_merchant_hash),
|
|
113
|
+
)
|
|
111
114
|
|
|
112
115
|
options
|
|
113
116
|
end
|
|
@@ -150,8 +153,6 @@ module Spree
|
|
|
150
153
|
|
|
151
154
|
def gateway_action(source, action, success_state)
|
|
152
155
|
protect_from_connection_error do
|
|
153
|
-
check_environment
|
|
154
|
-
|
|
155
156
|
response = payment_method.send(action, money.money.cents,
|
|
156
157
|
source,
|
|
157
158
|
gateway_options)
|
|
@@ -215,14 +216,6 @@ module Spree
|
|
|
215
216
|
raise Core::GatewayError.new(text)
|
|
216
217
|
end
|
|
217
218
|
|
|
218
|
-
# Saftey check to make sure we're not accidentally performing operations on a live gateway.
|
|
219
|
-
# Ex. When testing in staging environment with a copy of production data.
|
|
220
|
-
def check_environment
|
|
221
|
-
return if payment_method.environment == Rails.env
|
|
222
|
-
message = Spree.t(:gateway_config_unavailable) + " - #{Rails.env}"
|
|
223
|
-
raise Core::GatewayError.new(message)
|
|
224
|
-
end
|
|
225
|
-
|
|
226
219
|
# The unique identifier to be passed in to the payment gateway
|
|
227
220
|
def gateway_order_id
|
|
228
221
|
"#{order.number}-#{self.identifier}"
|