Sha256: e6f74da4fde210f65fc0ce4c14eaf42e524072a6b28d46409ea3c511920eaf3c

Contents?: true

Size: 1.1 KB

Versions: 4

Compression:

Stored size: 1.1 KB

Contents

# frozen_string_literal: true

module SolidusProductAssembly
  module Spree
    module Stock
      module InventoryUnitBuilderDecorator
        def units
          @order.line_items.flat_map do |line_item|
            line_item.quantity_by_variant.flat_map do |variant, quantity|
              quantity.times.map { build_inventory_unit(variant, line_item) }
            end
          end
        end

        def build_inventory_unit(variant, line_item)
          inventory_unit_attributes = {
            pending: true,
            variant: variant,
            line_item: line_item,
          }
          if ::Spree.solidus_gem_version < Gem::Version.new('2.5.x')
            inventory_unit_attributes[:order] = @order
          end
          @order.inventory_units.includes(
            variant: {
              product: {
                shipping_category: {
                  shipping_methods: [:calculator, { zones: :zone_members }]
                }
              }
            }
          ).build(inventory_unit_attributes)
        end

        ::Spree::Stock::InventoryUnitBuilder.prepend self
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
solidus_product_assembly-1.4.0 app/decorators/models/solidus_product_assembly/spree/stock/inventory_unit_builder_decorator.rb
solidus_product_assembly-1.3.0 app/decorators/models/solidus_product_assembly/spree/stock/inventory_unit_builder_decorator.rb
solidus_product_assembly-1.2.0 app/decorators/models/solidus_product_assembly/spree/stock/inventory_unit_builder_decorator.rb
solidus_product_assembly-1.1.0 app/decorators/models/solidus_product_assembly/spree/stock/inventory_unit_builder_decorator.rb