-
Notifications
You must be signed in to change notification settings - Fork 37
/
shipment.rb
127 lines (119 loc) · 3.39 KB
/
shipment.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
module Magentor
# http://www.magentocommerce.com/wiki/doc/webservices-api/api/sales_order_shipment
# 100 Requested shipment not exists.
# 101 Invalid filters given. Details in error message.
# 102 Invalid data given. Details in error message.
# 103 Requested order not exists.
# 104 Requested tracking not exists.
# 105 Tracking not deleted. Details in error message.
class Shipment < Base
class << self
# sales_order_shipment.list
# Retrieve list of shipments by filters
#
# Return: array
#
# Arguments:
#
# array filters - filters for shipments list
def list(*args)
results = commit("list", *args)
results.collect do |result|
new(result)
end
end
# sales_order_shipment.info
# Retrieve shipment information
#
# Return: array
#
# Arguments:
#
# string shipmentIncrementId - order shipment increment id
def info(*args)
new(commit("info", *args))
end
# sales_order_shipment.create
# Create new shipment for order
#
# Return: string - shipment increment id
#
# Arguments:
#
# string orderIncrementId - order increment id
# array itemsQty - items qty to ship as associative array (order_item_id ⇒ qty)
# string comment - shipment comment (optional)
# boolean email - send e-mail flag (optional)
# boolean includeComment - include comment in e-mail flag (optional)
def create(*args)
id = commit("create", *args)
record = info(id)
record
end
# sales_order_shipment.addComment
# Add new comment to shipment
#
# Return: boolean
#
# Arguments:
#
# string shipmentIncrementId - shipment increment id
# string comment - shipment comment
# boolean email - send e-mail flag (optional)
# boolean includeInEmail - include comment in e-mail flag (optional)
def add_comment(*args)
commit('addComment', *args)
end
# sales_order_shipment.addTrack
# Add new tracking number
#
# Return: int
#
# Arguments:
#
# string shipmentIncrementId - shipment increment id
# string carrier - carrier code
# string title - tracking title
# string trackNumber - tracking number
def add_track(*args)
commit('addTrack', *args)
end
# sales_order_shipment.removeTrack
# Remove tracking number
#
# Return: boolean
#
# Arguments:
#
# string shipmentIncrementId - shipment increment id
# int trackId - track id
def remove_track(*args)
commit('removeTrack', *args)
end
# sales_order_shipment.getCarriers
# Retrieve list of allowed carriers for order
#
# Return: array
#
# Arguments:
#
# string orderIncrementId - order increment id
def get_carriers(*args)
commit('getCarriers', *args)
end
def find_by_id(id)
info(id)
end
def find(find_type, options = {})
filters = {}
options.each_pair { |k, v| filters[k] = {:eq => v} }
results = list(filters)
if find_type == :first
results.first
else
results
end
end
end
end
end