Class: Workarea::OrderMerge

Inherits:
Object
  • Object
show all
Defined in:
app/services/workarea/order_merge.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(original) ⇒ OrderMerge

Returns a new instance of OrderMerge.



5
6
7
# File 'app/services/workarea/order_merge.rb', line 5

def initialize(original)
  @original = original
end

Instance Attribute Details

#originalObject (readonly)

Returns the value of attribute original.



3
4
5
# File 'app/services/workarea/order_merge.rb', line 3

def original
  @original
end

Instance Method Details

#merge(other) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'app/services/workarea/order_merge.rb', line 9

def merge(other)
  return unless original.valid?

  other.items.each do |item|
    next if original.has_sku?(item.sku)

    attributes = OrderItemDetails.find!(item.sku, product_id: item.product_id).to_h

    original.add_item(
      attributes.merge(
        product_id: item.product_id,
        sku: item.sku,
        quantity: item.quantity,
        customizations: item.customizations
      )
    )
  end

  other.promo_codes.each do |code|
    original.add_promo_code(code)
  end

  original.save!
end