sie 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NDlhZjFkZmQwYmY5YjFhMDQ5ODljYTU1ZGM1ODFkMzMxMmIxMTRhOA==
4
+ ZTJmMTM2NDcyNGI2ODIzZmZhZjdiMmUzMTNmOWM5ZjU5NDNjNWUyYw==
5
5
  data.tar.gz: !binary |-
6
- OWIzMjZlMTE5YjAxZjg0MDE0YmNiOWE4MTljMDYzMGY4ZTE0NDc5Ng==
6
+ MDI2MDliNGM4NWZlMjYyMWU1ODliOGQ5YTA4NzMyMGFmMzVmMTgyNQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MDA2OWNhMjU2OWFmNzBkNjZlOTgzODQyODBjNGZhNzFkYThkZTU1Y2UxNTlk
10
- YjhkNTNhNDUwOTcxMGQ3OGU3ZTFlYzkwNDIzMTgyZWYyMDIwYmY4NWEzNDU2
11
- ZjEwNDYxZTg4ZTk4NTE4MGMzZTE0NGRkMjYwNzdlOTMxZGQ3ZDY=
9
+ YzA1OTJjYzcyNTA3YWMxYmY5MTE0ZjY5ODk5ZDJkMjA2NDJiZGJhYTcyMGY5
10
+ ODEwYzQ3ZDY4NjdkYjI5YzdlOTJmYzE0ZDJjZDkxNDIwODdiNDdkNzY0Yjcy
11
+ MWYwODVmNjk4OWFjNGIxNzQ4MmExNGMyMTAyMTQ3ODFlZjcyNWI=
12
12
  data.tar.gz: !binary |-
13
- MWFlMzY5ZmI4YjljZGQwMzY5Y2U3ZmIyZWE0ZDE5ZGMxYWE1YjY1ODJhNjk2
14
- NmE3MjE1OThlZTAxN2VkNzU0NzgyNWFhZjgyODhiNDUzMmEyMzBiYmQwZDM5
15
- Yjg2ODMxYjQ3NGIzZmE2MzI5M2Q0OGQ1MjNiMjlkMDNiYjg0N2M=
13
+ OGY2NTM1ZjgyZjU2ODMwYTc4YmNhOTFiZjNlMDJjYjhmMTgwMmQ3ZWFmZWQ4
14
+ MGM3ZDI5MjgzN2Q5MDFiYjVkNmIzZGIyYmQwOTRjNzRlZTgyZDRhNGE4MTc4
15
+ OWRhNTU1MGNiMTBlYzljZWZjNWNmNmM0M2QwNzM4ZjVkNjk0NTY=
@@ -7,21 +7,14 @@ class Sie::Document
7
7
 
8
8
  def between
9
9
  from_date.year.upto(to_date.year).map { |year|
10
- financial_year = FinancialYear.new(year, start_month)
11
- financial_year_date_range = financial_year.date_range
12
- financial_year_date_range unless out_of_year_range(financial_year_date_range)
13
- }.compact
14
- end
15
-
16
- private
17
-
18
- def out_of_year_range(range)
19
- range.last.year > to_date.year
10
+ FinancialYear.date_range(year, start_month)
11
+ }
20
12
  end
21
13
  end
22
14
 
23
15
  class FinancialYear
24
- pattr_initialize :year, :start_month
16
+ method_object :date_range,
17
+ :year, :start_month
25
18
 
26
19
  def date_range
27
20
  (start_of_year.beginning_of_month..end_of_year.end_of_month)
@@ -30,7 +23,7 @@ class Sie::Document
30
23
  private
31
24
 
32
25
  def start_of_year
33
- start_of_year = Date.new(year, start_month, 1)
26
+ Date.new(year, start_month, 1)
34
27
  end
35
28
 
36
29
  def end_of_year
data/lib/sie/document.rb CHANGED
@@ -6,7 +6,8 @@ require "active_support/core_ext/module/delegation"
6
6
 
7
7
  class Sie::Document
8
8
  pattr_initialize :data_source
9
- FORTNOX_DESCRIPTION_LENGTH_MAX = 30
9
+ # Because fortnox imposes these limits
10
+ DESCRIPTION_LENGTH_MAX = 30
10
11
 
11
12
  def render
12
13
  add_header
@@ -43,7 +44,7 @@ class Sie::Document
43
44
  def add_accounts
44
45
  accounts.each do |account|
45
46
  number = account.fetch(:number)
46
- description = account.fetch(:description).slice(0, FORTNOX_DESCRIPTION_LENGTH_MAX)
47
+ description = account.fetch(:description).slice(0, DESCRIPTION_LENGTH_MAX)
47
48
 
48
49
  add_line("KONTO", number, description)
49
50
  end
@@ -76,7 +77,7 @@ class Sie::Document
76
77
  type = opts.fetch(:type)
77
78
  number = opts.fetch(:number)
78
79
  booked_on = opts.fetch(:booked_on)
79
- description = opts.fetch(:description).slice(0, FORTNOX_DESCRIPTION_LENGTH_MAX)
80
+ description = opts.fetch(:description).slice(0, DESCRIPTION_LENGTH_MAX)
80
81
  voucher_lines = opts.fetch(:voucher_lines)
81
82
 
82
83
  add_line("VER", voucher_series(creditor, type), number, booked_on, description)
@@ -88,14 +89,14 @@ class Sie::Document
88
89
  booked_on = line.fetch(:booked_on)
89
90
  # Some SIE-importers (fortnox) cannot handle descriptions longer than 30 characters,
90
91
  # but the specification has no limit.
91
- description = line.fetch(:description).slice(0, FORTNOX_DESCRIPTION_LENGTH_MAX)
92
+ description = line.fetch(:description).slice(0, DESCRIPTION_LENGTH_MAX)
92
93
 
93
94
  add_line("TRANS", account_number, Renderer::EMPTY_ARRAY, amount, booked_on, description)
94
95
 
95
96
  # Some consumers of SIE cannot handle single voucher lines (fortnox), so add another empty one to make
96
97
  # it balance. The spec just requires the sum of lines to be 0, so single lines with zero amount would conform,
97
98
  # but break for these implementations.
98
- if voucher_lines.size < 2 && amount == 0
99
+ if voucher_lines.size < 2 && amount.zero?
99
100
  add_line("TRANS", account_number, Renderer::EMPTY_ARRAY, amount, booked_on, description)
100
101
  end
101
102
  end
data/lib/sie/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Sie
2
- VERSION = "1.0.5"
2
+ VERSION = "1.0.6"
3
3
  end
@@ -4,15 +4,14 @@ describe Sie::Document::FinancialYears, ".between" do
4
4
  it "gives us the financial years between from_date and to_date" do
5
5
  Sie::Document::FinancialYears.between(
6
6
  1,
7
- Date.new(2011, 9, 1),
8
- Date.new(2012, 12, 31)
7
+ Date.new(2011, 1, 1),
8
+ Date.new(2011, 12, 31)
9
9
  ).should == [
10
- Date.new(2011, 1, 1)..Date.new(2011, 12, 31),
11
- Date.new(2012, 1, 1)..Date.new(2012, 12, 31),
10
+ Date.new(2011, 1, 1)..Date.new(2011, 12, 31)
12
11
  ]
13
12
  end
14
13
 
15
- it "gives us the financial years between from_date and to_date" do
14
+ it "gives us the financial years over multiple years" do
16
15
  Sie::Document::FinancialYears.between(
17
16
  1,
18
17
  Date.new(2011, 9, 1),
@@ -24,18 +23,6 @@ describe Sie::Document::FinancialYears, ".between" do
24
23
  ]
25
24
  end
26
25
 
27
- it "gives us the financial years between from_date and to_date with a different financial year start month" do
28
- Sie::Document::FinancialYears.between(
29
- 5,
30
- Date.new(2011, 9, 1),
31
- Date.new(2014, 1, 31)
32
- ).should == [
33
- Date.new(2011, 5, 1)..Date.new(2012, 4, 30),
34
- Date.new(2012, 5, 1)..Date.new(2013, 4, 30),
35
- Date.new(2013, 5, 1)..Date.new(2014, 4, 30),
36
- ]
37
- end
38
-
39
26
  it "normalizes start and end date for compatibility with other systems" do
40
27
  Sie::Document::FinancialYears.between(
41
28
  1,
@@ -46,13 +33,16 @@ describe Sie::Document::FinancialYears, ".between" do
46
33
  ]
47
34
  end
48
35
 
49
- it "gives us the financial years between from_date and to_date" do
36
+ it "uses the start month" do
50
37
  Sie::Document::FinancialYears.between(
51
- 1,
52
- Date.new(2011, 1, 1),
53
- Date.new(2011, 12, 31)
38
+ 5,
39
+ Date.new(2011, 9, 1),
40
+ Date.new(2014, 1, 31)
54
41
  ).should == [
55
- Date.new(2011, 1, 1)..Date.new(2011, 12, 31)
42
+ Date.new(2011, 5, 1)..Date.new(2012, 4, 30),
43
+ Date.new(2012, 5, 1)..Date.new(2013, 4, 30),
44
+ Date.new(2013, 5, 1)..Date.new(2014, 4, 30),
45
+ Date.new(2014, 5, 1)..Date.new(2015, 4, 30),
56
46
  ]
57
47
  end
58
48
  end
@@ -163,13 +163,13 @@ describe Sie::Document, "#render" do
163
163
  }
164
164
  let(:vouchers) {
165
165
  [
166
- {
167
- creditor: true, type: :payment, number: 3, booked_on: from_date + 365, description: "Payout 1 with really really long description blablabla",
166
+ build_voucher(
167
+ description: "Payout 1 with really really long description blablabla",
168
168
  voucher_lines: [
169
- { account_number: 2400, amount: 256.0, booked_on: from_date + 365, description: "Payout line 1 with really really long description blablabla" },
170
- { account_number: 1970, amount: -256.0, booked_on: from_date + 365, description: "Payout line 2" },
169
+ build_voucher_line(description: "Payout line 1 with really really long description blablabla"),
170
+ build_voucher_line(description: "Payout line 2"),
171
171
  ]
172
- }
172
+ )
173
173
  ]
174
174
  }
175
175
 
@@ -183,22 +183,37 @@ describe Sie::Document, "#render" do
183
183
  context "with a zeroed single voucher line" do
184
184
  let(:vouchers) {
185
185
  [
186
- {
187
- creditor: false, type: :invoice, number: 1, booked_on: from_date + 2, description: "Invoice 1",
188
- voucher_lines: [
189
- { account_number: 1500, amount: 0, booked_on: from_date + 2, description: "Item 1" },
190
- ]
191
- },
186
+ build_voucher(voucher_lines: [ build_voucher_line(amount: 0) ])
192
187
  ]
193
188
  }
194
189
 
195
- it "makes sure there is always a matching zeroed line" do
190
+ it "ensures there are at least two lines" do
196
191
  expect(indexed_voucher_entries(0).size).to eq(2)
197
192
  end
198
193
  end
199
194
 
200
195
  private
201
196
 
197
+ def build_voucher(attributes)
198
+ defaults = {
199
+ creditor: true,
200
+ type: :payment,
201
+ number: 1,
202
+ booked_on: Date.today,
203
+ description: "A voucher",
204
+ voucher_lines: [
205
+ build_voucher_line,
206
+ build_voucher_line,
207
+ ],
208
+ }
209
+ defaults.merge(attributes)
210
+ end
211
+
212
+ def build_voucher_line(attributes = {})
213
+ defaults = { account_number: 1234, amount: 1, booked_on: Date.today, description: "A voucher line" }
214
+ defaults.merge(attributes)
215
+ end
216
+
202
217
  def entry_attribute(label, attribute)
203
218
  indexed_entry_attribute(label, 0, attribute)
204
219
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sie
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Barsoom AB
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-28 00:00:00.000000000 Z
11
+ date: 2014-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: attr_extras