invoice_printer 2.0.0.beta3 → 2.2.0
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.
- 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
|