invoice_printer 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +67 -4
- data/examples/background.png +0 -0
- data/examples/complex_invoice.pdf +1042 -402
- data/examples/complex_invoice.png +0 -0
- data/examples/complex_invoice.rb +1 -1
- data/examples/czech_invoice.pdf +427 -374
- data/examples/czech_invoice.rb +1 -1
- data/examples/international_invoice.pdf +1152 -1
- data/examples/international_invoice.rb +84 -0
- data/examples/simple_invoice.pdf +0 -0
- data/examples/simple_invoice.rb +1 -1
- data/examples/stamp.png +0 -0
- data/lib/invoice_printer/pdf_document.rb +282 -100
- data/lib/invoice_printer/version.rb +1 -1
- data/lib/invoice_printer.rb +8 -0
- data/test/background_test.rb +1 -1
- data/test/dates_box_test.rb +8 -8
- data/test/examples_test.rb +33 -0
- data/test/payment_box_test.rb +10 -10
- data/test/test_ext.rb +7 -7
- data/test/test_helper.rb +3 -0
- metadata +8 -6
- data/examples/background.jpg +0 -0
- data/examples/czech_invoice.jpg +0 -0
- data/examples/example.jpg +0 -0
data/lib/invoice_printer.rb
CHANGED
@@ -38,6 +38,14 @@ module InvoicePrinter
|
|
38
38
|
# price_per_item: 'Price per item',
|
39
39
|
# amount: 'Amount'
|
40
40
|
# }
|
41
|
+
#
|
42
|
+
# You can denote the details or translations of labels by using sublabels.
|
43
|
+
# To set a sublabel for a label, just assign it under +sublabels+ e.g.
|
44
|
+
#
|
45
|
+
# InvoicePrinter.labels = {
|
46
|
+
# ...
|
47
|
+
# sublabels: { tax: 'Daň', amount: 'Celkem' }
|
48
|
+
# }
|
41
49
|
def self.labels=(labels)
|
42
50
|
PDFDocument.labels = labels
|
43
51
|
end
|
data/test/background_test.rb
CHANGED
@@ -8,7 +8,7 @@ class BackgroundTest < Minitest::Test
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def test_background_render
|
11
|
-
InvoicePrinter.render(document: @invoice, background: './examples/background.
|
11
|
+
InvoicePrinter.render(document: @invoice, background: './examples/background.png')
|
12
12
|
InvoicePrinter.render(document: @invoice, background: nil)
|
13
13
|
InvoicePrinter.render(document: @invoice)
|
14
14
|
end
|
data/test/dates_box_test.rb
CHANGED
@@ -12,8 +12,8 @@ class DatesBoxTest < Minitest::Test
|
|
12
12
|
rendered_pdf = InvoicePrinter.render(document: invoice)
|
13
13
|
pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
|
14
14
|
|
15
|
-
assert_equal true, pdf_analysis.strings.include?('Issue date
|
16
|
-
assert_equal true, pdf_analysis.strings.include?('Due date
|
15
|
+
assert_equal true, pdf_analysis.strings.include?('Issue date')
|
16
|
+
assert_equal true, pdf_analysis.strings.include?('Due date')
|
17
17
|
end
|
18
18
|
|
19
19
|
def test_setting_only_issue_date
|
@@ -25,8 +25,8 @@ class DatesBoxTest < Minitest::Test
|
|
25
25
|
rendered_pdf = InvoicePrinter.render(document: invoice)
|
26
26
|
pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
|
27
27
|
|
28
|
-
assert_equal true, pdf_analysis.strings.include?('Issue date
|
29
|
-
assert_equal false, pdf_analysis.strings.include?('Due date
|
28
|
+
assert_equal true, pdf_analysis.strings.include?('Issue date')
|
29
|
+
assert_equal false, pdf_analysis.strings.include?('Due date')
|
30
30
|
end
|
31
31
|
|
32
32
|
def test_setting_only_due_date
|
@@ -38,8 +38,8 @@ class DatesBoxTest < Minitest::Test
|
|
38
38
|
rendered_pdf = InvoicePrinter.render(document: invoice)
|
39
39
|
pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
|
40
40
|
|
41
|
-
assert_equal false, pdf_analysis.strings.include?('Issue date
|
42
|
-
assert_equal true, pdf_analysis.strings.include?('Due date
|
41
|
+
assert_equal false, pdf_analysis.strings.include?('Issue date')
|
42
|
+
assert_equal true, pdf_analysis.strings.include?('Due date')
|
43
43
|
end
|
44
44
|
|
45
45
|
def test_setting_no_dates
|
@@ -51,7 +51,7 @@ class DatesBoxTest < Minitest::Test
|
|
51
51
|
rendered_pdf = InvoicePrinter.render(document: invoice)
|
52
52
|
pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
|
53
53
|
|
54
|
-
assert_equal false, pdf_analysis.strings.include?('Issue date
|
55
|
-
assert_equal false, pdf_analysis.strings.include?('Due date
|
54
|
+
assert_equal false, pdf_analysis.strings.include?('Issue date')
|
55
|
+
assert_equal false, pdf_analysis.strings.include?('Due date')
|
56
56
|
end
|
57
57
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
# Integration tests running the examples from /examples directory
|
4
|
+
class ExamplesTest < Minitest::Test
|
5
|
+
def setup
|
6
|
+
examples_directory = File.expand_path('../../examples', __FILE__)
|
7
|
+
@examples = Dir.glob("#{examples_directory}/*.rb")
|
8
|
+
@test_dir = File.absolute_path('./tmp/invoice_printer_examples')
|
9
|
+
FileUtils.copy_entry examples_directory, @test_dir
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
FileUtils.rm_rf @test_dir if File.exists?(@test_dir)
|
14
|
+
end
|
15
|
+
|
16
|
+
# 1, copy example to the test directory
|
17
|
+
# 2, run the example
|
18
|
+
# 3, compare the output with example from /examples
|
19
|
+
def test_examples
|
20
|
+
@examples.each do |example|
|
21
|
+
example_file = File.join(@test_dir, File.basename(example))
|
22
|
+
original_pdf = example.gsub('.rb', '.pdf')
|
23
|
+
result_pdf = example_file.gsub('.rb', '.pdf')
|
24
|
+
|
25
|
+
Dir.chdir(@test_dir) do
|
26
|
+
`ruby -I../../lib #{example_file}`
|
27
|
+
|
28
|
+
similarity = (File.read(original_pdf) == File.read(result_pdf))
|
29
|
+
assert_equal true, similarity, "#{original_pdf} does not match #{result_pdf}"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/test/payment_box_test.rb
CHANGED
@@ -14,8 +14,8 @@ class PaymentBoxTest < Minitest::Test
|
|
14
14
|
|
15
15
|
assert_equal true, pdf_analysis.strings.include?('Payment in cash')
|
16
16
|
assert_equal false, pdf_analysis.strings.include?('Payment by bank transfer on the account below:')
|
17
|
-
assert_equal false, pdf_analysis.strings.include?('SWIFT
|
18
|
-
assert_equal false, pdf_analysis.strings.include?('IBAN
|
17
|
+
assert_equal false, pdf_analysis.strings.include?('SWIFT')
|
18
|
+
assert_equal false, pdf_analysis.strings.include?('IBAN')
|
19
19
|
end
|
20
20
|
|
21
21
|
def test_setting_only_local_bank_account_number
|
@@ -31,8 +31,8 @@ class PaymentBoxTest < Minitest::Test
|
|
31
31
|
assert_equal false, pdf_analysis.strings.include?('Payment in cash')
|
32
32
|
assert_equal true, pdf_analysis.strings.include?('Payment by bank transfer on the account below:')
|
33
33
|
assert_equal true, pdf_analysis.strings.include?('218291829/0100')
|
34
|
-
assert_equal false, pdf_analysis.strings.include?('SWIFT
|
35
|
-
assert_equal false, pdf_analysis.strings.include?('IBAN
|
34
|
+
assert_equal false, pdf_analysis.strings.include?('SWIFT')
|
35
|
+
assert_equal false, pdf_analysis.strings.include?('IBAN')
|
36
36
|
end
|
37
37
|
|
38
38
|
def test_setting_bank_account_number_and_iban
|
@@ -48,8 +48,8 @@ class PaymentBoxTest < Minitest::Test
|
|
48
48
|
assert_equal false, pdf_analysis.strings.include?('Payment in cash')
|
49
49
|
assert_equal true, pdf_analysis.strings.include?('Payment by bank transfer on the account below:')
|
50
50
|
assert_equal true, pdf_analysis.strings.include?('218291829/0100')
|
51
|
-
assert_equal false, pdf_analysis.strings.include?('SWIFT
|
52
|
-
assert_equal true, pdf_analysis.strings.include?('IBAN
|
51
|
+
assert_equal false, pdf_analysis.strings.include?('SWIFT')
|
52
|
+
assert_equal true, pdf_analysis.strings.include?('IBAN')
|
53
53
|
assert_equal true, pdf_analysis.strings.include?('SAMPLE_IBAN')
|
54
54
|
end
|
55
55
|
|
@@ -66,9 +66,9 @@ class PaymentBoxTest < Minitest::Test
|
|
66
66
|
assert_equal false, pdf_analysis.strings.include?('Payment in cash')
|
67
67
|
assert_equal true, pdf_analysis.strings.include?('Payment by bank transfer on the account below:')
|
68
68
|
assert_equal true, pdf_analysis.strings.include?('218291829/0100')
|
69
|
-
assert_equal true, pdf_analysis.strings.include?('SWIFT
|
69
|
+
assert_equal true, pdf_analysis.strings.include?('SWIFT')
|
70
70
|
assert_equal true, pdf_analysis.strings.include?('SAMPLE_SWIFT')
|
71
|
-
assert_equal false, pdf_analysis.strings.include?('IBAN
|
71
|
+
assert_equal false, pdf_analysis.strings.include?('IBAN')
|
72
72
|
end
|
73
73
|
|
74
74
|
def test_setting_bank_account_number_iban_and_swift
|
@@ -84,9 +84,9 @@ class PaymentBoxTest < Minitest::Test
|
|
84
84
|
assert_equal false, pdf_analysis.strings.include?('Payment in cash')
|
85
85
|
assert_equal true, pdf_analysis.strings.include?('Payment by bank transfer on the account below:')
|
86
86
|
assert_equal true, pdf_analysis.strings.include?('218291829/0100')
|
87
|
-
assert_equal true, pdf_analysis.strings.include?('SWIFT
|
87
|
+
assert_equal true, pdf_analysis.strings.include?('SWIFT')
|
88
88
|
assert_equal true, pdf_analysis.strings.include?('SAMPLE_SWIFT')
|
89
|
-
assert_equal true, pdf_analysis.strings.include?('IBAN
|
89
|
+
assert_equal true, pdf_analysis.strings.include?('IBAN')
|
90
90
|
assert_equal true, pdf_analysis.strings.include?('SAMPLE_IBAN')
|
91
91
|
end
|
92
92
|
end
|
data/test/test_ext.rb
CHANGED
@@ -23,8 +23,8 @@ module InvoicePrinter
|
|
23
23
|
# Strings representaion of provider's box
|
24
24
|
def provider_box
|
25
25
|
strings = []
|
26
|
-
strings << @labels[:provider]
|
27
26
|
strings << @document.provider_name
|
27
|
+
strings << @labels[:provider]
|
28
28
|
strings << "#{@document.provider_street} #{@document.provider_street_number}".strip
|
29
29
|
strings << @document.provider_postcode
|
30
30
|
strings << @document.provider_city
|
@@ -40,8 +40,8 @@ module InvoicePrinter
|
|
40
40
|
# Strings representaion of purchaser's box
|
41
41
|
def purchaser_box
|
42
42
|
strings = []
|
43
|
-
strings << @labels[:purchaser]
|
44
43
|
strings << @document.purchaser_name
|
44
|
+
strings << @labels[:purchaser]
|
45
45
|
strings << "#{@document.purchaser_street} #{@document.purchaser_street_number}".strip
|
46
46
|
strings << @document.purchaser_postcode
|
47
47
|
strings << @document.purchaser_city
|
@@ -62,11 +62,11 @@ module InvoicePrinter
|
|
62
62
|
else
|
63
63
|
strings << @labels[:payment_by_transfer]
|
64
64
|
end
|
65
|
-
strings << "#{@labels[:account_number]}
|
65
|
+
strings << "#{@labels[:account_number]}"
|
66
66
|
strings << @document.bank_account_number
|
67
|
-
strings << "#{@labels[:swift]}
|
67
|
+
strings << "#{@labels[:swift]}"
|
68
68
|
strings << @document.account_swift
|
69
|
-
strings << "#{@labels[:iban]}
|
69
|
+
strings << "#{@labels[:iban]}"
|
70
70
|
strings << @document.account_iban
|
71
71
|
strings
|
72
72
|
end
|
@@ -74,9 +74,9 @@ module InvoicePrinter
|
|
74
74
|
# Strings representaion of dates box
|
75
75
|
def dates_box
|
76
76
|
strings = []
|
77
|
-
strings << "#{@labels[:issue_date]}
|
77
|
+
strings << "#{@labels[:issue_date]}"
|
78
78
|
strings << @document.issue_date
|
79
|
-
strings << "#{@labels[:due_date]}
|
79
|
+
strings << "#{@labels[:due_date]}"
|
80
80
|
strings << @document.due_date
|
81
81
|
strings
|
82
82
|
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: invoice_printer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josef Strzibny
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -92,14 +92,14 @@ files:
|
|
92
92
|
- LICENSE.txt
|
93
93
|
- README.md
|
94
94
|
- Rakefile
|
95
|
-
- examples/background.
|
95
|
+
- examples/background.png
|
96
96
|
- examples/complex_invoice.pdf
|
97
97
|
- examples/complex_invoice.png
|
98
98
|
- examples/complex_invoice.rb
|
99
|
-
- examples/czech_invoice.jpg
|
100
99
|
- examples/czech_invoice.pdf
|
101
100
|
- examples/czech_invoice.rb
|
102
|
-
- examples/
|
101
|
+
- examples/international_invoice.pdf
|
102
|
+
- examples/international_invoice.rb
|
103
103
|
- examples/prawn.png
|
104
104
|
- examples/simple_invoice.pdf
|
105
105
|
- examples/simple_invoice.rb
|
@@ -112,6 +112,7 @@ files:
|
|
112
112
|
- lib/invoice_printer/version.rb
|
113
113
|
- test/background_test.rb
|
114
114
|
- test/dates_box_test.rb
|
115
|
+
- test/examples_test.rb
|
115
116
|
- test/inputs_test.rb
|
116
117
|
- test/invoice_printer_test.rb
|
117
118
|
- test/items_table_test.rb
|
@@ -141,13 +142,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
141
142
|
version: '0'
|
142
143
|
requirements: []
|
143
144
|
rubyforge_project:
|
144
|
-
rubygems_version: 2.
|
145
|
+
rubygems_version: 2.5.1
|
145
146
|
signing_key:
|
146
147
|
specification_version: 4
|
147
148
|
summary: Super simple PDF invoicing in pure Ruby
|
148
149
|
test_files:
|
149
150
|
- test/background_test.rb
|
150
151
|
- test/dates_box_test.rb
|
152
|
+
- test/examples_test.rb
|
151
153
|
- test/inputs_test.rb
|
152
154
|
- test/invoice_printer_test.rb
|
153
155
|
- test/items_table_test.rb
|
data/examples/background.jpg
DELETED
Binary file
|
data/examples/czech_invoice.jpg
DELETED
Binary file
|
data/examples/example.jpg
DELETED
Binary file
|