invoice_printer 2.0.0.alpha1 → 2.1.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Dockerfile +37 -0
- data/Gemfile.lock +27 -14
- data/README.md +2 -2
- data/benchmarks/render.yml +13 -8
- data/bin/invoice_printer +2 -2
- data/docs/COMMAND_LINE.md +120 -1
- data/docs/INSTALLATION.md +33 -2
- data/docs/LIBRARY.md +14 -11
- data/docs/SERVER.md +23 -7
- data/examples/czech_invoice.rb +2 -5
- data/examples/czech_invoice_long.rb +2 -5
- data/examples/international_invoice.rb +4 -7
- data/examples/long_invoice.rb +4 -4
- data/examples/picture.jpg +0 -0
- data/examples/promo.rb +17 -16
- data/examples/provider_purchaser_lines.rb +8 -20
- data/examples/simple_invoice.rb +15 -16
- data/invoice_printer.gemspec +18 -4
- data/invoice_printer_fonts.gemspec +39 -0
- data/invoice_printer_server.gemspec +3 -0
- data/lib/invoice_printer/document.rb +84 -148
- data/lib/invoice_printer/pdf_document.rb +79 -84
- data/lib/invoice_printer/version.rb +1 -1
- data/test/api_test.rb +3 -3
- 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 +1 -1
- 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_helper.rb +1 -1
- metadata +11 -9
data/examples/czech_invoice.rb
CHANGED
@@ -1,8 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# This is an example of a Czech invoice.
|
3
|
-
#
|
4
|
-
# Due to the special characters it requires Overpass-Regular.ttf font to be
|
5
|
-
# present in this directory.
|
6
3
|
|
7
4
|
lib = File.expand_path('../../lib', __FILE__)
|
8
5
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
@@ -81,7 +78,7 @@ invoice = InvoicePrinter::Document.new(
|
|
81
78
|
InvoicePrinter.print(
|
82
79
|
document: invoice,
|
83
80
|
labels: labels,
|
84
|
-
font:
|
81
|
+
font: 'overpass',
|
85
82
|
logo: 'prawn.png',
|
86
83
|
file_name: 'czech_invoice.pdf'
|
87
84
|
)
|
@@ -89,7 +86,7 @@ InvoicePrinter.print(
|
|
89
86
|
InvoicePrinter.print(
|
90
87
|
document: invoice,
|
91
88
|
labels: labels,
|
92
|
-
font:
|
89
|
+
font: 'overpass',
|
93
90
|
logo: 'prawn.png',
|
94
91
|
file_name: 'czech_invoice_a4.pdf',
|
95
92
|
page_size: :a4
|
@@ -1,8 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# This is an example of a Czech invoice.
|
3
|
-
#
|
4
|
-
# Due to the special characters it requires Overpass-Regular.ttf font to be
|
5
|
-
# present in this directory.
|
6
3
|
|
7
4
|
lib = File.expand_path('../../lib', __FILE__)
|
8
5
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
@@ -81,7 +78,7 @@ invoice = InvoicePrinter::Document.new(
|
|
81
78
|
InvoicePrinter.print(
|
82
79
|
document: invoice,
|
83
80
|
labels: labels,
|
84
|
-
font:
|
81
|
+
font: 'overpass',
|
85
82
|
logo: 'prawn.png',
|
86
83
|
file_name: 'czech_invoice_long.pdf'
|
87
84
|
)
|
@@ -89,7 +86,7 @@ InvoicePrinter.print(
|
|
89
86
|
InvoicePrinter.print(
|
90
87
|
document: invoice,
|
91
88
|
labels: labels,
|
92
|
-
font:
|
89
|
+
font: 'overpass',
|
93
90
|
logo: 'prawn.png',
|
94
91
|
file_name: 'czech_invoice_long_a4.pdf',
|
95
92
|
page_size: :a4
|
@@ -1,8 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# This is an example of a international invoice with Czech labels and English translation.
|
3
|
-
#
|
4
|
-
# Due to the special characters it requires Overpass-Regular.ttf font to be
|
5
|
-
# present in this directory.
|
6
3
|
|
7
4
|
lib = File.expand_path('../../lib', __FILE__)
|
8
5
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
@@ -82,16 +79,16 @@ invoice = InvoicePrinter::Document.new(
|
|
82
79
|
InvoicePrinter.print(
|
83
80
|
document: invoice,
|
84
81
|
labels: labels,
|
85
|
-
font:
|
86
|
-
logo: 'prawn.png',
|
82
|
+
font: 'overpass',
|
83
|
+
logo: File.expand_path('../prawn.png', __FILE__),
|
87
84
|
file_name: 'international_invoice.pdf'
|
88
85
|
)
|
89
86
|
|
90
87
|
InvoicePrinter.print(
|
91
88
|
document: invoice,
|
92
89
|
labels: labels,
|
93
|
-
font:
|
94
|
-
logo: 'prawn.png',
|
90
|
+
font: 'overpass',
|
91
|
+
logo: File.expand_path('../prawn.png', __FILE__),
|
95
92
|
file_name: 'international_invoice_a4.pdf',
|
96
93
|
page_size: :a4
|
97
94
|
)
|
data/examples/long_invoice.rb
CHANGED
@@ -55,16 +55,16 @@ invoice = InvoicePrinter::Document.new(
|
|
55
55
|
InvoicePrinter.print(
|
56
56
|
document: invoice,
|
57
57
|
labels: labels,
|
58
|
-
stamp: 'stamp.png',
|
59
|
-
logo: 'prawn.png',
|
58
|
+
stamp: File.expand_path('../stamp.png', __FILE__),
|
59
|
+
logo: File.expand_path('../prawn.png', __FILE__),
|
60
60
|
file_name: 'long_invoice.pdf'
|
61
61
|
)
|
62
62
|
|
63
63
|
InvoicePrinter.print(
|
64
64
|
document: invoice,
|
65
65
|
labels: labels,
|
66
|
-
stamp: 'stamp.png',
|
67
|
-
logo: 'prawn.png',
|
66
|
+
stamp: File.expand_path('../stamp.png', __FILE__),
|
67
|
+
logo: File.expand_path('../prawn.png', __FILE__),
|
68
68
|
file_name: 'long_invoice_a4.pdf',
|
69
69
|
page_size: :a4
|
70
70
|
)
|
data/examples/picture.jpg
CHANGED
Binary file
|
data/examples/promo.rb
CHANGED
@@ -1,8 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# This is an example of a international invoice with Czech labels and English translation.
|
3
|
-
#
|
4
|
-
# Due to the special characters it requires Overpass-Regular.ttf font to be
|
5
|
-
# present in this directory.
|
6
3
|
|
7
4
|
lib = File.expand_path('../../lib', __FILE__)
|
8
5
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
@@ -49,20 +46,24 @@ second_item = InvoicePrinter::Document::Item.new(
|
|
49
46
|
amount: 'Kč 9.000'
|
50
47
|
)
|
51
48
|
|
49
|
+
provider_address = <<ADDRESS
|
50
|
+
Rolnická 1
|
51
|
+
747 05 Opava
|
52
|
+
Kateřinky
|
53
|
+
ADDRESS
|
54
|
+
|
55
|
+
purchaser_address = <<ADDRESS
|
56
|
+
Ostravská 1
|
57
|
+
747 70 Opava
|
58
|
+
ADDRESS
|
59
|
+
|
52
60
|
invoice = InvoicePrinter::Document.new(
|
53
61
|
number: 'č. 198900000001',
|
54
62
|
provider_name: 'Petr Nový',
|
63
|
+
provider_lines: provider_address,
|
55
64
|
provider_tax_id: '56565656',
|
56
|
-
provider_street: 'Rolnická',
|
57
|
-
provider_street_number: '1',
|
58
|
-
provider_postcode: '747 05',
|
59
|
-
provider_city: 'Opava',
|
60
|
-
provider_city_part: 'Kateřinky',
|
61
65
|
purchaser_name: 'Adam Černý',
|
62
|
-
|
63
|
-
purchaser_street_number: '1',
|
64
|
-
purchaser_postcode: '747 70',
|
65
|
-
purchaser_city: 'Opava',
|
66
|
+
purchaser_lines: purchaser_address,
|
66
67
|
issue_date: '05/03/2016',
|
67
68
|
due_date: '19/03/2016',
|
68
69
|
subtotal: 'Kč 10.000',
|
@@ -78,16 +79,16 @@ invoice = InvoicePrinter::Document.new(
|
|
78
79
|
InvoicePrinter.print(
|
79
80
|
document: invoice,
|
80
81
|
labels: labels,
|
81
|
-
font: File.expand_path('
|
82
|
-
logo: 'logo.png',
|
82
|
+
font: File.expand_path('../../assets/fonts/overpass/Overpass-Regular.ttf', __FILE__),
|
83
|
+
logo: File.expand_path('../logo.png', __FILE__),
|
83
84
|
file_name: 'promo.pdf'
|
84
85
|
)
|
85
86
|
|
86
87
|
InvoicePrinter.print(
|
87
88
|
document: invoice,
|
88
89
|
labels: labels,
|
89
|
-
font: File.expand_path('
|
90
|
-
logo: 'logo.png',
|
90
|
+
font: File.expand_path('../../assets/fonts/overpass/Overpass-Regular.ttf', __FILE__),
|
91
|
+
logo: File.expand_path('../logo.png', __FILE__),
|
91
92
|
file_name: 'promo_a4.pdf',
|
92
93
|
page_size: :a4
|
93
94
|
)
|
@@ -1,8 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# This is an example of a Czech invoice.
|
3
|
-
#
|
4
|
-
# Due to the special characters it requires Overpass-Regular.ttf font to be
|
5
|
-
# present in this directory.
|
6
3
|
|
7
4
|
lib = File.expand_path('../../lib', __FILE__)
|
8
5
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
@@ -50,7 +47,8 @@ Rolnická 1
|
|
50
47
|
747 05 Opava
|
51
48
|
Kateřinky
|
52
49
|
|
53
|
-
|
50
|
+
|
51
|
+
6th line wont show
|
54
52
|
ADDRESS
|
55
53
|
|
56
54
|
purchaser_address = <<ADDRESS
|
@@ -58,8 +56,7 @@ Ostravská 1
|
|
58
56
|
747 70 Opava
|
59
57
|
|
60
58
|
|
61
|
-
|
62
|
-
fith line wont show
|
59
|
+
6th line wont show
|
63
60
|
ADDRESS
|
64
61
|
|
65
62
|
invoice = InvoicePrinter::Document.new(
|
@@ -67,20 +64,11 @@ invoice = InvoicePrinter::Document.new(
|
|
67
64
|
provider_name: 'Petr Nový',
|
68
65
|
provider_tax_id: '56565656',
|
69
66
|
provider_tax_id2: 'CZ56565656',
|
70
|
-
provider_street: 'Rolnická',
|
71
|
-
provider_street_number: '1',
|
72
|
-
provider_postcode: '747 05',
|
73
|
-
provider_city: 'Opava',
|
74
|
-
provider_city_part: 'Kateřinky',
|
75
67
|
provider_lines: provider_address,
|
76
68
|
purchaser_name: 'Adam Černý',
|
77
|
-
purchaser_street: 'Ostravská',
|
78
|
-
purchaser_street_number: '1',
|
79
|
-
purchaser_postcode: '747 70',
|
80
|
-
purchaser_city: 'Opava',
|
81
|
-
purchaser_lines: purchaser_address,
|
82
69
|
purchaser_tax_id: '56565656',
|
83
70
|
purchaser_tax_id2: 'CZ56565656',
|
71
|
+
purchaser_lines: purchaser_address,
|
84
72
|
issue_date: '05/03/2016',
|
85
73
|
due_date: '19/03/2016',
|
86
74
|
subtotal: 'Kč 10.000',
|
@@ -96,16 +84,16 @@ invoice = InvoicePrinter::Document.new(
|
|
96
84
|
InvoicePrinter.print(
|
97
85
|
document: invoice,
|
98
86
|
labels: labels,
|
99
|
-
font:
|
100
|
-
logo: 'prawn.png',
|
87
|
+
font: 'overpass',
|
88
|
+
logo: File.expand_path('../prawn.png', __FILE__),
|
101
89
|
file_name: 'provider_purchaser_lines.pdf'
|
102
90
|
)
|
103
91
|
|
104
92
|
InvoicePrinter.print(
|
105
93
|
document: invoice,
|
106
94
|
labels: labels,
|
107
|
-
font:
|
108
|
-
logo: 'prawn.png',
|
95
|
+
font: 'overpass',
|
96
|
+
logo: File.expand_path('../prawn.png', __FILE__),
|
109
97
|
file_name: 'provider_purchaser_lines_a4.pdf',
|
110
98
|
page_size: :a4
|
111
99
|
)
|
data/examples/simple_invoice.rb
CHANGED
@@ -5,6 +5,16 @@ lib = File.expand_path('../../lib', __FILE__)
|
|
5
5
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
6
6
|
require 'invoice_printer'
|
7
7
|
|
8
|
+
provider_address = <<ADDRESS
|
9
|
+
5th Avenue
|
10
|
+
747 05 NYC
|
11
|
+
ADDRESS
|
12
|
+
|
13
|
+
purchaser_address = <<ADDRESS
|
14
|
+
7th Avenue
|
15
|
+
747 70 NYC
|
16
|
+
ADDRESS
|
17
|
+
|
8
18
|
item = InvoicePrinter::Document::Item.new(
|
9
19
|
name: 'Programming',
|
10
20
|
quantity: '10',
|
@@ -16,36 +26,25 @@ item = InvoicePrinter::Document::Item.new(
|
|
16
26
|
invoice = InvoicePrinter::Document.new(
|
17
27
|
number: 'NO. 198900000001',
|
18
28
|
provider_name: 'John White',
|
19
|
-
|
20
|
-
|
21
|
-
provider_street: '5th Avenue',
|
22
|
-
provider_street_number: '1',
|
23
|
-
provider_postcode: '747 05',
|
24
|
-
provider_city: 'NYC',
|
25
|
-
purchaser_name: 'Will Black',
|
26
|
-
# Deprecated 1.3 API, use purchaser_lines
|
27
|
-
# Here for compatibility test
|
28
|
-
purchaser_street: '7th Avenue',
|
29
|
-
purchaser_street_number: '1',
|
30
|
-
purchaser_postcode: '747 70',
|
31
|
-
purchaser_city: 'NYC',
|
29
|
+
provider_lines: provider_address,
|
30
|
+
purchaser_lines: purchaser_address,
|
32
31
|
issue_date: '05/03/2016',
|
33
32
|
due_date: '19/03/2016',
|
34
33
|
total: '$ 900',
|
35
34
|
bank_account_number: '156546546465',
|
36
35
|
items: [item],
|
37
|
-
note:
|
36
|
+
note: "This is a note at the end.\nA note with two lines."
|
38
37
|
)
|
39
38
|
|
40
39
|
InvoicePrinter.print(
|
41
40
|
document: invoice,
|
42
|
-
logo: 'prawn.png',
|
41
|
+
logo: File.expand_path('../prawn.png', __FILE__),
|
43
42
|
file_name: 'simple_invoice.pdf'
|
44
43
|
)
|
45
44
|
|
46
45
|
InvoicePrinter.print(
|
47
46
|
document: invoice,
|
48
|
-
logo: 'prawn.png',
|
47
|
+
logo: File.expand_path('../prawn.png', __FILE__),
|
49
48
|
file_name: 'simple_invoice_a4.pdf',
|
50
49
|
page_size: :a4
|
51
50
|
)
|
data/invoice_printer.gemspec
CHANGED
@@ -2,11 +2,22 @@ lib = File.expand_path('../lib', __FILE__)
|
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
3
|
require 'invoice_printer/version'
|
4
4
|
|
5
|
-
|
5
|
+
ONLY_SERVER_FILES = [
|
6
6
|
'bin/invoice_printer_server',
|
7
7
|
'lib/invoice_printer/server.rb'
|
8
8
|
]
|
9
9
|
|
10
|
+
ONLY_FONTS_FILES = [
|
11
|
+
'FONTS_LICENSE.txt',
|
12
|
+
'assets/fonts/overpass/OFL-1.1.txt',
|
13
|
+
'assets/fonts/overpass/Overpass-Regular.ttf',
|
14
|
+
'assets/fonts/opensans/Apache-2.0.txt',
|
15
|
+
'assets/fonts/opensans/OpenSans-Regular.ttf',
|
16
|
+
'assets/fonts/roboto/Apache-2.0.txt',
|
17
|
+
'assets/fonts/roboto/Roboto-Regular.ttf',
|
18
|
+
'lib/invoice_printer/fonts.rb'
|
19
|
+
]
|
20
|
+
|
10
21
|
Gem::Specification.new do |spec|
|
11
22
|
spec.name = 'invoice_printer'
|
12
23
|
spec.version = InvoicePrinter::VERSION
|
@@ -20,7 +31,8 @@ Gem::Specification.new do |spec|
|
|
20
31
|
# Remove server files
|
21
32
|
# Remove .pdf files as they take a lot of space
|
22
33
|
package_files = `git ls-files -z`.split("\x0")
|
23
|
-
.reject{ |file|
|
34
|
+
.reject{ |file| ONLY_SERVER_FILES.include?(file) }
|
35
|
+
.reject{ |file| ONLY_FONTS_FILES.include?(file) }
|
24
36
|
.reject{ |file| file.match /.*\.pdf/ }
|
25
37
|
|
26
38
|
spec.files = package_files
|
@@ -29,9 +41,11 @@ Gem::Specification.new do |spec|
|
|
29
41
|
spec.require_paths = ['lib']
|
30
42
|
spec.bindir = 'bin'
|
31
43
|
|
44
|
+
spec.required_ruby_version = '>= 2.4'
|
45
|
+
|
32
46
|
spec.add_dependency 'json', '~> 2.1'
|
33
|
-
spec.add_dependency 'prawn', '~> 2.
|
34
|
-
spec.add_dependency 'prawn-
|
47
|
+
spec.add_dependency 'prawn', '~> 2.2'
|
48
|
+
spec.add_dependency 'prawn-table', '~> 0.2.2'
|
35
49
|
|
36
50
|
spec.add_development_dependency 'bundler', '>= 1.7'
|
37
51
|
spec.add_development_dependency 'rake', '>= 10.0'
|
@@ -0,0 +1,39 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'invoice_printer/version'
|
4
|
+
|
5
|
+
FONTS_FILES = [
|
6
|
+
'LICENSE.txt',
|
7
|
+
'FONTS_LICENSE.txt',
|
8
|
+
'assets/fonts/overpass/OFL-1.1.txt',
|
9
|
+
'assets/fonts/overpass/Overpass-Regular.ttf',
|
10
|
+
'assets/fonts/opensans/Apache-2.0.txt',
|
11
|
+
'assets/fonts/opensans/OpenSans-Regular.ttf',
|
12
|
+
'assets/fonts/roboto/Apache-2.0.txt',
|
13
|
+
'assets/fonts/roboto/Roboto-Regular.ttf',
|
14
|
+
'lib/invoice_printer/fonts.rb'
|
15
|
+
]
|
16
|
+
|
17
|
+
Gem::Specification.new do |spec|
|
18
|
+
spec.name = 'invoice_printer_fonts'
|
19
|
+
spec.version = InvoicePrinter::VERSION
|
20
|
+
spec.authors = ['Josef Strzibny']
|
21
|
+
spec.email = ['strzibny@strzibny.name']
|
22
|
+
spec.summary = 'Super simple PDF invoicing in pure Ruby'
|
23
|
+
spec.description = 'Super simple and fast PDF invoicing in pure Ruby (based on Prawn library).'
|
24
|
+
spec.homepage = 'https://github.com/strzibny/invoice_printer'
|
25
|
+
spec.licenses = ['MIT', 'OFL 1.1', 'Apache 2.0']
|
26
|
+
|
27
|
+
# Include only font files
|
28
|
+
spec.files = FONTS_FILES
|
29
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
30
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
31
|
+
spec.require_paths = ['lib']
|
32
|
+
|
33
|
+
spec.required_ruby_version = '>= 2.4'
|
34
|
+
|
35
|
+
spec.add_dependency 'invoice_printer', InvoicePrinter::VERSION
|
36
|
+
|
37
|
+
spec.add_development_dependency 'bundler', '>= 1.7'
|
38
|
+
spec.add_development_dependency 'rake', '>= 10.0'
|
39
|
+
end
|
@@ -3,6 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
3
|
require 'invoice_printer/version'
|
4
4
|
|
5
5
|
SERVER_FILES = [
|
6
|
+
'LICENSE.txt',
|
6
7
|
'bin/invoice_printer_server',
|
7
8
|
'lib/invoice_printer/server.rb',
|
8
9
|
'lib/invoice_printer/version.rb'
|
@@ -25,6 +26,8 @@ Gem::Specification.new do |spec|
|
|
25
26
|
spec.require_paths = ['lib']
|
26
27
|
spec.bindir = 'bin'
|
27
28
|
|
29
|
+
spec.required_ruby_version = '>= 2.4'
|
30
|
+
|
28
31
|
spec.add_dependency 'invoice_printer', InvoicePrinter::VERSION
|
29
32
|
spec.add_dependency 'json', '~> 2.1'
|
30
33
|
spec.add_dependency 'roda', '~> 3.5'
|
@@ -39,25 +39,11 @@ module InvoicePrinter
|
|
39
39
|
:provider_tax_id,
|
40
40
|
:provider_tax_id2,
|
41
41
|
:provider_lines,
|
42
|
-
# Provider address fields
|
43
|
-
:provider_street,
|
44
|
-
:provider_street_number,
|
45
|
-
:provider_postcode,
|
46
|
-
:provider_city,
|
47
|
-
:provider_city_part,
|
48
|
-
:provider_extra_address_line,
|
49
42
|
# Purchaser fields
|
50
43
|
:purchaser_name,
|
51
44
|
:purchaser_tax_id,
|
52
45
|
:purchaser_tax_id2,
|
53
46
|
:purchaser_lines,
|
54
|
-
# Purchaser address fields
|
55
|
-
:purchaser_street,
|
56
|
-
:purchaser_street_number,
|
57
|
-
:purchaser_postcode,
|
58
|
-
:purchaser_city,
|
59
|
-
:purchaser_city_part,
|
60
|
-
:purchaser_extra_address_line,
|
61
47
|
:issue_date,
|
62
48
|
:due_date,
|
63
49
|
# Account details
|
@@ -76,113 +62,75 @@ module InvoicePrinter
|
|
76
62
|
class << self
|
77
63
|
def from_json(json)
|
78
64
|
new(
|
79
|
-
number:
|
80
|
-
provider_name:
|
81
|
-
provider_tax_id:
|
82
|
-
provider_tax_id2:
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
purchaser_lines: json['purchaser_lines'],
|
100
|
-
issue_date: json['issue_date'],
|
101
|
-
due_date: json['due_date'],
|
102
|
-
subtotal: json['subtotal'],
|
103
|
-
tax: json['tax'],
|
104
|
-
tax2: json['tax2'],
|
105
|
-
tax3: json['tax3'],
|
106
|
-
total: json['total'],
|
107
|
-
bank_account_number: json['bank_account_number'],
|
108
|
-
account_iban: json['account_iban'],
|
109
|
-
account_swift: json['account_swift'],
|
110
|
-
note: json['note'],
|
65
|
+
number: json['number'],
|
66
|
+
provider_name: json['provider_name'],
|
67
|
+
provider_tax_id: json['provider_tax_id'],
|
68
|
+
provider_tax_id2: json['provider_tax_id2'],
|
69
|
+
provider_lines: json['provider_lines'],
|
70
|
+
purchaser_name: json['purchaser_name'],
|
71
|
+
purchaser_tax_id: json['purchaser_tax_id'],
|
72
|
+
purchaser_tax_id2: json['purchaser_tax_id2'],
|
73
|
+
purchaser_lines: json['purchaser_lines'],
|
74
|
+
issue_date: json['issue_date'],
|
75
|
+
due_date: json['due_date'],
|
76
|
+
subtotal: json['subtotal'],
|
77
|
+
tax: json['tax'],
|
78
|
+
tax2: json['tax2'],
|
79
|
+
tax3: json['tax3'],
|
80
|
+
total: json['total'],
|
81
|
+
bank_account_number: json['bank_account_number'],
|
82
|
+
account_iban: json['account_iban'],
|
83
|
+
account_swift: json['account_swift'],
|
84
|
+
note: json['note'],
|
111
85
|
|
112
|
-
items:
|
86
|
+
items: (json['items'] || []).map { |item_json| Item.from_json(item_json) }
|
113
87
|
)
|
114
88
|
end
|
115
89
|
end
|
116
90
|
|
117
|
-
def initialize(number:
|
118
|
-
provider_name:
|
119
|
-
provider_tax_id:
|
120
|
-
provider_tax_id2:
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
issue_date: nil,
|
139
|
-
due_date: nil,
|
140
|
-
subtotal: nil,
|
141
|
-
tax: nil,
|
142
|
-
tax2: nil,
|
143
|
-
tax3: nil,
|
144
|
-
total: nil,
|
145
|
-
bank_account_number: nil,
|
146
|
-
account_iban: nil,
|
147
|
-
account_swift: nil,
|
148
|
-
items: nil,
|
149
|
-
note: nil)
|
150
|
-
|
151
|
-
@number = String(number)
|
152
|
-
@provider_name = String(provider_name)
|
153
|
-
@provider_tax_id = String(provider_tax_id)
|
154
|
-
@provider_tax_id2 = String(provider_tax_id2)
|
155
|
-
@provider_street = String(provider_street)
|
156
|
-
@provider_street_number = String(provider_street_number)
|
157
|
-
@provider_postcode = String(provider_postcode)
|
158
|
-
@provider_city = String(provider_city)
|
159
|
-
@provider_city_part = String(provider_city_part)
|
160
|
-
@provider_extra_address_line = String(provider_extra_address_line)
|
161
|
-
@provider_lines = String(provider_lines)
|
162
|
-
@purchaser_name = String(purchaser_name)
|
163
|
-
@purchaser_tax_id = String(purchaser_tax_id)
|
164
|
-
@purchaser_tax_id2 = String(purchaser_tax_id2)
|
165
|
-
@purchaser_street = String(purchaser_street)
|
166
|
-
@purchaser_street_number = String(purchaser_street_number)
|
167
|
-
@purchaser_postcode = String(purchaser_postcode)
|
168
|
-
@purchaser_city = String(purchaser_city)
|
169
|
-
@purchaser_city_part = String(purchaser_city_part)
|
170
|
-
@purchaser_extra_address_line = String(purchaser_extra_address_line)
|
171
|
-
@purchaser_lines = String(purchaser_lines)
|
172
|
-
@issue_date = String(issue_date)
|
173
|
-
@due_date = String(due_date)
|
174
|
-
@subtotal = String(subtotal)
|
175
|
-
@tax = String(tax)
|
176
|
-
@tax2 = String(tax2)
|
177
|
-
@tax3 = String(tax3)
|
178
|
-
@total = String(total)
|
179
|
-
@bank_account_number = String(bank_account_number)
|
180
|
-
@account_iban = String(account_iban)
|
181
|
-
@account_swift = String(account_swift)
|
182
|
-
@items = items
|
183
|
-
@note = String(note)
|
184
|
-
|
91
|
+
def initialize(number: nil,
|
92
|
+
provider_name: nil,
|
93
|
+
provider_tax_id: nil,
|
94
|
+
provider_tax_id2: nil,
|
95
|
+
provider_lines: nil,
|
96
|
+
purchaser_name: nil,
|
97
|
+
purchaser_tax_id: nil,
|
98
|
+
purchaser_tax_id2: nil,
|
99
|
+
purchaser_lines: nil,
|
100
|
+
issue_date: nil,
|
101
|
+
due_date: nil,
|
102
|
+
subtotal: nil,
|
103
|
+
tax: nil,
|
104
|
+
tax2: nil,
|
105
|
+
tax3: nil,
|
106
|
+
total: nil,
|
107
|
+
bank_account_number: nil,
|
108
|
+
account_iban: nil,
|
109
|
+
account_swift: nil,
|
110
|
+
items: nil,
|
111
|
+
note: nil)
|
185
112
|
|
113
|
+
@number = String(number)
|
114
|
+
@provider_name = String(provider_name)
|
115
|
+
@provider_tax_id = String(provider_tax_id)
|
116
|
+
@provider_tax_id2 = String(provider_tax_id2)
|
117
|
+
@provider_lines = String(provider_lines)
|
118
|
+
@purchaser_name = String(purchaser_name)
|
119
|
+
@purchaser_tax_id = String(purchaser_tax_id)
|
120
|
+
@purchaser_tax_id2 = String(purchaser_tax_id2)
|
121
|
+
@purchaser_lines = String(purchaser_lines)
|
122
|
+
@issue_date = String(issue_date)
|
123
|
+
@due_date = String(due_date)
|
124
|
+
@subtotal = String(subtotal)
|
125
|
+
@tax = String(tax)
|
126
|
+
@tax2 = String(tax2)
|
127
|
+
@tax3 = String(tax3)
|
128
|
+
@total = String(total)
|
129
|
+
@bank_account_number = String(bank_account_number)
|
130
|
+
@account_iban = String(account_iban)
|
131
|
+
@account_swift = String(account_swift)
|
132
|
+
@items = items
|
133
|
+
@note = String(note)
|
186
134
|
|
187
135
|
raise InvalidInput, 'items are not only a type of InvoicePrinter::Document::Item' \
|
188
136
|
unless @items.select{ |i| !i.is_a?(InvoicePrinter::Document::Item) }.empty?
|
@@ -190,39 +138,27 @@ module InvoicePrinter
|
|
190
138
|
|
191
139
|
def to_h
|
192
140
|
{
|
193
|
-
'number':
|
194
|
-
'provider_name':
|
195
|
-
'provider_tax_id':
|
196
|
-
'provider_tax_id2':
|
197
|
-
'
|
198
|
-
'
|
199
|
-
'
|
200
|
-
'
|
201
|
-
'
|
202
|
-
'
|
203
|
-
'
|
204
|
-
'
|
205
|
-
'
|
206
|
-
'
|
207
|
-
'
|
208
|
-
'
|
209
|
-
'
|
210
|
-
'
|
211
|
-
'
|
212
|
-
'
|
213
|
-
'
|
214
|
-
'issue_date': @issue_date,
|
215
|
-
'due_date': @due_date,
|
216
|
-
'subtotal': @subtotal,
|
217
|
-
'tax': @tax,
|
218
|
-
'tax2': @tax2,
|
219
|
-
'tax3': @tax3,
|
220
|
-
'total': @total,
|
221
|
-
'bank_account_number': @bank_account_number,
|
222
|
-
'account_iban': @account_iban,
|
223
|
-
'account_swift': @account_swift,
|
224
|
-
'items': @items.map(&:to_h),
|
225
|
-
'note': @note
|
141
|
+
'number': @number,
|
142
|
+
'provider_name': @provider_name,
|
143
|
+
'provider_tax_id': @provider_tax_id,
|
144
|
+
'provider_tax_id2': @provider_tax_id2,
|
145
|
+
'provider_lines': @provider_lines,
|
146
|
+
'purchaser_name': @purchaser_name,
|
147
|
+
'purchaser_tax_id': @purchaser_tax_id,
|
148
|
+
'purchaser_tax_id2': @purchaser_tax_id2,
|
149
|
+
'purchaser_lines': @purchaser_lines,
|
150
|
+
'issue_date': @issue_date,
|
151
|
+
'due_date': @due_date,
|
152
|
+
'subtotal': @subtotal,
|
153
|
+
'tax': @tax,
|
154
|
+
'tax2': @tax2,
|
155
|
+
'tax3': @tax3,
|
156
|
+
'total': @total,
|
157
|
+
'bank_account_number': @bank_account_number,
|
158
|
+
'account_iban': @account_iban,
|
159
|
+
'account_swift': @account_swift,
|
160
|
+
'items': @items.map(&:to_h),
|
161
|
+
'note': @note
|
226
162
|
}
|
227
163
|
end
|
228
164
|
|