xeroizer 0.4.3 → 0.4.4
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/contact.rb +4 -2
- data/lib/xeroizer/models/credit_note.rb +24 -8
- data/lib/xeroizer/models/invoice.rb +10 -6
- data/lib/xeroizer/models/line_item.rb +3 -1
- data/lib/xeroizer/models/organisation.rb +5 -0
- data/lib/xeroizer/models/payment.rb +16 -1
- data/lib/xeroizer/record/record_association_helper.rb +1 -1
- data/xeroizer.gemspec +2 -2
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.4
|
@@ -16,6 +16,7 @@ module Xeroizer
|
|
16
16
|
|
17
17
|
set_primary_key :contact_id
|
18
18
|
set_possible_primary_keys :contact_id, :contact_number
|
19
|
+
list_contains_summary_only true
|
19
20
|
|
20
21
|
guid :contact_id
|
21
22
|
string :contact_number
|
@@ -28,14 +29,15 @@ module Xeroizer
|
|
28
29
|
string :first_name
|
29
30
|
string :last_name
|
30
31
|
string :email_address
|
32
|
+
string :skype_user_name
|
31
33
|
string :contact_groups
|
32
34
|
string :default_currency
|
33
35
|
datetime :updated_date_utc, :api_name => 'UpdatedDateUTC'
|
34
36
|
boolean :is_supplier
|
35
37
|
boolean :is_customer
|
36
38
|
|
37
|
-
has_many :addresses
|
38
|
-
has_many :phones
|
39
|
+
has_many :addresses, :list_complete => true
|
40
|
+
has_many :phones, :list_complete => true
|
39
41
|
has_many :contact_groups
|
40
42
|
|
41
43
|
validates_presence_of :name
|
@@ -70,14 +70,26 @@ module Xeroizer
|
|
70
70
|
|
71
71
|
public
|
72
72
|
|
73
|
+
# Access the contact name without forcing a download of
|
74
|
+
# an incomplete, summary credit note.
|
75
|
+
def contact_name
|
76
|
+
attributes[:contact] && attributes[:contact][:name]
|
77
|
+
end
|
78
|
+
|
79
|
+
# Access the contact ID without forcing a download of an
|
80
|
+
# incomplete, summary credit note.
|
81
|
+
def contact_id
|
82
|
+
attributes[:contact] && attributes[:contact][:contact_id]
|
83
|
+
end
|
84
|
+
|
73
85
|
# Swallow assignment of attributes that should only be calculated automatically.
|
74
86
|
def sub_total=(value); raise SettingTotalDirectlyNotSupported.new(:sub_total); end
|
75
87
|
def total_tax=(value); raise SettingTotalDirectlyNotSupported.new(:total_tax); end
|
76
88
|
def total=(value); raise SettingTotalDirectlyNotSupported.new(:total); end
|
77
89
|
|
78
90
|
# Calculate sub_total from line_items.
|
79
|
-
def sub_total
|
80
|
-
if new_record? ||
|
91
|
+
def sub_total(always_summary = false)
|
92
|
+
if !always_summary && (new_record? || (!new_record? && line_items && line_items.size > 0))
|
81
93
|
sum = (line_items || []).inject(BigDecimal.new('0')) { | sum, line_item | sum + line_item.line_amount }
|
82
94
|
|
83
95
|
# If the default amount types are inclusive of 'tax' then remove the tax amount from this sub-total.
|
@@ -87,19 +99,23 @@ module Xeroizer
|
|
87
99
|
attributes[:sub_total]
|
88
100
|
end
|
89
101
|
end
|
90
|
-
|
102
|
+
|
91
103
|
# Calculate total_tax from line_items.
|
92
|
-
def total_tax
|
93
|
-
if new_record? ||
|
104
|
+
def total_tax(always_summary = false)
|
105
|
+
if !always_summary && (new_record? || (!new_record? && line_items && line_items.size > 0))
|
94
106
|
(line_items || []).inject(BigDecimal.new('0')) { | sum, line_item | sum + line_item.tax_amount }
|
95
107
|
else
|
96
108
|
attributes[:total_tax]
|
97
109
|
end
|
98
110
|
end
|
99
|
-
|
111
|
+
|
100
112
|
# Calculate the total from line_items.
|
101
|
-
def total
|
102
|
-
|
113
|
+
def total(always_summary = false)
|
114
|
+
unless always_summary
|
115
|
+
sub_total + total_tax
|
116
|
+
else
|
117
|
+
attributes[:total]
|
118
|
+
end
|
103
119
|
end
|
104
120
|
|
105
121
|
# Retrieve the PDF version of this credit note.
|
@@ -113,8 +113,8 @@ module Xeroizer
|
|
113
113
|
def total=(value); raise SettingTotalDirectlyNotSupported.new(:total); end
|
114
114
|
|
115
115
|
# Calculate sub_total from line_items.
|
116
|
-
def sub_total
|
117
|
-
if new_record? || (!new_record? && line_items && line_items.size > 0)
|
116
|
+
def sub_total(always_summary = false)
|
117
|
+
if !always_summary && (new_record? || (!new_record? && line_items && line_items.size > 0))
|
118
118
|
sum = (line_items || []).inject(BigDecimal.new('0')) { | sum, line_item | sum + line_item.line_amount }
|
119
119
|
|
120
120
|
# If the default amount types are inclusive of 'tax' then remove the tax amount from this sub-total.
|
@@ -126,8 +126,8 @@ module Xeroizer
|
|
126
126
|
end
|
127
127
|
|
128
128
|
# Calculate total_tax from line_items.
|
129
|
-
def total_tax
|
130
|
-
if new_record? || (!new_record? && line_items && line_items.size > 0)
|
129
|
+
def total_tax(always_summary = false)
|
130
|
+
if !always_summary && (new_record? || (!new_record? && line_items && line_items.size > 0))
|
131
131
|
(line_items || []).inject(BigDecimal.new('0')) { | sum, line_item | sum + line_item.tax_amount }
|
132
132
|
else
|
133
133
|
attributes[:total_tax]
|
@@ -135,8 +135,12 @@ module Xeroizer
|
|
135
135
|
end
|
136
136
|
|
137
137
|
# Calculate the total from line_items.
|
138
|
-
def total
|
139
|
-
|
138
|
+
def total(always_summary = false)
|
139
|
+
unless always_summary
|
140
|
+
sub_total + total_tax
|
141
|
+
else
|
142
|
+
attributes[:total]
|
143
|
+
end
|
140
144
|
end
|
141
145
|
|
142
146
|
# Retrieve the PDF version of this invoice.
|
@@ -26,7 +26,9 @@ module Xeroizer
|
|
26
26
|
|
27
27
|
# Calculate the line_total (if there is a quantity and unit_amount).
|
28
28
|
# Description-only lines have been allowed since Xero V2.09.
|
29
|
-
def line_amount
|
29
|
+
def line_amount(summary_only = false)
|
30
|
+
return attributes[:line_amount] if summary_only
|
31
|
+
|
30
32
|
BigDecimal((quantity * unit_amount).to_s).round(2) if quantity && unit_amount
|
31
33
|
end
|
32
34
|
|
@@ -10,16 +10,21 @@ module Xeroizer
|
|
10
10
|
|
11
11
|
class Organisation < Base
|
12
12
|
|
13
|
+
string :api_key, :api_name => 'APIKey'
|
13
14
|
string :name
|
14
15
|
string :legal_name
|
15
16
|
boolean :pays_tax
|
16
17
|
string :version
|
17
18
|
string :organisation_type
|
18
19
|
string :base_currency
|
20
|
+
string :country_code
|
21
|
+
boolean :is_demo_company
|
22
|
+
string :organisation_status
|
19
23
|
integer :financial_year_end_day
|
20
24
|
integer :financial_year_end_month
|
21
25
|
date :period_lock_date
|
22
26
|
date :end_of_year_lock_date
|
27
|
+
string :tax_number
|
23
28
|
string :registration_number
|
24
29
|
datetime :created_date_utc, :api_name => 'CreatedDateUTC'
|
25
30
|
|
@@ -16,11 +16,26 @@ module Xeroizer
|
|
16
16
|
date :date
|
17
17
|
decimal :amount
|
18
18
|
decimal :currency_rate
|
19
|
+
string :payment_type
|
20
|
+
string :status
|
19
21
|
string :reference
|
20
|
-
|
22
|
+
datetime :updated_date_utc, :api_name => 'UpdatedDateUTC'
|
23
|
+
|
21
24
|
belongs_to :account
|
22
25
|
belongs_to :invoice
|
23
26
|
|
27
|
+
def invoice_id
|
28
|
+
invoice.id if invoice
|
29
|
+
end
|
30
|
+
|
31
|
+
def account_id
|
32
|
+
account.id if account
|
33
|
+
end
|
34
|
+
|
35
|
+
def account_code
|
36
|
+
account.code if account
|
37
|
+
end
|
38
|
+
|
24
39
|
end
|
25
40
|
|
26
41
|
end
|
@@ -125,7 +125,7 @@ module Xeroizer
|
|
125
125
|
# the complete version of the record before accessing the association.
|
126
126
|
if list_contains_summary_only?
|
127
127
|
define_method internal_field_name do
|
128
|
-
download_complete_record! unless new_record? || complete_record_downloaded?
|
128
|
+
download_complete_record! unless new_record? || options[:list_complete] || complete_record_downloaded?
|
129
129
|
self.attributes[field_name] || ((association_type == :has_many) ? [] : nil)
|
130
130
|
end
|
131
131
|
end
|
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 = "0.4.
|
8
|
+
s.version = "0.4.4"
|
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-04-
|
12
|
+
s.date = "2012-04-16"
|
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 = [
|
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: 7
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 0.4.
|
9
|
+
- 4
|
10
|
+
version: 0.4.4
|
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: 2012-04-
|
18
|
+
date: 2012-04-16 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
prerelease: false
|