paperless_to_xero 1.2.1 → 1.2.2
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/lib/paperless_to_xero/converter.rb +9 -2
- data/lib/paperless_to_xero/invoice_item.rb +3 -0
- data/lib/paperless_to_xero/version.rb +2 -2
- data/spec/fixtures/single-vat-2011-01-03.csv +2 -0
- data/spec/fixtures/single-vat-2011-01-04.csv +2 -0
- data/spec/paperless_to_xero/converter_spec.rb +34 -0
- data/spec/paperless_to_xero/invoice_item_spec.rb +2 -1
- metadata +10 -6
@@ -7,6 +7,7 @@ module PaperlessToXero
|
|
7
7
|
class Converter
|
8
8
|
VAT_RATE_CHANGE_2008_12_01 = Date.parse('2008-12-01')
|
9
9
|
VAT_RATE_CHANGE_2010_01_01 = Date.parse('2010-01-01')
|
10
|
+
VAT_RATE_CHANGE_2011_01_04 = Date.parse('2011-01-04')
|
10
11
|
attr_reader :input_path, :output_path
|
11
12
|
|
12
13
|
def initialize(input_path, output_path)
|
@@ -145,9 +146,15 @@ module PaperlessToXero
|
|
145
146
|
when nil
|
146
147
|
'No VAT'
|
147
148
|
else
|
148
|
-
|
149
|
-
'VAT - 17.5%'
|
149
|
+
base_uk_vat_rate_on_date(date)
|
150
150
|
end
|
151
151
|
end
|
152
|
+
|
153
|
+
def base_uk_vat_rate_on_date(date)
|
154
|
+
return 'VAT - 15%' if date >= VAT_RATE_CHANGE_2008_12_01 && date < VAT_RATE_CHANGE_2010_01_01
|
155
|
+
return 'VAT - 17.5%' if date >= VAT_RATE_CHANGE_2010_01_01 && date < VAT_RATE_CHANGE_2011_01_04
|
156
|
+
return 'VAT - 20%' if date >= VAT_RATE_CHANGE_2011_01_04
|
157
|
+
'VAT - 17.5%'
|
158
|
+
end
|
152
159
|
end
|
153
160
|
end
|
@@ -19,6 +19,7 @@ module PaperlessToXero
|
|
19
19
|
'15% (EU VAT ID)' => 1.15.to_d,
|
20
20
|
'15% (VAT on expenses)' => 1.15.to_d,
|
21
21
|
'17.5% (VAT on expenses)' => 1.175.to_d,
|
22
|
+
'20% (VAT on expenses)' => 1.2.to_d,
|
22
23
|
'Zero Rated Expenses' => 0,
|
23
24
|
'15% (Luxembourg, VAT on expenses)' => 1.15.to_d
|
24
25
|
}
|
@@ -78,6 +79,8 @@ module PaperlessToXero
|
|
78
79
|
'15% (EU VAT ID)'
|
79
80
|
when 'VAT - 15%'
|
80
81
|
'15% (VAT on expenses)'
|
82
|
+
when 'VAT - 20%'
|
83
|
+
'20% (VAT on expenses)'
|
81
84
|
when 'VAT - 17.5%'
|
82
85
|
'17.5% (VAT on expenses)'
|
83
86
|
when 'VAT - 0%'
|
@@ -242,6 +242,40 @@ describe PaperlessToXero::Converter do
|
|
242
242
|
]
|
243
243
|
)
|
244
244
|
end
|
245
|
+
|
246
|
+
it "correctly handles the last day of that VAT rate" do
|
247
|
+
@converter.stubs(:input_path).returns(fixture_path('single-vat-2011-01-03'))
|
248
|
+
@converter.parse
|
249
|
+
|
250
|
+
verify_invoice_details(
|
251
|
+
:invoice => {:date => Date.parse('2011-01-03'), :merchant => 'Apple Store, Regent Street',
|
252
|
+
:reference_id => '2011-01-03-05', :inc_vat_total => '117.50', :vat_total => '17.50',
|
253
|
+
:ex_vat_total => '100.00', :currency => 'GBP'},
|
254
|
+
:vat_inclusive => true,
|
255
|
+
:line_items => [
|
256
|
+
{:description => 'Phone case', :category => '429', :vat_type => '17.5% (VAT on expenses)',
|
257
|
+
:vat_inclusive_amount => '117.50', :vat_exclusive_amount => '100.00', :vat_amount => '17.50'}
|
258
|
+
]
|
259
|
+
)
|
260
|
+
end
|
261
|
+
end
|
262
|
+
|
263
|
+
describe "2011-01-04's move to 20% VAT" do
|
264
|
+
it "correctly handles the first day of that VAT rate" do
|
265
|
+
@converter.stubs(:input_path).returns(fixture_path('single-vat-2011-01-04'))
|
266
|
+
@converter.parse
|
267
|
+
|
268
|
+
verify_invoice_details(
|
269
|
+
:invoice => {:date => Date.parse('2011-01-04'), :merchant => 'Apple Store, Regent Street',
|
270
|
+
:reference_id => '2011-01-04-05', :inc_vat_total => '120.00', :vat_total => '20.00',
|
271
|
+
:ex_vat_total => '100.00', :currency => 'GBP'},
|
272
|
+
:vat_inclusive => true,
|
273
|
+
:line_items => [
|
274
|
+
{:description => 'Phone case', :category => '429', :vat_type => '20% (VAT on expenses)',
|
275
|
+
:vat_inclusive_amount => '120.00', :vat_exclusive_amount => '100.00', :vat_amount => '20.00'}
|
276
|
+
]
|
277
|
+
)
|
278
|
+
end
|
245
279
|
end
|
246
280
|
end
|
247
281
|
|
@@ -144,7 +144,8 @@ describe PaperlessToXero::InvoiceItem do
|
|
144
144
|
'VAT - Luxembourg' => '15% (Luxembourg, VAT on expenses)',
|
145
145
|
'VAT - EU' => '15% (EU VAT ID)',
|
146
146
|
'VAT - EU - EU372000063' => '15% (EU VAT ID)',
|
147
|
-
'VAT -
|
147
|
+
'VAT - 20%' => '20% (VAT on expenses)',
|
148
|
+
'VAT - 17.5%' => '17.5% (VAT on expenses)',
|
148
149
|
'VAT - 15%' => '15% (VAT on expenses)',
|
149
150
|
'VAT - 0%' => 'Zero Rated Expenses',
|
150
151
|
'VAT' => '15% (VAT on expenses)',
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paperless_to_xero
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 1.2.
|
9
|
+
- 2
|
10
|
+
version: 1.2.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Matt Patterson
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2011-02-28 00:00:00 +00:00
|
19
19
|
default_executable: paperless_to_xero
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -97,6 +97,8 @@ files:
|
|
97
97
|
- spec/fixtures/single-vat-2009-12-31.csv
|
98
98
|
- spec/fixtures/single-vat-2009.csv
|
99
99
|
- spec/fixtures/single-vat-2010-01-01.csv
|
100
|
+
- spec/fixtures/single-vat-2011-01-03.csv
|
101
|
+
- spec/fixtures/single-vat-2011-01-04.csv
|
100
102
|
- spec/fixtures/single-vat-pre-2008-12.csv
|
101
103
|
- spec/fixtures/single-zero_rated.csv
|
102
104
|
has_rdoc: true
|
@@ -130,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
132
|
requirements: []
|
131
133
|
|
132
134
|
rubyforge_project: paperless_to_xero
|
133
|
-
rubygems_version: 1.3
|
135
|
+
rubygems_version: 1.5.3
|
134
136
|
signing_key:
|
135
137
|
specification_version: 3
|
136
138
|
summary: Convert Paperless CSV exports to Xero invoice import CSV
|
@@ -159,5 +161,7 @@ test_files:
|
|
159
161
|
- spec/fixtures/single-vat-2009-12-31.csv
|
160
162
|
- spec/fixtures/single-vat-2009.csv
|
161
163
|
- spec/fixtures/single-vat-2010-01-01.csv
|
164
|
+
- spec/fixtures/single-vat-2011-01-03.csv
|
165
|
+
- spec/fixtures/single-vat-2011-01-04.csv
|
162
166
|
- spec/fixtures/single-vat-pre-2008-12.csv
|
163
167
|
- spec/fixtures/single-zero_rated.csv
|