invoice_printer 2.0.0 → 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/Gemfile.lock +22 -20
- data/README.md +2 -2
- data/benchmarks/render.yml +13 -8
- data/docs/COMMAND_LINE.md +119 -0
- data/docs/LIBRARY.md +13 -12
- data/docs/SERVER.md +6 -2
- data/examples/provider_purchaser_lines.rb +4 -13
- data/examples/simple_invoice.rb +13 -14
- data/lib/invoice_printer/document.rb +84 -148
- data/lib/invoice_printer/pdf_document.rb +9 -32
- 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/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 +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 926ffa0b9c6ce419a715122202dbc5e5b6489323c0daafe1da259cb86efb0acc
|
4
|
+
data.tar.gz: d0a6882d42b488d4df932f8b5981a188beb515af31ec3a0d5eb49a6b64a28882
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 383e3dc9b714a1faf3a585ed9313db8d0e77031d4556643894395757de723a787b216f5af2eba8ea7aa5c183c0d5ea55bc69534bf9bc40def043767f10c9aeb3
|
7
|
+
data.tar.gz: b53666c983492ffc59668c305b4b1e1e914f78488a44ec8c048c83de847a4a3559a0092534795d985a61c0192698ab99a2f0b3ecdf8d74a91dde1ff3a7f524af
|
data/Gemfile.lock
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
invoice_printer (2.0.0
|
4
|
+
invoice_printer (2.0.0)
|
5
5
|
json (~> 2.1)
|
6
6
|
prawn (~> 2.2)
|
7
7
|
prawn-table (~> 0.2.2)
|
8
|
-
invoice_printer_server (2.0.0
|
9
|
-
invoice_printer (= 2.0.0
|
8
|
+
invoice_printer_server (2.0.0)
|
9
|
+
invoice_printer (= 2.0.0)
|
10
10
|
json (~> 2.1)
|
11
11
|
puma (>= 3.9.0)
|
12
12
|
roda (~> 3.5)
|
@@ -20,37 +20,39 @@ GEM
|
|
20
20
|
benchmark_driver-output-gruff (0.3.1)
|
21
21
|
benchmark_driver (>= 0.12.0)
|
22
22
|
gruff
|
23
|
-
gruff (0.
|
24
|
-
|
23
|
+
gruff (0.11.0)
|
24
|
+
histogram
|
25
|
+
rmagick
|
25
26
|
hashery (2.1.2)
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
histogram (0.2.4.1)
|
28
|
+
json (2.3.1)
|
29
|
+
minitest (5.14.2)
|
30
|
+
nio4r (2.5.4)
|
31
|
+
pdf-core (0.9.0)
|
30
32
|
pdf-inspector (1.3.0)
|
31
33
|
pdf-reader (>= 1.0, < 3.0.a)
|
32
|
-
pdf-reader (2.
|
34
|
+
pdf-reader (2.4.1)
|
33
35
|
Ascii85 (~> 1.0.0)
|
34
36
|
afm (~> 0.2.1)
|
35
37
|
hashery (~> 2.0)
|
36
38
|
ruby-rc4
|
37
39
|
ttfunk
|
38
|
-
prawn (2.
|
39
|
-
pdf-core (~> 0.
|
40
|
-
ttfunk (~> 1.
|
40
|
+
prawn (2.4.0)
|
41
|
+
pdf-core (~> 0.9.0)
|
42
|
+
ttfunk (~> 1.7)
|
41
43
|
prawn-table (0.2.2)
|
42
44
|
prawn (>= 1.3.0, < 3.0.0)
|
43
|
-
puma (
|
45
|
+
puma (5.0.2)
|
44
46
|
nio4r (~> 2.0)
|
45
|
-
rack (2.
|
47
|
+
rack (2.2.3)
|
46
48
|
rack-test (1.1.0)
|
47
49
|
rack (>= 1.0, < 3)
|
48
|
-
rake (
|
49
|
-
rmagick (
|
50
|
-
roda (3.
|
50
|
+
rake (13.0.1)
|
51
|
+
rmagick (4.1.2)
|
52
|
+
roda (3.36.0)
|
51
53
|
rack
|
52
54
|
ruby-rc4 (0.1.5)
|
53
|
-
ttfunk (1.
|
55
|
+
ttfunk (1.7.0)
|
54
56
|
|
55
57
|
PLATFORMS
|
56
58
|
ruby
|
@@ -66,4 +68,4 @@ DEPENDENCIES
|
|
66
68
|
rake (>= 10.0)
|
67
69
|
|
68
70
|
BUNDLED WITH
|
69
|
-
1.
|
71
|
+
2.1.4
|
data/README.md
CHANGED
@@ -28,7 +28,7 @@ See more usecases in the `examples/` directory.
|
|
28
28
|
- Configurable items' table with item description, quantity, unit, price per unit, tax and item's total amount fields
|
29
29
|
- Final subtotal/tax/total info box
|
30
30
|
- Page numbers
|
31
|
-
- Configurable labels & sublabels (optional little labels)
|
31
|
+
- Configurable field labels & sublabels (optional little labels)
|
32
32
|
- Configurable font file
|
33
33
|
- Logotype (as image scaled to fit 50px of height)
|
34
34
|
- Background (as image)
|
@@ -48,4 +48,4 @@ See more usecases in the `examples/` directory.
|
|
48
48
|
|
49
49
|
## Copyright
|
50
50
|
|
51
|
-
Copyright 2015-
|
51
|
+
Copyright 2015-2021 © [Josef Strzibny](http://strzibny.name/). MIT licensed.
|
data/benchmarks/render.yml
CHANGED
@@ -8,6 +8,17 @@ prelude: |
|
|
8
8
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
9
9
|
require 'invoice_printer'
|
10
10
|
|
11
|
+
provider_address = <<ADDRESS
|
12
|
+
Rolnická 1
|
13
|
+
747 05 Opava
|
14
|
+
Kateřinky
|
15
|
+
ADDRESS
|
16
|
+
|
17
|
+
purchaser_address = <<ADDRESS
|
18
|
+
Ostravská 1
|
19
|
+
747 70 Opava
|
20
|
+
ADDRESS
|
21
|
+
|
11
22
|
item = InvoicePrinter::Document::Item.new(
|
12
23
|
name: 'Programming',
|
13
24
|
quantity: '10',
|
@@ -19,15 +30,9 @@ prelude: |
|
|
19
30
|
invoice = InvoicePrinter::Document.new(
|
20
31
|
number: 'NO. 198900000001',
|
21
32
|
provider_name: 'John White',
|
22
|
-
|
23
|
-
provider_street_number: '1',
|
24
|
-
provider_postcode: '747 05',
|
25
|
-
provider_city: 'NYC',
|
33
|
+
provider_lines: provider_address,
|
26
34
|
purchaser_name: 'Will Black',
|
27
|
-
|
28
|
-
purchaser_street_number: '1',
|
29
|
-
purchaser_postcode: '747 70',
|
30
|
-
purchaser_city: 'NYC',
|
35
|
+
purchaser_lines: purchaser_address,
|
31
36
|
issue_date: '05/03/2016',
|
32
37
|
due_date: '19/03/2016',
|
33
38
|
total: '$ 900',
|
data/docs/COMMAND_LINE.md
CHANGED
@@ -20,6 +20,125 @@ Options:
|
|
20
20
|
-f, --filename output path
|
21
21
|
-r, --render directly render PDF stream (filename option will be ignored)
|
22
22
|
```
|
23
|
+
|
24
|
+
## Document
|
25
|
+
|
26
|
+
JSON document with all possible fields filled:
|
27
|
+
|
28
|
+
```json
|
29
|
+
{
|
30
|
+
"number":"c. 198900000001",
|
31
|
+
"provider_name":"Petr Novy",
|
32
|
+
"provider_tax_id":"56565656",
|
33
|
+
"provider_tax_id2":"",
|
34
|
+
"provider_lines":"Rolnická 1\n747 05 Opava\nKateřinky",
|
35
|
+
"purchaser_name":"Adam Cerny",
|
36
|
+
"purchaser_tax_id":"",
|
37
|
+
"purchaser_tax_id2":"",
|
38
|
+
"purchaser_lines":"Ostravská 1\n747 70 Opava",
|
39
|
+
"issue_date":"05/03/2016",
|
40
|
+
"due_date":"19/03/2016",
|
41
|
+
"subtotal":"Kc 10.000",
|
42
|
+
"tax":"Kc 2.100",
|
43
|
+
"tax2":"",
|
44
|
+
"tax3":"",
|
45
|
+
"variable":"Extra column",
|
46
|
+
"total":"Kc 12.100,-",
|
47
|
+
"bank_account_number":"156546546465",
|
48
|
+
"account_iban":"IBAN464545645",
|
49
|
+
"account_swift":"SWIFT5456",
|
50
|
+
"items":[
|
51
|
+
{
|
52
|
+
"name":"Konzultace",
|
53
|
+
"variable": "",
|
54
|
+
"quantity":"2",
|
55
|
+
"unit":"hod",
|
56
|
+
"price":"Kc 500",
|
57
|
+
"tax":"",
|
58
|
+
"tax2":"",
|
59
|
+
"tax3":"",
|
60
|
+
"amount":"Kc 1.000"
|
61
|
+
},
|
62
|
+
{
|
63
|
+
"name":"Programovani",
|
64
|
+
"variable": "",
|
65
|
+
"quantity":"10",
|
66
|
+
"unit":"hod",
|
67
|
+
"price":"Kc 900",
|
68
|
+
"tax":"",
|
69
|
+
"tax2":"",
|
70
|
+
"tax3":"",
|
71
|
+
"amount":"Kc 9.000"
|
72
|
+
}
|
73
|
+
],
|
74
|
+
"note":"Osoba je zapsána v zivnostenském rejstríku."
|
75
|
+
}
|
76
|
+
```
|
77
|
+
|
78
|
+
**Note**: `provider_lines` and `purchaser_lines` are 4 lines of data separated by new line character`\n`. Other lines are being stripped.
|
79
|
+
|
80
|
+
**Note**: There is `variable` field that can be used for any
|
81
|
+
extra column.
|
82
|
+
|
83
|
+
## Field labels
|
84
|
+
|
85
|
+
All labels:
|
86
|
+
|
87
|
+
```json
|
88
|
+
{
|
89
|
+
"name":"Invoice",
|
90
|
+
"provider":"Provider",
|
91
|
+
"purchaser":"Purchaser",
|
92
|
+
"tax_id":"Identification number",
|
93
|
+
"tax_id2":"Identification number",
|
94
|
+
"payment":"Payment",
|
95
|
+
"payment_by_transfer":"Payment by bank transfer on the account below:",
|
96
|
+
"payment_in_cash":"Payment in cash",
|
97
|
+
"account_number":"Account NO",
|
98
|
+
"swift":"SWIFT",
|
99
|
+
"iban":"IBAN",
|
100
|
+
"issue_date":"Issue date",
|
101
|
+
"due_date": "Due date",
|
102
|
+
"item":"Item",
|
103
|
+
"variable":"",
|
104
|
+
"quantity":"Quantity",
|
105
|
+
"unit": "Unit",
|
106
|
+
"price_per_item":"Price per item",
|
107
|
+
"amount":"Amount",
|
108
|
+
"tax":"Tax",
|
109
|
+
"tax2":"Tax 2",
|
110
|
+
"tax3":"Tax 3",
|
111
|
+
"subtotal":"Subtotal",
|
112
|
+
"total":"Total",
|
113
|
+
"sublabels":{
|
114
|
+
"name":"Faktura",
|
115
|
+
"provider":"Prodejce",
|
116
|
+
"purchaser":"Kupující",
|
117
|
+
"tax_id":"IČ",
|
118
|
+
"tax_id2":"DIČ",
|
119
|
+
"payment":"Forma úhrady",
|
120
|
+
"payment_by_transfer":"Platba na následující účet:",
|
121
|
+
"account_number":"Číslo účtu",
|
122
|
+
"issue_date":"Datum vydání",
|
123
|
+
"due_date":"Datum splatnosti",
|
124
|
+
"item":"Položka",
|
125
|
+
"variable:":"",
|
126
|
+
"quantity":"Počet",
|
127
|
+
"unit":"MJ",
|
128
|
+
"price_per_item":"Cena za položku",
|
129
|
+
"amount":"Celkem bez daně",
|
130
|
+
"subtota":"Cena bez daně",
|
131
|
+
"tax":"DPH 21 %",
|
132
|
+
"total":"Celkem"
|
133
|
+
}
|
134
|
+
}
|
135
|
+
```
|
136
|
+
**Note**: Notice the `sublabels` which you might not want to necessary include.
|
137
|
+
|
138
|
+
## Built-in fonts
|
139
|
+
|
140
|
+
Supported builtin fonts are: `overpass`, `opensans`, and `roboto`.
|
141
|
+
|
23
142
|
## Examples
|
24
143
|
|
25
144
|
```
|
data/docs/LIBRARY.md
CHANGED
@@ -72,13 +72,11 @@ invoice = InvoicePrinter::Document.new(
|
|
72
72
|
**Note**: `provider_lines` and `purchaser_lines` are 4 lines of data separated by new line character`\n`. Other lines are being stripped.
|
73
73
|
|
74
74
|
**Note**: There is `variable` field that can be used for any
|
75
|
-
extra column.
|
76
|
-
available as well.
|
75
|
+
extra column.
|
77
76
|
|
78
77
|
### Ruby on Rails
|
79
78
|
|
80
|
-
If you want to use InvoicePrinter for printing PDF documents directly from Rails
|
81
|
-
actions, you can:
|
79
|
+
If you want to use InvoicePrinter for printing PDF documents directly from Rails actions, you can:
|
82
80
|
|
83
81
|
```ruby
|
84
82
|
# GET /invoices/1
|
@@ -109,11 +107,8 @@ InvoicePrinter.print(
|
|
109
107
|
document: document,
|
110
108
|
...
|
111
109
|
)
|
112
|
-
|
113
110
|
```
|
114
111
|
|
115
|
-
|
116
|
-
|
117
112
|
## Customization
|
118
113
|
|
119
114
|
### Page size
|
@@ -153,8 +148,7 @@ InvoicePrinter.print(
|
|
153
148
|
)
|
154
149
|
```
|
155
150
|
|
156
|
-
Here is the full list of labels to configure. You can paste and edit this block
|
157
|
-
to `initializers/invoice_printer.rb` if you are using Rails.
|
151
|
+
Here is the full list of labels to configure. You can paste and edit this block to `initializers/invoice_printer.rb` if you are using Rails.
|
158
152
|
|
159
153
|
```ruby
|
160
154
|
InvoicePrinter.labels = {
|
@@ -226,16 +220,23 @@ Now the document will have little sublabels next to the original labels in Czech
|
|
226
220
|
|
227
221
|
To support specific characters you might need to specify a TTF font to be used:
|
228
222
|
|
229
|
-
```
|
223
|
+
```ruby
|
230
224
|
InvoicePrinter.print(
|
231
225
|
...
|
232
226
|
font: File.expand_path('../Overpass-Regular.ttf', __FILE__)
|
233
227
|
)
|
234
228
|
```
|
235
229
|
|
236
|
-
If you don't have a font around, you can install `invoice_printer_fonts` gem and specify the supported font name instead
|
230
|
+
If you don't have a font around, you can install `invoice_printer_fonts` gem and specify the supported font name instead:
|
231
|
+
|
232
|
+
```ruby
|
233
|
+
InvoicePrinter.print(
|
234
|
+
document: invoice,
|
235
|
+
font: "roboto"
|
236
|
+
)
|
237
|
+
```
|
237
238
|
|
238
|
-
Supported builtin fonts are: `overpass`, `opensans`, and `
|
239
|
+
Supported builtin fonts are: `overpass`, `opensans`, and `roboto`. Note that searching the path takes preference.
|
239
240
|
|
240
241
|
### Background
|
241
242
|
|
data/docs/SERVER.md
CHANGED
@@ -23,9 +23,11 @@ By default server binds to `0.0.0.0:9393`.
|
|
23
23
|
Get the public image and run it:
|
24
24
|
|
25
25
|
```bash
|
26
|
-
$ sudo docker pull strzibnyj/invoice_printer_server
|
27
|
-
$ sudo docker run -d -p 9393:9393 -t docker.io/strzibnyj/invoice_printer_server
|
26
|
+
$ sudo docker pull strzibnyj/invoice_printer_server:$VERSION
|
27
|
+
$ sudo docker run -d -p 9393:9393 -v ~/path/to/invocies:/data:Z -t docker.io/strzibnyj/invoice_printer_server
|
28
28
|
```
|
29
|
+
You can use `latest` as a `$VERSION`. Specifying the `-v` option is only required when using the `/print` action to create the documents at certain path. It will allow you to provide the desired filename as "/data/invoice-name.pdf".
|
30
|
+
|
29
31
|
The server will then be available on `0.0.0.0:9393`.
|
30
32
|
|
31
33
|
Docker image already contains the optional `invoice_printer_fonts` gem.
|
@@ -64,6 +66,8 @@ Options:
|
|
64
66
|
- `background` - path to background file
|
65
67
|
- `page_size` - letter or A4 page size
|
66
68
|
|
69
|
+
These parameters are the same as for the [command line](./COMMAND_LINE.md).
|
70
|
+
|
67
71
|
On success a `200` response is returned:
|
68
72
|
|
69
73
|
```json
|
@@ -47,7 +47,8 @@ Rolnická 1
|
|
47
47
|
747 05 Opava
|
48
48
|
Kateřinky
|
49
49
|
|
50
|
-
|
50
|
+
|
51
|
+
6th line wont show
|
51
52
|
ADDRESS
|
52
53
|
|
53
54
|
purchaser_address = <<ADDRESS
|
@@ -55,8 +56,7 @@ Ostravská 1
|
|
55
56
|
747 70 Opava
|
56
57
|
|
57
58
|
|
58
|
-
|
59
|
-
fith line wont show
|
59
|
+
6th line wont show
|
60
60
|
ADDRESS
|
61
61
|
|
62
62
|
invoice = InvoicePrinter::Document.new(
|
@@ -64,20 +64,11 @@ invoice = InvoicePrinter::Document.new(
|
|
64
64
|
provider_name: 'Petr Nový',
|
65
65
|
provider_tax_id: '56565656',
|
66
66
|
provider_tax_id2: 'CZ56565656',
|
67
|
-
provider_street: 'Rolnická',
|
68
|
-
provider_street_number: '1',
|
69
|
-
provider_postcode: '747 05',
|
70
|
-
provider_city: 'Opava',
|
71
|
-
provider_city_part: 'Kateřinky',
|
72
67
|
provider_lines: provider_address,
|
73
68
|
purchaser_name: 'Adam Černý',
|
74
|
-
purchaser_street: 'Ostravská',
|
75
|
-
purchaser_street_number: '1',
|
76
|
-
purchaser_postcode: '747 70',
|
77
|
-
purchaser_city: 'Opava',
|
78
|
-
purchaser_lines: purchaser_address,
|
79
69
|
purchaser_tax_id: '56565656',
|
80
70
|
purchaser_tax_id2: 'CZ56565656',
|
71
|
+
purchaser_lines: purchaser_address,
|
81
72
|
issue_date: '05/03/2016',
|
82
73
|
due_date: '19/03/2016',
|
83
74
|
subtotal: 'Kč 10.000',
|
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,25 +26,14 @@ 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(
|
@@ -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
|
|
@@ -97,36 +97,6 @@ module InvoicePrinter
|
|
97
97
|
use_font(@font)
|
98
98
|
end
|
99
99
|
|
100
|
-
# Version 2.1 deprecation warnings
|
101
|
-
warnings = [
|
102
|
-
@document.provider_street,
|
103
|
-
@document.provider_street_number,
|
104
|
-
@document.provider_postcode,
|
105
|
-
@document.provider_city,
|
106
|
-
@document.provider_city_part,
|
107
|
-
@document.provider_extra_address_line,
|
108
|
-
@document.purchaser_street,
|
109
|
-
@document.purchaser_street_number,
|
110
|
-
@document.purchaser_postcode,
|
111
|
-
@document.purchaser_city,
|
112
|
-
@document.purchaser_city_part,
|
113
|
-
@document.purchaser_extra_address_line
|
114
|
-
].delete_if(&:empty?)
|
115
|
-
|
116
|
-
unless warnings.empty?
|
117
|
-
warning = <<~WARN
|
118
|
-
WARNING: Following values are used in deprecated fields and
|
119
|
-
won't be rendered in future versions of InvoicePrinter:
|
120
|
-
|
121
|
-
#{warnings.join(", ")}
|
122
|
-
|
123
|
-
Use new provider_lines and purchaser_lines fields instead of
|
124
|
-
the old address fields.
|
125
|
-
WARN
|
126
|
-
|
127
|
-
$stderr.puts warning
|
128
|
-
end
|
129
|
-
|
130
100
|
build_pdf
|
131
101
|
end
|
132
102
|
|
@@ -859,7 +829,7 @@ module InvoicePrinter
|
|
859
829
|
# If a note is present, position it on top of it.
|
860
830
|
def build_logo
|
861
831
|
if @logo && !@logo.empty?
|
862
|
-
bottom = @document.note.empty? ? 75 :
|
832
|
+
bottom = @document.note.empty? ? 75 : (75 + note_height)
|
863
833
|
@pdf.image(@logo, at: [0, bottom], fit: [200, 50])
|
864
834
|
end
|
865
835
|
end
|
@@ -877,12 +847,19 @@ module InvoicePrinter
|
|
877
847
|
@pdf.text_box(
|
878
848
|
"#{@document.note}",
|
879
849
|
size: 10,
|
880
|
-
at: [0,
|
850
|
+
at: [0, note_height],
|
881
851
|
width: x(450),
|
882
852
|
align: :left
|
883
853
|
)
|
884
854
|
end
|
885
855
|
|
856
|
+
def note_height
|
857
|
+
@note_height ||= begin
|
858
|
+
num_of_lines = @document.note.lines.count
|
859
|
+
(num_of_lines * 11)
|
860
|
+
end
|
861
|
+
end
|
862
|
+
|
886
863
|
# Include page numbers if we got more than one page
|
887
864
|
def build_footer
|
888
865
|
@pdf.number_pages(
|
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/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_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.0.
|
4
|
+
version: 2.1.0.rc1
|
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-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -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: 1.3.1
|
159
159
|
requirements: []
|
160
|
-
rubygems_version: 3.0.
|
160
|
+
rubygems_version: 3.2.0.rc.1
|
161
161
|
signing_key:
|
162
162
|
specification_version: 4
|
163
163
|
summary: Super simple PDF invoicing in pure Ruby
|