Module: SolidusShipwire::Order

Includes:
Proxy
Defined in:
app/models/order_decorator.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Proxy

#create_on_shipwire, #find_on_shipwire, #find_or_create_on_shipwire_api, #in_shipwire, #update_on_shipwire

Class Method Details

.prepended(base) ⇒ Object



4
5
6
7
# File 'app/models/order_decorator.rb', line 4

def self.prepended(base)
  base.after_save :update_on_shipwire, if: :update_on_shipwire?
  base.state_machine.after_transition to: :complete, do: :in_shipwire, if: :line_items_in_shipwire?
end

Instance Method Details

#line_items_in_shipwireObject



28
29
30
# File 'app/models/order_decorator.rb', line 28

def line_items_in_shipwire
  line_items.on_shipwire.map(&:to_shipwire)
end

#line_items_in_shipwire?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'app/models/order_decorator.rb', line 24

def line_items_in_shipwire?
  line_items_in_shipwire.any?
end

#shipwire_can_split?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'app/models/order_decorator.rb', line 36

def shipwire_can_split?
  1
end

#shipwire_currencyObject



44
45
46
# File 'app/models/order_decorator.rb', line 44

def shipwire_currency
  'USD'
end

#shipwire_hold?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'app/models/order_decorator.rb', line 40

def shipwire_hold?
  0
end

#shipwire_serverObject



48
49
50
# File 'app/models/order_decorator.rb', line 48

def shipwire_server
  'Production'
end

#to_shipwireObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'app/models/order_decorator.rb', line 9

def to_shipwire
  {
    orderId: id,
    orderNo: number,
    options: {
      currency: shipwire_currency,
      canSplit: shipwire_can_split?,
      hold: shipwire_hold?,
      server: shipwire_server
    },
    items: line_items_in_shipwire,
    shipTo: ship_address.to_shipwire.merge(email: email)
  }
end

#to_shipwire_object(hash) ⇒ Object



32
33
34
# File 'app/models/order_decorator.rb', line 32

def to_shipwire_object(hash)
  SolidusShipwire::ShipwireObjects::Order.new(hash['id'], self, hash)
end