xeroizer-float 2.15.3.16 → 2.15.5.1
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/models/allocation.rb +13 -0
- data/lib/xeroizer/models/bank_transaction.rb +13 -0
- data/lib/xeroizer/models/credit_note.rb +2 -0
- data/lib/xeroizer/models/invoice.rb +31 -26
- data/lib/xeroizer/record/base.rb +13 -3
- data/lib/xeroizer/record/base_model.rb +4 -2
- data/lib/xeroizer/record/xml_helper.rb +1 -1
- data/lib/xeroizer.rb +1 -1
- data/test/stub_responses/bank_transactions.xml +16 -0
- data/test/stub_responses/records/bank_transaction-ea28d9c6-c9e8-4261-8c0f-cf04192f3726.xml +24 -0
- data/test/unit/models/bank_transaction_test.rb +11 -3
- data/test/unit/models/line_item_sum_test.rb +3 -2
- data/test/unit/record/model_definition_test.rb +9 -3
- data/xeroizer.gemspec +7 -3
- metadata +7 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.15.
|
1
|
+
2.15.5.1
|
@@ -15,6 +15,7 @@ module Xeroizer
|
|
15
15
|
} unless defined?(BANK_TRANSACTION_STATUS)
|
16
16
|
BANK_TRANSACTION_STATUSES = BANK_TRANSACTION_STATUS.keys.sort
|
17
17
|
|
18
|
+
BANK_TRANSFER_TYPES = [ 'SPEND-TRANSFER', 'RECEIVE-TRANSFER' ]
|
18
19
|
|
19
20
|
def initialize(parent)
|
20
21
|
super parent
|
@@ -37,6 +38,10 @@ module Xeroizer
|
|
37
38
|
string :currency_code
|
38
39
|
decimal :currency_rate, :calculated => true
|
39
40
|
|
41
|
+
decimal :total, :calculated => true
|
42
|
+
decimal :sub_total, :calculated => true
|
43
|
+
decimal :total_tax, :calculated => true
|
44
|
+
|
40
45
|
alias_method :reconciled?, :is_reconciled
|
41
46
|
|
42
47
|
belongs_to :contact, :model_name => 'Contact'
|
@@ -73,6 +78,8 @@ module Xeroizer
|
|
73
78
|
def total; sub_total + total_tax; end
|
74
79
|
|
75
80
|
def sub_total
|
81
|
+
return attributes[:total] if is_transfer?
|
82
|
+
|
76
83
|
if ought_to_recalculate_totals?
|
77
84
|
result = LineItemSum.sub_total(self.line_items)
|
78
85
|
result -= total_tax if line_amount_types == 'Inclusive'
|
@@ -83,11 +90,17 @@ module Xeroizer
|
|
83
90
|
end
|
84
91
|
|
85
92
|
def total_tax
|
93
|
+
return BigDecimal.new('0') if is_transfer?
|
94
|
+
|
86
95
|
return ought_to_recalculate_totals? ?
|
87
96
|
LineItemSum.total_tax(self.line_items) :
|
88
97
|
attributes[:total_tax]
|
89
98
|
end
|
90
99
|
|
100
|
+
def is_transfer?
|
101
|
+
BANK_TRANSFER_TYPES.include? attributes[:type]
|
102
|
+
end
|
103
|
+
|
91
104
|
private
|
92
105
|
|
93
106
|
def ought_to_recalculate_totals?
|
@@ -64,11 +64,13 @@ module Xeroizer
|
|
64
64
|
|
65
65
|
belongs_to :contact
|
66
66
|
has_many :line_items
|
67
|
+
has_many :allocations
|
67
68
|
|
68
69
|
validates_inclusion_of :type, :in => CREDIT_NOTE_TYPES
|
69
70
|
validates_inclusion_of :status, :in => CREDIT_NOTE_STATUSES, :allow_blanks => true
|
70
71
|
validates_associated :contact
|
71
72
|
validates_associated :line_items
|
73
|
+
validates_associated :allocations, :allow_blanks => true
|
72
74
|
|
73
75
|
public
|
74
76
|
|
@@ -1,15 +1,15 @@
|
|
1
1
|
module Xeroizer
|
2
2
|
module Record
|
3
|
-
|
3
|
+
|
4
4
|
class InvoiceModel < BaseModel
|
5
5
|
# To create a new invoice, use the folowing
|
6
6
|
# $xero_client.Invoice.build(type: 'ACCREC', ..., contact: {name: 'Foo Bar'},...)
|
7
7
|
# Note that we are not making an api request to xero just to get the contact
|
8
|
-
|
8
|
+
|
9
9
|
set_permissions :read, :write, :update
|
10
|
-
|
10
|
+
|
11
11
|
public
|
12
|
-
|
12
|
+
|
13
13
|
# Retrieve the PDF version of the invoice matching the `id`.
|
14
14
|
# @param [String] id invoice's ID.
|
15
15
|
# @param [String] filename optional filename to store the PDF in instead of returning the data.
|
@@ -22,11 +22,11 @@ module Xeroizer
|
|
22
22
|
pdf_data
|
23
23
|
end
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
class Invoice < Base
|
29
|
-
|
29
|
+
|
30
30
|
INVOICE_TYPE = {
|
31
31
|
'ACCREC' => 'Accounts Receivable',
|
32
32
|
'ACCPAY' => 'Accounts Payable'
|
@@ -42,11 +42,11 @@ module Xeroizer
|
|
42
42
|
'VOIDED' => 'Approved invoices that are voided'
|
43
43
|
} unless defined?(INVOICE_STATUS)
|
44
44
|
INVOICE_STATUSES = INVOICE_STATUS.keys.sort
|
45
|
-
|
45
|
+
|
46
46
|
set_primary_key :invoice_id
|
47
47
|
set_possible_primary_keys :invoice_id, :invoice_number
|
48
48
|
list_contains_summary_only true
|
49
|
-
|
49
|
+
|
50
50
|
guid :invoice_id
|
51
51
|
string :invoice_number
|
52
52
|
string :reference
|
@@ -68,12 +68,12 @@ module Xeroizer
|
|
68
68
|
decimal :currency_rate, :calculated => true
|
69
69
|
datetime :fully_paid_on_date
|
70
70
|
boolean :sent_to_contact
|
71
|
-
|
71
|
+
|
72
72
|
belongs_to :contact
|
73
73
|
has_many :line_items
|
74
74
|
has_many :payments
|
75
75
|
has_many :credit_notes
|
76
|
-
|
76
|
+
|
77
77
|
validates_presence_of :date, :due_date, :unless => :new_record?
|
78
78
|
validates_inclusion_of :type, :in => INVOICE_TYPES
|
79
79
|
validates_inclusion_of :status, :in => INVOICE_STATUSES, :unless => :new_record?
|
@@ -81,9 +81,9 @@ module Xeroizer
|
|
81
81
|
validates_associated :contact
|
82
82
|
validates_associated :line_items, :allow_blanks => true, :unless => :approved?
|
83
83
|
validates_associated :line_items, :if => :approved?
|
84
|
-
|
84
|
+
|
85
85
|
public
|
86
|
-
|
86
|
+
|
87
87
|
# Access the contact name without forcing a download of
|
88
88
|
# an incomplete, summary invoice.
|
89
89
|
def contact_name
|
@@ -95,12 +95,12 @@ module Xeroizer
|
|
95
95
|
def contact_id
|
96
96
|
attributes[:contact] && attributes[:contact][:contact_id]
|
97
97
|
end
|
98
|
-
|
98
|
+
|
99
99
|
# Helper method to check if the invoice has been approved.
|
100
100
|
def approved?
|
101
101
|
[ 'AUTHORISED', 'PAID', 'VOIDED' ].include? status
|
102
102
|
end
|
103
|
-
|
103
|
+
|
104
104
|
# Helper method to check if the invoice is accounts payable.
|
105
105
|
def accounts_payable?
|
106
106
|
type == 'ACCPAY'
|
@@ -127,7 +127,7 @@ module Xeroizer
|
|
127
127
|
@sub_total_is_set = true
|
128
128
|
attributes[:sub_total] = sub_total
|
129
129
|
end
|
130
|
-
|
130
|
+
|
131
131
|
def total_tax=(total_tax)
|
132
132
|
@total_tax_is_set = true
|
133
133
|
attributes[:total_tax] = total_tax
|
@@ -142,9 +142,9 @@ module Xeroizer
|
|
142
142
|
def sub_total(always_summary = false)
|
143
143
|
if !@sub_total_is_set && not_summary_or_loaded_record(always_summary)
|
144
144
|
sum = (line_items || []).inject(BigDecimal.new('0')) { | sum, line_item | sum + line_item.line_amount }
|
145
|
-
|
145
|
+
|
146
146
|
# If the default amount types are inclusive of 'tax' then remove the tax amount from this sub-total.
|
147
|
-
sum -= total_tax if line_amount_types == 'Inclusive'
|
147
|
+
sum -= total_tax if line_amount_types == 'Inclusive'
|
148
148
|
sum
|
149
149
|
else
|
150
150
|
attributes[:sub_total]
|
@@ -168,16 +168,16 @@ module Xeroizer
|
|
168
168
|
attributes[:total]
|
169
169
|
end
|
170
170
|
end
|
171
|
-
|
171
|
+
|
172
172
|
def not_summary_or_loaded_record(always_summary)
|
173
173
|
!always_summary && loaded_record?
|
174
174
|
end
|
175
175
|
|
176
176
|
def loaded_record?
|
177
|
-
new_record? ||
|
177
|
+
new_record? ||
|
178
178
|
(!new_record? && line_items && line_items.size > 0)
|
179
179
|
end
|
180
|
-
|
180
|
+
|
181
181
|
# Retrieve the PDF version of this invoice.
|
182
182
|
# @param [String] filename optional filename to store the PDF in instead of returning the data.
|
183
183
|
def pdf(filename = nil)
|
@@ -186,23 +186,28 @@ module Xeroizer
|
|
186
186
|
|
187
187
|
# Delete an approved invoice with no payments.
|
188
188
|
def delete!
|
189
|
-
|
189
|
+
change_status!('DELETED')
|
190
190
|
end
|
191
191
|
|
192
192
|
# Void an approved invoice with no payments.
|
193
193
|
def void!
|
194
|
-
|
194
|
+
change_status!('VOIDED')
|
195
|
+
end
|
196
|
+
|
197
|
+
# Approve a draft invoice
|
198
|
+
def approve!
|
199
|
+
change_status!('AUTHORISED')
|
195
200
|
end
|
196
201
|
|
197
202
|
protected
|
198
203
|
|
199
|
-
def
|
204
|
+
def change_status!(new_status)
|
200
205
|
raise CannotChangeInvoiceStatus.new(record, new_status) unless self.payments.size == 0
|
201
206
|
self.status = new_status
|
202
207
|
self.save
|
203
208
|
end
|
204
|
-
|
209
|
+
|
205
210
|
end
|
206
|
-
|
211
|
+
|
207
212
|
end
|
208
213
|
end
|
data/lib/xeroizer/record/base.rb
CHANGED
@@ -14,6 +14,7 @@ module Xeroizer
|
|
14
14
|
|
15
15
|
attr_reader :attributes
|
16
16
|
attr_reader :parent
|
17
|
+
attr_reader :model
|
17
18
|
attr_accessor :errors
|
18
19
|
attr_accessor :complete_record_downloaded
|
19
20
|
|
@@ -36,14 +37,19 @@ module Xeroizer
|
|
36
37
|
end
|
37
38
|
|
38
39
|
public
|
39
|
-
|
40
|
+
|
40
41
|
def initialize(parent)
|
41
42
|
@parent = parent
|
43
|
+
@model = new_model_class(self.class.name.demodulize)
|
42
44
|
@attributes = {}
|
43
45
|
end
|
44
|
-
|
46
|
+
|
45
47
|
def new_model_class(model_name)
|
46
|
-
|
48
|
+
if parent
|
49
|
+
Xeroizer::Record.const_get("#{model_name}Model".to_sym).new(parent.application, model_name.to_s)
|
50
|
+
else
|
51
|
+
Xeroizer::Record.const_get("#{model_name}Model".to_sym).new(nil, model_name.to_s)
|
52
|
+
end
|
47
53
|
end
|
48
54
|
|
49
55
|
def [](attribute)
|
@@ -55,6 +61,10 @@ module Xeroizer
|
|
55
61
|
self.send("#{attribute}=".to_sym, value)
|
56
62
|
end
|
57
63
|
|
64
|
+
def non_calculated_attributes
|
65
|
+
attributes.reject {|name| self.class.fields[name][:calculated] }
|
66
|
+
end
|
67
|
+
|
58
68
|
def attributes=(new_attributes)
|
59
69
|
return unless new_attributes.is_a?(Hash)
|
60
70
|
parent.mark_dirty(self) if parent
|
@@ -141,6 +141,7 @@ module Xeroizer
|
|
141
141
|
end
|
142
142
|
|
143
143
|
def batch_save(chunk_size = DEFAULT_RECORDS_PER_BATCH_SAVE)
|
144
|
+
no_errors = true
|
144
145
|
@objects = {}
|
145
146
|
@allow_batch_operations = true
|
146
147
|
|
@@ -156,8 +157,9 @@ module Xeroizer
|
|
156
157
|
response = parse_response(self.send(http_method, request, {:summarizeErrors => false}))
|
157
158
|
response.response_items.each_with_index do |record, i|
|
158
159
|
if record and record.is_a?(model_class)
|
159
|
-
some_records[i].attributes = record.
|
160
|
+
some_records[i].attributes = record.non_calculated_attributes
|
160
161
|
some_records[i].errors = record.errors
|
162
|
+
no_errors = record.errors.nil? || record.errors.empty? if no_errors
|
161
163
|
some_records[i].saved!
|
162
164
|
end
|
163
165
|
end
|
@@ -167,7 +169,7 @@ module Xeroizer
|
|
167
169
|
|
168
170
|
@objects = {}
|
169
171
|
@allow_batch_operations = false
|
170
|
-
|
172
|
+
no_errors
|
171
173
|
end
|
172
174
|
|
173
175
|
def parse_response(response_xml, options = {})
|
@@ -61,7 +61,7 @@ module Xeroizer
|
|
61
61
|
# Turn a record into its XML representation.
|
62
62
|
def to_xml(b = Builder::XmlMarkup.new(:indent => 2))
|
63
63
|
optional_root_tag(parent.class.optional_xml_root_name, b) do |b|
|
64
|
-
b.tag!(
|
64
|
+
b.tag!(model.class.xml_node_name || model.model_name) {
|
65
65
|
attributes.each do | key, value |
|
66
66
|
field = self.class.fields[key]
|
67
67
|
value = self.send(key) if field[:calculated]
|
data/lib/xeroizer.rb
CHANGED
@@ -2,7 +2,6 @@ require 'rubygems'
|
|
2
2
|
require 'date'
|
3
3
|
require 'forwardable'
|
4
4
|
require 'active_support/inflector'
|
5
|
-
require 'active_support/memoizable'
|
6
5
|
# require "active_support/core_ext"
|
7
6
|
require 'oauth'
|
8
7
|
require 'oauth/signature/rsa/sha1'
|
@@ -28,6 +27,7 @@ require 'xeroizer/configuration'
|
|
28
27
|
# Include models
|
29
28
|
require 'xeroizer/models/account'
|
30
29
|
require 'xeroizer/models/address'
|
30
|
+
require 'xeroizer/models/allocation'
|
31
31
|
require 'xeroizer/models/branding_theme'
|
32
32
|
require 'xeroizer/models/bank_transaction'
|
33
33
|
require 'xeroizer/models/bank_account'
|
@@ -48,5 +48,21 @@
|
|
48
48
|
<IsReconciled>false</IsReconciled>
|
49
49
|
<CurrencyRate>1.519520</CurrencyRate>
|
50
50
|
</BankTransaction>
|
51
|
+
<BankTransaction>
|
52
|
+
<Date>2013-09-17T00:00:00</Date>
|
53
|
+
<Status>AUTHORISED</Status>
|
54
|
+
<LineAmountTypes>NoTax</LineAmountTypes>
|
55
|
+
<Total>120.00</Total>
|
56
|
+
<UpdatedDateUTC>2013-09-17T14:47:58.95</UpdatedDateUTC>
|
57
|
+
<CurrencyCode>GBP</CurrencyCode>
|
58
|
+
<BankTransactionID>ea28d9c6-c9e8-4261-8c0f-cf04192f3726</BankTransactionID>
|
59
|
+
<BankAccount>
|
60
|
+
<AccountID>bd9e85e0-0478-433d-ae9f-0b3c4f04bfe4</AccountID>
|
61
|
+
<Code>090</Code>
|
62
|
+
<Name>Business Bank Account</Name>
|
63
|
+
</BankAccount>
|
64
|
+
<Type>SPEND-TRANSFER</Type>
|
65
|
+
<IsReconciled>false</IsReconciled>
|
66
|
+
</BankTransaction>
|
51
67
|
</BankTransactions>
|
52
68
|
</Response>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<Response xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
2
|
+
<Id>4e25a58b-02c4-40f7-9e8b-ca77b2a9d61a</Id>
|
3
|
+
<Status>OK</Status>
|
4
|
+
<ProviderName>Xero API Previewer</ProviderName>
|
5
|
+
<DateTimeUTC>2013-09-18T14:17:01.2026157Z</DateTimeUTC>
|
6
|
+
<BankTransactions>
|
7
|
+
<BankTransaction>
|
8
|
+
<Date>2013-09-17T00:00:00</Date>
|
9
|
+
<Status>AUTHORISED</Status>
|
10
|
+
<LineAmountTypes>NoTax</LineAmountTypes>
|
11
|
+
<Total>120.00</Total>
|
12
|
+
<UpdatedDateUTC>2013-09-17T14:47:58.95</UpdatedDateUTC>
|
13
|
+
<CurrencyCode>GBP</CurrencyCode>
|
14
|
+
<BankTransactionID>ea28d9c6-c9e8-4261-8c0f-cf04192f3726</BankTransactionID>
|
15
|
+
<BankAccount>
|
16
|
+
<AccountID>bd9e85e0-0478-433d-ae9f-0b3c4f04bfe4</AccountID>
|
17
|
+
<Code>090</Code>
|
18
|
+
<Name>Business Bank Account</Name>
|
19
|
+
</BankAccount>
|
20
|
+
<Type>SPEND-TRANSFER</Type>
|
21
|
+
<IsReconciled>false</IsReconciled>
|
22
|
+
</BankTransaction>
|
23
|
+
</BankTransactions>
|
24
|
+
</Response>
|
@@ -7,8 +7,7 @@ class BankTransactionTest < Test::Unit::TestCase
|
|
7
7
|
def setup
|
8
8
|
fake_parent = Class.new do
|
9
9
|
attr_accessor :application
|
10
|
-
def mark_dirty(*args)
|
11
|
-
end
|
10
|
+
def mark_dirty(*args); end
|
12
11
|
end.new
|
13
12
|
|
14
13
|
the_line_items = [
|
@@ -52,7 +51,6 @@ class BankTransactionTest < Test::Unit::TestCase
|
|
52
51
|
end
|
53
52
|
|
54
53
|
context "bank transaction totals" do
|
55
|
-
|
56
54
|
should "large-scale testing from API XML" do
|
57
55
|
bank_transactions = @client.BankTransaction.all
|
58
56
|
bank_transactions.each do | bank_transaction |
|
@@ -71,5 +69,15 @@ class BankTransactionTest < Test::Unit::TestCase
|
|
71
69
|
end
|
72
70
|
end
|
73
71
|
|
72
|
+
should "handle bank transfers properly" do
|
73
|
+
bank_transactions = @client.BankTransaction.all
|
74
|
+
bank_transaction = bank_transactions.find { |bt| bt.attributes[:type] == "SPEND-TRANSFER" }
|
75
|
+
|
76
|
+
assert( bank_transaction.is_transfer? )
|
77
|
+
assert_equal( bank_transaction.attributes[:total], bank_transaction.total)
|
78
|
+
assert_equal( bank_transaction.attributes[:total], bank_transaction.sub_total)
|
79
|
+
assert_equal( 0, bank_transaction.total_tax)
|
80
|
+
end
|
81
|
+
|
74
82
|
end
|
75
83
|
end
|
@@ -4,9 +4,10 @@ class LineItemSumTest < Test::Unit::TestCase
|
|
4
4
|
include Xeroizer::Record
|
5
5
|
|
6
6
|
def setup
|
7
|
+
parent = stub(:application => nil, :mark_dirty => nil)
|
7
8
|
@the_line_items = [
|
8
|
-
LineItem.build({:quantity => 1, :unit_amount => 1.00, :tax_amount => 0.15},
|
9
|
-
LineItem.build({:quantity => 1, :unit_amount => 1.00, :tax_amount => 0.30},
|
9
|
+
LineItem.build({:quantity => 1, :unit_amount => 1.00, :tax_amount => 0.15}, parent),
|
10
|
+
LineItem.build({:quantity => 1, :unit_amount => 1.00, :tax_amount => 0.30}, parent),
|
10
11
|
]
|
11
12
|
end
|
12
13
|
|
@@ -16,6 +16,7 @@ class ModelDefinitionsTest < Test::Unit::TestCase
|
|
16
16
|
datetime :datetime1
|
17
17
|
|
18
18
|
end
|
19
|
+
class Xeroizer::Record::FirstRecordModel < Xeroizer::Record::BaseModel; end
|
19
20
|
|
20
21
|
class SecondRecord < Xeroizer::Record::Base
|
21
22
|
|
@@ -30,6 +31,7 @@ class ModelDefinitionsTest < Test::Unit::TestCase
|
|
30
31
|
datetime :datetime2
|
31
32
|
|
32
33
|
end
|
34
|
+
class Xeroizer::Record::SecondRecordModel < Xeroizer::Record::BaseModel; end
|
33
35
|
|
34
36
|
class TestRecord < Xeroizer::Record::Base
|
35
37
|
|
@@ -37,8 +39,10 @@ class ModelDefinitionsTest < Test::Unit::TestCase
|
|
37
39
|
string :name
|
38
40
|
|
39
41
|
end
|
42
|
+
class Xeroizer::Record::TestRecordModel < Xeroizer::Record::BaseModel; end
|
40
43
|
|
41
44
|
class SummaryOnlyRecord < Xeroizer::Record::Base
|
45
|
+
class Xeroizer::Record::SummaryOnlyRecordModel < Xeroizer::Record::BaseModel; end
|
42
46
|
|
43
47
|
list_contains_summary_only true
|
44
48
|
set_possible_primary_keys :primary_key_id
|
@@ -49,6 +53,7 @@ class ModelDefinitionsTest < Test::Unit::TestCase
|
|
49
53
|
end
|
50
54
|
|
51
55
|
class SummaryOnlyOffRecord < Xeroizer::Record::Base
|
56
|
+
class Xeroizer::Record::SummaryOnlyOffRecordModel < Xeroizer::Record::BaseModel; end
|
52
57
|
|
53
58
|
set_possible_primary_keys :primary_key_id
|
54
59
|
set_primary_key :primary_key_id
|
@@ -59,8 +64,9 @@ class ModelDefinitionsTest < Test::Unit::TestCase
|
|
59
64
|
|
60
65
|
def setup
|
61
66
|
@client = Xeroizer::PublicApplication.new(CONSUMER_KEY, CONSUMER_SECRET)
|
62
|
-
|
63
|
-
@
|
67
|
+
parent = stub(:application => @client, :mark_dirty => nil)
|
68
|
+
@first = FirstRecord.new(parent)
|
69
|
+
@second = SecondRecord.new(parent)
|
64
70
|
@record = TestRecord.build({}, @client.Contact)
|
65
71
|
@contact = @client.Contact.build
|
66
72
|
end
|
@@ -93,7 +99,7 @@ class ModelDefinitionsTest < Test::Unit::TestCase
|
|
93
99
|
|
94
100
|
should "define primary key with shortcut #id method" do
|
95
101
|
assert_nil(@first.id)
|
96
|
-
value = "
|
102
|
+
value = "PRIMARY KEY VALUE"
|
97
103
|
@first.id = value
|
98
104
|
assert_equal(value, @first.id)
|
99
105
|
assert_equal(value, @first.primary_key_id)
|
data/xeroizer.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "xeroizer"
|
8
|
-
s.version = "2.15.
|
8
|
+
s.version = "2.15.5"
|
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 = "
|
12
|
+
s.date = "2013-07-04"
|
13
13
|
s.description = "Ruby library for the Xero accounting system API."
|
14
14
|
s.email = "wayne.robinson@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -99,6 +99,7 @@ Gem::Specification.new do |s|
|
|
99
99
|
"test/acceptance/about_fetching_bank_transactions_test.rb",
|
100
100
|
"test/acceptance/acceptance_test.rb",
|
101
101
|
"test/acceptance/bank_transaction_reference_data.rb",
|
102
|
+
"test/acceptance/bulk_operations_test.rb",
|
102
103
|
"test/stub_responses/accounts.xml",
|
103
104
|
"test/stub_responses/api_exception.xml",
|
104
105
|
"test/stub_responses/bogus_oauth_error",
|
@@ -357,7 +358,7 @@ Gem::Specification.new do |s|
|
|
357
358
|
s.homepage = "http://github.com/waynerobinson/xeroizer"
|
358
359
|
s.licenses = ["MIT"]
|
359
360
|
s.require_paths = ["lib"]
|
360
|
-
s.rubygems_version = "1.8.
|
361
|
+
s.rubygems_version = "1.8.25"
|
361
362
|
s.summary = "Xero library"
|
362
363
|
|
363
364
|
if s.respond_to? :specification_version then
|
@@ -367,6 +368,7 @@ Gem::Specification.new do |s|
|
|
367
368
|
s.add_runtime_dependency(%q<builder>, [">= 2.1.2"])
|
368
369
|
s.add_runtime_dependency(%q<oauth>, ["= 0.4.5"])
|
369
370
|
s.add_runtime_dependency(%q<activesupport>, [">= 0"])
|
371
|
+
s.add_runtime_dependency(%q<tzinfo>, [">= 0"])
|
370
372
|
s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
|
371
373
|
s.add_runtime_dependency(%q<i18n>, [">= 0"])
|
372
374
|
s.add_runtime_dependency(%q<builder>, [">= 2.1.2"])
|
@@ -379,6 +381,7 @@ Gem::Specification.new do |s|
|
|
379
381
|
s.add_dependency(%q<builder>, [">= 2.1.2"])
|
380
382
|
s.add_dependency(%q<oauth>, ["= 0.4.5"])
|
381
383
|
s.add_dependency(%q<activesupport>, [">= 0"])
|
384
|
+
s.add_dependency(%q<tzinfo>, [">= 0"])
|
382
385
|
s.add_dependency(%q<nokogiri>, [">= 0"])
|
383
386
|
s.add_dependency(%q<i18n>, [">= 0"])
|
384
387
|
s.add_dependency(%q<builder>, [">= 2.1.2"])
|
@@ -392,6 +395,7 @@ Gem::Specification.new do |s|
|
|
392
395
|
s.add_dependency(%q<builder>, [">= 2.1.2"])
|
393
396
|
s.add_dependency(%q<oauth>, ["= 0.4.5"])
|
394
397
|
s.add_dependency(%q<activesupport>, [">= 0"])
|
398
|
+
s.add_dependency(%q<tzinfo>, [">= 0"])
|
395
399
|
s.add_dependency(%q<nokogiri>, [">= 0"])
|
396
400
|
s.add_dependency(%q<i18n>, [">= 0"])
|
397
401
|
s.add_dependency(%q<builder>, [">= 2.1.2"])
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xeroizer-float
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.15.
|
4
|
+
version: 2.15.5.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-
|
13
|
+
date: 2013-09-18 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: builder
|
@@ -233,6 +233,7 @@ files:
|
|
233
233
|
- lib/xeroizer/logging.rb
|
234
234
|
- lib/xeroizer/models/account.rb
|
235
235
|
- lib/xeroizer/models/address.rb
|
236
|
+
- lib/xeroizer/models/allocation.rb
|
236
237
|
- lib/xeroizer/models/bank_account.rb
|
237
238
|
- lib/xeroizer/models/bank_transaction.rb
|
238
239
|
- lib/xeroizer/models/branding_theme.rb
|
@@ -323,6 +324,7 @@ files:
|
|
323
324
|
- test/stub_responses/payments.xml
|
324
325
|
- test/stub_responses/rate_limit_exceeded
|
325
326
|
- test/stub_responses/records/bank_transaction-8644472b-ea4e-4e5a-9987-f79250ece35e.xml
|
327
|
+
- test/stub_responses/records/bank_transaction-ea28d9c6-c9e8-4261-8c0f-cf04192f3726.xml
|
326
328
|
- test/stub_responses/records/bank_transaction-ee4c4d5a-437d-4369-b152-848bd932f431.xml
|
327
329
|
- test/stub_responses/records/contact-043892a1-aef1-4c18-88d8-b8ccb6d31466.xml
|
328
330
|
- test/stub_responses/records/contact-09664078-efe2-4a88-89a5-67eac9b0047b.xml
|
@@ -565,6 +567,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
565
567
|
- - ! '>='
|
566
568
|
- !ruby/object:Gem::Version
|
567
569
|
version: '0'
|
570
|
+
segments:
|
571
|
+
- 0
|
572
|
+
hash: -4125047856813018795
|
568
573
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
569
574
|
none: false
|
570
575
|
requirements:
|