spree_core 4.3.3 → 4.4.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/finders/spree/option_values/find_available.rb +9 -1
- data/app/finders/spree/products/find.rb +1 -1
- data/app/helpers/spree/base_helper.rb +1 -5
- data/app/helpers/spree/currency_helper.rb +1 -1
- data/app/helpers/spree/products_helper.rb +1 -15
- data/app/jobs/spree/base_job.rb +4 -0
- data/app/jobs/spree/stock_locations/stock_items/create_job.rb +13 -0
- data/app/models/concerns/spree/default_price.rb +1 -1
- data/app/models/concerns/spree/display_money.rb +3 -1
- data/app/models/concerns/spree/memoized_data.rb +1 -1
- data/app/models/concerns/spree/metadata.rb +10 -0
- data/app/models/concerns/spree/multi_store_resource.rb +1 -1
- data/app/models/concerns/spree/named_type.rb +1 -1
- data/app/models/concerns/spree/number_identifier.rb +18 -0
- data/app/models/concerns/spree/product_scopes.rb +52 -22
- data/app/models/concerns/spree/unique_name.rb +10 -0
- data/app/models/concerns/spree/user_methods.rb +9 -0
- data/app/models/concerns/spree/user_reporting.rb +1 -1
- data/app/models/concerns/spree/user_roles.rb +20 -2
- data/app/models/spree/ability.rb +11 -3
- data/app/models/spree/address.rb +4 -2
- data/app/models/spree/adjustment.rb +1 -0
- data/app/models/spree/app_configuration.rb +21 -24
- data/app/models/spree/asset.rb +1 -0
- data/app/models/spree/base.rb +14 -0
- data/app/models/spree/calculator/flat_rate.rb +1 -1
- data/app/models/spree/calculator/flexi_rate.rb +1 -1
- data/app/models/spree/calculator/price_sack.rb +1 -1
- data/app/models/spree/calculator/shipping/digital_delivery.rb +22 -0
- data/app/models/spree/calculator/shipping/flat_rate.rb +1 -1
- data/app/models/spree/calculator/shipping/flexi_rate.rb +1 -1
- data/app/models/spree/calculator/shipping/per_item.rb +1 -1
- data/app/models/spree/calculator/shipping/price_sack.rb +1 -1
- data/app/models/spree/calculator.rb +1 -1
- data/app/models/spree/cms_page.rb +3 -3
- data/app/models/spree/cms_section.rb +1 -1
- data/app/models/spree/country.rb +4 -2
- data/app/models/spree/credit_card.rb +10 -0
- data/app/models/spree/customer_return.rb +3 -1
- data/app/models/spree/digital.rb +15 -0
- data/app/models/spree/digital_link.rb +50 -0
- data/app/models/spree/gateway/bogus.rb +4 -0
- data/app/models/spree/image/configuration/active_storage.rb +2 -19
- data/app/models/spree/legacy_user.rb +1 -0
- data/app/models/spree/line_item.rb +11 -3
- data/app/models/spree/option_type.rb +4 -4
- data/app/models/spree/option_value.rb +2 -0
- data/app/models/spree/order/checkout.rb +7 -1
- data/app/models/spree/order/digital.rb +33 -0
- data/app/models/spree/order/store_credit.rb +0 -8
- data/app/models/spree/order.rb +34 -22
- data/app/models/spree/order_inventory.rb +1 -1
- data/app/models/spree/order_promotion.rb +1 -1
- data/app/models/spree/payment/processing.rb +1 -0
- data/app/models/spree/payment.rb +25 -4
- data/app/models/spree/payment_method.rb +3 -1
- data/app/models/spree/preference.rb +2 -1
- data/app/models/spree/preferences/configuration.rb +2 -2
- data/app/models/spree/preferences/store.rb +1 -1
- data/app/models/spree/price.rb +1 -1
- data/app/models/spree/product.rb +18 -17
- data/app/models/spree/promotion/rules/product.rb +1 -1
- data/app/models/spree/promotion.rb +3 -1
- data/app/models/spree/promotion_action.rb +1 -1
- data/app/models/spree/property.rb +1 -0
- data/app/models/spree/prototype.rb +2 -0
- data/app/models/spree/refund.rb +2 -0
- data/app/models/spree/reimbursement.rb +1 -1
- data/app/models/spree/return_authorization.rb +3 -2
- data/app/models/spree/return_item.rb +1 -1
- data/app/models/spree/role.rb +2 -2
- data/app/models/spree/shipment.rb +4 -30
- data/app/models/spree/shipping_category.rb +1 -1
- data/app/models/spree/shipping_method.rb +2 -0
- data/app/models/spree/state.rb +1 -1
- data/app/models/spree/stock/quantifier.rb +1 -1
- data/app/models/spree/stock/splitter/digital.rb +35 -0
- data/app/models/spree/stock_item.rb +2 -2
- data/app/models/spree/stock_location.rb +6 -28
- data/app/models/spree/stock_movement.rb +3 -0
- data/app/models/spree/stock_transfer.rb +3 -6
- data/app/models/spree/store.rb +41 -8
- data/app/models/spree/store_credit.rb +5 -1
- data/app/models/spree/store_credit_category.rb +2 -0
- data/app/models/spree/store_credit_event.rb +2 -7
- data/app/models/spree/store_credit_type.rb +2 -0
- data/app/models/spree/tax_category.rb +3 -1
- data/app/models/spree/tax_rate.rb +3 -1
- data/app/models/spree/taxon.rb +11 -0
- data/app/models/spree/taxon_image/configuration/active_storage.rb +2 -12
- data/app/models/spree/taxonomy.rb +7 -0
- data/app/models/spree/variant.rb +20 -10
- data/app/models/spree/wished_item.rb +29 -0
- data/app/models/spree/wishlist.rb +35 -0
- data/app/models/spree/zone.rb +8 -6
- data/app/services/spree/account/addresses/create.rb +1 -17
- data/app/services/spree/account/addresses/update.rb +1 -22
- data/app/services/spree/addresses/create.rb +24 -0
- data/app/services/spree/addresses/helper.rb +41 -0
- data/app/services/spree/addresses/update.rb +27 -0
- data/app/services/spree/cart/add_item.rb +4 -2
- data/app/services/spree/cart/create.rb +4 -2
- data/app/services/spree/cart/update.rb +2 -2
- data/app/services/spree/checkout/add_store_credit.rb +4 -1
- data/app/services/spree/checkout/select_shipping_method.rb +49 -0
- data/app/services/spree/checkout/update.rb +3 -10
- data/app/services/spree/line_items/create.rb +20 -0
- data/app/services/spree/line_items/destroy.rb +18 -0
- data/app/services/spree/line_items/helper.rb +11 -0
- data/app/services/spree/line_items/update.rb +17 -0
- data/app/services/spree/orders/approve.rb +18 -0
- data/app/services/spree/orders/cancel.rb +18 -0
- data/app/services/spree/payments/create.rb +66 -0
- data/app/services/spree/seeds/all.rb +26 -0
- data/app/services/spree/seeds/countries.rb +50 -0
- data/app/services/spree/seeds/default_reimbursement_types.rb +12 -0
- data/app/services/spree/seeds/roles.rb +11 -0
- data/app/services/spree/seeds/shipping_categories.rb +12 -0
- data/app/services/spree/seeds/states.rb +72 -0
- data/app/services/spree/seeds/stock_locations.rb +18 -0
- data/app/services/spree/seeds/store_credit_categories.rb +12 -0
- data/app/services/spree/seeds/stores.rb +31 -0
- data/app/services/spree/seeds/zones.rb +39 -0
- data/app/services/spree/shipments/add_item.rb +32 -0
- data/app/services/spree/shipments/change_state.rb +14 -0
- data/app/services/spree/shipments/create.rb +48 -0
- data/app/services/spree/shipments/helper.rb +23 -0
- data/app/services/spree/shipments/remove_item.rb +55 -0
- data/app/services/spree/shipments/update.rb +40 -0
- data/app/services/spree/stock_locations/stock_items/create.rb +31 -0
- data/app/services/spree/wallet/create_payment_source.rb +26 -0
- data/app/validators/spree/url_validator.rb +23 -0
- data/brakeman.ignore +20 -0
- data/config/initializers/active_storage.rb +0 -6
- data/config/locales/en.yml +14 -168
- data/db/migrate/20210914000000_spree_four_three.rb +1205 -0
- data/db/migrate/20210915064321_add_metadata_to_spree_orders.rb +13 -0
- data/db/migrate/20210915064322_add_metadata_to_spree_products.rb +13 -0
- data/db/migrate/20210915064323_add_metadata_to_spree_variants.rb +13 -0
- data/db/migrate/20210915064324_add_metadata_to_spree_line_items.rb +13 -0
- data/db/migrate/20210915064325_add_metadata_to_spree_shipments.rb +13 -0
- data/db/migrate/20210915064326_add_metadata_to_spree_payments.rb +13 -0
- data/db/migrate/20210915064327_add_metadata_to_spree_taxons_and_taxonomies.rb +18 -0
- data/db/migrate/20210915064328_add_metadata_to_spree_stock_transfers.rb +13 -0
- data/db/migrate/20210915064329_add_metadata_to_spree_multiple_tables.rb +30 -0
- data/db/migrate/20210920090344_add_deleted_at_to_spree_stores.rb +8 -0
- data/db/migrate/20210921070812_rename_column_access_hash_to_token.rb +8 -0
- data/db/migrate/20210921070813_create_spree_wishlists.rb +18 -0
- data/db/migrate/20210921070814_create_spree_wished_products.rb +16 -0
- data/db/migrate/20210921070815_rename_spree_wished_products_to_spree_wished_items.rb +5 -0
- data/db/migrate/20210921090344_add_unique_stock_item_stock_location_variant_deleted_at_index.rb +5 -0
- data/db/migrate/20210929090344_create_stock_item_stock_location_id_variant_id_coalesce_deleted_at_unique_index.rb +32 -0
- data/db/migrate/20210929091444_create_spree_digital_links.rb +13 -0
- data/db/migrate/20210929093238_create_spree_digitals.rb +9 -0
- data/db/migrate/20210930143043_rename_secret_to_token_on_spree_digital_links.rb +5 -0
- data/db/migrate/20210930155649_add_settings_to_spree_stores.rb +11 -0
- data/db/seeds.rb +1 -5
- data/lib/generators/spree/dummy/dummy_generator.rb +1 -1
- data/lib/generators/spree/dummy/templates/rails/database.yml +20 -18
- data/{app/models/spree → lib/spree/core}/app_dependencies.rb +32 -4
- data/lib/spree/core/controller_helpers/auth.rb +4 -4
- data/lib/spree/core/controller_helpers/common.rb +15 -1
- data/lib/spree/core/controller_helpers/currency.rb +1 -1
- data/lib/spree/core/engine.rb +10 -4
- data/lib/spree/core/importer/product.rb +1 -1
- data/lib/spree/core/number_generator.rb +0 -2
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/core.rb +21 -13
- data/lib/spree/money.rb +2 -2
- data/lib/spree/permitted_attributes.rb +31 -13
- data/lib/spree/testing_support/authorization_helpers.rb +3 -1
- data/lib/spree/testing_support/capybara_config.rb +14 -19
- data/lib/spree/testing_support/capybara_ext.rb +1 -6
- data/lib/spree/testing_support/common_rake.rb +22 -4
- data/lib/spree/testing_support/factories/asset_factory.rb +15 -0
- data/lib/spree/testing_support/factories/cms_section_factory.rb +2 -2
- data/lib/spree/testing_support/factories/digital_factory.rb +10 -0
- data/lib/spree/testing_support/factories/digital_link_factory.rb +6 -0
- data/lib/spree/testing_support/factories/log_entry_factory.rb +6 -0
- data/lib/spree/testing_support/factories/order_factory.rb +4 -1
- data/lib/spree/testing_support/factories/payment_capture_event_factory.rb +6 -0
- data/lib/spree/testing_support/factories/payment_factory.rb +3 -3
- data/lib/spree/testing_support/factories/promotion_action_factory.rb +5 -0
- data/lib/spree/testing_support/factories/reimbursement_credit_factory.rb +7 -0
- data/lib/spree/testing_support/factories/shipping_rate_factory.rb +7 -0
- data/lib/spree/testing_support/factories/state_change_factory.rb +8 -0
- data/lib/spree/testing_support/factories/stock_item_factory.rb +7 -0
- data/lib/spree/testing_support/factories/stock_location_factory.rb +1 -1
- data/lib/spree/testing_support/factories/stock_transfer_factory.rb +9 -0
- data/lib/spree/testing_support/factories/store_credit_factory.rb +1 -1
- data/lib/spree/testing_support/factories/store_credit_type_factory.rb +5 -0
- data/lib/spree/testing_support/factories/tax_rate_factory.rb +1 -0
- data/lib/spree/testing_support/factories/user_factory.rb +2 -0
- data/lib/spree/testing_support/factories/wished_variant_factory.rb +6 -0
- data/lib/spree/testing_support/factories/wishlist_factory.rb +18 -0
- data/lib/spree/testing_support/jobs.rb +9 -0
- data/lib/tasks/core.rake +4 -4
- data/spree_core.gemspec +2 -1
- metadata +104 -324
- data/app/models/spree/order_contents.rb +0 -31
- data/app/services/spree/account/addresses/helper.rb +0 -43
- data/app/services/spree/build_localized_redirect_url.rb +0 -101
- data/db/default/spree/countries.rb +0 -24
- data/db/default/spree/default_reimbursement_type.rb +0 -1
- data/db/default/spree/roles.rb +0 -2
- data/db/default/spree/states.rb +0 -49
- data/db/default/spree/store_credit_categories.rb +0 -1
- data/db/default/spree/stores.rb +0 -21
- data/db/default/spree/zones.rb +0 -29
- data/db/migrate/20120831092320_spree_one_two.rb +0 -481
- data/db/migrate/20120831092359_spree_promo_one_two.rb +0 -45
- data/db/migrate/20120905145253_add_tax_rate_label.rb +0 -5
- data/db/migrate/20120905151823_add_toggle_tax_rate_display.rb +0 -5
- data/db/migrate/20120929093553_remove_unused_preference_columns.rb +0 -8
- data/db/migrate/20121009142519_add_lock_version_to_variant.rb +0 -5
- data/db/migrate/20121010142909_add_states_required_to_countries.rb +0 -5
- data/db/migrate/20121012071449_add_on_demand_to_product_and_variant.rb +0 -6
- data/db/migrate/20121017010007_remove_not_null_constraint_from_products_on_hand.rb +0 -11
- data/db/migrate/20121031162139_split_prices_from_variants.rb +0 -31
- data/db/migrate/20121107003422_remove_not_null_from_spree_prices_amount.rb +0 -9
- data/db/migrate/20121107184631_add_currency_to_line_items.rb +0 -5
- data/db/migrate/20121107194006_add_currency_to_orders.rb +0 -5
- data/db/migrate/20121109173623_add_cost_currency_to_variants.rb +0 -5
- data/db/migrate/20121111231553_remove_display_on_from_payment_methods.rb +0 -5
- data/db/migrate/20121124203911_add_position_to_taxonomies.rb +0 -5
- data/db/migrate/20121126040517_add_last_ip_to_spree_orders.rb +0 -5
- data/db/migrate/20121213162028_add_state_to_spree_adjustments.rb +0 -6
- data/db/migrate/20130114053446_add_display_on_to_spree_payment_methods.rb +0 -9
- data/db/migrate/20130120201805_add_position_to_product_properties.spree.rb +0 -6
- data/db/migrate/20130203232234_add_identifier_to_spree_payments.rb +0 -5
- data/db/migrate/20130207155350_add_order_id_index_to_payments.rb +0 -9
- data/db/migrate/20130208032954_add_primary_to_spree_products_taxons.rb +0 -5
- data/db/migrate/20130211190146_create_spree_stock_items.rb +0 -14
- data/db/migrate/20130211191120_create_spree_stock_locations.rb +0 -11
- data/db/migrate/20130213191427_create_default_stock.rb +0 -33
- data/db/migrate/20130222032153_add_order_id_index_to_shipments.rb +0 -5
- data/db/migrate/20130226032817_change_meta_description_on_spree_products_to_text.rb +0 -5
- data/db/migrate/20130226191231_add_stock_location_id_to_spree_shipments.rb +0 -5
- data/db/migrate/20130227143905_add_pending_to_inventory_unit.rb +0 -6
- data/db/migrate/20130228164411_remove_on_demand_from_product_and_variant.rb +0 -6
- data/db/migrate/20130228210442_create_shipping_method_zone.rb +0 -21
- data/db/migrate/20130301162745_remove_shipping_category_id_from_shipping_method.rb +0 -5
- data/db/migrate/20130301162924_create_shipping_method_categories.rb +0 -13
- data/db/migrate/20130301205200_add_tracking_url_to_spree_shipping_methods.rb +0 -5
- data/db/migrate/20130304162240_create_spree_shipping_rates.rb +0 -24
- data/db/migrate/20130304192936_remove_category_match_attributes_from_shipping_method.rb +0 -7
- data/db/migrate/20130305143310_create_stock_movements.rb +0 -12
- data/db/migrate/20130306181701_add_address_fields_to_stock_location.rb +0 -22
- data/db/migrate/20130306191917_add_active_field_to_stock_locations.rb +0 -5
- data/db/migrate/20130306195650_add_backorderable_to_stock_item.rb +0 -5
- data/db/migrate/20130307161754_add_default_quantity_to_stock_movement.rb +0 -5
- data/db/migrate/20130318151756_add_source_and_destination_to_stock_movements.rb +0 -8
- data/db/migrate/20130319062004_change_orders_total_precision.rb +0 -8
- data/db/migrate/20130319063911_change_spree_payments_amount_precision.rb +0 -7
- data/db/migrate/20130319064308_change_spree_return_authorization_amount_precision.rb +0 -7
- data/db/migrate/20130319082943_change_adjustments_amount_precision.rb +0 -7
- data/db/migrate/20130319183250_add_originator_to_stock_movement.rb +0 -7
- data/db/migrate/20130319190507_drop_source_and_destination_from_stock_movement.rb +0 -15
- data/db/migrate/20130325163316_migrate_inventory_unit_sold_to_on_hand.rb +0 -9
- data/db/migrate/20130326175857_add_stock_location_to_rma.rb +0 -5
- data/db/migrate/20130328130308_update_shipment_state_for_canceled_orders.rb +0 -15
- data/db/migrate/20130328195253_add_seo_metas_to_taxons.rb +0 -9
- data/db/migrate/20130329134939_remove_stock_item_and_variant_lock.rb +0 -14
- data/db/migrate/20130413230529_add_name_to_spree_credit_cards.rb +0 -5
- data/db/migrate/20130414000512_update_name_fields_on_spree_credit_cards.rb +0 -13
- data/db/migrate/20130417120034_add_index_to_source_columns_on_adjustments.rb +0 -5
- data/db/migrate/20130417120035_update_adjustment_states.rb +0 -16
- data/db/migrate/20130417123427_add_shipping_rates_to_shipments.rb +0 -15
- data/db/migrate/20130418125341_create_spree_stock_transfers.rb +0 -14
- data/db/migrate/20130423110707_drop_products_count_on_hand.rb +0 -5
- data/db/migrate/20130423223847_set_default_shipping_rate_cost.rb +0 -5
- data/db/migrate/20130509115210_add_number_to_stock_transfer.rb +0 -23
- data/db/migrate/20130514151929_add_sku_index_to_spree_variants.rb +0 -5
- data/db/migrate/20130515180736_add_backorderable_default_to_spree_stock_location.rb +0 -5
- data/db/migrate/20130516151222_add_propage_all_variants_to_spree_stock_location.rb +0 -5
- data/db/migrate/20130611054351_rename_shipping_methods_zones_to_spree_shipping_methods_zones.rb +0 -5
- data/db/migrate/20130611185927_add_user_id_index_to_spree_orders.rb +0 -5
- data/db/migrate/20130618041418_add_updated_at_to_spree_countries.rb +0 -9
- data/db/migrate/20130619012236_add_updated_at_to_spree_states.rb +0 -9
- data/db/migrate/20130626232741_add_cvv_result_code_and_cvv_result_message_to_spree_payments.rb +0 -6
- data/db/migrate/20130628021056_add_unique_index_to_permalink_on_spree_products.rb +0 -5
- data/db/migrate/20130628022817_add_unique_index_to_orders_shipments_and_stock_transfers.rb +0 -7
- data/db/migrate/20130708052307_add_deleted_at_to_spree_tax_rates.rb +0 -5
- data/db/migrate/20130711200933_remove_lock_version_from_inventory_units.rb +0 -6
- data/db/migrate/20130718042445_add_cost_price_to_line_item.rb +0 -5
- data/db/migrate/20130718233855_set_backorderable_to_default_to_false.rb +0 -6
- data/db/migrate/20130725031716_add_created_by_id_to_spree_orders.rb +0 -5
- data/db/migrate/20130729214043_index_completed_at_on_spree_orders.rb +0 -5
- data/db/migrate/20130802014537_add_tax_category_id_to_spree_line_items.rb +0 -5
- data/db/migrate/20130802022321_migrate_tax_categories_to_line_items.rb +0 -10
- data/db/migrate/20130806022521_drop_spree_mail_methods.rb +0 -12
- data/db/migrate/20130806145853_set_default_stock_location_on_shipments.rb +0 -8
- data/db/migrate/20130807024301_upgrade_adjustments.rb +0 -46
- data/db/migrate/20130807024302_rename_adjustment_fields.rb +0 -20
- data/db/migrate/20130809164245_add_admin_name_column_to_spree_shipping_methods.rb +0 -5
- data/db/migrate/20130809164330_add_admin_name_column_to_spree_stock_locations.rb +0 -5
- data/db/migrate/20130813004002_add_shipment_total_to_spree_orders.rb +0 -5
- data/db/migrate/20130813140619_expand_order_number_size.rb +0 -9
- data/db/migrate/20130813232134_rename_activators_to_promotions.rb +0 -5
- data/db/migrate/20130815000406_add_adjustment_total_to_line_items.rb +0 -5
- data/db/migrate/20130815024413_add_adjustment_total_to_shipments.rb +0 -5
- data/db/migrate/20130826062534_add_depth_to_spree_taxons.rb +0 -16
- data/db/migrate/20130828234942_add_tax_total_to_line_items_shipments_and_orders.rb +0 -8
- data/db/migrate/20130830001033_add_shipping_category_to_shipping_methods_and_products.rb +0 -15
- data/db/migrate/20130830001159_migrate_old_shipping_calculators.rb +0 -19
- data/db/migrate/20130903183026_add_code_to_spree_promotion_rules.rb +0 -5
- data/db/migrate/20130909115621_change_states_required_for_countries.rb +0 -9
- data/db/migrate/20130915032339_add_deleted_at_to_spree_stock_items.rb +0 -5
- data/db/migrate/20130917024658_remove_promotions_event_name_field.rb +0 -5
- data/db/migrate/20130924040529_add_promo_total_to_line_items_and_shipments_and_orders.rb +0 -7
- data/db/migrate/20131001013410_remove_unused_credit_card_fields.rb +0 -16
- data/db/migrate/20131026154747_add_track_inventory_to_variant.rb +0 -5
- data/db/migrate/20131107132123_add_tax_category_to_variants.rb +0 -6
- data/db/migrate/20131113035136_add_channel_to_spree_orders.rb +0 -5
- data/db/migrate/20131118043959_add_included_to_adjustments.rb +0 -5
- data/db/migrate/20131118050234_rename_tax_total_fields.rb +0 -11
- data/db/migrate/20131118183431_add_line_item_id_to_spree_inventory_units.rb +0 -21
- data/db/migrate/20131120234456_add_updated_at_to_variants.rb +0 -5
- data/db/migrate/20131127001002_add_position_to_classifications.rb +0 -5
- data/db/migrate/20131211112807_create_spree_orders_promotions.rb +0 -8
- data/db/migrate/20131211192741_unique_shipping_method_categories.rb +0 -24
- data/db/migrate/20131218054603_add_item_count_to_spree_orders.rb +0 -5
- data/db/migrate/20140106065820_remove_value_type_from_spree_preferences.rb +0 -8
- data/db/migrate/20140106224208_rename_permalink_to_slug_for_products.rb +0 -5
- data/db/migrate/20140120160805_add_index_to_variant_id_and_currency_on_prices.rb +0 -5
- data/db/migrate/20140124023232_rename_activator_id_in_rules_and_actions_to_promotion_id.rb +0 -6
- data/db/migrate/20140129024326_add_deleted_at_to_spree_prices.rb +0 -5
- data/db/migrate/20140203161722_add_approver_id_and_approved_at_to_orders.rb +0 -6
- data/db/migrate/20140204115338_add_confirmation_delivered_to_spree_orders.rb +0 -5
- data/db/migrate/20140204192230_add_auto_capture_to_payment_methods.rb +0 -5
- data/db/migrate/20140205120320_create_spree_payment_capture_events.rb +0 -12
- data/db/migrate/20140205144710_add_uncaptured_amount_to_payments.rb +0 -5
- data/db/migrate/20140205181631_default_variant_weight_to_zero.rb +0 -11
- data/db/migrate/20140207085910_add_tax_category_id_to_shipping_methods.rb +0 -5
- data/db/migrate/20140207093021_add_tax_rate_id_to_shipping_rates.rb +0 -5
- data/db/migrate/20140211040159_add_pre_tax_amount_to_line_items_and_shipments.rb +0 -6
- data/db/migrate/20140213184916_add_more_indexes.rb +0 -13
- data/db/migrate/20140219060952_add_considered_risky_to_orders.rb +0 -5
- data/db/migrate/20140227112348_add_preference_store_to_everything.rb +0 -8
- data/db/migrate/20140307235515_add_user_id_to_spree_credit_cards.rb +0 -13
- data/db/migrate/20140309023735_migrate_old_preferences.rb +0 -27
- data/db/migrate/20140309024355_create_spree_stores.rb +0 -25
- data/db/migrate/20140309033438_create_store_from_preferences.rb +0 -42
- data/db/migrate/20140315053743_add_timestamps_to_spree_assets.rb +0 -6
- data/db/migrate/20140318191500_create_spree_taxons_promotion_rules.rb +0 -8
- data/db/migrate/20140331100557_add_additional_store_fields.rb +0 -8
- data/db/migrate/20140410141842_add_many_missing_indexes.rb +0 -18
- data/db/migrate/20140410150358_correct_some_polymorphic_index_and_add_more_missing.rb +0 -66
- data/db/migrate/20140415041315_add_user_id_created_by_id_index_to_order.rb +0 -5
- data/db/migrate/20140508151342_change_spree_price_amount_precision.rb +0 -8
- data/db/migrate/20140518174634_add_token_to_spree_orders.rb +0 -5
- data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +0 -29
- data/db/migrate/20140601011216_set_shipment_total_for_users_upgrading.rb +0 -10
- data/db/migrate/20140604135309_drop_credit_card_first_name_and_last_name.rb +0 -6
- data/db/migrate/20140609201656_add_deleted_at_to_spree_promotion_actions.rb +0 -6
- data/db/migrate/20140616202624_remove_uncaptured_amount_from_spree_payments.rb +0 -5
- data/db/migrate/20140625214618_create_spree_refunds.rb +0 -12
- data/db/migrate/20140702140656_create_spree_return_authorization_inventory_unit.rb +0 -12
- data/db/migrate/20140707125621_rename_return_authorization_inventory_unit_to_return_items.rb +0 -5
- data/db/migrate/20140709160534_backfill_line_item_pre_tax_amount.rb +0 -10
- data/db/migrate/20140710041921_recreate_spree_return_authorizations.rb +0 -55
- data/db/migrate/20140710181204_add_amount_fields_to_return_items.rb +0 -7
- data/db/migrate/20140710190048_drop_return_authorization_amount.rb +0 -5
- data/db/migrate/20140713140455_create_spree_return_authorization_reasons.rb +0 -28
- data/db/migrate/20140713140527_create_spree_refund_reasons.rb +0 -14
- data/db/migrate/20140713142214_rename_return_authorization_reason.rb +0 -5
- data/db/migrate/20140715182625_create_spree_promotion_categories.rb +0 -11
- data/db/migrate/20140716204111_drop_received_at_on_return_items.rb +0 -9
- data/db/migrate/20140716212330_add_reception_and_acceptance_status_to_return_items.rb +0 -6
- data/db/migrate/20140717155155_create_default_refund_reason.rb +0 -9
- data/db/migrate/20140717185932_add_default_to_spree_stock_locations.rb +0 -7
- data/db/migrate/20140718133010_create_spree_customer_returns.rb +0 -9
- data/db/migrate/20140718133349_add_customer_return_id_to_return_item.rb +0 -6
- data/db/migrate/20140718195325_create_friendly_id_slugs.rb +0 -15
- data/db/migrate/20140723004419_rename_spree_refund_return_authorization_id.rb +0 -5
- data/db/migrate/20140723152808_increase_return_item_pre_tax_amount_precision.rb +0 -13
- data/db/migrate/20140723214541_copy_product_slugs_to_slug_history.rb +0 -15
- data/db/migrate/20140725131539_create_spree_reimbursements.rb +0 -21
- data/db/migrate/20140728225422_add_promotionable_to_spree_products.rb +0 -5
- data/db/migrate/20140729133613_add_exchange_inventory_unit_foreign_keys.rb +0 -7
- data/db/migrate/20140730155938_add_acceptance_status_errors_to_return_item.rb +0 -5
- data/db/migrate/20140731150017_create_spree_reimbursement_types.rb +0 -20
- data/db/migrate/20140804185157_add_default_to_shipment_cost.rb +0 -10
- data/db/migrate/20140805171035_add_default_to_spree_credit_cards.rb +0 -5
- data/db/migrate/20140806144901_add_type_to_reimbursement_type.rb +0 -9
- data/db/migrate/20140808184039_create_spree_reimbursement_credits.rb +0 -10
- data/db/migrate/20140827170513_add_meta_title_to_spree_products.rb +0 -7
- data/db/migrate/20140911173301_add_kind_to_zone.rb +0 -11
- data/db/migrate/20140924164824_add_code_to_spree_tax_categories.rb +0 -5
- data/db/migrate/20140927193717_default_pre_tax_amount_should_be_zero.rb +0 -6
- data/db/migrate/20141002191113_add_code_to_spree_shipping_methods.rb +0 -5
- data/db/migrate/20141007230328_add_cancel_audit_fields_to_spree_orders.rb +0 -6
- data/db/migrate/20141009204607_add_store_id_to_orders.rb +0 -8
- data/db/migrate/20141012083513_create_spree_taxons_prototypes.rb +0 -8
- data/db/migrate/20141021194502_add_state_lock_version_to_order.rb +0 -5
- data/db/migrate/20141023005240_add_counter_cache_from_spree_variants_to_spree_stock_items.rb +0 -8
- data/db/migrate/20141101231208_fix_adjustment_order_presence.rb +0 -13
- data/db/migrate/20141105213646_update_classifications_positions.rb +0 -9
- data/db/migrate/20141120135441_add_guest_token_index_to_spree_orders.rb +0 -5
- data/db/migrate/20141215232040_remove_token_permissions_table.rb +0 -6
- data/db/migrate/20141215235502_remove_extra_products_slug_index.rb +0 -5
- data/db/migrate/20141217215630_update_product_slug_index.rb +0 -6
- data/db/migrate/20141218025915_rename_identifier_to_number_for_payment.rb +0 -5
- data/db/migrate/20150118210639_create_spree_store_credits.rb +0 -24
- data/db/migrate/20150118211500_create_spree_store_credit_categories.rb +0 -8
- data/db/migrate/20150118212051_create_spree_store_credit_events.rb +0 -17
- data/db/migrate/20150118212101_create_spree_store_credit_types.rb +0 -10
- data/db/migrate/20150121022521_remove_environment_from_payment_method.rb +0 -6
- data/db/migrate/20150122145607_add_resellable_to_return_items.rb +0 -5
- data/db/migrate/20150122202432_add_code_to_spree_promotion_categories.rb +0 -5
- data/db/migrate/20150128032538_remove_environment_from_tracker.rb +0 -8
- data/db/migrate/20150128060325_remove_spree_configurations.rb +0 -16
- data/db/migrate/20150216173445_add_index_to_spree_stock_items_variant_id.rb +0 -13
- data/db/migrate/20150309161154_ensure_payments_have_numbers.rb +0 -13
- data/db/migrate/20150314013438_add_missing_indexes_on_spree_tables.rb +0 -67
- data/db/migrate/20150317174308_remove_duplicated_indexes_from_multi_columns.rb +0 -18
- data/db/migrate/20150324104002_remove_user_index_from_spree_state_changes.rb +0 -14
- data/db/migrate/20150515211137_fix_adjustment_order_id.rb +0 -70
- data/db/migrate/20150522071831_add_position_to_spree_payment_methods.rb +0 -5
- data/db/migrate/20150522181728_add_deleted_at_to_friendly_id_slugs.rb +0 -6
- data/db/migrate/20150609093816_increase_scale_on_pre_tax_amounts.rb +0 -16
- data/db/migrate/20150626181949_add_taxable_adjustment_total_to_line_item.rb +0 -19
- data/db/migrate/20150627090949_migrate_payment_methods_display.rb +0 -12
- data/db/migrate/20150707204155_enable_acts_as_paranoid_on_calculators.rb +0 -6
- data/db/migrate/20150714154102_spree_payment_method_store_credits.rb +0 -12
- data/db/migrate/20150726141425_rename_has_and_belongs_to_associations_to_model_names.rb +0 -18
- data/db/migrate/20150727191614_spree_store_credit_types.rb +0 -11
- data/db/migrate/20150819154308_add_discontinued_to_products_and_variants.rb +0 -68
- data/db/migrate/20151220072838_remove_shipping_method_id_from_spree_orders.rb +0 -13
- data/db/migrate/20160207191757_add_id_column_to_earlier_habtm_tables.rb +0 -16
- data/db/migrate/20160219165458_add_indexes.rb +0 -14
- data/db/migrate/20160509064646_remove_counter_cache_from_spree_variants_to_spree_stock_items.rb +0 -10
- data/db/migrate/20160608090604_add_zipcode_required_to_spree_countries.rb +0 -7
- data/db/migrate/20161014145148_add_created_at_to_variant.rb +0 -8
- data/db/migrate/20161014152814_add_null_false_to_spree_variants_timestamps.rb +0 -6
- data/db/migrate/20161125065505_add_quantity_to_inventory_units.rb +0 -5
- data/db/migrate/20170119122701_add_original_return_item_id_to_spree_inventory_units.rb +0 -29
- data/db/migrate/20170315152755_add_unique_index_on_number_to_spree_orders.rb +0 -16
- data/db/migrate/20170316154338_add_unique_index_on_number_to_spree_stock_transfer.rb +0 -16
- data/db/migrate/20170316205511_add_unique_index_on_number_to_spree_shipment.rb +0 -16
- data/db/migrate/20170320134043_add_unique_index_on_number_to_spree_payments.rb +0 -17
- data/db/migrate/20170320142750_add_unique_index_on_number_to_spree_return_authorizations.rb +0 -16
- data/db/migrate/20170320145040_add_unique_index_on_number_to_spree_customer_returns.rb +0 -16
- data/db/migrate/20170320145518_add_unique_index_on_number_to_spree_reimbursements.rb +0 -16
- data/db/migrate/20170323151450_add_missing_unique_indexes_for_unique_attributes.rb +0 -37
- data/db/migrate/20170329110859_add_index_on_stock_location_to_spree_customer_returns.rb +0 -5
- data/db/migrate/20170329113917_add_index_on_prototype_to_spree_option_type_prototype.rb +0 -19
- data/db/migrate/20170330082155_add_indexes_to_spree_option_value_variant.rb +0 -19
- data/db/migrate/20170330132215_add_index_on_promotion_id_to_order_promotions.rb +0 -5
- data/db/migrate/20170331101758_add_indexes_for_property_prototype.rb +0 -20
- data/db/migrate/20170331103334_add_index_for_prototype_id_to_prototype_taxons.rb +0 -5
- data/db/migrate/20170331110454_add_indexes_to_refunds.rb +0 -6
- data/db/migrate/20170331111757_add_indexes_to_reimbursement_credits.rb +0 -6
- data/db/migrate/20170331115246_add_indexes_to_return_authorizations.rb +0 -6
- data/db/migrate/20170331120125_add_indexes_to_return_items.rb +0 -11
- data/db/migrate/20170331121725_add_index_to_role_users.rb +0 -18
- data/db/migrate/20170331123625_add_index_to_shipping_method_categories.rb +0 -5
- data/db/migrate/20170331123832_add_index_to_shipping_method_zones.rb +0 -20
- data/db/migrate/20170331124251_add_index_to_spree_shipping_rates.rb +0 -6
- data/db/migrate/20170331124513_add_index_to_spree_stock_items.rb +0 -5
- data/db/migrate/20170331124924_add_index_to_spree_stock_movement.rb +0 -5
- data/db/migrate/20170413211707_change_indexes_on_friendly_id_slugs.rb +0 -10
- data/db/migrate/20170722102643_add_analytics_kind_to_spree_trackers.rb +0 -5
- data/db/migrate/20170727103056_rename_tracker_kind_field.rb +0 -5
- data/db/migrate/20171004223836_remove_icon_from_taxons.rb +0 -8
- data/db/migrate/20180222133746_add_unique_index_on_spree_promotions_code.rb +0 -6
- data/db/migrate/20180613080857_rename_guest_token_to_token_in_orders.rb +0 -5
- data/db/migrate/20180915160001_add_timestamps_to_spree_prices.rb +0 -12
- data/db/migrate/20181024100754_add_deleted_at_to_spree_credit_cards.rb +0 -6
- data/db/migrate/20190305121659_add_iso_and_iso3_validation_on_presence_and_uniqueness.rb +0 -18
- data/db/migrate/20190523092729_add_user_id_and_deleted_at_to_spree_addresses.rb +0 -12
- data/db/migrate/20191005121504_add_store_id_to_payment_methods.rb +0 -7
- data/db/migrate/20191016134113_add_deafult_value_for_store_default_currency.rb +0 -5
- data/db/migrate/20191017121054_add_supported_currencies_to_store.rb +0 -11
- data/db/migrate/20200102141311_add_social_to_spree_stores.rb +0 -10
- data/db/migrate/20200212144523_add_hide_from_nav_to_taxons.rb +0 -5
- data/db/migrate/20200308210757_add_default_locale_to_spree_store.rb +0 -7
- data/db/migrate/20200310145140_add_customer_support_email_to_spree_store.rb +0 -7
- data/db/migrate/20200421095017_add_compare_at_amount_to_spree_prices.rb +0 -7
- data/db/migrate/20200423123001_add_default_country_id_to_spree_store.rb +0 -9
- data/db/migrate/20200430072209_add_footer_fields_to_spree_stores.rb +0 -8
- data/db/migrate/20200513154939_add_show_property_to_spree_product_properties.rb +0 -5
- data/db/migrate/20200607161221_add_store_owner_order_notification_delivered_to_spree_orders.rb +0 -7
- data/db/migrate/20200607161222_add_new_order_notifications_email_to_spree_stores.rb +0 -7
- data/db/migrate/20200610113542_add_label_to_spree_addresses.rb +0 -5
- data/db/migrate/20200826075557_add_unique_index_on_taxon_id_and_product_id_to_spree_products_taxons.rb +0 -5
- data/db/migrate/20201006110150_add_checkout_zone_field_to_store.rb +0 -12
- data/db/migrate/20201012091259_add_filterable_column_to_spree_option_types.rb +0 -10
- data/db/migrate/20201013084504_add_seo_robots_to_spree_stores.rb +0 -5
- data/db/migrate/20201023152810_add_filterable_to_spree_properties.rb +0 -8
- data/db/migrate/20201127084048_add_default_country_kind_to_spree_zones.rb +0 -5
- data/db/migrate/20210112193440_remove_contact_email_from_spree_stores.rb +0 -5
- data/db/migrate/20210114182625_create_spree_payment_methods_stores.rb +0 -10
- data/db/migrate/20210114220232_migrate_data_payment_methods_stores.rb +0 -15
- data/db/migrate/20210117112551_remove_store_id_from_spree_payment_methods.rb +0 -5
- data/db/migrate/20210120142527_ensure_default_locale_in_spree_stores.rb +0 -5
- data/db/migrate/20210205211040_add_supported_locales_to_spree_stores.rb +0 -11
- data/db/migrate/20210215202602_migrate_spree_i18n_globalize_config.rb +0 -22
- data/db/migrate/20210407200948_create_spree_menus.rb +0 -16
- data/db/migrate/20210408092939_create_spree_menu_items.rb +0 -31
- data/db/migrate/20210504163720_add_filter_param_to_spree_product_properties.rb +0 -8
- data/db/migrate/20210505114659_add_filter_param_to_spree_properties.rb +0 -8
- data/db/migrate/20210512191732_create_spree_cms_pages.rb +0 -24
- data/db/migrate/20210514204251_create_spree_cms_sections.rb +0 -22
- data/db/migrate/20210527094055_create_spree_products_stores.rb +0 -36
- data/db/migrate/20210608045519_ensure_store_default_country_is_set.rb +0 -5
- data/db/migrate/20210702112334_add_missing_timestamp_columns.rb +0 -46
- data/db/migrate/20210713131614_add_unique_index_on_property_id_and_product_id_to_product_properties.rb +0 -29
- data/db/migrate/20210715091956_add_store_id_to_spree_store_credits.rb +0 -10
- data/db/migrate/20210716093151_add_store_id_to_spree_taxonomies.rb +0 -11
- data/db/migrate/20210716104141_add_index_on_name_parent_id_and_taxonomy_id_on_spree_taxons.rb +0 -31
- data/db/migrate/20210721120857_add_index_on_permalink_parent_id_and_taxonomy_id_on_spree_taxons.rb +0 -31
- data/db/migrate/20210721125657_create_spree_promotions_stores.rb +0 -29
- data/db/migrate/20210722090705_add_store_id_to_spree_customer_returns.rb +0 -11
- data/db/migrate/20210726065456_change_integer_id_columns_into_bigint.rb +0 -305
- data/db/migrate/20210730154425_fix_promotion_code_and_path_unique_indexes.rb +0 -9
- /data/lib/spree/{dependencies_helper.rb → core/dependencies_helper.rb} +0 -0
@@ -0,0 +1,14 @@
|
|
1
|
+
module Spree
|
2
|
+
module Shipments
|
3
|
+
class ChangeState
|
4
|
+
prepend Spree::ServiceModule::Base
|
5
|
+
|
6
|
+
def call(shipment:, state:)
|
7
|
+
shipment.send("#{state}!")
|
8
|
+
success(shipment.reload)
|
9
|
+
rescue ActiveRecord::Rollback, ActiveRecord::RecordInvalid, StateMachines::InvalidTransition
|
10
|
+
failure(shipment)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# creates new shipment record
|
2
|
+
# if selected item (variant) is already added to order it will update line item
|
3
|
+
# if not - it will create new line item record
|
4
|
+
module Spree
|
5
|
+
module Shipments
|
6
|
+
class Create
|
7
|
+
prepend Spree::ServiceModule::Base
|
8
|
+
include Helper
|
9
|
+
|
10
|
+
def call(store:, shipment_attributes:)
|
11
|
+
ActiveRecord::Base.transaction do
|
12
|
+
run :prepare_arguments
|
13
|
+
run :create_shipment
|
14
|
+
run :add_or_update_line_item
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
protected
|
19
|
+
|
20
|
+
def prepare_arguments(store:, shipment_attributes:)
|
21
|
+
order_id_or_number = shipment_attributes[:order_id]
|
22
|
+
order = store.orders.find_by(number: order_id_or_number) || store.orders.find_by(id: order_id_or_number)
|
23
|
+
|
24
|
+
return failure(nil, :order_not_found) if order.nil?
|
25
|
+
|
26
|
+
variant = store.variants.find_by(id: shipment_attributes[:variant_id])
|
27
|
+
return failure(nil, :variant_not_found) if variant.nil?
|
28
|
+
|
29
|
+
stock_location = Spree::StockLocation.find_by(id: shipment_attributes[:stock_location_id])
|
30
|
+
return failure(nil, :stock_location_not_found) if stock_location.nil?
|
31
|
+
|
32
|
+
quantity = shipment_attributes[:quantity]&.to_i || 1
|
33
|
+
|
34
|
+
success(order: order, stock_location: stock_location, variant: variant, quantity: quantity)
|
35
|
+
end
|
36
|
+
|
37
|
+
def create_shipment(order:, stock_location:, variant:, quantity:)
|
38
|
+
shipment = order.shipments.create(
|
39
|
+
order_id: order.id,
|
40
|
+
stock_location_id: stock_location.id
|
41
|
+
)
|
42
|
+
return failure(shipment) unless shipment.persisted?
|
43
|
+
|
44
|
+
success(order: order, variant: variant, quantity: quantity, shipment: shipment)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Spree
|
2
|
+
module Shipments
|
3
|
+
module Helper
|
4
|
+
def add_or_update_line_item(order:, variant:, quantity:, shipment:)
|
5
|
+
result = add_item_service.call(order: order, variant: variant, quantity: quantity, options: { shipment: shipment })
|
6
|
+
|
7
|
+
if result.success?
|
8
|
+
success(shipment.reload)
|
9
|
+
else
|
10
|
+
failure(result.value, result.error)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def add_item_service
|
15
|
+
Spree::Dependencies.cart_add_item_service.constantize
|
16
|
+
end
|
17
|
+
|
18
|
+
def remove_item_service
|
19
|
+
Spree::Dependencies.cart_remove_item_service.constantize
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# removes an item (variant) from shipment
|
2
|
+
# quantity can be passed
|
3
|
+
# if there is no quantity left for this item for this shipent, shipment itself will be removed
|
4
|
+
module Spree
|
5
|
+
module Shipments
|
6
|
+
class RemoveItem
|
7
|
+
prepend Spree::ServiceModule::Base
|
8
|
+
include Helper
|
9
|
+
|
10
|
+
def call(shipment:, variant_id:, quantity: nil)
|
11
|
+
ActiveRecord::Base.transaction do
|
12
|
+
run :prepare_arguments
|
13
|
+
run :remove_item
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
protected
|
18
|
+
|
19
|
+
def prepare_arguments(shipment:, variant_id:, quantity: nil)
|
20
|
+
variant = Spree::Variant.find_by(id: variant_id)
|
21
|
+
return failure(nil, :variant_not_found) if variant.nil? || !shipment.include?(variant)
|
22
|
+
|
23
|
+
# if quantity isn't passed let's remove all added qty of this variant
|
24
|
+
quantity = quantity&.to_i || shipment.inventory_units_for(variant).sum(:quantity)
|
25
|
+
|
26
|
+
success(shipment: shipment, variant: variant, quantity: quantity)
|
27
|
+
end
|
28
|
+
|
29
|
+
# if the removed variant was the only one shipped via this shipment
|
30
|
+
# we need to remove the shipment itself
|
31
|
+
def remove_item(shipment:, variant:, quantity:)
|
32
|
+
result = remove_item_service.call(order: shipment.order,
|
33
|
+
variant: variant,
|
34
|
+
quantity: quantity,
|
35
|
+
options: { shipment: shipment })
|
36
|
+
|
37
|
+
if result.success?
|
38
|
+
line_item = result.value
|
39
|
+
line_item.destroy if line_item.quantity.zero?
|
40
|
+
|
41
|
+
# `OrderInventory#remove_from_shipment` is called in `remove_item_service`
|
42
|
+
# which will delete the shipment if all inventory units were removed
|
43
|
+
if shipment.inventory_units.any?
|
44
|
+
success(shipment)
|
45
|
+
else
|
46
|
+
shipment.destroy!
|
47
|
+
success(:shipment_deleted)
|
48
|
+
end
|
49
|
+
else
|
50
|
+
failure(result.value, result.error)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# Update Shipment and make sure Order states follow the shipment changes
|
2
|
+
module Spree
|
3
|
+
module Shipments
|
4
|
+
class Update
|
5
|
+
prepend Spree::ServiceModule::Base
|
6
|
+
|
7
|
+
def call(shipment:, shipment_attributes: {})
|
8
|
+
ActiveRecord::Base.transaction do
|
9
|
+
return failure(shipment) unless shipment.update(shipment_attributes)
|
10
|
+
|
11
|
+
if shipment_attributes.key?(:selected_shipping_rate_id)
|
12
|
+
order = shipment.order
|
13
|
+
|
14
|
+
# Changing the selected Shipping Rate won't update the cost (for now)
|
15
|
+
# so we persist the Shipment#cost before calculating order shipment
|
16
|
+
# total and updating payment state (given a change in shipment cost
|
17
|
+
# might change the Order#payment_state)
|
18
|
+
shipment.update_amounts
|
19
|
+
|
20
|
+
order.updater.update_shipment_total
|
21
|
+
order.updater.update_payment_state
|
22
|
+
|
23
|
+
# Update shipment state only after order total is updated because it
|
24
|
+
# (via Order#paid?) affects the shipment state (YAY)
|
25
|
+
shipment.update_columns(
|
26
|
+
state: shipment.determine_state(order),
|
27
|
+
updated_at: Time.current
|
28
|
+
)
|
29
|
+
|
30
|
+
# And then it's time to update shipment states and finally persist
|
31
|
+
# order changes
|
32
|
+
order.updater.update_shipment_state
|
33
|
+
order.updater.persist_totals
|
34
|
+
end
|
35
|
+
end
|
36
|
+
success(shipment)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Spree
|
2
|
+
module StockLocations
|
3
|
+
module StockItems
|
4
|
+
class Create
|
5
|
+
prepend Spree::ServiceModule::Base
|
6
|
+
|
7
|
+
def call(stock_location:, variants_scope: Spree::Variant)
|
8
|
+
if Rails::VERSION::MAJOR >= 6
|
9
|
+
prepared_stock_items = variants_scope.ids.map do |variant_id|
|
10
|
+
Hash[
|
11
|
+
'stock_location_id', stock_location.id,
|
12
|
+
'variant_id', variant_id,
|
13
|
+
'backorderable', stock_location.backorderable_default,
|
14
|
+
'created_at', Time.current,
|
15
|
+
'updated_at', Time.current
|
16
|
+
]
|
17
|
+
end
|
18
|
+
if prepared_stock_items.any?
|
19
|
+
stock_location.stock_items.insert_all(prepared_stock_items)
|
20
|
+
variants_scope.touch_all
|
21
|
+
end
|
22
|
+
else
|
23
|
+
variants_scope.find_each do |variant|
|
24
|
+
stock_location.propagate_variant(variant)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Spree
|
2
|
+
module Wallet
|
3
|
+
class CreatePaymentSource
|
4
|
+
prepend Spree::ServiceModule::Base
|
5
|
+
|
6
|
+
def call(payment_method:, params: {}, user: nil)
|
7
|
+
return failure(nil, :missing_attributes) if params.nil?
|
8
|
+
|
9
|
+
source_attributes = {
|
10
|
+
payment_method_id: payment_method.id,
|
11
|
+
user_id: user&.id,
|
12
|
+
gateway_payment_profile_id: params[:gateway_payment_profile_id],
|
13
|
+
gateway_customer_profile_id: params[:gateway_customer_profile_id],
|
14
|
+
last_digits: params[:last_digits],
|
15
|
+
month: params[:month],
|
16
|
+
year: params[:year],
|
17
|
+
name: params[:name]
|
18
|
+
}
|
19
|
+
|
20
|
+
source = payment_method.payment_source_class.new(source_attributes)
|
21
|
+
|
22
|
+
source.save ? success(source) : failure(source)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Spree
|
2
|
+
class UrlValidator < ActiveModel::EachValidator
|
3
|
+
def validate_each(record, attribute, value)
|
4
|
+
unless url_valid?(value)
|
5
|
+
record.errors.add(attribute, (options[:message] || ERROR_MESSAGE))
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
ERROR_MESSAGE = 'must be a valid URL'
|
12
|
+
private_constant :ERROR_MESSAGE
|
13
|
+
|
14
|
+
def url_valid?(url)
|
15
|
+
uri = begin
|
16
|
+
URI.parse(url)
|
17
|
+
rescue URI::InvalidURIError
|
18
|
+
return false
|
19
|
+
end
|
20
|
+
uri.host.present? && uri.is_a?(URI::HTTP)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/brakeman.ignore
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
{
|
2
|
+
"ignored_warnings": [
|
3
|
+
{
|
4
|
+
"fingerprint": "011b2643940ba1112f7a737e403abe3616ad91764703c801cc35a48d36b721da",
|
5
|
+
"note": "interpolating table name"
|
6
|
+
},
|
7
|
+
{
|
8
|
+
"fingerprint": "965d3919f811ab63b7b8d62da528559a7f38dc122c57efea7136e7ec5ef1f062",
|
9
|
+
"note": "interpolating table name"
|
10
|
+
},
|
11
|
+
{
|
12
|
+
"fingerprint": "abd8e90e7a7dfbcdcd6d44fd3fb550598aee6d7a9ef2bb132ad1a18a3c50be30",
|
13
|
+
"note": "interpolating table name"
|
14
|
+
},
|
15
|
+
{
|
16
|
+
"fingerprint": "efcc57e1a5648d7db59d1beaf5e399d2278539a8667b19c520b305a6ca7e15e8",
|
17
|
+
"note": "interpolating table name"
|
18
|
+
}
|
19
|
+
]
|
20
|
+
}
|
data/config/locales/en.yml
CHANGED
@@ -382,7 +382,7 @@ en:
|
|
382
382
|
spree/store:
|
383
383
|
attributes:
|
384
384
|
base:
|
385
|
-
|
385
|
+
cannot_destroy_only_store: Cannot destroy the only Store.
|
386
386
|
spree/store_credit:
|
387
387
|
attributes:
|
388
388
|
amount_used:
|
@@ -554,173 +554,9 @@ en:
|
|
554
554
|
adjustment_successfully_opened: Adjustment has been successfully opened!
|
555
555
|
adjustment_total: Adjustment Total
|
556
556
|
adjustments: Adjustments
|
557
|
-
admin:
|
558
|
-
cms:
|
559
|
-
all_pages: All Pages
|
560
|
-
add_new_page: Add New Page
|
561
|
-
add_new_section: Add New Section
|
562
|
-
content: Content
|
563
|
-
click_here: click here
|
564
|
-
draft_mode: Draft Mode
|
565
|
-
full_width: Full width
|
566
|
-
link_to_taxon: Link to Taxon
|
567
|
-
link_to_product: Link to Product
|
568
|
-
title: Title
|
569
|
-
fit: Fit To
|
570
|
-
info_hero_image_body: "<p>The Hero Image section adds a large image with a button and tagline text to your page.</p>
|
571
|
-
<p>The button can link to a Product, Taxon or Page. This section can be set to fit within the central container or to the edges of the screen.</p>
|
572
|
-
<p><b>Tip:</b> Use a hero image with no button text or title, and then set the <b>Fit:</b> to <b>Container</b> and <b>Gutters</b> to <b>Use Gutters</b> this creates an image section that looks great above a Side-by-Side Images section, or an Image Gallery section.</p>
|
573
|
-
<p>Experiment with the settings, and don't be afraid to use more than one Hero Image section per page.</p>"
|
574
|
-
info_image_gallery_body: "<p>The Image Gallery section can be configured in several ways. For example, each image can link to a product or taxon. If you do not provide a link, you can display three images. Additionally, you can also use labels to add text to your images.</p>
|
575
|
-
<p>There are two layout configurations for the Image Gallery section, with the taller image used on the left or the right. You can also set this section to fit the edges of the screen or the central container to match your website's style.</p>"
|
576
|
-
info_product_carousel_body: "<p>Product Carousel is a simple section to use. Search for the taxon you wish to display, save the changes, and the products in your chosen taxon will be displayed on your page.</p>"
|
577
|
-
info_featured_article_body: "<p>The Feature Article section allows you to add rich text to your page with a set title subtitle and linking button.</p>
|
578
|
-
<p>This section can be set to use full screen or container and also use gutters.</p>"
|
579
|
-
info_side_by_side_images_body: "<p>The Side-by-Side Images section can be configured in several ways, you have the option of using them as plane images, images with text, and either of those options can be clickable links if a link is set.</p>
|
580
|
-
<p><b>Tip:</b> You can blow these images out to the edge of the screen and remove the gutters to create a completely different look.</p>"
|
581
|
-
info_rich_text_content_body: "<p>The Rich Text Content section is simply a section that offers nothing more than an area of rich text editor content to be displayed on your page.</p>"
|
582
|
-
brand_bar:
|
583
|
-
uses_menu: This section uses your Spree Menu named <b>%{menu}</b> to manage the images and links,
|
584
|
-
vist_menu_to_edit: to edit this menu.
|
585
|
-
full_width_on_small: Full width on small devices
|
586
|
-
button_text: Button Text
|
587
|
-
go_to_fullscreen_section_manager: Go To Fullscreen Section Manager
|
588
|
-
page_type: Page Type
|
589
|
-
gutters: Gutters
|
590
|
-
you_have_no_pages: You have no Pages, click the <b>+ Add New Page</b> button to get started.
|
591
|
-
new_page: New Page
|
592
|
-
toggle_page_visibility: Toggle page visibility
|
593
|
-
meta_title: Meta Title
|
594
|
-
meta_description: Meta Description
|
595
|
-
preview_page: Preview Page
|
596
|
-
full_screen_mode: '<span class="exit">Exit </span>Full Screen Mode'
|
597
|
-
hero:
|
598
|
-
aspect_ratio: Please use an image with the aspect ratio of 12:5 (2400px x 1000px)
|
599
|
-
select_page_type: Select a page type
|
600
|
-
section_type: Section Type
|
601
|
-
subtitle: Subtitle
|
602
|
-
set_gutters: Set Gutters
|
603
|
-
click_button_to_change_page_type: Click the <b>%{button_type}</b> button to load the options for this page type.
|
604
|
-
more_page_settings: '<span class="more">More</span><span class="less">Less</span> Page Settings'
|
605
|
-
seo_settings: SEO Settings
|
606
|
-
no_sections_found_please_add_one: Add your first section to this page by clicking the <b>+ Add New Section</b> button above.
|
607
|
-
click_create_to_load_new_link: 'Click the <b>Create</b> button below to save your new page section, and load the section settings.'
|
608
|
-
click_update_to_load_new_link: 'Click the <b>Update</b> button below to load the new section settings.'
|
609
|
-
settings_for: 'Options For: <b>%{section}</b>'
|
610
|
-
page_sections: '%{page_name} Sections'
|
611
|
-
page_sections_info: 'The area below represents your %{page_type} displayed in %{store}, add sections and drag them into position'
|
612
|
-
visible: Visible
|
613
|
-
side_by_side:
|
614
|
-
left_image: Left Image
|
615
|
-
right_image: Right Image
|
616
|
-
image_info: 'Please use an image with an aspect ratio of 54:35 (1468px x 952px).'
|
617
|
-
image_gallery:
|
618
|
-
display_labels: Display labels
|
619
|
-
image_a: Image A
|
620
|
-
image_b: Image B
|
621
|
-
image_c: Image C
|
622
|
-
layout_style: Layout Style
|
623
|
-
square_image: Please use an image with an aspect ratio of 18:13 (1080px x 780px).
|
624
|
-
tall_image: Please use an image with an aspect ratio of 27:40 (1080px x 1600px).
|
625
|
-
linkable:
|
626
|
-
seach_for_a_page: Search for a page
|
627
|
-
tab:
|
628
|
-
configuration: Configuration
|
629
|
-
content: Content
|
630
|
-
option_types: Option Types
|
631
|
-
orders: Orders
|
632
|
-
overview: Overview
|
633
|
-
pages: Pages
|
634
|
-
products: Products
|
635
|
-
promotions: Promotions
|
636
|
-
promotion_categories: Promotion Categories
|
637
|
-
properties: Properties
|
638
|
-
prototypes: Prototypes
|
639
|
-
reports: Reports
|
640
|
-
navigation: Navigation
|
641
|
-
taxonomies: Taxonomies
|
642
|
-
taxons: Taxons
|
643
|
-
users: Users
|
644
|
-
return_authorizations: Return Authorizations
|
645
|
-
customer_returns: Customer Returns
|
646
|
-
order:
|
647
|
-
changing_store_warning: If you change the store this order belongs to, the order will be reset.
|
648
|
-
once_an_order_is_complete_you_can_not_change_store: 'Sorry, once an order is complete, you can no longer change the store that the order belongs to.'
|
649
|
-
events:
|
650
|
-
approve: approve
|
651
|
-
cancel: cancel
|
652
|
-
resume: resume
|
653
|
-
resend: Resend
|
654
|
-
orders:
|
655
|
-
cart: Cart
|
656
|
-
reports:
|
657
|
-
for: For %{store_name}
|
658
|
-
return_authorization:
|
659
|
-
product: Product
|
660
|
-
user:
|
661
|
-
account: Account
|
662
|
-
addresses: Addresses
|
663
|
-
items: Items
|
664
|
-
items_purchased: Items Purchased
|
665
|
-
order_history: Order History
|
666
|
-
order_num: "Order #"
|
667
|
-
orders: Orders
|
668
|
-
user_information: User Information
|
669
|
-
stores: Stores
|
670
|
-
store_credits: Store Credits
|
671
|
-
no_store_credit: User has no Store Credit available.
|
672
|
-
available_store_credit: User has %{amount} in Store Credit available.
|
673
|
-
navigation:
|
674
|
-
all_menus: All Menus
|
675
|
-
add_new_menu: Add New Menu
|
676
|
-
add_new_item: 'Add New Item'
|
677
|
-
code: Code
|
678
|
-
default_menus_info:
|
679
|
-
title: Default Menus
|
680
|
-
body: "Default menus are menus whose language matches the associated store's default language.<br><br>
|
681
|
-
<h5>Example</h5>If you have a store that uses Spanish as the default language but also offers the options of German and French; your default header menu for this store would be set to use <b>Español (es)</b> for the language and <b>Header</b> as the location.<br><br>
|
682
|
-
<h5>Why Are Default Menus Important?</h5> Default menus are displayed to your visitor if no menu is available in the current language they are browsing. It is recommended that you create a default menu for each menu location within each store.<br><br>
|
683
|
-
<h5>More Information</h5>To learn more about menus, view the official Spree user documentation by <a href='https://guides.spreecommerce.org/user/navigation/building_the_main_menu.html' target='_blank' class='alert-link'>clicking here</a>."
|
684
|
-
allow_this_menu_item_to_contain_nested_menu_items: Allow this Menu Item to contain nested items
|
685
|
-
back_to_all_menus: Back To All Menus
|
686
|
-
click_create_to_load_new_link: 'Click the <b>Create</b> button below to change the link field.'
|
687
|
-
click_update_to_load_new_link: 'Click the <b>Update</b> button below to change the link field.'
|
688
|
-
give_your_menu_a_unique_name: 'Use the unique code to identify your menu: spree-eu-main'
|
689
|
-
link_settings: Link Settings
|
690
|
-
link_to: Link To
|
691
|
-
image_alt_text: Add alt text to your image
|
692
|
-
image_asset: Add a Promotion image or Link icon.
|
693
|
-
move_could_not_be_saved: 'ERROR: This move could not be saved.'
|
694
|
-
managing_by_store_title: 'Managing Menus By Store'
|
695
|
-
managing_by_store: <p>You are managing the menus for <b>%{store}</b>. To manage menus for other stores, change the global store using the drop-down in the main navbar found at the top of the screen.</p>
|
696
|
-
new_menu_item: New Menu Item
|
697
|
-
new_menu: New Menu
|
698
|
-
nested_under: Nested under
|
699
|
-
no_menu_items: '<b>%{menu}</b> has no items. Click the <b>Add New Item</b> button to begin adding links to this menu.'
|
700
|
-
nested_under_info: Quickly nest your Menu Item if you already know where it needs to be.
|
701
|
-
item_type: Item Type
|
702
|
-
image_info: '<b>NOTE:</b> You can attach an image to any menu item, but your image will only be displayed in the main menu when nested inside a container with the code <b>promo</b>.<br><br> For best results use images with a width of 540px and height of 350px.'
|
703
|
-
open_link_in_new_window: Open this link in a new window
|
704
|
-
menu_item_type_container_message: "Containers are menu items that do not link to a destination. If you are building the Spree Main Menu
|
705
|
-
create containers with the code: <b>category</b> or <b>promo</b>, and then nest your links inside these containers build out your menu.
|
706
|
-
<br><br> For an indepth guide to building the main menu see the documenttation page <a href='https://guides.spreecommerce.org/user/navigation/building_the_main_menu.html' target='_blank' class='alert-link'>Building The Main Menu</a>"
|
707
|
-
menus: Menus
|
708
|
-
menu_items: '%{menu_name} Items'
|
709
|
-
public_details: Public Details
|
710
|
-
subtitle: Subtitle
|
711
|
-
url_info: 'The URL field can link to an external website using <b>https://example.com</b>, link to an otherwise unreachable internal path using <b>/policies/privacy</b>,
|
712
|
-
launch an email client using <b>mailto:sales@example.com</b> or used to create a clickable phone number with <b>tel:123456789</b>'
|
713
|
-
seach_for_a_product: Search for a Product
|
714
|
-
seach_for_a_taxon: Search for a Taxon
|
715
|
-
settings: Settings
|
716
|
-
set_a_code: "Adding a code is optional but can be useful if you need to identify this menu item. When building
|
717
|
-
the Spree main menu use the code <b>category</b> or <b>promo</b> to create the containers that organize links and promotions appropriately. To learn more view the documentation by <a href='https://guides.spreecommerce.org/user/navigation/add_menu_items.html' target='_blank' class='alert-link'>clicking here</a>."
|
718
|
-
type: Type
|
719
|
-
used_in: Used In
|
720
|
-
you_have_no_menus: You have no Menus, click the Add New Menu button to create your first Menu.
|
721
|
-
this_link_takes_you_to_your_stores_home_page: This link takes you to your stores home page.
|
722
557
|
administration: Administration
|
723
558
|
add_new_store: Add New Store
|
559
|
+
adjustments_deleted: Adjustments Deleted
|
724
560
|
advertise: Advertise
|
725
561
|
agree_to_privacy_policy: Agree to Privacy Policy
|
726
562
|
agree_to_terms_of_service: Agree to Terms of Service
|
@@ -789,7 +625,7 @@ en:
|
|
789
625
|
cannot_set_shipping_method_without_address: Cannot set shipping method until customer details are provided.
|
790
626
|
capture: Capture
|
791
627
|
capture_events: Capture events
|
792
|
-
card_code: Card
|
628
|
+
card_code: Card Verification Code (CVC)
|
793
629
|
card_number: Card Number
|
794
630
|
card_type: Brand
|
795
631
|
card_type_is: Card type is
|
@@ -922,9 +758,12 @@ en:
|
|
922
758
|
default_refund_amount: Default Refund Amount
|
923
759
|
default_tax: Default Tax
|
924
760
|
default_tax_zone: Default Tax Zone
|
761
|
+
default_wishlist_name: Wishlist
|
925
762
|
delete: Delete
|
926
763
|
deleted: Deleted
|
927
764
|
delete_from_taxon: Delete From Taxon
|
765
|
+
digital:
|
766
|
+
digital_delivery: Digital Delivery
|
928
767
|
discontinued_variants_present: Some line items in this order have products that are no longer available.
|
929
768
|
delivery: Delivery
|
930
769
|
delivery_information: Delivery Information
|
@@ -985,6 +824,7 @@ en:
|
|
985
824
|
one: 1 error prohibited this record from being saved
|
986
825
|
other: ! '%{count} errors prohibited this record from being saved'
|
987
826
|
error_user_destroy_with_orders: User associated with orders cannot be destroyed
|
827
|
+
error_user_does_not_have_any_store_credits: 'User does not have any Store Credits available'
|
988
828
|
event: Event
|
989
829
|
events:
|
990
830
|
spree:
|
@@ -1173,6 +1013,7 @@ en:
|
|
1173
1013
|
meta_title: Meta Title
|
1174
1014
|
metadata: Metadata
|
1175
1015
|
mutable: Mutable
|
1016
|
+
must_have_one_store: The resource must belong to a store.
|
1176
1017
|
min: 'Min'
|
1177
1018
|
minimal_amount: Minimal Amount
|
1178
1019
|
missing_return_authorization: ! 'Missing Return Authorization for %{item_name}.'
|
@@ -1248,7 +1089,7 @@ en:
|
|
1248
1089
|
no_pending_payments: No pending payments
|
1249
1090
|
no_product_available:
|
1250
1091
|
for_this_quantity: Sorry, it looks like some products are not available in selected quantity.
|
1251
|
-
|
1092
|
+
oops: Oops!
|
1252
1093
|
no_products_found: No products found
|
1253
1094
|
no_results: No results
|
1254
1095
|
no_rules_added: No rules added
|
@@ -1622,6 +1463,11 @@ en:
|
|
1622
1463
|
say_no: 'No'
|
1623
1464
|
say_yes: 'Yes'
|
1624
1465
|
scope: Scope
|
1466
|
+
seed:
|
1467
|
+
shipping:
|
1468
|
+
categories:
|
1469
|
+
default: Default
|
1470
|
+
digital: Digital
|
1625
1471
|
search: Search
|
1626
1472
|
search_by: 'Search by:'
|
1627
1473
|
search_order_number: Order Number
|