spree_core 4.3.0.rc3 → 4.3.2
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/models/spree/app_dependencies.rb +3 -1
- data/app/models/spree/cms/sections/featured_article.rb +0 -7
- data/app/models/spree/cms/sections/hero_image.rb +0 -9
- data/app/models/spree/cms/sections/image_gallery.rb +2 -2
- data/app/models/spree/cms/sections/side_by_side_images.rb +2 -2
- data/app/models/spree/cms_section.rb +12 -0
- data/app/models/spree/product.rb +10 -8
- data/app/models/spree/stock_location.rb +9 -0
- data/app/models/spree/taxon.rb +1 -0
- data/app/models/spree/variant.rb +9 -3
- data/app/presenters/spree/filters/options_presenter.rb +20 -0
- data/app/presenters/spree/filters/property_presenter.rb +20 -0
- data/app/services/spree/cart/associate.rb +16 -0
- data/app/services/spree/cart/change_currency.rb +27 -0
- data/app/sorters/spree/products/sort.rb +7 -1
- data/config/locales/en.yml +2 -0
- data/db/migrate/20210527094055_create_spree_products_stores.rb +2 -2
- data/lib/spree/core/version.rb +1 -1
- metadata +7 -6
- data/app/views/spree/shared/_purchased_items_table.text.erb +0 -25
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 820685ea826057c90007aa5e15403d033c893eb89434a0c0a81eacddf832fad3
         | 
| 4 | 
            +
              data.tar.gz: 9234169687d3714f37741a75fe4a5adc04e86f4cf0c8c0b32253b847f31d9331
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 8c826e57778c119e99d7257084b04a71af06ef3d3c6078a699e9b5c8b7ecf7441e6abb4bbd8c1340b0dffd625ba0c57ab13d5ebbe6d7afa74804bea3e01b6662
         | 
| 7 | 
            +
              data.tar.gz: 75c0eb28a83ed7e71cf5dbc2b70319fa91559e16e361574446431c37688da6e05af45c47fd34123ec5c747c10f9c90fbdbad93a7cae123426f938c4e84f248f7
         | 
| @@ -13,7 +13,7 @@ module Spree | |
| 13 13 | 
             
                  :products_finder, :taxon_finder, :line_item_by_variant_finder, :cart_estimate_shipping_rates_service,
         | 
| 14 14 | 
             
                  :account_create_address_service, :account_update_address_service, :account_create_service, :account_update_service,
         | 
| 15 15 | 
             
                  :address_finder, :collection_sorter, :error_handler, :current_store_finder, :cart_empty_service, :cart_destroy_service,
         | 
| 16 | 
            -
                  :classification_reposition_service, :credit_cards_destroy_service
         | 
| 16 | 
            +
                  :classification_reposition_service, :credit_cards_destroy_service, :cart_associate_service, :cart_change_currency_service
         | 
| 17 17 | 
             
                ].freeze
         | 
| 18 18 |  | 
| 19 19 | 
             
                attr_accessor *INJECTION_POINTS
         | 
| @@ -43,6 +43,8 @@ module Spree | |
| 43 43 | 
             
                  @cart_estimate_shipping_rates_service = 'Spree::Cart::EstimateShippingRates'
         | 
| 44 44 | 
             
                  @cart_empty_service = 'Spree::Cart::Empty'
         | 
| 45 45 | 
             
                  @cart_destroy_service = 'Spree::Cart::Destroy'
         | 
| 46 | 
            +
                  @cart_associate_service = 'Spree::Cart::Associate'
         | 
| 47 | 
            +
                  @cart_change_currency_service = 'Spree::Cart::ChangeCurrency'
         | 
| 46 48 |  | 
| 47 49 | 
             
                  # checkout
         | 
| 48 50 | 
             
                  @checkout_next_service = 'Spree::Checkout::Next'
         | 
| @@ -1,6 +1,5 @@ | |
| 1 1 | 
             
            module Spree::Cms::Sections
         | 
| 2 2 | 
             
              class FeaturedArticle < Spree::CmsSection
         | 
| 3 | 
            -
                before_save :reset_link_attributes
         | 
| 4 3 | 
             
                after_initialize :default_values
         | 
| 5 4 |  | 
| 6 5 | 
             
                store :content, accessors: [:title, :subtitle, :button_text, :rte_content], coder: JSON
         | 
| @@ -14,12 +13,6 @@ module Spree::Cms::Sections | |
| 14 13 |  | 
| 15 14 | 
             
                private
         | 
| 16 15 |  | 
| 17 | 
            -
                def reset_link_attributes
         | 
| 18 | 
            -
                  if linked_resource_type_changed?
         | 
| 19 | 
            -
                    self.linked_resource_id = nil
         | 
| 20 | 
            -
                  end
         | 
| 21 | 
            -
                end
         | 
| 22 | 
            -
             | 
| 23 16 | 
             
                def default_values
         | 
| 24 17 | 
             
                  self.gutters ||= 'No Gutters'
         | 
| 25 18 | 
             
                  self.fit ||= 'Screen'
         | 
| @@ -1,6 +1,5 @@ | |
| 1 1 | 
             
            module Spree::Cms::Sections
         | 
| 2 2 | 
             
              class HeroImage < Spree::CmsSection
         | 
| 3 | 
            -
                before_save :reset_link_attributes
         | 
| 4 3 | 
             
                after_initialize :default_values
         | 
| 5 4 |  | 
| 6 5 | 
             
                store :content, accessors: [:title, :button_text], coder: JSON
         | 
| @@ -30,14 +29,6 @@ module Spree::Cms::Sections | |
| 30 29 |  | 
| 31 30 | 
             
                private
         | 
| 32 31 |  | 
| 33 | 
            -
                def reset_link_attributes
         | 
| 34 | 
            -
                  if linked_resource_type_changed?
         | 
| 35 | 
            -
                    return if linked_resource_id_was.nil?
         | 
| 36 | 
            -
             | 
| 37 | 
            -
                    self.linked_resource_id = nil
         | 
| 38 | 
            -
                  end
         | 
| 39 | 
            -
                end
         | 
| 40 | 
            -
             | 
| 41 32 | 
             
                def default_values
         | 
| 42 33 | 
             
                  self.gutters ||= 'No Gutters'
         | 
| 43 34 | 
             
                  self.fit ||= 'Screen'
         | 
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            module Spree::Cms::Sections
         | 
| 2 2 | 
             
              class ImageGallery < Spree::CmsSection
         | 
| 3 3 | 
             
                after_initialize :default_values
         | 
| 4 | 
            -
                 | 
| 4 | 
            +
                validate :reset_multiple_link_attributes
         | 
| 5 5 |  | 
| 6 6 | 
             
                LINKED_RESOURCE_TYPE = if Rails::VERSION::STRING < '6.0'
         | 
| 7 7 | 
             
                                         ['Spree::Taxon'].freeze
         | 
| @@ -70,7 +70,7 @@ module Spree::Cms::Sections | |
| 70 70 |  | 
| 71 71 | 
             
                private
         | 
| 72 72 |  | 
| 73 | 
            -
                def  | 
| 73 | 
            +
                def reset_multiple_link_attributes
         | 
| 74 74 | 
             
                  return if Rails::VERSION::STRING < '6.0'
         | 
| 75 75 |  | 
| 76 76 | 
             
                  if link_type_one_changed?
         | 
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            module Spree::Cms::Sections
         | 
| 2 2 | 
             
              class SideBySideImages < Spree::CmsSection
         | 
| 3 3 | 
             
                after_initialize :default_values
         | 
| 4 | 
            -
                 | 
| 4 | 
            +
                validate :reset_multiple_link_attributes
         | 
| 5 5 |  | 
| 6 6 | 
             
                LINKED_RESOURCE_TYPE = if Rails::VERSION::STRING < '6.0'
         | 
| 7 7 | 
             
                                         ['Spree::Taxon'].freeze
         | 
| @@ -48,7 +48,7 @@ module Spree::Cms::Sections | |
| 48 48 |  | 
| 49 49 | 
             
                private
         | 
| 50 50 |  | 
| 51 | 
            -
                def  | 
| 51 | 
            +
                def reset_multiple_link_attributes
         | 
| 52 52 | 
             
                  return if Rails::VERSION::STRING < '6.0'
         | 
| 53 53 |  | 
| 54 54 | 
             
                  if link_type_one_changed?
         | 
| @@ -5,6 +5,8 @@ module Spree | |
| 5 5 | 
             
                acts_as_list scope: :cms_page
         | 
| 6 6 | 
             
                belongs_to :cms_page, touch: true
         | 
| 7 7 |  | 
| 8 | 
            +
                validate :reset_link_attributes
         | 
| 9 | 
            +
             | 
| 8 10 | 
             
                IMAGE_COUNT = ['one', 'two', 'three']
         | 
| 9 11 | 
             
                IMAGE_TYPES = ['image/png', 'image/jpg', 'image/jpeg', 'image/gif'].freeze
         | 
| 10 12 | 
             
                IMAGE_SIZE = ['sm', 'md', 'lg', 'xl']
         | 
| @@ -53,5 +55,15 @@ module Spree | |
| 53 55 | 
             
                def fullscreen?
         | 
| 54 56 | 
             
                  fit == 'Screen'
         | 
| 55 57 | 
             
                end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                private
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                def reset_link_attributes
         | 
| 62 | 
            +
                  if linked_resource_type_changed?
         | 
| 63 | 
            +
                    return if linked_resource_id_was.nil?
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                    self.linked_resource_id = nil
         | 
| 66 | 
            +
                  end
         | 
| 67 | 
            +
                end
         | 
| 56 68 | 
             
              end
         | 
| 57 69 | 
             
            end
         | 
    
        data/app/models/spree/product.rb
    CHANGED
    
    | @@ -142,17 +142,17 @@ module Spree | |
| 142 142 |  | 
| 143 143 | 
             
                # Cant use short form block syntax due to https://github.com/Netflix/fast_jsonapi/issues/259
         | 
| 144 144 | 
             
                def purchasable?
         | 
| 145 | 
            -
                   | 
| 145 | 
            +
                  default_variant.purchasable? || variants.any?(&:purchasable?)
         | 
| 146 146 | 
             
                end
         | 
| 147 147 |  | 
| 148 148 | 
             
                # Cant use short form block syntax due to https://github.com/Netflix/fast_jsonapi/issues/259
         | 
| 149 149 | 
             
                def in_stock?
         | 
| 150 | 
            -
                   | 
| 150 | 
            +
                  default_variant.in_stock? || variants.any?(&:in_stock?)
         | 
| 151 151 | 
             
                end
         | 
| 152 152 |  | 
| 153 153 | 
             
                # Cant use short form block syntax due to https://github.com/Netflix/fast_jsonapi/issues/259
         | 
| 154 154 | 
             
                def backorderable?
         | 
| 155 | 
            -
                   | 
| 155 | 
            +
                  default_variant.backorderable? || variants.any?(&:backorderable?)
         | 
| 156 156 | 
             
                end
         | 
| 157 157 |  | 
| 158 158 | 
             
                def find_or_build_master
         | 
| @@ -301,11 +301,13 @@ module Spree | |
| 301 301 | 
             
                end
         | 
| 302 302 |  | 
| 303 303 | 
             
                def total_on_hand
         | 
| 304 | 
            -
                  @total_on_hand ||=  | 
| 305 | 
            -
             | 
| 306 | 
            -
             | 
| 307 | 
            -
             | 
| 308 | 
            -
             | 
| 304 | 
            +
                  @total_on_hand ||= Rails.cache.fetch(['product-total-on-hand', cache_key_with_version]) do
         | 
| 305 | 
            +
                    if any_variants_not_track_inventory?
         | 
| 306 | 
            +
                      Float::INFINITY
         | 
| 307 | 
            +
                    else
         | 
| 308 | 
            +
                      stock_items.sum(:count_on_hand)
         | 
| 309 | 
            +
                    end
         | 
| 310 | 
            +
                  end
         | 
| 309 311 | 
             
                end
         | 
| 310 312 |  | 
| 311 313 | 
             
                # Master variant may be deleted (i.e. when the product is deleted)
         | 
| @@ -2,6 +2,7 @@ module Spree | |
| 2 2 | 
             
              class StockLocation < Spree::Base
         | 
| 3 3 | 
             
                has_many :shipments
         | 
| 4 4 | 
             
                has_many :stock_items, dependent: :delete_all, inverse_of: :stock_location
         | 
| 5 | 
            +
                has_many :variants, through: :stock_items
         | 
| 5 6 | 
             
                has_many :stock_movements, through: :stock_items
         | 
| 6 7 |  | 
| 7 8 | 
             
                belongs_to :state, class_name: 'Spree::State', optional: true
         | 
| @@ -14,6 +15,7 @@ module Spree | |
| 14 15 |  | 
| 15 16 | 
             
                after_create :create_stock_items, if: :propagate_all_variants?
         | 
| 16 17 | 
             
                after_save :ensure_one_default
         | 
| 18 | 
            +
                after_update :conditional_touch_records
         | 
| 17 19 |  | 
| 18 20 | 
             
                def state_text
         | 
| 19 21 | 
             
                  state.try(:abbr) || state.try(:name) || state_name
         | 
| @@ -134,5 +136,12 @@ module Spree | |
| 134 136 | 
             
                    StockLocation.where(default: true).where.not(id: id).update_all(default: false)
         | 
| 135 137 | 
             
                  end
         | 
| 136 138 | 
             
                end
         | 
| 139 | 
            +
             | 
| 140 | 
            +
                def conditional_touch_records
         | 
| 141 | 
            +
                  return unless active_changed?
         | 
| 142 | 
            +
             | 
| 143 | 
            +
                  stock_items.update_all(updated_at: Time.current)
         | 
| 144 | 
            +
                  variants.update_all(updated_at: Time.current)
         | 
| 145 | 
            +
                end
         | 
| 137 146 | 
             
              end
         | 
| 138 147 | 
             
            end
         | 
    
        data/app/models/spree/taxon.rb
    CHANGED
    
    | @@ -44,6 +44,7 @@ module Spree | |
| 44 44 | 
             
                scope :for_store, ->(store) { joins(:taxonomy).where(spree_taxonomies: { store_id: store.id }) }
         | 
| 45 45 |  | 
| 46 46 | 
             
                self.whitelisted_ransackable_associations = %w[taxonomy]
         | 
| 47 | 
            +
                self.whitelisted_ransackable_attributes = %w[name permalink]
         | 
| 47 48 |  | 
| 48 49 | 
             
                scope :for_stores, ->(stores) { joins(:taxonomy).where(spree_taxonomies: { store_id: stores.ids }) }
         | 
| 49 50 |  | 
    
        data/app/models/spree/variant.rb
    CHANGED
    
    | @@ -60,7 +60,7 @@ module Spree | |
| 60 60 |  | 
| 61 61 | 
             
                after_touch :clear_in_stock_cache
         | 
| 62 62 |  | 
| 63 | 
            -
                scope :in_stock, -> { joins(:stock_items).where( | 
| 63 | 
            +
                scope :in_stock, -> { joins(:stock_items).where("#{Spree::StockItem.table_name}.count_on_hand > ? OR #{Spree::Variant.table_name}.track_inventory = ?", 0, false) }
         | 
| 64 64 | 
             
                scope :backorderable, -> { joins(:stock_items).where(spree_stock_items: { backorderable: true }) }
         | 
| 65 65 | 
             
                scope :in_stock_or_backorderable, -> { in_stock.or(backorderable) }
         | 
| 66 66 |  | 
| @@ -256,7 +256,13 @@ module Spree | |
| 256 256 | 
             
                  end
         | 
| 257 257 | 
             
                end
         | 
| 258 258 |  | 
| 259 | 
            -
                 | 
| 259 | 
            +
                def backorderable?
         | 
| 260 | 
            +
                  @backorderable ||= Rails.cache.fetch(['variant-backorderable', cache_key_with_version]) do
         | 
| 261 | 
            +
                    quantifier.backorderable?
         | 
| 262 | 
            +
                  end
         | 
| 263 | 
            +
                end
         | 
| 264 | 
            +
             | 
| 265 | 
            +
                delegate :total_on_hand, :can_supply?, to: :quantifier
         | 
| 260 266 |  | 
| 261 267 | 
             
                alias is_backorderable? backorderable?
         | 
| 262 268 |  | 
| @@ -291,7 +297,7 @@ module Spree | |
| 291 297 | 
             
                end
         | 
| 292 298 |  | 
| 293 299 | 
             
                def backordered?
         | 
| 294 | 
            -
                  @backordered ||=  | 
| 300 | 
            +
                  @backordered ||= !in_stock? && stock_items.exists?(backorderable: true)
         | 
| 295 301 | 
             
                end
         | 
| 296 302 |  | 
| 297 303 | 
             
                private
         | 
| @@ -3,6 +3,26 @@ module Spree | |
| 3 3 | 
             
                class OptionsPresenter
         | 
| 4 4 | 
             
                  FilterableOptionType = Struct.new(:option_type, :option_values, keyword_init: true) do
         | 
| 5 5 | 
             
                    delegate_missing_to :option_type
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                    def to_h
         | 
| 8 | 
            +
                      {
         | 
| 9 | 
            +
                        id: option_type.id,
         | 
| 10 | 
            +
                        name: option_type.name,
         | 
| 11 | 
            +
                        presentation: option_type.presentation,
         | 
| 12 | 
            +
                        option_values: option_values.map { |e| option_value_hash(e) }
         | 
| 13 | 
            +
                      }
         | 
| 14 | 
            +
                    end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    private
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                    def option_value_hash(option_value)
         | 
| 19 | 
            +
                      {
         | 
| 20 | 
            +
                        id: option_value.id,
         | 
| 21 | 
            +
                        name: option_value.name,
         | 
| 22 | 
            +
                        presentation: option_value.presentation,
         | 
| 23 | 
            +
                        position: option_value.position
         | 
| 24 | 
            +
                      }
         | 
| 25 | 
            +
                    end
         | 
| 6 26 | 
             
                  end
         | 
| 7 27 |  | 
| 8 28 | 
             
                  def initialize(option_values_scope:)
         | 
| @@ -14,9 +14,29 @@ module Spree | |
| 14 14 | 
             
                    property.uniq_values(product_properties_scope: product_properties)
         | 
| 15 15 | 
             
                  end
         | 
| 16 16 |  | 
| 17 | 
            +
                  def to_h
         | 
| 18 | 
            +
                    {
         | 
| 19 | 
            +
                      id: property.id,
         | 
| 20 | 
            +
                      name: property.name,
         | 
| 21 | 
            +
                      presentation: property.presentation,
         | 
| 22 | 
            +
                      values: values_hash
         | 
| 23 | 
            +
                    }
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 17 26 | 
             
                  private
         | 
| 18 27 |  | 
| 19 28 | 
             
                  attr_reader :property
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  def values_hash
         | 
| 31 | 
            +
                    value_hashes = uniq_values.map do |filter_param, value|
         | 
| 32 | 
            +
                      {
         | 
| 33 | 
            +
                        value: value,
         | 
| 34 | 
            +
                        filter_param: filter_param
         | 
| 35 | 
            +
                      }
         | 
| 36 | 
            +
                    end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                    value_hashes.sort_by { |e| e[:value] }
         | 
| 39 | 
            +
                  end
         | 
| 20 40 | 
             
                end
         | 
| 21 41 | 
             
              end
         | 
| 22 42 | 
             
            end
         | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            module Spree
         | 
| 2 | 
            +
              module Cart
         | 
| 3 | 
            +
                class Associate
         | 
| 4 | 
            +
                  prepend Spree::ServiceModule::Base
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                  def call(guest_order:, user:)
         | 
| 7 | 
            +
                    if guest_order.user.nil?
         | 
| 8 | 
            +
                      guest_order.associate_user!(user)
         | 
| 9 | 
            +
                      success(guest_order)
         | 
| 10 | 
            +
                    else
         | 
| 11 | 
            +
                      failure(guest_order, 'Already assigned to a user')
         | 
| 12 | 
            +
                    end
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            module Spree
         | 
| 2 | 
            +
              module Cart
         | 
| 3 | 
            +
                class ChangeCurrency
         | 
| 4 | 
            +
                  prepend Spree::ServiceModule::Base
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                  def call(order:, new_currency:)
         | 
| 7 | 
            +
                    return failure('Currency not supported') unless supported_currency?(order, new_currency)
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                    result = order.update!(currency: new_currency) rescue false
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    if result
         | 
| 12 | 
            +
                      success(order)
         | 
| 13 | 
            +
                    else
         | 
| 14 | 
            +
                      failure('Failed to update order')
         | 
| 15 | 
            +
                    end
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  private
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  def supported_currency?(order, currency)
         | 
| 21 | 
            +
                    store = order.store
         | 
| 22 | 
            +
                    supported_currencies = store.supported_currencies_list
         | 
| 23 | 
            +
                    supported_currencies.map(&:iso_code).include?(currency.upcase)
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
            end
         | 
| @@ -31,8 +31,14 @@ module Spree | |
| 31 31 | 
             
                  def by_sku(scope)
         | 
| 32 32 | 
             
                    return scope unless (value = sort_by?('sku'))
         | 
| 33 33 |  | 
| 34 | 
            +
                    select_product_attributes = if scope.to_sql.include?("#{Spree::Product.table_name}.*")
         | 
| 35 | 
            +
                                                  ''
         | 
| 36 | 
            +
                                                else
         | 
| 37 | 
            +
                                                  "#{Spree::Product.table_name}.*, "
         | 
| 38 | 
            +
                                                end
         | 
| 39 | 
            +
             | 
| 34 40 | 
             
                    scope.joins(:master).
         | 
| 35 | 
            -
                      select("#{ | 
| 41 | 
            +
                      select("#{select_product_attributes}#{Spree::Variant.table_name}.sku").
         | 
| 36 42 | 
             
                      where(Spree::Variant.table_name.to_s => { is_master: true }).
         | 
| 37 43 | 
             
                      order("#{Spree::Variant.table_name}.sku #{value[1]}")
         | 
| 38 44 | 
             
                  end
         | 
    
        data/config/locales/en.yml
    CHANGED
    
    | @@ -564,6 +564,7 @@ en: | |
| 564 564 | 
             
                    draft_mode: Draft Mode
         | 
| 565 565 | 
             
                    full_width: Full width
         | 
| 566 566 | 
             
                    link_to_taxon: Link to Taxon
         | 
| 567 | 
            +
                    link_to_product: Link to Product
         | 
| 567 568 | 
             
                    title: Title
         | 
| 568 569 | 
             
                    fit: Fit To
         | 
| 569 570 | 
             
                    info_hero_image_body: "<p>The Hero Image section adds a large image with a button and tagline text to your page.</p>
         | 
| @@ -1349,6 +1350,7 @@ en: | |
| 1349 1350 | 
             
                backordered_confirm_info: Selected item is backordered so expect delays. Are you sure you want to order it?
         | 
| 1350 1351 | 
             
                overview: Overview
         | 
| 1351 1352 | 
             
                package_from: package from
         | 
| 1353 | 
            +
                page: Page
         | 
| 1352 1354 | 
             
                page_not_found: Sorry! Page you are looking can’t be found.
         | 
| 1353 1355 | 
             
                pagination:
         | 
| 1354 1356 | 
             
                  next_page: next page »
         | 
| @@ -5,13 +5,13 @@ class CreateSpreeProductsStores < ActiveRecord::Migration[5.2] | |
| 5 5 | 
             
                    add_index :spree_products_stores, [:product_id, :store_id], unique: true
         | 
| 6 6 | 
             
                  end
         | 
| 7 7 | 
             
                  unless column_exists?(:spree_products_stores, :created_at)
         | 
| 8 | 
            -
                    add_timestamps :spree_products_stores
         | 
| 8 | 
            +
                    add_timestamps :spree_products_stores, default: Time.current
         | 
| 9 9 | 
             
                  end
         | 
| 10 10 | 
             
                else
         | 
| 11 11 | 
             
                  create_table :spree_products_stores do |t|
         | 
| 12 12 | 
             
                    t.references :product, index: true
         | 
| 13 13 | 
             
                    t.references :store,  index: true
         | 
| 14 | 
            -
                    t.timestamps
         | 
| 14 | 
            +
                    t.timestamps default: Time.current
         | 
| 15 15 |  | 
| 16 16 | 
             
                    t.index [:product_id, :store_id], unique: true
         | 
| 17 17 | 
             
                  end
         | 
    
        data/lib/spree/core/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: spree_core
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 4.3. | 
| 4 | 
            +
              version: 4.3.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Sean Schofield
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire:
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date:  | 
| 12 | 
            +
            date: 2022-06-01 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: actionpack
         | 
| @@ -699,6 +699,8 @@ files: | |
| 699 699 | 
             
            - app/services/spree/account/update.rb
         | 
| 700 700 | 
             
            - app/services/spree/build_localized_redirect_url.rb
         | 
| 701 701 | 
             
            - app/services/spree/cart/add_item.rb
         | 
| 702 | 
            +
            - app/services/spree/cart/associate.rb
         | 
| 703 | 
            +
            - app/services/spree/cart/change_currency.rb
         | 
| 702 704 | 
             
            - app/services/spree/cart/create.rb
         | 
| 703 705 | 
             
            - app/services/spree/cart/destroy.rb
         | 
| 704 706 | 
             
            - app/services/spree/cart/empty.rb
         | 
| @@ -724,7 +726,6 @@ files: | |
| 724 726 | 
             
            - app/sorters/spree/products/sort.rb
         | 
| 725 727 | 
             
            - app/validators/db_maximum_length_validator.rb
         | 
| 726 728 | 
             
            - app/validators/email_validator.rb
         | 
| 727 | 
            -
            - app/views/spree/shared/_purchased_items_table.text.erb
         | 
| 728 729 | 
             
            - config/initializers/active_storage.rb
         | 
| 729 730 | 
             
            - config/initializers/friendly_id.rb
         | 
| 730 731 | 
             
            - config/initializers/inflections.rb
         | 
| @@ -1194,9 +1195,9 @@ licenses: | |
| 1194 1195 | 
             
            - BSD-3-Clause
         | 
| 1195 1196 | 
             
            metadata:
         | 
| 1196 1197 | 
             
              bug_tracker_uri: https://github.com/spree/spree/issues
         | 
| 1197 | 
            -
              changelog_uri: https://github.com/spree/spree/releases/tag/v4.3. | 
| 1198 | 
            +
              changelog_uri: https://github.com/spree/spree/releases/tag/v4.3.2
         | 
| 1198 1199 | 
             
              documentation_uri: https://dev-docs.spreecommerce.org/
         | 
| 1199 | 
            -
              source_code_uri: https://github.com/spree/spree/tree/v4.3. | 
| 1200 | 
            +
              source_code_uri: https://github.com/spree/spree/tree/v4.3.2
         | 
| 1200 1201 | 
             
            post_install_message:
         | 
| 1201 1202 | 
             
            rdoc_options: []
         | 
| 1202 1203 | 
             
            require_paths:
         | 
| @@ -1212,7 +1213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 1212 1213 | 
             
                - !ruby/object:Gem::Version
         | 
| 1213 1214 | 
             
                  version: 1.8.23
         | 
| 1214 1215 | 
             
            requirements: []
         | 
| 1215 | 
            -
            rubygems_version: 3. | 
| 1216 | 
            +
            rubygems_version: 3.0.9
         | 
| 1216 1217 | 
             
            signing_key:
         | 
| 1217 1218 | 
             
            specification_version: 4
         | 
| 1218 1219 | 
             
            summary: The bare bones necessary for Spree
         | 
| @@ -1,25 +0,0 @@ | |
| 1 | 
            -
            <% line_items.each do |item| %>
         | 
| 2 | 
            -
              <%= item.variant.sku %> <%= raw(item.variant.product.name) %> <%= raw(item.variant.options_text) -%> (<%=item.quantity%>) <%= Spree.t('at_symbol') %> <%= item.single_money %> = <%= item.display_amount %>
         | 
| 3 | 
            -
            <% end %>
         | 
| 4 | 
            -
            ============================================================
         | 
| 5 | 
            -
            <%= Spree.t('order_mailer.subtotal') %> <%= order.display_item_total %>
         | 
| 6 | 
            -
            <% if order.line_item_adjustments.exists? %>
         | 
| 7 | 
            -
              <% if order.all_adjustments.promotion.eligible.exists? %>
         | 
| 8 | 
            -
                <% order.all_adjustments.promotion.eligible.group_by(&:label).each do |label, adjustments| %>
         | 
| 9 | 
            -
                  <%= Spree.t(:promotion) %>: <%= label %> <%= Spree::Money.new(adjustments.sum(&:amount), currency: order.currency) %>
         | 
| 10 | 
            -
                <% end %>
         | 
| 11 | 
            -
              <% end %>
         | 
| 12 | 
            -
            <% end %>
         | 
| 13 | 
            -
             | 
| 14 | 
            -
            <% order.shipments.group_by { |s| s.selected_shipping_rate.try(:name) }.each do |name, shipments| %>
         | 
| 15 | 
            -
              <%= Spree.t(:shipping) %>: <%= name %> <%= Spree::Money.new(shipments.sum(&:discounted_cost), currency: order.currency) %>
         | 
| 16 | 
            -
            <% end %>
         | 
| 17 | 
            -
             | 
| 18 | 
            -
            <% if order.additional_tax_total != 0 %>
         | 
| 19 | 
            -
              <%= Spree.t(:tax) %>: <%= order.display_additional_tax_total.to_html %>
         | 
| 20 | 
            -
            <% end %>
         | 
| 21 | 
            -
             | 
| 22 | 
            -
            <% order.adjustments.eligible.each do |adjustment| %>
         | 
| 23 | 
            -
              <% next if (adjustment.source_type == 'Spree::TaxRate') and (adjustment.amount == 0) %>
         | 
| 24 | 
            -
              <%= adjustment.label %> <%= adjustment.display_amount %>
         | 
| 25 | 
            -
            <% end %>
         |