solidus_core 2.10.2 → 2.11.3
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/assets/javascripts/spree.js.erb +31 -2
- data/app/controllers/spree/base_controller.rb +1 -0
- data/app/mailers/spree/base_mailer.rb +4 -0
- data/app/mailers/spree/order_mailer.rb +1 -1
- data/app/models/concerns/spree/active_storage_adapter.rb +116 -0
- data/app/models/concerns/spree/active_storage_adapter/attachment.rb +69 -0
- data/app/models/concerns/spree/active_storage_adapter/normalization.rb +39 -0
- data/app/models/concerns/spree/default_price.rb +1 -1
- data/app/models/concerns/spree/soft_deletable.rb +18 -0
- data/app/models/concerns/spree/user_address_book.rb +86 -32
- data/app/models/concerns/spree/user_methods.rb +3 -2
- data/app/models/spree/ability.rb +34 -10
- data/app/models/spree/address.rb +94 -17
- data/app/models/spree/address/name.rb +49 -0
- data/app/models/spree/address/state_validator.rb +71 -0
- data/app/models/spree/adjustment.rb +1 -1
- data/app/models/spree/base.rb +1 -0
- data/app/models/spree/calculator/default_tax.rb +1 -1
- data/app/models/spree/calculator/percent_per_item.rb +4 -4
- data/app/models/spree/calculator/price_sack.rb +1 -1
- data/app/models/spree/credit_card.rb +2 -2
- data/app/models/spree/customer_return.rb +4 -2
- data/app/models/spree/exchange.rb +1 -1
- data/app/models/spree/image/active_storage_attachment.rb +21 -0
- data/app/models/spree/inventory_unit.rb +1 -1
- data/app/models/spree/line_item.rb +13 -4
- data/app/models/spree/option_type.rb +1 -1
- data/app/models/spree/option_value.rb +2 -2
- data/app/models/spree/order.rb +91 -20
- data/app/models/spree/order/checkout.rb +1 -0
- data/app/models/spree/order_inventory.rb +16 -4
- data/app/models/spree/order_merger.rb +6 -4
- data/app/models/spree/order_promotion.rb +1 -1
- data/app/models/spree/order_updater.rb +11 -10
- data/app/models/spree/payment.rb +3 -3
- data/app/models/spree/payment/cancellation.rb +3 -3
- data/app/models/spree/payment/processing.rb +54 -30
- data/app/models/spree/payment_method.rb +8 -9
- data/app/models/spree/preference.rb +1 -1
- data/app/models/spree/price.rb +2 -8
- data/app/models/spree/product.rb +19 -14
- data/app/models/spree/product/scopes.rb +9 -4
- data/app/models/spree/promotion.rb +18 -7
- data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
- data/app/models/spree/promotion_action.rb +1 -7
- data/app/models/spree/promotion_code.rb +6 -1
- data/app/models/spree/promotion_code_batch.rb +1 -1
- data/app/models/spree/promotion_handler/coupon.rb +2 -2
- data/app/models/spree/promotion_rule.rb +1 -1
- data/app/models/spree/promotion_rule_role.rb +1 -1
- data/app/models/spree/refund.rb +60 -12
- data/app/models/spree/reimbursement.rb +27 -0
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +10 -3
- data/app/models/spree/return_authorization.rb +1 -1
- data/app/models/spree/return_item.rb +21 -10
- data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
- data/app/models/spree/role.rb +1 -1
- data/app/models/spree/shipment.rb +2 -2
- data/app/models/spree/shipping_calculator.rb +1 -1
- data/app/models/spree/shipping_manifest.rb +2 -2
- data/app/models/spree/shipping_method.rb +2 -9
- data/app/models/spree/shipping_rate.rb +1 -1
- data/app/models/spree/shipping_rate_tax.rb +1 -1
- data/app/models/spree/stock/inventory_unit_builder.rb +18 -7
- data/app/models/spree/stock/inventory_units_finalizer.rb +3 -5
- data/app/models/spree/stock/package.rb +1 -1
- data/app/models/spree/stock/simple_coordinator.rb +1 -3
- data/app/models/spree/stock_item.rb +2 -8
- data/app/models/spree/stock_movement.rb +2 -0
- data/app/models/spree/store.rb +1 -1
- data/app/models/spree/store_credit.rb +1 -7
- data/app/models/spree/store_credit_category.rb +30 -3
- data/app/models/spree/store_credit_event.rb +1 -7
- data/app/models/spree/store_credit_reason.rb +0 -4
- data/app/models/spree/tax/tax_helpers.rb +1 -1
- data/app/models/spree/tax_category.rb +2 -8
- data/app/models/spree/tax_rate.rb +7 -7
- data/app/models/spree/taxon.rb +1 -1
- data/app/models/spree/taxon/active_storage_attachment.rb +19 -0
- data/app/models/spree/user_address.rb +8 -2
- data/app/models/spree/variant.rb +7 -13
- data/app/models/spree/variant_property_rule.rb +5 -1
- data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +8 -3
- data/app/models/spree/zone.rb +1 -1
- data/config/locales/en.yml +44 -5
- data/db/default/spree/countries.rb +1 -1
- data/db/default/spree/states.rb +12 -4
- data/db/default/spree/store_credit.rb +2 -2
- data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +12 -0
- data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +6 -0
- data/db/migrate/20200530111458_add_bcc_email_to_spree_stores.rb +7 -0
- data/db/migrate/20201008213609_add_discontinue_on_to_spree_products.rb +7 -0
- data/lib/generators/solidus/install/install_generator.rb +253 -0
- data/lib/generators/{spree → solidus}/install/templates/config/initializers/spree.rb.tt +36 -5
- data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
- data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
- data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
- data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
- data/lib/generators/spree/install/install_generator.rb +7 -189
- data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
- data/lib/spree/app_configuration.rb +117 -51
- data/lib/spree/awesome_nested_set_override.rb +44 -0
- data/lib/spree/core.rb +5 -11
- data/lib/spree/core/controller_helpers/auth.rb +17 -4
- data/lib/spree/core/controller_helpers/current_host.rb +17 -0
- data/lib/spree/core/controller_helpers/order.rb +8 -7
- data/lib/spree/core/engine.rb +39 -2
- data/lib/spree/core/importer/order.rb +24 -10
- data/lib/spree/core/permalinks.rb +1 -3
- data/lib/spree/core/product_filters.rb +6 -5
- data/lib/spree/core/state_machines.rb +20 -1
- data/lib/spree/core/state_machines/order.rb +249 -0
- data/lib/spree/core/state_machines/return_item/reception_status.rb +2 -2
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/encryptor.rb +25 -0
- data/lib/spree/event.rb +40 -7
- data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
- data/lib/spree/event/configuration.rb +11 -6
- data/lib/spree/event/subscriber.rb +38 -18
- data/lib/spree/event/subscriber_registry.rb +92 -0
- data/lib/spree/i18n.rb +1 -1
- data/lib/spree/mailer_previews/carton_preview.rb +2 -1
- data/lib/spree/paranoia_deprecations.rb +32 -12
- data/lib/spree/permission_sets/configuration_display.rb +14 -14
- data/lib/spree/permission_sets/default_customer.rb +16 -16
- data/lib/spree/permission_sets/order_display.rb +11 -11
- data/lib/spree/permission_sets/order_management.rb +1 -1
- data/lib/spree/permission_sets/product_display.rb +9 -9
- data/lib/spree/permission_sets/promotion_display.rb +5 -5
- data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
- data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
- data/lib/spree/permission_sets/stock_display.rb +2 -2
- data/lib/spree/permission_sets/stock_management.rb +1 -1
- data/lib/spree/permission_sets/user_display.rb +3 -3
- data/lib/spree/permission_sets/user_management.rb +4 -3
- data/lib/spree/permitted_attributes.rb +4 -3
- data/lib/spree/preferences/preferable.rb +4 -3
- data/lib/spree/preferences/preferable_class_methods.rb +22 -3
- data/lib/spree/testing_support/ability_helpers.rb +9 -9
- data/lib/spree/testing_support/authorization_helpers.rb +1 -0
- data/lib/spree/testing_support/blacklist_urls.rb +23 -0
- data/lib/spree/testing_support/capybara_ext.rb +3 -0
- data/lib/spree/testing_support/common_rake.rb +3 -3
- data/lib/spree/testing_support/dummy_app.rb +44 -23
- data/lib/spree/testing_support/dummy_app/migrations.rb +5 -6
- data/lib/spree/testing_support/dummy_app/rake_tasks.rb +1 -3
- data/lib/spree/testing_support/factories/address_factory.rb +1 -2
- data/lib/spree/testing_support/factories/image_factory.rb +1 -1
- data/lib/spree/testing_support/factories/promotion_factory.rb +6 -0
- data/lib/spree/testing_support/factories/refund_factory.rb +1 -0
- data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
- data/lib/spree/testing_support/factories/return_item_factory.rb +0 -1
- data/lib/spree/testing_support/factories/store_credit_category_factory.rb +8 -0
- data/lib/spree/testing_support/factories/store_credit_event_factory.rb +1 -0
- data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +3 -1
- data/lib/spree/testing_support/factories/taxon_factory.rb +4 -0
- data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
- data/lib/spree/testing_support/fixtures/blank.jpg +0 -0
- data/lib/spree/testing_support/job_helpers.rb +24 -0
- data/lib/spree/testing_support/precompiled_assets.rb +15 -0
- data/lib/spree/testing_support/preferences.rb +3 -1
- data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
- data/lib/spree/testing_support/translations.rb +25 -0
- data/solidus_core.gemspec +8 -5
- metadata +99 -377
- data/script/rails +0 -10
- data/spec/fixtures/thinking-cat.jpg +0 -0
- data/spec/helpers/base_helper_spec.rb +0 -168
- data/spec/helpers/products_helper_spec.rb +0 -202
- data/spec/helpers/taxons_helper_spec.rb +0 -43
- data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
- data/spec/lib/calculated_adjustments_spec.rb +0 -133
- data/spec/lib/i18n_spec.rb +0 -97
- data/spec/lib/search/base_spec.rb +0 -91
- data/spec/lib/search/variant_spec.rb +0 -115
- data/spec/lib/spree/app_configuration_spec.rb +0 -140
- data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
- data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
- data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
- data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
- data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
- data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
- data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
- data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -48
- data/spec/lib/spree/core/current_store_spec.rb +0 -33
- data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
- data/spec/lib/spree/core/importer/order_spec.rb +0 -484
- data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
- data/spec/lib/spree/core/stock_configuration_spec.rb +0 -95
- data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
- data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
- data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
- data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
- data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
- data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
- data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
- data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
- data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
- data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
- data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
- data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
- data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
- data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
- data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
- data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
- data/spec/lib/spree/core/validators/email_spec.rb +0 -53
- data/spec/lib/spree/core/version_spec.rb +0 -19
- data/spec/lib/spree/event/subscriber_spec.rb +0 -85
- data/spec/lib/spree/event_spec.rb +0 -130
- data/spec/lib/spree/localized_number_spec.rb +0 -45
- data/spec/lib/spree/migrations_spec.rb +0 -32
- data/spec/lib/spree/money_spec.rb +0 -298
- data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
- data/spec/lib/spree/permitted_attributes_spec.rb +0 -41
- data/spec/lib/spree/promo/environment_spec.rb +0 -53
- data/spec/lib/tasks/dummy_task.rake +0 -12
- data/spec/lib/tasks/dummy_task_spec.rb +0 -30
- data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
- data/spec/mailers/carton_mailer_spec.rb +0 -44
- data/spec/mailers/order_mailer_spec.rb +0 -117
- data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
- data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
- data/spec/mailers/test_mailer_spec.rb +0 -13
- data/spec/models/spree/ability_spec.rb +0 -279
- data/spec/models/spree/address_spec.rb +0 -399
- data/spec/models/spree/adjustment_reason_spec.rb +0 -11
- data/spec/models/spree/adjustment_spec.rb +0 -339
- data/spec/models/spree/asset_spec.rb +0 -25
- data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
- data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
- data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
- data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
- data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
- data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
- data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
- data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
- data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
- data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
- data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
- data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
- data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
- data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
- data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -44
- data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
- data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
- data/spec/models/spree/calculator_spec.rb +0 -43
- data/spec/models/spree/carton_spec.rb +0 -145
- data/spec/models/spree/classification_spec.rb +0 -126
- data/spec/models/spree/concerns/display_money_spec.rb +0 -44
- data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
- data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
- data/spec/models/spree/concerns/user_methods_spec.rb +0 -122
- data/spec/models/spree/country_spec.rb +0 -154
- data/spec/models/spree/credit_card_spec.rb +0 -373
- data/spec/models/spree/customer_return_spec.rb +0 -294
- data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
- data/spec/models/spree/exchange_spec.rb +0 -76
- data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
- data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
- data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
- data/spec/models/spree/gateway/bogus_simple.rb +0 -14
- data/spec/models/spree/gateway/bogus_spec.rb +0 -14
- data/spec/models/spree/gateway_spec.rb +0 -14
- data/spec/models/spree/image_spec.rb +0 -25
- data/spec/models/spree/inventory_unit_spec.rb +0 -309
- data/spec/models/spree/line_item_spec.rb +0 -240
- data/spec/models/spree/option_type_spec.rb +0 -16
- data/spec/models/spree/option_value_spec.rb +0 -52
- data/spec/models/spree/order/address_spec.rb +0 -52
- data/spec/models/spree/order/adjustments_spec.rb +0 -29
- data/spec/models/spree/order/callbacks_spec.rb +0 -44
- data/spec/models/spree/order/checkout_spec.rb +0 -740
- data/spec/models/spree/order/finalizing_spec.rb +0 -92
- data/spec/models/spree/order/number_generator_spec.rb +0 -47
- data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
- data/spec/models/spree/order/payment_spec.rb +0 -280
- data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
- data/spec/models/spree/order/state_machine_spec.rb +0 -122
- data/spec/models/spree/order/totals_spec.rb +0 -26
- data/spec/models/spree/order/validations_spec.rb +0 -17
- data/spec/models/spree/order_cancellations_spec.rb +0 -233
- data/spec/models/spree/order_capturing_spec.rb +0 -16
- data/spec/models/spree/order_contents_spec.rb +0 -362
- data/spec/models/spree/order_inventory_spec.rb +0 -285
- data/spec/models/spree/order_merger_spec.rb +0 -162
- data/spec/models/spree/order_mutex_spec.rb +0 -89
- data/spec/models/spree/order_promotion_spec.rb +0 -33
- data/spec/models/spree/order_shipping_spec.rb +0 -247
- data/spec/models/spree/order_spec.rb +0 -1687
- data/spec/models/spree/order_taxation_spec.rb +0 -128
- data/spec/models/spree/order_update_attributes_spec.rb +0 -49
- data/spec/models/spree/order_updater_spec.rb +0 -556
- data/spec/models/spree/payment/cancellation_spec.rb +0 -84
- data/spec/models/spree/payment_create_spec.rb +0 -195
- data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
- data/spec/models/spree/payment_method/check_spec.rb +0 -80
- data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
- data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
- data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
- data/spec/models/spree/payment_method_spec.rb +0 -408
- data/spec/models/spree/payment_spec.rb +0 -1270
- data/spec/models/spree/permission_sets/base_spec.rb +0 -14
- data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
- data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
- data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
- data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
- data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
- data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
- data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
- data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
- data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
- data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
- data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
- data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
- data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
- data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
- data/spec/models/spree/permission_sets/user_management_spec.rb +0 -58
- data/spec/models/spree/preference_spec.rb +0 -79
- data/spec/models/spree/preferences/configuration_spec.rb +0 -27
- data/spec/models/spree/preferences/preferable_spec.rb +0 -334
- data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
- data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
- data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
- data/spec/models/spree/preferences/store_spec.rb +0 -40
- data/spec/models/spree/price_spec.rb +0 -150
- data/spec/models/spree/product/scopes_spec.rb +0 -164
- data/spec/models/spree/product_duplicator_spec.rb +0 -92
- data/spec/models/spree/product_filter_spec.rb +0 -28
- data/spec/models/spree/product_property_spec.rb +0 -20
- data/spec/models/spree/product_spec.rb +0 -584
- data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
- data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
- data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
- data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
- data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
- data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
- data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
- data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
- data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
- data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
- data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
- data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
- data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -227
- data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
- data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
- data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
- data/spec/models/spree/promotion_action_spec.rb +0 -44
- data/spec/models/spree/promotion_category_spec.rb +0 -19
- data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
- data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
- data/spec/models/spree/promotion_code_spec.rb +0 -206
- data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
- data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
- data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
- data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
- data/spec/models/spree/promotion_rule_spec.rb +0 -34
- data/spec/models/spree/promotion_spec.rb +0 -945
- data/spec/models/spree/refund_spec.rb +0 -200
- data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
- data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
- data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
- data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
- data/spec/models/spree/reimbursement_spec.rb +0 -278
- data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
- data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
- data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
- data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
- data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
- data/spec/models/spree/return_authorization_spec.rb +0 -226
- data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
- data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
- data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
- data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
- data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
- data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
- data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
- data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
- data/spec/models/spree/return_item_spec.rb +0 -785
- data/spec/models/spree/returns_calculator_spec.rb +0 -16
- data/spec/models/spree/shipment_spec.rb +0 -914
- data/spec/models/spree/shipping_calculator_spec.rb +0 -45
- data/spec/models/spree/shipping_manifest_spec.rb +0 -110
- data/spec/models/spree/shipping_method_spec.rb +0 -292
- data/spec/models/spree/shipping_rate_spec.rb +0 -154
- data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
- data/spec/models/spree/state_spec.rb +0 -43
- data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
- data/spec/models/spree/stock/availability_spec.rb +0 -143
- data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
- data/spec/models/spree/stock/content_item_spec.rb +0 -70
- data/spec/models/spree/stock/differentiator_spec.rb +0 -41
- data/spec/models/spree/stock/estimator_spec.rb +0 -241
- data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
- data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
- data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
- data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
- data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
- data/spec/models/spree/stock/package_spec.rb +0 -182
- data/spec/models/spree/stock/quantifier_spec.rb +0 -113
- data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
- data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
- data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
- data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
- data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
- data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
- data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
- data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
- data/spec/models/spree/stock_item_spec.rb +0 -348
- data/spec/models/spree/stock_location_spec.rb +0 -288
- data/spec/models/spree/stock_movement_spec.rb +0 -58
- data/spec/models/spree/stock_quantities_spec.rb +0 -249
- data/spec/models/spree/store_credit_category_spec.rb +0 -19
- data/spec/models/spree/store_credit_event_spec.rb +0 -328
- data/spec/models/spree/store_credit_spec.rb +0 -900
- data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
- data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
- data/spec/models/spree/store_spec.rb +0 -156
- data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
- data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
- data/spec/models/spree/tax/tax_location_spec.rb +0 -79
- data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
- data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
- data/spec/models/spree/tax_category_spec.rb +0 -50
- data/spec/models/spree/tax_rate_spec.rb +0 -317
- data/spec/models/spree/taxon_spec.rb +0 -197
- data/spec/models/spree/taxonomy_spec.rb +0 -15
- data/spec/models/spree/taxons/paperclip_attachment_spec.rb +0 -29
- data/spec/models/spree/unit_cancel_spec.rb +0 -126
- data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +0 -31
- data/spec/models/spree/user_last_url_storer_spec.rb +0 -60
- data/spec/models/spree/user_spec.rb +0 -247
- data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
- data/spec/models/spree/variant/price_selector_spec.rb +0 -90
- data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
- data/spec/models/spree/variant/scopes_spec.rb +0 -94
- data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
- data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
- data/spec/models/spree/variant_property_rule_spec.rb +0 -85
- data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
- data/spec/models/spree/variant_spec.rb +0 -862
- data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
- data/spec/models/spree/wallet_spec.rb +0 -155
- data/spec/models/spree/zone_spec.rb +0 -248
- data/spec/rails_helper.rb +0 -46
- data/spec/shared_examples/calculator_shared_examples.rb +0 -10
- data/spec/spec_helper.rb +0 -36
- data/spec/support/big_decimal.rb +0 -7
- data/spec/support/concerns/default_price.rb +0 -44
- data/spec/support/concerns/payment_source.rb +0 -66
- data/spec/support/concerns/working_factories.rb +0 -15
- data/spec/support/dummy_ability.rb +0 -7
|
@@ -163,7 +163,7 @@ module Spree
|
|
|
163
163
|
# the object to ActiveMerchant.
|
|
164
164
|
# @return [String] the first name on this credit card
|
|
165
165
|
def first_name
|
|
166
|
-
|
|
166
|
+
Spree::Address::Name.new(name).first_name
|
|
167
167
|
end
|
|
168
168
|
|
|
169
169
|
# @note ActiveMerchant needs first_name/last_name because we pass it a
|
|
@@ -172,7 +172,7 @@ module Spree
|
|
|
172
172
|
# the object to ActiveMerchant.
|
|
173
173
|
# @return [String] the last name on this credit card
|
|
174
174
|
def last_name
|
|
175
|
-
|
|
175
|
+
Spree::Address::Name.new(name).last_name
|
|
176
176
|
end
|
|
177
177
|
|
|
178
178
|
# @return [ActiveMerchant::Billing::CreditCard] an ActiveMerchant credit
|
|
@@ -17,6 +17,8 @@ module Spree
|
|
|
17
17
|
|
|
18
18
|
accepts_nested_attributes_for :return_items
|
|
19
19
|
|
|
20
|
+
self.whitelisted_ransackable_attributes = ['number']
|
|
21
|
+
|
|
20
22
|
extend DisplayMoney
|
|
21
23
|
money_methods :pre_tax_total, :total, :total_excluding_vat, :amount
|
|
22
24
|
deprecate display_pre_tax_total: :display_total_excluding_vat, deprecator: Spree::Deprecation
|
|
@@ -25,11 +27,11 @@ module Spree
|
|
|
25
27
|
delegate :id, to: :order, prefix: true, allow_nil: true
|
|
26
28
|
|
|
27
29
|
def total
|
|
28
|
-
return_items.
|
|
30
|
+
return_items.sum(&:total)
|
|
29
31
|
end
|
|
30
32
|
|
|
31
33
|
def total_excluding_vat
|
|
32
|
-
return_items.
|
|
34
|
+
return_items.sum(&:total_excluding_vat)
|
|
33
35
|
end
|
|
34
36
|
alias pre_tax_total total_excluding_vat
|
|
35
37
|
deprecate pre_tax_total: :total_excluding_vat, deprecator: Spree::Deprecation
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree::Image::ActiveStorageAttachment
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
include Spree::ActiveStorageAdapter
|
|
6
|
+
|
|
7
|
+
delegate :width, :height, to: :attachment, prefix: true
|
|
8
|
+
|
|
9
|
+
included do
|
|
10
|
+
has_attachment :attachment,
|
|
11
|
+
styles: {
|
|
12
|
+
mini: '48x48>',
|
|
13
|
+
small: '400x400>',
|
|
14
|
+
product: '680x680>',
|
|
15
|
+
large: '1200x1200>'
|
|
16
|
+
},
|
|
17
|
+
default_style: :product
|
|
18
|
+
validates :attachment, presence: true
|
|
19
|
+
validate :attachment_is_an_image
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -8,7 +8,7 @@ module Spree
|
|
|
8
8
|
POST_SHIPMENT_STATES = %w(returned)
|
|
9
9
|
CANCELABLE_STATES = ['on_hand', 'backordered', 'shipped']
|
|
10
10
|
|
|
11
|
-
belongs_to :variant, -> {
|
|
11
|
+
belongs_to :variant, -> { with_discarded }, class_name: "Spree::Variant", inverse_of: :inventory_units, optional: true
|
|
12
12
|
belongs_to :shipment, class_name: "Spree::Shipment", touch: true, inverse_of: :inventory_units, optional: true
|
|
13
13
|
belongs_to :carton, class_name: "Spree::Carton", inverse_of: :inventory_units, optional: true
|
|
14
14
|
belongs_to :line_item, class_name: "Spree::LineItem", inverse_of: :inventory_units, optional: true
|
|
@@ -13,7 +13,7 @@ module Spree
|
|
|
13
13
|
class CurrencyMismatch < StandardError; end
|
|
14
14
|
|
|
15
15
|
belongs_to :order, class_name: "Spree::Order", inverse_of: :line_items, touch: true, optional: true
|
|
16
|
-
belongs_to :variant, -> {
|
|
16
|
+
belongs_to :variant, -> { with_discarded }, class_name: "Spree::Variant", inverse_of: :line_items, optional: true
|
|
17
17
|
belongs_to :tax_category, class_name: "Spree::TaxCategory", optional: true
|
|
18
18
|
|
|
19
19
|
has_one :product, through: :variant
|
|
@@ -33,6 +33,7 @@ module Spree
|
|
|
33
33
|
greater_than: -1
|
|
34
34
|
}
|
|
35
35
|
validates :price, numericality: true
|
|
36
|
+
validate :price_match_order_currency
|
|
36
37
|
|
|
37
38
|
after_save :update_inventory
|
|
38
39
|
|
|
@@ -42,7 +43,7 @@ module Spree
|
|
|
42
43
|
delegate :name, :description, :sku, :should_track_inventory?, to: :variant
|
|
43
44
|
delegate :currency, to: :order, allow_nil: true
|
|
44
45
|
|
|
45
|
-
attr_accessor :target_shipment
|
|
46
|
+
attr_accessor :target_shipment, :price_currency
|
|
46
47
|
|
|
47
48
|
self.whitelisted_ransackable_associations = ['variant']
|
|
48
49
|
self.whitelisted_ransackable_attributes = ['variant_id']
|
|
@@ -111,9 +112,11 @@ module Spree
|
|
|
111
112
|
def money_price=(money)
|
|
112
113
|
if !money
|
|
113
114
|
self.price = nil
|
|
114
|
-
elsif money.currency.iso_code != currency
|
|
115
|
-
|
|
115
|
+
elsif money.currency.iso_code != currency && Spree::Config.raise_with_invalid_currency
|
|
116
|
+
line_item_errors = ActiveModel::Errors.new(self)
|
|
117
|
+
raise CurrencyMismatch, line_item_errors.generate_message(:price, :does_not_match_order_currency, locale: :en)
|
|
116
118
|
else
|
|
119
|
+
self.price_currency = money.currency.iso_code
|
|
117
120
|
self.price = money.to_d
|
|
118
121
|
end
|
|
119
122
|
end
|
|
@@ -202,5 +205,11 @@ module Spree
|
|
|
202
205
|
def destroy_inventory_units
|
|
203
206
|
inventory_units.destroy_all
|
|
204
207
|
end
|
|
208
|
+
|
|
209
|
+
def price_match_order_currency
|
|
210
|
+
return if price_currency.blank? || price_currency == currency
|
|
211
|
+
|
|
212
|
+
errors.add(:price, :does_not_match_order_currency)
|
|
213
|
+
end
|
|
205
214
|
end
|
|
206
215
|
end
|
|
@@ -15,7 +15,7 @@ module Spree
|
|
|
15
15
|
has_many :product_option_types, dependent: :destroy, inverse_of: :option_type
|
|
16
16
|
has_many :products, through: :product_option_types
|
|
17
17
|
|
|
18
|
-
validates :name, presence: true, uniqueness: { allow_blank: true }
|
|
18
|
+
validates :name, presence: true, uniqueness: { allow_blank: true, case_sensitive: true }
|
|
19
19
|
validates :presentation, presence: true
|
|
20
20
|
|
|
21
21
|
default_scope -> { order(:position) }
|
|
@@ -8,13 +8,13 @@ module Spree
|
|
|
8
8
|
has_many :option_values_variants, dependent: :destroy
|
|
9
9
|
has_many :variants, through: :option_values_variants
|
|
10
10
|
|
|
11
|
-
validates :name, presence: true, uniqueness: { scope: :option_type_id, allow_blank: true }
|
|
11
|
+
validates :name, presence: true, uniqueness: { scope: :option_type_id, allow_blank: true, case_sensitive: true }
|
|
12
12
|
validates :presentation, presence: true
|
|
13
13
|
|
|
14
14
|
after_save :touch, if: :saved_changes?
|
|
15
15
|
after_touch :touch_all_variants
|
|
16
16
|
|
|
17
|
-
delegate :name, :presentation, to: :option_type, prefix: :option_type
|
|
17
|
+
delegate :name, :presentation, to: :option_type, prefix: :option_type, allow_nil: true
|
|
18
18
|
|
|
19
19
|
self.whitelisted_ransackable_attributes = %w[name presentation]
|
|
20
20
|
|
data/app/models/spree/order.rb
CHANGED
|
@@ -23,10 +23,18 @@ module Spree
|
|
|
23
23
|
ORDER_NUMBER_LETTERS = false
|
|
24
24
|
ORDER_NUMBER_PREFIX = 'R'
|
|
25
25
|
|
|
26
|
-
include Spree::
|
|
26
|
+
include ::Spree::Config.state_machines.order
|
|
27
|
+
|
|
27
28
|
include Spree::Order::Payments
|
|
28
29
|
|
|
29
|
-
class InsufficientStock < StandardError
|
|
30
|
+
class InsufficientStock < StandardError
|
|
31
|
+
attr_reader :items
|
|
32
|
+
|
|
33
|
+
def initialize(message = nil, items: {})
|
|
34
|
+
@items = items
|
|
35
|
+
super message
|
|
36
|
+
end
|
|
37
|
+
end
|
|
30
38
|
class CannotRebuildShipments < StandardError; end
|
|
31
39
|
|
|
32
40
|
extend Spree::DisplayMoney
|
|
@@ -42,8 +50,9 @@ module Spree
|
|
|
42
50
|
go_to_state :confirm
|
|
43
51
|
end
|
|
44
52
|
|
|
53
|
+
ransack_alias :bill_address_firstname_or_lastname, :bill_address_firstname_or_bill_address_lastname
|
|
45
54
|
self.whitelisted_ransackable_associations = %w[shipments user order_promotions promotions bill_address ship_address line_items]
|
|
46
|
-
self.whitelisted_ransackable_attributes = %w[completed_at created_at email number state payment_state shipment_state total store_id]
|
|
55
|
+
self.whitelisted_ransackable_attributes = %w[bill_address_firstname_or_lastname completed_at created_at email number state payment_state shipment_state total store_id]
|
|
47
56
|
|
|
48
57
|
attr_reader :coupon_code
|
|
49
58
|
attr_accessor :temporary_address
|
|
@@ -97,6 +106,8 @@ module Spree
|
|
|
97
106
|
|
|
98
107
|
# Returns
|
|
99
108
|
has_many :return_authorizations, dependent: :destroy, inverse_of: :order
|
|
109
|
+
has_many :return_items, through: :inventory_units
|
|
110
|
+
has_many :customer_returns, through: :return_items
|
|
100
111
|
has_many :reimbursements, inverse_of: :order
|
|
101
112
|
has_many :refunds, through: :payments
|
|
102
113
|
|
|
@@ -125,7 +136,7 @@ module Spree
|
|
|
125
136
|
validates :email, presence: true, if: :require_email
|
|
126
137
|
validates :email, 'spree/email' => true, allow_blank: true
|
|
127
138
|
validates :guest_token, presence: { allow_nil: true }
|
|
128
|
-
validates :number, presence: true, uniqueness: { allow_blank: true }
|
|
139
|
+
validates :number, presence: true, uniqueness: { allow_blank: true, case_sensitive: true }
|
|
129
140
|
validates :store_id, presence: true
|
|
130
141
|
|
|
131
142
|
def self.find_by_param(value)
|
|
@@ -136,9 +147,10 @@ module Spree
|
|
|
136
147
|
find_by! number: value
|
|
137
148
|
end
|
|
138
149
|
|
|
139
|
-
delegate :firstname, :lastname, to: :bill_address, prefix: true, allow_nil: true
|
|
150
|
+
delegate :name, :firstname, :lastname, to: :bill_address, prefix: true, allow_nil: true
|
|
140
151
|
alias_method :billing_firstname, :bill_address_firstname
|
|
141
152
|
alias_method :billing_lastname, :bill_address_lastname
|
|
153
|
+
alias_method :billing_name, :bill_address_name
|
|
142
154
|
|
|
143
155
|
class_attribute :update_hooks
|
|
144
156
|
self.update_hooks = Set.new
|
|
@@ -181,6 +193,9 @@ module Spree
|
|
|
181
193
|
# Use this method in other gems that wish to register their own custom logic
|
|
182
194
|
# that should be called after Order#update
|
|
183
195
|
def self.register_update_hook(hook)
|
|
196
|
+
Spree::Deprecation.warn \
|
|
197
|
+
"Spree::Order::update_hooks are deprecated. Please remove them " \
|
|
198
|
+
"and subscribe to `order_recalculated` and/or `order_finalized` event instead", caller(1)
|
|
184
199
|
update_hooks.add(hook)
|
|
185
200
|
end
|
|
186
201
|
|
|
@@ -192,7 +207,7 @@ module Spree
|
|
|
192
207
|
|
|
193
208
|
# For compatiblity with Calculator::PriceSack
|
|
194
209
|
def amount
|
|
195
|
-
line_items.
|
|
210
|
+
line_items.sum(&:amount)
|
|
196
211
|
end
|
|
197
212
|
|
|
198
213
|
# Sum of all line item amounts after promotions, before added tax
|
|
@@ -217,7 +232,7 @@ module Spree
|
|
|
217
232
|
end
|
|
218
233
|
|
|
219
234
|
def shipping_discount
|
|
220
|
-
shipment_adjustments.eligible.sum(:amount) * - 1
|
|
235
|
+
shipment_adjustments.credit.eligible.sum(:amount) * - 1
|
|
221
236
|
end
|
|
222
237
|
|
|
223
238
|
def to_param
|
|
@@ -287,7 +302,11 @@ module Spree
|
|
|
287
302
|
end
|
|
288
303
|
|
|
289
304
|
def all_inventory_units_returned?
|
|
290
|
-
|
|
305
|
+
# Inventory units are transitioned to the "return" state through CustomerReturn and
|
|
306
|
+
# ReturnItem instead of using Order#inventory_units, thus making the latter method
|
|
307
|
+
# potentially return stale data. This situation requires to *reload* `inventory_units`
|
|
308
|
+
# in order to pick-up the latest changes and make the check on `returned?` reliable.
|
|
309
|
+
inventory_units.reload.all?(&:returned?)
|
|
291
310
|
end
|
|
292
311
|
|
|
293
312
|
def contents
|
|
@@ -398,7 +417,7 @@ module Spree
|
|
|
398
417
|
|
|
399
418
|
def name
|
|
400
419
|
if (address = bill_address || ship_address)
|
|
401
|
-
|
|
420
|
+
address.name
|
|
402
421
|
end
|
|
403
422
|
end
|
|
404
423
|
|
|
@@ -431,11 +450,18 @@ module Spree
|
|
|
431
450
|
|
|
432
451
|
updater.update_shipment_state
|
|
433
452
|
save!
|
|
434
|
-
updater.run_hooks
|
|
453
|
+
updater.run_hooks if update_hooks.any?
|
|
435
454
|
|
|
436
455
|
touch :completed_at
|
|
437
456
|
|
|
438
457
|
Spree::Event.fire 'order_finalized', order: self
|
|
458
|
+
|
|
459
|
+
if method(:deliver_order_confirmation_email).owner != self.class
|
|
460
|
+
Spree::Deprecation.warn \
|
|
461
|
+
"deliver_order_confirmation_email has been deprecated and moved to " \
|
|
462
|
+
"Spree::MailerSubscriber#order_finalized, please move there any customizations.",
|
|
463
|
+
caller(1)
|
|
464
|
+
end
|
|
439
465
|
end
|
|
440
466
|
|
|
441
467
|
def fulfill!
|
|
@@ -444,6 +470,16 @@ module Spree
|
|
|
444
470
|
save!
|
|
445
471
|
end
|
|
446
472
|
|
|
473
|
+
def deliver_order_confirmation_email
|
|
474
|
+
Spree::Deprecation.warn \
|
|
475
|
+
"deliver_order_confirmation_email has been deprecated and moved to " \
|
|
476
|
+
"Spree::MailerSubscriber#order_finalized.",
|
|
477
|
+
caller(1)
|
|
478
|
+
|
|
479
|
+
Spree::Config.order_mailer_class.confirm_email(order).deliver_later
|
|
480
|
+
order.update_column(:confirmation_delivered, true)
|
|
481
|
+
end
|
|
482
|
+
|
|
447
483
|
# Helper methods for checkout steps
|
|
448
484
|
def paid?
|
|
449
485
|
%w(paid credit_owed).include?(payment_state)
|
|
@@ -529,6 +565,18 @@ module Spree
|
|
|
529
565
|
end
|
|
530
566
|
end
|
|
531
567
|
|
|
568
|
+
def ensure_billing_address
|
|
569
|
+
return unless billing_address_required?
|
|
570
|
+
return if bill_address&.valid?
|
|
571
|
+
|
|
572
|
+
errors.add(:base, I18n.t('spree.bill_address_required'))
|
|
573
|
+
false
|
|
574
|
+
end
|
|
575
|
+
|
|
576
|
+
def billing_address_required?
|
|
577
|
+
Spree::Config.billing_address_required
|
|
578
|
+
end
|
|
579
|
+
|
|
532
580
|
def create_proposed_shipments
|
|
533
581
|
if completed?
|
|
534
582
|
raise CannotRebuildShipments.new(I18n.t('spree.cannot_rebuild_shipments_order_completed'))
|
|
@@ -540,6 +588,13 @@ module Spree
|
|
|
540
588
|
end
|
|
541
589
|
end
|
|
542
590
|
|
|
591
|
+
def create_shipments_for_line_item(line_item)
|
|
592
|
+
units = Spree::Stock::InventoryUnitBuilder.new(self).missing_units_for_line_item(line_item)
|
|
593
|
+
Spree::Config.stock.coordinator_class.new(self, units).shipments.each do |shipment|
|
|
594
|
+
shipments << shipment
|
|
595
|
+
end
|
|
596
|
+
end
|
|
597
|
+
|
|
543
598
|
def apply_shipping_promotions
|
|
544
599
|
Spree::PromotionHandler::Shipping.new(self).activate
|
|
545
600
|
recalculate
|
|
@@ -591,10 +646,9 @@ module Spree
|
|
|
591
646
|
def canceled_by(user)
|
|
592
647
|
transaction do
|
|
593
648
|
cancel!
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
)
|
|
649
|
+
# rubocop:disable Rails/SkipsModelValidations
|
|
650
|
+
update_column(:canceler_id, user.id)
|
|
651
|
+
# rubocop:enable Rails/SkipsModelValidations
|
|
598
652
|
end
|
|
599
653
|
end
|
|
600
654
|
|
|
@@ -714,8 +768,8 @@ module Spree
|
|
|
714
768
|
# @note This doesn't persist the change bill_address or ship_address
|
|
715
769
|
def assign_default_user_addresses
|
|
716
770
|
if user
|
|
717
|
-
bill_address =
|
|
718
|
-
ship_address =
|
|
771
|
+
bill_address = user.bill_address
|
|
772
|
+
ship_address = user.ship_address
|
|
719
773
|
# this is one of 2 places still using User#bill_address
|
|
720
774
|
self.bill_address ||= bill_address if bill_address.try!(:valid?)
|
|
721
775
|
# Skip setting ship address if order doesn't have a delivery checkout step
|
|
@@ -760,7 +814,9 @@ module Spree
|
|
|
760
814
|
deprecate assign_default_credit_card: :add_default_payment_from_wallet, deprecator: Spree::Deprecation
|
|
761
815
|
|
|
762
816
|
def record_ip_address(ip_address)
|
|
763
|
-
if
|
|
817
|
+
if new_record?
|
|
818
|
+
self.last_ip_address = ip_address
|
|
819
|
+
elsif last_ip_address != ip_address
|
|
764
820
|
update_column(:last_ip_address, ip_address)
|
|
765
821
|
end
|
|
766
822
|
end
|
|
@@ -873,14 +929,29 @@ module Spree
|
|
|
873
929
|
end
|
|
874
930
|
|
|
875
931
|
def after_cancel
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
payments.store_credits.pending.each(&:void_transaction!)
|
|
932
|
+
cancel_shipments!
|
|
933
|
+
cancel_payments!
|
|
879
934
|
|
|
880
935
|
send_cancel_email
|
|
936
|
+
# rubocop:disable Rails/SkipsModelValidations
|
|
937
|
+
update_column(:canceled_at, Time.current)
|
|
938
|
+
# rubocop:enable Rails/SkipsModelValidations
|
|
881
939
|
recalculate
|
|
882
940
|
end
|
|
883
941
|
|
|
942
|
+
def cancel_shipments!
|
|
943
|
+
shipments.each(&:cancel!)
|
|
944
|
+
end
|
|
945
|
+
|
|
946
|
+
def cancel_payments!
|
|
947
|
+
payments.each do |payment|
|
|
948
|
+
next if payment.fully_refunded?
|
|
949
|
+
next unless payment.pending? || payment.completed?
|
|
950
|
+
|
|
951
|
+
payment.cancel!
|
|
952
|
+
end
|
|
953
|
+
end
|
|
954
|
+
|
|
884
955
|
def send_cancel_email
|
|
885
956
|
Spree::Config.order_mailer_class.cancel_email(self).deliver_later
|
|
886
957
|
end
|
|
@@ -82,6 +82,7 @@ module Spree
|
|
|
82
82
|
|
|
83
83
|
after_transition to: :complete, do: :add_payment_sources_to_wallet
|
|
84
84
|
before_transition to: :payment, do: :add_default_payment_from_wallet
|
|
85
|
+
before_transition to: :payment, do: :ensure_billing_address
|
|
85
86
|
|
|
86
87
|
before_transition to: :confirm, do: :add_store_credit_payments
|
|
87
88
|
|
|
@@ -23,8 +23,14 @@ module Spree
|
|
|
23
23
|
existing_quantity = inventory_units.count
|
|
24
24
|
desired_quantity = line_item.quantity - existing_quantity
|
|
25
25
|
if desired_quantity > 0
|
|
26
|
-
shipment ||= determine_target_shipment
|
|
27
|
-
|
|
26
|
+
shipment ||= determine_target_shipment(desired_quantity)
|
|
27
|
+
if shipment
|
|
28
|
+
add_to_shipment(shipment, desired_quantity)
|
|
29
|
+
else
|
|
30
|
+
order.create_shipments_for_line_item(line_item).each do |new_shipment|
|
|
31
|
+
new_shipment.finalize!
|
|
32
|
+
end
|
|
33
|
+
end
|
|
28
34
|
elsif desired_quantity < 0
|
|
29
35
|
remove(-desired_quantity, shipment)
|
|
30
36
|
end
|
|
@@ -48,12 +54,18 @@ module Spree
|
|
|
48
54
|
# Returns either one of the shipment:
|
|
49
55
|
#
|
|
50
56
|
# first unshipped that already includes this variant
|
|
51
|
-
# first unshipped that's leaving from a stock_location that stocks this variant
|
|
52
|
-
|
|
57
|
+
# first unshipped that's leaving from a stock_location that stocks this variant, with availability check
|
|
58
|
+
# first unshipped that's leaving from a stock_location that stocks this variant, without availability check
|
|
59
|
+
def determine_target_shipment(quantity)
|
|
53
60
|
potential_shipments = order.shipments.select(&:ready_or_pending?)
|
|
54
61
|
|
|
55
62
|
potential_shipments.detect do |shipment|
|
|
56
63
|
shipment.include?(variant)
|
|
64
|
+
end || potential_shipments.detect do |shipment|
|
|
65
|
+
stock_item = shipment.stock_location.stock_item(variant.id)
|
|
66
|
+
if stock_item
|
|
67
|
+
stock_item.backorderable? || stock_item.count_on_hand >= quantity
|
|
68
|
+
end
|
|
57
69
|
end || potential_shipments.detect do |shipment|
|
|
58
70
|
variant.stock_location_ids.include?(shipment.stock_location_id)
|
|
59
71
|
end
|