xeroizer 0.3.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/lib/xeroizer/exceptions.rb +19 -0
- data/lib/xeroizer/models/invoice.rb +19 -1
- data/lib/xeroizer/models/line_item.rb +6 -3
- data/xeroizer.gemspec +2 -2
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.3
|
data/lib/xeroizer/exceptions.rb
CHANGED
@@ -106,5 +106,24 @@ module Xeroizer
|
|
106
106
|
end
|
107
107
|
|
108
108
|
end
|
109
|
+
|
110
|
+
class CannotChangeInvoiceStatus < StandardError
|
111
|
+
|
112
|
+
def initialize(invoice, new_status)
|
113
|
+
@invoice = invoice
|
114
|
+
@new_status = new_status
|
115
|
+
end
|
116
|
+
|
117
|
+
def message
|
118
|
+
case new_status
|
119
|
+
when 'DELETED', 'VOIDED'
|
120
|
+
unless @invoice.payments.size == 0
|
121
|
+
"There must be no payments in this invoice to change to '#{@new_status}'"
|
122
|
+
end
|
123
|
+
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
end
|
109
128
|
|
110
129
|
end
|
@@ -133,8 +133,26 @@ module Xeroizer
|
|
133
133
|
def pdf(filename = nil)
|
134
134
|
parent.pdf(id, filename)
|
135
135
|
end
|
136
|
+
|
137
|
+
# Delete an approved invoice with no payments.
|
138
|
+
def delete!
|
139
|
+
delete_or_void_invoice!('DELETED')
|
140
|
+
end
|
141
|
+
|
142
|
+
# Void an approved invoice with no payments.
|
143
|
+
def void!
|
144
|
+
delete_or_void_invoice!('VOIDED')
|
145
|
+
end
|
146
|
+
|
147
|
+
protected
|
148
|
+
|
149
|
+
def delete_or_void_authorised_invoice!(new_status)
|
150
|
+
raise CannotChangeInvoiceStatus.new(record, new_status) unless self.payments.size == 0
|
151
|
+
self.status = new_status
|
152
|
+
self.save
|
153
|
+
end
|
136
154
|
|
137
155
|
end
|
138
156
|
|
139
157
|
end
|
140
|
-
end
|
158
|
+
end
|
@@ -32,12 +32,15 @@ module Xeroizer
|
|
32
32
|
# Swallow assignment of attributes that should only be calculated automatically.
|
33
33
|
def line_amount=(value); raise SettingTotalDirectlyNotSupported.new(:line_amount); end
|
34
34
|
|
35
|
-
# Calculate the line_total.
|
35
|
+
# Calculate the line_total (if there is a quantity and unit_amount).
|
36
|
+
# Description-only lines have been allowed since Xero V2.09.
|
36
37
|
def line_amount
|
37
|
-
quantity
|
38
|
+
unless quantity.nil? && unit_amount.nil?
|
39
|
+
quantity * unit_amount
|
40
|
+
end
|
38
41
|
end
|
39
42
|
|
40
43
|
end
|
41
44
|
|
42
45
|
end
|
43
|
-
end
|
46
|
+
end
|
data/xeroizer.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{xeroizer}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Wayne Robinson"]
|
12
|
-
s.date = %q{2011-06-
|
12
|
+
s.date = %q{2011-06-14}
|
13
13
|
s.description = %q{Ruby library for the Xero accounting system API.}
|
14
14
|
s.email = %q{wayne.robinson@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xeroizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 3
|
10
|
+
version: 0.3.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Wayne Robinson
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-06-
|
18
|
+
date: 2011-06-14 00:00:00 +10:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|