invoice_printer 2.0.0.beta3 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Dockerfile +7 -6
- data/Gemfile +1 -1
- data/Gemfile.lock +29 -16
- data/README.md +9 -3
- data/assets/fonts/opensans/OpenSans-Bold.ttf +0 -0
- data/assets/fonts/overpass/Overpass-Bold.ttf +0 -0
- data/assets/fonts/roboto/Roboto-Bold.ttf +0 -0
- data/benchmarks/render.yml +19 -13
- data/bin/invoice_printer +7 -0
- data/docs/COMMAND_LINE.md +122 -0
- data/docs/LIBRARY.md +16 -12
- data/docs/SERVER.md +8 -2
- data/examples/breakdown.rb +77 -0
- data/examples/international_invoice.rb +2 -2
- data/examples/long_invoice.rb +8 -8
- data/examples/picture.jpg +0 -0
- data/examples/promo.rb +19 -13
- data/examples/provider_purchaser_lines.rb +6 -15
- data/examples/simple_invoice.rb +15 -16
- data/examples/variable_field_invoice.rb +96 -0
- data/invoice_printer.gemspec +3 -2
- data/invoice_printer_fonts.gemspec +4 -1
- data/lib/invoice_printer.rb +27 -2
- data/lib/invoice_printer/document.rb +90 -148
- data/lib/invoice_printer/document/item.rb +34 -28
- data/lib/invoice_printer/pdf_document.rb +201 -208
- data/lib/invoice_printer/version.rb +1 -1
- data/test/api_test.rb +2 -2
- data/test/background_test.rb +1 -1
- data/test/cli_test.rb +1 -1
- data/test/dates_box_test.rb +4 -4
- data/test/examples_test.rb +2 -0
- data/test/inputs_test.rb +4 -4
- data/test/invoice_printer_test.rb +2 -2
- data/test/items_table_test.rb +2 -2
- data/test/labels_test.rb +2 -2
- data/test/notes_test.rb +1 -1
- data/test/page_numbers_test.rb +4 -4
- data/test/payment_box_test.rb +5 -5
- data/test/test_ext.rb +2 -1
- data/test/test_helper.rb +1 -1
- metadata +15 -15
- data/assets/logo.png +0 -0
- data/examples/background.png +0 -0
- data/examples/logo.png +0 -0
- data/examples/prawn.png +0 -0
- data/examples/stamp.png +0 -0
data/test/api_test.rb
CHANGED
@@ -31,7 +31,7 @@ class ApiTest < Minitest::Test
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def test_print_with_valid_document
|
34
|
-
invoice = InvoicePrinter::Document.new(default_document_params)
|
34
|
+
invoice = InvoicePrinter::Document.new(**default_document_params)
|
35
35
|
|
36
36
|
json = {
|
37
37
|
'document' => invoice.to_h,
|
@@ -60,7 +60,7 @@ class ApiTest < Minitest::Test
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def test_render_with_valid_document
|
63
|
-
invoice = InvoicePrinter::Document.new(default_document_params)
|
63
|
+
invoice = InvoicePrinter::Document.new(**default_document_params)
|
64
64
|
output = InvoicePrinter.render(document: invoice)
|
65
65
|
|
66
66
|
json = {
|
data/test/background_test.rb
CHANGED
data/test/cli_test.rb
CHANGED
@@ -8,7 +8,7 @@ class CLITest < Minitest::Test
|
|
8
8
|
t = Time.now.strftime("%Y%m%d")
|
9
9
|
tmpname = "/tmp/invoice-#{t}-#{$$}-#{rand(0x100000000).to_s(36)}-fd"
|
10
10
|
|
11
|
-
@invoice = InvoicePrinter::Document.new(default_document_params)
|
11
|
+
@invoice = InvoicePrinter::Document.new(**default_document_params)
|
12
12
|
@invoice_as_json = @invoice.to_json
|
13
13
|
@output_path = tmpname
|
14
14
|
end
|
data/test/dates_box_test.rb
CHANGED
@@ -8,7 +8,7 @@ class DatesBoxTest < Minitest::Test
|
|
8
8
|
issue_date: '05/03/2016',
|
9
9
|
due_date: '14/03/2016'
|
10
10
|
)
|
11
|
-
invoice = InvoicePrinter::Document.new(params)
|
11
|
+
invoice = InvoicePrinter::Document.new(**params)
|
12
12
|
rendered_pdf = InvoicePrinter.render(document: invoice)
|
13
13
|
pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
|
14
14
|
|
@@ -21,7 +21,7 @@ class DatesBoxTest < Minitest::Test
|
|
21
21
|
issue_date: '05/03/2016',
|
22
22
|
due_date: ''
|
23
23
|
)
|
24
|
-
invoice = InvoicePrinter::Document.new(params)
|
24
|
+
invoice = InvoicePrinter::Document.new(**params)
|
25
25
|
rendered_pdf = InvoicePrinter.render(document: invoice)
|
26
26
|
pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
|
27
27
|
|
@@ -34,7 +34,7 @@ class DatesBoxTest < Minitest::Test
|
|
34
34
|
issue_date: nil,
|
35
35
|
due_date: '05/03/2016'
|
36
36
|
)
|
37
|
-
invoice = InvoicePrinter::Document.new(params)
|
37
|
+
invoice = InvoicePrinter::Document.new(**params)
|
38
38
|
rendered_pdf = InvoicePrinter.render(document: invoice)
|
39
39
|
pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
|
40
40
|
|
@@ -47,7 +47,7 @@ class DatesBoxTest < Minitest::Test
|
|
47
47
|
issue_date: '',
|
48
48
|
due_date: nil
|
49
49
|
)
|
50
|
-
invoice = InvoicePrinter::Document.new(params)
|
50
|
+
invoice = InvoicePrinter::Document.new(**params)
|
51
51
|
rendered_pdf = InvoicePrinter.render(document: invoice)
|
52
52
|
pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
|
53
53
|
|
data/test/examples_test.rb
CHANGED
@@ -4,10 +4,12 @@ require 'test_helper'
|
|
4
4
|
class ExamplesTest < Minitest::Test
|
5
5
|
def setup
|
6
6
|
examples_directory = File.expand_path('../../examples', __FILE__)
|
7
|
+
assets_directory = File.expand_path('../../assets', __FILE__)
|
7
8
|
@examples = Dir.glob("#{examples_directory}/*.rb")
|
8
9
|
@test_dir = File.absolute_path('./tmp/invoice_printer_examples')
|
9
10
|
FileUtils.mkdir_p @test_dir
|
10
11
|
FileUtils.copy_entry examples_directory, @test_dir
|
12
|
+
FileUtils.cp_r assets_directory, File.absolute_path('./tmp/')
|
11
13
|
end
|
12
14
|
|
13
15
|
def teardown
|
data/test/inputs_test.rb
CHANGED
@@ -28,12 +28,12 @@ class InputsTest < Minitest::Test
|
|
28
28
|
)
|
29
29
|
|
30
30
|
# No exceptions should be raised
|
31
|
-
invoice = InvoicePrinter::Document.new(params)
|
31
|
+
invoice = InvoicePrinter::Document.new(**params)
|
32
32
|
InvoicePrinter.render(document: invoice)
|
33
33
|
end
|
34
34
|
|
35
35
|
def test_missing_font_raises_an_exception
|
36
|
-
invoice = InvoicePrinter::Document.new(default_document_params)
|
36
|
+
invoice = InvoicePrinter::Document.new(**default_document_params)
|
37
37
|
|
38
38
|
assert_raises(InvoicePrinter::PDFDocument::FontFileNotFound) do
|
39
39
|
InvoicePrinter.render(document: invoice, font: 'missing.font')
|
@@ -41,7 +41,7 @@ class InputsTest < Minitest::Test
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def test_missing_logo_raises_an_exception
|
44
|
-
invoice = InvoicePrinter::Document.new(default_document_params)
|
44
|
+
invoice = InvoicePrinter::Document.new(**default_document_params)
|
45
45
|
|
46
46
|
assert_raises(InvoicePrinter::PDFDocument::LogoFileNotFound) do
|
47
47
|
InvoicePrinter.render(document: invoice, logo: 'missing.png')
|
@@ -49,7 +49,7 @@ class InputsTest < Minitest::Test
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def test_missing_stamp_raises_an_exception
|
52
|
-
invoice = InvoicePrinter::Document.new(default_document_params)
|
52
|
+
invoice = InvoicePrinter::Document.new(**default_document_params)
|
53
53
|
|
54
54
|
assert_raises(InvoicePrinter::PDFDocument::StampFileNotFound) do
|
55
55
|
InvoicePrinter.render(document: invoice, stamp: 'missing.png')
|
@@ -4,7 +4,7 @@ class InvoicePrinterTest < Minitest::Test
|
|
4
4
|
include InvoicePrinterHelpers
|
5
5
|
|
6
6
|
def test_render_document
|
7
|
-
invoice = InvoicePrinter::Document.new(default_document_params)
|
7
|
+
invoice = InvoicePrinter::Document.new(**default_document_params)
|
8
8
|
rendered_pdf = InvoicePrinter.render(document: invoice)
|
9
9
|
pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
|
10
10
|
strings = InvoicePrinter::PDFDocument.new(document: invoice).to_a
|
@@ -13,7 +13,7 @@ class InvoicePrinterTest < Minitest::Test
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def test_render_document_from_json
|
16
|
-
invoice = InvoicePrinter::Document.new(default_document_params)
|
16
|
+
invoice = InvoicePrinter::Document.new(**default_document_params)
|
17
17
|
invoice_json = JSON.parse(invoice.to_json)
|
18
18
|
invoice_from_json = InvoicePrinter::Document.from_json(invoice_json)
|
19
19
|
rendered_pdf = InvoicePrinter.render(document: invoice_from_json)
|
data/test/items_table_test.rb
CHANGED
@@ -41,10 +41,10 @@ class ItemsTableTest < Minitest::Test
|
|
41
41
|
|
42
42
|
def invoice_without_item_column(column)
|
43
43
|
InvoicePrinter::Document.new(
|
44
|
-
default_document_params.merge(
|
44
|
+
**default_document_params.merge(
|
45
45
|
items: [
|
46
46
|
InvoicePrinter::Document::Item.new(
|
47
|
-
default_document_item_params.merge("#{column}": nil)
|
47
|
+
**default_document_item_params.merge("#{column}": nil)
|
48
48
|
)
|
49
49
|
]
|
50
50
|
)
|
data/test/labels_test.rb
CHANGED
@@ -6,7 +6,7 @@ class LabelsTest < Minitest::Test
|
|
6
6
|
def test_setting_global_labels
|
7
7
|
labels = { provider: 'Default Provider', purchaser: 'Default Purchaser' }
|
8
8
|
InvoicePrinter.labels = labels
|
9
|
-
invoice = InvoicePrinter::Document.new(default_document_params)
|
9
|
+
invoice = InvoicePrinter::Document.new(**default_document_params)
|
10
10
|
rendered_pdf = InvoicePrinter.render(document: invoice)
|
11
11
|
pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
|
12
12
|
|
@@ -16,7 +16,7 @@ class LabelsTest < Minitest::Test
|
|
16
16
|
|
17
17
|
def test_setting_instant_labels
|
18
18
|
labels = { provider: 'Current Provider', purchaser: 'Current Purchaser' }
|
19
|
-
invoice = InvoicePrinter::Document.new(default_document_params)
|
19
|
+
invoice = InvoicePrinter::Document.new(**default_document_params)
|
20
20
|
rendered_pdf = InvoicePrinter.render(document: invoice, labels: labels)
|
21
21
|
pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
|
22
22
|
|
data/test/notes_test.rb
CHANGED
@@ -7,7 +7,7 @@ class NotesTest < Minitest::Test
|
|
7
7
|
params = default_document_params.merge(
|
8
8
|
note: 'ABC is a registered trademark.'
|
9
9
|
)
|
10
|
-
invoice = InvoicePrinter::Document.new(params)
|
10
|
+
invoice = InvoicePrinter::Document.new(**params)
|
11
11
|
rendered_pdf = InvoicePrinter.render(document: invoice)
|
12
12
|
pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
|
13
13
|
|
data/test/page_numbers_test.rb
CHANGED
@@ -5,11 +5,11 @@ class PageNumbersTest < Minitest::Test
|
|
5
5
|
|
6
6
|
# If there is only one page, we skip numbering
|
7
7
|
def test_do_not_number_1_page
|
8
|
-
item = InvoicePrinter::Document::Item.new(default_document_item_params)
|
8
|
+
item = InvoicePrinter::Document::Item.new(**default_document_item_params)
|
9
9
|
params = default_document_params.merge(
|
10
10
|
items: [item]
|
11
11
|
)
|
12
|
-
invoice = InvoicePrinter::Document.new(params)
|
12
|
+
invoice = InvoicePrinter::Document.new(**params)
|
13
13
|
rendered_pdf = InvoicePrinter.render(document: invoice)
|
14
14
|
pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
|
15
15
|
|
@@ -17,12 +17,12 @@ class PageNumbersTest < Minitest::Test
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def test_number_2_and_more_pages
|
20
|
-
item = InvoicePrinter::Document::Item.new(default_document_item_params)
|
20
|
+
item = InvoicePrinter::Document::Item.new(**default_document_item_params)
|
21
21
|
items = [item] * 50
|
22
22
|
params = default_document_params.merge(
|
23
23
|
items: items
|
24
24
|
)
|
25
|
-
invoice = InvoicePrinter::Document.new(params)
|
25
|
+
invoice = InvoicePrinter::Document.new(**params)
|
26
26
|
rendered_pdf = InvoicePrinter.render(document: invoice)
|
27
27
|
pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
|
28
28
|
|
data/test/payment_box_test.rb
CHANGED
@@ -8,7 +8,7 @@ class PaymentBoxTest < Minitest::Test
|
|
8
8
|
bank_account_number: nil,
|
9
9
|
account_iban: 'IBAN'
|
10
10
|
)
|
11
|
-
invoice = InvoicePrinter::Document.new(params)
|
11
|
+
invoice = InvoicePrinter::Document.new(**params)
|
12
12
|
rendered_pdf = InvoicePrinter.render(document: invoice)
|
13
13
|
pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
|
14
14
|
|
@@ -24,7 +24,7 @@ class PaymentBoxTest < Minitest::Test
|
|
24
24
|
account_iban: nil,
|
25
25
|
account_swift: nil
|
26
26
|
)
|
27
|
-
invoice = InvoicePrinter::Document.new(params)
|
27
|
+
invoice = InvoicePrinter::Document.new(**params)
|
28
28
|
rendered_pdf = InvoicePrinter.render(document: invoice)
|
29
29
|
pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
|
30
30
|
|
@@ -41,7 +41,7 @@ class PaymentBoxTest < Minitest::Test
|
|
41
41
|
account_iban: 'SAMPLE_IBAN',
|
42
42
|
account_swift: nil
|
43
43
|
)
|
44
|
-
invoice = InvoicePrinter::Document.new(params)
|
44
|
+
invoice = InvoicePrinter::Document.new(**params)
|
45
45
|
rendered_pdf = InvoicePrinter.render(document: invoice)
|
46
46
|
pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
|
47
47
|
|
@@ -59,7 +59,7 @@ class PaymentBoxTest < Minitest::Test
|
|
59
59
|
account_iban: nil,
|
60
60
|
account_swift: 'SAMPLE_SWIFT'
|
61
61
|
)
|
62
|
-
invoice = InvoicePrinter::Document.new(params)
|
62
|
+
invoice = InvoicePrinter::Document.new(**params)
|
63
63
|
rendered_pdf = InvoicePrinter.render(document: invoice)
|
64
64
|
pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
|
65
65
|
|
@@ -77,7 +77,7 @@ class PaymentBoxTest < Minitest::Test
|
|
77
77
|
account_iban: 'SAMPLE_IBAN',
|
78
78
|
account_swift: 'SAMPLE_SWIFT'
|
79
79
|
)
|
80
|
-
invoice = InvoicePrinter::Document.new(params)
|
80
|
+
invoice = InvoicePrinter::Document.new(**params)
|
81
81
|
rendered_pdf = InvoicePrinter.render(document: invoice)
|
82
82
|
pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
|
83
83
|
|
data/test/test_ext.rb
CHANGED
@@ -101,7 +101,8 @@ module InvoicePrinter
|
|
101
101
|
strings << @document.tax2
|
102
102
|
strings << "#{@labels[:tax3]}:"
|
103
103
|
strings << @document.tax3
|
104
|
-
strings << "#{@labels[:total]}:
|
104
|
+
strings << "#{@labels[:total]}:"
|
105
|
+
strings << @document.total
|
105
106
|
strings
|
106
107
|
end
|
107
108
|
|
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: 2.
|
4
|
+
version: 2.2.0
|
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: 2021-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -30,28 +30,28 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 2.
|
33
|
+
version: '2.2'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 2.
|
40
|
+
version: '2.2'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name: prawn-
|
42
|
+
name: prawn-table
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: 0.2.2
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.2.2
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,27 +95,27 @@ files:
|
|
95
95
|
- LICENSE.txt
|
96
96
|
- README.md
|
97
97
|
- Rakefile
|
98
|
-
- assets/
|
98
|
+
- assets/fonts/opensans/OpenSans-Bold.ttf
|
99
|
+
- assets/fonts/overpass/Overpass-Bold.ttf
|
100
|
+
- assets/fonts/roboto/Roboto-Bold.ttf
|
99
101
|
- benchmarks/render.yml
|
100
102
|
- bin/invoice_printer
|
101
103
|
- docs/COMMAND_LINE.md
|
102
104
|
- docs/INSTALLATION.md
|
103
105
|
- docs/LIBRARY.md
|
104
106
|
- docs/SERVER.md
|
105
|
-
- examples/
|
107
|
+
- examples/breakdown.rb
|
106
108
|
- examples/clients/node.js
|
107
109
|
- examples/complex_invoice.rb
|
108
110
|
- examples/czech_invoice.rb
|
109
111
|
- examples/czech_invoice_long.rb
|
110
112
|
- examples/international_invoice.rb
|
111
|
-
- examples/logo.png
|
112
113
|
- examples/long_invoice.rb
|
113
114
|
- examples/picture.jpg
|
114
|
-
- examples/prawn.png
|
115
115
|
- examples/promo.rb
|
116
116
|
- examples/provider_purchaser_lines.rb
|
117
117
|
- examples/simple_invoice.rb
|
118
|
-
- examples/
|
118
|
+
- examples/variable_field_invoice.rb
|
119
119
|
- invoice_printer.gemspec
|
120
120
|
- invoice_printer_fonts.gemspec
|
121
121
|
- invoice_printer_server.gemspec
|
@@ -153,11 +153,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
153
153
|
version: '2.4'
|
154
154
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
155
|
requirements:
|
156
|
-
- - "
|
156
|
+
- - ">="
|
157
157
|
- !ruby/object:Gem::Version
|
158
|
-
version:
|
158
|
+
version: '0'
|
159
159
|
requirements: []
|
160
|
-
rubygems_version: 3.
|
160
|
+
rubygems_version: 3.2.3
|
161
161
|
signing_key:
|
162
162
|
specification_version: 4
|
163
163
|
summary: Super simple PDF invoicing in pure Ruby
|
data/assets/logo.png
DELETED
Binary file
|
data/examples/background.png
DELETED
Binary file
|
data/examples/logo.png
DELETED
Binary file
|
data/examples/prawn.png
DELETED
Binary file
|
data/examples/stamp.png
DELETED
Binary file
|