Sha256: e8d7715ca955a1df21e15d919b2a8a7bd9975976d9d076aa5f4b606dd90332b0

Contents?: true

Size: 734 Bytes

Versions: 3

Compression:

Stored size: 734 Bytes

Contents

# frozen_string_literal: true

module Spree
  module Stock
    class InventoryUnitBuilder
      def initialize(order)
        @order = order
      end

      def units
        @order.line_items.flat_map do |line_item|
          build_units(line_item, line_item.quantity)
        end
      end

      def missing_units_for_line_item(line_item)
        quantity = line_item.quantity - line_item.inventory_units.count
        build_units(line_item, quantity)
      end

      private

      def build_units(line_item, quantity)
        Array.new(quantity) do
          Spree::InventoryUnit.new(
            pending: true,
            variant: line_item.variant,
            line_item:
          )
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
solidus_core-4.4.2 app/models/spree/stock/inventory_unit_builder.rb
solidus_core-4.4.1 app/models/spree/stock/inventory_unit_builder.rb
solidus_core-4.4.0 app/models/spree/stock/inventory_unit_builder.rb