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 CHANGED
@@ -1 +1 @@
1
- 2.15.3.16
1
+ 2.15.5.1
@@ -0,0 +1,13 @@
1
+ module Xeroizer
2
+ module Record
3
+ class AllocationModel < BaseModel
4
+ end
5
+
6
+ class Allocation < Base
7
+ decimal :applied_amount
8
+ belongs_to :invoice
9
+
10
+ validates_presence_of :invoice
11
+ end
12
+ end
13
+ end
@@ -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
- delete_or_void_invoice!('DELETED')
189
+ change_status!('DELETED')
190
190
  end
191
191
 
192
192
  # Void an approved invoice with no payments.
193
193
  def void!
194
- delete_or_void_invoice!('VOIDED')
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 delete_or_void_invoice!(new_status)
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
@@ -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
- Xeroizer::Record.const_get("#{model_name}Model".to_sym).new(parent.application, model_name.to_s)
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.attributes
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
- true
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!(parent.class.xml_node_name || parent.model_name) {
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}, nil),
9
- LineItem.build({:quantity => 1, :unit_amount => 1.00, :tax_amount => 0.30}, nil)
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
- @first = FirstRecord.new(@client)
63
- @second = SecondRecord.new(@client)
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 = "PRIMARKY KEY 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.3"
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 = "2012-12-07"
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.24"
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.3.16
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-06-19 00:00:00.000000000 Z
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: