forked from pstuteville/magentor
-
Notifications
You must be signed in to change notification settings - Fork 2
/
invoice.rb
132 lines (124 loc) · 3.61 KB
/
invoice.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
128
129
130
131
132
module Magento
# http://www.magentocommerce.com/wiki/doc/webservices-api/api/sales_order_invoice
# 100 Requested shipment does not exists.
# 101 Invalid filters given. Details in error message.
# 102 Invalid data given. Details in error message.
# 103 Requested order does not exists
# 104 Invoice status not changed.
class Invoice < Base
class << self
# sales_order_invoice.list
# Retrieve list of invoices by filters
#
# Return: array Arguments:
#
# array filters - filters for invoices list (optional)
def list(*args)
results = commit("list", *args)
results.collect do |result|
new(result)
end
end
# sales_order_invoice.info
# Retrieve invoice information
#
# Return: array
#
# Arguments:
#
# string invoiceIncrementId - invoice increment id
def info(*args)
new(commit("info", *args))
end
# sales_order_invoice.create
# Create new invoice for order
#
# Return: string
#
# Arguments:
#
# string orderIncrementId - order increment id
# array itemsQty - items qty to invoice
# string comment - invoice comment (optional)
# boolean email - send invoice on e-mail (optional)
# boolean includeComment - include comments in e-mail (optional)
def create(*args)
id = commit("create", *args)
record = info(id)
record
end
# sales_order_invoice.addComment
# Add new comment to shipment
#
# Arguments:
#
# string invoiceIncrementId - invoice increment id
# string comment - invoice comment
# boolean email - send invoice on e-mail (optional)
# boolean includeComment - include comments in e-mail (optional)
def add_comment(*args)
commit('addComment', *args)
end
# sales_order_invoice.capture
# Capture invoice
#
# Return: boolean
#
# Arguments:
#
# string invoiceIncrementId - invoice increment id
#
# Notes:
#
# You should check the invoice to see if can be captured before attempting to capture an invoice,
# otherwise the API call with generate an error.
#
# Invoices have states as defined in the model Mage_Sales_Model_Order_Invoice:
#
# STATE_OPEN = 1
# STATE_PAID = 2
# STATE_CANCELED = 3
# Also note there is a method call in the model that checks this for you canCapture(), and it also
# verifies that the payment is able to be captured, so the invoice state might not be the only
# condition that’s required to allow it to be captured.
def capture(*args)
commit('capture', *args)
end
# sales_order_invoice.void
# Void invoice
#
# Return: boolean
#
# Arguments:
#
# string invoiceIncrementId - invoice increment id
def void(*args)
commit('void', *args)
end
# sales_order_invoice.cancel
# Cancel invoice
#
# Return: boolean
#
# Arguments:
#
# string invoiceIncrementId - invoice increment id
def cancel(*args)
commit('cancel', *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