invoice_printer 2.2.0 → 2.3.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 +2 -2
- data/Gemfile.lock +23 -17
- data/docs/COMMAND_LINE.md +1 -0
- data/docs/LIBRARY.md +1 -0
- data/examples/simple_invoice.rb +2 -0
- data/invoice_printer.gemspec +3 -1
- data/lib/invoice_printer/document.rb +6 -0
- data/lib/invoice_printer/pdf_document.rb +38 -26
- data/lib/invoice_printer/version.rb +1 -1
- data/regenerate.rb +10 -0
- metadata +37 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2f98cb9145f19c42e95490c56afbb156408c5049c766d9ddcb1c776ee112c5fe
|
|
4
|
+
data.tar.gz: 77c6280ab4566b41ad6b040113f3ccf99b0c4bf5e2bccce28c3d0740644a1e57
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c1be305d2988483f0912598cbcd523b3f8f020667f61cb253e7b5c3f455ed188efebcec20fe4d1f77148ce984c9866c723c3e645a9e4515b50a67aceb85d45a5
|
|
7
|
+
data.tar.gz: f4764ce73b9c8f696cdd8bfa975ab1f3cbd8d85bb62a3b335a321eb7fb860b08a03835cc875c3dd774b670af3baeffc48f590e53d0c763ccece20e9e22b74657
|
data/Dockerfile
CHANGED
|
@@ -26,10 +26,10 @@ RUN apk update && apk upgrade
|
|
|
26
26
|
RUN apk add build-base bash ruby ruby-etc ruby-dev
|
|
27
27
|
|
|
28
28
|
# Install builtin fonts
|
|
29
|
-
RUN gem install invoice_printer_fonts --version 2.
|
|
29
|
+
RUN gem install invoice_printer_fonts --version 2.3.0 --no-document
|
|
30
30
|
|
|
31
31
|
# Install the gem from RubyGems.org
|
|
32
|
-
RUN gem install invoice_printer_server --version 2.
|
|
32
|
+
RUN gem install invoice_printer_server --version 2.3.0 --no-document
|
|
33
33
|
|
|
34
34
|
# Clean APK cache
|
|
35
35
|
RUN rm -rf /var/cache/apk/*
|
data/Gemfile.lock
CHANGED
|
@@ -2,8 +2,10 @@ PATH
|
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
4
|
invoice_printer (2.2.0)
|
|
5
|
+
e2mmap
|
|
5
6
|
json (~> 2.1)
|
|
6
|
-
|
|
7
|
+
matrix
|
|
8
|
+
prawn (~> 2.4)
|
|
7
9
|
prawn-table (~> 0.2.2)
|
|
8
10
|
invoice_printer_server (2.2.0)
|
|
9
11
|
invoice_printer (= 2.2.0)
|
|
@@ -14,48 +16,52 @@ PATH
|
|
|
14
16
|
GEM
|
|
15
17
|
remote: https://rubygems.org/
|
|
16
18
|
specs:
|
|
17
|
-
Ascii85 (1.0
|
|
19
|
+
Ascii85 (1.1.0)
|
|
18
20
|
afm (0.2.2)
|
|
19
21
|
benchmark_driver (0.15.17)
|
|
20
22
|
benchmark_driver-output-gruff (0.3.1)
|
|
21
23
|
benchmark_driver (>= 0.12.0)
|
|
22
24
|
gruff
|
|
23
|
-
|
|
25
|
+
e2mmap (0.1.0)
|
|
26
|
+
gruff (0.14.0)
|
|
24
27
|
histogram
|
|
25
28
|
rmagick
|
|
26
29
|
hashery (2.1.2)
|
|
27
30
|
histogram (0.2.4.1)
|
|
28
|
-
json (2.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
json (2.6.3)
|
|
32
|
+
matrix (0.1.0)
|
|
33
|
+
minitest (5.15.0)
|
|
34
|
+
nio4r (2.5.8)
|
|
31
35
|
pdf-core (0.9.0)
|
|
32
36
|
pdf-inspector (1.3.0)
|
|
33
37
|
pdf-reader (>= 1.0, < 3.0.a)
|
|
34
|
-
pdf-reader (2.
|
|
35
|
-
Ascii85 (~> 1.0
|
|
38
|
+
pdf-reader (2.11.0)
|
|
39
|
+
Ascii85 (~> 1.0)
|
|
36
40
|
afm (~> 0.2.1)
|
|
37
41
|
hashery (~> 2.0)
|
|
38
42
|
ruby-rc4
|
|
39
43
|
ttfunk
|
|
44
|
+
pkg-config (1.5.1)
|
|
40
45
|
prawn (2.4.0)
|
|
41
46
|
pdf-core (~> 0.9.0)
|
|
42
47
|
ttfunk (~> 1.7)
|
|
43
48
|
prawn-table (0.2.2)
|
|
44
49
|
prawn (>= 1.3.0, < 3.0.0)
|
|
45
|
-
puma (
|
|
50
|
+
puma (6.0.2)
|
|
46
51
|
nio4r (~> 2.0)
|
|
47
|
-
rack (
|
|
48
|
-
rack-test (
|
|
49
|
-
rack (>= 1.
|
|
50
|
-
rake (13.0.
|
|
51
|
-
rmagick (
|
|
52
|
-
|
|
52
|
+
rack (3.0.4.1)
|
|
53
|
+
rack-test (2.0.2)
|
|
54
|
+
rack (>= 1.3)
|
|
55
|
+
rake (13.0.6)
|
|
56
|
+
rmagick (5.1.0)
|
|
57
|
+
pkg-config (~> 1.4)
|
|
58
|
+
roda (3.64.0)
|
|
53
59
|
rack
|
|
54
60
|
ruby-rc4 (0.1.5)
|
|
55
61
|
ttfunk (1.7.0)
|
|
56
62
|
|
|
57
63
|
PLATFORMS
|
|
58
|
-
|
|
64
|
+
x86_64-linux
|
|
59
65
|
|
|
60
66
|
DEPENDENCIES
|
|
61
67
|
benchmark_driver (= 0.15.17)
|
|
@@ -68,4 +74,4 @@ DEPENDENCIES
|
|
|
68
74
|
rake (>= 10.0)
|
|
69
75
|
|
|
70
76
|
BUNDLED WITH
|
|
71
|
-
2.
|
|
77
|
+
2.4.3
|
data/docs/COMMAND_LINE.md
CHANGED
data/docs/LIBRARY.md
CHANGED
data/examples/simple_invoice.rb
CHANGED
|
@@ -27,11 +27,13 @@ invoice = InvoicePrinter::Document.new(
|
|
|
27
27
|
number: 'NO. 198900000001',
|
|
28
28
|
provider_name: 'John White',
|
|
29
29
|
provider_lines: provider_address,
|
|
30
|
+
purchaser_name: 'Will Black',
|
|
30
31
|
purchaser_lines: purchaser_address,
|
|
31
32
|
issue_date: '05/03/2016',
|
|
32
33
|
due_date: '19/03/2016',
|
|
33
34
|
total: '$ 900',
|
|
34
35
|
bank_account_number: '156546546465',
|
|
36
|
+
description: "You can use 20% discount for the next order with the code:\nDISCOUNT",
|
|
35
37
|
items: [item],
|
|
36
38
|
note: "This is a note at the end.\nA note with two lines."
|
|
37
39
|
)
|
data/invoice_printer.gemspec
CHANGED
|
@@ -45,8 +45,10 @@ Gem::Specification.new do |spec|
|
|
|
45
45
|
spec.required_ruby_version = '>= 2.4'
|
|
46
46
|
|
|
47
47
|
spec.add_dependency 'json', '~> 2.1'
|
|
48
|
-
spec.add_dependency 'prawn', '~> 2.
|
|
48
|
+
spec.add_dependency 'prawn', '~> 2.4'
|
|
49
49
|
spec.add_dependency 'prawn-table', '~> 0.2.2'
|
|
50
|
+
spec.add_dependency 'matrix'
|
|
51
|
+
spec.add_dependency 'e2mmap'
|
|
50
52
|
|
|
51
53
|
spec.add_development_dependency 'bundler', '>= 1.7'
|
|
52
54
|
spec.add_development_dependency 'rake', '>= 10.0'
|
|
@@ -22,6 +22,7 @@ module InvoicePrinter
|
|
|
22
22
|
# bank_account_number: '156546546465',
|
|
23
23
|
# account_iban: 'IBAN464545645',
|
|
24
24
|
# account_swift: 'SWIFT5456',
|
|
25
|
+
# description: "We are invoicing you the following items:",
|
|
25
26
|
# items: [
|
|
26
27
|
# InvoicePrinter::Document::Item.new,
|
|
27
28
|
# InvoicePrinter::Document::Item.new
|
|
@@ -57,6 +58,7 @@ module InvoicePrinter
|
|
|
57
58
|
:bank_account_number,
|
|
58
59
|
:account_iban,
|
|
59
60
|
:account_swift,
|
|
61
|
+
:description,
|
|
60
62
|
# Collection of InvoicePrinter::Invoice::Items
|
|
61
63
|
:items,
|
|
62
64
|
:note
|
|
@@ -84,6 +86,7 @@ module InvoicePrinter
|
|
|
84
86
|
bank_account_number: json['bank_account_number'],
|
|
85
87
|
account_iban: json['account_iban'],
|
|
86
88
|
account_swift: json['account_swift'],
|
|
89
|
+
description: json['description'],
|
|
87
90
|
note: json['note'],
|
|
88
91
|
|
|
89
92
|
items: (json['items'] || []).map { |item_json| Item.from_json(item_json) }
|
|
@@ -111,6 +114,7 @@ module InvoicePrinter
|
|
|
111
114
|
bank_account_number: nil,
|
|
112
115
|
account_iban: nil,
|
|
113
116
|
account_swift: nil,
|
|
117
|
+
description: nil,
|
|
114
118
|
items: nil,
|
|
115
119
|
note: nil)
|
|
116
120
|
|
|
@@ -134,6 +138,7 @@ module InvoicePrinter
|
|
|
134
138
|
@bank_account_number = String(bank_account_number)
|
|
135
139
|
@account_iban = String(account_iban)
|
|
136
140
|
@account_swift = String(account_swift)
|
|
141
|
+
@description = String(description)
|
|
137
142
|
@items = items
|
|
138
143
|
@note = String(note)
|
|
139
144
|
|
|
@@ -163,6 +168,7 @@ module InvoicePrinter
|
|
|
163
168
|
'bank_account_number': @bank_account_number,
|
|
164
169
|
'account_iban': @account_iban,
|
|
165
170
|
'account_swift': @account_swift,
|
|
171
|
+
'description': @description,
|
|
166
172
|
'items': @items.map(&:to_h),
|
|
167
173
|
'note': @note
|
|
168
174
|
}
|
|
@@ -171,6 +171,7 @@ module InvoicePrinter
|
|
|
171
171
|
build_purchaser_box
|
|
172
172
|
build_payment_method_box
|
|
173
173
|
build_info_box
|
|
174
|
+
build_description
|
|
174
175
|
build_items
|
|
175
176
|
build_total
|
|
176
177
|
build_stamp
|
|
@@ -254,18 +255,14 @@ module InvoicePrinter
|
|
|
254
255
|
end
|
|
255
256
|
# Render provider_lines if present
|
|
256
257
|
if !@document.provider_lines.empty?
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
at: [10, y(line_y - index*15) - @push_down],
|
|
266
|
-
width: x(240)
|
|
267
|
-
)
|
|
268
|
-
end
|
|
258
|
+
@pdf.text_box(
|
|
259
|
+
@document.provider_lines,
|
|
260
|
+
size: 10,
|
|
261
|
+
at: [x(10), y(618) - @push_down],
|
|
262
|
+
width: x(246),
|
|
263
|
+
height: y(68),
|
|
264
|
+
leading: 3,
|
|
265
|
+
)
|
|
269
266
|
end
|
|
270
267
|
unless @document.provider_tax_id.empty?
|
|
271
268
|
@pdf.text_box(
|
|
@@ -324,18 +321,14 @@ module InvoicePrinter
|
|
|
324
321
|
end
|
|
325
322
|
# Render purchaser_lines if present
|
|
326
323
|
if !@document.purchaser_lines.empty?
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
at: [x(284), y(line_y - index*15) - @push_down],
|
|
336
|
-
width: x(240)
|
|
337
|
-
)
|
|
338
|
-
end
|
|
324
|
+
@pdf.text_box(
|
|
325
|
+
@document.purchaser_lines,
|
|
326
|
+
size: 10,
|
|
327
|
+
at: [x(284), y(618) - @push_down],
|
|
328
|
+
width: x(246),
|
|
329
|
+
height: y(68),
|
|
330
|
+
leading: 3,
|
|
331
|
+
)
|
|
339
332
|
end
|
|
340
333
|
unless @document.purchaser_tax_id.empty?
|
|
341
334
|
@pdf.text_box(
|
|
@@ -650,6 +643,25 @@ module InvoicePrinter
|
|
|
650
643
|
used?(@labels[:sublabels][:variable_symbol])
|
|
651
644
|
end
|
|
652
645
|
|
|
646
|
+
def build_description
|
|
647
|
+
unless @document.description.empty?
|
|
648
|
+
@pdf.text_box(
|
|
649
|
+
@document.description,
|
|
650
|
+
size: 11,
|
|
651
|
+
align: :left,
|
|
652
|
+
at: [0, y(450) - @push_down - 26]
|
|
653
|
+
)
|
|
654
|
+
@push_items_table += description_height + 8
|
|
655
|
+
end
|
|
656
|
+
end
|
|
657
|
+
|
|
658
|
+
def description_height
|
|
659
|
+
@description_height ||= begin
|
|
660
|
+
num_of_lines = @document.description.lines.count
|
|
661
|
+
(num_of_lines * 13)
|
|
662
|
+
end
|
|
663
|
+
end
|
|
664
|
+
|
|
653
665
|
# Build the following table for document items:
|
|
654
666
|
#
|
|
655
667
|
# =================================================================
|
|
@@ -845,7 +857,7 @@ module InvoicePrinter
|
|
|
845
857
|
def build_logo
|
|
846
858
|
if @logo && !@logo.empty?
|
|
847
859
|
bottom = @document.note.empty? ? 75 : (75 + note_height)
|
|
848
|
-
@pdf.image(@logo, at: [0, bottom], fit: [200, 50])
|
|
860
|
+
@pdf.image(@logo, at: [0, bottom], fit: [x(200), y(50)])
|
|
849
861
|
end
|
|
850
862
|
end
|
|
851
863
|
|
|
@@ -853,7 +865,7 @@ module InvoicePrinter
|
|
|
853
865
|
def build_stamp
|
|
854
866
|
if @stamp && !@stamp.empty?
|
|
855
867
|
@pdf.move_down(15)
|
|
856
|
-
@pdf.image(@stamp, position: :right)
|
|
868
|
+
@pdf.image(@stamp, position: :right, fit: [x(200), y(40)])
|
|
857
869
|
end
|
|
858
870
|
end
|
|
859
871
|
|
data/regenerate.rb
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Script to regenerate all examples
|
|
2
|
+
examples_directory = File.expand_path('../examples', __FILE__)
|
|
3
|
+
@examples = Dir.glob("#{examples_directory}/*.rb")
|
|
4
|
+
|
|
5
|
+
@examples.each do |example|
|
|
6
|
+
puts "Running #{example}"
|
|
7
|
+
Dir.chdir(examples_directory) do
|
|
8
|
+
`ruby #{example}`
|
|
9
|
+
end
|
|
10
|
+
end
|
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.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Josef Strzibny
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2023-02-11 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: json
|
|
@@ -30,14 +30,14 @@ dependencies:
|
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '2.
|
|
33
|
+
version: '2.4'
|
|
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.4'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: prawn-table
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -52,6 +52,34 @@ dependencies:
|
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: 0.2.2
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: matrix
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :runtime
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: e2mmap
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :runtime
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
55
83
|
- !ruby/object:Gem::Dependency
|
|
56
84
|
name: bundler
|
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -124,6 +152,7 @@ files:
|
|
|
124
152
|
- lib/invoice_printer/document/item.rb
|
|
125
153
|
- lib/invoice_printer/pdf_document.rb
|
|
126
154
|
- lib/invoice_printer/version.rb
|
|
155
|
+
- regenerate.rb
|
|
127
156
|
- test/api_test.rb
|
|
128
157
|
- test/background_test.rb
|
|
129
158
|
- test/cli_test.rb
|
|
@@ -142,7 +171,7 @@ homepage: https://github.com/strzibny/invoice_printer
|
|
|
142
171
|
licenses:
|
|
143
172
|
- MIT
|
|
144
173
|
metadata: {}
|
|
145
|
-
post_install_message:
|
|
174
|
+
post_install_message:
|
|
146
175
|
rdoc_options: []
|
|
147
176
|
require_paths:
|
|
148
177
|
- lib
|
|
@@ -157,8 +186,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
157
186
|
- !ruby/object:Gem::Version
|
|
158
187
|
version: '0'
|
|
159
188
|
requirements: []
|
|
160
|
-
rubygems_version: 3.
|
|
161
|
-
signing_key:
|
|
189
|
+
rubygems_version: 3.3.3
|
|
190
|
+
signing_key:
|
|
162
191
|
specification_version: 4
|
|
163
192
|
summary: Super simple PDF invoicing in pure Ruby
|
|
164
193
|
test_files:
|