class Returnly::Builders::ReturnItem

Attributes

order[RW]

Public Class Methods

new(order) click to toggle source
# File lib/returnly/builders/return_item.rb, line 6
def initialize(order)
  @order = order
end

Public Instance Methods

build_by_inventory_unit(inventory_unit, options = {}) click to toggle source
# File lib/returnly/builders/return_item.rb, line 23
def build_by_inventory_unit(inventory_unit, options = {})
  Spree::ReturnItem.new(
    amount: inventory_unit.line_item.price,
    acceptance_status: 'accepted',
    inventory_unit_id: inventory_unit.id,
    reception_status_event: 'receive',
    resellable: options[:restock]
  )
end
build_by_requested_line_items(requested_line_items) click to toggle source
# File lib/returnly/builders/return_item.rb, line 10
def build_by_requested_line_items(requested_line_items)
  requested_line_items.each_with_object([]) do |request_line_item, return_items|
    quantity = request_line_item[:units].to_i
    next return_items unless quantity > 0

    inventory_units_by(request_line_item[:order_line_item_id]).take(quantity).each do |inventory_unit|
      return_items << build_by_inventory_unit(inventory_unit, request_line_item)
    end

    return_items
  end
end

Private Instance Methods

inventory_units_by(line_item_ids) click to toggle source
# File lib/returnly/builders/return_item.rb, line 35
def inventory_units_by(line_item_ids)
  order.inventory_units.includes(:line_item)
    .where(line_item_id: line_item_ids)
    .where.not(state: 'returned')
end